<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-18T23:40:20.275928" rpa="false" schemaversion="5">
<suite id="s1" name="controller-clustering-ask.txt">
<suite id="s1-s1" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:20.985855" 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-18T23:40:20.981422" elapsed="0.004500"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-18T23:40:20.980936" elapsed="0.005070"/>
</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-18T23:40:20.991745" 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-18T23:40:20.987490" elapsed="0.004288"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-18T23:40:20.992007" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:20.991882" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:20.991854" elapsed="0.000245"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:20.992662" 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-18T23:40:20.992263" elapsed="0.000448"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-18T23:40:20.993260" level="INFO">${cluster_size} = 3</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-18T23:40:20.992894" elapsed="0.000396"/>
</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-18T23:40:20.993863" elapsed="0.000318"/>
</kw>
<msg time="2026-04-18T23:40:20.994290" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:40:20.994340" level="INFO">${possibly_int_of_members} = 3</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-18T23:40:20.993470" elapsed="0.000894"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:40:20.994931" level="INFO">${int_of_members} = 3</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-18T23:40:20.994536" elapsed="0.000423"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:20.996636" 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-18T23:40:20.996325" elapsed="0.000341"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:20.997101" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-18T23:40:20.996820" elapsed="0.000309"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:40:20.997755" 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-18T23:40:20.997291" elapsed="0.000493"/>
</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-18T23:40:21.001149" elapsed="0.000237"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.001880" level="INFO">${member_ip} = 10.30.171.9</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-18T23:40:21.001548" elapsed="0.000360"/>
</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-18T23:40:21.002079" elapsed="0.000291"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.003200" 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-18T23:40:21.002881" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:40:21.003274" elapsed="0.000041"/>
</return>
<msg time="2026-04-18T23:40:21.003444" 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-18T23:40:21.002571" elapsed="0.000898"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:40:21.004151" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706110710&gt;, timeout=125, 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-18T23:40:21.003692" elapsed="0.000618"/>
</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-18T23:40:21.004477" elapsed="0.000226"/>
</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-18T23:40:21.000440" elapsed="0.004324"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:40:21.000242" elapsed="0.004567"/>
</iter>
<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-18T23:40:21.005687" elapsed="0.000273"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.006468" level="INFO">${member_ip} = 10.30.171.128</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-18T23:40:21.006137" elapsed="0.000358"/>
</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-18T23:40:21.006648" elapsed="0.000225"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.007694" level="INFO">${session} = ClusterManagement__session_2</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-18T23:40:21.007390" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:40:21.007768" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:40:21.007927" level="INFO">${session_alias} = ClusterManagement__session_2</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-18T23:40:21.007084" elapsed="0.000868"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:40:21.008558" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706111110&gt;, timeout=125, 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-18T23:40:21.008122" elapsed="0.000546"/>
</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-18T23:40:21.008830" 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-18T23:40:21.005112" elapsed="0.003984"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:40:21.004900" elapsed="0.004239"/>
</iter>
<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-18T23:40:21.010147" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.010820" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:21.010496" elapsed="0.000350"/>
</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-18T23:40:21.010997" elapsed="0.000240"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.012020" level="INFO">${session} = ClusterManagement__session_3</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-18T23:40:21.011725" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:40:21.012109" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:40:21.012266" level="INFO">${session_alias} = ClusterManagement__session_3</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-18T23:40:21.011429" elapsed="0.000862"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:40:21.012893" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7827068ea510&gt;, timeout=125, 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-18T23:40:21.012444" elapsed="0.000558"/>
</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-18T23:40:21.013181" elapsed="0.000191"/>
</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-18T23:40:21.009416" elapsed="0.004014"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:40:21.009230" elapsed="0.004244"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-18T23:40:20.997844" elapsed="0.015662"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.014084" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-18T23:40:21.013676" elapsed="0.000451"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.014673" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-18T23:40:21.014289" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.015267" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-18T23:40:21.014878" elapsed="0.000431"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-18T23:40:20.995827" elapsed="0.019541"/>
</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-18T23:40:20.987112" elapsed="0.028347"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:40:21.015645" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:21.015528" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.015508" elapsed="0.000207"/>
</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-18T23:40:21.018914" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:40:21.018526" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.019430" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:40:21.019117" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:40:21.019502" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:40:21.019661" level="INFO">${index_list} = [1, 2, 3]</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-18T23:40:21.018200" elapsed="0.001486"/>
</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-18T23:40:21.020727" level="INFO">${member_ip} = 10.30.171.9</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-18T23:40:21.020433" elapsed="0.000321"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.021598" 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-18T23:40:21.021712" 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-18T23:40:21.021414" elapsed="0.000326"/>
</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-18T23:40:21.026966" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:21.024282" elapsed="0.002862"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.024260" elapsed="0.002913"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.027466" 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-18T23:40:21.027590" 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-18T23:40:21.027329" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.028715" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:21.027772" elapsed="0.000992"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.029607" 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-18T23:40:21.028925" elapsed="0.000709"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.031123" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:21.031326" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:21.030401" elapsed="0.000976"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.031659" elapsed="0.000809"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.033947" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:21.361313" 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 Sat Apr 18 23:40:16 UTC 2026

  System load:  0.14               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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-36847-6-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-18T23:40:21.033546" elapsed="0.328033"/>
</kw>
<msg time="2026-04-18T23:40:21.361687" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.032800" elapsed="0.329263"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:21.029858" elapsed="0.332450"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.362872" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-18T23:40:21.375545" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-18T23:40:21.375777" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:40:21.375842" 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-18T23:40:21.362551" elapsed="0.013326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:21.376144" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.377527" 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-18T23:40:21.376812" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:21.378180" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:21.377793" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.377735" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:21.378774" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-18T23:40:21.378472" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.378436" elapsed="0.000538"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:21.379083" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.385923" elapsed="0.001664"/>
</kw>
<kw name="Open 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-18T23:40:21.388121" elapsed="0.000987"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:21.389535" elapsed="0.000237"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:21.379795" elapsed="0.010059"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:21.023761" elapsed="0.366187"/>
</kw>
<msg time="2026-04-18T23:40:21.390004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.022914" elapsed="0.367159"/>
</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-18T23:40:21.022428" elapsed="0.367727"/>
</kw>
<msg time="2026-04-18T23:40:21.390197" 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-18T23:40:21.021897" elapsed="0.368350"/>
</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-18T23:40:21.393216" 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-18T23:40:21.393706" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:21.394008" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:21.390538" elapsed="0.003635"/>
</kw>
<msg time="2026-04-18T23:40:21.394264" 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-18T23:40:21.020968" elapsed="0.373321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.394807" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:21.394543" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:21.394899" 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-18T23:40:21.020065" elapsed="0.374958"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:40:21.019875" elapsed="0.375249"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:21.396077" level="INFO">${member_ip} = 10.30.171.128</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-18T23:40:21.395786" elapsed="0.000318"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.396884" 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-18T23:40:21.397000" 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-18T23:40:21.396733" elapsed="0.000361"/>
</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-18T23:40:21.399980" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:21.399668" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.399648" elapsed="0.000540"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.400489" 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-18T23:40:21.400640" 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-18T23:40:21.400347" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.401787" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:21.400840" elapsed="0.000998"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.402672" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:21.401998" elapsed="0.000701"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.404018" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:21.404240" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:21.403462" elapsed="0.000828"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.404570" elapsed="0.000634"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.406663" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:21.741618" 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 Sat Apr 18 23:40:17 UTC 2026

  System load:  0.26               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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-36847-6-0-builder-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-18T23:40:21.406273" elapsed="0.335568"/>
</kw>
<msg time="2026-04-18T23:40:21.741952" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.405523" elapsed="0.336634"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:21.402920" elapsed="0.339484"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.742975" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-18T23:40:21.755504" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-18T23:40:21.755743" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:40:21.755809" 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-18T23:40:21.742660" elapsed="0.013185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:21.756118" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.757556" 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-18T23:40:21.756807" elapsed="0.000929"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:21.758291" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:21.757921" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.757864" 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-18T23:40:21.758893" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-18T23:40:21.758593" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.758545" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:21.759194" 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-18T23:40:21.766057" elapsed="0.000753"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:21.767050" elapsed="0.000409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:21.767648" elapsed="0.000189"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:21.759900" elapsed="0.008018"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:21.399175" elapsed="0.368837"/>
</kw>
<msg time="2026-04-18T23:40:21.768083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.398283" elapsed="0.369853"/>
</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-18T23:40:21.397770" elapsed="0.370445"/>
</kw>
<msg time="2026-04-18T23:40:21.768256" 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-18T23:40:21.397255" elapsed="0.371047"/>
</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-18T23:40:21.771219" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:40:21.771694" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:21.771985" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:21.768593" elapsed="0.003556"/>
</kw>
<msg time="2026-04-18T23:40:21.772239" 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-18T23:40:21.396320" elapsed="0.375942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.772688" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:21.772442" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:21.772790" 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-18T23:40:21.395424" elapsed="0.377491"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:40:21.395235" elapsed="0.377717"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:21.773895" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:21.773626" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.774652" 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-18T23:40:21.774751" 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-18T23:40:21.774516" elapsed="0.000261"/>
</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-18T23:40:21.777520" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:21.777211" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:21.777192" elapsed="0.000554"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.778083" 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-18T23:40:21.778208" 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-18T23:40:21.777896" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.779277" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:21.778386" elapsed="0.000938"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.780116" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:21.779479" elapsed="0.000664"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:21.781454" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:21.781652" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:21.780893" elapsed="0.000808"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.781981" elapsed="0.000778"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:21.784218" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:22.127140" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:21.783816" elapsed="0.343542"/>
</kw>
<msg time="2026-04-18T23:40:22.127468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.783092" elapsed="0.344556"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:21.780356" elapsed="0.347535"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:22.128506" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-18T23:40:22.141468" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-18T23:40:22.141815" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:40:22.141914" 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-18T23:40:22.128170" elapsed="0.013798"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:22.142389" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:22.144399" 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-18T23:40:22.143329" elapsed="0.001176"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:22.145093" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:22.144677" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:22.144626" elapsed="0.000628"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:22.145631" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-18T23:40:22.145371" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:22.145338" elapsed="0.000418"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:22.145804" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:22.150360" elapsed="0.001075"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:22.151766" elapsed="0.000611"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:22.152652" elapsed="0.000292"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:22.146299" elapsed="0.006791"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:21.776600" elapsed="0.376630"/>
</kw>
<msg time="2026-04-18T23:40:22.153398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:21.775950" elapsed="0.377526"/>
</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-18T23:40:21.775453" elapsed="0.378138"/>
</kw>
<msg time="2026-04-18T23:40:22.153650" 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-18T23:40:21.774929" elapsed="0.378787"/>
</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-18T23:40:22.157927" elapsed="0.000337"/>
</kw>
<kw name="Open 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-18T23:40:22.158425" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:22.158715" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:22.154167" elapsed="0.004694"/>
</kw>
<msg time="2026-04-18T23:40:22.158950" 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-18T23:40:21.774149" elapsed="0.384826"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:22.159464" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:22.159218" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:22.159547" 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-18T23:40:21.773259" elapsed="0.386414"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:40:21.773075" elapsed="0.386636"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:40:21.019739" elapsed="1.140009"/>
</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-18T23:40:21.015934" elapsed="1.143878"/>
</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-18T23:40:22.159967" elapsed="0.000228"/>
</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-18T23:40:22.174450" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:22.174339" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:22.174321" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:22.174807" 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-18T23:40:22.174910" 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-18T23:40:22.174670" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:22.175404" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:22.175105" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:22.175853" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:22.175604" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:22.176680" 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-18T23:40:22.176441" elapsed="0.000460">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-18T23:40:22.177011" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:40:22.177073" 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-18T23:40:22.176068" elapsed="0.001029"/>
</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-18T23:40:22.177451" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:22.177214" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:22.177195" elapsed="0.000353"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:22.178345" level="INFO">${ip_address} = 10.30.171.9</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-18T23:40:22.178020" elapsed="0.000351"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:40:22.178420" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:22.178570" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:40:22.177748" elapsed="0.000847"/>
</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-18T23:40:22.178748" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:22.179458" level="INFO">index=10
host=10.30.171.9
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-18T23:40:22.179560" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-18T23:40:22.179345" 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-18T23:40:22.179738" elapsed="0.002412"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:40:22.182573" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:40:22.897145" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-18T23:40:22.182314" elapsed="0.714993"/>
</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-18T23:40:22.901432" elapsed="0.000340"/>
</kw>
<kw name="Open 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-18T23:40:22.901941" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:22.902285" 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-18T23:40:22.898888" elapsed="0.003552"/>
</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-18T23:40:22.897760" elapsed="0.004730"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-18T23:40:22.174057" elapsed="0.728490"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-18T23:40:22.160937" elapsed="0.741665"/>
</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-18T23:40:22.160556" elapsed="0.742101"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:40:22.160416" elapsed="0.742282"/>
</iter>
<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-18T23:40:22.916846" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:22.916706" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:22.916682" elapsed="0.000242"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:22.917312" 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-18T23:40:22.917425" 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-18T23:40:22.917149" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:22.917904" 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-18T23:40:22.917611" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:22.918372" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:22.918123" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:22.919293" level="FAIL">Dictionary does not contain key '2'.</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-18T23:40:22.919045" elapsed="0.000385">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-18T23:40:22.919542" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:40:22.919589" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-18T23:40:22.918648" elapsed="0.000966"/>
</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-18T23:40:22.919926" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:22.919694" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:22.919676" elapsed="0.000365"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:22.920791" level="INFO">${ip_address} = 10.30.171.128</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-18T23:40:22.920526" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:40:22.920875" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:40:22.921046" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:40:22.920247" elapsed="0.000825"/>
</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-18T23:40:22.921244" elapsed="0.000409"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:22.921953" level="INFO">index=12
host=10.30.171.128
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-18T23:40:22.922072" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-18T23:40:22.921840" elapsed="0.000260"/>
</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-18T23:40:22.922251" elapsed="0.002566"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:40:22.925310" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:40:23.883431" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-18T23:40:22.924989" elapsed="0.958595"/>
</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-18T23:40:23.887189" elapsed="0.000315"/>
</kw>
<kw name="Open 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-18T23:40:23.887674" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:23.887987" elapsed="0.000117"/>
</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-18T23:40:23.884702" elapsed="0.003456"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-18T23:40:23.883995" elapsed="0.004209"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-18T23:40:22.916406" elapsed="0.971851"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-18T23:40:22.903378" elapsed="0.984925"/>
</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-18T23:40:22.902976" elapsed="0.985378"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:40:22.902828" elapsed="0.985567"/>
</iter>
<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-18T23:40:23.902366" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:23.902242" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:23.902220" elapsed="0.000223"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:23.902736" 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-18T23:40:23.902842" 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-18T23:40:23.902596" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:23.903297" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:23.903019" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:23.903730" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:23.903491" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:23.904549" level="FAIL">Dictionary does not contain key '3'.</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-18T23:40:23.904309" elapsed="0.000416">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-18T23:40:23.904841" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:40:23.904887" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-18T23:40:23.903928" elapsed="0.000982"/>
</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-18T23:40:23.905229" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:23.904985" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:23.904967" elapsed="0.000359"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:23.906339" level="INFO">${ip_address} = 10.30.171.206</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-18T23:40:23.905867" elapsed="0.000498"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:40:23.906414" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:40:23.906570" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:40:23.905548" elapsed="0.001046"/>
</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-18T23:40:23.906747" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:23.907447" level="INFO">index=14
host=10.30.171.206
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-18T23:40:23.907545" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-18T23:40:23.907340" elapsed="0.000231"/>
</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-18T23:40:23.907718" elapsed="0.002407"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:40:23.910545" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:40:24.656729" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-18T23:40:23.910287" elapsed="0.746607"/>
</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-18T23:40:24.660546" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:40:24.661059" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:24.661465" 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-18T23:40:24.658114" elapsed="0.003511"/>
</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-18T23:40:24.657363" elapsed="0.004308"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-18T23:40:23.901940" elapsed="0.759809"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-18T23:40:23.889090" elapsed="0.772708"/>
</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-18T23:40:23.888700" elapsed="0.773150"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:40:23.888558" elapsed="0.773334"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-18T23:40:22.160258" elapsed="2.501671"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-18T23:40:20.986437" elapsed="3.675561"/>
</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-18T23:40:24.666089" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:24.665956" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.665934" 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-18T23:40:24.671133" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:24.671011" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.670993" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:40:24.672166" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:40:24.671756" elapsed="0.000437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:24.672664" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:40:24.672353" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:40:24.672737" elapsed="0.000034"/>
</return>
<msg time="2026-04-18T23:40:24.672897" level="INFO">${index_list} = [1, 2, 3]</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-18T23:40:24.671426" elapsed="0.001496"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:40:24.678360" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:24.678255" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.678237" 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-18T23:40:24.679458" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:24.679346" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.679328" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:24.679947" 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-18T23:40:24.679665" elapsed="0.000308"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:24.680349" 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-18T23:40:24.680154" elapsed="0.000220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:40:24.765491" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:40:24.680864" elapsed="0.084836"/>
</kw>
<msg time="2026-04-18T23:40:24.765872" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:40:24.765918" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:24.680532" elapsed="0.085423"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:40:24.918975" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:40:24.766610" elapsed="0.152788"/>
</kw>
<msg time="2026-04-18T23:40:24.919593" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:40:24.919642" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:24.766204" elapsed="0.153483"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:24.920214" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:24.919822" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.919777" elapsed="0.000532"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:24.920862" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:24.920461" elapsed="0.000512"/>
</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-18T23:40:24.921285" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:24.921060" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.921024" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:40:24.921405" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:24.922848" elapsed="0.000824"/>
</kw>
<kw name="Open 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-18T23:40:24.923986" elapsed="0.000498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:24.924752" elapsed="0.000202"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:24.922391" elapsed="0.002734"/>
</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-18T23:40:24.921741" elapsed="0.003435"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:40:24.679098" elapsed="0.246179"/>
</kw>
<msg time="2026-04-18T23:40:24.925370" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:40:24.925414" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:24.678576" elapsed="0.246877"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:40:24.925647" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-18T23:40:24.925535" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.925516" elapsed="0.000221"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:24.926226" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:24.926580" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:40:24.926655" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:40:24.677958" elapsed="0.248806"/>
</kw>
<msg time="2026-04-18T23:40:24.926858" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:40:24.926902" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:24.673314" elapsed="0.253625"/>
</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-18T23:40:24.927294" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:24.927019" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.926998" elapsed="0.000374"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:40:24.673173" elapsed="0.254222"/>
</iter>
<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-18T23:40:24.932945" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:24.932831" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.932812" elapsed="0.000329"/>
</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-18T23:40:24.934244" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:24.934128" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:24.934107" elapsed="0.000206"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:24.934728" level="INFO">${karaf_connection_index} = 12</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-18T23:40:24.934459" elapsed="0.000295"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:24.935135" 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-18T23:40:24.934913" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.018497" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:40:24.935682" elapsed="0.083032"/>
</kw>
<msg time="2026-04-18T23:40:25.018889" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:40:25.018955" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:24.935333" elapsed="0.083673"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.209125" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:40:25.019683" elapsed="0.189748"/>
</kw>
<msg time="2026-04-18T23:40:25.209597" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:40:25.209644" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:25.019269" elapsed="0.190413"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:25.210171" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:25.209793" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.209760" elapsed="0.000498"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.210780" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:25.210403" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:25.211178" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:25.210942" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.210924" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:40:25.211295" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:25.212635" elapsed="0.000584"/>
</kw>
<kw name="Open 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-18T23:40:25.213516" elapsed="0.000499"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:25.214294" elapsed="0.000195"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:25.212200" elapsed="0.002420"/>
</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-18T23:40:25.211615" elapsed="0.003053"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:40:24.933847" elapsed="0.280920"/>
</kw>
<msg time="2026-04-18T23:40:25.214861" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:40:25.214906" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:24.933308" elapsed="0.281635"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:40:25.215152" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-18T23:40:25.215019" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.215001" elapsed="0.000298"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:25.215705" elapsed="0.000024"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:25.216283" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:40:25.216358" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:40:24.932528" elapsed="0.284054"/>
</kw>
<msg time="2026-04-18T23:40:25.216694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:40:25.216738" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:24.927672" elapsed="0.289103"/>
</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-18T23:40:25.217155" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:25.216851" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.216833" elapsed="0.000400"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:40:24.927527" elapsed="0.289729"/>
</iter>
<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-18T23:40:25.222770" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:25.222658" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.222639" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:40:25.224022" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:25.223916" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.223898" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:25.224514" level="INFO">${karaf_connection_index} = 14</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-18T23:40:25.224253" elapsed="0.000288"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.224890" 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-18T23:40:25.224699" elapsed="0.000217"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.307369" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:40:25.225436" elapsed="0.082079"/>
</kw>
<msg time="2026-04-18T23:40:25.307626" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:40:25.307672" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:25.225096" elapsed="0.082612"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.445962" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:40:25.308299" elapsed="0.138020"/>
</kw>
<msg time="2026-04-18T23:40:25.446507" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:40:25.446555" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:25.307888" elapsed="0.138706"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:25.447104" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:25.446718" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.446680" elapsed="0.000515"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.447739" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:25.447347" elapsed="0.000566"/>
</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-18T23:40:25.448222" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:25.447982" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.447963" elapsed="0.000337"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:40:25.448341" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:25.449735" elapsed="0.000594"/>
</kw>
<kw name="Open 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-18T23:40:25.450624" elapsed="0.000480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:25.451365" elapsed="0.000192"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:25.449285" elapsed="0.002406"/>
</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-18T23:40:25.448676" elapsed="0.003064"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:40:25.223664" elapsed="0.228174"/>
</kw>
<msg time="2026-04-18T23:40:25.451934" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:40:25.451981" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:25.222987" elapsed="0.229031"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:40:25.452228" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-18T23:40:25.452120" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.452102" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:25.452740" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:40:25.453106" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:40:25.453179" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:40:25.222362" elapsed="0.230923"/>
</kw>
<msg time="2026-04-18T23:40:25.453381" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:40:25.453425" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:40:25.217528" elapsed="0.235933"/>
</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-18T23:40:25.453795" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:25.453537" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.453520" elapsed="0.000351"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:40:25.217386" elapsed="0.236509"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:40:24.672977" elapsed="0.780953"/>
</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-18T23:40:24.670720" elapsed="0.783294"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-18T23:40:24.662623" elapsed="0.791471"/>
</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-18T23:40:24.662182" elapsed="0.791958"/>
</kw>
<arg>http_timeout=125</arg>
<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-18T23:40:20.980423" elapsed="4.473773"/>
</kw>
<test id="s1-s1-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.460350" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:40:25.459914" elapsed="0.000462"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.460850" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:40:25.460538" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:40:25.460922" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:25.461151" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-18T23:40:25.459529" elapsed="0.001683"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.462230" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:40:25.461799" elapsed="0.000458"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.462719" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:40:25.462417" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:40:25.462790" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:40:25.462943" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-18T23:40:25.461424" elapsed="0.001543"/>
</kw>
<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-18T23:40:25.464433" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:40:25.464054" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.464926" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:40:25.464618" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:40:25.464997" elapsed="0.000042"/>
</return>
<msg time="2026-04-18T23:40:25.465166" level="INFO">${index_list} = [1, 2, 3]</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-18T23:40:25.463674" elapsed="0.001517"/>
</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-18T23:40:25.466281" level="INFO">${member_ip} = 10.30.171.9</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-18T23:40:25.465970" elapsed="0.000338"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.467099" 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-18T23:40:25.467200" 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-18T23:40:25.466939" elapsed="0.000288"/>
</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-18T23:40:25.469949" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:25.469682" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:25.469663" elapsed="0.000420"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.470368" 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-18T23:40:25.470466" 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-18T23:40:25.470238" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.471129" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:25.470649" elapsed="0.000527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.471753" 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-18T23:40:25.471336" elapsed="0.000444"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:25.472969" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:25.473111" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:25.472443" elapsed="0.000693"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:25.473323" elapsed="0.000650"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.476105" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:25.801681" 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 Sat Apr 18 23:40:16 UTC 2026

  System load:  0.14               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:40:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:40:25.475538" elapsed="0.326361"/>
</kw>
<msg time="2026-04-18T23:40:25.802054" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:25.474271" elapsed="0.327972"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:25.471998" elapsed="0.330413"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:25.802931" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-18T23:40:26.170944" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:26.171385" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:40:26.171495" 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-18T23:40:25.802661" elapsed="0.368890"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:26.172076" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.173927" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:26.173175" elapsed="0.000896"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:26.174621" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:26.174296" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:26.174210" elapsed="0.000580"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:26.175209" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-18T23:40:26.174918" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:26.174882" elapsed="0.000535"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:26.175500" 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-18T23:40:26.190629" elapsed="0.000543"/>
</kw>
<kw name="Open 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-18T23:40:26.191340" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:26.191652" 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-18T23:40:26.176284" elapsed="0.015519"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:25.468984" elapsed="0.722911"/>
</kw>
<msg time="2026-04-18T23:40:26.191950" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:25.468424" elapsed="0.723581"/>
</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-18T23:40:25.467883" elapsed="0.724600"/>
</kw>
<msg time="2026-04-18T23:40:26.192526" 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-18T23:40:25.467383" elapsed="0.725189"/>
</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-18T23:40:26.195543" elapsed="0.000319"/>
</kw>
<kw name="Open 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-18T23:40:26.196039" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:26.196335" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:26.192865" elapsed="0.003616"/>
</kw>
<msg time="2026-04-18T23:40:26.196572" 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-18T23:40:25.466526" elapsed="0.730071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.197247" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:26.196842" elapsed="0.000447"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:26.197333" 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-18T23:40:25.465568" elapsed="0.731892"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:40:25.465391" elapsed="0.732106"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:26.198503" level="INFO">${member_ip} = 10.30.171.128</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-18T23:40:26.198209" elapsed="0.000322"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.199310" 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-18T23:40:26.199407" 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-18T23:40:26.199173" elapsed="0.000259"/>
</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-18T23:40:26.202017" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:26.201743" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:26.201725" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.202413" 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-18T23:40:26.202514" 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-18T23:40:26.202284" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.203176" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:26.202692" elapsed="0.000531"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.203789" level="INFO">${conn_id} = 22</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:26.203380" elapsed="0.000436"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.204989" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:26.205131" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:26.204473" elapsed="0.000683"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:26.205341" elapsed="0.000831"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.208414" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:26.512974" 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 Sat Apr 18 23:40:17 UTC 2026

  System load:  0.26               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:40:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:40:26.207694" elapsed="0.305722"/>
</kw>
<msg time="2026-04-18T23:40:26.513671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:26.206439" elapsed="0.307636"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:26.204046" elapsed="0.310428"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.515450" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-18T23:40:26.903468" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:26.903711" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:40:26.903757" 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-18T23:40:26.514932" elapsed="0.388851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:26.904170" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.905184" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:26.904725" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:26.905479" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:26.905319" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:26.905293" elapsed="0.000259"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:26.905716" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-18T23:40:26.905607" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:26.905592" elapsed="0.000219"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:26.905847" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:26.923677" elapsed="0.000532"/>
</kw>
<kw name="Open 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-18T23:40:26.924376" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:26.924687" 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-18T23:40:26.906209" elapsed="0.018629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:26.201214" elapsed="0.723716"/>
</kw>
<msg time="2026-04-18T23:40:26.924985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:26.200629" elapsed="0.724427"/>
</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-18T23:40:26.200103" elapsed="0.725040"/>
</kw>
<msg time="2026-04-18T23:40:26.925183" 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-18T23:40:26.199586" elapsed="0.725643"/>
</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-18T23:40:26.928447" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:40:26.928921" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:26.929229" 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-18T23:40:26.925516" elapsed="0.003857"/>
</kw>
<msg time="2026-04-18T23:40:26.929462" 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-18T23:40:26.198752" elapsed="0.730735"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.929906" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:26.929661" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:26.929989" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:26.197777" elapsed="0.732353"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:40:26.197594" elapsed="0.732573"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:26.931202" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:26.930885" elapsed="0.000343"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.931992" 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-18T23:40:26.932138" 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-18T23:40:26.931851" elapsed="0.000314"/>
</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-18T23:40:26.935298" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:26.934979" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:26.934960" elapsed="0.000475"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.935727" 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-18T23:40:26.935830" 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-18T23:40:26.935593" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.936516" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:26.936010" elapsed="0.000554"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.937161" 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-18T23:40:26.936725" elapsed="0.000462"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:26.938412" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:26.938568" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:26.937836" elapsed="0.000760"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:26.938797" elapsed="0.000703"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:26.941605" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:27.264134" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:26.941013" elapsed="0.323545"/>
</kw>
<msg time="2026-04-18T23:40:27.264819" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:26.939729" elapsed="0.325486"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:26.937404" elapsed="0.328166"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:27.266576" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-18T23:40:27.623968" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:27.624399" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:40:27.624499" 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-18T23:40:27.266061" elapsed="0.358491"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:27.625024" elapsed="0.000642"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:27.626926" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:27.626153" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:27.627534" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:27.627239" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:27.627188" elapsed="0.000500"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:27.628093" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:40:27.627805" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:27.627772" elapsed="0.000521"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:27.628368" 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-18T23:40:27.647058" elapsed="0.000537"/>
</kw>
<kw name="Open 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-18T23:40:27.647764" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:27.648112" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:27.629103" elapsed="0.019165"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:26.934419" elapsed="0.713940"/>
</kw>
<msg time="2026-04-18T23:40:27.648474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:26.933779" elapsed="0.714754"/>
</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-18T23:40:26.933244" elapsed="0.715367"/>
</kw>
<msg time="2026-04-18T23:40:27.648651" 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-18T23:40:26.932318" elapsed="0.716377"/>
</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-18T23:40:27.651859" elapsed="0.000694"/>
</kw>
<kw name="Open 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-18T23:40:27.652921" elapsed="0.000314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:27.653439" elapsed="0.000142"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:27.648997" elapsed="0.004665"/>
</kw>
<msg time="2026-04-18T23:40:27.653807" 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-18T23:40:26.931442" elapsed="0.722399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:27.654554" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:27.654162" elapsed="0.000444"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:27.654669" elapsed="0.000064"/>
</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-18T23:40:26.930448" elapsed="0.724445"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:40:26.930265" elapsed="0.724681"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:40:25.465252" elapsed="2.189744"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-18T23:40:25.463192" elapsed="2.191908"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:40:27.655716" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-18T23:40:27.655319" elapsed="0.000431"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:40:27.655952" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-18T23:40:27.656517" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:27.656370" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:27.656339" elapsed="0.000261"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:27.659194" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:27.658804" elapsed="0.000422"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:27.660359" level="INFO">${member_ip} = 10.30.171.9</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-18T23:40:27.660006" elapsed="0.000385"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:27.661406" 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-18T23:40:27.661531" 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-18T23:40:27.661227" elapsed="0.000338"/>
</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-18T23:40:27.666797" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:27.666227" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:27.666164" elapsed="0.000802"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:27.668776" 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-18T23:40:27.669104" 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-18T23:40:27.668230" elapsed="0.000994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:27.671156" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:27.670430" elapsed="0.000936"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:27.673545" level="INFO">${conn_id} = 28</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:27.672598" elapsed="0.001063"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:27.676505" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:27.676601" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:27.676158" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:27.676898" elapsed="0.000852"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:27.678942" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:28.033006" 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 Sat Apr 18 23:40:16 UTC 2026

  System load:  0.14               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:40:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:40:27.678520" elapsed="0.354697"/>
</kw>
<msg time="2026-04-18T23:40:28.033327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:27.678052" elapsed="0.355389"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:27.675198" elapsed="0.358592"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:28.035716" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:28.058726" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:28.059488" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:28.059837" 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-18T23:40:28.035205" elapsed="0.024882"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:28.062322" elapsed="0.001008"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:28.064951" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:28.064300" elapsed="0.000825"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:28.065719" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:28.065368" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:28.065284" elapsed="0.000634"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:28.066447" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-18T23:40:28.066153" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:28.066079" elapsed="0.000605"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:28.066804" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:28.074081" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:28.074871" elapsed="0.000292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:28.075449" 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-18T23:40:28.068907" elapsed="0.006834"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:27.664058" elapsed="0.411906"/>
</kw>
<msg time="2026-04-18T23:40:28.076375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:27.663165" elapsed="0.413271"/>
</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-18T23:40:27.662437" elapsed="0.414080"/>
</kw>
<msg time="2026-04-18T23:40:28.076617" 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-18T23:40:27.661769" elapsed="0.414895"/>
</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-18T23:40:28.079629" elapsed="0.000319"/>
</kw>
<kw name="Open 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-18T23:40:28.080173" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:28.080468" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:28.076960" elapsed="0.003655"/>
</kw>
<msg time="2026-04-18T23:40:28.080707" level="INFO">${output} = 1</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-18T23:40:27.660677" elapsed="0.420054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:28.081172" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:28.080909" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:28.081259" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:28.081410" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:27.659479" elapsed="0.421956"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:28.081481" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:28.081623" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:27.658341" elapsed="0.423306"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:28.082235" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:28.081804" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:27.657781" elapsed="0.424661">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:30.086212" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:30.085434" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:30.088507" level="INFO">${member_ip} = 10.30.171.9</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-18T23:40:30.087851" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:30.089823" 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-18T23:40:30.089963" 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-18T23:40:30.089591" elapsed="0.000409"/>
</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-18T23:40:30.095779" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:30.095104" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:30.094722" elapsed="0.001258"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:30.098126" 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-18T23:40:30.098468" 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-18T23:40:30.097462" elapsed="0.001149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:30.100854" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:30.100120" elapsed="0.000844"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:30.102770" level="INFO">${conn_id} = 31</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:30.101984" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:30.105275" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:30.105417" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:30.104970" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:30.105655" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:30.107021" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:30.415351" 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 Sat Apr 18 23:40:16 UTC 2026

  System load:  0.14               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:40:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:40:30.106699" elapsed="0.308896"/>
</kw>
<msg time="2026-04-18T23:40:30.415746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:30.106338" elapsed="0.309627"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:30.104175" elapsed="0.312370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:30.418791" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:30.441662" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:30.442247" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:30.442583" 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-18T23:40:30.418222" elapsed="0.024573"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:30.445121" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:30.448345" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:30.447315" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:30.449247" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:30.448877" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:30.448789" elapsed="0.000652"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:30.449944" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-18T23:40:30.449652" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:30.449579" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:30.450323" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:30.458633" 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-18T23:40:30.459327" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:30.459696" 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-18T23:40:30.452407" elapsed="0.007557"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:30.092792" elapsed="0.367424"/>
</kw>
<msg time="2026-04-18T23:40:30.460530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:30.091802" elapsed="0.368799"/>
</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-18T23:40:30.090985" elapsed="0.369697"/>
</kw>
<msg time="2026-04-18T23:40:30.460724" 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-18T23:40:30.090259" elapsed="0.370510"/>
</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-18T23:40:30.463950" elapsed="0.000447"/>
</kw>
<kw name="Open 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-18T23:40:30.464564" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:30.465064" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:30.461114" elapsed="0.004105"/>
</kw>
<msg time="2026-04-18T23:40:30.465312" level="INFO">${output} = 1</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-18T23:40:30.088964" elapsed="0.376373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:30.465794" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:30.465540" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:30.465888" elapsed="0.000036"/>
</return>
<msg time="2026-04-18T23:40:30.466065" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:30.086731" elapsed="0.379360"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:30.466137" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:30.466280" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:30.084485" elapsed="0.381818"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:30.466868" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:30.466458" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:30.083339" elapsed="0.383795">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:32.470774" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:32.470003" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:32.473123" level="INFO">${member_ip} = 10.30.171.9</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-18T23:40:32.472502" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:32.474411" 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-18T23:40:32.474552" 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-18T23:40:32.474052" elapsed="0.000537"/>
</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-18T23:40:32.479824" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:32.479212" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:32.479135" elapsed="0.000874"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:32.482279" 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-18T23:40:32.482609" 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-18T23:40:32.481389" elapsed="0.001359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:32.484805" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:32.484021" elapsed="0.000906"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:32.486555" level="INFO">${conn_id} = 34</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:32.485842" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:32.488875" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:32.488957" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:32.488581" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:32.489249" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:32.490604" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:32.809048" 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 Sat Apr 18 23:40:16 UTC 2026

  System load:  0.14               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:40:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:40:32.490275" elapsed="0.318981"/>
</kw>
<msg time="2026-04-18T23:40:32.809346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:32.489817" elapsed="0.319626"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:32.487763" elapsed="0.321932"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:32.811068" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:32.833996" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:32.834511" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:32.834826" 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-18T23:40:32.810687" elapsed="0.024377"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:32.837160" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:32.840165" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:32.839231" elapsed="0.001158"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:32.841102" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:32.840773" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:32.840604" elapsed="0.000628"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:32.841567" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-18T23:40:32.841371" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:32.841324" elapsed="0.000395"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:32.841797" 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-18T23:40:32.846326" elapsed="0.000336"/>
</kw>
<kw name="Open 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-18T23:40:32.846870" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:32.847304" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:32.843081" elapsed="0.004429"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:32.477369" elapsed="0.370351"/>
</kw>
<msg time="2026-04-18T23:40:32.848011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:32.476375" elapsed="0.371708"/>
</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-18T23:40:32.475567" elapsed="0.372596"/>
</kw>
<msg time="2026-04-18T23:40:32.848204" 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-18T23:40:32.474810" elapsed="0.373439"/>
</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-18T23:40:32.851485" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:40:32.851958" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:32.852277" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:32.848537" elapsed="0.003887"/>
</kw>
<msg time="2026-04-18T23:40:32.852516" level="INFO">${output} = 1</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-18T23:40:32.473465" elapsed="0.379076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:32.852982" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:32.852735" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:32.853105" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:32.853257" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:32.471550" elapsed="0.381731"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:32.853327" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:32.853468" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:32.469186" elapsed="0.384306"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:32.854110" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:32.853690" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:32.467939" elapsed="0.386368">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:34.857757" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:34.856966" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:34.859868" level="INFO">${member_ip} = 10.30.171.9</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-18T23:40:34.859259" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:34.861748" 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-18T23:40:34.861950" 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-18T23:40:34.861373" elapsed="0.000616"/>
</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-18T23:40:34.867265" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:34.866613" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:34.866536" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:34.869781" 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-18T23:40:34.870097" 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-18T23:40:34.868834" elapsed="0.001363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:34.871722" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:34.871179" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:34.873517" level="INFO">${conn_id} = 37</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:34.872800" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:34.875907" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:34.875985" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:34.875628" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:34.876237" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:34.877528" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:35.179232" 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 Sat Apr 18 23:40:16 UTC 2026

  System load:  0.14               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:40:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:40:34.877175" elapsed="0.302211"/>
</kw>
<msg time="2026-04-18T23:40:35.179471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:34.876798" elapsed="0.302764"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:34.874859" elapsed="0.304984"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.181353" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:35.204161" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:35.204655" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-18T23:40:35.204986" 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-18T23:40:35.180933" elapsed="0.024306"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.207509" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.210423" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.209699" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:35.211207" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:35.210794" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.210714" 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-18T23:40:35.211874" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-18T23:40:35.211596" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.211529" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:35.212231" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:35.218557" 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-18T23:40:35.219225" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.219585" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:35.214115" elapsed="0.005678"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:34.864662" elapsed="0.355353"/>
</kw>
<msg time="2026-04-18T23:40:35.220340" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:34.863707" elapsed="0.356692"/>
</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-18T23:40:34.862943" elapsed="0.357537"/>
</kw>
<msg time="2026-04-18T23:40:35.220522" 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-18T23:40:34.862232" elapsed="0.358336"/>
</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-18T23:40:35.223572" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:40:35.224071" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.224368" 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-18T23:40:35.220856" elapsed="0.003658"/>
</kw>
<msg time="2026-04-18T23:40:35.224604" level="INFO">${output} = 0</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-18T23:40:34.860437" elapsed="0.364192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.225064" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.224803" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:35.225153" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:35.225303" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:34.858317" elapsed="0.367011"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:35.225376" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:40:35.225518" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:34.856160" elapsed="0.369383"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-18T23:40:35.225725" elapsed="0.000386"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-18T23:40:34.855114" elapsed="0.371060"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-18T23:40:27.657075" elapsed="7.569146"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:40:27.656862" elapsed="7.569396"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.228180" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:35.227872" elapsed="0.000335"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:35.229091" level="INFO">${member_ip} = 10.30.171.128</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-18T23:40:35.228806" elapsed="0.000312"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.229888" 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-18T23:40:35.229988" 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-18T23:40:35.229754" elapsed="0.000260"/>
</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-18T23:40:35.233696" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:35.233250" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.233199" elapsed="0.000633"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.235500" 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-18T23:40:35.235744" 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-18T23:40:35.234806" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.237385" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.236835" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.239211" level="INFO">${conn_id} = 40</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:35.238497" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.241592" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:35.241696" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:35.241307" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:35.241929" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.243211" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:35.568213" 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 Sat Apr 18 23:40:17 UTC 2026

  System load:  0.26               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:40:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:40:35.242870" elapsed="0.325446"/>
</kw>
<msg time="2026-04-18T23:40:35.568384" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:35.242513" elapsed="0.325942"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:35.240511" elapsed="0.328181"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.570120" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:35.592971" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:35.593504" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-18T23:40:35.593856" 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-18T23:40:35.569744" elapsed="0.024362"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.596286" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.599300" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.598464" elapsed="0.001140"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:35.600210" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:35.599842" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.599758" elapsed="0.000646"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:35.600915" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-18T23:40:35.600620" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.600548" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:35.601296" elapsed="0.000055"/>
</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-18T23:40:35.608407" elapsed="0.000505"/>
</kw>
<kw name="Open 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-18T23:40:35.609245" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.609810" elapsed="0.000152"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:35.603430" elapsed="0.006711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:35.231876" elapsed="0.378594"/>
</kw>
<msg time="2026-04-18T23:40:35.610927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:35.231239" elapsed="0.379756"/>
</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-18T23:40:35.230690" elapsed="0.380521"/>
</kw>
<msg time="2026-04-18T23:40:35.611254" 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-18T23:40:35.230189" elapsed="0.381111"/>
</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-18T23:40:35.614286" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:40:35.614757" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.615085" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:35.611598" elapsed="0.003636"/>
</kw>
<msg time="2026-04-18T23:40:35.615326" level="INFO">${output} = 0</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-18T23:40:35.229333" elapsed="0.386018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.615796" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.615548" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:35.615883" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:40:35.616052" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:35.228405" elapsed="0.387674"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:35.616125" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:35.616269" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:35.227527" elapsed="0.388773"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-18T23:40:35.616457" elapsed="0.000361"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-18T23:40:35.227017" elapsed="0.389864"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-18T23:40:35.226497" elapsed="0.390431"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:40:35.226355" elapsed="0.390610"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.618824" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:35.618524" elapsed="0.000327"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:35.619821" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:35.619547" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.620696" 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-18T23:40:35.620796" 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-18T23:40:35.620558" elapsed="0.000264"/>
</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-18T23:40:35.624546" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:35.624110" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.624056" elapsed="0.000626"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.626320" 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-18T23:40:35.626560" 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-18T23:40:35.625640" elapsed="0.001020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.628182" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.627625" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.629948" level="INFO">${conn_id} = 43</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:35.629250" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.632647" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:35.632724" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:35.632361" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:35.632956" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.634354" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:35.946556" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:35.633900" elapsed="0.312801"/>
</kw>
<msg time="2026-04-18T23:40:35.946786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:35.633518" elapsed="0.313351"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:35.631371" elapsed="0.315799"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:35.948652" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:35.971500" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:35.971983" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:35.972358" 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-18T23:40:35.948269" elapsed="0.024294"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.974760" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.977835" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.976863" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:35.978976" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:35.978496" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.978374" elapsed="0.000806"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:35.979655" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-18T23:40:35.979378" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:35.979311" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:35.980089" elapsed="0.000055"/>
</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-18T23:40:35.986673" elapsed="0.000413"/>
</kw>
<kw name="Open 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-18T23:40:35.987293" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.987640" 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-18T23:40:35.982005" elapsed="0.005838"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:35.622731" elapsed="0.365352"/>
</kw>
<msg time="2026-04-18T23:40:35.988385" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:35.622071" elapsed="0.366370"/>
</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-18T23:40:35.621513" elapsed="0.367008"/>
</kw>
<msg time="2026-04-18T23:40:35.988562" 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-18T23:40:35.620988" elapsed="0.367620"/>
</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-18T23:40:35.991664" elapsed="0.000318"/>
</kw>
<kw name="Open 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-18T23:40:35.992163" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:35.992460" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:35.988897" elapsed="0.003717"/>
</kw>
<msg time="2026-04-18T23:40:35.992707" level="INFO">${output} = 1</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-18T23:40:35.620147" elapsed="0.372585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.993246" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:35.992918" elapsed="0.000372"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:35.993332" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:40:35.993485" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:35.619140" elapsed="0.374370"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:35.993557" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:40:35.993701" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:35.618175" elapsed="0.375551"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:35.994342" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:35.993913" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:35.617765" elapsed="0.376766">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:37.997927" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:37.997218" elapsed="0.000775"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:38.000093" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:37.999464" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:38.001897" 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-18T23:40:38.002150" 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-18T23:40:38.001585" elapsed="0.000624"/>
</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-18T23:40:38.008498" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:38.007808" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:38.007450" elapsed="0.001246"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:38.010859" 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-18T23:40:38.011161" 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-18T23:40:38.010179" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:38.012781" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:38.012247" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:38.014579" level="INFO">${conn_id} = 46</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:38.013874" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:38.016971" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:38.017063" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:38.016689" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:38.017296" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:38.018536" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:38.341903" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:38.018213" elapsed="0.323800"/>
</kw>
<msg time="2026-04-18T23:40:38.342102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:38.017842" elapsed="0.324335"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:38.015922" elapsed="0.326491"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:38.343820" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:38.366566" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:38.367128" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:38.367462" 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-18T23:40:38.343464" elapsed="0.024208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:38.369902" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:38.372671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:38.372065" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:38.373425" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:38.373104" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:38.372956" elapsed="0.000651"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:38.374106" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:40:38.373807" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:38.373740" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:38.374433" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:38.380778" 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-18T23:40:38.381351" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:38.381698" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:38.376302" elapsed="0.005657"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:38.005446" elapsed="0.376777"/>
</kw>
<msg time="2026-04-18T23:40:38.382521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:38.004459" elapsed="0.378117"/>
</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-18T23:40:38.003628" elapsed="0.379030"/>
</kw>
<msg time="2026-04-18T23:40:38.382700" 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-18T23:40:38.002789" elapsed="0.379957"/>
</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-18T23:40:38.385796" 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-18T23:40:38.386287" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:38.386576" 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-18T23:40:38.383132" elapsed="0.003588"/>
</kw>
<msg time="2026-04-18T23:40:38.386808" level="INFO">${output} = 1</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-18T23:40:38.000623" elapsed="0.386222"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:38.387287" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:38.387024" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:38.387371" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:38.387519" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:37.998471" elapsed="0.389072"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:38.387588" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:40:38.387729" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:37.996372" elapsed="0.391381"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:38.388348" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:38.387912" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:37.995346" elapsed="0.393196">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:40.392086" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:40.391297" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:40.393415" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:40.393009" elapsed="0.000442"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:40.394588" 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-18T23:40:40.394730" 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-18T23:40:40.394373" elapsed="0.000401"/>
</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-18T23:40:40.400329" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:40.399759" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:40.399365" elapsed="0.001103"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:40.401885" 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-18T23:40:40.402215" 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-18T23:40:40.401448" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:40.403853" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:40.403290" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:40.405680" 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-18T23:40:40.404972" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:40.408221" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:40.408301" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:40.407759" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:40.408542" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:40.409792" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:40.733696" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:40.409469" elapsed="0.324380"/>
</kw>
<msg time="2026-04-18T23:40:40.733937" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:40.409108" elapsed="0.324940"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:40.406958" elapsed="0.327371"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:40.735823" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:40.759023" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:40.759605" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:40.760121" 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-18T23:40:40.735413" elapsed="0.024941"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:40.762771" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:40.766195" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:40.765168" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:40.767381" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:40.766798" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:40.766670" elapsed="0.001014"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:40.768279" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-18T23:40:40.768068" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:40.767960" elapsed="0.000481"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:40.768519" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:40.774960" elapsed="0.000457"/>
</kw>
<kw name="Open 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-18T23:40:40.775633" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:40.776042" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:40.769880" elapsed="0.006380"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:40.397511" elapsed="0.378981"/>
</kw>
<msg time="2026-04-18T23:40:40.776878" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:40.396575" elapsed="0.380365"/>
</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-18T23:40:40.395794" elapsed="0.381229"/>
</kw>
<msg time="2026-04-18T23:40:40.777082" 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-18T23:40:40.394993" elapsed="0.382135"/>
</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-18T23:40:40.780225" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:40:40.780707" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:40.781014" elapsed="0.000122"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:40.777425" elapsed="0.003764"/>
</kw>
<msg time="2026-04-18T23:40:40.781280" level="INFO">${output} = 1</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-18T23:40:40.393752" elapsed="0.387553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:40.781738" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:40.781489" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:40.781826" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:40:40.781987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:40.392430" elapsed="0.389583"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:40.782077" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:40:40.782223" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:40.390443" elapsed="0.391805"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:40.782818" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:40.782403" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:40.389362" elapsed="0.393656">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:42.786638" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:42.785881" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:42.789269" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:42.788563" elapsed="0.000749"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:42.790634" 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-18T23:40:42.790807" 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-18T23:40:42.790373" elapsed="0.000482"/>
</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-18T23:40:42.796629" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:42.795956" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:42.795878" elapsed="0.000944"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:42.826391" 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-18T23:40:42.826708" 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-18T23:40:42.798196" elapsed="0.028613"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:42.828516" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:42.827865" elapsed="0.000775"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:42.830411" level="INFO">${conn_id} = 52</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:42.829686" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:42.832900" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:42.832977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:42.832580" 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-18T23:40:42.833236" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:42.834531" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:43.153845" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:42.834198" elapsed="0.319793"/>
</kw>
<msg time="2026-04-18T23:40:43.154098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:42.833817" elapsed="0.320372"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:42.831738" elapsed="0.322739"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:43.156010" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:43.178590" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:43.179138" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:43.179476" 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-18T23:40:43.155596" elapsed="0.024088"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:43.181946" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:43.185076" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:43.184098" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:43.186193" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:43.185660" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:43.185537" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:43.187282" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-18T23:40:43.186797" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:43.186688" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:43.187807" elapsed="0.000084"/>
</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-18T23:40:43.193657" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:40:43.194217" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:43.194572" 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-18T23:40:43.190258" elapsed="0.004519"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:42.794015" elapsed="0.400980"/>
</kw>
<msg time="2026-04-18T23:40:43.195310" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:42.792912" elapsed="0.402455"/>
</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-18T23:40:42.791994" elapsed="0.403454"/>
</kw>
<msg time="2026-04-18T23:40:43.195489" 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-18T23:40:42.791151" elapsed="0.404382"/>
</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-18T23:40:43.198636" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:40:43.199132" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:43.199427" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:43.195828" elapsed="0.003750"/>
</kw>
<msg time="2026-04-18T23:40:43.199670" level="INFO">${output} = 1</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-18T23:40:42.789689" elapsed="0.410006"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:43.200135" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:43.199871" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:43.200223" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:40:43.200372" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:42.787460" elapsed="0.412937"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:43.200445" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:40:43.200586" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:42.785018" elapsed="0.415593"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:43.201300" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:43.200789" elapsed="0.000589">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:42.783899" elapsed="0.417593">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:45.205002" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:45.204275" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:45.207199" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:45.206570" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:45.209015" 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-18T23:40:45.209272" 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-18T23:40:45.208679" elapsed="0.000652"/>
</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-18T23:40:45.215394" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:45.214731" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:45.214652" elapsed="0.000940"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:45.218470" 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-18T23:40:45.218720" 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-18T23:40:45.216979" elapsed="0.001840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:45.220380" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:45.219810" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:45.222291" 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-18T23:40:45.221482" elapsed="0.000906"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:45.224657" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:45.224734" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:45.224373" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:45.224967" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:45.226478" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:45.549086" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:45.226015" elapsed="0.323204"/>
</kw>
<msg time="2026-04-18T23:40:45.549298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:45.225650" elapsed="0.323732"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:45.223597" elapsed="0.326046"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:45.551125" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:45.574659" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:45.575224" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:45.575561" 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-18T23:40:45.550707" elapsed="0.025072"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:45.578058" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:45.581197" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:45.580227" elapsed="0.001197"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:45.582243" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:45.581820" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:45.581647" elapsed="0.000729"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:45.582722" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-18T23:40:45.582520" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:45.582473" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:45.582967" 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-18T23:40:45.587668" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:40:45.588302" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:45.588660" 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-18T23:40:45.584351" elapsed="0.004514"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:45.212460" elapsed="0.376638"/>
</kw>
<msg time="2026-04-18T23:40:45.589402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:45.211486" elapsed="0.377977"/>
</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-18T23:40:45.210717" elapsed="0.378826"/>
</kw>
<msg time="2026-04-18T23:40:45.589585" 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-18T23:40:45.209734" elapsed="0.379896"/>
</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-18T23:40:45.592771" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:40:45.593274" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:45.593567" 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-18T23:40:45.589944" elapsed="0.003792"/>
</kw>
<msg time="2026-04-18T23:40:45.593828" level="INFO">${output} = 1</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-18T23:40:45.207746" elapsed="0.386162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:45.594364" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:45.594106" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:45.594452" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:45.594602" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:45.205576" elapsed="0.389052"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:45.594676" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:45.594819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:45.203439" elapsed="0.391405"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:45.595414" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:45.595001" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:45.202370" elapsed="0.393241">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:47.599226" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:47.598396" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:47.600564" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:47.600181" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:47.601744" 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-18T23:40:47.601890" 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-18T23:40:47.601515" elapsed="0.000414"/>
</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-18T23:40:47.607574" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:47.607063" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:47.606963" elapsed="0.000754"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:47.609175" 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-18T23:40:47.609422" 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-18T23:40:47.608716" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:47.611151" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:47.610544" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:47.612954" level="INFO">${conn_id} = 58</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:47.612255" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:47.615480" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:47.615558" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:47.615189" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:47.615795" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:47.617086" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:47.938178" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:47.616745" elapsed="0.321687"/>
</kw>
<msg time="2026-04-18T23:40:47.938521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:47.616384" elapsed="0.322230"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:47.614373" elapsed="0.324548"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:47.940480" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:47.963288" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:47.963637" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:47.963844" 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-18T23:40:47.940024" elapsed="0.023954"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:47.965416" elapsed="0.000596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:47.967496" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:47.966847" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:47.968215" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:47.967866" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:47.967787" 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-18T23:40:47.968906" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-18T23:40:47.968620" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:47.968540" elapsed="0.000647"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:47.969298" elapsed="0.000051"/>
</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-18T23:40:47.975785" 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-18T23:40:47.976407" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:47.976823" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:47.971140" elapsed="0.006056"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:47.604679" elapsed="0.372772"/>
</kw>
<msg time="2026-04-18T23:40:47.977867" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:47.603727" elapsed="0.374204"/>
</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-18T23:40:47.602926" elapsed="0.375090"/>
</kw>
<msg time="2026-04-18T23:40:47.978076" 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-18T23:40:47.602177" elapsed="0.375956"/>
</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-18T23:40:47.981203" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:47.981684" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:47.981980" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:47.978432" elapsed="0.003718"/>
</kw>
<msg time="2026-04-18T23:40:47.982241" level="INFO">${output} = 1</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-18T23:40:47.600906" elapsed="0.381360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:47.982719" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:47.982450" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:47.982807" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:47.982960" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:47.599568" elapsed="0.383417"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:47.983050" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:40:47.983204" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:47.597512" elapsed="0.385717"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:47.983850" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:47.983445" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:47.596454" elapsed="0.387618">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:49.987679" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:49.986839" elapsed="0.000911"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:49.989789" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:49.989189" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:49.991792" 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-18T23:40:49.992021" 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-18T23:40:49.991400" elapsed="0.000714"/>
</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-18T23:40:49.998553" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:49.998081" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:49.998008" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:50.000296" 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-18T23:40:50.000537" 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-18T23:40:49.999837" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:50.002157" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:50.001605" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:50.003936" level="INFO">${conn_id} = 61</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:50.003232" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:50.006339" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:50.006416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:50.006052" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:50.006649" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:50.007958" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:50.373465" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:50.007626" elapsed="0.366006"/>
</kw>
<msg time="2026-04-18T23:40:50.373723" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:50.007217" elapsed="0.366602"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:50.005298" elapsed="0.368841"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:50.375626" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:50.398672" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:50.399219" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:50.399550" 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-18T23:40:50.375226" elapsed="0.024560"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:50.401975" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:50.404845" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:50.404221" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:50.405580" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:50.405247" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:50.405163" elapsed="0.000604"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:50.406282" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-18T23:40:50.405973" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:50.405902" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:50.406617" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:50.413436" elapsed="0.000465"/>
</kw>
<kw name="Open 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-18T23:40:50.414218" elapsed="0.000386"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:50.414875" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:50.408730" elapsed="0.006452"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:49.996469" elapsed="0.419016"/>
</kw>
<msg time="2026-04-18T23:40:50.415940" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:49.995021" elapsed="0.420997"/>
</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-18T23:40:49.993788" elapsed="0.422363"/>
</kw>
<msg time="2026-04-18T23:40:50.416207" 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-18T23:40:49.992472" elapsed="0.423794"/>
</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-18T23:40:50.419294" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:40:50.419785" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:50.420096" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:50.416556" elapsed="0.003691"/>
</kw>
<msg time="2026-04-18T23:40:50.420339" level="INFO">${output} = 1</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-18T23:40:49.990358" elapsed="0.430006"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:50.420787" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:50.420540" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:50.420873" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:50.421038" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:49.988245" elapsed="0.432820"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:50.421112" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:50.421258" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:49.985992" elapsed="0.435291"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:50.421829" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:50.421438" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:49.984902" elapsed="0.437114">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:52.425639" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:52.424849" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:52.427855" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:52.427260" elapsed="0.000653"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:52.429618" 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-18T23:40:52.429768" 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-18T23:40:52.429370" elapsed="0.000437"/>
</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-18T23:40:52.435709" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:52.435003" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:52.434608" elapsed="0.001307"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:52.437852" 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-18T23:40:52.438151" 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-18T23:40:52.437406" elapsed="0.000858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:52.439855" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:52.439298" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:52.441750" level="INFO">${conn_id} = 64</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:52.441042" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:52.444364" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:52.444443" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:52.443865" elapsed="0.000602"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:52.444717" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:52.446009" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:52.738572" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:52.445681" elapsed="0.293042"/>
</kw>
<msg time="2026-04-18T23:40:52.738807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:52.445313" elapsed="0.293583"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:52.443084" elapsed="0.296119"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:52.740761" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:52.763103" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:52.763457" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:52.763680" 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-18T23:40:52.740308" elapsed="0.023514"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:52.765411" elapsed="0.000595"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:52.767610" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:52.766877" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:52.768468" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:52.768006" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:52.767920" elapsed="0.000798"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:52.769306" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-18T23:40:52.768942" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:52.768866" elapsed="0.000682"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:52.769673" elapsed="0.000068"/>
</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-18T23:40:52.776797" elapsed="0.000602"/>
</kw>
<kw name="Open 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-18T23:40:52.777610" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:52.777972" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:52.771690" elapsed="0.006506"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:52.432648" elapsed="0.345769"/>
</kw>
<msg time="2026-04-18T23:40:52.778719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:52.431630" elapsed="0.347149"/>
</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-18T23:40:52.430819" elapsed="0.348041"/>
</kw>
<msg time="2026-04-18T23:40:52.778901" 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-18T23:40:52.430061" elapsed="0.348886"/>
</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-18T23:40:52.782001" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:40:52.782496" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:52.782791" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:52.779253" elapsed="0.003683"/>
</kw>
<msg time="2026-04-18T23:40:52.783064" level="INFO">${output} = 1</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-18T23:40:52.428424" elapsed="0.354668"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:52.783519" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:52.783272" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:52.783606" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:40:52.783760" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:52.426333" elapsed="0.357452"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:52.783832" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:52.783977" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:52.423974" elapsed="0.360027"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:52.784585" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:52.784177" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:52.422829" elapsed="0.361980">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:54.788334" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:54.787570" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:54.790560" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:54.789926" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:54.792423" 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-18T23:40:54.792784" 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-18T23:40:54.792083" elapsed="0.000760"/>
</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-18T23:40:54.797783" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:54.797287" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:54.796994" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:54.799354" 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-18T23:40:54.799593" 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-18T23:40:54.798901" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:54.801268" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:54.800689" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:54.803109" level="INFO">${conn_id} = 67</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:54.802392" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:54.805823" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:54.805902" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:54.805458" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:54.806166" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:54.807659" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:55.122275" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:54.807334" elapsed="0.315106"/>
</kw>
<msg time="2026-04-18T23:40:55.122529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:54.806723" elapsed="0.315900"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:54.804435" elapsed="0.318475"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:55.124448" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:55.147296" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:55.147794" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:55.148167" 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-18T23:40:55.124019" elapsed="0.024359"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:55.150614" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:55.153796" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:55.152759" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:55.154919" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:55.154414" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:55.154278" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:55.155996" elapsed="0.000163"/>
</return>
<status status="PASS" start="2026-04-18T23:40:55.155557" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:55.155452" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:55.156569" elapsed="0.000081"/>
</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-18T23:40:55.162474" elapsed="0.000344"/>
</kw>
<kw name="Open 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-18T23:40:55.163132" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:55.163507" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:55.158984" elapsed="0.004736"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:54.795668" elapsed="0.368276"/>
</kw>
<msg time="2026-04-18T23:40:55.164274" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:54.794965" elapsed="0.369370"/>
</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-18T23:40:54.794429" elapsed="0.369989"/>
</kw>
<msg time="2026-04-18T23:40:55.164460" 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-18T23:40:54.793253" elapsed="0.371254"/>
</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-18T23:40:55.167557" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:40:55.168046" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:55.168416" 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-18T23:40:55.164799" elapsed="0.003764"/>
</kw>
<msg time="2026-04-18T23:40:55.168653" level="INFO">${output} = 1</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-18T23:40:54.791134" elapsed="0.377544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:55.169204" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:55.168856" elapsed="0.000393"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:55.169291" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:40:55.169450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:54.788922" elapsed="0.380554"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:55.169522" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:55.169680" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:54.786728" elapsed="0.382977"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:55.170281" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:55.169864" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:54.785681" elapsed="0.384791">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:57.173982" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:57.173242" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:57.176168" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:57.175533" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:57.178138" 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-18T23:40:57.178366" 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-18T23:40:57.177769" elapsed="0.000655"/>
</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-18T23:40:57.184719" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:57.184213" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:57.182278" elapsed="0.002646"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:57.186468" 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-18T23:40:57.186754" 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-18T23:40:57.185951" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:57.188415" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:57.187845" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:57.190390" level="INFO">${conn_id} = 70</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:40:57.189586" elapsed="0.000918"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:57.192965" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:57.193262" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:57.192649" elapsed="0.000643"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:57.193518" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:57.194898" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:57.546735" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:57.194551" elapsed="0.352350"/>
</kw>
<msg time="2026-04-18T23:40:57.546987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:57.194131" elapsed="0.352958"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:57.191746" elapsed="0.355664"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:57.549010" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:57.571650" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:57.572235" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:57.572715" 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-18T23:40:57.548593" elapsed="0.024483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:57.575873" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:57.579280" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:57.578499" elapsed="0.000924"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:57.579856" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:57.579600" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:57.579536" elapsed="0.000461"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:40:57.580381" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-18T23:40:57.580168" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:57.580117" elapsed="0.000438"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:57.580639" 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-18T23:40:57.585569" 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-18T23:40:57.586142" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:57.586511" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:57.582064" elapsed="0.004696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:57.180960" elapsed="0.406033"/>
</kw>
<msg time="2026-04-18T23:40:57.587395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:57.180284" elapsed="0.407180"/>
</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-18T23:40:57.179717" elapsed="0.407831"/>
</kw>
<msg time="2026-04-18T23:40:57.587590" 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-18T23:40:57.178833" elapsed="0.408804"/>
</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-18T23:40:57.590830" 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-18T23:40:57.591345" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:57.591644" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:40:57.587938" elapsed="0.003876"/>
</kw>
<msg time="2026-04-18T23:40:57.591906" level="INFO">${output} = 1</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-18T23:40:57.176719" elapsed="0.415213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:57.592400" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:57.592146" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:57.592490" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:40:57.592644" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:57.174569" elapsed="0.418101"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:57.592717" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:40:57.592863" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:57.172405" elapsed="0.420483"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:57.593548" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:57.593140" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:57.171329" elapsed="0.422409">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:40:59.597659" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:40:59.596892" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:40:59.599800" level="INFO">${member_ip} = 10.30.171.206</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-18T23:40:59.599149" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:59.601230" 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-18T23:40:59.601372" 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-18T23:40:59.600990" elapsed="0.000419"/>
</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-18T23:40:59.607191" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:40:59.606385" elapsed="0.000925"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:59.606306" elapsed="0.001087"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:59.609447" 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-18T23:40:59.609694" 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-18T23:40:59.608739" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:59.611364" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:59.610788" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:40:59.613339" 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-18T23:40:59.612555" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:40:59.615740" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:40:59.615818" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:40:59.615439" 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-18T23:40:59.616070" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:40:59.617474" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:40:59.922774" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:40:59.616996" elapsed="0.305917"/>
</kw>
<msg time="2026-04-18T23:40:59.922995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:59.616635" elapsed="0.306471"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:40:59.614642" elapsed="0.308732"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:40:59.924866" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:40:59.947606" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:40:59.948346" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:40:59.948683" 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-18T23:40:59.924486" elapsed="0.024411"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:59.951335" elapsed="0.001029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:59.953967" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:59.953270" elapsed="0.000874"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:59.954774" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:40:59.954401" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:59.954311" 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-18T23:40:59.955542" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-04-18T23:40:59.955242" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-18T23:40:59.955150" elapsed="0.000655"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:40:59.955925" elapsed="0.000055"/>
</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-18T23:40:59.963166" elapsed="0.000570"/>
</kw>
<kw name="Open 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-18T23:40:59.964092" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:59.964577" 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-18T23:40:59.958018" elapsed="0.006770"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:40:59.604399" elapsed="0.360614"/>
</kw>
<msg time="2026-04-18T23:40:59.965486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:40:59.603201" elapsed="0.362351"/>
</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-18T23:40:59.602364" elapsed="0.363273"/>
</kw>
<msg time="2026-04-18T23:40:59.965679" 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-18T23:40:59.601630" elapsed="0.364096"/>
</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-18T23:40:59.968827" elapsed="0.000361"/>
</kw>
<kw name="Open 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-18T23:40:59.969354" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:40:59.969650" 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-18T23:40:59.966131" elapsed="0.003665"/>
</kw>
<msg time="2026-04-18T23:40:59.969888" level="INFO">${output} = 1</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-18T23:40:59.600378" elapsed="0.369535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:40:59.970354" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:40:59.970107" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:40:59.970440" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:40:59.970597" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:40:59.598215" elapsed="0.372407"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:40:59.970670" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:40:59.970815" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:40:59.596081" elapsed="0.374758"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:40:59.971440" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:40:59.970996" elapsed="0.000533">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:40:59.594585" elapsed="0.377065">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:01.975191" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:01.974420" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:01.977354" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:01.976714" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:01.978581" 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-18T23:41:01.978723" 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-18T23:41:01.978356" elapsed="0.000404"/>
</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-18T23:41:01.984277" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:01.983624" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:01.983545" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:01.986501" 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-18T23:41:01.986753" 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-18T23:41:01.985798" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:01.988438" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:01.987851" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:01.990296" level="INFO">${conn_id} = 76</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:01.989581" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:01.992831" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:01.992909" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:01.992504" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:01.993164" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:01.994493" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:02.306273" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:40:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:01.994167" elapsed="0.312251"/>
</kw>
<msg time="2026-04-18T23:41:02.306504" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:01.993785" elapsed="0.312809"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:01.991605" elapsed="0.315268"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:02.308398" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:02.331848" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:02.332436" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:02.332797" 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-18T23:41:02.307967" elapsed="0.025045"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:02.335285" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:02.338505" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:02.337479" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:02.339628" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:02.339125" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:02.338966" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:02.340775" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-18T23:41:02.340274" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:02.340166" elapsed="0.001008"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:02.341352" elapsed="0.000082"/>
</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-18T23:41:02.348091" elapsed="0.000463"/>
</kw>
<kw name="Open 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-18T23:41:02.348857" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:02.349369" 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-18T23:41:02.343371" elapsed="0.006284"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:01.981667" elapsed="0.368293"/>
</kw>
<msg time="2026-04-18T23:41:02.350481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:01.980581" elapsed="0.369984"/>
</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-18T23:41:01.979796" elapsed="0.370883"/>
</kw>
<msg time="2026-04-18T23:41:02.350735" 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-18T23:41:01.979016" elapsed="0.371783"/>
</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-18T23:41:02.354675" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:41:02.355166" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:02.355460" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:02.351222" elapsed="0.004386"/>
</kw>
<msg time="2026-04-18T23:41:02.355760" level="INFO">${output} = 1</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-18T23:41:01.977755" elapsed="0.378031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:02.356234" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:02.355967" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:02.356322" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:02.356475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:01.975718" elapsed="0.380782"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:02.356547" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:02.356706" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:01.973568" elapsed="0.383163"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:02.357302" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:02.356887" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:01.972505" elapsed="0.384985">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:04.360890" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:04.360157" elapsed="0.000803"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:04.363080" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:04.362430" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:04.365079" 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-18T23:41:04.365309" 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-18T23:41:04.364723" elapsed="0.000645"/>
</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-18T23:41:04.369877" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:04.369399" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:04.369341" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:04.371693" 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-18T23:41:04.371937" 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-18T23:41:04.371007" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:04.373676" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:04.373057" elapsed="0.000729"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:04.375502" 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-18T23:41:04.374776" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:04.377966" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:04.378060" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:04.377677" 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-18T23:41:04.378302" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:04.379566" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:04.696876" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:04.379244" elapsed="0.317893"/>
</kw>
<msg time="2026-04-18T23:41:04.697226" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:04.378871" elapsed="0.318446"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:04.376812" elapsed="0.320778"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:04.699124" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:04.722212" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:04.722731" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:04.723145" 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-18T23:41:04.698697" elapsed="0.024692"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:04.726077" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:04.729761" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:04.728523" elapsed="0.001495"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:04.730815" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:04.730427" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:04.730295" 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-18T23:41:04.731509" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-18T23:41:04.731228" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:04.731160" elapsed="0.000580"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:04.731849" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:04.738916" elapsed="0.000361"/>
</kw>
<kw name="Open 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-18T23:41:04.739584" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:04.739972" 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-18T23:41:04.733838" elapsed="0.006387"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:04.367988" elapsed="0.372466"/>
</kw>
<msg time="2026-04-18T23:41:04.740771" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:04.367316" elapsed="0.373528"/>
</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-18T23:41:04.366765" elapsed="0.374161"/>
</kw>
<msg time="2026-04-18T23:41:04.740966" 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-18T23:41:04.365765" elapsed="0.375248"/>
</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-18T23:41:04.744269" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:04.744772" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:04.745129" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:04.741452" elapsed="0.003828"/>
</kw>
<msg time="2026-04-18T23:41:04.745375" level="INFO">${output} = 1</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-18T23:41:04.363759" elapsed="0.381642"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:04.745908" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:04.745608" elapsed="0.000346"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:04.745999" elapsed="0.000050"/>
</return>
<msg time="2026-04-18T23:41:04.746178" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:04.361442" elapsed="0.384761"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:04.746250" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:41:04.746393" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:04.359331" elapsed="0.387087"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:04.747066" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:04.746648" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:04.358302" elapsed="0.388949">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:06.750638" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:06.749858" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:06.752704" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:06.752110" elapsed="0.000653"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:06.754514" 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-18T23:41:06.754783" 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-18T23:41:06.754197" elapsed="0.000645"/>
</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-18T23:41:06.760976" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:06.760300" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:06.759906" elapsed="0.001294"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:06.763345" 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-18T23:41:06.763676" 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-18T23:41:06.762666" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:06.765329" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:06.764775" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:06.767145" level="INFO">${conn_id} = 82</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:06.766410" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:06.769565" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:06.769642" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:06.769282" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:06.769874" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:06.771171" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:07.078974" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:06.770820" elapsed="0.308312"/>
</kw>
<msg time="2026-04-18T23:41:07.079214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:06.770435" elapsed="0.308864"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:06.768528" elapsed="0.311048"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:07.081083" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:07.103600" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:07.103830" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:07.103981" 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-18T23:41:07.080672" elapsed="0.023430"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:07.105082" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:07.106510" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:07.106063" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:07.107055" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:07.106798" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:07.106737" elapsed="0.000453"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:07.107535" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-18T23:41:07.107333" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:07.107286" elapsed="0.000409"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:07.107775" 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-18T23:41:07.112387" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:41:07.112926" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:07.113401" 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-18T23:41:07.109118" elapsed="0.004488"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:06.757915" elapsed="0.355912"/>
</kw>
<msg time="2026-04-18T23:41:07.114139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:06.756917" elapsed="0.357278"/>
</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-18T23:41:06.756131" elapsed="0.358144"/>
</kw>
<msg time="2026-04-18T23:41:07.114315" 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-18T23:41:06.755216" elapsed="0.359145"/>
</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-18T23:41:07.117472" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:07.117942" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:07.118251" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:07.114651" elapsed="0.003753"/>
</kw>
<msg time="2026-04-18T23:41:07.118496" level="INFO">${output} = 1</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-18T23:41:06.753272" elapsed="0.365250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:07.118965" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:07.118703" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:07.119107" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:41:07.119263" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:06.751187" elapsed="0.368102"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:07.119336" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:07.119482" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:06.749060" elapsed="0.370447"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:07.120074" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:07.119664" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:06.748005" elapsed="0.372262">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:09.123755" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:09.122958" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:09.125986" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:09.125386" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:09.127893" 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-18T23:41:09.128153" 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-18T23:41:09.127505" elapsed="0.000710"/>
</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-18T23:41:09.134773" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:09.134291" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:09.133989" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:09.136428" 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-18T23:41:09.136767" 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-18T23:41:09.135933" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:09.138441" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:09.137857" elapsed="0.000697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:09.140302" 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-18T23:41:09.139544" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:09.142809" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:09.142886" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:09.142506" 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-18T23:41:09.143140" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:09.144459" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:09.457293" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:09.144130" elapsed="0.313313"/>
</kw>
<msg time="2026-04-18T23:41:09.457526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:09.143750" elapsed="0.313865"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:09.141702" elapsed="0.316185"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:09.459396" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:09.482121" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:09.482610" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:09.482937" 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-18T23:41:09.458988" elapsed="0.024195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:09.485375" elapsed="0.000869"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:09.488458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:09.487476" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:09.489652" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:09.489057" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:09.488907" elapsed="0.001044"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:09.490766" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-18T23:41:09.490315" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:09.490208" elapsed="0.001062"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:09.491449" elapsed="0.000082"/>
</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-18T23:41:09.496842" elapsed="0.000347"/>
</kw>
<kw name="Open 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-18T23:41:09.497409" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:09.497768" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:09.493514" elapsed="0.004465"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:09.132555" elapsed="0.365665"/>
</kw>
<msg time="2026-04-18T23:41:09.498529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:09.130946" elapsed="0.367639"/>
</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-18T23:41:09.129730" elapsed="0.368937"/>
</kw>
<msg time="2026-04-18T23:41:09.498709" 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-18T23:41:09.128571" elapsed="0.370183"/>
</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-18T23:41:09.501849" 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-18T23:41:09.502347" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:09.502639" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:09.499086" elapsed="0.003701"/>
</kw>
<msg time="2026-04-18T23:41:09.502879" level="INFO">${output} = 1</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-18T23:41:09.126559" elapsed="0.376345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:09.503431" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:09.503183" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:09.503517" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:09.503668" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:09.124438" elapsed="0.379255"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:09.503752" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:41:09.503895" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:09.122156" elapsed="0.381763"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:09.504480" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:09.504089" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:09.121082" elapsed="0.383582">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:11.508337" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:11.507551" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:11.510296" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:11.509852" elapsed="0.000484"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:11.511674" 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-18T23:41:11.511940" 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-18T23:41:11.511430" elapsed="0.000551"/>
</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-18T23:41:11.520167" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:11.519428" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:11.516980" elapsed="0.003407"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:11.522307" 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-18T23:41:11.522564" 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-18T23:41:11.521840" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:11.524292" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:11.523646" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:11.526142" level="INFO">${conn_id} = 88</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:11.525409" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:11.528647" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:11.528729" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:11.528315" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:11.528965" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:11.530279" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:11.855345" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:11.529934" elapsed="0.325587"/>
</kw>
<msg time="2026-04-18T23:41:11.855611" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:11.529563" elapsed="0.326145"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:11.527443" elapsed="0.328556"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:11.857592" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:11.880721" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:11.881346" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:11.881685" 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-18T23:41:11.857171" elapsed="0.024739"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:11.884263" elapsed="0.001004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:11.887602" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:11.886570" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:11.888835" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:11.888239" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:11.888108" elapsed="0.001111"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:11.889902" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-18T23:41:11.889547" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:11.889438" elapsed="0.000821"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:11.890377" elapsed="0.000057"/>
</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-18T23:41:11.897677" 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-18T23:41:11.898353" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:11.898723" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:11.892365" elapsed="0.006570"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:11.514936" elapsed="0.384247"/>
</kw>
<msg time="2026-04-18T23:41:11.899494" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:11.513895" elapsed="0.385661"/>
</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-18T23:41:11.513087" elapsed="0.386552"/>
</kw>
<msg time="2026-04-18T23:41:11.899682" 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-18T23:41:11.512259" elapsed="0.387471"/>
</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-18T23:41:11.902838" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:11.903353" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:11.903657" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:11.900023" elapsed="0.003791"/>
</kw>
<msg time="2026-04-18T23:41:11.903905" level="INFO">${output} = 1</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-18T23:41:11.510738" elapsed="0.393194"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:11.904393" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:11.904126" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:11.904483" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:41:11.904639" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:11.508931" elapsed="0.395734"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:11.904712" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:41:11.904880" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:11.506662" elapsed="0.398244"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:11.905515" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:11.905099" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:11.505521" elapsed="0.400184">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:13.909345" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:13.908573" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:13.911553" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:13.910922" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:13.913409" 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-18T23:41:13.913683" 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-18T23:41:13.913056" elapsed="0.000690"/>
</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-18T23:41:13.919466" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:13.918759" elapsed="0.000913"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:13.918682" elapsed="0.001075"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:13.922180" 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-18T23:41:13.922523" 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-18T23:41:13.921126" elapsed="0.001535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:13.924270" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:13.923706" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:13.926142" 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-18T23:41:13.925342" elapsed="0.000898"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:13.928510" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:13.928587" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:13.928226" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:13.928828" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:13.930303" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:14.247704" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:13.929790" elapsed="0.318069"/>
</kw>
<msg time="2026-04-18T23:41:14.247946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:13.929406" elapsed="0.318649"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:13.927426" elapsed="0.320921"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:14.249888" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:14.272861" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:14.273400" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:14.273725" 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-18T23:41:14.249448" elapsed="0.024536"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:14.276190" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:14.279164" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:14.278381" elapsed="0.000927"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:14.279866" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:14.279539" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:14.279456" elapsed="0.000721"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:14.280683" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:41:14.280398" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:14.280330" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:14.281012" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:14.287413" 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-18T23:41:14.287957" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:14.288334" 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-18T23:41:14.282855" elapsed="0.005685"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:13.916806" elapsed="0.371959"/>
</kw>
<msg time="2026-04-18T23:41:14.289179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:13.915851" elapsed="0.373387"/>
</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-18T23:41:13.915109" elapsed="0.374211"/>
</kw>
<msg time="2026-04-18T23:41:14.289362" 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-18T23:41:13.914130" elapsed="0.375278"/>
</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-18T23:41:14.292501" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:41:14.292976" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:14.293287" 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-18T23:41:14.289698" elapsed="0.003735"/>
</kw>
<msg time="2026-04-18T23:41:14.293524" level="INFO">${output} = 1</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-18T23:41:13.912123" elapsed="0.381425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:14.293984" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:14.293723" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:14.294088" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:41:14.294336" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:13.909913" elapsed="0.384450"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:14.294412" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:14.294558" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:13.907722" elapsed="0.386860"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:14.295188" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:14.294738" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:13.906603" elapsed="0.388772">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:16.299099" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:16.298279" elapsed="0.000895"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:16.301200" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:16.300573" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:16.303022" 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-18T23:41:16.303198" 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-18T23:41:16.302754" elapsed="0.000483"/>
</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-18T23:41:16.308938" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:16.308260" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:16.308174" elapsed="0.000992"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:16.311439" 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-18T23:41:16.311688" 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-18T23:41:16.310655" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:16.313353" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:16.312780" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:16.315338" level="INFO">${conn_id} = 94</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:16.314542" elapsed="0.000894"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:16.317726" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:16.317804" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:16.317422" 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-18T23:41:16.318054" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:16.319473" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:16.664542" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:16.319003" elapsed="0.345736"/>
</kw>
<msg time="2026-04-18T23:41:16.664867" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:16.318613" elapsed="0.346378"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:16.316639" elapsed="0.348780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:16.667182" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:16.689569" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:16.690180" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:16.690541" 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-18T23:41:16.666658" elapsed="0.024104"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:16.693182" elapsed="0.001084"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:16.696562" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:16.695716" elapsed="0.001011"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:16.697497" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:16.696997" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:16.696899" elapsed="0.000821"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:16.698316" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-18T23:41:16.697949" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:16.697873" elapsed="0.000700"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:16.698696" elapsed="0.000065"/>
</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-18T23:41:16.706195" elapsed="0.000487"/>
</kw>
<kw name="Open 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-18T23:41:16.707197" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:16.707735" elapsed="0.000134"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:16.700888" elapsed="0.007088"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:16.306182" elapsed="0.402037"/>
</kw>
<msg time="2026-04-18T23:41:16.708527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:16.305154" elapsed="0.403432"/>
</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-18T23:41:16.304340" elapsed="0.404330"/>
</kw>
<msg time="2026-04-18T23:41:16.708712" 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-18T23:41:16.303538" elapsed="0.405220"/>
</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-18T23:41:16.711894" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:41:16.712386" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:16.712681" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:16.709157" elapsed="0.003672"/>
</kw>
<msg time="2026-04-18T23:41:16.712921" level="INFO">${output} = 1</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-18T23:41:16.301732" elapsed="0.411215"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:16.713388" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:16.713139" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:16.713475" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:16.713631" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:16.299639" elapsed="0.414017"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:16.713702" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:16.713848" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:16.297444" elapsed="0.416429"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:16.714487" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:16.714045" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:16.296314" elapsed="0.418379">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:18.717333" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:18.716768" elapsed="0.000616"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:18.718725" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:18.718323" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:18.720055" 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-18T23:41:18.720208" 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-18T23:41:18.719783" elapsed="0.000464"/>
</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-18T23:41:18.725985" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:18.725324" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:18.725231" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:18.727931" 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-18T23:41:18.728211" 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-18T23:41:18.727179" elapsed="0.001133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:18.729897" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:18.729327" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:18.731799" 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-18T23:41:18.731026" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:18.734315" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:18.734394" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:18.733994" 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-18T23:41:18.734656" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:18.736244" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:19.046641" 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 Sat Apr 18 23:40:18 UTC 2026

  System load:  0.32               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:18.735736" elapsed="0.311034"/>
</kw>
<msg time="2026-04-18T23:41:19.046852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:18.735319" elapsed="0.311682"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:18.733201" elapsed="0.314114"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:19.048905" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:19.072094" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:19.072677" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:19.073089" 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-18T23:41:19.048485" elapsed="0.024857"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:19.075727" elapsed="0.001123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:19.079387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:19.078342" elapsed="0.001309"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:19.080673" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:19.080121" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:19.079956" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:19.081406" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-18T23:41:19.081185" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:19.081131" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:19.081702" 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-18T23:41:19.086659" elapsed="0.000339"/>
</kw>
<kw name="Open 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-18T23:41:19.087232" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:19.087588" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:19.083097" elapsed="0.004722"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:18.723101" elapsed="0.364966"/>
</kw>
<msg time="2026-04-18T23:41:19.088377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:18.722074" elapsed="0.366362"/>
</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-18T23:41:18.721268" elapsed="0.367250"/>
</kw>
<msg time="2026-04-18T23:41:19.088559" 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-18T23:41:18.720484" elapsed="0.368122"/>
</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-18T23:41:19.091710" 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-18T23:41:19.092261" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:19.092559" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:19.088912" elapsed="0.003797"/>
</kw>
<msg time="2026-04-18T23:41:19.092932" level="INFO">${output} = 1</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-18T23:41:18.719108" elapsed="0.373853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:19.093421" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:19.093159" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:19.093511" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:19.093666" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:18.717691" elapsed="0.376000"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:19.093739" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:19.093902" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:18.716210" elapsed="0.377718"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:19.094523" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:19.094110" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:18.715399" elapsed="0.379324">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:21.098318" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:21.097532" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:21.100382" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:21.099758" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:21.101843" 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-18T23:41:21.101990" 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-18T23:41:21.101598" elapsed="0.000450"/>
</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-18T23:41:21.108100" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:21.107393" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:21.106961" elapsed="0.001348"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:21.110003" 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-18T23:41:21.110269" 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-18T23:41:21.109554" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:21.111890" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:21.111353" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:21.113716" level="INFO">${conn_id} = 100</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:21.113003" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:21.116150" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:21.116228" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:21.115846" 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-18T23:41:21.116464" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:21.117730" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:21.738153" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:21.117406" elapsed="0.621009"/>
</kw>
<msg time="2026-04-18T23:41:21.738486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:21.117044" elapsed="0.621524"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:21.115090" elapsed="0.623723"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:21.740255" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:21.763147" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:21.763633" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:21.763962" 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-18T23:41:21.739861" elapsed="0.024355"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:21.766444" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:21.769593" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:21.768595" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:21.770672" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:21.770188" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:21.770062" elapsed="0.000899"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:21.771892" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-18T23:41:21.771450" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:21.771343" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:21.772444" 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-18T23:41:21.777975" 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-18T23:41:21.778532" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:21.778887" 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-18T23:41:21.774611" elapsed="0.004547"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:21.104983" elapsed="0.674398"/>
</kw>
<msg time="2026-04-18T23:41:21.779684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:21.103957" elapsed="0.675784"/>
</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-18T23:41:21.103178" elapsed="0.676643"/>
</kw>
<msg time="2026-04-18T23:41:21.779860" 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-18T23:41:21.102386" elapsed="0.677519"/>
</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-18T23:41:21.782872" elapsed="0.000423"/>
</kw>
<kw name="Open 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-18T23:41:21.783458" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:21.783749" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:21.780208" elapsed="0.003686"/>
</kw>
<msg time="2026-04-18T23:41:21.783989" level="INFO">${output} = 1</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-18T23:41:21.100958" elapsed="0.683055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:21.784458" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:21.784211" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:21.784544" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:41:21.784693" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:21.098838" elapsed="0.685880"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:21.784763" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:21.784906" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:21.096686" elapsed="0.688245"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:21.785573" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:21.785160" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:21.095565" elapsed="0.690204">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:23.789348" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:23.788526" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:23.791415" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:23.790974" elapsed="0.000481"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:23.792730" 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-18T23:41:23.792883" 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-18T23:41:23.792478" elapsed="0.000442"/>
</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-18T23:41:23.798717" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:23.798062" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:23.797627" elapsed="0.001296"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:23.800964" 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-18T23:41:23.801347" 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-18T23:41:23.800342" elapsed="0.001147"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:23.803223" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:23.802646" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:23.805123" level="INFO">${conn_id} = 103</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:23.804341" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:23.807528" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:23.807608" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:23.807239" 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-18T23:41:23.807849" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:23.809351" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:24.119587" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:23.808834" elapsed="0.310885"/>
</kw>
<msg time="2026-04-18T23:41:24.119799" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:23.808465" elapsed="0.311415"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:23.806440" elapsed="0.313749"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:24.121663" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:24.144560" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:24.145130" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:24.145480" 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-18T23:41:24.121276" elapsed="0.024416"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:24.147957" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:24.151242" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:24.150249" elapsed="0.001227"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:24.152381" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:24.151837" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:24.151707" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:24.153525" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-18T23:41:24.153002" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:24.152894" elapsed="0.000996"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:24.154287" elapsed="0.000090"/>
</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-18T23:41:24.161160" 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-18T23:41:24.161948" elapsed="0.000359"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:24.162588" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:24.156426" elapsed="0.006457"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:23.795688" elapsed="0.367489"/>
</kw>
<msg time="2026-04-18T23:41:24.163491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:23.794733" elapsed="0.368814"/>
</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-18T23:41:23.793948" elapsed="0.369679"/>
</kw>
<msg time="2026-04-18T23:41:24.163669" 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-18T23:41:23.793185" elapsed="0.370529"/>
</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-18T23:41:24.166774" elapsed="0.000402"/>
</kw>
<kw name="Open 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-18T23:41:24.167344" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:24.167640" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:24.164004" elapsed="0.003790"/>
</kw>
<msg time="2026-04-18T23:41:24.167885" level="INFO">${output} = 1</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-18T23:41:23.791774" elapsed="0.376136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:24.168371" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:24.168111" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:24.168457" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:24.168609" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:23.789971" elapsed="0.378663"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:24.168680" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:41:24.168822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:23.787639" elapsed="0.381207"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:24.169435" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:24.169002" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:23.786603" elapsed="0.383024">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:26.173260" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:26.172463" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:26.175565" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:26.174930" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:26.177454" 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-18T23:41:26.177680" 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-18T23:41:26.177129" elapsed="0.000611"/>
</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-18T23:41:26.184111" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:26.183613" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:26.181838" elapsed="0.002416"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:26.185702" 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-18T23:41:26.185948" 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-18T23:41:26.185252" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:26.187686" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:26.187143" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:26.189482" level="INFO">${conn_id} = 106</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:26.188774" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:26.191927" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:26.192005" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:26.191624" 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-18T23:41:26.192257" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:26.193548" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:26.515161" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:26.193225" elapsed="0.322119"/>
</kw>
<msg time="2026-04-18T23:41:26.515454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:26.192810" elapsed="0.322762"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:26.190824" elapsed="0.325131"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:26.517985" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:26.541184" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:26.541758" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:26.542129" 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-18T23:41:26.517456" elapsed="0.024884"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:26.544604" elapsed="0.001202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:26.548519" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:26.547281" elapsed="0.001502"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:26.549977" elapsed="0.000534"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:26.549250" elapsed="0.001390"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:26.549122" elapsed="0.001655"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:26.552116" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-18T23:41:26.551347" elapsed="0.000925"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:26.551176" elapsed="0.001157"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:26.552415" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:26.557753" elapsed="0.000420"/>
</kw>
<kw name="Open 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-18T23:41:26.558415" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:26.558795" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:26.554157" elapsed="0.004854"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:26.180505" elapsed="0.378798"/>
</kw>
<msg time="2026-04-18T23:41:26.559617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:26.179831" elapsed="0.379851"/>
</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-18T23:41:26.179287" elapsed="0.380478"/>
</kw>
<msg time="2026-04-18T23:41:26.559806" 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-18T23:41:26.178126" elapsed="0.381724"/>
</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-18T23:41:26.563003" elapsed="0.000354"/>
</kw>
<kw name="Open 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-18T23:41:26.563525" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:26.563822" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:26.560297" elapsed="0.003700"/>
</kw>
<msg time="2026-04-18T23:41:26.564126" level="INFO">${output} = 1</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-18T23:41:26.176136" elapsed="0.388016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:26.564646" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:26.564384" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:26.564735" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:41:26.564892" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:26.173935" elapsed="0.390982"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:26.564975" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:41:26.565208" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:26.171588" elapsed="0.393645"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:26.565792" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:26.565390" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:26.170467" elapsed="0.395513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:28.569563" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:28.568785" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:28.571700" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:28.571041" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:28.573555" 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-18T23:41:28.574005" 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-18T23:41:28.573230" elapsed="0.000880"/>
</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-18T23:41:28.579131" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:28.578643" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:28.578587" elapsed="0.000689"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:28.580954" 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-18T23:41:28.581229" 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-18T23:41:28.580292" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:28.582877" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:28.582336" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:28.584721" level="INFO">${conn_id} = 109</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:28.584006" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:28.587170" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:28.587248" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:28.586864" 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-18T23:41:28.587479" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:28.588758" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:28.929212" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:28.588430" elapsed="0.340924"/>
</kw>
<msg time="2026-04-18T23:41:28.929437" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:28.588050" elapsed="0.341472"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:28.586032" elapsed="0.343757"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:28.931309" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:28.954874" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:28.955429" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:28.955766" 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-18T23:41:28.930884" elapsed="0.025092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:28.958286" elapsed="0.000541"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:28.960246" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:28.959626" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:28.960942" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:28.960619" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:28.960541" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:28.961677" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:41:28.961394" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:28.961325" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:28.962036" elapsed="0.000076"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:28.967899" elapsed="0.000353"/>
</kw>
<kw name="Open 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-18T23:41:28.968522" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:28.968881" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:28.963908" elapsed="0.005228"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:28.577267" elapsed="0.392093"/>
</kw>
<msg time="2026-04-18T23:41:28.969664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:28.576547" elapsed="0.393173"/>
</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-18T23:41:28.575714" elapsed="0.394088"/>
</kw>
<msg time="2026-04-18T23:41:28.969843" 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-18T23:41:28.574474" elapsed="0.395415"/>
</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-18T23:41:28.972946" elapsed="0.000419"/>
</kw>
<kw name="Open 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-18T23:41:28.973531" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:28.973826" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:28.970240" elapsed="0.003736"/>
</kw>
<msg time="2026-04-18T23:41:28.974085" level="INFO">${output} = 1</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-18T23:41:28.572278" elapsed="0.401834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:28.974569" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:28.974317" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:28.974658" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:28.974813" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:28.570118" elapsed="0.404720"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:28.974885" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:28.975034" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:28.567944" elapsed="0.407129"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:28.975626" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:28.975233" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:28.566846" elapsed="0.408959">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:30.979428" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:30.978668" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:30.981601" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:30.980918" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:30.983474" 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-18T23:41:30.983702" 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-18T23:41:30.983132" elapsed="0.000630"/>
</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-18T23:41:30.989707" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:30.988984" elapsed="0.000928"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:30.988906" elapsed="0.001091"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:30.992375" 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-18T23:41:30.992719" 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-18T23:41:30.991413" elapsed="0.001445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:30.994889" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:30.994341" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:30.996728" level="INFO">${conn_id} = 112</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:30.996016" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:30.999242" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:30.999322" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:30.998858" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:30.999558" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:31.000815" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:31.320311" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:31.000491" elapsed="0.319967"/>
</kw>
<msg time="2026-04-18T23:41:31.320544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:31.000128" elapsed="0.320505"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:30.998075" elapsed="0.322847"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:31.322483" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:31.345753" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:31.346479" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:31.346836" 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-18T23:41:31.322076" elapsed="0.025031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:31.349638" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:31.353226" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:31.352140" elapsed="0.001395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:31.354537" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:31.353964" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:31.353827" elapsed="0.001041"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:31.355956" elapsed="0.000166"/>
</return>
<status status="PASS" start="2026-04-18T23:41:31.355412" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:31.355297" elapsed="0.001034"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:31.356415" 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-18T23:41:31.361416" elapsed="0.000353"/>
</kw>
<kw name="Open 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-18T23:41:31.361988" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:31.362412" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:31.357818" elapsed="0.004835"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:30.987089" elapsed="0.375822"/>
</kw>
<msg time="2026-04-18T23:41:31.363431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:30.986137" elapsed="0.377367"/>
</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-18T23:41:30.985363" elapsed="0.378229"/>
</kw>
<msg time="2026-04-18T23:41:31.363635" 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-18T23:41:30.984148" elapsed="0.379536"/>
</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-18T23:41:31.366913" elapsed="0.000402"/>
</kw>
<kw name="Open 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-18T23:41:31.367490" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:31.367808" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:31.364027" elapsed="0.003986"/>
</kw>
<msg time="2026-04-18T23:41:31.368155" level="INFO">${output} = 1</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-18T23:41:30.982178" elapsed="0.386005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:31.368664" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:31.368391" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:31.368758" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:41:31.368917" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:30.979945" elapsed="0.388999"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:31.368992" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:31.369161" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:30.977832" elapsed="0.391356"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:31.369779" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:31.369356" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:30.976726" elapsed="0.393249">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:33.373439" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:33.372657" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:33.374819" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:33.374422" elapsed="0.000435"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:33.376048" 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-18T23:41:33.376218" 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-18T23:41:33.375800" elapsed="0.000456"/>
</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-18T23:41:33.382046" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:33.381246" elapsed="0.000937"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:33.381161" elapsed="0.001109"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:33.383989" 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-18T23:41:33.384259" 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-18T23:41:33.383297" elapsed="0.001060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:33.385988" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:33.385330" elapsed="0.000796"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:33.387985" 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-18T23:41:33.387249" elapsed="0.000929"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:33.390593" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:33.390674" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:33.390301" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:33.390919" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:33.392453" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:33.733962" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:33.391892" elapsed="0.342336"/>
</kw>
<msg time="2026-04-18T23:41:33.734381" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:33.391529" elapsed="0.343005"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:33.389429" elapsed="0.345669"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:33.737985" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:33.761669" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:33.762219" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:33.762554" 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-18T23:41:33.737446" elapsed="0.025319"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:33.765011" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:33.768505" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:33.767428" elapsed="0.001355"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:33.769920" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:33.769311" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:33.769142" elapsed="0.001163"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:33.770802" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:41:33.770550" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:33.770494" elapsed="0.000522"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:33.771156" 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-18T23:41:33.776779" 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-18T23:41:33.777558" elapsed="0.000265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:33.778112" 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-18T23:41:33.772777" elapsed="0.005616"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:33.379133" elapsed="0.399555"/>
</kw>
<msg time="2026-04-18T23:41:33.779121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:33.378101" elapsed="0.401106"/>
</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-18T23:41:33.377287" elapsed="0.402034"/>
</kw>
<msg time="2026-04-18T23:41:33.779377" 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-18T23:41:33.376489" elapsed="0.402951"/>
</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-18T23:41:33.783582" elapsed="0.000407"/>
</kw>
<kw name="Open 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-18T23:41:33.784313" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:33.784711" elapsed="0.000129"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:33.779909" elapsed="0.004998"/>
</kw>
<msg time="2026-04-18T23:41:33.785035" level="INFO">${output} = 1</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-18T23:41:33.375196" elapsed="0.409897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:33.785555" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:33.785297" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:33.785646" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:41:33.785805" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:33.373792" elapsed="0.412042"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:33.785948" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:41:33.786134" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:33.371825" elapsed="0.414335"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:33.786825" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:33.786323" elapsed="0.000596">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:33.370778" elapsed="0.416314">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:35.790704" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:35.789885" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:35.792890" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:35.792274" elapsed="0.000678"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:35.794768" 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-18T23:41:35.794913" 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-18T23:41:35.794541" elapsed="0.000410"/>
</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-18T23:41:35.800686" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:35.800011" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:35.799638" elapsed="0.001242"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:35.802852" 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-18T23:41:35.803124" 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-18T23:41:35.802369" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:35.804738" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:35.804185" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:35.806574" level="INFO">${conn_id} = 118</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:35.805827" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:35.808963" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:35.809056" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:35.808679" 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-18T23:41:35.809300" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:35.810669" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:36.132890" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:35.810342" elapsed="0.322714"/>
</kw>
<msg time="2026-04-18T23:41:36.133142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:35.809943" elapsed="0.323285"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:35.807907" elapsed="0.325612"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:36.135100" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:36.158510" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:36.159017" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:36.159457" 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-18T23:41:36.134647" elapsed="0.025039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:36.161928" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:36.164974" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:36.164237" elapsed="0.000919"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:36.165775" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:36.165422" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:36.165331" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:36.166535" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-18T23:41:36.166217" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:36.166146" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:36.166895" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:36.173702" 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-18T23:41:36.174284" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:36.174662" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:36.169031" elapsed="0.005847"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:35.797709" elapsed="0.377416"/>
</kw>
<msg time="2026-04-18T23:41:36.175440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:35.796738" elapsed="0.378760"/>
</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-18T23:41:35.795938" elapsed="0.379644"/>
</kw>
<msg time="2026-04-18T23:41:36.175657" 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-18T23:41:35.795206" elapsed="0.380504"/>
</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-18T23:41:36.178795" elapsed="0.000342"/>
</kw>
<kw name="Open 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-18T23:41:36.179305" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:36.179612" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:36.176005" elapsed="0.003806"/>
</kw>
<msg time="2026-04-18T23:41:36.179965" level="INFO">${output} = 1</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-18T23:41:35.793527" elapsed="0.386464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:36.180497" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:36.180236" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:36.180586" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:41:36.180742" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:35.791280" elapsed="0.389494"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:36.180827" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:41:36.180976" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:35.788925" elapsed="0.392076"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:36.181593" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:36.181184" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:35.787860" elapsed="0.393924">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:38.185384" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:38.184621" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:38.187193" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:38.186793" elapsed="0.000438"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:38.188356" 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-18T23:41:38.188496" 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-18T23:41:38.188141" elapsed="0.000392"/>
</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-18T23:41:38.194164" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:38.193506" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:38.193145" elapsed="0.001267"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:38.195900" 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-18T23:41:38.196156" 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-18T23:41:38.195459" elapsed="0.000797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:38.197764" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:38.197225" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:38.199683" 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-18T23:41:38.198879" elapsed="0.000917"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:38.202026" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:38.202118" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:38.201740" 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-18T23:41:38.202354" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:38.203828" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:38.518209" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:38.203500" elapsed="0.314893"/>
</kw>
<msg time="2026-04-18T23:41:38.518467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:38.202966" elapsed="0.315578"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:38.200976" elapsed="0.317813"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:38.520221" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:38.543410" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:38.543905" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:38.544291" 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-18T23:41:38.519841" elapsed="0.024661"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:38.546716" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:38.548658" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:38.548075" elapsed="0.000725"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:38.549374" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:38.549016" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:38.548940" 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-18T23:41:38.550111" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-18T23:41:38.549758" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:38.549690" elapsed="0.000647"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:38.550465" elapsed="0.000055"/>
</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-18T23:41:38.556611" 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-18T23:41:38.557181" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:38.557533" 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-18T23:41:38.552298" elapsed="0.005439"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:38.191298" elapsed="0.366658"/>
</kw>
<msg time="2026-04-18T23:41:38.558378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:38.190250" elapsed="0.368185"/>
</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-18T23:41:38.189490" elapsed="0.369024"/>
</kw>
<msg time="2026-04-18T23:41:38.558572" 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-18T23:41:38.188759" elapsed="0.369864"/>
</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-18T23:41:38.561636" elapsed="0.000318"/>
</kw>
<kw name="Open 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-18T23:41:38.562164" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:38.562454" 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-18T23:41:38.558908" elapsed="0.003721"/>
</kw>
<msg time="2026-04-18T23:41:38.562720" level="INFO">${output} = 1</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-18T23:41:38.187533" elapsed="0.375212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:38.563188" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:38.562923" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:38.563274" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:38.563423" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:38.185905" elapsed="0.377542"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:38.563492" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:38.563633" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:38.183776" elapsed="0.379881"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:38.564272" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:38.563854" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:38.182707" elapsed="0.381749">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:40.568177" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:40.567403" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:40.570348" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:40.569665" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:40.571638" 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-18T23:41:40.571778" 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-18T23:41:40.571423" elapsed="0.000392"/>
</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-18T23:41:40.579311" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:40.578805" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:40.576562" elapsed="0.002890"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:40.580942" 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-18T23:41:40.581260" 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-18T23:41:40.580465" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:40.582913" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:40.582358" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:40.584821" level="INFO">${conn_id} = 124</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:40.584096" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:40.587312" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:40.587389" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:40.587009" 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-18T23:41:40.587628" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:40.588895" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:40.914481" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:40.588575" elapsed="0.326112"/>
</kw>
<msg time="2026-04-18T23:41:40.914783" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:40.588214" elapsed="0.326673"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:40.586213" elapsed="0.329006"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:40.916766" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:40.939513" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:40.940017" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:40.940411" 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-18T23:41:40.916358" elapsed="0.024266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:40.942954" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:40.946008" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:40.945179" elapsed="0.001050"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:40.946790" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:40.946459" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:40.946381" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:40.947493" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-18T23:41:40.947211" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:40.947141" elapsed="0.000577"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:40.947829" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:40.954443" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:41:40.954986" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:40.955364" 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-18T23:41:40.949738" elapsed="0.005832"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:40.574659" elapsed="0.381132"/>
</kw>
<msg time="2026-04-18T23:41:40.956118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:40.573613" elapsed="0.382564"/>
</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-18T23:41:40.572763" elapsed="0.383495"/>
</kw>
<msg time="2026-04-18T23:41:40.956299" 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-18T23:41:40.572055" elapsed="0.384289"/>
</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-18T23:41:40.959372" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:41:40.959849" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:40.960160" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:40.956632" elapsed="0.003676"/>
</kw>
<msg time="2026-04-18T23:41:40.960397" level="INFO">${output} = 1</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-18T23:41:40.570811" elapsed="0.389611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:40.960852" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:40.960600" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:40.960938" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:40.961119" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:40.568699" elapsed="0.392445"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:40.961191" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:41:40.961333" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:40.566420" elapsed="0.394937"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:40.961943" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:40.961539" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:40.565340" elapsed="0.396878">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:42.965722" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:42.964949" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:42.968020" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:42.967376" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:42.969914" 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-18T23:41:42.970178" 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-18T23:41:42.969563" elapsed="0.000676"/>
</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-18T23:41:42.975485" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:42.975002" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:42.974945" elapsed="0.000676"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:42.977324" 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-18T23:41:42.977570" 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-18T23:41:42.976647" elapsed="0.001022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:42.979195" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:42.978634" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:42.981067" level="INFO">${conn_id} = 127</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:42.980359" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:42.983462" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:42.983541" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:42.983170" 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-18T23:41:42.983775" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:42.985190" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:43.290981" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:42.984845" elapsed="0.306326"/>
</kw>
<msg time="2026-04-18T23:41:43.291262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:42.984472" elapsed="0.306890"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:42.982352" elapsed="0.309308"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:43.293237" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:43.316288" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:43.316795" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:43.317181" 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-18T23:41:43.292792" elapsed="0.024604"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:43.319688" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:43.322867" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:43.321831" elapsed="0.001298"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:43.324131" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:43.323479" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:43.323356" elapsed="0.001075"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:43.325234" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-18T23:41:43.324748" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:43.324642" elapsed="0.000942"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:43.325763" elapsed="0.000082"/>
</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-18T23:41:43.331168" elapsed="0.000337"/>
</kw>
<kw name="Open 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-18T23:41:43.331720" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:43.332098" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:43.327725" elapsed="0.004584"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:42.973596" elapsed="0.358933"/>
</kw>
<msg time="2026-04-18T23:41:43.332830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:42.972903" elapsed="0.359985"/>
</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-18T23:41:42.971766" elapsed="0.361204"/>
</kw>
<msg time="2026-04-18T23:41:43.333012" 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-18T23:41:42.970594" elapsed="0.362481"/>
</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-18T23:41:43.336124" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:41:43.336603" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:43.336900" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:43.333366" elapsed="0.003700"/>
</kw>
<msg time="2026-04-18T23:41:43.337163" level="INFO">${output} = 1</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-18T23:41:42.968608" elapsed="0.368580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:43.337622" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:43.337371" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:43.337709" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:41:43.337868" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:42.966421" elapsed="0.371472"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:43.337942" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:43.338192" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:42.964121" elapsed="0.374097"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:43.338792" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:43.338389" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:42.962978" elapsed="0.376009">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:45.342729" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:45.341919" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:45.344980" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:45.344328" elapsed="0.000749"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:45.347019" 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-18T23:41:45.347519" 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-18T23:41:45.346671" elapsed="0.000916"/>
</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-18T23:41:45.352790" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:45.352324" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:45.352267" elapsed="0.000666"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:45.354647" 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-18T23:41:45.354894" 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-18T23:41:45.353948" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:45.356554" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:45.355990" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:45.358397" level="INFO">${conn_id} = 130</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:45.357678" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:45.360856" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:45.360933" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:45.360567" 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-18T23:41:45.361200" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:45.362462" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:45.690077" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:45.362137" elapsed="0.328119"/>
</kw>
<msg time="2026-04-18T23:41:45.690351" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:45.361757" elapsed="0.328698"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:45.359717" elapsed="0.331096"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:45.692494" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:45.715266" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:45.715720" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:45.715978" 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-18T23:41:45.691972" elapsed="0.024292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:45.718644" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:45.722389" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:45.721257" elapsed="0.001362"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:45.723708" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:45.723094" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:45.722855" elapsed="0.001089"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:45.724331" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-18T23:41:45.724117" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:45.724066" elapsed="0.000441"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:45.724654" elapsed="0.000051"/>
</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-18T23:41:45.729836" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:45.730637" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:45.731081" 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-18T23:41:45.726302" elapsed="0.005000"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:45.350919" elapsed="0.380621"/>
</kw>
<msg time="2026-04-18T23:41:45.731855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:45.350242" elapsed="0.381684"/>
</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-18T23:41:45.349390" elapsed="0.382620"/>
</kw>
<msg time="2026-04-18T23:41:45.732071" 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-18T23:41:45.347973" elapsed="0.384148"/>
</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-18T23:41:45.735258" elapsed="0.000325"/>
</kw>
<kw name="Open 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-18T23:41:45.735751" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:45.736066" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:45.732417" elapsed="0.003802"/>
</kw>
<msg time="2026-04-18T23:41:45.736316" level="INFO">${output} = 1</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-18T23:41:45.345625" elapsed="0.390716"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:45.736829" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:45.736568" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:45.736917" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:41:45.737108" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:45.343319" elapsed="0.393815"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:45.737182" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:45.737329" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:45.340975" elapsed="0.396379"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:45.737939" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:45.737514" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:45.339855" elapsed="0.398364">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:47.741886" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:47.741144" elapsed="0.000812"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:47.744117" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:47.743537" elapsed="0.000621"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:47.745361" 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-18T23:41:47.745511" 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-18T23:41:47.745114" elapsed="0.000435"/>
</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-18T23:41:47.751348" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:47.750599" elapsed="0.000971"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:47.750499" elapsed="0.001164"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:47.754265" 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-18T23:41:47.754644" 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-18T23:41:47.753171" elapsed="0.001620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:47.756829" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:47.756283" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:47.758674" level="INFO">${conn_id} = 133</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:47.757929" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:47.761180" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:47.761258" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:47.760863" 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-18T23:41:47.761496" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:47.762781" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:48.079082" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:47.762451" elapsed="0.316798"/>
</kw>
<msg time="2026-04-18T23:41:48.079335" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:47.762090" elapsed="0.317331"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:47.760110" elapsed="0.319600"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:48.081339" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:48.103282" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:48.103778" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:48.104178" 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-18T23:41:48.080867" elapsed="0.023552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:48.106873" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:48.109849" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:48.109144" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:48.110703" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:48.110347" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:48.110261" elapsed="0.000656"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:48.111473" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-18T23:41:48.111165" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:48.111089" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:48.111846" elapsed="0.000058"/>
</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-18T23:41:48.118587" elapsed="0.000353"/>
</kw>
<kw name="Open 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-18T23:41:48.119176" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:48.119543" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:48.113981" elapsed="0.005776"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:47.748445" elapsed="0.371552"/>
</kw>
<msg time="2026-04-18T23:41:48.120451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:47.747393" elapsed="0.373125"/>
</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-18T23:41:47.746552" elapsed="0.374051"/>
</kw>
<msg time="2026-04-18T23:41:48.120645" 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-18T23:41:47.745783" elapsed="0.374910"/>
</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-18T23:41:48.123785" 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-18T23:41:48.124315" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:48.124641" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:48.121013" elapsed="0.003779"/>
</kw>
<msg time="2026-04-18T23:41:48.124886" level="INFO">${output} = 1</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-18T23:41:47.744481" elapsed="0.380431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:48.125419" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:48.125156" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:48.125510" elapsed="0.000034"/>
</return>
<msg time="2026-04-18T23:41:48.125685" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:47.742464" elapsed="0.383251"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:48.125772" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:48.125924" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:47.740246" elapsed="0.385704"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:48.126631" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:48.126212" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:47.739003" elapsed="0.387827">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:50.130311" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:50.129555" elapsed="0.000826"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:50.131963" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:50.131564" elapsed="0.000438"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:50.133272" 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-18T23:41:50.133428" 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-18T23:41:50.132970" elapsed="0.000498"/>
</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-18T23:41:50.139835" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:50.139354" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:50.139065" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:50.141465" 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-18T23:41:50.141723" 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-18T23:41:50.140964" elapsed="0.000860"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:50.143529" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:50.142897" elapsed="0.000748"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:50.145457" level="INFO">${conn_id} = 136</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:50.144698" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:50.147951" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:50.148046" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:50.147657" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:50.148390" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:50.149701" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:50.496900" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:50.149370" elapsed="0.347707"/>
</kw>
<msg time="2026-04-18T23:41:50.497166" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:50.148973" elapsed="0.348284"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:50.146821" elapsed="0.350725"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:50.499060" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:50.522267" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:50.522762" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:50.523148" 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-18T23:41:50.498641" elapsed="0.024740"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:50.525621" elapsed="0.001025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:50.528671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:50.527948" elapsed="0.000875"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:50.529495" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:50.529150" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:50.528976" 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-18T23:41:50.530202" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-18T23:41:50.529890" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:50.529822" elapsed="0.000613"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:50.530551" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:50.537464" elapsed="0.000340"/>
</kw>
<kw name="Open 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-18T23:41:50.538014" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:50.538397" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:50.532558" elapsed="0.006050"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:50.136802" elapsed="0.402029"/>
</kw>
<msg time="2026-04-18T23:41:50.539164" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:50.135727" elapsed="0.403502"/>
</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-18T23:41:50.134663" elapsed="0.404649"/>
</kw>
<msg time="2026-04-18T23:41:50.539353" 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-18T23:41:50.133706" elapsed="0.405693"/>
</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-18T23:41:50.542505" elapsed="0.000315"/>
</kw>
<kw name="Open 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-18T23:41:50.542984" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:50.543319" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:50.539771" elapsed="0.003699"/>
</kw>
<msg time="2026-04-18T23:41:50.543563" level="INFO">${output} = 1</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-18T23:41:50.132345" elapsed="0.411243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:50.544093" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:50.543812" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:50.544182" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:41:50.544336" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:50.130881" elapsed="0.413479"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:50.544407" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:41:50.544551" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:50.128731" elapsed="0.415844"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:50.545249" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:50.544749" elapsed="0.000578">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:50.127668" elapsed="0.417834">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:52.549121" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:52.548222" elapsed="0.000978"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:52.551528" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:52.550786" elapsed="0.000808"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:52.553557" 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-18T23:41:52.553701" 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-18T23:41:52.553324" elapsed="0.000415"/>
</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-18T23:41:52.559691" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:52.558996" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:52.558597" elapsed="0.001308"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:52.561799" 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-18T23:41:52.562072" 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-18T23:41:52.561338" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:52.563825" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:52.563270" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:52.565732" level="INFO">${conn_id} = 139</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:52.564982" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:52.568283" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:52.568362" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:52.567971" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:52.568632" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:52.570014" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:52.884899" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:52.569670" elapsed="0.315415"/>
</kw>
<msg time="2026-04-18T23:41:52.885173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:52.569300" elapsed="0.315965"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:52.567173" elapsed="0.318374"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:52.887045" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:52.910002" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:52.910568" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:52.910905" 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-18T23:41:52.886641" elapsed="0.024524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:52.913471" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:52.915813" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:52.915198" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:52.916589" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:52.916212" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:52.916131" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:52.917335" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-18T23:41:52.916999" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:52.916929" elapsed="0.000653"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:52.917702" elapsed="0.000051"/>
</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-18T23:41:52.923747" 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-18T23:41:52.924317" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:52.924702" 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-18T23:41:52.919642" elapsed="0.005277"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:52.556676" elapsed="0.368519"/>
</kw>
<msg time="2026-04-18T23:41:52.925517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:52.555661" elapsed="0.369915"/>
</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-18T23:41:52.554735" elapsed="0.370922"/>
</kw>
<msg time="2026-04-18T23:41:52.925698" 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-18T23:41:52.553983" elapsed="0.371760"/>
</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-18T23:41:52.928914" elapsed="0.000424"/>
</kw>
<kw name="Open 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-18T23:41:52.929511" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:52.929814" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:52.926056" elapsed="0.003907"/>
</kw>
<msg time="2026-04-18T23:41:52.930150" level="INFO">${output} = 1</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-18T23:41:52.552303" elapsed="0.377873"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:52.930621" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:52.930368" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:52.930708" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:41:52.930861" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:52.549696" elapsed="0.381190"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:52.930933" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:41:52.931127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:52.547384" elapsed="0.383769"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:52.931702" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:52.931308" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:52.546341" elapsed="0.385543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:54.937383" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:54.936465" elapsed="0.000991"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:54.939506" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:54.938874" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:54.941430" 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-18T23:41:54.941651" 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-18T23:41:54.941070" elapsed="0.000713"/>
</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-18T23:41:54.949899" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:54.949402" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:54.947008" elapsed="0.003083"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:54.951574" 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-18T23:41:54.951809" 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-18T23:41:54.951140" elapsed="0.000769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:54.953471" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:54.952914" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:54.955273" level="INFO">${conn_id} = 142</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:54.954552" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:54.957683" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:54.957760" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:54.957387" 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-18T23:41:54.957991" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:54.959263" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:55.281843" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:54.958922" elapsed="0.323339"/>
</kw>
<msg time="2026-04-18T23:41:55.282375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:54.958563" elapsed="0.323947"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:54.956611" elapsed="0.326258"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:55.284572" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:55.307870" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:55.308421" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:55.308753" 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-18T23:41:55.284091" elapsed="0.024872"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:55.311694" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:55.314968" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:55.314257" elapsed="0.000898"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:55.315854" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:55.315433" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:55.315339" elapsed="0.000743"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:55.316620" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-18T23:41:55.316316" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:55.316243" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:55.316976" elapsed="0.000209"/>
</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-18T23:41:55.323658" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:55.324227" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:55.324593" 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-18T23:41:55.319250" elapsed="0.005550"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:54.945678" elapsed="0.379341"/>
</kw>
<msg time="2026-04-18T23:41:55.325408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:54.944579" elapsed="0.380888"/>
</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-18T23:41:54.943354" elapsed="0.382196"/>
</kw>
<msg time="2026-04-18T23:41:55.325590" 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-18T23:41:54.942183" elapsed="0.383454"/>
</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-18T23:41:55.328609" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:41:55.329179" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:55.329502" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:41:55.325927" elapsed="0.003724"/>
</kw>
<msg time="2026-04-18T23:41:55.329740" level="INFO">${output} = 1</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-18T23:41:54.940074" elapsed="0.389691"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:55.330208" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:55.329942" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:55.330295" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:41:55.330447" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:54.937910" elapsed="0.392561"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:55.330518" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:41:55.330663" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:54.935543" elapsed="0.395144"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:55.331328" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:55.330902" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:54.933879" elapsed="0.397659">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:57.335212" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:57.334411" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:57.337394" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:57.336789" elapsed="0.000643"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:57.338558" 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-18T23:41:57.338700" 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-18T23:41:57.338326" elapsed="0.000411"/>
</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-18T23:41:57.343973" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:57.343341" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:57.343264" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:57.345955" 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-18T23:41:57.346218" 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-18T23:41:57.345283" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:57.347838" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:57.347299" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:57.349710" 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-18T23:41:57.348995" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:57.352131" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:57.352209" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:57.351827" 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-18T23:41:57.352491" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:57.353754" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:41:57.674043" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:57.353430" elapsed="0.320750"/>
</kw>
<msg time="2026-04-18T23:41:57.674268" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:57.353068" elapsed="0.321298"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:57.351006" elapsed="0.323622"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:41:57.676129" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:41:57.699126" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:41:57.699635" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:41:57.699996" 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-18T23:41:57.675724" elapsed="0.024541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:57.702568" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:57.705767" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:57.704707" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:57.706878" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:41:57.706383" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:57.706259" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:41:57.707981" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-18T23:41:57.707541" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:57.707433" elapsed="0.000935"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:41:57.708540" elapsed="0.000084"/>
</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-18T23:41:57.713859" 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-18T23:41:57.714438" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:57.714798" 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-18T23:41:57.710384" elapsed="0.004622"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:57.341448" elapsed="0.373862"/>
</kw>
<msg time="2026-04-18T23:41:57.715628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:57.340495" elapsed="0.375192"/>
</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-18T23:41:57.339711" elapsed="0.376060"/>
</kw>
<msg time="2026-04-18T23:41:57.715813" 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-18T23:41:57.338964" elapsed="0.376897"/>
</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-18T23:41:57.719004" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:41:57.719503" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:41:57.719797" 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-18T23:41:57.716180" elapsed="0.003764"/>
</kw>
<msg time="2026-04-18T23:41:57.720048" level="INFO">${output} = 1</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-18T23:41:57.337732" elapsed="0.382342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:57.720504" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:57.720257" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:41:57.720590" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:41:57.720741" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:57.335751" elapsed="0.385014"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:41:57.720844" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:41:57.720992" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:57.333564" elapsed="0.387452"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:41:57.721596" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:41:57.721196" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:57.332483" elapsed="0.389309">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:41:59.725477" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:41:59.724707" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:41:59.727737" level="INFO">${member_ip} = 10.30.171.206</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-18T23:41:59.727127" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:59.729615" 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-18T23:41:59.729844" 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-18T23:41:59.729257" elapsed="0.000647"/>
</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-18T23:41:59.734567" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:41:59.734097" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-18T23:41:59.734024" elapsed="0.000680"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:59.736410" 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-18T23:41:59.736655" 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-18T23:41:59.735719" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:41:59.738319" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:41:59.737744" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:41:59.740134" level="INFO">${conn_id} = 148</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:41:59.739423" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:41:59.742603" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:41:59.742681" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:41:59.742315" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:59.742917" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:41:59.744314" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:00.052104" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:41:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:41:59.743973" elapsed="0.308210"/>
</kw>
<msg time="2026-04-18T23:42:00.052241" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:59.743615" elapsed="0.308693"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:41:59.741451" elapsed="0.311086"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:00.053854" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:00.076141" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:00.076450" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:00.076656" 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-18T23:42:00.053531" elapsed="0.023255"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:00.078173" elapsed="0.000538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:00.080074" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:00.079488" elapsed="0.000728"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:00.080792" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:00.080425" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:00.080352" elapsed="0.000629"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:00.081481" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-18T23:42:00.081201" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:00.081133" elapsed="0.000564"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:00.081810" elapsed="0.000051"/>
</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-18T23:42:00.088231" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:00.088822" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:00.089184" 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-18T23:42:00.083658" elapsed="0.005731"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:41:59.732682" elapsed="0.356924"/>
</kw>
<msg time="2026-04-18T23:42:00.089904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:41:59.731990" elapsed="0.357969"/>
</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-18T23:41:59.731454" elapsed="0.358675"/>
</kw>
<msg time="2026-04-18T23:42:00.090172" 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-18T23:41:59.730286" elapsed="0.359932"/>
</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-18T23:42:00.093177" elapsed="0.000309"/>
</kw>
<kw name="Open 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-18T23:42:00.093649" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:00.093942" elapsed="0.000188"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:00.090503" elapsed="0.003680"/>
</kw>
<msg time="2026-04-18T23:42:00.094272" level="INFO">${output} = 1</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-18T23:41:59.728314" elapsed="0.365983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:00.094718" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:00.094470" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:00.094804" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:00.094954" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:41:59.726164" elapsed="0.368815"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:00.095039" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:42:00.095187" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:41:59.723841" elapsed="0.371371"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:00.095787" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:00.095396" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:41:59.722685" elapsed="0.373286">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:02.099532" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:02.098760" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:02.101707" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:02.101108" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:02.103591" 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-18T23:42:02.103960" 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-18T23:42:02.103252" elapsed="0.000770"/>
</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-18T23:42:02.109732" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:02.108885" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:02.108808" elapsed="0.001123"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:02.112334" 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-18T23:42:02.112651" 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-18T23:42:02.111344" elapsed="0.001407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:02.114335" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:02.113775" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:02.116185" 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-18T23:42:02.115437" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:02.118674" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:02.118751" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:02.118390" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:02.118982" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:02.120481" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:02.476585" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:02.120116" elapsed="0.356761"/>
</kw>
<msg time="2026-04-18T23:42:02.477101" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:02.119694" elapsed="0.357607"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:02.117613" elapsed="0.360367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:02.481372" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:02.504195" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:02.504545" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:02.504769" 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-18T23:42:02.480816" elapsed="0.024093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:02.506406" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:02.508508" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:02.507833" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:02.509260" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:02.508898" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:02.508813" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:02.509973" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-18T23:42:02.509673" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:02.509600" elapsed="0.000661"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:02.510378" elapsed="0.000055"/>
</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-18T23:42:02.516391" elapsed="0.000355"/>
</kw>
<kw name="Open 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-18T23:42:02.517090" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:02.517471" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:02.512494" elapsed="0.005198"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:02.106924" elapsed="0.410996"/>
</kw>
<msg time="2026-04-18T23:42:02.518358" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:02.105983" elapsed="0.412438"/>
</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-18T23:42:02.105246" elapsed="0.413260"/>
</kw>
<msg time="2026-04-18T23:42:02.518550" 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-18T23:42:02.104461" elapsed="0.414137"/>
</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-18T23:42:02.521665" elapsed="0.000325"/>
</kw>
<kw name="Open 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-18T23:42:02.522239" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:02.522541" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:02.518916" elapsed="0.003775"/>
</kw>
<msg time="2026-04-18T23:42:02.522784" level="INFO">${output} = 1</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-18T23:42:02.102276" elapsed="0.420534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:02.523275" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:02.523007" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:02.523364" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:02.523519" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:02.100121" elapsed="0.423424"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:02.523592" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:02.523738" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:02.097922" elapsed="0.425840"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:02.524369" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:02.523922" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:02.096836" elapsed="0.427731">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:04.528310" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:04.527508" elapsed="0.000876"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:04.530196" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:04.529800" elapsed="0.000433"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:04.531360" 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-18T23:42:04.531499" 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-18T23:42:04.531131" elapsed="0.000404"/>
</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-18T23:42:04.537136" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:04.536472" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:04.536096" elapsed="0.001335"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:04.539432" 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-18T23:42:04.539768" 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-18T23:42:04.538790" elapsed="0.001115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:04.541920" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:04.541293" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:04.543767" level="INFO">${conn_id} = 154</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:04.543004" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:04.546165" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:04.546242" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:04.545868" 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-18T23:42:04.546475" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:04.547848" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:04.857134" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:04.547524" elapsed="0.309766"/>
</kw>
<msg time="2026-04-18T23:42:04.857402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:04.547164" elapsed="0.310335"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:04.545081" elapsed="0.312698"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:04.859281" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:04.882186" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:04.882677" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:04.883003" 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-18T23:42:04.858871" elapsed="0.024386"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:04.885464" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:04.888619" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:04.887605" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:04.889777" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:04.889227" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:04.889102" elapsed="0.000997"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:04.890863" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-18T23:42:04.890421" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:04.890316" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:04.891424" elapsed="0.000082"/>
</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-18T23:42:04.897419" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:04.897966" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:04.898341" 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-18T23:42:04.894051" elapsed="0.004496"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:04.534242" elapsed="0.364534"/>
</kw>
<msg time="2026-04-18T23:42:04.899184" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:04.533269" elapsed="0.365974"/>
</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-18T23:42:04.532495" elapsed="0.366830"/>
</kw>
<msg time="2026-04-18T23:42:04.899365" 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-18T23:42:04.531756" elapsed="0.367654"/>
</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-18T23:42:04.902438" elapsed="0.000315"/>
</kw>
<kw name="Open 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-18T23:42:04.902918" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:04.903231" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:04.899702" elapsed="0.003677"/>
</kw>
<msg time="2026-04-18T23:42:04.903470" level="INFO">${output} = 1</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-18T23:42:04.530533" elapsed="0.372962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:04.903928" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:04.903678" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:04.904016" elapsed="0.000119"/>
</return>
<msg time="2026-04-18T23:42:04.904334" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:04.528860" elapsed="0.375501"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:04.904410" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:42:04.904558" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:04.526612" elapsed="0.377972"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:04.905158" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:04.904747" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:04.525420" elapsed="0.379919">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:06.908861" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:06.908110" elapsed="0.000822"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:06.910940" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:06.910346" elapsed="0.000651"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:06.912783" 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-18T23:42:06.913002" 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-18T23:42:06.912451" elapsed="0.000638"/>
</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-18T23:42:06.919660" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:06.918945" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:06.918535" elapsed="0.001330"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:06.921952" 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-18T23:42:06.922379" 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-18T23:42:06.921319" elapsed="0.001205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:06.924102" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:06.923551" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:06.925960" level="INFO">${conn_id} = 157</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:06.925261" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:06.928394" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:06.928470" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:06.928102" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:06.928701" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:06.929954" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:07.244525" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:06.929623" elapsed="0.315137"/>
</kw>
<msg time="2026-04-18T23:42:07.244911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:06.929265" elapsed="0.315846"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:06.927337" elapsed="0.318322"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:07.248906" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:07.271912" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:07.272505" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:07.272853" 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-18T23:42:07.248104" elapsed="0.025028"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:07.275234" elapsed="0.000684"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:07.277517" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:07.276799" elapsed="0.000881"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:07.278345" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:07.277934" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:07.277843" elapsed="0.000731"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:07.279132" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-18T23:42:07.278791" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:07.278718" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:07.279497" elapsed="0.000059"/>
</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-18T23:42:07.286782" elapsed="0.000423"/>
</kw>
<kw name="Open 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-18T23:42:07.287421" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:07.287779" 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-18T23:42:07.281638" elapsed="0.006351"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:06.916588" elapsed="0.371646"/>
</kw>
<msg time="2026-04-18T23:42:07.288540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:06.915537" elapsed="0.373061"/>
</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-18T23:42:06.914733" elapsed="0.373947"/>
</kw>
<msg time="2026-04-18T23:42:07.288721" 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-18T23:42:06.913437" elapsed="0.375330"/>
</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-18T23:42:07.291937" elapsed="0.000344"/>
</kw>
<kw name="Open 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-18T23:42:07.292445" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:07.292743" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:07.289289" elapsed="0.003600"/>
</kw>
<msg time="2026-04-18T23:42:07.292980" level="INFO">${output} = 1</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-18T23:42:06.911497" elapsed="0.381508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:07.293488" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:07.293241" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:07.293574" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:07.293726" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:06.909406" elapsed="0.384345"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:07.293797" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:07.293941" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:06.907287" elapsed="0.386677"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:07.294567" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:07.294135" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:06.906210" elapsed="0.388552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:09.298441" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:09.297655" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:09.300536" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:09.299917" elapsed="0.000676"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:09.302401" 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-18T23:42:09.302622" 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-18T23:42:09.302057" elapsed="0.000621"/>
</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-18T23:42:09.311412" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:09.310654" elapsed="0.000877"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:09.307930" elapsed="0.003690"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:09.313150" 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-18T23:42:09.313396" 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-18T23:42:09.312674" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:09.315017" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:09.314470" elapsed="0.000734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:09.316856" level="INFO">${conn_id} = 160</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:09.316169" elapsed="0.000784"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:09.319264" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:09.319361" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:09.318909" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:09.319595" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:09.320904" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:09.679586" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:09.320583" elapsed="0.359176"/>
</kw>
<msg time="2026-04-18T23:42:09.679852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:09.320226" elapsed="0.359729"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:09.318160" elapsed="0.362152"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:09.681888" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:09.694694" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:09.695306" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:09.695691" 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-18T23:42:09.681481" elapsed="0.014437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:09.698296" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:09.701215" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:09.700460" elapsed="0.000917"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:09.702058" elapsed="0.000057"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:09.701631" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:09.701540" elapsed="0.000740"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:09.702810" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-18T23:42:09.702500" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:09.702427" elapsed="0.000651"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:09.703203" elapsed="0.000057"/>
</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-18T23:42:09.710618" elapsed="0.000519"/>
</kw>
<kw name="Open 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-18T23:42:09.711460" elapsed="0.000286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:09.711963" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:09.705418" elapsed="0.006805"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:09.305982" elapsed="0.406473"/>
</kw>
<msg time="2026-04-18T23:42:09.712770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:09.304955" elapsed="0.407874"/>
</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-18T23:42:09.304144" elapsed="0.408770"/>
</kw>
<msg time="2026-04-18T23:42:09.712956" 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-18T23:42:09.303022" elapsed="0.409981"/>
</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-18T23:42:09.716014" elapsed="0.000347"/>
</kw>
<kw name="Open 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-18T23:42:09.716527" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:09.716819" 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-18T23:42:09.713324" elapsed="0.003647"/>
</kw>
<msg time="2026-04-18T23:42:09.717278" level="INFO">${output} = 1</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-18T23:42:09.301090" elapsed="0.416216"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:09.717731" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:09.717483" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:09.717817" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:09.717968" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:09.298956" elapsed="0.419037"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:09.718064" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:09.718216" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:09.296793" elapsed="0.421448"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:09.718814" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:09.718401" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:09.295606" elapsed="0.423413">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:11.722959" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:11.722164" elapsed="0.000899"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:11.725121" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:11.724631" elapsed="0.000529"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:11.726427" 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-18T23:42:11.726580" 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-18T23:42:11.726134" elapsed="0.000483"/>
</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-18T23:42:11.731994" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:11.731358" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:11.731281" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:11.734626" 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-18T23:42:11.735012" 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-18T23:42:11.733625" elapsed="0.001597"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:11.737314" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:11.736643" elapsed="0.000785"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:11.739376" level="INFO">${conn_id} = 163</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:11.738488" elapsed="0.000988"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:11.741882" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:11.741960" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:11.741582" 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-18T23:42:11.742228" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:11.743634" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:12.051791" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:11.743303" elapsed="0.308716"/>
</kw>
<msg time="2026-04-18T23:42:12.052120" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:11.742790" elapsed="0.309415"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:11.740696" elapsed="0.311781"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:12.053992" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:12.076672" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:12.077276" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:12.077635" 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-18T23:42:12.053600" elapsed="0.024263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:12.080342" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:12.082580" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:12.081930" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:12.083329" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:12.082950" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:12.082871" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:12.083996" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-18T23:42:12.083715" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:12.083647" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:12.084357" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:12.090421" elapsed="0.000335"/>
</kw>
<kw name="Open 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-18T23:42:12.090969" elapsed="0.000296"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:12.091460" 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-18T23:42:12.086288" elapsed="0.005376"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:11.729417" elapsed="0.362465"/>
</kw>
<msg time="2026-04-18T23:42:12.092198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:11.728436" elapsed="0.363823"/>
</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-18T23:42:11.727619" elapsed="0.364720"/>
</kw>
<msg time="2026-04-18T23:42:12.092380" 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-18T23:42:11.726842" elapsed="0.365583"/>
</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-18T23:42:12.095438" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:42:12.095910" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:12.096221" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:12.092735" elapsed="0.003634"/>
</kw>
<msg time="2026-04-18T23:42:12.096458" level="INFO">${output} = 1</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-18T23:42:11.725462" elapsed="0.371020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:12.096941" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:12.096685" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:12.097043" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:12.097199" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:11.723558" elapsed="0.373666"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:12.097271" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:12.097415" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:11.721256" elapsed="0.376183"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:12.098127" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:12.097698" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:11.720011" elapsed="0.378305">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:14.101876" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:14.101091" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:14.104001" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:14.103396" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:14.105869" 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-18T23:42:14.106127" 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-18T23:42:14.105540" elapsed="0.000649"/>
</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-18T23:42:14.110505" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:14.110014" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:14.109958" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:14.112335" 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-18T23:42:14.112583" 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-18T23:42:14.111647" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:14.114247" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:14.113684" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:14.116155" level="INFO">${conn_id} = 166</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:14.115441" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:14.118582" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:14.118659" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:14.118297" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:14.118894" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:14.120281" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:14.483288" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:14.119915" elapsed="0.363519"/>
</kw>
<msg time="2026-04-18T23:42:14.483517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:14.119557" elapsed="0.364045"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:14.117517" elapsed="0.366358"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:14.485434" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:14.508172" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:14.508414" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:14.508564" 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-18T23:42:14.484961" elapsed="0.023698"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:14.509696" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:14.511183" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:14.510717" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:14.511691" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:14.511448" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:14.511390" elapsed="0.000435"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:14.512191" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-18T23:42:14.511970" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:14.511920" elapsed="0.000436"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:14.512436" 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-18T23:42:14.517205" 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-18T23:42:14.517777" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:14.518184" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:14.513763" elapsed="0.004639"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:14.108604" elapsed="0.410022"/>
</kw>
<msg time="2026-04-18T23:42:14.518936" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:14.107895" elapsed="0.411101"/>
</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-18T23:42:14.107354" elapsed="0.411767"/>
</kw>
<msg time="2026-04-18T23:42:14.519162" 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-18T23:42:14.106541" elapsed="0.412668"/>
</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-18T23:42:14.522424" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:42:14.522902" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:14.523254" 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-18T23:42:14.519498" elapsed="0.003902"/>
</kw>
<msg time="2026-04-18T23:42:14.523490" level="INFO">${output} = 1</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-18T23:42:14.104577" elapsed="0.418938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:14.523942" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:14.523694" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:14.524048" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:14.524204" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:14.102446" elapsed="0.421783"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:14.524276" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:14.524421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:14.100252" elapsed="0.424194"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:14.524994" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:14.524602" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:14.099189" elapsed="0.426006">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:16.530461" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:16.529636" elapsed="0.000952"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:16.532856" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:16.532252" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:16.534763" 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-18T23:42:16.534992" 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-18T23:42:16.534362" elapsed="0.000718"/>
</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-18T23:42:16.541132" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:16.540594" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:16.540529" elapsed="0.000747"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:16.543019" 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-18T23:42:16.543281" 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-18T23:42:16.542265" elapsed="0.001115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:16.544935" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:16.544373" elapsed="0.000745"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:16.546794" 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-18T23:42:16.546074" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:16.549266" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:16.549344" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:16.548859" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:16.549580" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:16.550862" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:16.881775" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:16.550532" elapsed="0.331492"/>
</kw>
<msg time="2026-04-18T23:42:16.882195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:16.550146" elapsed="0.332189"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:16.548101" elapsed="0.334646"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:16.884518" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:16.907486" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:16.908009" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:16.908405" 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-18T23:42:16.883993" elapsed="0.024624"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:16.910871" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:16.914130" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:16.913131" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:16.915314" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:16.914755" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:16.914584" elapsed="0.000878"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:16.915819" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-18T23:42:16.915610" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:16.915561" elapsed="0.000420"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:16.916083" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:16.921005" elapsed="0.000435"/>
</kw>
<kw name="Open 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-18T23:42:16.921657" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:16.922022" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:16.917549" elapsed="0.004700"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:16.539202" elapsed="0.383267"/>
</kw>
<msg time="2026-04-18T23:42:16.922782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:16.537823" elapsed="0.385019"/>
</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-18T23:42:16.536619" elapsed="0.386308"/>
</kw>
<msg time="2026-04-18T23:42:16.922969" 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-18T23:42:16.535440" elapsed="0.387576"/>
</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-18T23:42:16.926095" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:42:16.926570" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:16.926886" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:16.923325" elapsed="0.003722"/>
</kw>
<msg time="2026-04-18T23:42:16.927143" level="INFO">${output} = 1</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-18T23:42:16.533431" elapsed="0.393737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:16.927594" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:16.927347" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:16.927680" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:16.927836" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:16.531314" elapsed="0.396547"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:16.927909" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:16.928075" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:16.528721" elapsed="0.399380"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:16.928674" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:16.928262" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:16.526842" elapsed="0.402036">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:18.932582" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:18.931745" elapsed="0.000907"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:18.934706" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:18.934097" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:18.936491" 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-18T23:42:18.936742" 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-18T23:42:18.936252" elapsed="0.000528"/>
</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-18T23:42:18.942583" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:18.941854" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:18.941483" elapsed="0.001320"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:18.944996" 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-18T23:42:18.945380" 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-18T23:42:18.944369" elapsed="0.001149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:18.947793" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:18.946927" elapsed="0.001021"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:18.949798" level="INFO">${conn_id} = 172</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:18.949096" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:18.952294" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:18.952374" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:18.951958" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:18.952613" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:18.954015" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:19.269693" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:18.953684" elapsed="0.316161"/>
</kw>
<msg time="2026-04-18T23:42:19.269929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:18.953315" elapsed="0.316706"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:18.951127" elapsed="0.319191"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:19.271826" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:19.294053" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:19.294279" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:19.294425" 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-18T23:42:19.271409" elapsed="0.023110"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:19.295499" elapsed="0.000428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:19.296948" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:19.296506" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:19.297475" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:19.297233" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:19.297172" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:19.297952" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-18T23:42:19.297753" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:19.297706" elapsed="0.000420"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:19.298210" 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-18T23:42:19.302877" 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-18T23:42:19.303495" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:19.303881" 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-18T23:42:19.299520" elapsed="0.004668"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:18.939553" elapsed="0.364855"/>
</kw>
<msg time="2026-04-18T23:42:19.304710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:18.938552" elapsed="0.366215"/>
</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-18T23:42:18.937780" elapsed="0.367068"/>
</kw>
<msg time="2026-04-18T23:42:19.304890" 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-18T23:42:18.937024" elapsed="0.367911"/>
</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-18T23:42:19.307884" elapsed="0.000437"/>
</kw>
<kw name="Open 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-18T23:42:19.308485" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:19.308775" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:19.305238" elapsed="0.003682"/>
</kw>
<msg time="2026-04-18T23:42:19.309009" level="INFO">${output} = 1</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-18T23:42:18.935302" elapsed="0.373748"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:19.309474" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:19.309228" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:19.309560" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:19.309710" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:18.933145" elapsed="0.376590"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:19.309780" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:19.309924" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:18.930819" elapsed="0.379130"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:19.310520" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:19.310120" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:18.929709" elapsed="0.380992">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:21.314105" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:21.313365" elapsed="0.000809"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:21.316168" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:21.315545" elapsed="0.000683"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:21.317787" 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-18T23:42:21.317935" 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-18T23:42:21.317563" elapsed="0.000412"/>
</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-18T23:42:21.323167" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:21.322673" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:21.322388" elapsed="0.000989"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:21.324815" 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-18T23:42:21.325076" 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-18T23:42:21.324355" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:21.326686" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:21.326149" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:21.328464" 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-18T23:42:21.327757" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:21.331016" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:21.331112" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:21.330696" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:21.331346" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:21.332618" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:21.684788" 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 Sat Apr 18 23:41:21 UTC 2026

  System load:  0.44               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:21.332267" elapsed="0.352666"/>
</kw>
<msg time="2026-04-18T23:42:21.685010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:21.331895" elapsed="0.353220"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:21.329821" elapsed="0.355572"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:21.686836" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:21.709450" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:21.709937" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:21.710318" 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-18T23:42:21.686460" elapsed="0.024067"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:21.712734" elapsed="0.000972"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:21.715916" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:21.714943" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:21.717075" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:21.716519" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:21.716399" elapsed="0.000964"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:21.718145" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-18T23:42:21.717678" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:21.717573" elapsed="0.000919"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:21.718665" elapsed="0.000080"/>
</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-18T23:42:21.724827" elapsed="0.000352"/>
</kw>
<kw name="Open 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-18T23:42:21.725393" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:21.725747" 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-18T23:42:21.721503" elapsed="0.004451"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:21.320981" elapsed="0.405211"/>
</kw>
<msg time="2026-04-18T23:42:21.726605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:21.319808" elapsed="0.406857"/>
</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-18T23:42:21.318985" elapsed="0.407761"/>
</kw>
<msg time="2026-04-18T23:42:21.726787" 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-18T23:42:21.318233" elapsed="0.408601"/>
</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-18T23:42:21.730118" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:42:21.730624" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:21.730931" elapsed="0.000184"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:21.727195" elapsed="0.003976"/>
</kw>
<msg time="2026-04-18T23:42:21.731262" level="INFO">${output} = 1</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-18T23:42:21.316786" elapsed="0.414501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:21.731708" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:21.731461" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:21.731802" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:21.731955" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:21.314616" elapsed="0.417364"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:21.732042" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:42:21.732187" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:21.312512" elapsed="0.419700"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:21.732780" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:21.732366" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:21.311508" elapsed="0.421463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:23.736707" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:23.735939" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:23.738904" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:23.738302" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:23.740799" 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-18T23:42:23.741020" 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-18T23:42:23.740472" elapsed="0.000636"/>
</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-18T23:42:23.750421" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:23.749858" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:23.747675" elapsed="0.002906"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:23.752217" 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-18T23:42:23.752485" 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-18T23:42:23.751681" elapsed="0.000950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:23.754421" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:23.753770" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:23.756489" level="INFO">${conn_id} = 178</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:23.755744" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:23.759001" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:23.759203" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:23.758671" elapsed="0.000572"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:23.759478" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:23.760781" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:24.358447" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:23.760454" elapsed="0.598182"/>
</kw>
<msg time="2026-04-18T23:42:24.358733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:23.760085" elapsed="0.598758"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:23.757828" elapsed="0.601350"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:24.360800" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:24.383566" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:24.384153" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:24.384484" 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-18T23:42:24.360375" elapsed="0.024314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:24.387086" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:24.390537" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:24.389406" elapsed="0.001282"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:24.391389" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:24.390991" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:24.390885" elapsed="0.000697"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:24.392128" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-18T23:42:24.391809" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:24.391736" elapsed="0.000633"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:24.392485" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:24.399221" elapsed="0.000344"/>
</kw>
<kw name="Open 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-18T23:42:24.399773" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:24.400147" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:24.394607" elapsed="0.005749"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:23.746127" elapsed="0.654450"/>
</kw>
<msg time="2026-04-18T23:42:24.400878" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:23.744268" elapsed="0.656672"/>
</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-18T23:42:23.742901" elapsed="0.658118"/>
</kw>
<msg time="2026-04-18T23:42:24.401088" 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-18T23:42:23.741472" elapsed="0.659663"/>
</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-18T23:42:24.404245" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:42:24.404719" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:24.405013" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:24.401498" elapsed="0.003691"/>
</kw>
<msg time="2026-04-18T23:42:24.405280" level="INFO">${output} = 1</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-18T23:42:23.739496" elapsed="0.665809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:24.405727" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:24.405483" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:24.405812" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:24.405989" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:23.737252" elapsed="0.668762"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:24.406141" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:42:24.406287" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:23.734964" elapsed="0.671347"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:24.406859" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:24.406467" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:23.733830" elapsed="0.673241">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:26.410441" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:26.409679" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:26.412630" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:26.412002" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:26.414479" 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-18T23:42:26.414701" 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-18T23:42:26.414130" elapsed="0.000628"/>
</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-18T23:42:26.421101" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:26.420617" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:26.420559" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:26.422900" 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-18T23:42:26.423168" 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-18T23:42:26.422214" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:26.424795" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:26.424251" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:26.426576" 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-18T23:42:26.425872" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:26.429048" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:26.429130" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:26.428741" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:26.429451" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:26.430786" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:26.766608" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:26.430460" elapsed="0.336313"/>
</kw>
<msg time="2026-04-18T23:42:26.766864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:26.430092" elapsed="0.336887"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:26.427972" elapsed="0.339335"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:26.768851" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:26.791637" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:26.792200" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:26.792534" 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-18T23:42:26.768434" elapsed="0.024309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:26.794924" elapsed="0.000999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:26.798160" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:26.797190" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:26.799464" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:26.798736" elapsed="0.000896"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:26.798613" elapsed="0.001140"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:26.800549" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-18T23:42:26.800100" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:26.799962" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:26.801115" elapsed="0.000086"/>
</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-18T23:42:26.809453" elapsed="0.000337"/>
</kw>
<kw name="Open 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-18T23:42:26.810001" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:26.810375" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:26.804183" elapsed="0.006406"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:26.419114" elapsed="0.391696"/>
</kw>
<msg time="2026-04-18T23:42:26.811239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:26.417516" elapsed="0.393781"/>
</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-18T23:42:26.416314" elapsed="0.395064"/>
</kw>
<msg time="2026-04-18T23:42:26.811418" 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-18T23:42:26.415153" elapsed="0.396310"/>
</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-18T23:42:26.814414" elapsed="0.000307"/>
</kw>
<kw name="Open 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-18T23:42:26.814882" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:26.815261" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:26.811752" elapsed="0.003656"/>
</kw>
<msg time="2026-04-18T23:42:26.815584" level="INFO">${output} = 1</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-18T23:42:26.413201" elapsed="0.402409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:26.816067" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:26.815795" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:26.816155" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:26.816309" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:26.411089" elapsed="0.405245"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:26.816381" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:26.816526" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:26.408850" elapsed="0.407700"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:26.817116" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:26.816706" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:26.407816" elapsed="0.409491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:28.820914" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:28.820154" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:28.823009" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:28.822410" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:28.824854" 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-18T23:42:28.825006" 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-18T23:42:28.824600" elapsed="0.000466"/>
</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-18T23:42:28.830323" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:28.829674" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:28.829595" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:28.832880" 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-18T23:42:28.833321" 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-18T23:42:28.831913" elapsed="0.001553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:28.835660" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:28.834883" elapsed="0.000928"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:28.837829" level="INFO">${conn_id} = 184</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:28.837139" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:28.840234" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:28.840311" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:28.839926" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:28.840546" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:28.841932" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:29.151321" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:28.841608" elapsed="0.309972"/>
</kw>
<msg time="2026-04-18T23:42:29.151664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:28.841243" elapsed="0.310508"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:28.839155" elapsed="0.312926"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:29.153567" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:29.176156" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:29.176675" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:29.177009" 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-18T23:42:29.153172" elapsed="0.024094"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:29.179510" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:29.181902" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:29.181285" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:29.182655" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:29.182324" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:29.182243" 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-18T23:42:29.183352" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-18T23:42:29.183069" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:29.182979" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:29.183694" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:29.190411" elapsed="0.000465"/>
</kw>
<kw name="Open 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-18T23:42:29.191194" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:29.191693" 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-18T23:42:29.185592" elapsed="0.006388"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:28.827727" elapsed="0.364870"/>
</kw>
<msg time="2026-04-18T23:42:29.192910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:28.826780" elapsed="0.366191"/>
</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-18T23:42:28.826005" elapsed="0.367063"/>
</kw>
<msg time="2026-04-18T23:42:29.193111" 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-18T23:42:28.825292" elapsed="0.367865"/>
</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-18T23:42:29.196320" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:42:29.196793" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:29.197103" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:29.193448" elapsed="0.003804"/>
</kw>
<msg time="2026-04-18T23:42:29.197341" level="INFO">${output} = 1</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-18T23:42:28.823586" elapsed="0.373780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:29.197802" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:29.197540" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:29.197889" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:42:29.198055" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:28.821472" elapsed="0.376609"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:29.198129" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:29.198272" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:28.819194" elapsed="0.379103"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:29.198936" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:29.198520" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:28.818152" elapsed="0.381045">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:31.202910" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:31.202154" elapsed="0.000826"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:31.205023" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:31.204382" elapsed="0.000729"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:31.206458" 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-18T23:42:31.206607" 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-18T23:42:31.206211" elapsed="0.000434"/>
</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-18T23:42:31.212238" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:31.211534" elapsed="0.000883"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:31.211449" elapsed="0.001061"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:31.214987" 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-18T23:42:31.215391" 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-18T23:42:31.213995" elapsed="0.001541"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:31.217753" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:31.217046" elapsed="0.000816"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:31.219631" 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-18T23:42:31.218859" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:31.222008" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:31.222101" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:31.221718" 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-18T23:42:31.222337" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:31.223718" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:31.545063" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:31.223391" elapsed="0.321790"/>
</kw>
<msg time="2026-04-18T23:42:31.545257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:31.222892" elapsed="0.322448"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:31.220942" elapsed="0.324647"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:31.547021" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:31.569919" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:31.570461" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:31.570793" 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-18T23:42:31.546651" elapsed="0.024353"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:31.573272" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:31.576520" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:31.575532" elapsed="0.001365"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:31.577715" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:31.577369" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:31.577237" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:31.578224" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-18T23:42:31.578001" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:31.577951" elapsed="0.000434"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:31.578477" elapsed="0.000050"/>
</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-18T23:42:31.583454" 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-18T23:42:31.584123" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:31.584483" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:31.579872" elapsed="0.004818"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:31.209483" elapsed="0.375432"/>
</kw>
<msg time="2026-04-18T23:42:31.585280" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:31.208471" elapsed="0.376867"/>
</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-18T23:42:31.207663" elapsed="0.377757"/>
</kw>
<msg time="2026-04-18T23:42:31.585461" 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-18T23:42:31.206879" elapsed="0.378628"/>
</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-18T23:42:31.588648" 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-18T23:42:31.589164" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:31.589465" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:31.585797" elapsed="0.003855"/>
</kw>
<msg time="2026-04-18T23:42:31.589744" level="INFO">${output} = 1</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-18T23:42:31.205573" elapsed="0.384201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:31.590232" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:31.589958" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:31.590320" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:31.590476" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:31.203460" elapsed="0.387042"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:31.590550" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:31.590696" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:31.201321" elapsed="0.389399"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:31.591325" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:31.590877" elapsed="0.000524">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:31.200163" elapsed="0.391354">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:33.595260" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:33.594402" elapsed="0.000930"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:33.597567" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:33.596927" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:33.599526" 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-18T23:42:33.599754" 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-18T23:42:33.599179" elapsed="0.000634"/>
</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-18T23:42:33.608274" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:33.607777" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:33.607343" elapsed="0.001073"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:33.609848" 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-18T23:42:33.610111" 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-18T23:42:33.609411" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:33.611742" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:33.611197" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:33.613582" level="INFO">${conn_id} = 190</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:33.612822" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:33.615946" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:33.616023" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:33.615660" 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-18T23:42:33.616274" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:33.617725" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:33.939290" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:33.617389" elapsed="0.322067"/>
</kw>
<msg time="2026-04-18T23:42:33.939548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:33.616874" elapsed="0.322775"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:33.614882" elapsed="0.325108"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:33.941753" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:33.964337" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:33.964886" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:33.965276" 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-18T23:42:33.941297" elapsed="0.024195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:33.967798" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:33.970948" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:33.970143" elapsed="0.000978"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:33.971781" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:33.971351" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:33.971270" elapsed="0.000706"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:33.972491" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-18T23:42:33.972207" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:33.972137" elapsed="0.000583"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:33.972835" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:33.979476" elapsed="0.000532"/>
</kw>
<kw name="Open 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-18T23:42:33.980323" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:33.980823" 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-18T23:42:33.974828" elapsed="0.006305"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:33.604243" elapsed="0.377202"/>
</kw>
<msg time="2026-04-18T23:42:33.981911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:33.602642" elapsed="0.379352"/>
</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-18T23:42:33.601424" elapsed="0.380830"/>
</kw>
<msg time="2026-04-18T23:42:33.982312" 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-18T23:42:33.600204" elapsed="0.382173"/>
</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-18T23:42:33.985475" elapsed="0.000402"/>
</kw>
<kw name="Open 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-18T23:42:33.986102" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:33.986399" 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-18T23:42:33.982748" elapsed="0.003796"/>
</kw>
<msg time="2026-04-18T23:42:33.986636" level="INFO">${output} = 1</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-18T23:42:33.598142" elapsed="0.388519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:33.987107" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:33.986843" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:33.987195" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:33.987350" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:33.595973" elapsed="0.391403"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:33.987422" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:33.987569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:33.593521" elapsed="0.394072"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:33.988198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:33.987757" elapsed="0.000521">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:33.592398" elapsed="0.395994">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:35.991854" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:35.991120" elapsed="0.000805"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:35.993958" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:35.993358" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:35.995833" 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-18T23:42:35.996107" 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-18T23:42:35.995553" elapsed="0.000594"/>
</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-18T23:42:36.001711" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:36.001069" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:36.000696" elapsed="0.001205"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:36.003936" 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-18T23:42:36.004310" 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-18T23:42:36.003288" elapsed="0.001160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:36.006831" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:36.005825" elapsed="0.001150"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:36.009094" level="INFO">${conn_id} = 193</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:36.008260" elapsed="0.000931"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:36.011497" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:36.011575" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:36.011199" 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-18T23:42:36.011814" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:36.013257" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:36.334308" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:36.012914" elapsed="0.321537"/>
</kw>
<msg time="2026-04-18T23:42:36.334533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:36.012552" elapsed="0.322065"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:36.010415" elapsed="0.324476"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:36.336390" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:36.358529" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:36.359177" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:36.359513" 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-18T23:42:36.335974" elapsed="0.023749"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:36.361990" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:36.364724" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:36.364100" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:36.365449" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:36.365120" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:36.365016" 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-18T23:42:36.366135" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-18T23:42:36.365833" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:36.365765" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:36.366476" elapsed="0.000051"/>
</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-18T23:42:36.373358" elapsed="0.000361"/>
</kw>
<kw name="Open 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-18T23:42:36.373994" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:36.374385" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:36.368496" elapsed="0.006101"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:35.998864" elapsed="0.375956"/>
</kw>
<msg time="2026-04-18T23:42:36.375172" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:35.997906" elapsed="0.377329"/>
</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-18T23:42:35.997175" elapsed="0.378142"/>
</kw>
<msg time="2026-04-18T23:42:36.375359" 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-18T23:42:35.996372" elapsed="0.379033"/>
</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-18T23:42:36.378470" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:42:36.378972" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:36.379292" 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-18T23:42:36.375694" elapsed="0.003744"/>
</kw>
<msg time="2026-04-18T23:42:36.379530" level="INFO">${output} = 1</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-18T23:42:35.994575" elapsed="0.384979"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:36.380197" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:36.379783" elapsed="0.000479"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:36.380326" elapsed="0.000043"/>
</return>
<msg time="2026-04-18T23:42:36.380547" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:35.992411" elapsed="0.388172"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:36.380649" elapsed="0.000038"/>
</return>
<msg time="2026-04-18T23:42:36.380862" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:35.990266" elapsed="0.390631"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:36.381725" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:36.381149" elapsed="0.000682">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:35.989218" elapsed="0.392773">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:38.385685" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:38.384902" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:38.388144" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:38.387409" elapsed="0.000818"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:38.390131" 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-18T23:42:38.390358" 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-18T23:42:38.389753" elapsed="0.000663"/>
</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-18T23:42:38.396453" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:38.395934" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:38.393941" elapsed="0.002710"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:38.398090" 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-18T23:42:38.398338" 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-18T23:42:38.397636" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:38.399970" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:38.399437" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:38.401778" level="INFO">${conn_id} = 196</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:38.401095" elapsed="0.000782"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:38.404232" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:38.404310" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:38.403872" 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-18T23:42:38.404595" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:38.405876" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:38.728682" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:38.405541" elapsed="0.323319"/>
</kw>
<msg time="2026-04-18T23:42:38.728947" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:38.405177" elapsed="0.323877"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:38.403121" elapsed="0.326227"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:38.730857" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:38.753612" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:38.754156" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:38.754494" 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-18T23:42:38.730448" elapsed="0.024255"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:38.756961" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:38.760157" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:38.759147" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:38.761276" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:38.760742" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:38.760619" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:38.762380" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-18T23:42:38.761894" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:38.761785" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:38.762910" 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-18T23:42:38.771198" elapsed="0.000353"/>
</kw>
<kw name="Open 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-18T23:42:38.771778" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:38.772163" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:38.766213" elapsed="0.006159"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:38.392623" elapsed="0.379969"/>
</kw>
<msg time="2026-04-18T23:42:38.772960" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:38.391889" elapsed="0.381135"/>
</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-18T23:42:38.391338" elapsed="0.381785"/>
</kw>
<msg time="2026-04-18T23:42:38.773163" 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-18T23:42:38.390803" elapsed="0.382406"/>
</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-18T23:42:38.776596" 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-18T23:42:38.777104" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:38.777400" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:38.773502" elapsed="0.004044"/>
</kw>
<msg time="2026-04-18T23:42:38.777636" level="INFO">${output} = 1</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-18T23:42:38.388773" elapsed="0.388888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:38.778114" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:38.777850" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:38.778203" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:38.778356" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:38.386240" elapsed="0.392141"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:38.778427" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:38.778571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:38.384073" elapsed="0.394522"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:38.779191" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:38.778751" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:38.382926" elapsed="0.396451">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:40.783168" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:40.782359" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:40.785438" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:40.784802" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:40.787334" 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-18T23:42:40.787562" 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-18T23:42:40.786944" elapsed="0.000677"/>
</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-18T23:42:40.792307" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:40.791663" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:40.791606" elapsed="0.000839"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:40.794129" 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-18T23:42:40.794375" 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-18T23:42:40.793439" elapsed="0.001033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:40.795981" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:40.795445" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:40.797849" level="INFO">${conn_id} = 199</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:40.797159" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:40.800278" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:40.800355" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:40.799958" 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-18T23:42:40.800586" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:40.801826" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:41.105567" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:40.801506" elapsed="0.304192"/>
</kw>
<msg time="2026-04-18T23:42:41.105779" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:40.801151" elapsed="0.304717"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:40.799218" elapsed="0.306941"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:41.107650" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:41.130308" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:41.130824" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:41.131208" 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-18T23:42:41.107252" elapsed="0.024166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:41.133622" elapsed="0.000869"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:41.136728" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:41.135763" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:41.137815" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:41.137333" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:41.137211" elapsed="0.000930"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:41.138936" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-18T23:42:41.138500" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:41.138350" elapsed="0.000824"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:41.139253" 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-18T23:42:41.143941" elapsed="0.000352"/>
</kw>
<kw name="Open 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-18T23:42:41.144507" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:41.144861" 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-18T23:42:41.140569" elapsed="0.004521"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:40.790263" elapsed="0.355056"/>
</kw>
<msg time="2026-04-18T23:42:41.145628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:40.789563" elapsed="0.356119"/>
</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-18T23:42:40.789011" elapsed="0.356752"/>
</kw>
<msg time="2026-04-18T23:42:41.145804" 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-18T23:42:40.787967" elapsed="0.357883"/>
</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-18T23:42:41.148971" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:42:41.149463" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:41.149757" 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-18T23:42:41.146238" elapsed="0.003666"/>
</kw>
<msg time="2026-04-18T23:42:41.149994" level="INFO">${output} = 1</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-18T23:42:40.785978" elapsed="0.364041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:41.150488" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:41.150214" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:41.150576" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:41.150726" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:40.783705" elapsed="0.367046"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:41.150797" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:41.150946" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:40.781523" elapsed="0.369447"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:41.151623" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:41.151229" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:40.780413" elapsed="0.371408">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:43.155547" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:43.154763" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:43.157656" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:43.157024" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:43.159547" 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-18T23:42:43.159776" 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-18T23:42:43.159203" elapsed="0.000632"/>
</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-18T23:42:43.167652" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:43.167190" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:43.167135" elapsed="0.000654"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:43.169492" 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-18T23:42:43.169743" 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-18T23:42:43.168786" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:43.171432" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:43.170826" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:43.173215" level="INFO">${conn_id} = 202</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:43.172505" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:43.175641" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:43.175720" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:43.175357" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:43.175957" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:43.177284" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:43.505252" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:43.176945" elapsed="0.328398"/>
</kw>
<msg time="2026-04-18T23:42:43.505410" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:43.176589" elapsed="0.328894"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:43.174521" elapsed="0.331214"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:43.507143" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:43.529957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:43.530508" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:43.530842" 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-18T23:42:43.506762" elapsed="0.024337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:43.533336" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:43.536487" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:43.535488" elapsed="0.001226"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:43.537602" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:43.537111" elapsed="0.000651"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:43.536961" elapsed="0.000923"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:43.538676" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-18T23:42:43.538231" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:43.538124" elapsed="0.000962"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:43.539270" elapsed="0.000082"/>
</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-18T23:42:43.545546" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:42:43.546123" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:43.546481" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:43.542217" elapsed="0.004473"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:43.164239" elapsed="0.382674"/>
</kw>
<msg time="2026-04-18T23:42:43.547241" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:43.162725" elapsed="0.384574"/>
</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-18T23:42:43.161492" elapsed="0.385889"/>
</kw>
<msg time="2026-04-18T23:42:43.547421" 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-18T23:42:43.160327" elapsed="0.387139"/>
</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-18T23:42:43.550490" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:42:43.550964" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:43.551278" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:43.547753" elapsed="0.003670"/>
</kw>
<msg time="2026-04-18T23:42:43.551571" level="INFO">${output} = 1</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-18T23:42:43.158242" elapsed="0.393356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:43.552103" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:43.551777" elapsed="0.000374"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:43.552195" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:43.552349" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:43.156102" elapsed="0.396272"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:43.552421" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:43.552565" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:43.153875" elapsed="0.398714"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:43.553183" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:43.552748" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:43.152804" elapsed="0.400574">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:45.556798" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:45.556068" elapsed="0.000801"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:45.558927" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:45.558300" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:45.560543" 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-18T23:42:45.560684" 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-18T23:42:45.560327" elapsed="0.000394"/>
</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-18T23:42:45.565929" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:45.565305" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:45.565229" elapsed="0.000913"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:45.568428" 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-18T23:42:45.568765" 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-18T23:42:45.567506" elapsed="0.001397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:45.571092" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:45.570290" elapsed="0.000956"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:45.573208" level="INFO">${conn_id} = 205</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:45.572437" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:45.575566" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:45.575645" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:45.575283" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:45.575904" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:45.577342" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:45.897408" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:45.576850" elapsed="0.320818"/>
</kw>
<msg time="2026-04-18T23:42:45.897758" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:45.576489" elapsed="0.321359"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:45.574489" elapsed="0.323670"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:45.899752" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:45.922800" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:45.923340" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:45.923670" 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-18T23:42:45.899309" elapsed="0.024570"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:45.926097" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:45.929317" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:45.928264" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:45.930457" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:45.929899" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:45.929772" elapsed="0.000975"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:45.931547" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-18T23:42:45.931093" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:45.930957" elapsed="0.000938"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:45.932165" elapsed="0.000085"/>
</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-18T23:42:45.938826" elapsed="0.000371"/>
</kw>
<kw name="Open 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-18T23:42:45.939408" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:45.939785" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:45.935177" elapsed="0.004815"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:45.563388" elapsed="0.376914"/>
</kw>
<msg time="2026-04-18T23:42:45.940611" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:45.562432" elapsed="0.378236"/>
</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-18T23:42:45.561670" elapsed="0.379081"/>
</kw>
<msg time="2026-04-18T23:42:45.940792" 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-18T23:42:45.560940" elapsed="0.379898"/>
</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-18T23:42:45.943815" elapsed="0.000394"/>
</kw>
<kw name="Open 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-18T23:42:45.944373" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:45.944669" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:45.941144" elapsed="0.003674"/>
</kw>
<msg time="2026-04-18T23:42:45.944909" level="INFO">${output} = 1</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-18T23:42:45.559544" elapsed="0.385390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:45.945382" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:45.945133" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:45.945471" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:45.945623" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:45.557358" elapsed="0.388290"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:45.945694" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:45.945838" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:45.555234" elapsed="0.390628"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:45.946539" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:45.946098" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:45.554177" elapsed="0.392555">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:47.951313" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:47.950384" elapsed="0.000994"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:47.953240" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:47.952695" elapsed="0.000593"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:47.954814" 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-18T23:42:47.954990" 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-18T23:42:47.954501" elapsed="0.000550"/>
</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-18T23:42:47.961510" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:47.960816" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:47.960428" elapsed="0.001282"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:47.963646" 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-18T23:42:47.963903" 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-18T23:42:47.963185" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:47.965608" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:47.965050" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:47.967462" level="INFO">${conn_id} = 208</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:47.966705" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:47.969937" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:47.970015" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:47.969650" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:47.970281" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:47.971576" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:48.292259" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:47.971249" elapsed="0.321163"/>
</kw>
<msg time="2026-04-18T23:42:48.292501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:47.970851" elapsed="0.321745"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:47.968863" elapsed="0.324011"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:48.294425" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:48.317479" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:48.317999" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:48.318392" 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-18T23:42:48.294005" elapsed="0.024600"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:48.320854" elapsed="0.000963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:48.323583" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:48.322926" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:48.324364" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:48.323954" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:48.323875" elapsed="0.000675"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:48.325050" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-18T23:42:48.324752" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:48.324683" elapsed="0.000612"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:48.325405" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:48.332238" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:48.332782" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:48.333154" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:48.327322" elapsed="0.006040"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:47.957963" elapsed="0.375623"/>
</kw>
<msg time="2026-04-18T23:42:48.333917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:47.957004" elapsed="0.376970"/>
</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-18T23:42:47.956098" elapsed="0.377977"/>
</kw>
<msg time="2026-04-18T23:42:48.334118" 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-18T23:42:47.955283" elapsed="0.378881"/>
</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-18T23:42:48.337192" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:42:48.337679" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:48.337972" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:48.334452" elapsed="0.003685"/>
</kw>
<msg time="2026-04-18T23:42:48.338226" level="INFO">${output} = 1</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-18T23:42:47.953685" elapsed="0.384567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:48.338673" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:48.338427" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:48.338760" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:42:48.338911" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:47.951812" elapsed="0.387125"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:48.338984" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:48.339163" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:47.949138" elapsed="0.390050"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:48.339742" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:48.339345" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:47.947693" elapsed="0.392227">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:50.343573" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:50.342668" elapsed="0.000976"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:50.345807" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:50.345212" elapsed="0.000653"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:50.347678" 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-18T23:42:50.347901" 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-18T23:42:50.347342" elapsed="0.000620"/>
</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-18T23:42:50.353909" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:50.353237" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:50.352794" elapsed="0.001352"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:50.356174" 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-18T23:42:50.356507" 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-18T23:42:50.355534" elapsed="0.001112"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:50.358795" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:50.358049" elapsed="0.000898"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:50.361189" level="INFO">${conn_id} = 211</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:50.360376" elapsed="0.000911"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:50.363559" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:50.363636" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:50.363239" 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-18T23:42:50.363869" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:50.365282" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:50.694870" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:50.364804" elapsed="0.330208"/>
</kw>
<msg time="2026-04-18T23:42:50.695110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:50.364448" elapsed="0.330752"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:50.362453" elapsed="0.333027"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:50.696955" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:50.720004" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:50.720539" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:50.720872" 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-18T23:42:50.696570" elapsed="0.024553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:50.723442" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:50.726647" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:50.725648" elapsed="0.001233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:50.728066" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:50.727373" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:50.727245" elapsed="0.001130"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:50.729193" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-18T23:42:50.728703" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:50.728593" elapsed="0.000961"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:50.729731" 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-18T23:42:50.735364" 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-18T23:42:50.735906" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:50.736288" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:50.732058" elapsed="0.004437"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:50.350804" elapsed="0.386063"/>
</kw>
<msg time="2026-04-18T23:42:50.737197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:50.349860" elapsed="0.387393"/>
</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-18T23:42:50.349128" elapsed="0.388205"/>
</kw>
<msg time="2026-04-18T23:42:50.737374" 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-18T23:42:50.348375" elapsed="0.389045"/>
</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-18T23:42:50.740442" elapsed="0.000318"/>
</kw>
<kw name="Open 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-18T23:42:50.740922" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:50.741232" 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-18T23:42:50.737706" elapsed="0.003672"/>
</kw>
<msg time="2026-04-18T23:42:50.741467" level="INFO">${output} = 1</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-18T23:42:50.346372" elapsed="0.395120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:50.741910" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:50.741665" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:50.741996" elapsed="0.000042"/>
</return>
<msg time="2026-04-18T23:42:50.742163" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:50.344277" elapsed="0.397911"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:50.742234" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:50.742377" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:50.341832" elapsed="0.400569"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:50.742981" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:50.742557" elapsed="0.000596">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:50.340750" elapsed="0.402517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:52.746883" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:52.746155" elapsed="0.000796"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:52.749200" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:52.748401" elapsed="0.000868"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:52.751117" 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-18T23:42:52.751481" 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-18T23:42:52.750749" elapsed="0.000795"/>
</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-18T23:42:52.760262" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:52.759765" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:52.758014" elapsed="0.002387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:52.761851" 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-18T23:42:52.762105" 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-18T23:42:52.761410" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:52.763718" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:52.763168" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:52.765589" level="INFO">${conn_id} = 214</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:52.764793" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:52.767922" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:52.767999" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:52.767627" 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-18T23:42:52.768247" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:52.769624" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:53.096103" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:52.769300" elapsed="0.326980"/>
</kw>
<msg time="2026-04-18T23:42:53.096370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:52.768792" elapsed="0.327670"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:52.766865" elapsed="0.329883"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:53.098278" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:53.121217" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:53.121717" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:53.122100" 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-18T23:42:53.097858" elapsed="0.024462"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:53.124539" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:53.126843" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:53.126247" elapsed="0.000741"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:53.127603" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:53.127283" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:53.127202" elapsed="0.000584"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:53.128291" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-18T23:42:53.127985" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:53.127918" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:53.128626" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:53.135382" elapsed="0.000457"/>
</kw>
<kw name="Open 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-18T23:42:53.136240" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:53.136777" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:53.130626" elapsed="0.006485"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:52.755781" elapsed="0.381657"/>
</kw>
<msg time="2026-04-18T23:42:53.137749" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:52.754328" elapsed="0.383479"/>
</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-18T23:42:52.753115" elapsed="0.384772"/>
</kw>
<msg time="2026-04-18T23:42:53.137928" 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-18T23:42:52.751910" elapsed="0.386064"/>
</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-18T23:42:53.141075" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:42:53.141548" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:53.141841" 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-18T23:42:53.138284" elapsed="0.003704"/>
</kw>
<msg time="2026-04-18T23:42:53.142093" level="INFO">${output} = 1</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-18T23:42:52.749785" elapsed="0.392334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:53.142543" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:53.142298" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:53.142630" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:42:53.142787" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:52.747437" elapsed="0.395374"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:53.142856" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:42:53.142998" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:52.745260" elapsed="0.397762"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:53.143610" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:53.143218" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:52.744115" elapsed="0.399674">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:55.147303" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:55.146543" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:55.149454" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:55.148792" elapsed="0.000723"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:55.151297" 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-18T23:42:55.151530" 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-18T23:42:55.150939" elapsed="0.000652"/>
</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-18T23:42:55.157150" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:55.156493" elapsed="0.000857"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:55.156415" elapsed="0.001019"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:55.159719" 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-18T23:42:55.160122" 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-18T23:42:55.158787" elapsed="0.001475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:55.162379" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:55.161608" elapsed="0.000924"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:55.164951" level="INFO">${conn_id} = 217</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:55.163975" elapsed="0.001110"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:55.167417" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:55.167494" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:55.167017" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:55.167727" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:55.168994" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:55.470932" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:55.168672" elapsed="0.302389"/>
</kw>
<msg time="2026-04-18T23:42:55.471134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:55.168309" elapsed="0.302911"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:55.166270" elapsed="0.305203"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:55.472904" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:55.495475" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:55.495994" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:55.496376" 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-18T23:42:55.472540" elapsed="0.024043"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:55.498753" elapsed="0.001097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:55.502241" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:55.501229" elapsed="0.001249"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:55.503369" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:55.502829" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:55.502706" elapsed="0.001017"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:55.504520" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-18T23:42:55.504116" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:55.503967" elapsed="0.000721"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:55.504772" 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-18T23:42:55.510270" 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-18T23:42:55.510854" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:55.511287" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:55.506178" elapsed="0.005326"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:55.154562" elapsed="0.357191"/>
</kw>
<msg time="2026-04-18T23:42:55.512190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:55.153623" elapsed="0.358629"/>
</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-18T23:42:55.152858" elapsed="0.359478"/>
</kw>
<msg time="2026-04-18T23:42:55.512379" 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-18T23:42:55.151990" elapsed="0.360436"/>
</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-18T23:42:55.515487" elapsed="0.000354"/>
</kw>
<kw name="Open 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-18T23:42:55.516007" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:55.516325" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:55.512724" elapsed="0.003750"/>
</kw>
<msg time="2026-04-18T23:42:55.516566" level="INFO">${output} = 1</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-18T23:42:55.149994" elapsed="0.366597"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:55.517018" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:55.516769" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:55.517125" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:55.517280" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:55.147849" elapsed="0.369457"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:55.517355" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:55.517502" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:55.145704" elapsed="0.371822"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:55.518117" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:55.517692" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:55.144622" elapsed="0.373694">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:57.521876" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:57.521113" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:57.523820" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:57.523435" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:57.524983" 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-18T23:42:57.525146" 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-18T23:42:57.524763" elapsed="0.000423"/>
</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-18T23:42:57.530515" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:57.529865" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:57.529787" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:57.533054" 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-18T23:42:57.533464" 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-18T23:42:57.532104" elapsed="0.001502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:57.535670" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:57.534951" elapsed="0.000828"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:57.537634" level="INFO">${conn_id} = 220</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:57.536819" elapsed="0.000913"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:57.539990" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:57.540084" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:57.539705" 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-18T23:42:57.540316" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:57.541642" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:42:57.865605" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:57.541308" elapsed="0.324443"/>
</kw>
<msg time="2026-04-18T23:42:57.865837" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:57.540908" elapsed="0.325016"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:57.538919" elapsed="0.327315"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:42:57.867777" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:42:57.890243" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:42:57.890748" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:42:57.891134" 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-18T23:42:57.867376" elapsed="0.024023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:57.893666" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:57.897101" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:57.895886" elapsed="0.001455"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:57.898304" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:42:57.897729" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:57.897604" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:42:57.899482" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-18T23:42:57.898929" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:57.898819" elapsed="0.000828"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:42:57.899731" 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-18T23:42:57.904724" 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-18T23:42:57.905293" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:57.905650" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:57.901163" elapsed="0.004696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:57.527911" elapsed="0.378192"/>
</kw>
<msg time="2026-04-18T23:42:57.906453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:57.526912" elapsed="0.379604"/>
</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-18T23:42:57.526164" elapsed="0.380435"/>
</kw>
<msg time="2026-04-18T23:42:57.906641" 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-18T23:42:57.525424" elapsed="0.381264"/>
</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-18T23:42:57.909779" elapsed="0.000344"/>
</kw>
<kw name="Open 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-18T23:42:57.910290" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:42:57.910590" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:42:57.907062" elapsed="0.003677"/>
</kw>
<msg time="2026-04-18T23:42:57.910831" level="INFO">${output} = 1</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-18T23:42:57.524183" elapsed="0.386674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:57.911387" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:57.911080" elapsed="0.000353"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:42:57.911477" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:42:57.911632" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:57.522437" elapsed="0.389219"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:42:57.911705" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:42:57.911850" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:57.520245" elapsed="0.391629"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:42:57.912525" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:42:57.912122" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:57.519162" elapsed="0.393561">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:42:59.916331" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:42:59.915510" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:42:59.918456" level="INFO">${member_ip} = 10.30.171.206</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-18T23:42:59.917823" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:59.920362" 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-18T23:42:59.920594" 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-18T23:42:59.919958" elapsed="0.000786"/>
</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-18T23:42:59.926124" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:42:59.925647" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-18T23:42:59.925590" elapsed="0.000671"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:59.927914" 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-18T23:42:59.928177" 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-18T23:42:59.927250" elapsed="0.001027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:42:59.929792" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:42:59.929244" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:42:59.931584" level="INFO">${conn_id} = 223</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:42:59.930867" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:42:59.934062" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:42:59.934141" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:42:59.933760" 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-18T23:42:59.934374" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:42:59.935742" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:00.260123" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:42:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:42:59.935417" elapsed="0.324865"/>
</kw>
<msg time="2026-04-18T23:43:00.260369" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:59.934991" elapsed="0.325468"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:42:59.932869" elapsed="0.327888"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:00.262269" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:00.285022" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:00.285563" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:00.285891" 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-18T23:43:00.261848" elapsed="0.024296"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:00.288411" elapsed="0.000932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:00.291594" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:00.290604" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:00.292706" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:00.292207" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:00.292076" elapsed="0.000924"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:00.293815" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-18T23:43:00.293361" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:00.293255" elapsed="0.001057"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:00.294489" elapsed="0.000084"/>
</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-18T23:43:00.300414" elapsed="0.000340"/>
</kw>
<kw name="Open 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-18T23:43:00.300960" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:00.301335" 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-18T23:43:00.296996" elapsed="0.004544"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:42:59.924266" elapsed="0.377497"/>
</kw>
<msg time="2026-04-18T23:43:00.302147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:42:59.923567" elapsed="0.378639"/>
</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-18T23:42:59.922350" elapsed="0.379939"/>
</kw>
<msg time="2026-04-18T23:43:00.302330" 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-18T23:42:59.921149" elapsed="0.381227"/>
</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-18T23:43:00.305344" 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-18T23:43:00.305823" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:00.306218" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:00.302662" elapsed="0.003706"/>
</kw>
<msg time="2026-04-18T23:43:00.306530" level="INFO">${output} = 1</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-18T23:42:59.918998" elapsed="0.387568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:00.306990" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:00.306742" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:00.307117" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:43:00.307272" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:42:59.916879" elapsed="0.390418"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:00.307344" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:00.307490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:42:59.914607" elapsed="0.392908"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:00.308092" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:00.307671" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:42:59.913572" elapsed="0.394709">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:02.312063" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:02.311016" elapsed="0.001144"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:02.314767" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:02.313968" elapsed="0.000874"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:02.316700" 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-18T23:43:02.316889" 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-18T23:43:02.316396" elapsed="0.000544"/>
</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-18T23:43:02.323001" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:02.322403" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:02.322019" elapsed="0.001175"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:02.324969" 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-18T23:43:02.325289" 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-18T23:43:02.324427" elapsed="0.000981"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:02.327313" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:02.326605" elapsed="0.000842"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:02.329611" level="INFO">${conn_id} = 226</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:02.328647" elapsed="0.001087"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:02.332570" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:02.332667" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:02.332212" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:02.332970" elapsed="0.000619"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:02.334769" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:02.701042" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:02.334366" elapsed="0.366949"/>
</kw>
<msg time="2026-04-18T23:43:02.701409" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:02.333873" elapsed="0.367632"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:02.331211" elapsed="0.370591"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:02.703457" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:02.727118" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:02.727691" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:02.728022" 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-18T23:43:02.702953" elapsed="0.025323"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:02.730503" elapsed="0.000970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:02.733762" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:02.732750" elapsed="0.001240"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:02.734898" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:02.734382" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:02.734254" elapsed="0.000973"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:02.736018" elapsed="0.000216"/>
</return>
<status status="PASS" start="2026-04-18T23:43:02.735571" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:02.735465" elapsed="0.001002"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:02.736639" elapsed="0.000080"/>
</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-18T23:43:02.743197" elapsed="0.000354"/>
</kw>
<kw name="Open 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-18T23:43:02.743766" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:02.744212" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:02.739679" elapsed="0.004743"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:02.320371" elapsed="0.424272"/>
</kw>
<msg time="2026-04-18T23:43:02.744952" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:02.319414" elapsed="0.425600"/>
</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-18T23:43:02.318324" elapsed="0.426790"/>
</kw>
<msg time="2026-04-18T23:43:02.745156" 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-18T23:43:02.317279" elapsed="0.427924"/>
</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-18T23:43:02.748258" elapsed="0.000309"/>
</kw>
<kw name="Open 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-18T23:43:02.748727" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:02.749017" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:02.745492" elapsed="0.003688"/>
</kw>
<msg time="2026-04-18T23:43:02.749272" level="INFO">${output} = 1</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-18T23:43:02.315559" elapsed="0.433738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:02.749721" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:02.749475" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:02.749806" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:02.749956" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:02.312755" elapsed="0.437226"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:02.750042" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:43:02.750191" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:02.310205" elapsed="0.440011"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:02.750847" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:02.750431" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:02.309140" elapsed="0.441917">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:04.754688" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:04.753875" elapsed="0.000885"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:04.756802" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:04.756199" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:04.758778" 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-18T23:43:04.758922" 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-18T23:43:04.758478" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:43:04.764689" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:04.764012" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:04.763635" elapsed="0.001253"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:04.766961" 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-18T23:43:04.767340" 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-18T23:43:04.766337" elapsed="0.001140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:04.769686" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:04.768882" elapsed="0.000961"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:04.771923" level="INFO">${conn_id} = 229</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:04.771223" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:04.774376" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:04.774454" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:04.774080" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:04.774688" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:04.776076" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:05.091722" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:04.775737" elapsed="0.316136"/>
</kw>
<msg time="2026-04-18T23:43:05.091957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:04.775374" elapsed="0.316690"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:04.773258" elapsed="0.319095"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:05.093859" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:05.116804" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:05.117346" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:05.117677" 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-18T23:43:05.093446" elapsed="0.024439"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:05.120102" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:05.123310" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:05.122304" elapsed="0.001232"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:05.124441" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:05.123884" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:05.123759" elapsed="0.000981"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:05.125535" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-18T23:43:05.125088" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:05.124948" elapsed="0.000933"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:05.126206" elapsed="0.000089"/>
</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-18T23:43:05.131845" elapsed="0.000345"/>
</kw>
<kw name="Open 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-18T23:43:05.132458" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:05.132817" 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-18T23:43:05.128396" elapsed="0.004627"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:04.761719" elapsed="0.371545"/>
</kw>
<msg time="2026-04-18T23:43:05.133571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:04.760751" elapsed="0.372876"/>
</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-18T23:43:04.759977" elapsed="0.373729"/>
</kw>
<msg time="2026-04-18T23:43:05.133745" 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-18T23:43:04.759239" elapsed="0.374551"/>
</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-18T23:43:05.136894" elapsed="0.000344"/>
</kw>
<kw name="Open 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-18T23:43:05.137404" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:05.137696" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:05.134134" elapsed="0.003707"/>
</kw>
<msg time="2026-04-18T23:43:05.137929" level="INFO">${output} = 1</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-18T23:43:04.757418" elapsed="0.380536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:05.138408" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:05.138141" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:05.138494" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:05.138643" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:04.755258" elapsed="0.383409"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:05.138712" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:05.138853" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:04.752956" elapsed="0.385921"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:05.139519" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:05.139119" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:04.751859" elapsed="0.387839">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:07.142332" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:07.141776" elapsed="0.000607"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:07.143870" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:07.143462" elapsed="0.000449"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:07.145182" 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-18T23:43:07.145336" 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-18T23:43:07.144896" elapsed="0.000484"/>
</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-18T23:43:07.153463" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:07.152713" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:07.150209" elapsed="0.003470"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:07.155803" 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-18T23:43:07.156189" 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-18T23:43:07.155147" elapsed="0.001201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:07.158669" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:07.157807" elapsed="0.001044"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:07.161188" level="INFO">${conn_id} = 232</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:07.160186" elapsed="0.001132"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:07.164119" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:07.164199" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:07.163779" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:07.164440" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:07.165967" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:07.475717" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:07.165639" elapsed="0.310228"/>
</kw>
<msg time="2026-04-18T23:43:07.475960" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:07.165262" elapsed="0.310809"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:07.162801" elapsed="0.313570"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:07.477920" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:07.490244" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:07.490744" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:07.491148" 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-18T23:43:07.477516" elapsed="0.013845"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:07.493646" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:07.496843" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:07.495787" elapsed="0.001207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:07.497701" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:07.497260" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:07.497178" elapsed="0.000723"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:07.498453" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:43:07.498162" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:07.498087" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:07.498787" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:07.505429" elapsed="0.000457"/>
</kw>
<kw name="Open 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-18T23:43:07.506200" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:07.506688" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:07.500762" elapsed="0.006229"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:07.148223" elapsed="0.359104"/>
</kw>
<msg time="2026-04-18T23:43:07.507798" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:07.147222" elapsed="0.360646"/>
</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-18T23:43:07.146419" elapsed="0.361530"/>
</kw>
<msg time="2026-04-18T23:43:07.507988" 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-18T23:43:07.145620" elapsed="0.362466"/>
</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-18T23:43:07.511118" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:43:07.511617" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:07.511925" elapsed="0.000161"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:07.508378" elapsed="0.003763"/>
</kw>
<msg time="2026-04-18T23:43:07.512233" level="INFO">${output} = 1</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-18T23:43:07.144262" elapsed="0.367997"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:07.512688" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:07.512439" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:07.512776" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:07.512928" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:07.142802" elapsed="0.370152"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:07.513005" elapsed="0.000041"/>
</return>
<msg time="2026-04-18T23:43:07.513167" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:07.141207" elapsed="0.371985"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:07.513741" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:07.513348" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:07.140404" elapsed="0.373517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:09.516253" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:09.515753" elapsed="0.000547"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:09.517675" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:09.517270" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:09.518862" 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-18T23:43:09.519231" 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-18T23:43:09.518628" elapsed="0.000642"/>
</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-18T23:43:09.524554" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:09.523893" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:09.523816" elapsed="0.000963"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:09.527598" 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-18T23:43:09.528108" 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-18T23:43:09.526368" elapsed="0.001935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:09.530438" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:09.529839" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:09.532363" level="INFO">${conn_id} = 235</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:09.531633" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:09.534896" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:09.534978" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:09.534566" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:09.535377" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:09.536711" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:09.856098" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:09.536351" elapsed="0.319909"/>
</kw>
<msg time="2026-04-18T23:43:09.856349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:09.535965" elapsed="0.320477"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:09.533743" elapsed="0.322977"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:09.858257" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:09.880905" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:09.881450" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:09.881784" 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-18T23:43:09.857830" elapsed="0.024169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:09.884257" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:09.887503" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:09.886518" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:09.888648" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:09.888120" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:09.887965" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:09.889772" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-18T23:43:09.889321" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:09.889212" elapsed="0.001117"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:09.890510" 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-18T23:43:09.896591" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:09.897306" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:09.897671" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:09.893197" elapsed="0.004689"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:09.521975" elapsed="0.376209"/>
</kw>
<msg time="2026-04-18T23:43:09.898496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:09.521043" elapsed="0.377511"/>
</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-18T23:43:09.520245" elapsed="0.378392"/>
</kw>
<msg time="2026-04-18T23:43:09.898678" 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-18T23:43:09.519496" elapsed="0.379229"/>
</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-18T23:43:09.901696" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:43:09.902200" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:09.902495" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:09.899015" elapsed="0.003630"/>
</kw>
<msg time="2026-04-18T23:43:09.902735" level="INFO">${output} = 1</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-18T23:43:09.518023" elapsed="0.384738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:09.903208" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:09.902940" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:09.903296" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:43:09.903450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:09.516590" elapsed="0.386886"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:09.903523" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:09.903667" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:09.515237" elapsed="0.388455"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:09.904283" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:09.903854" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:09.514504" elapsed="0.389961">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:11.907947" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:11.907210" elapsed="0.000807"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:11.910131" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:11.909487" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:11.912068" 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-18T23:43:11.912300" 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-18T23:43:11.911703" elapsed="0.000656"/>
</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-18T23:43:11.917086" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:11.916554" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:11.916496" elapsed="0.000811"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:11.919055" 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-18T23:43:11.919317" 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-18T23:43:11.918343" elapsed="0.001075"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:11.920968" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:11.920407" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:11.922835" level="INFO">${conn_id} = 238</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:11.922142" elapsed="0.000796"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:11.925318" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:11.925396" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:11.925013" 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-18T23:43:11.925630" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:11.926884" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:12.250150" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:11.926560" elapsed="0.323738"/>
</kw>
<msg time="2026-04-18T23:43:12.250382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:11.926198" elapsed="0.324273"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:11.924214" elapsed="0.326541"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:12.252269" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:12.274967" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:12.275521" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:12.275856" 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-18T23:43:12.251864" elapsed="0.024245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:12.278358" elapsed="0.000967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:12.281599" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:12.280577" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:12.282750" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:12.282217" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:12.282090" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:12.283876" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-18T23:43:12.283415" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:12.283307" elapsed="0.001057"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:12.284545" elapsed="0.000087"/>
</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-18T23:43:12.290621" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:43:12.291189" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:12.291547" 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-18T23:43:12.287278" elapsed="0.004477"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:11.915170" elapsed="0.376809"/>
</kw>
<msg time="2026-04-18T23:43:12.292366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:11.914470" elapsed="0.377954"/>
</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-18T23:43:11.913919" elapsed="0.378586"/>
</kw>
<msg time="2026-04-18T23:43:12.292547" 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-18T23:43:11.912766" elapsed="0.379827"/>
</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-18T23:43:12.295625" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:12.296123" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:12.296427" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:12.292886" elapsed="0.003697"/>
</kw>
<msg time="2026-04-18T23:43:12.296674" level="INFO">${output} = 1</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-18T23:43:11.910677" elapsed="0.386023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:12.297191" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:12.296876" elapsed="0.000360"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:12.297279" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:12.297431" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:11.908502" elapsed="0.388954"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:12.297503" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:12.297647" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:11.906376" elapsed="0.391296"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:12.298265" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:12.297829" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:11.905305" elapsed="0.393143">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:14.302164" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:14.301330" elapsed="0.000907"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:14.304258" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:14.303634" elapsed="0.000683"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:14.306118" 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-18T23:43:14.306342" 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-18T23:43:14.305752" elapsed="0.000647"/>
</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-18T23:43:14.314296" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:14.313636" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:14.313515" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:14.316139" 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-18T23:43:14.316380" 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-18T23:43:14.315421" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:14.317986" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:14.317448" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:14.319895" level="INFO">${conn_id} = 241</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:14.319202" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:14.322287" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:14.322365" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:14.321966" 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-18T23:43:14.322597" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:14.323976" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:14.637733" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:14.323649" elapsed="0.314188"/>
</kw>
<msg time="2026-04-18T23:43:14.637905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:14.323289" elapsed="0.314722"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:14.321216" elapsed="0.317069"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:14.639665" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:14.662895" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:14.663449" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:14.663788" 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-18T23:43:14.639316" elapsed="0.024682"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:14.666348" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:14.669470" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:14.668497" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:14.670566" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:14.670066" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:14.669915" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:14.671661" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-18T23:43:14.671217" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:14.671108" elapsed="0.000906"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:14.672343" elapsed="0.000084"/>
</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-18T23:43:14.678059" elapsed="0.000326"/>
</kw>
<kw name="Open 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-18T23:43:14.678593" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:14.678952" 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-18T23:43:14.674587" elapsed="0.004592"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:14.310586" elapsed="0.368820"/>
</kw>
<msg time="2026-04-18T23:43:14.679713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:14.309107" elapsed="0.370662"/>
</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-18T23:43:14.307887" elapsed="0.371964"/>
</kw>
<msg time="2026-04-18T23:43:14.679891" 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-18T23:43:14.306744" elapsed="0.373191"/>
</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-18T23:43:14.683127" elapsed="0.000309"/>
</kw>
<kw name="Open 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-18T23:43:14.683598" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:14.683888" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:14.680362" elapsed="0.003687"/>
</kw>
<msg time="2026-04-18T23:43:14.684141" level="INFO">${output} = 1</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-18T23:43:14.304803" elapsed="0.379364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:14.684585" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:14.684341" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:14.684671" elapsed="0.000050"/>
</return>
<msg time="2026-04-18T23:43:14.684854" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:14.302682" elapsed="0.382197"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:14.684926" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:14.685261" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:14.300496" elapsed="0.384791"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:14.685853" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:14.685452" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:14.299384" elapsed="0.386690">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:16.690485" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:16.689515" elapsed="0.001058"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:16.692791" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:16.692304" elapsed="0.000538"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:16.694494" 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-18T23:43:16.694675" 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-18T23:43:16.694208" elapsed="0.000516"/>
</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-18T23:43:16.700380" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:16.699751" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:16.699361" elapsed="0.001198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:16.702392" 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-18T23:43:16.702698" 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-18T23:43:16.701804" elapsed="0.001022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:16.704789" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:16.704098" elapsed="0.000831"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:16.707162" level="INFO">${conn_id} = 244</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:16.706184" elapsed="0.001101"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:16.710154" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:16.710253" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:16.709775" elapsed="0.000509"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:16.710560" elapsed="0.000728"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:16.712262" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:17.018235" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:16.711914" elapsed="0.306533"/>
</kw>
<msg time="2026-04-18T23:43:17.018554" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:16.711540" elapsed="0.307132"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:16.708797" elapsed="0.310180"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:17.020544" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:17.042931" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:17.043456" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:17.043786" 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-18T23:43:17.020134" elapsed="0.023861"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:17.046258" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:17.049462" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:17.048458" elapsed="0.001230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:17.050598" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:17.050084" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:17.049929" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:17.051834" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-18T23:43:17.051395" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:17.051284" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:17.052418" elapsed="0.000086"/>
</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-18T23:43:17.059689" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:43:17.060246" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:17.060619" 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-18T23:43:17.055430" elapsed="0.005392"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:16.697656" elapsed="0.363400"/>
</kw>
<msg time="2026-04-18T23:43:17.061360" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:16.696749" elapsed="0.364667"/>
</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-18T23:43:16.696056" elapsed="0.365440"/>
</kw>
<msg time="2026-04-18T23:43:17.061536" 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-18T23:43:16.695024" elapsed="0.366557"/>
</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-18T23:43:17.064632" elapsed="0.000305"/>
</kw>
<kw name="Open 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-18T23:43:17.065116" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:17.065408" 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-18T23:43:17.061868" elapsed="0.003691"/>
</kw>
<msg time="2026-04-18T23:43:17.065797" level="INFO">${output} = 1</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-18T23:43:16.693270" elapsed="0.372554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:17.066270" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:17.066004" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:17.066358" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:17.066509" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:16.691210" elapsed="0.375324"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:17.066581" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:17.066725" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:16.688426" elapsed="0.378323"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:17.067362" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:17.066915" elapsed="0.000537">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:16.686904" elapsed="0.380664">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:19.071077" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:19.070319" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:19.073246" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:19.072588" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:19.075283" 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-18T23:43:19.075519" 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-18T23:43:19.074875" elapsed="0.000704"/>
</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-18T23:43:19.080537" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:19.080023" elapsed="0.000603"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:19.079758" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:19.082144" 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-18T23:43:19.082385" 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-18T23:43:19.081681" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:19.084094" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:19.083489" elapsed="0.000716"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:19.085889" level="INFO">${conn_id} = 247</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:19.085197" elapsed="0.000792"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:19.088348" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:19.088425" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:19.088049" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:19.088679" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:19.089921" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:19.413137" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:19.089601" elapsed="0.323774"/>
</kw>
<msg time="2026-04-18T23:43:19.413468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:19.089244" elapsed="0.324317"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:19.087275" elapsed="0.326568"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:19.415383" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:19.438264" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:19.438791" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:19.439188" 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-18T23:43:19.414953" elapsed="0.024453"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:19.441632" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:19.444237" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:19.443575" 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-18T23:43:19.444935" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:19.444608" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:19.444528" 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-18T23:43:19.445633" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-18T23:43:19.445352" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:19.445281" elapsed="0.000579"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:19.445971" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:19.452536" 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-18T23:43:19.453158" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:19.453520" 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-18T23:43:19.447866" elapsed="0.005860"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:19.078396" elapsed="0.375551"/>
</kw>
<msg time="2026-04-18T23:43:19.454304" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:19.077706" elapsed="0.376660"/>
</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-18T23:43:19.077166" elapsed="0.377280"/>
</kw>
<msg time="2026-04-18T23:43:19.454487" 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-18T23:43:19.075930" elapsed="0.378602"/>
</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-18T23:43:19.457585" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:43:19.458097" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:19.458393" 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-18T23:43:19.454817" elapsed="0.003722"/>
</kw>
<msg time="2026-04-18T23:43:19.458630" level="INFO">${output} = 1</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-18T23:43:19.073808" elapsed="0.384847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:19.459137" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:19.458833" elapsed="0.000349"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:19.459225" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:43:19.459374" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:19.071641" elapsed="0.387758"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:19.459444" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:19.459587" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:19.069482" elapsed="0.390129"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:19.460247" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:19.459827" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:19.068431" elapsed="0.392024">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:21.464299" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:21.463484" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:21.466666" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:21.465912" elapsed="0.000852"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:21.468108" 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-18T23:43:21.468263" 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-18T23:43:21.467859" elapsed="0.000442"/>
</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-18T23:43:21.474773" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:21.474259" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:21.472453" elapsed="0.002463"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:21.476397" 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-18T23:43:21.476642" 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-18T23:43:21.475913" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:21.478306" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:21.477728" elapsed="0.000704"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:21.480372" level="INFO">${conn_id} = 250</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:21.479575" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:21.482790" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:21.482870" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:21.482498" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:21.483138" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:21.484570" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:21.799187" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:21.484236" elapsed="0.315127"/>
</kw>
<msg time="2026-04-18T23:43:21.799453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:21.483707" elapsed="0.315844"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:21.481669" elapsed="0.318184"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:21.801472" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:21.824483" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:21.825090" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:21.825439" 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-18T23:43:21.801011" elapsed="0.024641"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:21.827871" elapsed="0.000975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:21.830462" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:21.829783" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:21.831196" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:21.830838" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:21.830754" elapsed="0.000678"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:21.831945" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:43:21.831652" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:21.831580" elapsed="0.000613"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:21.832302" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:21.881677" elapsed="0.000479"/>
</kw>
<kw name="Open 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-18T23:43:21.882394" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:21.882789" 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-18T23:43:21.834299" elapsed="0.048709"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:21.471075" elapsed="0.412190"/>
</kw>
<msg time="2026-04-18T23:43:21.883592" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:21.470008" elapsed="0.413654"/>
</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-18T23:43:21.469256" elapsed="0.414490"/>
</kw>
<msg time="2026-04-18T23:43:21.883788" 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-18T23:43:21.468521" elapsed="0.415313"/>
</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-18T23:43:21.886911" elapsed="0.000335"/>
</kw>
<kw name="Open 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-18T23:43:21.887412" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:21.887706" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:21.884186" elapsed="0.003667"/>
</kw>
<msg time="2026-04-18T23:43:21.887949" level="INFO">${output} = 1</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-18T23:43:21.467276" elapsed="0.420698"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:21.888473" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:21.888188" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:21.888577" elapsed="0.000038"/>
</return>
<msg time="2026-04-18T23:43:21.888746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:21.464859" elapsed="0.423912"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:21.888818" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:21.888961" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:21.462407" elapsed="0.426579"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:21.889623" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:21.889209" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:21.461236" elapsed="0.428580">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:23.893284" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:23.892526" elapsed="0.000826"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:23.895663" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:23.894970" elapsed="0.000758"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:23.897588" 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-18T23:43:23.897808" 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-18T23:43:23.897254" elapsed="0.000613"/>
</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-18T23:43:23.902848" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:23.902372" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:23.902314" elapsed="0.000678"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:23.904471" 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-18T23:43:23.904710" 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-18T23:43:23.904003" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:23.906334" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:23.905779" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:23.908143" level="INFO">${conn_id} = 253</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:23.907408" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:23.910571" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:23.910648" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:23.910277" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:23.910882" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:23.912259" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:24.236553" 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 Sat Apr 18 23:42:23 UTC 2026

  System load:  0.26               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:23.911873" elapsed="0.324821"/>
</kw>
<msg time="2026-04-18T23:43:24.236777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:23.911451" elapsed="0.325418"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:23.909428" elapsed="0.327740"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:24.238670" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:24.261470" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:24.261966" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:24.262348" 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-18T23:43:24.238264" elapsed="0.024320"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:24.264904" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:24.268077" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:24.267245" elapsed="0.000976"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:24.268865" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:24.268447" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:24.268365" elapsed="0.000713"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:24.269567" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-18T23:43:24.269284" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:24.269216" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:24.269899" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:24.277810" elapsed="0.000820"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:24.279324" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:24.279849" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:24.271886" elapsed="0.008288"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:23.900918" elapsed="0.379590"/>
</kw>
<msg time="2026-04-18T23:43:24.280963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:23.899967" elapsed="0.381099"/>
</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-18T23:43:23.899401" elapsed="0.381786"/>
</kw>
<msg time="2026-04-18T23:43:24.281246" 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-18T23:43:23.898246" elapsed="0.383068"/>
</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-18T23:43:24.285778" 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-18T23:43:24.286512" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:24.286942" elapsed="0.000213"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:24.281741" elapsed="0.005489"/>
</kw>
<msg time="2026-04-18T23:43:24.287363" level="INFO">${output} = 1</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-18T23:43:23.896310" elapsed="0.391090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:24.288023" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:24.287662" elapsed="0.000448"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:24.288172" elapsed="0.000043"/>
</return>
<msg time="2026-04-18T23:43:24.288395" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:23.893937" elapsed="0.394494"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:24.288498" elapsed="0.000037"/>
</return>
<msg time="2026-04-18T23:43:24.288705" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:23.891670" elapsed="0.397071"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:24.289556" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:24.288967" elapsed="0.000691">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:23.890630" elapsed="0.399184">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:26.293391" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:26.292627" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:26.295508" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:26.294869" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:26.297045" 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-18T23:43:26.297315" 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-18T23:43:26.296797" elapsed="0.000556"/>
</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-18T23:43:26.302865" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:26.302232" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:26.302155" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:26.305079" 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-18T23:43:26.305415" 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-18T23:43:26.304443" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:26.307662" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:26.306896" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:26.309722" level="INFO">${conn_id} = 256</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:26.308992" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:26.312132" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:26.312220" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:26.311830" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:26.312457" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:26.313881" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:26.906997" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:26.313558" elapsed="0.593619"/>
</kw>
<msg time="2026-04-18T23:43:26.907265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:26.313009" elapsed="0.594353"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:26.311063" elapsed="0.596593"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:26.909193" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:26.932469" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:26.932970" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:26.933346" 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-18T23:43:26.908766" elapsed="0.024789"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:26.935827" elapsed="0.000963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:26.939169" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:26.938151" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:26.940380" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:26.939767" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:26.939639" elapsed="0.001036"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:26.941527" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-18T23:43:26.941059" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:26.940901" elapsed="0.000996"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:26.942382" elapsed="0.000092"/>
</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-18T23:43:26.947466" elapsed="0.000342"/>
</kw>
<kw name="Open 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-18T23:43:26.948095" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:26.948498" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:26.944008" elapsed="0.004710"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:26.300004" elapsed="0.648949"/>
</kw>
<msg time="2026-04-18T23:43:26.949279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:26.299072" elapsed="0.650268"/>
</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-18T23:43:26.298313" elapsed="0.651119"/>
</kw>
<msg time="2026-04-18T23:43:26.949476" 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-18T23:43:26.297576" elapsed="0.651947"/>
</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-18T23:43:26.952648" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:43:26.953164" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:26.953465" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:26.949817" elapsed="0.003801"/>
</kw>
<msg time="2026-04-18T23:43:26.953712" level="INFO">${output} = 1</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-18T23:43:26.296148" elapsed="0.657591"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:26.954341" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:26.953935" elapsed="0.000453"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:26.954432" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:43:26.954589" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:26.293916" elapsed="0.660699"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:26.954663" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:43:26.954811" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:26.291732" elapsed="0.663104"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:26.955435" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:26.955007" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:26.290673" elapsed="0.664958">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:28.957683" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:28.957305" elapsed="0.000412"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:28.958658" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:28.958376" elapsed="0.000309"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:28.959544" 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-18T23:43:28.959647" 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-18T23:43:28.959359" elapsed="0.000315"/>
</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-18T23:43:28.965396" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:28.964643" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:28.964562" elapsed="0.001164"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:28.968016" 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-18T23:43:28.968417" 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-18T23:43:28.967297" elapsed="0.001286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:28.971095" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:28.970276" elapsed="0.000977"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:28.973731" level="INFO">${conn_id} = 259</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:28.972693" elapsed="0.001134"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:28.976231" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:28.976308" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:28.975908" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:28.976543" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:28.978171" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:29.301782" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:28.977769" elapsed="0.324198"/>
</kw>
<msg time="2026-04-18T23:43:29.302098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:28.977387" elapsed="0.324827"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:28.975016" elapsed="0.327541"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:29.304871" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:29.327947" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:29.328541" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:29.328771" 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-18T23:43:29.304268" elapsed="0.024647"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:29.331467" elapsed="0.000688"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:29.333951" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:29.333267" elapsed="0.000929"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:29.334787" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:29.334438" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:29.334353" elapsed="0.000631"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:29.335581" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-18T23:43:29.335264" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:29.335192" elapsed="0.000633"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:29.335941" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:29.343609" elapsed="0.000546"/>
</kw>
<kw name="Open 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-18T23:43:29.344510" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:29.345065" elapsed="0.000154"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:29.338287" elapsed="0.007090"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:28.961847" elapsed="0.383858"/>
</kw>
<msg time="2026-04-18T23:43:29.347295" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:28.960923" elapsed="0.386498"/>
</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-18T23:43:28.960388" elapsed="0.387170"/>
</kw>
<msg time="2026-04-18T23:43:29.347606" 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-18T23:43:28.959839" elapsed="0.387819"/>
</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-18T23:43:29.351316" elapsed="0.000424"/>
</kw>
<kw name="Open 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-18T23:43:29.352001" elapsed="0.000347"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:29.352527" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:29.348157" elapsed="0.004662"/>
</kw>
<msg time="2026-04-18T23:43:29.352923" level="INFO">${output} = 1</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-18T23:43:28.958906" elapsed="0.394043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:29.354534" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:29.354152" elapsed="0.000443"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:29.354652" elapsed="0.000045"/>
</return>
<msg time="2026-04-18T23:43:29.354845" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:28.957931" elapsed="0.396940"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:29.354922" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:43:29.355103" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:28.956868" elapsed="0.398261"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:29.355740" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:29.355315" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:28.956202" elapsed="0.399739">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:31.359687" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:31.358879" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:31.361751" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:31.361290" elapsed="0.000499"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:31.362942" 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-18T23:43:31.363104" 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-18T23:43:31.362694" elapsed="0.000448"/>
</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-18T23:43:31.368814" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:31.368157" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:31.368080" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:31.370977" 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-18T23:43:31.371340" 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-18T23:43:31.370374" elapsed="0.001105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:31.373659" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:31.372877" elapsed="0.000890"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:31.375594" level="INFO">${conn_id} = 262</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:31.374815" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:31.377975" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:31.378069" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:31.377679" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:31.378305" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:31.379733" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:31.702055" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:31.379408" elapsed="0.322738"/>
</kw>
<msg time="2026-04-18T23:43:31.702213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:31.378856" elapsed="0.323430"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:31.376897" elapsed="0.325618"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:31.703882" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:31.727120" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:31.727616" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:31.727988" 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-18T23:43:31.703545" elapsed="0.024706"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:31.730469" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:31.733589" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:31.732608" elapsed="0.001241"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:31.734701" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:31.734220" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:31.734099" elapsed="0.000886"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:31.735814" elapsed="0.000160"/>
</return>
<status status="PASS" start="2026-04-18T23:43:31.735367" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:31.735258" elapsed="0.000989"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:31.736425" elapsed="0.000084"/>
</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-18T23:43:31.741322" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:43:31.741861" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:31.742244" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:31.737900" elapsed="0.004552"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:31.365825" elapsed="0.376849"/>
</kw>
<msg time="2026-04-18T23:43:31.742976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:31.364860" elapsed="0.378201"/>
</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-18T23:43:31.364091" elapsed="0.379059"/>
</kw>
<msg time="2026-04-18T23:43:31.743192" 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-18T23:43:31.363363" elapsed="0.379877"/>
</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-18T23:43:31.746343" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:43:31.746817" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:31.747130" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:31.743582" elapsed="0.003699"/>
</kw>
<msg time="2026-04-18T23:43:31.747370" level="INFO">${output} = 1</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-18T23:43:31.362119" elapsed="0.385276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:31.747822" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:31.747576" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:31.747934" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:43:31.748105" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:31.360259" elapsed="0.387871"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:31.748177" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:31.748321" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:31.358018" elapsed="0.390327"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:31.748898" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:31.748501" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:31.356912" elapsed="0.392287">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:33.752584" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:33.751823" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:33.754313" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:33.753904" elapsed="0.000447"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:33.755463" 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-18T23:43:33.755604" 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-18T23:43:33.755242" elapsed="0.000399"/>
</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-18T23:43:33.761284" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:33.760601" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:33.760216" elapsed="0.001274"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:33.763499" 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-18T23:43:33.763837" 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-18T23:43:33.762842" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:33.765992" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:33.765398" elapsed="0.000720"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:33.767872" level="INFO">${conn_id} = 265</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:33.767110" elapsed="0.000864"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:33.770469" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:33.770548" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:33.770181" 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-18T23:43:33.770785" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:33.772335" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:34.084102" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:33.771827" elapsed="0.312427"/>
</kw>
<msg time="2026-04-18T23:43:34.084338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:33.771460" elapsed="0.312990"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:33.769379" elapsed="0.315360"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:34.086285" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:34.108905" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:34.109451" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:34.109786" 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-18T23:43:34.085849" elapsed="0.024151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:34.112258" elapsed="0.000938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:34.115485" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:34.114449" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:34.116659" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:34.116100" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:34.115942" elapsed="0.001010"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:34.117696" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:43:34.117316" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:34.117207" elapsed="0.000713"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:34.118051" elapsed="0.000057"/>
</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-18T23:43:34.124738" elapsed="0.000488"/>
</kw>
<kw name="Open 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-18T23:43:34.125520" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:34.126013" elapsed="0.000162"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:34.119990" 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-18T23:43:33.758380" elapsed="0.368253"/>
</kw>
<msg time="2026-04-18T23:43:34.127186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:33.757410" elapsed="0.369856"/>
</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-18T23:43:33.756610" elapsed="0.370769"/>
</kw>
<msg time="2026-04-18T23:43:34.127436" 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-18T23:43:33.755868" elapsed="0.371640"/>
</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-18T23:43:34.130968" 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-18T23:43:34.131519" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:34.131821" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:34.127912" elapsed="0.004059"/>
</kw>
<msg time="2026-04-18T23:43:34.132144" level="INFO">${output} = 1</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-18T23:43:33.754650" elapsed="0.377521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:34.132656" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:34.132390" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:34.132747" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:43:34.132902" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:33.753192" elapsed="0.379735"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:34.132975" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:34.133139" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:33.750986" elapsed="0.382178"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:34.133728" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:34.133325" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:33.749938" elapsed="0.383976">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:36.137693" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:36.136823" elapsed="0.000941"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:36.139412" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:36.139009" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:36.140582" 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-18T23:43:36.140723" 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-18T23:43:36.140356" elapsed="0.000403"/>
</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-18T23:43:36.146375" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:36.145665" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:36.145285" elapsed="0.001287"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:36.148597" 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-18T23:43:36.148941" 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-18T23:43:36.147954" elapsed="0.001177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:36.151126" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:36.150531" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:36.152938" level="INFO">${conn_id} = 268</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:36.152240" elapsed="0.000893"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:36.155470" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:36.155548" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:36.155190" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:36.155783" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:36.157169" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:36.479244" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:36.156710" elapsed="0.322771"/>
</kw>
<msg time="2026-04-18T23:43:36.479562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:36.156351" elapsed="0.323294"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:36.154402" elapsed="0.325510"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:36.481412" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:36.504735" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:36.505351" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:36.505683" 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-18T23:43:36.481003" elapsed="0.024889"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:36.508431" elapsed="0.001208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:36.512395" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:36.511485" elapsed="0.001087"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:36.513238" elapsed="0.000055"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:36.512832" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:36.512744" elapsed="0.000733"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:36.514030" elapsed="0.000212"/>
</return>
<status status="PASS" start="2026-04-18T23:43:36.513710" elapsed="0.000610"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:36.513633" elapsed="0.000777"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:36.514536" elapsed="0.000059"/>
</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-18T23:43:36.523107" 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-18T23:43:36.523711" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:36.524165" 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-18T23:43:36.516684" elapsed="0.007701"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:36.143422" elapsed="0.381197"/>
</kw>
<msg time="2026-04-18T23:43:36.524954" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:36.142488" elapsed="0.382531"/>
</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-18T23:43:36.141712" elapsed="0.383408"/>
</kw>
<msg time="2026-04-18T23:43:36.525161" 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-18T23:43:36.140980" elapsed="0.384227"/>
</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-18T23:43:36.528339" elapsed="0.000318"/>
</kw>
<kw name="Open 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-18T23:43:36.528824" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:36.529146" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:36.525504" elapsed="0.003797"/>
</kw>
<msg time="2026-04-18T23:43:36.529396" level="INFO">${output} = 1</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-18T23:43:36.139753" elapsed="0.389668"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:36.529883" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:36.529625" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:36.529974" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:43:36.530152" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:36.138323" elapsed="0.391855"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:36.530225" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:36.530371" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:36.135781" elapsed="0.394615"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:36.531031" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:36.530620" elapsed="0.000575">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:36.134736" elapsed="0.396572">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:38.535033" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:38.534275" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:38.536773" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:38.536371" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:38.538003" 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-18T23:43:38.538177" 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-18T23:43:38.537764" elapsed="0.000451"/>
</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-18T23:43:38.543625" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:38.542959" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:38.542883" elapsed="0.000972"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:38.546201" 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-18T23:43:38.546539" 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-18T23:43:38.545238" elapsed="0.001441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:38.548920" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:38.548193" elapsed="0.000841"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:38.550762" level="INFO">${conn_id} = 271</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:38.550062" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:38.553250" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:38.553328" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:38.552942" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:38.553565" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:38.554858" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:38.895887" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:38.554532" elapsed="0.341529"/>
</kw>
<msg time="2026-04-18T23:43:38.896151" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:38.554168" elapsed="0.342077"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:38.552193" elapsed="0.344363"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:38.898134" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:38.921392" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:38.921908" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:38.922312" 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-18T23:43:38.897698" elapsed="0.024838"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:38.924825" elapsed="0.001032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:38.927375" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:38.926705" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:38.928168" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:38.927799" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:38.927717" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:38.928860" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-18T23:43:38.928570" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:38.928498" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:38.929229" elapsed="0.000056"/>
</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-18T23:43:38.935750" elapsed="0.000366"/>
</kw>
<kw name="Open 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-18T23:43:38.936332" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:38.936700" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:38.931246" elapsed="0.005667"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:38.541008" elapsed="0.396152"/>
</kw>
<msg time="2026-04-18T23:43:38.937474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:38.540015" elapsed="0.397518"/>
</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-18T23:43:38.539206" elapsed="0.398413"/>
</kw>
<msg time="2026-04-18T23:43:38.937661" 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-18T23:43:38.538445" elapsed="0.399264"/>
</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-18T23:43:38.940865" elapsed="0.000336"/>
</kw>
<kw name="Open 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-18T23:43:38.941372" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:38.941674" 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-18T23:43:38.938037" elapsed="0.003791"/>
</kw>
<msg time="2026-04-18T23:43:38.941926" level="INFO">${output} = 1</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-18T23:43:38.537151" elapsed="0.404834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:38.942452" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:38.942194" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:38.942542" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:43:38.942701" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:38.535733" elapsed="0.406999"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:38.942781" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:38.942931" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:38.533399" elapsed="0.409557"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:38.943553" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:38.943145" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:38.532303" elapsed="0.411441">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:40.947782" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:40.946938" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:40.950266" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:40.949563" elapsed="0.000804"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:40.952365" 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-18T23:43:40.952636" 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-18T23:43:40.951964" elapsed="0.000745"/>
</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-18T23:43:40.957885" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:40.957356" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:40.957295" elapsed="0.000754"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:40.959832" 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-18T23:43:40.960111" 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-18T23:43:40.959128" elapsed="0.001095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:40.961763" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:40.961215" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:40.963647" level="INFO">${conn_id} = 274</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:40.962892" elapsed="0.000855"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:40.966243" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:40.966324" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:40.965919" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:40.966565" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:40.967942" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:41.279352" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:40.967565" elapsed="0.311944"/>
</kw>
<msg time="2026-04-18T23:43:41.279591" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:40.967178" elapsed="0.312501"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:40.965043" elapsed="0.314924"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:41.281523" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:41.304630" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:41.305182" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:41.305519" 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-18T23:43:41.281119" elapsed="0.024608"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:41.307959" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:41.310325" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:41.309684" 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-18T23:43:41.311133" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:41.310695" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:41.310614" elapsed="0.000713"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:41.311822" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-18T23:43:41.311536" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:41.311467" elapsed="0.000606"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:41.312192" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:41.318271" elapsed="0.000335"/>
</kw>
<kw name="Open 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-18T23:43:41.318819" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:41.319261" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:41.314108" elapsed="0.005363"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:40.955893" elapsed="0.363797"/>
</kw>
<msg time="2026-04-18T23:43:41.319991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:40.955191" elapsed="0.364873"/>
</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-18T23:43:40.954353" elapsed="0.365798"/>
</kw>
<msg time="2026-04-18T23:43:41.320192" 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-18T23:43:40.953117" elapsed="0.367122"/>
</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-18T23:43:41.323446" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:43:41.323918" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:41.324228" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:41.320534" elapsed="0.003841"/>
</kw>
<msg time="2026-04-18T23:43:41.324466" level="INFO">${output} = 1</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-18T23:43:40.950924" elapsed="0.373592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:41.324998" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:41.324735" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:41.325105" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:43:41.325270" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:40.948549" elapsed="0.376748"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:41.325344" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:41.325489" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:40.945961" elapsed="0.379552"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:41.326087" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:41.325670" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:40.944754" elapsed="0.381524">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:43.330041" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:43.329296" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:43.332247" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:43.331548" elapsed="0.000763"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:43.334137" 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-18T23:43:43.334505" 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-18T23:43:43.333776" elapsed="0.000793"/>
</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-18T23:43:43.339799" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:43.339328" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:43.339271" elapsed="0.000666"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:43.341672" 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-18T23:43:43.341920" 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-18T23:43:43.340971" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:43.343706" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:43.343066" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:43.345647" level="INFO">${conn_id} = 277</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:43.344927" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:43.348041" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:43.348307" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:43.347750" elapsed="0.000581"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:43.348558" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:43.349862" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:43.656632" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:43.349536" elapsed="0.307210"/>
</kw>
<msg time="2026-04-18T23:43:43.656819" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:43.349166" elapsed="0.307728"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:43.346961" elapsed="0.310214"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:43.658629" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:43.681293" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:43.681796" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:43.682187" 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-18T23:43:43.658253" elapsed="0.024150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:43.684862" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:43.688280" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:43.687169" elapsed="0.001346"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:43.689446" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:43.688861" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:43.688738" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:43.690567" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-18T23:43:43.690116" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:43.689967" elapsed="0.000954"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:43.691166" elapsed="0.000086"/>
</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-18T23:43:43.696973" 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-18T23:43:43.697664" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:43.698081" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:43.693549" elapsed="0.004747"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:43.337907" elapsed="0.360613"/>
</kw>
<msg time="2026-04-18T23:43:43.698853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:43.337228" elapsed="0.361693"/>
</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-18T23:43:43.336331" elapsed="0.362675"/>
</kw>
<msg time="2026-04-18T23:43:43.699078" 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-18T23:43:43.334931" elapsed="0.364198"/>
</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-18T23:43:43.702255" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:43.702751" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:43.703081" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:43.699422" elapsed="0.003814"/>
</kw>
<msg time="2026-04-18T23:43:43.703330" level="INFO">${output} = 1</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-18T23:43:43.332797" elapsed="0.370559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:43.703805" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:43.703538" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:43.703914" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:43:43.704169" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:43.330592" elapsed="0.373603"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:43.704245" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:43:43.704395" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:43.328428" elapsed="0.375992"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:43.705002" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:43.704581" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:43.327302" elapsed="0.377911">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:45.708304" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:45.707657" elapsed="0.000704"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:45.710072" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:45.709546" elapsed="0.000580"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:45.711658" 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-18T23:43:45.711839" 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-18T23:43:45.711359" elapsed="0.000527"/>
</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-18T23:43:45.716951" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:45.716006" elapsed="0.001142"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:45.715941" elapsed="0.001282"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:45.718961" 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-18T23:43:45.719286" 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-18T23:43:45.718401" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:45.721004" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:45.720429" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:45.722837" level="INFO">${conn_id} = 280</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:45.722113" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:45.725517" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:45.725596" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:45.725219" 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-18T23:43:45.725839" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:45.727204" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:46.032226" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:45.726821" elapsed="0.305568"/>
</kw>
<msg time="2026-04-18T23:43:46.032480" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:45.726449" elapsed="0.306130"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:45.724409" elapsed="0.308457"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:46.034414" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:46.057700" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:46.058265" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:46.058602" 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-18T23:43:46.033973" elapsed="0.024836"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:46.061149" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:46.064429" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:46.063358" elapsed="0.001318"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:46.065576" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:46.065021" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:46.064900" elapsed="0.000972"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:46.066696" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-18T23:43:46.066228" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:46.066119" elapsed="0.000994"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:46.067302" 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-18T23:43:46.073116" 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-18T23:43:46.073673" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:46.074079" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:46.069643" elapsed="0.004649"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:45.714330" elapsed="0.360185"/>
</kw>
<msg time="2026-04-18T23:43:46.074892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:45.713441" elapsed="0.361510"/>
</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-18T23:43:45.712763" elapsed="0.362300"/>
</kw>
<msg time="2026-04-18T23:43:46.075109" 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-18T23:43:45.712119" elapsed="0.363039"/>
</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-18T23:43:46.078307" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:46.078791" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:46.079131" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:46.075454" elapsed="0.003833"/>
</kw>
<msg time="2026-04-18T23:43:46.079381" level="INFO">${output} = 1</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-18T23:43:45.710545" elapsed="0.368861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:46.079840" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:46.079587" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:46.079928" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:43:46.080179" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:45.708745" elapsed="0.371460"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:46.080276" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:43:46.080440" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:45.706938" elapsed="0.373530"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:46.081066" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:46.080629" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:45.705943" elapsed="0.375317">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:48.084903" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:48.084166" elapsed="0.000806"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:48.087090" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:48.086488" elapsed="0.000642"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:48.088251" 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-18T23:43:48.088394" 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-18T23:43:48.088005" elapsed="0.000427"/>
</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-18T23:43:48.094158" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:48.093437" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:48.093054" elapsed="0.001347"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:48.096192" 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-18T23:43:48.096433" 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-18T23:43:48.095691" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:48.098086" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:48.097527" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:48.099973" level="INFO">${conn_id} = 283</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:48.099274" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:48.102452" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:48.102530" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:48.102133" 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-18T23:43:48.102766" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:48.104131" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:48.462965" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:48.103702" elapsed="0.359482"/>
</kw>
<msg time="2026-04-18T23:43:48.463299" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:48.103340" elapsed="0.360077"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:48.101342" elapsed="0.362458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:48.466024" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:48.488684" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:48.489232" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:48.489565" 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-18T23:43:48.465455" elapsed="0.024324"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:48.492097" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:48.495335" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:48.494261" elapsed="0.001342"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:48.496639" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:48.495957" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:48.495833" elapsed="0.001101"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:48.497823" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-18T23:43:48.497294" elapsed="0.000908"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:48.497183" elapsed="0.001157"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:48.498517" 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-18T23:43:48.503727" elapsed="0.000372"/>
</kw>
<kw name="Open 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-18T23:43:48.504313" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:48.504681" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:48.500163" elapsed="0.004729"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:48.091187" elapsed="0.413949"/>
</kw>
<msg time="2026-04-18T23:43:48.505524" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:48.090223" elapsed="0.415366"/>
</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-18T23:43:48.089389" elapsed="0.416284"/>
</kw>
<msg time="2026-04-18T23:43:48.505714" 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-18T23:43:48.088653" elapsed="0.417107"/>
</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-18T23:43:48.508928" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:48.509435" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:48.509728" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:48.506194" elapsed="0.003680"/>
</kw>
<msg time="2026-04-18T23:43:48.509967" level="INFO">${output} = 1</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-18T23:43:48.087434" elapsed="0.422559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:48.510565" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:48.510312" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:48.510654" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:43:48.510806" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:48.085464" elapsed="0.425366"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:48.510878" elapsed="0.000041"/>
</return>
<msg time="2026-04-18T23:43:48.511052" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:48.083316" elapsed="0.427762"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:48.511641" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:48.511237" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:48.082139" elapsed="0.429695">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:50.515391" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:50.514620" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:50.517521" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:50.516855" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:50.519445" 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-18T23:43:50.519673" 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-18T23:43:50.519112" elapsed="0.000621"/>
</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-18T23:43:50.525680" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:50.525204" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:50.524903" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:50.527293" 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-18T23:43:50.527537" 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-18T23:43:50.526834" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:50.529206" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:50.528624" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:50.531017" level="INFO">${conn_id} = 286</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:50.530319" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:50.533521" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:50.533599" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:50.533230" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:50.533835" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:50.535225" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:50.834383" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:50.534877" elapsed="0.299675"/>
</kw>
<msg time="2026-04-18T23:43:50.834642" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:50.534513" elapsed="0.300226"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:50.532368" elapsed="0.302651"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:50.836601" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:50.859206" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:50.859773" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:50.860167" 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-18T23:43:50.836174" elapsed="0.024207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:50.862717" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:50.866201" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:50.864964" elapsed="0.001471"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:50.867343" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:50.866791" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:50.866667" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:50.868466" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-18T23:43:50.867950" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:50.867840" elapsed="0.000982"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:50.869113" elapsed="0.000090"/>
</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-18T23:43:50.876728" 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-18T23:43:50.877366" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:50.877747" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:50.871161" elapsed="0.006796"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:50.523560" elapsed="0.354718"/>
</kw>
<msg time="2026-04-18T23:43:50.878584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:50.522568" elapsed="0.356077"/>
</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-18T23:43:50.521299" elapsed="0.357426"/>
</kw>
<msg time="2026-04-18T23:43:50.878765" 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-18T23:43:50.520118" elapsed="0.358693"/>
</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-18T23:43:50.881807" elapsed="0.000361"/>
</kw>
<kw name="Open 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-18T23:43:50.882333" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:50.882627" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:50.879122" elapsed="0.003652"/>
</kw>
<msg time="2026-04-18T23:43:50.882933" level="INFO">${output} = 1</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-18T23:43:50.518145" elapsed="0.364814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:50.883409" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:50.883160" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:50.883497" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:50.883646" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:50.515909" elapsed="0.367762"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:50.883718" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:43:50.883877" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:50.513732" elapsed="0.370170"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:50.884549" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:50.884072" elapsed="0.000554">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:50.512672" elapsed="0.372068">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:52.888501" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:52.887665" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:52.890781" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:52.890136" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:52.892587" 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-18T23:43:52.892729" 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-18T23:43:52.892353" elapsed="0.000412"/>
</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-18T23:43:52.898180" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:52.897520" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:52.897443" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:52.900568" 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-18T23:43:52.900810" 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-18T23:43:52.899766" elapsed="0.001145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:52.902458" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:52.901891" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:52.904285" level="INFO">${conn_id} = 289</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:52.903561" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:52.906665" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:52.906741" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:52.906384" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:52.906972" elapsed="0.000589"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:52.908579" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:53.225542" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:52.908240" elapsed="0.317549"/>
</kw>
<msg time="2026-04-18T23:43:53.225872" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:52.907804" elapsed="0.318156"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:52.905589" elapsed="0.320678"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:53.227768" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:53.250820" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:53.251367" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:53.251695" 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-18T23:43:53.227374" elapsed="0.024528"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:53.254149" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:53.257295" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:53.256280" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:53.258354" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:53.257923" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:53.257802" elapsed="0.000739"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:53.259105" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:43:53.258735" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:53.258670" elapsed="0.000655"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:53.259438" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:53.266112" elapsed="0.000360"/>
</kw>
<kw name="Open 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-18T23:43:53.266685" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:53.267068" 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-18T23:43:53.261358" elapsed="0.005927"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:52.895526" elapsed="0.371986"/>
</kw>
<msg time="2026-04-18T23:43:53.267827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:52.894525" elapsed="0.373361"/>
</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-18T23:43:52.893767" elapsed="0.374203"/>
</kw>
<msg time="2026-04-18T23:43:53.268011" 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-18T23:43:52.892988" elapsed="0.375086"/>
</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-18T23:43:53.271162" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:43:53.271659" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:53.271954" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:53.268370" elapsed="0.003749"/>
</kw>
<msg time="2026-04-18T23:43:53.272210" level="INFO">${output} = 1</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-18T23:43:52.891506" elapsed="0.380729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:53.272661" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:53.272414" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:53.272749" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:53.272900" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:52.889094" elapsed="0.383831"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:53.272971" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:53.273150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:52.886726" elapsed="0.386450"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:53.273820" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:53.273386" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:52.885610" elapsed="0.388397">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:55.277620" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:55.276829" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:55.279717" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:55.279096" elapsed="0.000680"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:55.281511" 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-18T23:43:55.281665" 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-18T23:43:55.281264" elapsed="0.000439"/>
</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-18T23:43:55.287375" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:55.286673" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:55.286590" elapsed="0.000990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:55.289876" 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-18T23:43:55.290158" 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-18T23:43:55.289140" elapsed="0.001115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:55.291754" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:55.291214" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:55.293612" level="INFO">${conn_id} = 292</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:55.292853" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:55.296125" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:55.296206" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:55.295730" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:55.296473" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:55.297752" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:55.610739" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:55.297426" elapsed="0.313481"/>
</kw>
<msg time="2026-04-18T23:43:55.610994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:55.297059" elapsed="0.314047"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:55.294929" elapsed="0.316479"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:55.612898" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:55.635418" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:55.635953" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:55.636392" 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-18T23:43:55.612494" elapsed="0.024118"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:55.638855" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:55.642136" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:55.641001" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:55.642869" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:55.642536" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:55.642455" 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-18T23:43:55.643578" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:43:55.643294" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:55.643227" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:55.643906" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:55.650487" elapsed="0.000340"/>
</kw>
<kw name="Open 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-18T23:43:55.651056" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:55.651426" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:55.645829" elapsed="0.005805"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:55.284574" elapsed="0.367284"/>
</kw>
<msg time="2026-04-18T23:43:55.652183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:55.283540" elapsed="0.368701"/>
</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-18T23:43:55.282728" elapsed="0.369597"/>
</kw>
<msg time="2026-04-18T23:43:55.652366" 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-18T23:43:55.281940" elapsed="0.370472"/>
</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-18T23:43:55.655523" elapsed="0.000315"/>
</kw>
<kw name="Open 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-18T23:43:55.656004" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:55.656325" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:55.652704" elapsed="0.003770"/>
</kw>
<msg time="2026-04-18T23:43:55.656566" level="INFO">${output} = 1</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-18T23:43:55.280360" elapsed="0.376232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:55.657023" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:55.656772" elapsed="0.000358"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:55.657174" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:43:55.657332" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:55.278170" elapsed="0.379187"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:55.657406" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:43:55.657553" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:55.275961" elapsed="0.381617"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:55.658196" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:55.657751" elapsed="0.000523">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:55.274875" elapsed="0.383512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:43:57.662000" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:43:57.661210" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:43:57.664482" level="INFO">${member_ip} = 10.30.171.206</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-18T23:43:57.663811" elapsed="0.000734"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:57.666435" 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-18T23:43:57.666684" 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-18T23:43:57.666090" elapsed="0.000658"/>
</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-18T23:43:57.673060" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:43:57.672568" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:57.672508" elapsed="0.000695"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:57.675006" 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-18T23:43:57.675292" 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-18T23:43:57.674215" elapsed="0.001178"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:57.676940" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:57.676385" elapsed="0.000697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:43:57.678829" level="INFO">${conn_id} = 295</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:43:57.678114" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:43:57.681302" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:43:57.681380" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:43:57.680996" 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-18T23:43:57.681616" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:43:57.682976" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:43:58.039356" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:43:57.682649" elapsed="0.356863"/>
</kw>
<msg time="2026-04-18T23:43:58.039597" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:57.682283" elapsed="0.357405"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:43:57.680219" elapsed="0.359757"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:43:58.041498" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:43:58.064403" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:43:58.064919" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:43:58.065310" 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-18T23:43:58.041093" elapsed="0.024425"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:58.067776" elapsed="0.000767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:58.069951" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:58.069338" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:58.070809" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:43:58.070367" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:58.070286" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:43:58.071548" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-18T23:43:58.071223" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-18T23:43:58.071157" elapsed="0.000622"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:43:58.071891" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:58.077842" 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-18T23:43:58.078503" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:58.078864" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:58.073733" elapsed="0.005357"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:43:57.671075" elapsed="0.408243"/>
</kw>
<msg time="2026-04-18T23:43:58.079651" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:43:57.670123" elapsed="0.409618"/>
</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-18T23:43:57.668378" elapsed="0.411449"/>
</kw>
<msg time="2026-04-18T23:43:58.079868" 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-18T23:43:57.667143" elapsed="0.412772"/>
</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-18T23:43:58.082979" 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-18T23:43:58.083498" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:43:58.083796" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:43:58.080223" elapsed="0.003721"/>
</kw>
<msg time="2026-04-18T23:43:58.084050" level="INFO">${output} = 1</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-18T23:43:57.665076" elapsed="0.419001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:43:58.084507" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:43:58.084258" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:43:58.084593" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:43:58.084746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:43:57.662741" elapsed="0.422046"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:43:58.084836" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:43:58.084984" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:43:57.660346" elapsed="0.424662"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:43:58.085694" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:43:58.085297" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:43:57.659262" elapsed="0.426621">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:00.089427" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:00.088651" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:00.091567" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:00.090930" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:00.093422" 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-18T23:44:00.093890" 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-18T23:44:00.093078" elapsed="0.000874"/>
</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-18T23:44:00.098304" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:00.097564" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:00.097484" elapsed="0.000988"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:00.099894" 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-18T23:44:00.100150" 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-18T23:44:00.099456" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:00.101803" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:00.101224" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:00.103585" level="INFO">${conn_id} = 298</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:00.102880" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:00.106017" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:00.106113" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:00.105716" 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-18T23:44:00.106350" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:00.107608" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:00.429281" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:43:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:00.107283" elapsed="0.322179"/>
</kw>
<msg time="2026-04-18T23:44:00.429548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:00.106904" elapsed="0.322731"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:00.104871" elapsed="0.325059"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:00.431470" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:00.454157" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:00.454505" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:00.454665" 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-18T23:44:00.431066" elapsed="0.023697"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:00.455853" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:00.457427" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:00.456929" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:00.457952" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:00.457704" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:00.457642" elapsed="0.000466"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:00.458503" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-18T23:44:00.458254" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:00.458205" elapsed="0.000472"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:00.458758" 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-18T23:44:00.463627" elapsed="0.000613"/>
</kw>
<kw name="Open 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-18T23:44:00.464649" elapsed="0.000261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:00.465227" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:00.460202" elapsed="0.005339"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:00.096166" elapsed="0.369705"/>
</kw>
<msg time="2026-04-18T23:44:00.466355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:00.095454" elapsed="0.370997"/>
</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-18T23:44:00.094899" elapsed="0.371737"/>
</kw>
<msg time="2026-04-18T23:44:00.466700" 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-18T23:44:00.094375" elapsed="0.372404"/>
</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-18T23:44:00.470164" elapsed="0.000516"/>
</kw>
<kw name="Open 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-18T23:44:00.470900" elapsed="0.000335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:00.471392" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:00.467444" elapsed="0.004110"/>
</kw>
<msg time="2026-04-18T23:44:00.471657" level="INFO">${output} = 1</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-18T23:44:00.092140" elapsed="0.379543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:00.472186" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:00.471898" elapsed="0.000332"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:00.472279" elapsed="0.000042"/>
</return>
<msg time="2026-04-18T23:44:00.472451" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:00.089979" elapsed="0.382497"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:00.472524" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:44:00.472672" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:00.087761" elapsed="0.384936"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:00.473281" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:00.472854" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:00.086686" elapsed="0.386784">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:02.476954" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:02.476215" elapsed="0.000808"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:02.479444" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:02.478538" elapsed="0.000972"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:02.481050" 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-18T23:44:02.481193" 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-18T23:44:02.480802" elapsed="0.000428"/>
</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-18T23:44:02.486957" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:02.486309" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:02.485890" elapsed="0.001396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:02.489073" 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-18T23:44:02.489318" 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-18T23:44:02.488602" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:02.490996" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:02.490458" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:02.492864" level="INFO">${conn_id} = 301</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:02.492158" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:02.495401" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:02.495479" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:02.495088" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:02.495715" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:02.496985" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:02.809791" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:02.496659" elapsed="0.313284"/>
</kw>
<msg time="2026-04-18T23:44:02.810046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:02.496290" elapsed="0.313868"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:02.494321" elapsed="0.316122"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:02.811972" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:02.834955" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:02.835549" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:02.835912" 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-18T23:44:02.811538" elapsed="0.024716"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:02.838555" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:02.841768" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:02.840791" elapsed="0.001205"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:02.842890" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:02.842383" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:02.842259" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:02.843979" elapsed="0.000325"/>
</return>
<status status="PASS" start="2026-04-18T23:44:02.843534" elapsed="0.000879"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:02.843428" elapsed="0.001048"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:02.844556" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:02.849388" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:02.849929" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:02.850300" 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-18T23:44:02.845940" elapsed="0.004566"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:02.484019" elapsed="0.366713"/>
</kw>
<msg time="2026-04-18T23:44:02.851134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:02.483074" elapsed="0.368121"/>
</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-18T23:44:02.482313" elapsed="0.368965"/>
</kw>
<msg time="2026-04-18T23:44:02.851319" 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-18T23:44:02.481566" elapsed="0.369799"/>
</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-18T23:44:02.854456" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:44:02.854993" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:02.855387" elapsed="0.000137"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:02.851659" elapsed="0.003932"/>
</kw>
<msg time="2026-04-18T23:44:02.855708" level="INFO">${output} = 1</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-18T23:44:02.480007" elapsed="0.375733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:02.856458" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:02.855982" elapsed="0.000536"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:02.856573" elapsed="0.000038"/>
</return>
<msg time="2026-04-18T23:44:02.856771" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:02.477512" elapsed="0.379293"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:02.856867" elapsed="0.000034"/>
</return>
<msg time="2026-04-18T23:44:02.857075" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:02.475375" elapsed="0.381735"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:02.857917" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:02.857317" elapsed="0.000697">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:02.474317" elapsed="0.383869">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:04.861886" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:04.860990" elapsed="0.000968"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:04.864177" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:04.863462" elapsed="0.000778"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:04.865525" 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-18T23:44:04.865672" 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-18T23:44:04.865279" elapsed="0.000430"/>
</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-18T23:44:04.871586" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:04.870897" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:04.870505" elapsed="0.001338"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:04.873563" 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-18T23:44:04.873825" 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-18T23:44:04.873096" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:04.875533" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:04.874957" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:04.877481" level="INFO">${conn_id} = 304</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:04.876741" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:04.880054" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:04.880136" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:04.879707" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:04.880378" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:04.881696" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:05.195672" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:04.881366" elapsed="0.314446"/>
</kw>
<msg time="2026-04-18T23:44:05.195890" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:04.880978" elapsed="0.315009"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:04.878898" elapsed="0.317381"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:05.197776" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:05.220908" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:05.221453" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:05.221787" 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-18T23:44:05.197390" elapsed="0.024608"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:05.224274" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:05.226755" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:05.226141" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:05.227493" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:05.227157" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:05.227074" elapsed="0.000602"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:05.228195" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-18T23:44:05.227890" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:05.227821" elapsed="0.000649"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:05.228584" elapsed="0.000055"/>
</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-18T23:44:05.236339" elapsed="0.000350"/>
</kw>
<kw name="Open 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-18T23:44:05.236910" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:05.237284" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:05.230502" elapsed="0.006992"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:04.868599" elapsed="0.369115"/>
</kw>
<msg time="2026-04-18T23:44:05.238016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:04.867506" elapsed="0.370663"/>
</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-18T23:44:04.866717" elapsed="0.371533"/>
</kw>
<msg time="2026-04-18T23:44:05.238290" 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-18T23:44:04.865937" elapsed="0.372399"/>
</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-18T23:44:05.241450" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:44:05.241927" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:05.242238" 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-18T23:44:05.238738" elapsed="0.003646"/>
</kw>
<msg time="2026-04-18T23:44:05.242473" level="INFO">${output} = 1</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-18T23:44:04.864654" elapsed="0.377844"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:05.242922" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:05.242676" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:05.243007" elapsed="0.000044"/>
</return>
<msg time="2026-04-18T23:44:05.243172" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:04.862473" elapsed="0.380724"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:05.243242" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:44:05.243380" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:04.860145" elapsed="0.383259"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:05.243948" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:05.243556" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:04.858982" elapsed="0.385175">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:07.247621" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:07.246840" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:07.248923" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:07.248544" elapsed="0.000417"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:07.250113" 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-18T23:44:07.250260" 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-18T23:44:07.249869" elapsed="0.000428"/>
</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-18T23:44:07.255938" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:07.255292" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:07.255212" elapsed="0.000939"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:07.258468" 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-18T23:44:07.258808" 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-18T23:44:07.257527" elapsed="0.001420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:07.260665" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:07.260120" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:07.262526" level="INFO">${conn_id} = 307</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:07.261759" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:07.264877" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:07.264955" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:07.264598" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:07.265204" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:07.266693" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:07.565124" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:07.266363" elapsed="0.298937"/>
</kw>
<msg time="2026-04-18T23:44:07.565394" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:07.265866" elapsed="0.299634"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:07.263827" elapsed="0.301985"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:07.567368" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:07.589913" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:07.590451" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:07.590786" 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-18T23:44:07.566939" elapsed="0.024073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:07.593291" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:07.596472" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:07.595444" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:07.597248" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:07.596885" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:07.596805" elapsed="0.000627"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:07.597929" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:44:07.597648" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:07.597581" elapsed="0.000619"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:07.598314" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:07.604847" elapsed="0.000379"/>
</kw>
<kw name="Open 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-18T23:44:07.605435" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:07.605796" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:07.600249" elapsed="0.005756"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:07.253386" elapsed="0.352912"/>
</kw>
<msg time="2026-04-18T23:44:07.606596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:07.252396" elapsed="0.354258"/>
</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-18T23:44:07.251246" elapsed="0.355492"/>
</kw>
<msg time="2026-04-18T23:44:07.606779" 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-18T23:44:07.250516" elapsed="0.356310"/>
</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-18T23:44:07.609864" 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-18T23:44:07.610357" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:07.610654" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:07.607140" elapsed="0.003662"/>
</kw>
<msg time="2026-04-18T23:44:07.610983" level="INFO">${output} = 1</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-18T23:44:07.249283" elapsed="0.361727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:07.611458" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:07.611207" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:07.611543" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:07.611695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:07.247954" elapsed="0.363767"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:07.611768" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:07.611940" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:07.246007" elapsed="0.365958"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:07.612568" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:07.612148" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:07.244945" elapsed="0.367848">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:09.616546" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:09.615759" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:09.618736" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:09.618020" elapsed="0.000780"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:09.620265" 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-18T23:44:09.620408" 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-18T23:44:09.620013" elapsed="0.000432"/>
</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-18T23:44:09.625770" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:09.625134" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:09.625048" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:09.628237" 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-18T23:44:09.628486" 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-18T23:44:09.627475" elapsed="0.001115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:09.630156" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:09.629590" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:09.631985" level="INFO">${conn_id} = 310</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:09.631278" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:09.634446" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:09.634524" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:09.634156" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:09.634786" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:09.636189" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:09.988161" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:09.635714" elapsed="0.352642"/>
</kw>
<msg time="2026-04-18T23:44:09.988432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:09.635357" elapsed="0.353155"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:09.633372" elapsed="0.355394"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:09.990209" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:10.012652" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:10.013205" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:10.013545" 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-18T23:44:09.989812" elapsed="0.023946"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:10.015984" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:10.019179" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:10.018152" elapsed="0.001320"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:10.020105" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:10.019763" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:10.019684" elapsed="0.000605"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:10.020768" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:44:10.020488" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:10.020420" elapsed="0.000565"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:10.021122" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:10.027801" 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-18T23:44:10.028363" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:10.028720" 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-18T23:44:10.022949" elapsed="0.005977"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:09.623203" elapsed="0.405968"/>
</kw>
<msg time="2026-04-18T23:44:10.029476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:09.622168" elapsed="0.407365"/>
</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-18T23:44:09.621406" elapsed="0.408209"/>
</kw>
<msg time="2026-04-18T23:44:10.029656" 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-18T23:44:09.620669" elapsed="0.409032"/>
</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-18T23:44:10.032778" 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-18T23:44:10.033271" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:10.033562" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:10.029992" elapsed="0.003718"/>
</kw>
<msg time="2026-04-18T23:44:10.033802" level="INFO">${output} = 1</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-18T23:44:09.619317" elapsed="0.414511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:10.034288" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:10.034011" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:10.034376" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:10.034529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:09.617103" elapsed="0.417452"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:10.034601" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:10.034746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:09.614915" elapsed="0.419856"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:10.035506" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:10.034994" elapsed="0.000608">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:09.613794" elapsed="0.421921">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:12.039209" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:12.038436" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:12.041409" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:12.040689" elapsed="0.000782"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:12.043140" 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-18T23:44:12.043283" 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-18T23:44:12.042899" elapsed="0.000421"/>
</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-18T23:44:12.048697" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:12.048065" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:12.047964" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:12.051159" 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-18T23:44:12.051419" 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-18T23:44:12.050330" elapsed="0.001190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:12.053102" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:12.052540" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:12.054951" level="INFO">${conn_id} = 313</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:12.054202" elapsed="0.000879"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:12.057468" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:12.057545" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:12.057185" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:12.057776" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:12.059081" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:12.408330" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:12.058730" elapsed="0.349699"/>
</kw>
<msg time="2026-04-18T23:44:12.408495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:12.058367" elapsed="0.350201"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:12.056414" elapsed="0.352385"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:12.410158" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:12.423229" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:12.423724" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:12.424111" 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-18T23:44:12.409797" elapsed="0.014533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:12.426545" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:12.428920" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:12.428342" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:12.429638" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:12.429320" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:12.429243" elapsed="0.000575"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:12.430385" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:44:12.430019" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:12.429953" elapsed="0.000651"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:12.430715" elapsed="0.000070"/>
</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-18T23:44:12.436840" elapsed="0.000354"/>
</kw>
<kw name="Open 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-18T23:44:12.437402" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:12.437753" 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-18T23:44:12.432565" elapsed="0.005391"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:12.046007" elapsed="0.392295"/>
</kw>
<msg time="2026-04-18T23:44:12.438600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:12.045010" elapsed="0.393647"/>
</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-18T23:44:12.044274" elapsed="0.394463"/>
</kw>
<msg time="2026-04-18T23:44:12.438790" 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-18T23:44:12.043540" elapsed="0.395296"/>
</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-18T23:44:12.441833" elapsed="0.000374"/>
</kw>
<kw name="Open 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-18T23:44:12.442374" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:12.442669" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:12.439141" elapsed="0.003706"/>
</kw>
<msg time="2026-04-18T23:44:12.442938" level="INFO">${output} = 1</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-18T23:44:12.041989" elapsed="0.400975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:12.443408" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:12.443154" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:12.443497" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:44:12.443661" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:12.039734" elapsed="0.403954"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:12.443741" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:12.443886" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:12.037575" elapsed="0.406336"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:12.444492" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:12.444082" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:12.036538" elapsed="0.408143">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:14.448381" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:14.447573" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:14.450401" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:14.449990" elapsed="0.000449"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:14.451613" 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-18T23:44:14.451765" 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-18T23:44:14.451381" elapsed="0.000426"/>
</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-18T23:44:14.457658" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:14.456618" elapsed="0.001151"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:14.456536" elapsed="0.001298"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:14.459300" 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-18T23:44:14.459549" 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-18T23:44:14.458832" elapsed="0.000824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:14.461317" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:14.460646" elapsed="0.000804"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:14.463220" level="INFO">${conn_id} = 316</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:14.462466" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:14.465723" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:14.465803" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:14.465389" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:14.466065" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:14.467363" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:14.785148" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:14.467008" elapsed="0.318275"/>
</kw>
<msg time="2026-04-18T23:44:14.785359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:14.466635" elapsed="0.318810"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:14.464574" elapsed="0.321155"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:14.787259" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:14.810396" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:14.810914" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:14.811304" 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-18T23:44:14.786844" elapsed="0.024677"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:14.813749" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:14.816943" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:14.815948" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:14.818270" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:14.817563" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:14.817440" elapsed="0.001127"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:14.819056" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-18T23:44:14.818831" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:14.818777" elapsed="0.000442"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:14.819300" 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-18T23:44:14.823995" elapsed="0.000418"/>
</kw>
<kw name="Open 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-18T23:44:14.824625" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:14.824981" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:14.820674" elapsed="0.004535"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:14.454590" elapsed="0.370844"/>
</kw>
<msg time="2026-04-18T23:44:14.825742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:14.453602" elapsed="0.372198"/>
</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-18T23:44:14.452800" elapsed="0.373082"/>
</kw>
<msg time="2026-04-18T23:44:14.825952" 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-18T23:44:14.452054" elapsed="0.373945"/>
</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-18T23:44:14.829182" elapsed="0.000319"/>
</kw>
<kw name="Open 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-18T23:44:14.829666" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:14.829979" elapsed="0.000193"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:14.826311" elapsed="0.003914"/>
</kw>
<msg time="2026-04-18T23:44:14.830317" level="INFO">${output} = 1</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-18T23:44:14.450761" elapsed="0.379582"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:14.830778" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:14.830527" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:14.830871" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:14.831038" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:14.449120" elapsed="0.381946"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:14.831114" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:14.831260" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:14.446710" elapsed="0.384575"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:14.831872" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:14.831442" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:14.445537" elapsed="0.386534">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:16.835786" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:16.835059" elapsed="0.000795"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:16.837538" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:16.837142" elapsed="0.000433"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:16.838751" 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-18T23:44:16.839101" 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-18T23:44:16.838536" elapsed="0.000605"/>
</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-18T23:44:16.844794" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:16.844067" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:16.843681" elapsed="0.001273"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:16.846413" 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-18T23:44:16.846653" 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-18T23:44:16.845952" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:16.848333" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:16.847746" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:16.850166" level="INFO">${conn_id} = 319</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:16.849451" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:16.852614" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:16.852691" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:16.852299" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:16.852923" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:16.854199" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:17.157912" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:16.853857" elapsed="0.304215"/>
</kw>
<msg time="2026-04-18T23:44:17.158155" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:16.853499" elapsed="0.304745"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:16.851531" elapsed="0.306979"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:17.159989" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:17.172227" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:17.172744" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:17.173122" 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-18T23:44:17.159597" elapsed="0.013736"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:17.175500" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:17.178368" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:17.177669" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:17.179076" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:17.178730" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:17.178652" 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-18T23:44:17.179747" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:44:17.179466" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:17.179401" elapsed="0.000569"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:17.180109" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:17.186467" 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-18T23:44:17.187076" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:17.187434" 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-18T23:44:17.181935" elapsed="0.005709"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:16.841824" elapsed="0.346037"/>
</kw>
<msg time="2026-04-18T23:44:17.188177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:16.840881" elapsed="0.347354"/>
</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-18T23:44:16.840103" elapsed="0.348215"/>
</kw>
<msg time="2026-04-18T23:44:17.188359" 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-18T23:44:16.839366" elapsed="0.349039"/>
</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-18T23:44:17.191468" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:44:17.191946" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:17.192264" 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-18T23:44:17.188690" elapsed="0.003721"/>
</kw>
<msg time="2026-04-18T23:44:17.192500" level="INFO">${output} = 1</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-18T23:44:16.837881" elapsed="0.354643"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:17.192970" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:17.192698" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:17.193078" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:44:17.193231" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:16.836387" elapsed="0.356869"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:17.193303" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:44:17.193446" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:16.834231" elapsed="0.359239"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:17.194018" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:17.193625" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:16.833160" elapsed="0.361081">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:19.197724" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:19.196960" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:19.199851" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:19.199249" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:19.201706" 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-18T23:44:19.201929" 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-18T23:44:19.201372" elapsed="0.000615"/>
</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-18T23:44:19.207104" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:19.206598" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:19.206312" elapsed="0.000996"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:19.208723" 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-18T23:44:19.208959" 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-18T23:44:19.208282" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:19.210581" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:19.210023" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:19.212391" level="INFO">${conn_id} = 322</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:19.211686" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:19.214834" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:19.214912" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:19.214550" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:19.215185" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:19.216448" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:19.525216" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:19.216126" elapsed="0.309241"/>
</kw>
<msg time="2026-04-18T23:44:19.525452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:19.215748" elapsed="0.309795"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:19.213717" elapsed="0.312109"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:19.527365" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:19.550079" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:19.550589" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:19.550921" 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-18T23:44:19.526916" elapsed="0.024260"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:19.553504" elapsed="0.001036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:19.556848" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:19.555838" elapsed="0.001404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:19.558125" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:19.557595" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:19.557471" elapsed="0.001042"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:19.559475" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-18T23:44:19.558901" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:19.558783" elapsed="0.001079"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:19.560210" elapsed="0.000095"/>
</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-18T23:44:19.567074" elapsed="0.000399"/>
</kw>
<kw name="Open 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-18T23:44:19.567689" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:19.568128" 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-18T23:44:19.561701" elapsed="0.006646"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:19.204988" elapsed="0.363584"/>
</kw>
<msg time="2026-04-18T23:44:19.568955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:19.204314" elapsed="0.364701"/>
</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-18T23:44:19.203574" elapsed="0.365537"/>
</kw>
<msg time="2026-04-18T23:44:19.569151" 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-18T23:44:19.202372" elapsed="0.366824"/>
</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-18T23:44:19.572281" 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-18T23:44:19.572817" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:19.573160" 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-18T23:44:19.569491" elapsed="0.003826"/>
</kw>
<msg time="2026-04-18T23:44:19.573441" level="INFO">${output} = 1</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-18T23:44:19.200426" elapsed="0.373040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:19.573907" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:19.573652" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:19.573996" elapsed="0.000045"/>
</return>
<msg time="2026-04-18T23:44:19.574168" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:19.198274" elapsed="0.375918"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:19.574238" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:19.574379" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:19.196154" elapsed="0.378250"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:19.574953" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:19.574557" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:19.195112" elapsed="0.380043">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:21.578838" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:21.578017" elapsed="0.000895"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:21.581193" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:21.580425" elapsed="0.000833"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:21.582764" 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-18T23:44:21.582914" 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-18T23:44:21.582498" elapsed="0.000455"/>
</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-18T23:44:21.588560" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:21.587867" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:21.587789" elapsed="0.000986"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:21.590956" 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-18T23:44:21.591229" 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-18T23:44:21.590262" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:21.592887" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:21.592318" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:21.594792" level="INFO">${conn_id} = 325</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:21.594082" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:21.597277" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:21.597356" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:21.596969" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:21.597629" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:21.598895" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:21.899195" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:21.598569" elapsed="0.300780"/>
</kw>
<msg time="2026-04-18T23:44:21.899434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:21.598208" elapsed="0.301313"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:21.596199" elapsed="0.303614"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:21.901398" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:21.924178" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:21.924706" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:21.925075" 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-18T23:44:21.900950" elapsed="0.024342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:21.927518" elapsed="0.001004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:21.930819" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:21.929761" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:21.931583" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:21.931258" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:21.931177" elapsed="0.000588"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:21.932269" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:44:21.931965" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:21.931900" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:21.932598" elapsed="0.000051"/>
</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-18T23:44:21.939250" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:44:21.939791" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:21.940165" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:21.934639" elapsed="0.005737"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:21.585893" elapsed="0.354701"/>
</kw>
<msg time="2026-04-18T23:44:21.941006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:21.584756" elapsed="0.356325"/>
</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-18T23:44:21.583955" elapsed="0.357210"/>
</kw>
<msg time="2026-04-18T23:44:21.941205" 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-18T23:44:21.583210" elapsed="0.358041"/>
</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-18T23:44:21.944396" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:44:21.944869" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:21.945178" 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-18T23:44:21.941602" elapsed="0.003723"/>
</kw>
<msg time="2026-04-18T23:44:21.945416" level="INFO">${output} = 1</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-18T23:44:21.581847" elapsed="0.363594"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:21.945901" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:21.945621" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:21.945994" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:21.946188" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:21.579415" elapsed="0.366798"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:21.946260" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:21.946404" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:21.577120" elapsed="0.369309"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:21.946975" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:21.946585" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:21.575950" elapsed="0.371231">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:23.950913" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:23.950137" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:23.952710" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:23.952333" elapsed="0.000415"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:23.953883" 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-18T23:44:23.954047" 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-18T23:44:23.953657" elapsed="0.000430"/>
</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-18T23:44:23.959445" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:23.958791" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:23.958713" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:23.961568" 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-18T23:44:23.961822" 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-18T23:44:23.960841" elapsed="0.001084"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:23.963500" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:23.962919" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:23.965384" level="INFO">${conn_id} = 328</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:23.964637" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:23.968062" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:23.968145" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:23.967754" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:23.968386" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:23.969747" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:24.283740" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:23.969421" elapsed="0.314462"/>
</kw>
<msg time="2026-04-18T23:44:24.283967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:23.969045" elapsed="0.315057"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:23.966940" elapsed="0.317442"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:24.285893" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:24.308443" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:24.308958" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:24.309374" 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-18T23:44:24.285501" elapsed="0.024088"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:24.311838" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:24.314680" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:24.313952" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:24.315468" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:24.315127" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:24.314998" elapsed="0.000659"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:24.316200" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-18T23:44:24.315865" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:24.315794" elapsed="0.000635"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:24.316542" elapsed="0.000055"/>
</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-18T23:44:24.323193" elapsed="0.000482"/>
</kw>
<kw name="Open 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-18T23:44:24.324003" elapsed="0.000345"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:24.324648" elapsed="0.000158"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:24.318514" elapsed="0.006448"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:23.956848" elapsed="0.368461"/>
</kw>
<msg time="2026-04-18T23:44:24.325659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:23.955893" elapsed="0.369839"/>
</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-18T23:44:23.955018" elapsed="0.370801"/>
</kw>
<msg time="2026-04-18T23:44:24.325861" 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-18T23:44:23.954309" elapsed="0.371601"/>
</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-18T23:44:24.329237" 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-18T23:44:24.329760" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:24.330104" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:24.326360" elapsed="0.003900"/>
</kw>
<msg time="2026-04-18T23:44:24.330424" level="INFO">${output} = 1</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-18T23:44:23.953072" elapsed="0.377379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:24.330933" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:24.330672" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:24.331038" elapsed="0.000035"/>
</return>
<msg time="2026-04-18T23:44:24.331215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:23.951506" elapsed="0.379738"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:24.331294" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:44:24.331444" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:23.949241" elapsed="0.382228"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:24.332117" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:24.331639" elapsed="0.000563">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:23.948113" elapsed="0.384210">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:26.335834" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:26.335107" elapsed="0.000798"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:26.337958" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:26.337336" elapsed="0.000683"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:26.339928" 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-18T23:44:26.340186" 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-18T23:44:26.339604" elapsed="0.000643"/>
</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-18T23:44:26.345134" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:26.344647" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:26.344589" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:26.346962" 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-18T23:44:26.347224" 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-18T23:44:26.346272" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:26.348870" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:26.348322" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:26.350789" level="INFO">${conn_id} = 331</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:26.350078" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:26.353224" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:26.353302" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:26.352925" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:26.353534" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:26.354893" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:26.714490" 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 Sat Apr 18 23:43:26 UTC 2026

  System load:  0.23               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:26.354566" elapsed="0.360156"/>
</kw>
<msg time="2026-04-18T23:44:26.714806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:26.354203" elapsed="0.360693"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:26.352174" elapsed="0.363026"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:26.716659" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:26.739588" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:26.739817" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:26.739964" 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-18T23:44:26.716275" elapsed="0.023812"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:26.741070" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:26.742543" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:26.742080" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:26.743083" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:26.742816" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:26.742758" elapsed="0.000464"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:26.743571" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-18T23:44:26.743369" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:26.743321" elapsed="0.000408"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:26.743808" 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-18T23:44:26.748449" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:44:26.748989" elapsed="0.000288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:26.749472" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:26.745140" elapsed="0.004539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:26.343216" elapsed="0.406681"/>
</kw>
<msg time="2026-04-18T23:44:26.750234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:26.342517" elapsed="0.407777"/>
</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-18T23:44:26.341775" elapsed="0.408604"/>
</kw>
<msg time="2026-04-18T23:44:26.750420" 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-18T23:44:26.340596" elapsed="0.409869"/>
</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-18T23:44:26.753563" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:26.754051" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:26.754392" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:26.750764" elapsed="0.003777"/>
</kw>
<msg time="2026-04-18T23:44:26.754632" level="INFO">${output} = 1</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-18T23:44:26.338619" elapsed="0.416039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:26.755107" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:26.754840" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:26.755197" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:26.755351" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:26.336394" elapsed="0.418982"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:26.755423" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:26.755569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:26.334258" elapsed="0.421336"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:26.756222" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:26.755809" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:26.333114" elapsed="0.423303">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:28.760192" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:28.759317" elapsed="0.000947"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:28.762334" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:28.761705" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:28.764232" 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-18T23:44:28.764459" 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-18T23:44:28.763805" elapsed="0.000711"/>
</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-18T23:44:28.770734" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:28.769691" elapsed="0.001162"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:28.769606" elapsed="0.001337"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:28.772914" 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-18T23:44:28.773177" 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-18T23:44:28.772466" elapsed="0.000815"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:28.774876" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:28.774314" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:28.776810" level="INFO">${conn_id} = 334</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:28.776013" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:28.779242" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:28.779319" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:28.778928" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:28.779553" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:28.780851" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:29.399467" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:28.780525" elapsed="0.619138"/>
</kw>
<msg time="2026-04-18T23:44:29.399780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:28.780152" elapsed="0.619743"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:28.778179" elapsed="0.622133"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:29.402439" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:29.424895" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:29.425443" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:29.425771" 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-18T23:44:29.401872" elapsed="0.024105"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:29.428185" elapsed="0.000962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:29.430678" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:29.429996" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:29.431444" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:29.431090" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:29.430980" elapsed="0.000660"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:29.432165" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-18T23:44:29.431852" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:29.431782" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:29.432532" elapsed="0.000057"/>
</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-18T23:44:29.438824" 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-18T23:44:29.439393" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:29.439757" 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-18T23:44:29.434559" elapsed="0.005405"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:28.767613" elapsed="0.672592"/>
</kw>
<msg time="2026-04-18T23:44:29.440532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:28.766595" elapsed="0.673994"/>
</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-18T23:44:28.765573" elapsed="0.675100"/>
</kw>
<msg time="2026-04-18T23:44:29.440714" 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-18T23:44:28.764794" elapsed="0.675966"/>
</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-18T23:44:29.443822" elapsed="0.000325"/>
</kw>
<kw name="Open 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-18T23:44:29.444311" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:29.444631" 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-18T23:44:29.441072" elapsed="0.003705"/>
</kw>
<msg time="2026-04-18T23:44:29.444869" level="INFO">${output} = 1</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-18T23:44:28.762868" elapsed="0.682026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:29.445339" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:29.445085" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:29.445424" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:29.445577" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:28.760771" elapsed="0.684832"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:29.445649" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:29.445796" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:28.758417" elapsed="0.687404"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:29.446418" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:29.445978" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:28.757246" elapsed="0.689366">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:31.450181" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:31.449402" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:31.452437" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:31.451801" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:31.454342" 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-18T23:44:31.454520" 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-18T23:44:31.453942" elapsed="0.000616"/>
</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-18T23:44:31.460124" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:31.459456" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:31.459088" elapsed="0.001230"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:31.462463" 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-18T23:44:31.462723" 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-18T23:44:31.461670" elapsed="0.001159"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:31.464738" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:31.463977" elapsed="0.000874"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:31.466635" level="INFO">${conn_id} = 337</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:31.465887" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:31.469218" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:31.469294" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:31.468912" 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-18T23:44:31.469529" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:31.470843" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:31.782705" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:31.470518" elapsed="0.312331"/>
</kw>
<msg time="2026-04-18T23:44:31.782929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:31.470153" elapsed="0.312865"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:31.467945" elapsed="0.315365"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:31.784811" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:31.807593" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:31.808126" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:31.808459" 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-18T23:44:31.784396" elapsed="0.024269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:31.810886" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:31.813990" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:31.813004" elapsed="0.001344"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:31.815340" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:31.814694" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:31.814572" elapsed="0.001067"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:31.816447" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-18T23:44:31.815960" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:31.815852" elapsed="0.000951"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:31.816979" elapsed="0.000140"/>
</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-18T23:44:31.823117" 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-18T23:44:31.823672" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:31.824043" 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-18T23:44:31.819695" elapsed="0.004558"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:31.457229" elapsed="0.367249"/>
</kw>
<msg time="2026-04-18T23:44:31.824803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:31.456271" elapsed="0.368592"/>
</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-18T23:44:31.455512" elapsed="0.369433"/>
</kw>
<msg time="2026-04-18T23:44:31.824986" 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-18T23:44:31.454782" elapsed="0.370276"/>
</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-18T23:44:31.828147" elapsed="0.000318"/>
</kw>
<kw name="Open 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-18T23:44:31.828634" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:31.828938" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:31.825356" elapsed="0.003757"/>
</kw>
<msg time="2026-04-18T23:44:31.829208" level="INFO">${output} = 1</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-18T23:44:31.452977" elapsed="0.376256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:31.829734" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:31.829428" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:31.829824" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:44:31.829981" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:31.450857" elapsed="0.379150"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:31.830099" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:44:31.830245" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:31.448570" elapsed="0.381700"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:31.830854" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:31.830457" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:31.447503" elapsed="0.383579">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:33.833476" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:33.832993" elapsed="0.000526"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:33.834701" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:33.834320" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:33.835731" 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-18T23:44:33.836014" 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-18T23:44:33.835540" elapsed="0.000523"/>
</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-18T23:44:33.840140" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:33.839619" elapsed="0.000603"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:33.839349" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:33.841815" 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-18T23:44:33.842085" 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-18T23:44:33.841364" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:33.843733" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:33.843181" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:33.845595" level="INFO">${conn_id} = 340</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:33.844872" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:33.848072" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:33.848150" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:33.847749" 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-18T23:44:33.848387" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:33.849652" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:34.200323" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:33.849324" elapsed="0.351150"/>
</kw>
<msg time="2026-04-18T23:44:34.200558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:33.848936" elapsed="0.351714"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:33.846926" elapsed="0.354018"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:34.202521" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:34.224866" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:34.225441" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:34.225789" 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-18T23:44:34.202112" elapsed="0.023894"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:34.228369" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:34.231629" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:34.230606" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:34.232819" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:34.232289" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:34.232157" elapsed="0.001004"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:34.233978" elapsed="0.000330"/>
</return>
<status status="PASS" start="2026-04-18T23:44:34.233511" elapsed="0.000914"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:34.233386" elapsed="0.001187"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:34.234764" elapsed="0.000086"/>
</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-18T23:44:34.242279" elapsed="0.000342"/>
</kw>
<kw name="Open 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-18T23:44:34.242885" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:34.243254" 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-18T23:44:34.237117" elapsed="0.006339"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:33.838004" elapsed="0.405667"/>
</kw>
<msg time="2026-04-18T23:44:34.243977" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:33.837326" elapsed="0.406721"/>
</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-18T23:44:33.836764" elapsed="0.407378"/>
</kw>
<msg time="2026-04-18T23:44:34.244183" 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-18T23:44:33.836234" elapsed="0.407994"/>
</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-18T23:44:34.247270" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:44:34.247742" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:34.248048" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:34.244515" elapsed="0.003711"/>
</kw>
<msg time="2026-04-18T23:44:34.248314" level="INFO">${output} = 1</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-18T23:44:33.835061" elapsed="0.413278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:34.248758" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:34.248514" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:34.248844" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:44:34.248992" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:33.833778" elapsed="0.415239"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:34.249078" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:34.249220" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:33.832508" elapsed="0.416736"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:34.249788" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:34.249401" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:33.831733" elapsed="0.418338">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:36.253467" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:36.252709" elapsed="0.000828"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:36.255203" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:36.254802" elapsed="0.000439"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:36.256356" 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-18T23:44:36.256498" 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-18T23:44:36.256136" elapsed="0.000401"/>
</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-18T23:44:36.261972" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:36.261301" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:36.261225" elapsed="0.001045"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:36.263970" 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-18T23:44:36.264237" 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-18T23:44:36.263314" elapsed="0.001027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:36.265907" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:36.265345" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:36.267713" level="INFO">${conn_id} = 343</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:36.266993" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:36.270198" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:36.270277" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:36.269895" 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-18T23:44:36.270518" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:36.271769" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:36.579787" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:36.271443" elapsed="0.308496"/>
</kw>
<msg time="2026-04-18T23:44:36.580022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:36.271084" elapsed="0.309045"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:36.269101" elapsed="0.311311"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:36.581910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:36.604774" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:36.605315" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:36.605649" 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-18T23:44:36.581484" elapsed="0.024399"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:36.608106" elapsed="0.000856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:36.610917" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:36.610291" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:36.611634" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:36.611308" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:36.611229" 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-18T23:44:36.612320" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:44:36.612017" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:36.611947" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:36.612645" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:36.619075" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:36.619623" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:36.619980" 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-18T23:44:36.614560" elapsed="0.005643"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:36.259249" elapsed="0.361176"/>
</kw>
<msg time="2026-04-18T23:44:36.620788" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:36.258281" elapsed="0.362566"/>
</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-18T23:44:36.257495" elapsed="0.363434"/>
</kw>
<msg time="2026-04-18T23:44:36.620970" 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-18T23:44:36.256757" elapsed="0.364259"/>
</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-18T23:44:36.624107" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:44:36.624585" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:36.624877" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:36.621322" elapsed="0.003701"/>
</kw>
<msg time="2026-04-18T23:44:36.625131" level="INFO">${output} = 1</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-18T23:44:36.255541" elapsed="0.369616"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:36.625577" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:36.625333" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:36.625663" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:36.625840" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:36.254126" elapsed="0.371742"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:36.625916" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:36.626103" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:36.251885" elapsed="0.374244"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:36.626678" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:36.626285" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:36.250840" elapsed="0.376021">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:38.630473" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:38.629712" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:38.632331" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:38.631910" elapsed="0.000460"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:38.633518" 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-18T23:44:38.633662" 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-18T23:44:38.633296" elapsed="0.000403"/>
</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-18T23:44:38.639557" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:38.638761" elapsed="0.000888"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:38.638682" elapsed="0.001026"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:38.641420" 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-18T23:44:38.641666" 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-18T23:44:38.640706" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:38.643382" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:38.642753" elapsed="0.000740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:38.645264" level="INFO">${conn_id} = 346</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:38.644535" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:38.647730" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:38.647807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:38.647447" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:38.648056" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:38.649310" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:38.957613" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:38.648967" elapsed="0.308732"/>
</kw>
<msg time="2026-04-18T23:44:38.957762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:38.648608" elapsed="0.309229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:38.646580" elapsed="0.311505"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:38.959463" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:38.982277" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:38.982765" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:38.983144" 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-18T23:44:38.959102" elapsed="0.024254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:38.985593" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:38.988628" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:38.987767" 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-18T23:44:38.989327" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:38.988978" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:38.988904" elapsed="0.000603"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:38.989978" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-04-18T23:44:38.989703" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:38.989637" elapsed="0.000582"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:38.990326" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:38.996838" elapsed="0.000475"/>
</kw>
<kw name="Open 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-18T23:44:38.997610" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:38.998113" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:38.992248" elapsed="0.006154"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:38.636602" elapsed="0.362106"/>
</kw>
<msg time="2026-04-18T23:44:38.999152" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:38.635454" elapsed="0.363776"/>
</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-18T23:44:38.634659" elapsed="0.364681"/>
</kw>
<msg time="2026-04-18T23:44:38.999396" 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-18T23:44:38.633921" elapsed="0.365570"/>
</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-18T23:44:39.002935" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:44:39.003426" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:39.003752" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:38.999961" elapsed="0.003939"/>
</kw>
<msg time="2026-04-18T23:44:39.003988" level="INFO">${output} = 1</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-18T23:44:38.632677" elapsed="0.371337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:39.004461" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:39.004211" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:39.004553" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:39.004704" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:38.630988" elapsed="0.373741"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:39.004775" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:44:39.004926" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:38.628859" elapsed="0.376091"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:39.005642" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:39.005182" elapsed="0.000538">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:38.627733" elapsed="0.378099">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:41.009334" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:41.008538" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:41.011424" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:41.010791" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:41.013340" 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-18T23:44:41.013538" 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-18T23:44:41.012979" elapsed="0.000596"/>
</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-18T23:44:41.018954" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:41.018326" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:41.018249" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:41.021517" 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-18T23:44:41.021768" 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-18T23:44:41.020536" elapsed="0.001333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:41.023386" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:41.022833" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:41.025242" level="INFO">${conn_id} = 349</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:41.024465" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:41.027659" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:41.027737" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:41.027319" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:41.027974" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:41.029606" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:41.343280" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:41.029000" elapsed="0.314433"/>
</kw>
<msg time="2026-04-18T23:44:41.343519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:41.028608" elapsed="0.315002"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:41.026520" elapsed="0.317382"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:41.345433" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:41.368157" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:41.368654" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:41.368985" 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-18T23:44:41.345013" elapsed="0.024274"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:41.371511" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:41.374721" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:41.373697" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:41.375837" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:41.375337" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:41.375213" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:41.376944" elapsed="0.000312"/>
</return>
<status status="PASS" start="2026-04-18T23:44:41.376491" elapsed="0.000900"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:41.376381" elapsed="0.001136"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:41.377600" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:41.382430" 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-18T23:44:41.382975" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:41.383351" 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-18T23:44:41.378973" elapsed="0.004590"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:41.016367" elapsed="0.367421"/>
</kw>
<msg time="2026-04-18T23:44:41.384112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:41.015422" elapsed="0.368746"/>
</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-18T23:44:41.014526" elapsed="0.369722"/>
</kw>
<msg time="2026-04-18T23:44:41.384289" 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-18T23:44:41.013797" elapsed="0.370537"/>
</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-18T23:44:41.387498" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:44:41.387982" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:41.388294" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:41.384623" elapsed="0.003820"/>
</kw>
<msg time="2026-04-18T23:44:41.388605" level="INFO">${output} = 1</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-18T23:44:41.011964" elapsed="0.376667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:41.389086" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:41.388808" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:41.389179" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:44:41.389332" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:41.009853" elapsed="0.379504"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:41.389405" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:41.389555" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:41.007703" elapsed="0.381877"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:41.390228" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:41.389736" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:41.006626" elapsed="0.383788">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:43.393765" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:43.393019" elapsed="0.000813"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:43.395977" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:43.395264" elapsed="0.000815"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:43.397931" 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-18T23:44:43.398191" 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-18T23:44:43.397534" elapsed="0.000717"/>
</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-18T23:44:43.403953" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:43.403000" elapsed="0.001086"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:43.402925" elapsed="0.001245"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:43.406156" 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-18T23:44:43.406527" 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-18T23:44:43.405525" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:43.408162" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:43.407611" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:43.409932" level="INFO">${conn_id} = 352</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:43.409239" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:43.412357" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:43.412435" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:43.412071" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:43.412670" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:43.413930" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:43.727127" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:43.413605" elapsed="0.313809"/>
</kw>
<msg time="2026-04-18T23:44:43.727499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:43.413241" elapsed="0.314354"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:43.411305" elapsed="0.316561"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:43.729359" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:43.752776" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:43.753477" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:43.753892" 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-18T23:44:43.728954" elapsed="0.025257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:43.757128" elapsed="0.001075"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:43.759487" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:43.759006" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:43.760043" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:43.759781" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:43.759720" elapsed="0.000460"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:43.760528" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-18T23:44:43.760326" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:43.760277" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:43.760781" 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-18T23:44:43.765475" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:44:43.766012" elapsed="0.000275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:43.766480" 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-18T23:44:43.762159" elapsed="0.004543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:43.401085" elapsed="0.365833"/>
</kw>
<msg time="2026-04-18T23:44:43.767233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:43.400137" elapsed="0.367158"/>
</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-18T23:44:43.399372" elapsed="0.368004"/>
</kw>
<msg time="2026-04-18T23:44:43.767417" 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-18T23:44:43.398633" elapsed="0.368830"/>
</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-18T23:44:43.770519" elapsed="0.000339"/>
</kw>
<kw name="Open 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-18T23:44:43.771022" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:43.771333" 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-18T23:44:43.767750" elapsed="0.003730"/>
</kw>
<msg time="2026-04-18T23:44:43.771571" level="INFO">${output} = 1</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-18T23:44:43.396571" elapsed="0.375025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:43.772023" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:43.771772" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:43.772127" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:43.772277" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:43.394329" elapsed="0.377973"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:43.772348" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:43.772490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:43.392229" elapsed="0.380285"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:43.773150" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:43.772739" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:43.391218" elapsed="0.382116">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:45.777154" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:45.776312" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:45.779273" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:45.778636" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:45.780964" 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-18T23:44:45.781129" 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-18T23:44:45.780745" elapsed="0.000422"/>
</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-18T23:44:45.786886" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:45.786240" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:45.785847" elapsed="0.001255"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:45.788991" 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-18T23:44:45.789258" 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-18T23:44:45.788510" elapsed="0.000849"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:45.790922" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:45.790377" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:45.792805" level="INFO">${conn_id} = 355</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:45.792071" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:45.795375" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:45.795455" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:45.795065" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:45.795699" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:45.797011" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:46.101280" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:45.796684" elapsed="0.304756"/>
</kw>
<msg time="2026-04-18T23:44:46.101534" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:45.796316" elapsed="0.305320"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:45.794252" elapsed="0.307680"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:46.103456" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:46.115909" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:46.116306" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:46.116518" 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-18T23:44:46.103053" elapsed="0.013613"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:46.118916" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:46.122297" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:46.121268" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:46.123458" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:46.122900" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:46.122773" elapsed="0.000991"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:46.124693" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-18T23:44:46.124263" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:46.124105" elapsed="0.000753"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:46.124938" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:46.129755" elapsed="0.000352"/>
</kw>
<kw name="Open 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-18T23:44:46.130320" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:46.130678" 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-18T23:44:46.126347" elapsed="0.004539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:45.783975" elapsed="0.347175"/>
</kw>
<msg time="2026-04-18T23:44:46.131459" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:45.782885" elapsed="0.348630"/>
</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-18T23:44:45.782135" elapsed="0.349460"/>
</kw>
<msg time="2026-04-18T23:44:46.131635" 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-18T23:44:45.781390" elapsed="0.350290"/>
</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-18T23:44:46.134662" 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-18T23:44:46.135230" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:46.135524" 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-18T23:44:46.131965" elapsed="0.003703"/>
</kw>
<msg time="2026-04-18T23:44:46.135757" level="INFO">${output} = 1</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-18T23:44:45.779865" elapsed="0.355916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:46.136252" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:46.135955" elapsed="0.000341"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:46.136339" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:44:46.136489" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:45.777688" elapsed="0.358826"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:46.136560" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:46.136704" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:45.775358" elapsed="0.361370"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:46.137298" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:46.136889" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:45.774238" elapsed="0.363251">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:48.141068" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:48.140312" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:48.142743" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:48.142365" elapsed="0.000415"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:48.143894" 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-18T23:44:48.144055" 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-18T23:44:48.143676" elapsed="0.000419"/>
</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-18T23:44:48.149585" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:48.148909" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:48.148573" elapsed="0.001204"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:48.151746" 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-18T23:44:48.152113" 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-18T23:44:48.151138" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:48.154200" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:48.153619" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:48.155963" level="INFO">${conn_id} = 358</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:48.155279" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:48.158403" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:48.158480" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:48.158109" 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-18T23:44:48.158716" elapsed="0.000511"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:48.160197" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:48.478213" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:48.159835" elapsed="0.318541"/>
</kw>
<msg time="2026-04-18T23:44:48.478463" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:48.159447" elapsed="0.319113"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:48.157339" elapsed="0.321512"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:48.480345" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:48.503570" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:48.503876" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:48.504049" 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-18T23:44:48.479942" elapsed="0.024208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:48.505226" elapsed="0.000463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:48.506765" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:48.506283" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:48.507355" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:48.507048" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:48.506974" 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-18T23:44:48.507850" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-18T23:44:48.507641" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:48.507592" elapsed="0.000425"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:48.508119" 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-18T23:44:48.515342" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:48.515900" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:48.516276" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:48.509441" elapsed="0.007042"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:48.146738" elapsed="0.369969"/>
</kw>
<msg time="2026-04-18T23:44:48.517048" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:48.145803" elapsed="0.371306"/>
</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-18T23:44:48.145049" elapsed="0.372140"/>
</kw>
<msg time="2026-04-18T23:44:48.517229" 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-18T23:44:48.144318" elapsed="0.372956"/>
</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-18T23:44:48.521187" elapsed="0.000377"/>
</kw>
<kw name="Open 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-18T23:44:48.521742" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:48.522144" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:48.517582" elapsed="0.004720"/>
</kw>
<msg time="2026-04-18T23:44:48.522397" level="INFO">${output} = 1</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-18T23:44:48.143104" elapsed="0.379318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:48.522898" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:48.522645" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:48.522993" elapsed="0.000045"/>
</return>
<msg time="2026-04-18T23:44:48.523162" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:48.141770" elapsed="0.381417"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:48.523232" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:44:48.523371" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:48.139463" elapsed="0.383932"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:48.523951" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:48.523553" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:48.138331" elapsed="0.385823">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:50.527875" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:50.527074" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:50.530613" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:50.529870" elapsed="0.000874"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:50.532678" 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-18T23:44:50.533004" 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-18T23:44:50.532343" elapsed="0.000732"/>
</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-18T23:44:50.539916" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:50.539150" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:50.539020" elapsed="0.001084"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:50.542096" 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-18T23:44:50.542344" 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-18T23:44:50.541252" elapsed="0.001193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:50.544023" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:50.543481" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:50.545847" level="INFO">${conn_id} = 361</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:50.545142" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:50.548380" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:50.548458" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:50.548078" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:50.548696" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:50.549957" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:50.879435" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:50.549631" elapsed="0.329899"/>
</kw>
<msg time="2026-04-18T23:44:50.879599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:50.549272" elapsed="0.330403"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:50.547308" elapsed="0.332618"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:50.881384" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:50.904460" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:50.904981" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:50.905380" 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-18T23:44:50.880968" elapsed="0.024626"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:50.907914" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:50.911523" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:50.910326" elapsed="0.001437"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:50.912737" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:50.912177" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:50.912000" elapsed="0.001096"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:50.914140" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-18T23:44:50.913445" elapsed="0.000947"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:50.913334" elapsed="0.001192"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:50.914708" elapsed="0.000089"/>
</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-18T23:44:50.922584" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:50.923412" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:50.923783" 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-18T23:44:50.917980" elapsed="0.006017"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:50.536510" elapsed="0.387737"/>
</kw>
<msg time="2026-04-18T23:44:50.924548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:50.535340" elapsed="0.389268"/>
</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-18T23:44:50.534335" elapsed="0.390356"/>
</kw>
<msg time="2026-04-18T23:44:50.924732" 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-18T23:44:50.533376" elapsed="0.391401"/>
</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-18T23:44:50.927811" 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-18T23:44:50.928322" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:50.928624" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:50.925091" elapsed="0.003683"/>
</kw>
<msg time="2026-04-18T23:44:50.928864" level="INFO">${output} = 1</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-18T23:44:50.531398" elapsed="0.397491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:50.929341" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:50.929085" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:50.929431" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:44:50.929586" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:50.528622" elapsed="0.400989"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:50.929658" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:50.929805" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:50.526198" elapsed="0.403631"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:50.930433" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:50.929988" elapsed="0.000539">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:50.525012" elapsed="0.405631">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:52.934241" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:52.933474" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:52.936430" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:52.935737" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:52.937853" 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-18T23:44:52.937997" 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-18T23:44:52.937588" elapsed="0.000466"/>
</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-18T23:44:52.943430" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:52.942732" elapsed="0.000897"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:52.942653" elapsed="0.001061"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:52.946001" 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-18T23:44:52.946364" 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-18T23:44:52.945100" elapsed="0.001403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:52.948740" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:52.947915" elapsed="0.000956"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:52.950549" level="INFO">${conn_id} = 364</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:52.949845" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:52.952947" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:52.953024" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:52.952663" 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-18T23:44:52.953274" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:52.954529" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:53.279554" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:52.954204" elapsed="0.325500"/>
</kw>
<msg time="2026-04-18T23:44:53.279792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:52.953826" elapsed="0.326067"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:52.951882" elapsed="0.328317"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:53.281730" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:53.304615" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:53.305169" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:53.305505" 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-18T23:44:53.281333" elapsed="0.024386"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:53.308062" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:53.310422" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:53.309756" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:53.311201" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:53.310795" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:53.310714" elapsed="0.000674"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:53.311878" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-18T23:44:53.311597" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:53.311528" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:53.312233" elapsed="0.000067"/>
</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-18T23:44:53.318343" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:53.318884" elapsed="0.000290"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:53.319369" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:53.314128" elapsed="0.005450"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:52.940811" elapsed="0.378992"/>
</kw>
<msg time="2026-04-18T23:44:53.320225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:52.939781" elapsed="0.380505"/>
</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-18T23:44:52.939011" elapsed="0.381369"/>
</kw>
<msg time="2026-04-18T23:44:53.320421" 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-18T23:44:52.938277" elapsed="0.382192"/>
</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-18T23:44:53.323497" 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-18T23:44:53.323975" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:53.324314" elapsed="0.000109"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:53.320769" elapsed="0.003707"/>
</kw>
<msg time="2026-04-18T23:44:53.324575" level="INFO">${output} = 1</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-18T23:44:52.936984" elapsed="0.387618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:53.325045" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:53.324779" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:53.325135" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:44:53.325288" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:52.934759" elapsed="0.390554"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:53.325359" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:44:53.325505" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:52.932637" elapsed="0.392892"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:53.326117" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:53.325685" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:52.931535" elapsed="0.394780">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:55.330003" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:55.329185" elapsed="0.000929"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:55.332134" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:55.331504" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:55.333999" 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-18T23:44:55.334173" 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-18T23:44:55.333678" elapsed="0.000534"/>
</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-18T23:44:55.339746" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:55.339071" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:55.338964" elapsed="0.000984"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:55.342285" 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-18T23:44:55.342526" 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-18T23:44:55.341411" elapsed="0.001214"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:55.344196" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:55.343605" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:55.346095" level="INFO">${conn_id} = 367</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:55.345343" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:55.348566" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:55.348643" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:55.348261" 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-18T23:44:55.348878" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:55.350190" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:55.679824" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:55.349830" elapsed="0.330115"/>
</kw>
<msg time="2026-04-18T23:44:55.680017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:55.349449" elapsed="0.330693"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:55.347491" elapsed="0.332907"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:55.681907" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:55.704779" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:55.705375" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:55.705759" 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-18T23:44:55.681466" elapsed="0.024519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:55.708298" elapsed="0.001075"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:55.711142" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:55.710455" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:55.711918" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:55.711553" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:55.711466" 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-18T23:44:55.712729" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-18T23:44:55.712405" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:55.712323" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:55.713140" elapsed="0.000063"/>
</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-18T23:44:55.719927" elapsed="0.000381"/>
</kw>
<kw name="Open 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-18T23:44:55.720542" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:55.720930" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:55.715460" elapsed="0.005734"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:55.337009" elapsed="0.384426"/>
</kw>
<msg time="2026-04-18T23:44:55.721773" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:55.336022" elapsed="0.385814"/>
</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-18T23:44:55.335234" elapsed="0.386691"/>
</kw>
<msg time="2026-04-18T23:44:55.721967" 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-18T23:44:55.334451" elapsed="0.387563"/>
</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-18T23:44:55.725291" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:44:55.725819" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:55.726158" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:55.722439" elapsed="0.003882"/>
</kw>
<msg time="2026-04-18T23:44:55.726417" level="INFO">${output} = 1</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-18T23:44:55.332666" elapsed="0.393777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:55.726887" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:55.726626" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:55.726980" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:44:55.727177" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:55.330574" elapsed="0.396629"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:55.727252" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:44:55.727408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:55.328346" elapsed="0.399087"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:55.728123" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:55.727598" elapsed="0.000623">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:55.327244" elapsed="0.401104">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:44:57.731893" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:44:57.730995" elapsed="0.000969"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:44:57.734058" level="INFO">${member_ip} = 10.30.171.206</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-18T23:44:57.733401" elapsed="0.000720"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:57.735907" 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-18T23:44:57.736163" 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-18T23:44:57.735570" elapsed="0.000653"/>
</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-18T23:44:57.742341" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:44:57.741615" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:57.741557" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:57.743922" 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-18T23:44:57.744212" 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-18T23:44:57.743482" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:57.745821" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:57.745284" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:44:57.747621" level="INFO">${conn_id} = 370</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:44:57.746922" elapsed="0.000796"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:44:57.750011" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:44:57.750104" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:44:57.749727" 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-18T23:44:57.750335" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:44:57.751670" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:44:58.064222" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:44:57.751344" elapsed="0.313029"/>
</kw>
<msg time="2026-04-18T23:44:58.064457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:57.750960" elapsed="0.313590"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:44:57.748904" elapsed="0.315921"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:44:58.066323" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:44:58.089734" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:44:58.090341" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:44:58.090726" 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-18T23:44:58.065909" elapsed="0.025039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:58.093377" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:58.096709" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:58.095626" elapsed="0.001324"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:58.098064" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:44:58.097508" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:58.097375" elapsed="0.001001"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:44:58.099284" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-18T23:44:58.098708" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-18T23:44:58.098595" elapsed="0.001066"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:44:58.099853" elapsed="0.000086"/>
</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-18T23:44:58.104752" elapsed="0.000352"/>
</kw>
<kw name="Open 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-18T23:44:58.105312" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:58.105673" 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-18T23:44:58.101338" elapsed="0.004544"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:44:57.740260" elapsed="0.365863"/>
</kw>
<msg time="2026-04-18T23:44:58.106433" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:44:57.739063" elapsed="0.367431"/>
</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-18T23:44:57.737742" elapsed="0.368834"/>
</kw>
<msg time="2026-04-18T23:44:58.106617" 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-18T23:44:57.736573" elapsed="0.370090"/>
</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-18T23:44:58.109737" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:44:58.110230" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:44:58.110523" elapsed="0.000197"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:44:58.106953" elapsed="0.003819"/>
</kw>
<msg time="2026-04-18T23:44:58.110923" level="INFO">${output} = 1</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-18T23:44:57.734598" elapsed="0.376351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:44:58.111458" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:44:58.111184" elapsed="0.000334"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:44:58.111563" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:44:58.111722" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:44:57.732456" elapsed="0.379291"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:44:58.111795" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:44:58.111942" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:44:57.730168" elapsed="0.381798"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:44:58.112618" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:44:58.112205" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:44:57.729140" elapsed="0.383665">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:00.116407" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:00.115561" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:00.118494" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:00.117861" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:00.120492" 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-18T23:45:00.120732" 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-18T23:45:00.119985" elapsed="0.000805"/>
</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-18T23:45:00.126522" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:00.125857" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:00.125489" elapsed="0.001228"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:00.128769" 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-18T23:45:00.129132" 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-18T23:45:00.128104" elapsed="0.001148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:00.131237" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:00.130537" elapsed="0.000847"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:00.133531" level="INFO">${conn_id} = 373</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:00.132626" elapsed="0.001022"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:00.136246" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:00.136327" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:00.135895" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:00.136564" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:00.137839" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:00.493187" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:44:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:00.137508" elapsed="0.355965"/>
</kw>
<msg time="2026-04-18T23:45:00.493565" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:00.137144" elapsed="0.356521"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:00.135011" elapsed="0.358946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:00.495538" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:00.517916" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:00.518443" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:00.518772" 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-18T23:45:00.495101" elapsed="0.023878"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:00.521259" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:00.524399" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:00.523399" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:00.525513" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:00.524981" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:00.524856" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:00.526596" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-18T23:45:00.526149" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:00.526014" elapsed="0.000923"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:00.527203" 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-18T23:45:00.533088" elapsed="0.000337"/>
</kw>
<kw name="Open 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-18T23:45:00.533636" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:00.533996" 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-18T23:45:00.529587" elapsed="0.004631"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:00.123608" elapsed="0.410828"/>
</kw>
<msg time="2026-04-18T23:45:00.534739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:00.122651" elapsed="0.412145"/>
</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-18T23:45:00.121836" elapsed="0.413041"/>
</kw>
<msg time="2026-04-18T23:45:00.534917" 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-18T23:45:00.121127" elapsed="0.413836"/>
</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-18T23:45:00.538093" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:45:00.538566" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:00.538854" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:00.535336" elapsed="0.003663"/>
</kw>
<msg time="2026-04-18T23:45:00.539174" level="INFO">${output} = 1</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-18T23:45:00.119056" elapsed="0.420144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:00.539619" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:00.539374" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:00.539705" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:00.539854" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:00.116926" elapsed="0.422953"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:00.539924" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:45:00.540085" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:00.114721" elapsed="0.425389"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:00.540739" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:00.540306" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:00.113671" elapsed="0.427264">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:02.543605" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:02.543078" elapsed="0.000575"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:02.545060" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:02.544639" elapsed="0.000462"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:02.546322" 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-18T23:45:02.546471" 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-18T23:45:02.546077" elapsed="0.000431"/>
</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-18T23:45:02.551665" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:02.551198" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:02.550909" elapsed="0.000894"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:02.553239" 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-18T23:45:02.553476" 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-18T23:45:02.552788" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:02.555251" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:02.554678" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:02.556999" level="INFO">${conn_id} = 376</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:02.556312" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:02.559514" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:02.559592" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:02.559223" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:02.559826" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:02.561103" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:02.878653" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:02.560762" elapsed="0.318023"/>
</kw>
<msg time="2026-04-18T23:45:02.878863" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:02.560402" elapsed="0.318541"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:02.558315" elapsed="0.320910"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:02.880684" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:02.903631" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:02.904181" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:02.904511" 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-18T23:45:02.880299" elapsed="0.024424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:02.906972" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:02.910309" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:02.909143" elapsed="0.001395"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:02.911419" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:02.910885" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:02.910763" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:02.912518" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-18T23:45:02.912055" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:02.911922" elapsed="0.000967"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:02.913224" elapsed="0.000090"/>
</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-18T23:45:02.919969" elapsed="0.000447"/>
</kw>
<kw name="Open 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-18T23:45:02.920632" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:02.920990" elapsed="0.000177"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:02.915059" elapsed="0.006218"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:02.549371" elapsed="0.372128"/>
</kw>
<msg time="2026-04-18T23:45:02.921832" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:02.548377" elapsed="0.373513"/>
</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-18T23:45:02.547561" elapsed="0.374409"/>
</kw>
<msg time="2026-04-18T23:45:02.922010" 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-18T23:45:02.546739" elapsed="0.375332"/>
</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-18T23:45:02.925005" 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-18T23:45:02.925598" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:02.925909" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:02.922365" elapsed="0.003711"/>
</kw>
<msg time="2026-04-18T23:45:02.926167" level="INFO">${output} = 1</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-18T23:45:02.545420" elapsed="0.380773"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:02.926627" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:02.926374" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:02.926716" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:45:02.926869" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:02.543963" elapsed="0.382932"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:02.926940" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:02.927099" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:02.542473" elapsed="0.384651"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:02.927675" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:02.927279" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:02.541657" elapsed="0.386196">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:04.931463" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:04.930651" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:04.933735" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:04.933132" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:04.936301" 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-18T23:45:04.936445" 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-18T23:45:04.936073" elapsed="0.000410"/>
</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-18T23:45:04.941921" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:04.941292" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:04.941213" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:04.944246" 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-18T23:45:04.944493" 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-18T23:45:04.943481" elapsed="0.001113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:04.946221" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:04.945590" elapsed="0.000745"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:04.948230" level="INFO">${conn_id} = 379</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:04.947396" elapsed="0.000934"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:04.950670" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:04.950778" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:04.950380" 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-18T23:45:04.951137" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:04.952523" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:05.285052" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:04.952176" elapsed="0.333064"/>
</kw>
<msg time="2026-04-18T23:45:05.285329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:04.951796" elapsed="0.333627"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:04.949522" elapsed="0.336185"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:05.287306" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:05.310756" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:05.311382" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:05.311719" 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-18T23:45:05.286833" elapsed="0.025099"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:05.314212" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:05.317070" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:05.316371" elapsed="0.000858"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:05.317880" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:05.317462" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:05.317379" elapsed="0.000721"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:05.318594" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-18T23:45:05.318306" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:05.318236" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:05.318983" elapsed="0.000140"/>
</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-18T23:45:05.325889" 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-18T23:45:05.326673" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:05.327236" 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-18T23:45:05.321094" elapsed="0.006438"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:04.939243" elapsed="0.388598"/>
</kw>
<msg time="2026-04-18T23:45:05.328336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:04.938278" elapsed="0.390117"/>
</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-18T23:45:04.937436" elapsed="0.391043"/>
</kw>
<msg time="2026-04-18T23:45:05.328520" 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-18T23:45:04.936704" elapsed="0.391863"/>
</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-18T23:45:05.331529" elapsed="0.000310"/>
</kw>
<kw name="Open 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-18T23:45:05.332003" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:05.332376" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:05.328859" elapsed="0.003666"/>
</kw>
<msg time="2026-04-18T23:45:05.332617" level="INFO">${output} = 1</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-18T23:45:04.934313" elapsed="0.398329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:05.333090" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:05.332823" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:05.333180" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:05.333332" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:04.932190" elapsed="0.401166"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:05.333403" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:45:05.333547" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:04.929818" elapsed="0.403753"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:05.334145" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:05.333729" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:04.928731" elapsed="0.405603">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:07.338104" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:07.337310" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:07.340275" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:07.339607" elapsed="0.000730"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:07.342124" 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-18T23:45:07.342494" 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-18T23:45:07.341770" elapsed="0.000787"/>
</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-18T23:45:07.347902" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:07.347441" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:07.347385" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:07.349752" 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-18T23:45:07.350000" 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-18T23:45:07.349074" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:07.351676" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:07.351127" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:07.353505" level="INFO">${conn_id} = 382</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:07.352790" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:07.356004" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:07.356104" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:07.355714" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:07.356378" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:07.357658" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:07.677703" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:07.357330" elapsed="0.320542"/>
</kw>
<msg time="2026-04-18T23:45:07.677954" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:07.356947" elapsed="0.321108"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:07.354831" elapsed="0.323515"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:07.679829" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:07.702525" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:07.703065" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:07.703404" 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-18T23:45:07.679440" elapsed="0.024176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:07.705856" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:07.709019" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:07.707998" elapsed="0.001345"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:07.710284" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:07.709705" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:07.709581" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:07.711378" elapsed="0.000144"/>
</return>
<status status="PASS" start="2026-04-18T23:45:07.710899" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:07.710793" elapsed="0.000964"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:07.711936" 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-18T23:45:07.721848" elapsed="0.000351"/>
</kw>
<kw name="Open 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-18T23:45:07.722487" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:07.722847" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:07.715071" elapsed="0.008002"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:07.345997" elapsed="0.377317"/>
</kw>
<msg time="2026-04-18T23:45:07.723618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:07.345317" elapsed="0.378358"/>
</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-18T23:45:07.344172" elapsed="0.379585"/>
</kw>
<msg time="2026-04-18T23:45:07.723800" 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-18T23:45:07.342915" elapsed="0.380932"/>
</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-18T23:45:07.726821" 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-18T23:45:07.727340" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:07.727631" 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-18T23:45:07.724154" elapsed="0.003625"/>
</kw>
<msg time="2026-04-18T23:45:07.727869" level="INFO">${output} = 1</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-18T23:45:07.340817" elapsed="0.387078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:07.728352" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:07.728086" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:07.728446" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:07.728598" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:07.338656" elapsed="0.389967"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:07.728670" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:45:07.728811" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:07.336414" elapsed="0.392422"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:07.729397" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:07.728991" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:07.335245" elapsed="0.394336">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:09.732045" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:09.731549" elapsed="0.000545"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:09.733546" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:09.733004" elapsed="0.000603"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:09.735206" 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-18T23:45:09.735354" 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-18T23:45:09.734947" elapsed="0.000445"/>
</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-18T23:45:09.740695" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:09.740020" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:09.739945" elapsed="0.001037"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:09.743153" 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-18T23:45:09.743402" 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-18T23:45:09.742415" elapsed="0.001089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:09.745094" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:09.744539" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:09.746899" level="INFO">${conn_id} = 385</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:09.746205" elapsed="0.000794"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:09.749328" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:09.749429" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:09.749039" 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-18T23:45:09.749669" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:09.750929" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:10.101984" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:09.750605" elapsed="0.351537"/>
</kw>
<msg time="2026-04-18T23:45:10.102229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:09.750244" elapsed="0.352071"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:09.748269" elapsed="0.354327"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:10.104096" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:10.126683" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:10.127226" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:10.127562" 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-18T23:45:10.103688" elapsed="0.024086"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:10.130055" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:10.133222" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:10.132244" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:10.134405" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:10.133835" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:10.133710" elapsed="0.000992"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:10.135518" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-18T23:45:10.135058" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:10.134920" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:10.136197" elapsed="0.000092"/>
</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-18T23:45:10.142091" elapsed="0.000337"/>
</kw>
<kw name="Open 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-18T23:45:10.142638" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:10.142996" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:10.138705" elapsed="0.004516"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:09.738108" elapsed="0.405335"/>
</kw>
<msg time="2026-04-18T23:45:10.143831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:09.737145" elapsed="0.406746"/>
</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-18T23:45:09.736378" elapsed="0.407596"/>
</kw>
<msg time="2026-04-18T23:45:10.144014" 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-18T23:45:09.735614" elapsed="0.408500"/>
</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-18T23:45:10.147073" elapsed="0.000325"/>
</kw>
<kw name="Open 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-18T23:45:10.147563" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:10.147857" 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-18T23:45:10.144409" elapsed="0.003596"/>
</kw>
<msg time="2026-04-18T23:45:10.148198" level="INFO">${output} = 1</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-18T23:45:09.734119" elapsed="0.414105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:10.148654" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:10.148404" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:10.148742" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:45:10.148894" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:09.732411" elapsed="0.416606"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:10.149081" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:45:10.149230" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:09.730990" elapsed="0.418265"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:10.149824" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:10.149412" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:09.730318" elapsed="0.419686">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:12.153673" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:12.152857" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:12.155964" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:12.155316" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:12.157898" 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-18T23:45:12.158163" 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-18T23:45:12.157570" elapsed="0.000655"/>
</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-18T23:45:12.168061" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:12.167014" elapsed="0.001160"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:12.166885" elapsed="0.001356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:12.169780" 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-18T23:45:12.170058" 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-18T23:45:12.169256" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:12.171721" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:12.171171" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:12.173698" level="INFO">${conn_id} = 388</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:12.172916" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:12.176124" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:12.176203" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:12.175792" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:12.176442" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:12.177821" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:12.491768" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:12.177494" elapsed="0.314439"/>
</kw>
<msg time="2026-04-18T23:45:12.492018" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:12.176995" elapsed="0.315140"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:12.175017" elapsed="0.317408"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:12.493992" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:12.516207" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:12.516699" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:12.517068" 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-18T23:45:12.493559" elapsed="0.023728"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:12.519492" elapsed="0.000602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:12.521608" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:12.520936" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:12.522409" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:12.522006" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:12.521917" elapsed="0.000687"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:12.523145" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-18T23:45:12.522816" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:12.522746" elapsed="0.000632"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:12.523494" elapsed="0.000057"/>
</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-18T23:45:12.529514" elapsed="0.000335"/>
</kw>
<kw name="Open 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-18T23:45:12.530188" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:12.530559" 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-18T23:45:12.525484" elapsed="0.005279"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:12.163875" elapsed="0.367172"/>
</kw>
<msg time="2026-04-18T23:45:12.531353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:12.162133" elapsed="0.369277"/>
</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-18T23:45:12.160732" elapsed="0.370761"/>
</kw>
<msg time="2026-04-18T23:45:12.531533" 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-18T23:45:12.158909" elapsed="0.372669"/>
</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-18T23:45:12.534680" 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-18T23:45:12.535210" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:12.535509" 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-18T23:45:12.531957" elapsed="0.003698"/>
</kw>
<msg time="2026-04-18T23:45:12.535747" level="INFO">${output} = 1</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-18T23:45:12.156575" elapsed="0.379197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:12.536218" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:12.535951" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:12.536304" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:12.536458" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:12.154258" elapsed="0.382224"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:12.536529" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:12.536674" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:12.151968" elapsed="0.384731"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:12.537320" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:12.536857" elapsed="0.000542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:12.150869" elapsed="0.386646">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:14.541021" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:14.540264" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:14.543197" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:14.542572" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:14.545064" 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-18T23:45:14.545215" 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-18T23:45:14.544734" elapsed="0.000518"/>
</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-18T23:45:14.551335" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:14.550618" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:14.550205" elapsed="0.001378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:14.553337" 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-18T23:45:14.553579" 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-18T23:45:14.552873" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:14.555228" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:14.554670" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:14.557147" level="INFO">${conn_id} = 391</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:14.556334" elapsed="0.000911"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:14.559517" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:14.559593" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:14.559215" 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-18T23:45:14.559826" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:14.561391" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:14.876904" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:14.560872" elapsed="0.316228"/>
</kw>
<msg time="2026-04-18T23:45:14.877197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:14.560512" elapsed="0.316788"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:14.558444" elapsed="0.319187"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:14.879192" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:14.901878" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:14.902446" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:14.902778" 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-18T23:45:14.878749" elapsed="0.024242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:14.905263" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:14.908463" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:14.907471" elapsed="0.001214"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:14.909555" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:14.909060" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:14.908909" elapsed="0.000933"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:14.910635" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-18T23:45:14.910192" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:14.910081" elapsed="0.000891"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:14.911361" elapsed="0.000088"/>
</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-18T23:45:14.916797" 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-18T23:45:14.917384" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:14.917747" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:14.913272" elapsed="0.004685"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:14.548263" elapsed="0.369938"/>
</kw>
<msg time="2026-04-18T23:45:14.918521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:14.547230" elapsed="0.371349"/>
</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-18T23:45:14.546405" elapsed="0.372256"/>
</kw>
<msg time="2026-04-18T23:45:14.918702" 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-18T23:45:14.545490" elapsed="0.373257"/>
</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-18T23:45:14.921914" 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-18T23:45:14.922454" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:14.922750" 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-18T23:45:14.919097" elapsed="0.003799"/>
</kw>
<msg time="2026-04-18T23:45:14.923156" level="INFO">${output} = 1</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-18T23:45:14.543731" elapsed="0.379453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:14.923619" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:14.923366" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:14.923708" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:45:14.923863" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:14.541633" elapsed="0.382255"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:14.923935" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:45:14.924099" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:14.539405" elapsed="0.384719"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:14.924738" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:14.924312" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:14.538332" elapsed="0.386605">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:16.928510" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:16.927706" elapsed="0.000876"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:16.930256" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:16.929847" elapsed="0.000447"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:16.931405" 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-18T23:45:16.931546" 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-18T23:45:16.931185" elapsed="0.000398"/>
</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-18T23:45:16.937481" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:16.936742" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:16.936385" elapsed="0.001296"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:16.939852" 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-18T23:45:16.940255" 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-18T23:45:16.939224" elapsed="0.001169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:16.942269" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:16.941703" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:16.944126" level="INFO">${conn_id} = 394</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:16.943377" elapsed="0.000845"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:16.946553" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:16.946633" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:16.946264" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:16.946881" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:16.948314" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:17.298504" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:16.947826" elapsed="0.350922"/>
</kw>
<msg time="2026-04-18T23:45:17.298834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:16.947451" elapsed="0.351471"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:16.945457" elapsed="0.353766"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:17.300710" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:17.323499" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:17.323724" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:17.323873" 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-18T23:45:17.300320" elapsed="0.023647"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:17.324968" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:17.326461" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:17.325996" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:17.326982" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:17.326738" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:17.326680" elapsed="0.000456"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:17.327481" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-18T23:45:17.327280" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:17.327232" elapsed="0.000407"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:17.327719" 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-18T23:45:17.334005" elapsed="0.000501"/>
</kw>
<kw name="Open 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-18T23:45:17.334715" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:17.335087" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:17.329068" elapsed="0.006226"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:16.934454" elapsed="0.401058"/>
</kw>
<msg time="2026-04-18T23:45:17.335811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:16.933478" elapsed="0.402389"/>
</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-18T23:45:16.932685" elapsed="0.403259"/>
</kw>
<msg time="2026-04-18T23:45:17.335984" 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-18T23:45:16.931803" elapsed="0.404239"/>
</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-18T23:45:17.339005" elapsed="0.000323"/>
</kw>
<kw name="Open 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-18T23:45:17.339494" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:17.339788" 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-18T23:45:17.336330" elapsed="0.003604"/>
</kw>
<msg time="2026-04-18T23:45:17.340021" level="INFO">${output} = 1</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-18T23:45:16.930594" elapsed="0.409470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:17.340490" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:17.340245" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:17.340577" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:17.340725" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:16.929070" elapsed="0.411680"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:17.340795" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:45:17.340935" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:16.926856" elapsed="0.414103"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:17.341599" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:17.341184" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:16.925759" elapsed="0.416022">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:19.345314" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:19.344533" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:19.347461" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:19.346824" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:19.349326" 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-18T23:45:19.349555" 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-18T23:45:19.348957" elapsed="0.000658"/>
</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-18T23:45:19.354617" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:19.354063" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:19.353977" elapsed="0.000781"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:19.356436" 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-18T23:45:19.356686" 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-18T23:45:19.355759" elapsed="0.001028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:19.358350" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:19.357775" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:19.360249" level="INFO">${conn_id} = 397</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:19.359534" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:19.362804" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:19.362882" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:19.362520" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:19.363298" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:19.364571" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:19.669624" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:19.364242" elapsed="0.305554"/>
</kw>
<msg time="2026-04-18T23:45:19.669881" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:19.363862" elapsed="0.306107"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:19.361713" elapsed="0.308581"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:19.671814" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:19.694842" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:19.695397" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:19.695769" 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-18T23:45:19.671414" elapsed="0.024565"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:19.698248" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:19.700730" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:19.700123" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:19.701493" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:19.701152" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:19.701019" elapsed="0.000658"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:19.702174" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:45:19.701874" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:19.701809" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:19.702508" elapsed="0.000055"/>
</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-18T23:45:19.709185" elapsed="0.000466"/>
</kw>
<kw name="Open 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-18T23:45:19.709941" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:19.710459" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:19.704370" elapsed="0.006414"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:19.352652" elapsed="0.358458"/>
</kw>
<msg time="2026-04-18T23:45:19.711527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:19.351937" elapsed="0.359657"/>
</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-18T23:45:19.351212" elapsed="0.360463"/>
</kw>
<msg time="2026-04-18T23:45:19.711715" 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-18T23:45:19.349963" elapsed="0.361798"/>
</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-18T23:45:19.714871" 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-18T23:45:19.715366" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:19.715661" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:19.712066" elapsed="0.003741"/>
</kw>
<msg time="2026-04-18T23:45:19.715898" level="INFO">${output} = 1</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-18T23:45:19.348011" elapsed="0.367912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:19.716378" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:19.716122" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:19.716465" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:45:19.716638" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:19.345849" elapsed="0.370815"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:19.716712" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:19.716859" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:19.343681" elapsed="0.373202"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:19.717488" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:19.717082" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:19.342627" elapsed="0.375051">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:21.721192" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:21.720431" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:21.723426" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:21.722796" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:21.725291" 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-18T23:45:21.725509" 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-18T23:45:21.724949" elapsed="0.000619"/>
</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-18T23:45:21.730658" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:21.730193" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:21.730136" elapsed="0.000659"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:21.732491" 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-18T23:45:21.732733" 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-18T23:45:21.731807" elapsed="0.001028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:21.734357" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:21.733801" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:21.736255" level="INFO">${conn_id} = 400</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:21.735436" elapsed="0.000915"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:21.738581" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:21.738658" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:21.738299" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:21.738892" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:21.740287" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:22.056610" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:21.739843" elapsed="0.316938"/>
</kw>
<msg time="2026-04-18T23:45:22.056872" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:21.739456" elapsed="0.317506"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:21.737529" elapsed="0.319747"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:22.058764" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:22.081631" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:22.082177" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:22.082515" 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-18T23:45:22.058375" elapsed="0.024356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:22.085011" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:22.088225" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:22.087204" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:22.089174" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:22.088740" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:22.088656" elapsed="0.000711"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:22.089859" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:45:22.089572" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:22.089502" elapsed="0.000606"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:22.090221" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:22.096787" 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-18T23:45:22.097346" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:22.097702" 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-18T23:45:22.092157" elapsed="0.005752"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:21.728706" elapsed="0.369445"/>
</kw>
<msg time="2026-04-18T23:45:22.098524" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:21.728004" elapsed="0.370580"/>
</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-18T23:45:21.727134" elapsed="0.371532"/>
</kw>
<msg time="2026-04-18T23:45:22.098707" 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-18T23:45:21.725929" elapsed="0.372824"/>
</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-18T23:45:22.101834" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:45:22.102326" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:22.102626" 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-18T23:45:22.099175" elapsed="0.003598"/>
</kw>
<msg time="2026-04-18T23:45:22.102863" level="INFO">${output} = 1</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-18T23:45:21.724001" elapsed="0.378887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:22.103340" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:22.103092" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:22.103427" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:22.103579" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:21.721845" elapsed="0.381759"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:22.103650" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:45:22.103793" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:21.719548" elapsed="0.384269"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:22.104408" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:22.103998" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:21.718506" elapsed="0.386090">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:24.108440" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:24.107584" elapsed="0.000950"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:24.110346" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:24.109938" elapsed="0.000446"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:24.111574" 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-18T23:45:24.111845" 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-18T23:45:24.111330" elapsed="0.000554"/>
</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-18T23:45:24.117298" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:24.116569" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:24.116491" elapsed="0.001003"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:24.119217" 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-18T23:45:24.119465" 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-18T23:45:24.118524" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:24.121114" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:24.120545" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:24.122888" level="INFO">${conn_id} = 403</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:24.122189" elapsed="0.000796"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:24.125330" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:24.125409" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:24.125024" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:24.125649" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:24.126917" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:24.440759" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:24.126591" elapsed="0.314307"/>
</kw>
<msg time="2026-04-18T23:45:24.440980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:24.126229" elapsed="0.314882"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:24.124253" elapsed="0.317167"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:24.442953" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:24.465768" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:24.466381" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:24.466725" 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-18T23:45:24.442558" elapsed="0.024381"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:24.469262" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:24.472505" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:24.471499" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:24.473771" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:24.473181" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:24.472970" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:24.474489" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-18T23:45:24.474198" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:24.474131" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:24.474896" elapsed="0.000056"/>
</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-18T23:45:24.481778" elapsed="0.000404"/>
</kw>
<kw name="Open 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-18T23:45:24.482506" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:24.482879" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:24.476815" elapsed="0.006376"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:24.114631" elapsed="0.368794"/>
</kw>
<msg time="2026-04-18T23:45:24.483771" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:24.113685" elapsed="0.370154"/>
</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-18T23:45:24.112908" elapsed="0.371017"/>
</kw>
<msg time="2026-04-18T23:45:24.483971" 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-18T23:45:24.112135" elapsed="0.371914"/>
</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-18T23:45:24.487745" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:24.488242" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:24.488540" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:24.484444" elapsed="0.004256"/>
</kw>
<msg time="2026-04-18T23:45:24.488791" level="INFO">${output} = 1</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-18T23:45:24.110691" elapsed="0.378126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:24.489310" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:24.489002" elapsed="0.000353"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:24.489399" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:24.489552" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:24.109163" elapsed="0.380414"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:24.489625" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:24.489776" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:24.106635" elapsed="0.383166"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:24.490381" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:24.489960" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:24.105550" elapsed="0.385022">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:26.494277" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:26.493420" elapsed="0.000930"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:26.495827" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:26.495439" elapsed="0.000426"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:26.497007" 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-18T23:45:26.497174" 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-18T23:45:26.496780" elapsed="0.000431"/>
</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-18T23:45:26.502934" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:26.501962" elapsed="0.001138"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:26.501886" elapsed="0.001278"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:26.504610" 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-18T23:45:26.504860" 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-18T23:45:26.504155" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:26.506534" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:26.505942" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:26.508336" level="INFO">${conn_id} = 406</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:26.507614" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:26.511235" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:26.511317" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:26.510878" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:26.511567" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:26.512900" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:26.821552" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:26.512560" elapsed="0.309137"/>
</kw>
<msg time="2026-04-18T23:45:26.821779" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:26.512182" elapsed="0.309682"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:26.509720" elapsed="0.312456"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:26.823688" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:26.846680" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:26.847237" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:26.847569" 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-18T23:45:26.823298" elapsed="0.024483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:26.850062" elapsed="0.000837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:26.852443" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:26.851758" elapsed="0.000839"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:26.853275" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:26.852867" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:26.852782" elapsed="0.000686"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:26.853979" elapsed="0.000102"/>
</return>
<status status="PASS" start="2026-04-18T23:45:26.853682" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:26.853610" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:26.854369" elapsed="0.000055"/>
</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-18T23:45:26.860706" elapsed="0.000456"/>
</kw>
<kw name="Open 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-18T23:45:26.861375" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:26.861732" 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-18T23:45:26.856362" elapsed="0.005583"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:26.499945" elapsed="0.362238"/>
</kw>
<msg time="2026-04-18T23:45:26.862582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:26.498965" elapsed="0.363679"/>
</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-18T23:45:26.498221" elapsed="0.364507"/>
</kw>
<msg time="2026-04-18T23:45:26.862769" 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-18T23:45:26.497436" elapsed="0.365378"/>
</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-18T23:45:26.865809" 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-18T23:45:26.866328" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:26.866628" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:26.863122" elapsed="0.003654"/>
</kw>
<msg time="2026-04-18T23:45:26.866867" level="INFO">${output} = 1</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-18T23:45:26.496195" elapsed="0.370697"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:26.867366" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:26.867115" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:26.867454" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:45:26.867605" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:26.494813" elapsed="0.372817"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:26.867676" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:45:26.867820" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:26.492560" elapsed="0.375284"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:26.868449" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:26.868048" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:26.491449" elapsed="0.377191">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:28.872195" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:28.871395" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:28.874331" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:28.873693" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:28.876206" 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-18T23:45:28.876431" 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-18T23:45:28.875853" elapsed="0.000654"/>
</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-18T23:45:28.882416" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:28.881932" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:28.881647" elapsed="0.000906"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:28.884009" 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-18T23:45:28.884268" 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-18T23:45:28.883574" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:28.885896" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:28.885357" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:28.887972" level="INFO">${conn_id} = 409</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:28.887254" elapsed="0.000936"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:28.890404" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:28.890482" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:28.890123" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:28.890716" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:28.891994" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:29.236844" 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 Sat Apr 18 23:44:29 UTC 2026

  System load:  0.08               Processes:             127
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:28.891671" elapsed="0.345327"/>
</kw>
<msg time="2026-04-18T23:45:29.237102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:28.891299" elapsed="0.345894"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:28.889360" elapsed="0.348139"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:29.239004" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:29.262167" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:29.262678" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:29.263008" 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-18T23:45:29.238609" elapsed="0.024659"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:29.265618" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:29.268795" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:29.267786" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:29.269895" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:29.269398" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:29.269276" elapsed="0.000936"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:29.270995" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-18T23:45:29.270549" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:29.270440" elapsed="0.000938"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:29.271590" elapsed="0.000089"/>
</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-18T23:45:29.276758" elapsed="0.000351"/>
</kw>
<kw name="Open 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-18T23:45:29.277321" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:29.277678" 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-18T23:45:29.273381" elapsed="0.004502"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:28.880338" elapsed="0.397781"/>
</kw>
<msg time="2026-04-18T23:45:29.278420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:28.879461" elapsed="0.399020"/>
</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-18T23:45:28.878091" elapsed="0.400470"/>
</kw>
<msg time="2026-04-18T23:45:29.278602" 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-18T23:45:28.876885" elapsed="0.401762"/>
</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-18T23:45:29.281777" 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-18T23:45:29.282268" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:29.282561" 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-18T23:45:29.279012" elapsed="0.003696"/>
</kw>
<msg time="2026-04-18T23:45:29.282798" level="INFO">${output} = 1</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-18T23:45:28.874867" elapsed="0.407956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:29.283256" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:29.282995" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:29.283343" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:29.283493" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:28.872716" elapsed="0.410802"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:29.283574" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:29.283717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:28.870526" elapsed="0.413215"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:29.284382" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:29.283895" elapsed="0.000564">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:28.869502" elapsed="0.415068">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:31.287946" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:31.287213" elapsed="0.000801"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:31.290140" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:31.289501" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:31.292007" 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-18T23:45:31.292264" 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-18T23:45:31.291682" elapsed="0.000642"/>
</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-18T23:45:31.298150" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:31.297485" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:31.297123" elapsed="0.001223"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:31.300459" 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-18T23:45:31.300841" 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-18T23:45:31.299825" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:31.302467" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:31.301914" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:31.304273" level="INFO">${conn_id} = 412</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:31.303560" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:31.306627" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:31.306705" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:31.306349" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:31.306938" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:31.308535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:31.936095" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:31.307943" elapsed="0.628306"/>
</kw>
<msg time="2026-04-18T23:45:31.936338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:31.307582" elapsed="0.628854"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:31.305577" elapsed="0.631146"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:31.938249" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:31.961328" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:31.961857" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:31.962247" 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-18T23:45:31.937831" elapsed="0.024632"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:31.964708" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:31.967217" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:31.966550" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:31.967914" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:31.967587" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:31.967507" elapsed="0.000673"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:31.968666" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:45:31.968384" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:31.968317" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:31.969018" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:31.977795" elapsed="0.000421"/>
</kw>
<kw name="Open 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-18T23:45:31.978425" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:31.978780" 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-18T23:45:31.970887" elapsed="0.008101"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:31.295260" elapsed="0.683985"/>
</kw>
<msg time="2026-04-18T23:45:31.979553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:31.294317" elapsed="0.685292"/>
</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-18T23:45:31.293521" elapsed="0.686167"/>
</kw>
<msg time="2026-04-18T23:45:31.979727" 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-18T23:45:31.292722" elapsed="0.687050"/>
</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-18T23:45:31.982751" elapsed="0.000339"/>
</kw>
<kw name="Open 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-18T23:45:31.983254" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:31.983548" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:31.980080" elapsed="0.003617"/>
</kw>
<msg time="2026-04-18T23:45:31.983842" level="INFO">${output} = 1</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-18T23:45:31.290684" elapsed="0.693184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:31.984349" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:31.984100" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:31.984435" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:31.984584" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:31.288500" elapsed="0.696109"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:31.984655" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:31.984797" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:31.286388" elapsed="0.698434"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:31.985410" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:31.985004" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:31.285365" elapsed="0.700231">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:33.989289" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:33.988401" elapsed="0.000958"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:33.991255" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:33.990798" elapsed="0.000497"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:33.992489" 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-18T23:45:33.992637" 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-18T23:45:33.992244" elapsed="0.000431"/>
</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-18T23:45:33.998246" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:33.997534" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:33.997452" elapsed="0.000994"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:34.000877" 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-18T23:45:34.001339" 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-18T23:45:33.999890" elapsed="0.001593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:34.003481" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:34.002928" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:34.005320" level="INFO">${conn_id} = 415</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:34.004560" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:34.007672" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:34.007749" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:34.007375" 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-18T23:45:34.007981" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:34.009277" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:34.326986" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:34.008905" elapsed="0.318555"/>
</kw>
<msg time="2026-04-18T23:45:34.327648" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:34.008547" elapsed="0.319265"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:34.006607" elapsed="0.321822"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:34.331582" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:34.354485" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:34.355022" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:34.355436" 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-18T23:45:34.330760" elapsed="0.024889"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:34.357928" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:34.361357" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:34.360322" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:34.362587" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:34.361945" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:34.361817" elapsed="0.001074"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:34.363733" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-18T23:45:34.363276" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:34.363168" elapsed="0.001104"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:34.364455" elapsed="0.000084"/>
</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-18T23:45:34.370885" elapsed="0.000360"/>
</kw>
<kw name="Open 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-18T23:45:34.371461" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:34.371825" 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-18T23:45:34.367239" elapsed="0.004859"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:33.995516" elapsed="0.376811"/>
</kw>
<msg time="2026-04-18T23:45:34.372637" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:33.994507" elapsed="0.378188"/>
</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-18T23:45:33.993687" elapsed="0.379091"/>
</kw>
<msg time="2026-04-18T23:45:34.372819" 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-18T23:45:33.992910" elapsed="0.379955"/>
</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-18T23:45:34.375849" 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-18T23:45:34.376428" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:34.376723" 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-18T23:45:34.373172" elapsed="0.003697"/>
</kw>
<msg time="2026-04-18T23:45:34.376960" level="INFO">${output} = 1</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-18T23:45:33.991615" elapsed="0.385370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:34.377429" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:34.377180" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:34.377515" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:45:34.377666" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:33.989815" elapsed="0.387876"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:34.377738" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:34.377883" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:33.987566" elapsed="0.390341"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:34.378547" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:34.378120" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:33.986473" elapsed="0.392271">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:36.382226" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:36.381461" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:36.384281" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:36.383766" elapsed="0.000554"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:36.385470" 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-18T23:45:36.385614" 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-18T23:45:36.385229" elapsed="0.000423"/>
</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-18T23:45:36.391316" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:36.390608" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:36.390528" elapsed="0.000989"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:36.393833" 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-18T23:45:36.394229" 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-18T23:45:36.392906" elapsed="0.001459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:36.396421" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:36.395765" elapsed="0.000764"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:36.398263" level="INFO">${conn_id} = 418</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:36.397496" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:36.400701" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:36.400779" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:36.400410" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:36.401023" elapsed="0.000566"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:36.402528" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:36.723369" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:36.402200" elapsed="0.321331"/>
</kw>
<msg time="2026-04-18T23:45:36.723616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:36.401815" elapsed="0.321891"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:36.399606" elapsed="0.324384"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:36.725515" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:36.748522" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:36.749116" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:36.749450" 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-18T23:45:36.725120" elapsed="0.024538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:36.752023" elapsed="0.000708"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:36.754309" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:36.753580" elapsed="0.000881"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:36.755111" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:36.754696" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:36.754614" 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-18T23:45:36.755829" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-18T23:45:36.755536" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:36.755464" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:36.756212" elapsed="0.000055"/>
</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-18T23:45:36.763238" elapsed="0.000352"/>
</kw>
<kw name="Open 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-18T23:45:36.763803" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:36.764279" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:36.758214" elapsed="0.006281"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:36.388525" elapsed="0.376193"/>
</kw>
<msg time="2026-04-18T23:45:36.765047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:36.387471" elapsed="0.377638"/>
</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-18T23:45:36.386639" elapsed="0.378552"/>
</kw>
<msg time="2026-04-18T23:45:36.765232" 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-18T23:45:36.385872" elapsed="0.379406"/>
</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-18T23:45:36.768297" 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-18T23:45:36.768793" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:36.769108" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:36.765567" elapsed="0.003693"/>
</kw>
<msg time="2026-04-18T23:45:36.769354" level="INFO">${output} = 1</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-18T23:45:36.384628" elapsed="0.384752"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:36.769815" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:36.769566" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:36.769904" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:45:36.770085" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:36.382748" elapsed="0.387364"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:36.770161" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:36.770308" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:36.380615" elapsed="0.389718"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:36.770884" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:36.770490" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:36.379574" elapsed="0.391577">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:38.774666" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:38.773898" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:38.776987" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:38.776300" elapsed="0.000776"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:38.778241" 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-18T23:45:38.778383" 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-18T23:45:38.777975" elapsed="0.000445"/>
</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-18T23:45:38.783667" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:38.783015" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:38.782936" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:38.786196" 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-18T23:45:38.786541" 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-18T23:45:38.785249" elapsed="0.001435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:38.788894" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:38.788093" elapsed="0.000984"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:38.790788" level="INFO">${conn_id} = 421</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:38.790090" elapsed="0.000795"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:38.793231" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:38.793310" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:38.792922" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:38.793572" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:38.795201" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:39.147935" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:38.794716" elapsed="0.353378"/>
</kw>
<msg time="2026-04-18T23:45:39.148177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:38.794257" elapsed="0.354009"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:38.792131" elapsed="0.356409"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:39.150024" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:39.172406" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:39.172932" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:39.173317" 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-18T23:45:39.149630" elapsed="0.023898"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:39.175721" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:39.178879" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:39.177873" elapsed="0.001294"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:39.180150" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:39.179518" elapsed="0.000805"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:39.179396" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:39.181258" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-18T23:45:39.180884" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:39.180764" elapsed="0.000718"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:39.181592" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:39.188122" elapsed="0.000458"/>
</kw>
<kw name="Open 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-18T23:45:39.188910" elapsed="0.000263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:39.189370" 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-18T23:45:39.183489" elapsed="0.006086"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:38.781130" elapsed="0.408666"/>
</kw>
<msg time="2026-04-18T23:45:39.190173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:38.780149" elapsed="0.410084"/>
</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-18T23:45:38.779373" elapsed="0.410942"/>
</kw>
<msg time="2026-04-18T23:45:39.190356" 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-18T23:45:38.778642" elapsed="0.411760"/>
</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-18T23:45:39.193381" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:45:39.193853" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:39.194236" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:39.190691" elapsed="0.003695"/>
</kw>
<msg time="2026-04-18T23:45:39.194478" level="INFO">${output} = 1</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-18T23:45:38.777386" elapsed="0.417117"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:39.194922" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:39.194676" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:39.195008" elapsed="0.000044"/>
</return>
<msg time="2026-04-18T23:45:39.195182" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:38.775368" elapsed="0.419840"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:39.195254" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:45:39.195396" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:38.773057" elapsed="0.422363"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:39.195961" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:39.195573" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:38.771941" elapsed="0.424218">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:41.199712" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:41.198950" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:41.201909" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:41.201244" elapsed="0.000727"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:41.203164" 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-18T23:45:41.203437" 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-18T23:45:41.202919" elapsed="0.000557"/>
</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-18T23:45:41.209347" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:41.208250" elapsed="0.001211"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:41.208175" elapsed="0.001370"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:41.211257" 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-18T23:45:41.211505" 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-18T23:45:41.210784" elapsed="0.000830"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:41.213161" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:41.212604" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:41.214976" level="INFO">${conn_id} = 424</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:41.214271" elapsed="0.000889"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:41.217428" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:41.217507" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:41.217148" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:41.217839" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:41.219421" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:41.515521" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:41.218819" elapsed="0.296875"/>
</kw>
<msg time="2026-04-18T23:45:41.515784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:41.218458" elapsed="0.297424"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:41.216375" elapsed="0.299833"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:41.517763" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:41.540762" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:41.541378" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:41.541732" 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-18T23:45:41.517332" elapsed="0.024673"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:41.544602" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:41.548153" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:41.547072" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:41.549353" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:41.548774" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:41.548641" elapsed="0.001028"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:41.550412" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-18T23:45:41.550190" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:41.549947" elapsed="0.000636"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:41.550667" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:41.555610" 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-18T23:45:41.556265" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:41.556642" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:41.552089" elapsed="0.004769"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:41.206330" elapsed="0.350778"/>
</kw>
<msg time="2026-04-18T23:45:41.557471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:41.205218" elapsed="0.352315"/>
</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-18T23:45:41.204449" elapsed="0.353172"/>
</kw>
<msg time="2026-04-18T23:45:41.557662" 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-18T23:45:41.203702" elapsed="0.354008"/>
</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-18T23:45:41.560884" elapsed="0.000333"/>
</kw>
<kw name="Open 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-18T23:45:41.561399" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:41.561706" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:41.558022" elapsed="0.003833"/>
</kw>
<msg time="2026-04-18T23:45:41.561983" level="INFO">${output} = 1</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-18T23:45:41.202347" elapsed="0.359663"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:41.562477" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:41.562214" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:41.562565" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:45:41.562723" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:41.200268" elapsed="0.362480"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:41.562795" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:45:41.562942" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:41.198130" elapsed="0.364836"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:41.563632" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:41.563208" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:41.196981" elapsed="0.366846">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:43.567350" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:43.566603" elapsed="0.000793"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:43.568699" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:43.568301" elapsed="0.000436"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:43.569865" 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-18T23:45:43.570004" 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-18T23:45:43.569638" elapsed="0.000422"/>
</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-18T23:45:43.575561" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:43.575009" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:43.574597" elapsed="0.001171"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:43.577231" 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-18T23:45:43.577476" 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-18T23:45:43.576777" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:43.579141" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:43.578572" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:43.581011" level="INFO">${conn_id} = 427</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:43.580267" elapsed="0.000854"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:43.583415" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:43.583492" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:43.583132" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:43.583728" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:43.585129" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:43.909986" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:43.584791" elapsed="0.325467"/>
</kw>
<msg time="2026-04-18T23:45:43.910413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:43.584433" elapsed="0.326135"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:43.582309" elapsed="0.329017"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:43.913949" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:43.936967" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:43.937561" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:43.937912" 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-18T23:45:43.913383" elapsed="0.024796"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:43.940578" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:43.943831" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:43.942820" elapsed="0.001440"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:43.945139" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:43.944615" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:43.944491" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:43.946209" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-18T23:45:43.945738" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:43.945634" elapsed="0.001049"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:43.946859" elapsed="0.000082"/>
</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-18T23:45:43.952359" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:43.952906" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:43.953281" 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-18T23:45:43.949016" elapsed="0.004474"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:43.572711" elapsed="0.381006"/>
</kw>
<msg time="2026-04-18T23:45:43.954097" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:43.571761" elapsed="0.382394"/>
</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-18T23:45:43.571005" elapsed="0.383231"/>
</kw>
<msg time="2026-04-18T23:45:43.954277" 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-18T23:45:43.570280" elapsed="0.384043"/>
</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-18T23:45:43.957400" elapsed="0.000315"/>
</kw>
<kw name="Open 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-18T23:45:43.957878" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:43.958185" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:43.954625" elapsed="0.003705"/>
</kw>
<msg time="2026-04-18T23:45:43.958418" level="INFO">${output} = 1</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-18T23:45:43.569056" elapsed="0.389387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:43.958868" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:43.958617" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:43.958953" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:43.959143" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:43.567683" elapsed="0.391487"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:43.959217" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:43.959360" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:43.565701" elapsed="0.393682"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:43.959967" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:43.959542" elapsed="0.000618">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:43.564631" elapsed="0.395646">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:45.963853" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:45.963121" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:45.966068" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:45.965382" elapsed="0.000750"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:45.967298" 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-18T23:45:45.967437" 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-18T23:45:45.967080" elapsed="0.000394"/>
</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-18T23:45:45.972995" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:45.972355" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:45.971975" elapsed="0.001247"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:45.974995" 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-18T23:45:45.975251" 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-18T23:45:45.974562" elapsed="0.000788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:45.976866" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:45.976327" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:45.978773" level="INFO">${conn_id} = 430</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:45.978084" elapsed="0.000787"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:45.981315" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:45.981402" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:45.980891" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:45.981677" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:45.983069" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:46.306922" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:45.982726" elapsed="0.324345"/>
</kw>
<msg time="2026-04-18T23:45:46.307160" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:45.982348" elapsed="0.324895"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:45.980109" elapsed="0.327400"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:46.308965" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:46.331933" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:46.332530" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:46.332890" 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-18T23:45:46.308584" elapsed="0.024577"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:46.335607" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:46.338951" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:46.337916" elapsed="0.001333"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:46.340265" elapsed="0.000056"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:46.339674" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:46.339493" elapsed="0.000933"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:46.340770" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-18T23:45:46.340572" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:46.340523" elapsed="0.000402"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:46.341004" elapsed="0.000103"/>
</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-18T23:45:46.347710" elapsed="0.000413"/>
</kw>
<kw name="Open 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-18T23:45:46.348340" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:46.348701" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:46.342420" elapsed="0.006492"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:45.970173" elapsed="0.378982"/>
</kw>
<msg time="2026-04-18T23:45:46.349469" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:45.969202" elapsed="0.380327"/>
</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-18T23:45:45.968430" elapsed="0.381177"/>
</kw>
<msg time="2026-04-18T23:45:46.349647" 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-18T23:45:45.967694" elapsed="0.381998"/>
</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-18T23:45:46.352816" elapsed="0.000328"/>
</kw>
<kw name="Open 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-18T23:45:46.353308" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:46.353601" 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-18T23:45:46.350063" elapsed="0.003685"/>
</kw>
<msg time="2026-04-18T23:45:46.353839" level="INFO">${output} = 1</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-18T23:45:45.966471" elapsed="0.387393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:46.354323" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:46.354073" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:46.354410" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:45:46.354562" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:45.964414" elapsed="0.390173"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:46.354632" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:46.354772" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:45.962262" elapsed="0.392534"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:46.355367" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:46.354949" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:45.961151" elapsed="0.394397">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:48.359476" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:48.358555" elapsed="0.000969"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:48.360822" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:48.360439" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:48.362013" 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-18T23:45:48.362193" 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-18T23:45:48.361791" elapsed="0.000444"/>
</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-18T23:45:48.367654" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:48.367103" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:48.366998" elapsed="0.000798"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:48.369518" 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-18T23:45:48.369768" 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-18T23:45:48.368808" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:48.371465" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:48.370884" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:48.373274" level="INFO">${conn_id} = 433</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:48.372558" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:48.375842" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:48.375921" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:48.375518" 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-18T23:45:48.376182" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:48.377549" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:48.705292" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:48.377218" elapsed="0.328225"/>
</kw>
<msg time="2026-04-18T23:45:48.705527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:48.376831" elapsed="0.328781"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:48.374666" elapsed="0.331259"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:48.707502" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:48.730367" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:48.730932" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:48.731317" 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-18T23:45:48.707081" elapsed="0.024465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:48.733822" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:48.737155" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:48.736099" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:48.738271" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:48.737737" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:48.737615" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:48.739372" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-18T23:45:48.738935" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:48.738769" elapsed="0.000863"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:48.739758" elapsed="0.000056"/>
</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-18T23:45:48.746899" elapsed="0.000554"/>
</kw>
<kw name="Open 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-18T23:45:48.747670" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:48.748069" 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-18T23:45:48.741862" elapsed="0.006426"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:48.365015" elapsed="0.383503"/>
</kw>
<msg time="2026-04-18T23:45:48.748829" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:48.364013" elapsed="0.384880"/>
</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-18T23:45:48.363260" elapsed="0.385716"/>
</kw>
<msg time="2026-04-18T23:45:48.749017" 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-18T23:45:48.362461" elapsed="0.386699"/>
</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-18T23:45:48.752994" elapsed="0.000463"/>
</kw>
<kw name="Open 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-18T23:45:48.753671" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:48.753995" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:48.749487" elapsed="0.004692"/>
</kw>
<msg time="2026-04-18T23:45:48.754372" level="INFO">${output} = 1</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-18T23:45:48.361203" elapsed="0.393197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:48.754866" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:48.754600" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:48.754965" elapsed="0.000035"/>
</return>
<msg time="2026-04-18T23:45:48.755186" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:48.359821" elapsed="0.395393"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:48.755266" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:48.755413" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:48.357591" elapsed="0.397848"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:48.756009" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:48.755598" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:48.356453" elapsed="0.399783">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:50.759987" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:50.759217" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:50.761450" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:50.761117" elapsed="0.000363"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:50.762489" 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-18T23:45:50.762607" 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-18T23:45:50.762269" elapsed="0.000368"/>
</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-18T23:45:50.767869" elapsed="0.000125"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:50.766661" elapsed="0.001465"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:50.766590" elapsed="0.001653"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:50.771524" 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-18T23:45:50.771982" 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-18T23:45:50.769852" elapsed="0.002320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:50.774722" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:50.773700" elapsed="0.001196"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:50.777142" level="INFO">${conn_id} = 436</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:50.776304" elapsed="0.000947"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:50.780071" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:50.780164" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:50.779696" elapsed="0.000496"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:50.780456" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:50.781993" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:51.101463" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:50.781614" elapsed="0.320279"/>
</kw>
<msg time="2026-04-18T23:45:51.101998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:50.781179" elapsed="0.320948"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:50.778636" elapsed="0.323830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:51.104115" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:51.127522" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:51.128137" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:51.128486" 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-18T23:45:51.103628" elapsed="0.025073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:51.131133" elapsed="0.001000"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:51.134730" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:51.133515" elapsed="0.001457"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:51.135963" elapsed="0.000113"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:51.135417" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:51.135286" elapsed="0.001051"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:51.137223" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-18T23:45:51.136670" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:51.136559" elapsed="0.001032"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:51.137778" elapsed="0.000087"/>
</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-18T23:45:51.143263" elapsed="0.000360"/>
</kw>
<kw name="Open 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-18T23:45:51.143838" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:51.144236" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:51.139617" elapsed="0.004851"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:50.765063" elapsed="0.379638"/>
</kw>
<msg time="2026-04-18T23:45:51.145017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:50.764170" elapsed="0.380935"/>
</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-18T23:45:50.763520" elapsed="0.381675"/>
</kw>
<msg time="2026-04-18T23:45:51.145238" 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-18T23:45:50.762838" elapsed="0.382452"/>
</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-18T23:45:51.148447" 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-18T23:45:51.148938" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:51.149273" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:51.145594" elapsed="0.003841"/>
</kw>
<msg time="2026-04-18T23:45:51.149530" level="INFO">${output} = 1</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-18T23:45:50.761745" elapsed="0.387812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:51.150001" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:51.149742" elapsed="0.000397"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:51.150210" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:45:51.150372" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:50.760482" elapsed="0.389919"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:51.150456" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:45:51.150609" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:50.758148" elapsed="0.392486"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:51.151297" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:51.150852" elapsed="0.000529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:50.757124" elapsed="0.394388">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:53.155195" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:53.154398" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:53.157303" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:53.156647" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:53.159137" 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-18T23:45:53.159399" 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-18T23:45:53.158770" elapsed="0.000694"/>
</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-18T23:45:53.164497" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:53.163925" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:53.163862" elapsed="0.000787"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:53.166430" 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-18T23:45:53.166678" 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-18T23:45:53.165701" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:53.168347" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:53.167773" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:53.170269" level="INFO">${conn_id} = 439</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:53.169547" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:53.172684" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:53.172761" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:53.172384" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:53.173012" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:53.174501" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:53.489342" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:53.174166" elapsed="0.315331"/>
</kw>
<msg time="2026-04-18T23:45:53.489582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:53.173759" elapsed="0.315916"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:53.171587" elapsed="0.318376"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:53.491575" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:53.513948" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:53.514514" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:53.514847" 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-18T23:45:53.491139" elapsed="0.023969"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:53.517369" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:53.520269" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:53.519575" elapsed="0.000850"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:53.521023" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:53.520669" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:53.520581" elapsed="0.000676"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:53.521779" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-18T23:45:53.521475" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:53.521400" elapsed="0.000613"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:53.522181" elapsed="0.000059"/>
</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-18T23:45:53.529126" 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-18T23:45:53.529691" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:53.530107" 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-18T23:45:53.524285" elapsed="0.006042"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:53.162537" elapsed="0.368020"/>
</kw>
<msg time="2026-04-18T23:45:53.530870" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:53.161824" elapsed="0.369105"/>
</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-18T23:45:53.161097" elapsed="0.369916"/>
</kw>
<msg time="2026-04-18T23:45:53.531151" 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-18T23:45:53.159819" elapsed="0.371381"/>
</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-18T23:45:53.534209" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:53.534696" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:53.534995" elapsed="0.000216"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:53.531510" elapsed="0.003755"/>
</kw>
<msg time="2026-04-18T23:45:53.535393" level="INFO">${output} = 1</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-18T23:45:53.157835" elapsed="0.377584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:53.535859" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:53.535606" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:53.535947" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:45:53.536121" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:53.155713" elapsed="0.380434"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:53.536195" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:53.536342" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:53.153552" elapsed="0.382815"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:53.536933" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:53.536525" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:53.152403" elapsed="0.384751">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:55.540802" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:55.540018" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:55.543178" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:55.542544" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:55.544981" 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-18T23:45:55.545235" 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-18T23:45:55.544650" elapsed="0.000643"/>
</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-18T23:45:55.550604" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:55.549842" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:55.549780" elapsed="0.000966"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:55.552183" 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-18T23:45:55.552422" 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-18T23:45:55.551732" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:55.554098" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:55.553506" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:55.555899" level="INFO">${conn_id} = 442</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:55.555198" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:55.558375" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:55.558483" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:55.557993" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:55.558722" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:55.559993" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:55.863129" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:55.559662" elapsed="0.303611"/>
</kw>
<msg time="2026-04-18T23:45:55.863358" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:55.559301" elapsed="0.304146"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:55.557220" elapsed="0.306501"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:55.865426" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:55.887661" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:55.888211" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:55.888535" 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-18T23:45:55.864994" elapsed="0.023744"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:55.890923" elapsed="0.000847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:55.893624" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:55.892932" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:55.894446" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:55.894012" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:55.893927" elapsed="0.000721"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:55.895181" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-18T23:45:55.894859" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:55.894787" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:55.895524" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:55.901950" 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-18T23:45:55.902521" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:55.902877" 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-18T23:45:55.897574" elapsed="0.005525"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:55.548436" elapsed="0.354885"/>
</kw>
<msg time="2026-04-18T23:45:55.903625" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:55.547736" elapsed="0.355946"/>
</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-18T23:45:55.546850" elapsed="0.356914"/>
</kw>
<msg time="2026-04-18T23:45:55.903805" 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-18T23:45:55.545641" elapsed="0.358208"/>
</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-18T23:45:55.906914" 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-18T23:45:55.907406" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:55.907698" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:55.904172" elapsed="0.003671"/>
</kw>
<msg time="2026-04-18T23:45:55.907935" level="INFO">${output} = 1</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-18T23:45:55.543715" elapsed="0.364246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:55.908449" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:55.908199" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:55.908537" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:55.908691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:55.541555" elapsed="0.367161"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:55.908762" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:45:55.908907" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:55.539213" elapsed="0.369719"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:55.909529" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:55.909124" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:55.537987" elapsed="0.371736">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:45:57.913228" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:45:57.912421" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:45:57.915474" level="INFO">${member_ip} = 10.30.171.206</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-18T23:45:57.914806" elapsed="0.000731"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:57.917167" 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-18T23:45:57.917418" 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-18T23:45:57.916906" elapsed="0.000551"/>
</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-18T23:45:57.923092" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:45:57.922394" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:57.922009" elapsed="0.001277"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:57.925188" 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-18T23:45:57.925432" 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-18T23:45:57.924730" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:57.927065" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:57.926498" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:45:57.928865" level="INFO">${conn_id} = 445</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:45:57.928142" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:45:57.931262" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:45:57.931338" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:45:57.930962" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:57.931569" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:45:57.932851" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:45:58.247571" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:45:57.932525" elapsed="0.315180"/>
</kw>
<msg time="2026-04-18T23:45:58.247786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:57.932131" elapsed="0.315736"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:45:57.930214" elapsed="0.317952"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:45:58.249657" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:45:58.271684" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:45:58.272272" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:45:58.272614" 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-18T23:45:58.249254" elapsed="0.023577"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:58.275320" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:58.278527" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:58.277470" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:58.279633" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:45:58.279136" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:58.278983" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:45:58.280718" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-18T23:45:58.280275" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-18T23:45:58.280168" elapsed="0.000964"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:45:58.281314" elapsed="0.000082"/>
</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-18T23:45:58.286916" 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-18T23:45:58.287623" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:58.287994" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:58.283487" elapsed="0.004743"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:45:57.920175" elapsed="0.368287"/>
</kw>
<msg time="2026-04-18T23:45:58.288780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:45:57.919228" elapsed="0.369611"/>
</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-18T23:45:57.918455" elapsed="0.370467"/>
</kw>
<msg time="2026-04-18T23:45:58.288965" 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-18T23:45:57.917684" elapsed="0.371329"/>
</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-18T23:45:58.292129" 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-18T23:45:58.292624" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:45:58.292925" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:45:58.289342" elapsed="0.003767"/>
</kw>
<msg time="2026-04-18T23:45:58.293202" level="INFO">${output} = 1</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-18T23:45:57.916087" elapsed="0.377142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:45:58.293729" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:45:58.293448" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:45:58.293821" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:45:58.293978" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:45:57.913800" elapsed="0.380203"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:45:58.294132" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:45:58.294283" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:45:57.911560" elapsed="0.382748"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:45:58.294869" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:45:58.294468" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:45:57.910530" elapsed="0.384541">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:00.298672" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:00.297906" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:00.300819" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:00.300212" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:00.302729" 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-18T23:46:00.302952" 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-18T23:46:00.302392" elapsed="0.000618"/>
</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-18T23:46:00.308059" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:00.307556" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:00.307283" elapsed="0.000982"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:00.309717" 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-18T23:46:00.309961" 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-18T23:46:00.309272" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:00.311616" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:00.311075" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:00.313493" level="INFO">${conn_id} = 448</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:00.312786" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:00.315869" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:00.315944" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:00.315586" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:00.316385" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:00.317774" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:00.643963" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:45:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:00.317449" elapsed="0.326680"/>
</kw>
<msg time="2026-04-18T23:46:00.644211" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:00.317088" elapsed="0.327209"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:00.314799" elapsed="0.329766"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:00.646101" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:00.669787" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:00.670420" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:00.670755" 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-18T23:46:00.645688" elapsed="0.025280"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:00.673376" elapsed="0.000756"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:00.675729" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:00.675021" elapsed="0.000861"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:00.676503" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:00.676149" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:00.676057" elapsed="0.000646"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:00.677317" elapsed="0.000105"/>
</return>
<status status="PASS" start="2026-04-18T23:46:00.676918" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:00.676847" elapsed="0.000736"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:00.677707" elapsed="0.000055"/>
</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-18T23:46:00.685840" elapsed="0.000479"/>
</kw>
<kw name="Open 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-18T23:46:00.686550" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:00.686927" 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-18T23:46:00.679858" elapsed="0.007345"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:00.305913" elapsed="0.381517"/>
</kw>
<msg time="2026-04-18T23:46:00.687812" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:00.305229" elapsed="0.382650"/>
</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-18T23:46:00.304611" elapsed="0.383348"/>
</kw>
<msg time="2026-04-18T23:46:00.688001" 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-18T23:46:00.303396" elapsed="0.384764"/>
</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-18T23:46:00.691385" 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-18T23:46:00.691880" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:00.692203" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:00.688479" elapsed="0.003877"/>
</kw>
<msg time="2026-04-18T23:46:00.692451" level="INFO">${output} = 1</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-18T23:46:00.301388" elapsed="0.391089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:00.692936" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:00.692680" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:00.693045" elapsed="0.000035"/>
</return>
<msg time="2026-04-18T23:46:00.693239" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:00.299223" elapsed="0.394043"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:00.693314" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:00.693456" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:00.297020" elapsed="0.396481"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:00.694125" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:00.693676" elapsed="0.000546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:00.295876" elapsed="0.398468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:02.697751" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:02.696992" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:02.699871" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:02.699270" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:02.701716" 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-18T23:46:02.701942" 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-18T23:46:02.701391" elapsed="0.000680"/>
</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-18T23:46:02.706212" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:02.705706" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:02.705648" elapsed="0.000702"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:02.753276" 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-18T23:46:02.753624" 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-18T23:46:02.707333" elapsed="0.046420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:02.755569" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:02.754898" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:02.757461" level="INFO">${conn_id} = 451</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:02.756724" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:02.759930" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:02.760017" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:02.759629" 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-18T23:46:02.760277" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:02.761580" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:03.085885" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:02.761256" elapsed="0.324797"/>
</kw>
<msg time="2026-04-18T23:46:03.086153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:02.760863" elapsed="0.325395"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:02.758814" elapsed="0.327783"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:03.088684" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:03.111645" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:03.112185" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:03.112525" 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-18T23:46:03.088162" elapsed="0.024576"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:03.115117" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:03.118276" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:03.117320" elapsed="0.001183"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:03.119437" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:03.118848" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:03.118724" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:03.120454" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-18T23:46:03.120074" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:03.119934" elapsed="0.000678"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:03.120690" 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-18T23:46:03.125517" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:03.126074" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:03.126432" 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-18T23:46:03.122155" elapsed="0.004516"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:02.704340" elapsed="0.422612"/>
</kw>
<msg time="2026-04-18T23:46:03.127282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:02.703636" elapsed="0.423705"/>
</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-18T23:46:02.703104" elapsed="0.424319"/>
</kw>
<msg time="2026-04-18T23:46:03.127464" 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-18T23:46:02.702432" elapsed="0.425077"/>
</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-18T23:46:03.130631" elapsed="0.000326"/>
</kw>
<kw name="Open 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-18T23:46:03.131143" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:03.131439" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:03.127872" elapsed="0.003715"/>
</kw>
<msg time="2026-04-18T23:46:03.131676" level="INFO">${output} = 1</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-18T23:46:02.700443" elapsed="0.431261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:03.132167" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:03.131888" elapsed="0.000342"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:03.132276" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:03.132430" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:02.698334" elapsed="0.434121"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:03.132501" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:46:03.132642" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:02.696185" elapsed="0.436481"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:03.133322" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:03.132824" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:02.695150" elapsed="0.438356">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:05.136959" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:05.136210" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:05.139110" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:05.138459" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:05.140915" 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-18T23:46:05.141172" 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-18T23:46:05.140589" elapsed="0.000645"/>
</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-18T23:46:05.146667" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:05.146205" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:05.146150" elapsed="0.000674"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:05.148257" 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-18T23:46:05.148513" 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-18T23:46:05.147810" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:05.150156" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:05.149572" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:05.152011" level="INFO">${conn_id} = 454</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:05.151325" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:05.154514" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:05.154593" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:05.154233" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:05.154845" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:05.156358" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:05.489865" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:05.156017" elapsed="0.333982"/>
</kw>
<msg time="2026-04-18T23:46:05.490097" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:05.155655" elapsed="0.334531"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:05.153308" elapsed="0.337155"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:05.491972" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:05.514728" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:05.515287" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:05.515658" 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-18T23:46:05.491579" elapsed="0.024301"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:05.518251" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:05.521467" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:05.520451" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:05.522578" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:05.522077" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:05.521925" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:05.523728" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-18T23:46:05.523226" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:05.523116" elapsed="0.000816"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:05.524011" elapsed="0.000067"/>
</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-18T23:46:05.528960" elapsed="0.000439"/>
</kw>
<kw name="Open 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-18T23:46:05.529621" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:05.530006" 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-18T23:46:05.525452" elapsed="0.004799"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:05.144572" elapsed="0.385918"/>
</kw>
<msg time="2026-04-18T23:46:05.530816" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:05.143868" elapsed="0.387011"/>
</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-18T23:46:05.142796" elapsed="0.388171"/>
</kw>
<msg time="2026-04-18T23:46:05.531011" 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-18T23:46:05.141586" elapsed="0.389492"/>
</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-18T23:46:05.534205" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:46:05.534682" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:05.534974" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:05.531387" elapsed="0.003752"/>
</kw>
<msg time="2026-04-18T23:46:05.535289" level="INFO">${output} = 1</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-18T23:46:05.139655" elapsed="0.395660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:05.535761" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:05.535512" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:05.535848" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:46:05.535998" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:05.137518" elapsed="0.398505"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:05.536099" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:05.536244" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:05.135379" elapsed="0.400889"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:05.536820" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:05.536424" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:05.134288" elapsed="0.402727">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:07.540789" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:07.539931" elapsed="0.000929"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:07.542936" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:07.542330" elapsed="0.000645"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:07.544164" 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-18T23:46:07.544344" 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-18T23:46:07.543897" elapsed="0.000485"/>
</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-18T23:46:07.550105" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:07.549432" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:07.549352" elapsed="0.000953"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:07.551968" 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-18T23:46:07.552234" 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-18T23:46:07.551517" elapsed="0.000822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:07.553953" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:07.553397" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:07.555798" level="INFO">${conn_id} = 457</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:07.555085" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:07.558333" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:07.558410" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:07.558046" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:07.558714" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:07.560147" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:07.891997" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:07.559805" elapsed="0.332479"/>
</kw>
<msg time="2026-04-18T23:46:07.892370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:07.559439" elapsed="0.333020"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:07.557235" elapsed="0.335506"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:07.894298" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:07.917446" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:07.917950" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:07.918358" 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-18T23:46:07.893850" elapsed="0.024735"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:07.920854" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:07.924054" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:07.923111" elapsed="0.001110"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:07.924850" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:07.924464" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:07.924375" elapsed="0.000689"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:07.925565" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-18T23:46:07.925274" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:07.925206" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:07.925909" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:07.932528" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:07.933144" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:07.933516" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:07.927934" elapsed="0.005797"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:07.547170" elapsed="0.386795"/>
</kw>
<msg time="2026-04-18T23:46:07.934317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:07.546155" elapsed="0.388238"/>
</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-18T23:46:07.545384" elapsed="0.389096"/>
</kw>
<msg time="2026-04-18T23:46:07.934523" 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-18T23:46:07.544610" elapsed="0.389961"/>
</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-18T23:46:07.937661" 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-18T23:46:07.938172" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:07.938473" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:07.934869" elapsed="0.003757"/>
</kw>
<msg time="2026-04-18T23:46:07.938718" level="INFO">${output} = 1</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-18T23:46:07.543311" elapsed="0.395432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:07.939287" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:07.938932" elapsed="0.000403"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:07.939379" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:07.939533" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:07.541370" elapsed="0.398187"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:07.939604" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:46:07.939754" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:07.539091" elapsed="0.400689"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:07.940416" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:07.939992" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:07.537937" elapsed="0.402672">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:09.944225" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:09.943443" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:09.946304" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:09.945746" elapsed="0.000596"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:09.947484" 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-18T23:46:09.947626" 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-18T23:46:09.947250" elapsed="0.000414"/>
</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-18T23:46:09.953382" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:09.952723" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:09.952645" elapsed="0.000983"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:09.955145" 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-18T23:46:09.955391" 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-18T23:46:09.954673" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:09.957008" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:09.956469" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:09.958836" level="INFO">${conn_id} = 460</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:09.958135" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:09.961311" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:09.961389" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:09.960973" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:09.961692" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:09.962975" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:10.290583" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:09.962651" elapsed="0.328077"/>
</kw>
<msg time="2026-04-18T23:46:10.290811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:09.962288" elapsed="0.328615"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:09.960216" elapsed="0.331009"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:10.292753" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:10.315297" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:10.315793" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:10.316229" 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-18T23:46:10.292360" elapsed="0.024093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:10.319471" elapsed="0.001236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:10.323611" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:10.322656" elapsed="0.001162"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:10.324609" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:10.324160" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:10.324022" elapsed="0.000874"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:10.325731" elapsed="0.000110"/>
</return>
<status status="PASS" start="2026-04-18T23:46:10.325317" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:10.325215" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:10.326311" elapsed="0.000079"/>
</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-18T23:46:10.333746" 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-18T23:46:10.334603" elapsed="0.000237"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:10.335157" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:10.328467" elapsed="0.007000"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:09.950449" elapsed="0.385353"/>
</kw>
<msg time="2026-04-18T23:46:10.336267" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:09.949383" elapsed="0.386973"/>
</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-18T23:46:09.948616" elapsed="0.387870"/>
</kw>
<msg time="2026-04-18T23:46:10.336550" 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-18T23:46:09.947885" elapsed="0.388738"/>
</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-18T23:46:10.341290" elapsed="0.000454"/>
</kw>
<kw name="Open 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-18T23:46:10.342045" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:10.342496" elapsed="0.000146"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:10.337216" elapsed="0.005503"/>
</kw>
<msg time="2026-04-18T23:46:10.342849" level="INFO">${output} = 1</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-18T23:46:09.946654" elapsed="0.396234"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:10.343574" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:10.343202" elapsed="0.000439"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:10.343706" elapsed="0.000043"/>
</return>
<msg time="2026-04-18T23:46:10.343931" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:09.944753" elapsed="0.399216"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:10.344056" elapsed="0.000040"/>
</return>
<msg time="2026-04-18T23:46:10.344271" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:09.942591" elapsed="0.401716"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:10.345206" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:10.344542" elapsed="0.000770">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:09.941457" elapsed="0.404017">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:12.349164" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:12.348361" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:12.351450" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:12.350803" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:12.353352" 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-18T23:46:12.353583" 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-18T23:46:12.352990" elapsed="0.000655"/>
</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-18T23:46:12.359666" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:12.359192" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:12.358887" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:12.361347" 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-18T23:46:12.361599" 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-18T23:46:12.360865" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:12.363317" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:12.362719" elapsed="0.000709"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:12.365206" level="INFO">${conn_id} = 463</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:12.364473" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:12.367724" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:12.367840" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:12.367427" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:12.368176" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:12.369530" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:12.700846" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:12.369200" elapsed="0.331850"/>
</kw>
<msg time="2026-04-18T23:46:12.701138" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:12.368765" elapsed="0.332465"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:12.366551" elapsed="0.334973"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:12.703007" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:12.725798" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:12.726143" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:12.726354" 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-18T23:46:12.702613" elapsed="0.023874"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:12.727869" elapsed="0.000621"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:12.729922" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:12.729306" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:12.730754" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:12.730322" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:12.730238" elapsed="0.000744"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:12.731521" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-18T23:46:12.731231" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:12.731162" elapsed="0.000584"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:12.731857" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:12.738090" 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-18T23:46:12.738633" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:12.738989" elapsed="0.000259"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:12.733773" elapsed="0.005583"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:12.357522" elapsed="0.382053"/>
</kw>
<msg time="2026-04-18T23:46:12.739878" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:12.356671" elapsed="0.383266"/>
</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-18T23:46:12.355226" elapsed="0.384798"/>
</kw>
<msg time="2026-04-18T23:46:12.740083" 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-18T23:46:12.354002" elapsed="0.386129"/>
</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-18T23:46:12.743177" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:46:12.743653" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:12.743944" elapsed="0.000158"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:12.740445" elapsed="0.003711"/>
</kw>
<msg time="2026-04-18T23:46:12.744250" level="INFO">${output} = 1</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-18T23:46:12.352000" elapsed="0.392275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:12.744730" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:12.744480" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:12.744816" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:12.744968" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:12.349845" elapsed="0.395148"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:12.745058" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:12.745205" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:12.347450" elapsed="0.397779"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:12.745777" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:12.745384" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:12.346294" elapsed="0.399670">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:14.749433" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:14.748665" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:14.751548" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:14.750914" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:14.753691" 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-18T23:46:14.754105" 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-18T23:46:14.753351" elapsed="0.000818"/>
</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-18T23:46:14.758841" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:14.758370" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:14.758056" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:14.760408" 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-18T23:46:14.760646" 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-18T23:46:14.759956" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:14.762314" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:14.761710" elapsed="0.000718"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:14.764148" level="INFO">${conn_id} = 466</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:14.763419" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:14.766651" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:14.766731" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:14.766353" 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-18T23:46:14.766966" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:14.768228" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:15.096999" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:14.767890" elapsed="0.329292"/>
</kw>
<msg time="2026-04-18T23:46:15.097267" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:14.767533" elapsed="0.329860"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:14.765461" elapsed="0.332226"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:15.099275" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:15.122640" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:15.123206" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:15.123540" 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-18T23:46:15.098855" elapsed="0.024898"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:15.126000" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:15.129234" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:15.128265" elapsed="0.001196"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:15.130338" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:15.129806" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:15.129685" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:15.131229" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-18T23:46:15.131008" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:15.130916" elapsed="0.000477"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:15.131479" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:15.136410" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:15.137059" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:15.137422" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:15.132963" elapsed="0.004669"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:14.756701" elapsed="0.381155"/>
</kw>
<msg time="2026-04-18T23:46:15.138186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:14.756016" elapsed="0.382230"/>
</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-18T23:46:14.755474" elapsed="0.382855"/>
</kw>
<msg time="2026-04-18T23:46:15.138371" 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-18T23:46:14.754586" elapsed="0.383832"/>
</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-18T23:46:15.141519" elapsed="0.000309"/>
</kw>
<kw name="Open 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-18T23:46:15.141992" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:15.142304" 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-18T23:46:15.138725" elapsed="0.003726"/>
</kw>
<msg time="2026-04-18T23:46:15.142540" level="INFO">${output} = 1</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-18T23:46:14.752231" elapsed="0.390358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:15.143042" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:15.142771" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:15.143141" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:15.143294" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:14.749957" elapsed="0.393361"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:15.143365" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:15.143508" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:14.747829" elapsed="0.395703"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:15.144174" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:15.143687" elapsed="0.000563">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:14.746760" elapsed="0.397601">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:17.147947" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:17.147195" elapsed="0.000821"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:17.150216" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:17.149577" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:17.152070" 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-18T23:46:17.152379" 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-18T23:46:17.151703" elapsed="0.000739"/>
</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-18T23:46:17.158616" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:17.158116" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:17.156110" elapsed="0.002714"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:17.160331" 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-18T23:46:17.160579" 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-18T23:46:17.159829" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:17.162225" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:17.161659" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:17.164122" level="INFO">${conn_id} = 469</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:17.163334" elapsed="0.000915"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:17.166518" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:17.166596" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:17.166234" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:17.166831" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:17.168249" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:17.491362" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:17.167764" elapsed="0.323751"/>
</kw>
<msg time="2026-04-18T23:46:17.491602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:17.167403" elapsed="0.324291"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:17.165460" elapsed="0.326519"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:17.493509" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:17.516617" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:17.517237" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:17.517570" 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-18T23:46:17.493108" elapsed="0.024672"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:17.520047" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:17.523249" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:17.522266" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:17.524482" elapsed="0.000085"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:17.523827" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:17.523702" elapsed="0.001099"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:17.525307" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-18T23:46:17.525096" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:17.525015" elapsed="0.000461"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:17.525557" 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-18T23:46:17.530569" elapsed="0.000344"/>
</kw>
<kw name="Open 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-18T23:46:17.531148" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:17.531515" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:17.527109" elapsed="0.004616"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:17.154759" elapsed="0.377190"/>
</kw>
<msg time="2026-04-18T23:46:17.532342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:17.154071" elapsed="0.378336"/>
</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-18T23:46:17.153522" elapsed="0.378996"/>
</kw>
<msg time="2026-04-18T23:46:17.532559" 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-18T23:46:17.152800" elapsed="0.379806"/>
</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-18T23:46:17.535698" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:46:17.536196" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:17.536512" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:17.532900" elapsed="0.003762"/>
</kw>
<msg time="2026-04-18T23:46:17.536755" level="INFO">${output} = 1</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-18T23:46:17.150764" elapsed="0.386016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:17.537238" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:17.536963" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:17.537326" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:17.537478" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:17.148610" elapsed="0.388894"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:17.537551" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:17.537696" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:17.146352" elapsed="0.391368"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:17.538372" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:17.537880" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:17.145279" elapsed="0.393301">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:19.542337" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:19.541516" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:19.544477" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:19.543831" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:19.546390" 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-18T23:46:19.546619" 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-18T23:46:19.546059" elapsed="0.000620"/>
</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-18T23:46:19.551884" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:19.551423" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:19.551367" elapsed="0.000655"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:19.553715" 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-18T23:46:19.553959" 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-18T23:46:19.553005" elapsed="0.001068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:19.555585" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:19.555024" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:19.557458" level="INFO">${conn_id} = 472</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:19.556737" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:19.559870" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:19.559948" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:19.559590" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:19.560199" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:19.561728" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:19.884678" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:19.561386" elapsed="0.323401"/>
</kw>
<msg time="2026-04-18T23:46:19.884859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:19.560998" elapsed="0.323940"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:19.558743" elapsed="0.326458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:19.886633" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:19.908858" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:19.909105" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:19.909256" 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-18T23:46:19.886272" elapsed="0.023081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:19.910339" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:19.911752" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:19.911314" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:19.912282" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:19.912040" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:19.911971" elapsed="0.000444"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:19.912785" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-18T23:46:19.912581" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:19.912520" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:19.913046" 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-18T23:46:19.917706" elapsed="0.000468"/>
</kw>
<kw name="Open 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-18T23:46:19.918407" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:19.918764" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:19.914375" elapsed="0.004599"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:19.550047" elapsed="0.369168"/>
</kw>
<msg time="2026-04-18T23:46:19.919521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:19.549325" elapsed="0.370252"/>
</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-18T23:46:19.548236" elapsed="0.371422"/>
</kw>
<msg time="2026-04-18T23:46:19.919698" 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-18T23:46:19.547061" elapsed="0.372683"/>
</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-18T23:46:19.922939" 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-18T23:46:19.923433" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:19.923728" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:19.920113" elapsed="0.003764"/>
</kw>
<msg time="2026-04-18T23:46:19.923969" level="INFO">${output} = 1</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-18T23:46:19.545085" elapsed="0.378910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:19.924454" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:19.924203" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:19.924543" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:19.924694" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:19.542868" elapsed="0.381851"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:19.924766" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:19.924913" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:19.540585" elapsed="0.384393"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:19.925549" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:19.925157" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:19.539449" elapsed="0.386293">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:21.929417" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:21.928573" elapsed="0.000920"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:21.931049" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:21.930644" elapsed="0.000446"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:21.932238" 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-18T23:46:21.932383" 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-18T23:46:21.931980" elapsed="0.000442"/>
</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-18T23:46:21.937978" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:21.937336" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:21.937256" elapsed="0.000942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:21.940570" 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-18T23:46:21.940922" 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-18T23:46:21.939580" elapsed="0.001536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:21.942982" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:21.942419" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:21.945167" level="INFO">${conn_id} = 475</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:21.944315" elapsed="0.000951"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:21.947621" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:21.947708" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:21.947314" 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-18T23:46:21.947949" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:21.949481" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:22.273887" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:21.949147" elapsed="0.324912"/>
</kw>
<msg time="2026-04-18T23:46:22.274146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:21.948730" elapsed="0.325510"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:21.946464" elapsed="0.328057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:22.276079" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:22.298928" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:22.299488" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:22.299857" 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-18T23:46:22.275661" elapsed="0.024468"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:22.302447" elapsed="0.000873"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:22.305114" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:22.304456" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:22.305803" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:22.305480" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:22.305401" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:22.306488" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-18T23:46:22.306210" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:22.306144" elapsed="0.000564"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:22.306817" elapsed="0.000051"/>
</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-18T23:46:22.313616" 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-18T23:46:22.314271" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:22.314656" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:22.308802" elapsed="0.006070"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:21.935339" elapsed="0.379776"/>
</kw>
<msg time="2026-04-18T23:46:22.315444" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:21.934340" elapsed="0.381166"/>
</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-18T23:46:21.933476" elapsed="0.382115"/>
</kw>
<msg time="2026-04-18T23:46:22.315631" 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-18T23:46:21.932645" elapsed="0.383032"/>
</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-18T23:46:22.318717" elapsed="0.000323"/>
</kw>
<kw name="Open 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-18T23:46:22.319211" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:22.319523" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:22.315968" elapsed="0.003703"/>
</kw>
<msg time="2026-04-18T23:46:22.319844" level="INFO">${output} = 1</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-18T23:46:21.931406" elapsed="0.388464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:22.320375" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:22.320108" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:22.320469" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:46:22.320629" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:21.929960" elapsed="0.390695"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:22.320704" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:46:22.320856" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:21.927695" elapsed="0.393187"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:22.321495" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:22.321086" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:21.926546" elapsed="0.395140">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:24.325423" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:24.324610" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:24.327558" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:24.326915" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:24.329444" 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-18T23:46:24.329670" 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-18T23:46:24.329114" elapsed="0.000616"/>
</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-18T23:46:24.335616" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:24.335148" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:24.335090" elapsed="0.000664"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:24.337476" 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-18T23:46:24.337723" 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-18T23:46:24.336762" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:24.339414" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:24.338828" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:24.341296" level="INFO">${conn_id} = 478</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:24.340569" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:24.343801" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:24.343879" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:24.343514" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:24.344129" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:24.345420" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:24.676404" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:24.345089" elapsed="0.331595"/>
</kw>
<msg time="2026-04-18T23:46:24.676791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:24.344711" elapsed="0.332191"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:24.342649" elapsed="0.334638"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:24.679190" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:24.702339" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:24.702719" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:24.702926" 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-18T23:46:24.678669" elapsed="0.024426"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:24.704641" elapsed="0.000719"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:24.706970" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:24.706254" elapsed="0.000899"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:24.707746" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:24.707395" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:24.707309" elapsed="0.000633"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:24.708513" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-18T23:46:24.708213" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:24.708141" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:24.708872" elapsed="0.000056"/>
</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-18T23:46:24.716493" elapsed="0.000337"/>
</kw>
<kw name="Open 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-18T23:46:24.717057" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:24.717435" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:24.711311" elapsed="0.006335"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:24.333695" elapsed="0.384190"/>
</kw>
<msg time="2026-04-18T23:46:24.718275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:24.332554" elapsed="0.385786"/>
</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-18T23:46:24.331283" elapsed="0.387141"/>
</kw>
<msg time="2026-04-18T23:46:24.718464" 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-18T23:46:24.330109" elapsed="0.388400"/>
</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-18T23:46:24.721631" elapsed="0.000325"/>
</kw>
<kw name="Open 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-18T23:46:24.722144" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:24.722440" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:24.718802" elapsed="0.003784"/>
</kw>
<msg time="2026-04-18T23:46:24.722677" level="INFO">${output} = 1</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-18T23:46:24.328135" elapsed="0.394567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:24.723149" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:24.722884" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:24.723236" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:24.723388" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:24.325948" elapsed="0.397465"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:24.723460" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:46:24.723604" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:24.323730" elapsed="0.399898"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:24.724294" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:24.723852" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:24.322544" elapsed="0.401940">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:26.727974" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:26.727232" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:26.730135" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:26.729494" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:26.731987" 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-18T23:46:26.732253" 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-18T23:46:26.731661" elapsed="0.000655"/>
</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-18T23:46:26.738151" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:26.737659" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:26.737367" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:26.739800" 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-18T23:46:26.740059" 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-18T23:46:26.739350" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:26.741701" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:26.741154" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:26.743763" level="INFO">${conn_id} = 481</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:26.742991" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:26.746196" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:26.746274" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:26.745882" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:26.746541" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:26.747858" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:27.078261" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:26.747529" elapsed="0.330882"/>
</kw>
<msg time="2026-04-18T23:46:27.078495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:26.747124" elapsed="0.331461"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:26.745137" elapsed="0.333729"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:27.080411" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:27.103691" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:27.104376" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:27.104713" 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-18T23:46:27.079966" elapsed="0.024959"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:27.107344" elapsed="0.000994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:27.110626" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:27.109623" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:27.111914" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:27.111411" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:27.111282" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:27.113021" elapsed="0.000159"/>
</return>
<status status="PASS" start="2026-04-18T23:46:27.112570" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:27.112463" elapsed="0.001089"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:27.113735" elapsed="0.000087"/>
</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-18T23:46:27.118882" elapsed="0.000411"/>
</kw>
<kw name="Open 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-18T23:46:27.119510" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:27.119870" 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-18T23:46:27.115482" elapsed="0.004613"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:26.735935" elapsed="0.384387"/>
</kw>
<msg time="2026-04-18T23:46:27.120634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:26.735169" elapsed="0.385526"/>
</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-18T23:46:26.733831" elapsed="0.386945"/>
</kw>
<msg time="2026-04-18T23:46:27.120818" 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-18T23:46:26.732665" elapsed="0.388199"/>
</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-18T23:46:27.123948" elapsed="0.000335"/>
</kw>
<kw name="Open 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-18T23:46:27.124448" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:27.124762" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:27.121172" elapsed="0.003752"/>
</kw>
<msg time="2026-04-18T23:46:27.125087" level="INFO">${output} = 1</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-18T23:46:26.730708" elapsed="0.394409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:27.125568" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:27.125306" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:27.125655" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:27.125809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:26.728536" elapsed="0.397299"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:27.125882" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:27.126049" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:26.726323" elapsed="0.399753"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:27.126644" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:27.126235" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:26.725276" elapsed="0.401593">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:29.130513" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:29.129650" elapsed="0.000934"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:29.132824" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:29.132211" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:29.134737" 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-18T23:46:29.134967" 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-18T23:46:29.134348" elapsed="0.000707"/>
</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-18T23:46:29.141496" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:29.141000" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:29.140721" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:29.143199" 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-18T23:46:29.143447" 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-18T23:46:29.142687" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:29.145186" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:29.144562" elapsed="0.000735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:29.146991" level="INFO">${conn_id} = 484</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:29.146287" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:29.149421" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:29.149500" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:29.149134" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:29.149733" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:29.151128" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:29.481891" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:29.150757" elapsed="0.331314"/>
</kw>
<msg time="2026-04-18T23:46:29.482163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:29.150344" elapsed="0.331926"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:29.148319" elapsed="0.334250"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:29.484140" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:29.507328" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:29.507896" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:29.508327" 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-18T23:46:29.483705" elapsed="0.024851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:29.510988" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:29.514462" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:29.513425" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:29.515739" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:29.515181" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:29.514929" elapsed="0.001006"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:29.516475" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-18T23:46:29.516187" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:29.516117" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:29.516823" elapsed="0.000055"/>
</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-18T23:46:29.523633" elapsed="0.000514"/>
</kw>
<kw name="Open 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-18T23:46:29.524449" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:29.524943" elapsed="0.000256"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:29.518783" elapsed="0.006566"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:29.139369" elapsed="0.386294"/>
</kw>
<msg time="2026-04-18T23:46:29.526111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:29.137786" elapsed="0.388410"/>
</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-18T23:46:29.136582" elapsed="0.389725"/>
</kw>
<msg time="2026-04-18T23:46:29.526364" 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-18T23:46:29.135413" elapsed="0.391014"/>
</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-18T23:46:29.529734" 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-18T23:46:29.530231" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:29.530531" 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-18T23:46:29.526829" elapsed="0.003849"/>
</kw>
<msg time="2026-04-18T23:46:29.530768" level="INFO">${output} = 1</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-18T23:46:29.133405" elapsed="0.397389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:29.531255" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:29.530980" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:29.531340" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:29.531493" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:29.131258" elapsed="0.400260"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:29.531565" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:46:29.531710" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:29.128808" elapsed="0.402926"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:29.532314" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:29.531889" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:29.127725" elapsed="0.404781">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:31.535962" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:31.535208" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:31.538503" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:31.537604" elapsed="0.000957"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:31.540149" 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-18T23:46:31.540446" 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-18T23:46:31.539796" elapsed="0.000696"/>
</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-18T23:46:31.549171" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:31.548464" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:31.545812" elapsed="0.003554"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:31.551228" 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-18T23:46:31.551472" 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-18T23:46:31.550733" elapsed="0.000842"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:31.553184" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:31.552558" elapsed="0.000737"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:31.555014" level="INFO">${conn_id} = 487</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:31.554310" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:31.557759" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:31.557847" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:31.557438" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:31.558125" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:31.559412" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:31.875445" 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 Sat Apr 18 23:45:31 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:31.559084" elapsed="0.316515"/>
</kw>
<msg time="2026-04-18T23:46:31.875686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:31.558700" elapsed="0.317090"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:31.556333" elapsed="0.319757"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:31.877618" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:31.900682" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:31.901220" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:31.901554" 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-18T23:46:31.877213" elapsed="0.024552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:31.904004" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:31.907116" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:31.906162" elapsed="0.001181"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:31.908230" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:31.907709" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:31.907583" elapsed="0.000939"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:31.909318" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-18T23:46:31.908840" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:31.908734" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:31.909843" 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-18T23:46:31.916090" elapsed="0.000337"/>
</kw>
<kw name="Open 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-18T23:46:31.916709" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:31.917085" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:31.912667" elapsed="0.004626"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:31.543759" elapsed="0.373761"/>
</kw>
<msg time="2026-04-18T23:46:31.917825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:31.542771" elapsed="0.375112"/>
</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-18T23:46:31.541641" elapsed="0.376325"/>
</kw>
<msg time="2026-04-18T23:46:31.918008" 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-18T23:46:31.540721" elapsed="0.377398"/>
</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-18T23:46:31.921094" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:46:31.921569" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:31.921936" elapsed="0.000194"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:31.918412" elapsed="0.003774"/>
</kw>
<msg time="2026-04-18T23:46:31.922276" level="INFO">${output} = 1</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-18T23:46:31.538972" elapsed="0.383330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:31.922732" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:31.922482" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:31.922820" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:31.922972" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:31.536518" elapsed="0.386480"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:31.923059" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:46:31.923205" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:31.534375" elapsed="0.388855"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:31.923798" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:31.923406" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:31.533325" elapsed="0.390653">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:33.927603" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:33.926739" elapsed="0.000912"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:33.928914" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:33.928537" elapsed="0.000415"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:33.930103" 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-18T23:46:33.930255" 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-18T23:46:33.929857" elapsed="0.000435"/>
</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-18T23:46:33.935904" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:33.935226" elapsed="0.000923"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:33.935146" elapsed="0.001092"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:33.938578" 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-18T23:46:33.938919" 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-18T23:46:33.937634" elapsed="0.001497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:33.940772" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:33.940228" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:33.942648" level="INFO">${conn_id} = 490</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:33.941865" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:33.945039" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:33.945118" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:33.944744" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:33.945355" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:33.946726" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:34.526535" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:33.946402" elapsed="0.580285"/>
</kw>
<msg time="2026-04-18T23:46:34.526771" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:33.945912" elapsed="0.580949"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:33.943962" elapsed="0.583213"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:34.528698" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:34.551342" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:34.551928" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:34.552341" 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-18T23:46:34.528304" elapsed="0.024257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:34.555180" elapsed="0.001095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:34.558270" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:34.557604" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:34.559051" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:34.558677" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:34.558589" 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-18T23:46:34.559796" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-18T23:46:34.559464" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:34.559396" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:34.560172" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:34.565175" elapsed="0.000345"/>
</kw>
<kw name="Open 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-18T23:46:34.565732" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:34.566108" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:34.561667" elapsed="0.004652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:33.933120" elapsed="0.633426"/>
</kw>
<msg time="2026-04-18T23:46:34.566921" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:33.932135" elapsed="0.634848"/>
</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-18T23:46:33.931368" elapsed="0.635717"/>
</kw>
<msg time="2026-04-18T23:46:34.567128" 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-18T23:46:33.930516" elapsed="0.636659"/>
</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-18T23:46:34.570254" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:46:34.570734" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:34.571049" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:34.567469" elapsed="0.003731"/>
</kw>
<msg time="2026-04-18T23:46:34.571293" level="INFO">${output} = 1</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-18T23:46:33.929283" elapsed="0.642035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:34.571786" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:34.571503" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:34.571875" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:34.572051" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:33.927940" elapsed="0.644139"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:34.572128" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:46:34.572276" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:33.925861" elapsed="0.646440"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:34.572863" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:34.572459" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:33.924790" elapsed="0.648343">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.576630" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:46:36.575830" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:36.578763" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:36.578139" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.580707" 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-18T23:46:36.580934" 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-18T23:46:36.580374" elapsed="0.000618"/>
</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-18T23:46:36.586226" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:36.585745" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:36.585690" elapsed="0.000673"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.588069" 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-18T23:46:36.588320" 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-18T23:46:36.587345" elapsed="0.001074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.589936" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:36.589389" elapsed="0.000715"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.591844" level="INFO">${conn_id} = 493</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:36.591146" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.594312" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:36.594390" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:36.593911" elapsed="0.000503"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.594622" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.595896" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:36.917916" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:36.595574" elapsed="0.322513"/>
</kw>
<msg time="2026-04-18T23:46:36.918172" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.595213" elapsed="0.323049"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:36.593156" elapsed="0.325392"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.920064" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-18T23:46:36.943297" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:36.943829" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-18T23:46:36.944233" 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-18T23:46:36.919649" elapsed="0.024816"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:36.946892" elapsed="0.000962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.950305" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:36.949322" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:36.951415" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:36.950882" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:36.950759" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:36.952512" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-18T23:46:36.952049" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:36.951917" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:36.953190" elapsed="0.000135"/>
</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-18T23:46:36.958319" 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-18T23:46:36.958864" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:36.959287" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:36.954787" elapsed="0.004711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:36.584375" elapsed="0.375345"/>
</kw>
<msg time="2026-04-18T23:46:36.960040" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.583679" elapsed="0.376421"/>
</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-18T23:46:36.582540" elapsed="0.377643"/>
</kw>
<msg time="2026-04-18T23:46:36.960225" 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-18T23:46:36.581377" elapsed="0.378895"/>
</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-18T23:46:36.963388" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:46:36.963868" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:36.964179" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:36.960627" elapsed="0.003702"/>
</kw>
<msg time="2026-04-18T23:46:36.964421" level="INFO">${output} = 1</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-18T23:46:36.579368" elapsed="0.385078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.964867" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:36.964621" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:36.964954" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:36.965131" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:36.577194" elapsed="0.387962"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-18T23:46:36.965222" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:46:36.965373" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-18T23:46:36.574978" elapsed="0.390420"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.965945" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-18T23:46:36.965553" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-18T23:46:36.573893" elapsed="0.392257">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-18T23:46:36.966274" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-18T23:40:35.617221" elapsed="361.349155">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-18T23:40:35.617079" elapsed="361.349373">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-18T23:40:27.656668" elapsed="369.309854">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:36.966770" elapsed="0.000025"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-18T23:46:36.966838" elapsed="0.000015"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-18T23:40:25.455070" elapsed="371.511865">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-18T23:40:25.454280" elapsed="371.512891">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s1-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-18T23:46:36.971980" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:36.971574" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.972495" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:36.972188" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:36.972566" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:36.972720" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:36.971190" elapsed="0.001554"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.975066" 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-18T23:46:36.975167" 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-18T23:46:36.974905" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:36.977320" level="INFO">${ip_address} = 10.30.171.9</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-18T23:46:36.976959" elapsed="0.000388"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:36.977396" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:36.977557" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:36.976631" elapsed="0.000959"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.981091" level="INFO">${odl_connection} = 496</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:36.980369" elapsed="0.000832"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:36.983806" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:36.983883" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:36.983527" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.984238" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:36.985425" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:37.696422" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:40:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:36.985099" elapsed="0.711479"/>
</kw>
<msg time="2026-04-18T23:46:37.696664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.984725" elapsed="0.712030"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:36.983016" elapsed="0.713857"/>
</kw>
<msg time="2026-04-18T23:46:37.696925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.982621" elapsed="0.714354"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:36.981734" elapsed="0.715458"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:37.697299" elapsed="0.000063"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:36.979244" elapsed="0.718375"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:37.700777" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:37.713717" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:37.713882" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:37.713944" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:37.713999" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:37.700576" elapsed="0.013477"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:37.716156" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:37.715099" elapsed="0.001180"/>
</kw>
<msg time="2026-04-18T23:46:37.716501" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:37.716603" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:37.714380" elapsed="0.002275"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:37.718206" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:37.717190" elapsed="0.001075"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:37.720951" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:37.720394" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:37.722195" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:37.721565" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:37.723280" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:37.722682" elapsed="0.000697"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:37.719445" elapsed="0.004056"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:37.718589" elapsed="0.004991"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:37.718535" elapsed="0.005082"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:37.723832" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:37.723728" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:37.723708" elapsed="0.000193"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:37.724110" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-18T23:46:37.724001" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:37.723983" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:37.724391" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:37.699640" elapsed="0.024998"/>
</kw>
<msg time="2026-04-18T23:46:37.724785" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:37.724854" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:37.697914" elapsed="0.026976"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:37.725158" elapsed="0.000219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:37.725677" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:46:37.725495" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:37.725476" elapsed="0.000355"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:37.725977" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:36.978310" elapsed="0.747866"/>
</kw>
<msg time="2026-04-18T23:46:37.726236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.977752" elapsed="0.748534"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:36.975864" elapsed="0.750511"/>
</kw>
<msg time="2026-04-18T23:46:37.726417" 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-18T23:46:36.975401" elapsed="0.751060"/>
</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-18T23:46:37.729741" 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-18T23:46:37.730238" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:37.730558" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:37.726777" elapsed="0.003932"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:36.974280" elapsed="0.756490"/>
</kw>
<msg time="2026-04-18T23:46:37.730825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:36.973822" elapsed="0.757051"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:36.973126" elapsed="0.757831"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:46:36.972955" elapsed="0.758108"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:37.733268" 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-18T23:46:37.733369" 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-18T23:46:37.733132" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:37.735267" level="INFO">${ip_address} = 10.30.171.128</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-18T23:46:37.734887" elapsed="0.000407"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:37.735343" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:37.735493" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:37.734568" elapsed="0.000949"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:37.738968" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:37.738266" elapsed="0.000817"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:37.741899" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:37.741977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:37.741468" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:37.742177" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:37.743457" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:38.463899" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:40:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:37.743134" elapsed="0.720947"/>
</kw>
<msg time="2026-04-18T23:46:38.464170" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:37.742748" elapsed="0.721511"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:37.740964" elapsed="0.723411"/>
</kw>
<msg time="2026-04-18T23:46:38.464427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:37.740566" elapsed="0.723911"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:37.739638" elapsed="0.725025"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:38.464764" elapsed="0.000061"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:37.737137" elapsed="0.727968"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.468237" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:38.480869" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:38.481051" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:38.481116" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:38.481172" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:38.468020" elapsed="0.013183"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.482426" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:38.482011" elapsed="0.000477"/>
</kw>
<msg time="2026-04-18T23:46:38.482616" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:38.482675" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:38.481524" elapsed="0.001182"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.483754" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:38.483134" elapsed="0.000657"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.485969" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:38.485413" elapsed="0.000682"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.486966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:38.486436" elapsed="0.000680"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.488002" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:38.487455" elapsed="0.000692"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:38.484529" elapsed="0.003738"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:38.484019" elapsed="0.004328"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.483984" elapsed="0.004420"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:38.488874" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:38.488647" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.488605" elapsed="0.000418"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:38.489490" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-18T23:46:38.489283" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.489244" elapsed="0.000434"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:38.490138" elapsed="0.000050"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:38.467097" elapsed="0.023581"/>
</kw>
<msg time="2026-04-18T23:46:38.491006" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:38.491226" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:38.465395" elapsed="0.025914"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:38.491874" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:38.493095" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-18T23:46:38.492667" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.492625" elapsed="0.000811"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:38.493757" elapsed="0.000048"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:37.736211" elapsed="0.757968"/>
</kw>
<msg time="2026-04-18T23:46:38.494309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:37.735674" elapsed="0.758743"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:37.734009" elapsed="0.760595"/>
</kw>
<msg time="2026-04-18T23:46:38.494693" 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-18T23:46:37.733549" elapsed="0.761240"/>
</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-18T23:46:38.499141" elapsed="0.000315"/>
</kw>
<kw name="Open 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-18T23:46:38.499619" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:38.499940" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:38.495497" elapsed="0.004638"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:37.732493" elapsed="0.767699"/>
</kw>
<msg time="2026-04-18T23:46:38.500248" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:37.732024" elapsed="0.768273"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:37.731324" elapsed="0.769096"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:46:37.731164" elapsed="0.769303"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.502633" 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-18T23:46:38.502732" 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-18T23:46:38.502496" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:38.504568" level="INFO">${ip_address} = 10.30.171.206</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-18T23:46:38.504261" elapsed="0.000334"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:38.504644" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:38.504801" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:38.503920" elapsed="0.000906"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.508355" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:38.507618" elapsed="0.000834"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.511314" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:38.511392" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:38.510874" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.511576" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.512776" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:38.830680" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:38.512458" elapsed="0.318385"/>
</kw>
<msg time="2026-04-18T23:46:38.830944" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.512098" elapsed="0.318952"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:38.510390" elapsed="0.320778"/>
</kw>
<msg time="2026-04-18T23:46:38.831222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.509988" elapsed="0.321283"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:38.508997" elapsed="0.322467"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:38.831565" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:38.506473" elapsed="0.325402"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.835101" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:38.847894" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:38.848009" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:38.848159" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:38.848204" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:38.834859" elapsed="0.013368"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.849119" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:38.848803" elapsed="0.000363"/>
</kw>
<msg time="2026-04-18T23:46:38.849261" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:38.849305" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:38.848460" elapsed="0.000868"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.850009" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:38.849548" elapsed="0.000505"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.851237" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:38.850963" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.851666" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:38.851430" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.852104" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:38.851854" elapsed="0.000294"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:38.850541" elapsed="0.001660"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:38.850193" elapsed="0.002042"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.850169" elapsed="0.002093"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:38.852476" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:38.852373" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.852354" elapsed="0.000187"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:38.852739" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:46:38.852648" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.852630" elapsed="0.000192"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:38.853015" elapsed="0.000036"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:38.833914" elapsed="0.019358"/>
</kw>
<msg time="2026-04-18T23:46:38.853419" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:38.853489" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:38.832194" elapsed="0.021331"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:38.853780" elapsed="0.000232"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:38.854325" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:46:38.854148" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:38.854129" elapsed="0.000348"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:38.854621" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:38.505541" elapsed="0.349283"/>
</kw>
<msg time="2026-04-18T23:46:38.854885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.504981" elapsed="0.349954"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:38.503382" elapsed="0.351639"/>
</kw>
<msg time="2026-04-18T23:46:38.855082" 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-18T23:46:38.502909" elapsed="0.352217"/>
</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-18T23:46:38.860106" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:46:38.860585" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:38.860892" 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-18T23:46:38.855420" elapsed="0.005636"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:38.501872" elapsed="0.359283"/>
</kw>
<msg time="2026-04-18T23:46:38.861210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.501430" elapsed="0.359829"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:38.500720" elapsed="0.360622"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:46:38.500564" elapsed="0.360824"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:36.972806" elapsed="1.888614"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-18T23:46:36.968659" elapsed="1.892815"/>
</kw>
<kw name="Check_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-18T23:46:38.864896" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:38.864518" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.865401" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:38.865099" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:38.865470" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:38.865622" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:38.864146" elapsed="0.001500"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.867930" 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-18T23:46:38.868041" 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-18T23:46:38.867792" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:38.869831" level="INFO">${ip_address} = 10.30.171.9</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-18T23:46:38.869526" elapsed="0.000332"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:38.869905" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:38.870144" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:38.869212" elapsed="0.000957"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.873625" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:38.872918" elapsed="0.000807"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:38.876554" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:38.876630" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:38.876287" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.876813" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:38.877980" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:39.192413" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:38.877664" elapsed="0.315012"/>
</kw>
<msg time="2026-04-18T23:46:39.192766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.877311" elapsed="0.315549"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:38.875771" elapsed="0.317206"/>
</kw>
<msg time="2026-04-18T23:46:39.193047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.875376" elapsed="0.317726"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:38.874279" elapsed="0.319006"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:39.193389" elapsed="0.000060"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:38.871784" elapsed="0.321942"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.197011" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:39.209854" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:39.210263" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:39.210394" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:39.210495" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:39.196804" elapsed="0.013744"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.212649" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:39.211965" elapsed="0.000790"/>
</kw>
<msg time="2026-04-18T23:46:39.212985" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:39.213122" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:39.211149" elapsed="0.002026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.214743" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:39.213675" elapsed="0.001131"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.218270" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.217009" elapsed="0.001361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.219090" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.218704" elapsed="0.000446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.219709" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.219370" elapsed="0.000399"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:39.215997" elapsed="0.003849"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:39.215179" elapsed="0.004717"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.215119" elapsed="0.004815"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:39.220285" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:39.220130" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.220100" elapsed="0.000283"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:39.220664" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-18T23:46:39.220531" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.220506" elapsed="0.000279"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:39.221121" elapsed="0.000034"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:39.195830" elapsed="0.025644"/>
</kw>
<msg time="2026-04-18T23:46:39.221705" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:39.221814" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:39.194068" elapsed="0.027799"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:39.222269" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:39.223014" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-18T23:46:39.222758" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.222731" elapsed="0.000544"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:39.223481" elapsed="0.000032"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:38.870861" elapsed="0.352877"/>
</kw>
<msg time="2026-04-18T23:46:39.223888" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.870324" elapsed="0.353639"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:38.868681" elapsed="0.355444"/>
</kw>
<msg time="2026-04-18T23:46:39.224188" 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-18T23:46:38.868224" elapsed="0.356030"/>
</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-18T23:46:39.229908" elapsed="0.000798"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:39.230875" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:39.231210" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:39.224679" elapsed="0.006697"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:38.867185" elapsed="0.364249"/>
</kw>
<msg time="2026-04-18T23:46:39.231491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:38.866706" elapsed="0.364836"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:38.866003" elapsed="0.365625"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:46:38.865849" elapsed="0.365827"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.233922" 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-18T23:46:39.234024" 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-18T23:46:39.233781" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:39.236022" level="INFO">${ip_address} = 10.30.171.128</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-18T23:46:39.235706" elapsed="0.000374"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:39.236131" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:39.236287" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:39.235374" elapsed="0.000945"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.239915" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:39.239170" elapsed="0.000847"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.242998" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:39.243094" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:39.242720" 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-18T23:46:39.243279" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.244712" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:39.566946" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:39.244325" elapsed="0.322900"/>
</kw>
<msg time="2026-04-18T23:46:39.567317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.243862" elapsed="0.323546"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:39.242215" elapsed="0.325314"/>
</kw>
<msg time="2026-04-18T23:46:39.567585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.241798" elapsed="0.325840"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:39.240605" elapsed="0.327222"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:39.567945" elapsed="0.000064"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:39.237987" elapsed="0.330316"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.571552" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:39.584280" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:39.584452" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:39.584521" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:39.584579" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:39.571349" elapsed="0.013262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.586352" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:39.585668" elapsed="0.000786"/>
</kw>
<msg time="2026-04-18T23:46:39.586662" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:39.586759" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:39.584959" elapsed="0.001849"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.588408" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:39.587359" elapsed="0.001111"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.591301" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.590579" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.592897" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.591757" elapsed="0.001237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.593792" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.593418" elapsed="0.000420"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:39.589604" elapsed="0.004288"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:39.588797" elapsed="0.005131"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.588743" elapsed="0.005212"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:39.594207" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:39.594098" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.594077" elapsed="0.000199"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:39.594472" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-18T23:46:39.594378" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.594360" elapsed="0.000199"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:39.594755" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:39.570402" elapsed="0.024598"/>
</kw>
<msg time="2026-04-18T23:46:39.595172" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:39.595242" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:39.568606" elapsed="0.026672"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:39.595535" elapsed="0.000247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:39.596112" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-18T23:46:39.595909" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.595884" elapsed="0.000384"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:39.596415" elapsed="0.000023"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:39.237016" elapsed="0.359581"/>
</kw>
<msg time="2026-04-18T23:46:39.596717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.236481" elapsed="0.360289"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:39.234796" elapsed="0.362063"/>
</kw>
<msg time="2026-04-18T23:46:39.596902" 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-18T23:46:39.234236" elapsed="0.362712"/>
</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-18T23:46:39.600158" elapsed="0.000319"/>
</kw>
<kw name="Open 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-18T23:46:39.600657" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:39.600972" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:39.597274" elapsed="0.003868"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:39.233132" elapsed="0.368071"/>
</kw>
<msg time="2026-04-18T23:46:39.601259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.232668" elapsed="0.368640"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:39.231935" elapsed="0.369464"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:46:39.231775" elapsed="0.369680"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.603723" 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-18T23:46:39.603824" 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-18T23:46:39.603581" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:39.605716" level="INFO">${ip_address} = 10.30.171.206</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-18T23:46:39.605407" elapsed="0.000337"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:39.605794" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:39.605946" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:39.605072" elapsed="0.000898"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.609567" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:39.608849" elapsed="0.000816"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.612662" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:39.612742" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:39.612362" 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-18T23:46:39.612928" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.614206" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:39.937169" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:39.613843" elapsed="0.323597"/>
</kw>
<msg time="2026-04-18T23:46:39.937530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.613464" elapsed="0.324155"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:39.611828" elapsed="0.325907"/>
</kw>
<msg time="2026-04-18T23:46:39.937788" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.611216" elapsed="0.326624"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:39.610238" elapsed="0.327781"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:39.938149" elapsed="0.000057"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:39.607638" elapsed="0.330831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.941696" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:39.954220" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:39.954389" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:39.954452" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:39.954508" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:39.941493" elapsed="0.013047"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.956616" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:39.955927" elapsed="0.000814"/>
</kw>
<msg time="2026-04-18T23:46:39.956956" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:39.957092" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:39.955086" elapsed="0.002060"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.958675" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:39.957641" elapsed="0.001109"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.961539" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.960927" elapsed="0.000706"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.962595" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.962011" elapsed="0.000676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.964169" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:39.963078" elapsed="0.001195"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:39.959925" elapsed="0.004474"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:39.959094" elapsed="0.005382"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.959007" elapsed="0.005527"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:39.964825" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:39.964718" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.964698" elapsed="0.000203"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:39.965142" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-18T23:46:39.965010" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.964992" elapsed="0.000237"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:39.965430" elapsed="0.000024"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:39.940537" elapsed="0.025142"/>
</kw>
<msg time="2026-04-18T23:46:39.965827" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:39.965902" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:39.938761" elapsed="0.027186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:39.966228" elapsed="0.000233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:39.966763" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:46:39.966579" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:39.966560" elapsed="0.000362"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:39.967094" elapsed="0.000023"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:39.606701" elapsed="0.360580"/>
</kw>
<msg time="2026-04-18T23:46:39.967386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.606157" elapsed="0.361282"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:39.604502" elapsed="0.363024"/>
</kw>
<msg time="2026-04-18T23:46:39.967567" 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-18T23:46:39.604012" elapsed="0.363615"/>
</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-18T23:46:39.970742" 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-18T23:46:39.971254" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:39.971564" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:39.967935" elapsed="0.003801"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:39.602897" elapsed="0.368897"/>
</kw>
<msg time="2026-04-18T23:46:39.971850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.602448" elapsed="0.369451"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:39.601722" elapsed="0.370265"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:46:39.601557" elapsed="0.370504"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:38.865708" elapsed="1.106390"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-18T23:46:38.861702" elapsed="1.110459"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.972321" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-18T23:46:39.976588" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:39.976201" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.977107" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:39.976776" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:39.977184" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:39.977339" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:39.975786" elapsed="0.001578"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.979769" 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-18T23:46:39.979869" 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-18T23:46:39.979629" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:39.981957" level="INFO">${ip_address} = 10.30.171.9</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-18T23:46:39.981495" elapsed="0.000582"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:39.982323" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:46:39.982486" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:39.981073" elapsed="0.001439"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.986560" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:39.986155" elapsed="0.000432"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:39.988446" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:39.988523" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:39.988162" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.988706" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:39.989910" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:40.321965" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:39.989587" elapsed="0.332556"/>
</kw>
<msg time="2026-04-18T23:46:40.322233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.989216" elapsed="0.333112"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:39.987651" elapsed="0.334796"/>
</kw>
<msg time="2026-04-18T23:46:40.322500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.987219" elapsed="0.335333"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:39.986795" elapsed="0.335836"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:40.322766" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:39.985438" elapsed="0.337660"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.326769" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:40.340482" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:40.340927" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:40.341070" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:40.341173" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:40.326464" elapsed="0.014764"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.343693" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:40.342909" elapsed="0.000900"/>
</kw>
<msg time="2026-04-18T23:46:40.344061" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:40.344168" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:40.341793" elapsed="0.002427"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.345662" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:40.344610" elapsed="0.001111"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.348241" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:40.347859" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.348849" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:40.348515" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.349472" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:40.349135" elapsed="0.000550"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:40.346984" elapsed="0.002783"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:40.345961" elapsed="0.003857"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.345866" elapsed="0.003992"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:40.350133" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:40.349944" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.349916" elapsed="0.000319"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:40.350438" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-18T23:46:40.350309" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.350288" elapsed="0.000286"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:40.350802" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:40.325697" elapsed="0.025324"/>
</kw>
<msg time="2026-04-18T23:46:40.351439" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:40.351555" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:40.324516" elapsed="0.027099"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:40.353060" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:40.354130" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-18T23:46:40.353839" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.353753" elapsed="0.000587"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:40.355766" elapsed="0.000053"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:39.983448" elapsed="0.372633"/>
</kw>
<msg time="2026-04-18T23:46:40.356635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.982669" elapsed="0.374053"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:39.980535" elapsed="0.376311"/>
</kw>
<msg time="2026-04-18T23:46:40.356905" 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-18T23:46:39.980066" elapsed="0.376904"/>
</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-18T23:46:40.360939" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:40.361446" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:40.361783" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:40.357424" elapsed="0.004508"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:39.978964" elapsed="0.383027"/>
</kw>
<msg time="2026-04-18T23:46:40.362124" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.978521" elapsed="0.383655"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:39.977781" elapsed="0.384483"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:46:39.977556" elapsed="0.384757"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.364555" 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-18T23:46:40.364706" 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-18T23:46:40.364416" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:40.366960" level="INFO">${ip_address} = 10.30.171.128</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-18T23:46:40.366483" elapsed="0.000537"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:40.367272" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:46:40.367431" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:40.365988" elapsed="0.001468"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.371659" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:40.371265" elapsed="0.000420"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.373489" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:40.373566" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:40.373199" 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-18T23:46:40.373753" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.374981" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:40.699396" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:40.374658" elapsed="0.324890"/>
</kw>
<msg time="2026-04-18T23:46:40.699634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.374286" elapsed="0.325436"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:40.372684" elapsed="0.327156"/>
</kw>
<msg time="2026-04-18T23:46:40.699892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.372287" elapsed="0.327656"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:40.371891" elapsed="0.328128"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:40.700134" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:40.370472" elapsed="0.329952"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.703293" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:40.715694" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:40.715857" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:40.715915" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:40.715970" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:40.703092" elapsed="0.012908"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.718006" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:40.717358" elapsed="0.000783"/>
</kw>
<msg time="2026-04-18T23:46:40.718434" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:40.718532" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:40.716277" elapsed="0.002305"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.719955" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:40.718961" elapsed="0.001052"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.722638" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:40.722083" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.723627" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:40.723098" elapsed="0.000619"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.724604" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:40.724080" elapsed="0.000619"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:40.721140" elapsed="0.003675"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:40.720337" elapsed="0.004556"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.720286" elapsed="0.004663"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:40.725333" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:40.725107" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.725066" elapsed="0.000414"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:40.725857" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-18T23:46:40.725596" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.725562" elapsed="0.000517"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:40.726405" elapsed="0.000049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:40.702516" elapsed="0.024150"/>
</kw>
<msg time="2026-04-18T23:46:40.726918" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:40.727001" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:40.701548" elapsed="0.025513"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:40.728069" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:40.728766" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-18T23:46:40.728581" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:40.728522" elapsed="0.000389"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:40.729933" elapsed="0.000037"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:40.368217" elapsed="0.361942"/>
</kw>
<msg time="2026-04-18T23:46:40.730549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.367612" elapsed="0.362991"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:40.365424" elapsed="0.365268"/>
</kw>
<msg time="2026-04-18T23:46:40.730734" 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-18T23:46:40.364892" elapsed="0.365887"/>
</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-18T23:46:40.733854" elapsed="0.000365"/>
</kw>
<kw name="Open 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-18T23:46:40.734384" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:40.734693" 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-18T23:46:40.731099" elapsed="0.003740"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:40.363779" elapsed="0.371115"/>
</kw>
<msg time="2026-04-18T23:46:40.734949" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.363330" elapsed="0.371667"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:40.362601" elapsed="0.372496"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:46:40.362421" elapsed="0.372809"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.737555" 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-18T23:46:40.737692" 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-18T23:46:40.737396" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:40.739834" level="INFO">${ip_address} = 10.30.171.206</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-18T23:46:40.739381" elapsed="0.000513"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:40.740237" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:46:40.740396" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:40.738868" elapsed="0.001553"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.744272" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:40.743871" elapsed="0.000427"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:40.746130" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:40.746208" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:40.745812" 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-18T23:46:40.746393" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:40.747581" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:41.085767" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:40.747253" elapsed="0.338655"/>
</kw>
<msg time="2026-04-18T23:46:41.085994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.746878" elapsed="0.339220"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:40.745321" elapsed="0.340891"/>
</kw>
<msg time="2026-04-18T23:46:41.086263" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.744875" elapsed="0.341439"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:40.744500" elapsed="0.341893"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:41.086485" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:40.743208" elapsed="0.343573"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.089616" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:41.102769" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:41.102938" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:41.102999" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:41.103081" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:41.089409" elapsed="0.013706"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.108473" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:41.107750" elapsed="0.000827"/>
</kw>
<msg time="2026-04-18T23:46:41.108923" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:41.109073" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:41.103365" elapsed="0.005764"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.110542" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:41.109518" elapsed="0.001082"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.113241" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.112573" elapsed="0.000765"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.113921" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.113677" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.114380" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.114138" elapsed="0.000285"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:41.111616" elapsed="0.002862"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:41.110784" elapsed="0.003729"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.110736" elapsed="0.003804"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:41.114699" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:41.114596" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.114579" elapsed="0.000186"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:41.114905" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:46:41.114816" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.114801" elapsed="0.000187"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:41.115160" elapsed="0.000024"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:41.088847" elapsed="0.026436"/>
</kw>
<msg time="2026-04-18T23:46:41.115527" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:41.115609" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:41.087915" elapsed="0.027736"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:41.116677" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:41.117445" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-18T23:46:41.117257" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.117196" elapsed="0.000397"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:41.118613" elapsed="0.000038"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:40.741113" elapsed="0.377711"/>
</kw>
<msg time="2026-04-18T23:46:41.119246" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.740576" elapsed="0.378724"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:40.738356" elapsed="0.381031"/>
</kw>
<msg time="2026-04-18T23:46:41.119428" 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-18T23:46:40.737878" elapsed="0.381594"/>
</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-18T23:46:41.122591" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:46:41.123088" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:41.123412" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:41.119769" elapsed="0.003793"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:40.736760" elapsed="0.386857"/>
</kw>
<msg time="2026-04-18T23:46:41.123712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:40.736312" elapsed="0.387449"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:40.735494" elapsed="0.388350"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:46:40.735334" elapsed="0.388557"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:39.977420" elapsed="1.146504"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-18T23:46:39.973323" elapsed="1.150657"/>
</kw>
<msg time="2026-04-18T23:46:41.124019" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:39.972801" elapsed="1.151279"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:41.124240" elapsed="0.000026"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-18T23:46:36.968232" elapsed="4.156105"/>
</kw>
<kw name="Check_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-18T23:46:41.127868" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:41.127481" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.128394" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:41.128072" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:41.128467" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:41.128623" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:41.127091" elapsed="0.001557"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.131056" 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-18T23:46:41.131160" 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-18T23:46:41.130901" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:41.133225" level="INFO">${ip_address} = 10.30.171.9</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-18T23:46:41.132717" elapsed="0.000536"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:41.133304" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:41.133466" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:41.132355" elapsed="0.001136"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.136120" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:41.135362" elapsed="0.000799"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.139295" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:41.139371" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:41.139001" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.139563" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.140767" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:41.477254" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:41.140428" elapsed="0.337194"/>
</kw>
<msg time="2026-04-18T23:46:41.477777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.140072" elapsed="0.337856"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:41.138513" elapsed="0.339655"/>
</kw>
<msg time="2026-04-18T23:46:41.478349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.137764" elapsed="0.340735"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:41.136431" elapsed="0.342336"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:41.478971" elapsed="0.000117"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:41.134920" elapsed="0.344421"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.487145" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:41.500472" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:41.500839" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-18T23:46:41.501226" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:41.501552" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:41.486360" elapsed="0.015400"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.505912" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:41.505281" elapsed="0.000734"/>
</kw>
<msg time="2026-04-18T23:46:41.506557" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:41.506881" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:41.504059" elapsed="0.003063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.511182" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:41.509382" elapsed="0.002014"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.513958" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.513700" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.514584" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.514342" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.515010" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.514775" elapsed="0.000293"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:41.513244" elapsed="0.001919"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:41.511756" elapsed="0.003452"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.511636" elapsed="0.003631"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:41.515627" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:41.515417" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.515369" elapsed="0.000382"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:41.516124" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-18T23:46:41.515912" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.515865" elapsed="0.000418"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:41.517250" elapsed="0.000054"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:41.481563" elapsed="0.035960"/>
</kw>
<msg time="2026-04-18T23:46:41.517761" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:41.517807" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:41.479781" elapsed="0.038050"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:41.517994" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:41.518500" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:46:41.518389" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.518371" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:41.518725" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:41.134200" elapsed="0.384642"/>
</kw>
<msg time="2026-04-18T23:46:41.518937" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.133652" elapsed="0.385334"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:41.131821" elapsed="0.387407"/>
</kw>
<msg time="2026-04-18T23:46:41.519310" 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-18T23:46:41.131352" elapsed="0.388004"/>
</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-18T23:46:41.522579" elapsed="0.000312"/>
</kw>
<kw name="Open 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-18T23:46:41.523069" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:41.523381" 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-18T23:46:41.519651" elapsed="0.003877"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:41.130273" elapsed="0.393444"/>
</kw>
<msg time="2026-04-18T23:46:41.523838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.129812" elapsed="0.394078"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:41.129023" elapsed="0.395099"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:46:41.128866" elapsed="0.395339"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.526514" 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-18T23:46:41.526613" 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-18T23:46:41.526374" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:41.528429" level="INFO">${ip_address} = 10.30.171.128</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-18T23:46:41.528155" elapsed="0.000300"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:41.528504" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:41.528654" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:41.527816" elapsed="0.000863"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.531468" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:41.530729" elapsed="0.000780"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.534545" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:41.534621" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:41.534276" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.534801" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.535997" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:41.867569" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:41.535656" elapsed="0.332021"/>
</kw>
<msg time="2026-04-18T23:46:41.867752" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.535303" elapsed="0.332522"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:41.533778" elapsed="0.334146"/>
</kw>
<msg time="2026-04-18T23:46:41.868008" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.533072" elapsed="0.335032"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:41.531784" elapsed="0.336447"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:41.868324" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:41.530318" elapsed="0.338170"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.872006" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:41.884995" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:41.885394" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-18T23:46:41.885606" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:41.885897" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:41.871433" elapsed="0.014719"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.890364" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:41.889698" elapsed="0.000890"/>
</kw>
<msg time="2026-04-18T23:46:41.891133" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:41.891469" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:41.888470" elapsed="0.003213"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.895822" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:41.893972" elapsed="0.001946"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.897821" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.897566" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.898329" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.898088" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.898791" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:41.898551" elapsed="0.000283"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:41.897115" elapsed="0.001817"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:41.896171" elapsed="0.002823"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.896042" elapsed="0.003064"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:41.899473" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:41.899262" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.899212" elapsed="0.000387"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:41.899953" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-18T23:46:41.899754" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.899706" elapsed="0.000421"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:41.901107" elapsed="0.000057"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:41.869530" elapsed="0.031856"/>
</kw>
<msg time="2026-04-18T23:46:41.901629" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:41.901674" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:41.868697" elapsed="0.033001"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:41.901858" elapsed="0.000243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:41.902278" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-18T23:46:41.902168" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:41.902150" elapsed="0.000210"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:41.902503" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:41.529595" elapsed="0.373025"/>
</kw>
<msg time="2026-04-18T23:46:41.902716" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.528835" elapsed="0.373936"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:41.527270" elapsed="0.375750"/>
</kw>
<msg time="2026-04-18T23:46:41.903189" 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-18T23:46:41.526798" elapsed="0.376438"/>
</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-18T23:46:41.906318" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:46:41.906798" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:41.907216" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:41.903536" elapsed="0.003832"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:41.525623" elapsed="0.381939"/>
</kw>
<msg time="2026-04-18T23:46:41.907657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.525177" elapsed="0.382529"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:41.524461" elapsed="0.383460"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:46:41.524305" elapsed="0.383696"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.910212" 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-18T23:46:41.910312" 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-18T23:46:41.910071" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:41.912237" level="INFO">${ip_address} = 10.30.171.206</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-18T23:46:41.911951" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:41.912311" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:41.912460" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:41.911621" elapsed="0.000864"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.915288" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:41.914529" elapsed="0.000809"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:41.918393" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:41.918470" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:41.918124" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.918650" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:41.919871" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:42.226628" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:41.919551" elapsed="0.307194"/>
</kw>
<msg time="2026-04-18T23:46:42.226820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.919193" elapsed="0.307707"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:41.917625" elapsed="0.309378"/>
</kw>
<msg time="2026-04-18T23:46:42.227112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.916892" elapsed="0.310292"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:41.915602" elapsed="0.311707"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:42.227406" elapsed="0.000040"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:41.914117" elapsed="0.313450"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.230847" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-18T23:46:42.243419" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:42.244005" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-18T23:46:42.244392" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:42.244782" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:42.230511" elapsed="0.014488"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.250266" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:42.249373" elapsed="0.001033"/>
</kw>
<msg time="2026-04-18T23:46:42.250888" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:42.251268" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:42.247742" elapsed="0.003694"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.254633" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:42.253304" elapsed="0.001500"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.258213" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:42.257725" elapsed="0.000681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.259179" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:42.258701" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.259818" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:42.259477" elapsed="0.000385"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:42.256897" elapsed="0.003062"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:42.255119" elapsed="0.004884"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.254998" elapsed="0.005173"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:42.260539" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:42.260326" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.260277" elapsed="0.000390"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:42.261012" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-18T23:46:42.260816" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.260770" elapsed="0.000423"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:42.262184" elapsed="0.000062"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:42.228623" elapsed="0.033841"/>
</kw>
<msg time="2026-04-18T23:46:42.262706" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:42.262752" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:42.227786" elapsed="0.034990"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:42.262940" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:42.263400" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-18T23:46:42.263287" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.263269" elapsed="0.000214"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:42.263626" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:41.913393" elapsed="0.350356"/>
</kw>
<msg time="2026-04-18T23:46:42.263845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.912640" elapsed="0.351256"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:41.910961" elapsed="0.353206"/>
</kw>
<msg time="2026-04-18T23:46:42.264249" 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-18T23:46:41.910492" elapsed="0.353804"/>
</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-18T23:46:42.267482" 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-18T23:46:42.267958" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:42.268311" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:42.264596" elapsed="0.003861"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:41.909439" elapsed="0.359205"/>
</kw>
<msg time="2026-04-18T23:46:42.268739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:41.908976" elapsed="0.359812"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:41.908278" elapsed="0.360725"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:46:41.908120" elapsed="0.360947"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:41.128725" elapsed="1.140378"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-18T23:46:41.124612" elapsed="1.144589"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.279805" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:42.277478" elapsed="0.002355"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-18T23:46:42.281652" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:42.281274" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.282177" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:42.281839" elapsed="0.000364"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:42.282252" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:42.282408" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:42.280823" elapsed="0.001610"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.284691" 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-18T23:46:42.284791" 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-18T23:46:42.284547" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:42.286951" level="INFO">${ip_address} = 10.30.171.9</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-18T23:46:42.286505" elapsed="0.000474"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:42.287052" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:46:42.287206" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:42.285959" elapsed="0.001272"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.291156" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:42.290548" elapsed="0.000654"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.293368" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:42.293444" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:42.293093" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.293624" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.294844" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:42.621393" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:42.294518" elapsed="0.326981"/>
</kw>
<msg time="2026-04-18T23:46:42.621561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.294150" elapsed="0.327474"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:42.292583" elapsed="0.329124"/>
</kw>
<msg time="2026-04-18T23:46:42.621803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.292185" elapsed="0.329668"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:42.291648" elapsed="0.330335"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:42.622140" elapsed="0.000076"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:42.289540" elapsed="0.332853"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.624560" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-18T23:46:42.637595" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:42.637713" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-18T23:46:42.637758" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:42.637798" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:42.624369" elapsed="0.013452"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.638819" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:42.638538" elapsed="0.000326"/>
</kw>
<msg time="2026-04-18T23:46:42.638959" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:42.639002" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:42.638004" elapsed="0.001035"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.639633" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:42.639208" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.640750" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:42.640503" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.641199" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:42.640945" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.641644" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:42.641405" elapsed="0.000282"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:42.640103" elapsed="0.001636"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:42.639743" elapsed="0.002031"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.639722" elapsed="0.002077"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:42.641955" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:42.641855" elapsed="0.000143"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.641838" elapsed="0.000182"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:42.642178" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-18T23:46:42.642089" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.642073" elapsed="0.000186"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:42.642401" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:42.623803" elapsed="0.018755"/>
</kw>
<msg time="2026-04-18T23:46:42.642836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:42.642950" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:42.622702" elapsed="0.020306"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:42.643286" elapsed="0.000634"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:42.644294" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-18T23:46:42.644071" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.644051" elapsed="0.000427"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:42.644660" elapsed="0.000044"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:42.287914" elapsed="0.356985"/>
</kw>
<msg time="2026-04-18T23:46:42.644958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.287391" elapsed="0.357616"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:42.285444" elapsed="0.359699"/>
</kw>
<msg time="2026-04-18T23:46:42.645184" 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-18T23:46:42.284969" elapsed="0.360260"/>
</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-18T23:46:42.648274" elapsed="0.000306"/>
</kw>
<kw name="Open 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-18T23:46:42.648741" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:42.649053" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:42.645540" elapsed="0.003662"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:42.283918" elapsed="0.365340"/>
</kw>
<msg time="2026-04-18T23:46:42.649311" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.283478" elapsed="0.365901"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:42.282780" elapsed="0.366686"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:46:42.282622" elapsed="0.366889"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.651671" 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-18T23:46:42.651769" 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-18T23:46:42.651541" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:42.653785" level="INFO">${ip_address} = 10.30.171.128</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-18T23:46:42.653312" elapsed="0.000499"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:42.653859" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:42.654008" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:42.652982" elapsed="0.001072"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.658084" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:42.657475" elapsed="0.000654"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.660257" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:42.660332" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:42.659977" 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-18T23:46:42.660514" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.661709" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:42.971919" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:42.661382" elapsed="0.310741"/>
</kw>
<msg time="2026-04-18T23:46:42.972198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.660996" elapsed="0.311281"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:42.659494" elapsed="0.312886"/>
</kw>
<msg time="2026-04-18T23:46:42.972430" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.659103" elapsed="0.313376"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:42.658573" elapsed="0.314047"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:42.972776" elapsed="0.000087"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:42.656466" elapsed="0.316601"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:42.975356" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-18T23:46:42.998710" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:42.998826" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-18T23:46:42.998870" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:42.998910" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:42.975158" elapsed="0.023775"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:42.999949" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:42.999665" elapsed="0.000329"/>
</kw>
<msg time="2026-04-18T23:46:43.000106" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:43.000150" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:42.999134" elapsed="0.001038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.000813" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:43.000342" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.001930" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:43.001684" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.002379" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:43.002142" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.002802" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:43.002568" elapsed="0.000275"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:43.001289" elapsed="0.001607"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:43.000926" elapsed="0.002005"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.000903" elapsed="0.002055"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:43.003132" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:43.003014" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.002997" elapsed="0.000200"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:43.003336" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-18T23:46:43.003248" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.003233" elapsed="0.000186"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:43.003562" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:42.974568" elapsed="0.029154"/>
</kw>
<msg time="2026-04-18T23:46:43.003861" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:43.003969" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:42.973409" elapsed="0.030638"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:43.004300" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:43.005167" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-18T23:46:43.004922" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.004902" elapsed="0.000452"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:43.005535" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:42.654736" elapsed="0.351041"/>
</kw>
<msg time="2026-04-18T23:46:43.005872" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.654217" elapsed="0.351705"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:42.652472" elapsed="0.353536"/>
</kw>
<msg time="2026-04-18T23:46:43.006066" 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-18T23:46:42.651945" elapsed="0.354168"/>
</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-18T23:46:43.009191" elapsed="0.000311"/>
</kw>
<kw name="Open 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-18T23:46:43.009665" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:43.009969" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:43.006411" elapsed="0.003722"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:42.650918" elapsed="0.359272"/>
</kw>
<msg time="2026-04-18T23:46:43.010244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:42.650478" elapsed="0.359814"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:42.649759" elapsed="0.360615"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:46:42.649602" elapsed="0.360817"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.012585" 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-18T23:46:43.012696" 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-18T23:46:43.012453" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:43.014698" level="INFO">${ip_address} = 10.30.171.206</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-18T23:46:43.014254" elapsed="0.000471"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:43.014774" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:46:43.014923" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:43.013920" elapsed="0.001027"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.020716" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:43.020087" elapsed="0.000675"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.022880" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:43.022958" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:43.022616" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.023154" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.024380" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:43.338932" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:43.023986" elapsed="0.315081"/>
</kw>
<msg time="2026-04-18T23:46:43.339140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.023636" elapsed="0.315583"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:43.022139" elapsed="0.317178"/>
</kw>
<msg time="2026-04-18T23:46:43.339367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.021735" elapsed="0.317680"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:43.021235" elapsed="0.318325"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:43.339702" elapsed="0.000085"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:43.017291" elapsed="0.322680"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.342317" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-18T23:46:43.355160" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:43.355275" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-18T23:46:43.355321" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:43.355361" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:43.342119" elapsed="0.013265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.356438" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:43.355906" elapsed="0.000578"/>
</kw>
<msg time="2026-04-18T23:46:43.356579" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:43.356623" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:43.355562" elapsed="0.001084"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.357267" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:43.356817" elapsed="0.000477"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.358382" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:43.358134" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.358816" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:43.358579" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.359261" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:43.359007" elapsed="0.000297"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:43.357720" elapsed="0.001636"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:43.357380" elapsed="0.002012"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.357357" elapsed="0.002062"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:43.359575" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:43.359475" elapsed="0.000144"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.359458" elapsed="0.000183"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:43.359788" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:46:43.359692" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.359677" elapsed="0.000195"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:43.360057" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:43.341525" elapsed="0.018856"/>
</kw>
<msg time="2026-04-18T23:46:43.360535" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:43.360646" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:43.340364" elapsed="0.020341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:43.361012" elapsed="0.000504"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:43.361876" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-18T23:46:43.361651" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:43.361631" elapsed="0.000452"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:43.362271" elapsed="0.000047"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:43.015773" elapsed="0.346746"/>
</kw>
<msg time="2026-04-18T23:46:43.362579" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.015128" elapsed="0.347501"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:43.013408" elapsed="0.349306"/>
</kw>
<msg time="2026-04-18T23:46:43.362756" 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-18T23:46:43.012878" elapsed="0.349923"/>
</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-18T23:46:43.365899" elapsed="0.000345"/>
</kw>
<kw name="Open 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-18T23:46:43.366407" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:43.366712" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:43.363110" elapsed="0.003751"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:43.011818" elapsed="0.355100"/>
</kw>
<msg time="2026-04-18T23:46:43.366974" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.011380" elapsed="0.355641"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:43.010671" elapsed="0.356453"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:46:43.010516" elapsed="0.356655"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:42.282488" elapsed="1.084717"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-18T23:46:42.280204" elapsed="1.087059"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:42.279912" elapsed="1.087388"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:42.279893" elapsed="1.087432"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.368645" 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-18T23:46:43.368744" 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-18T23:46:43.368509" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-18T23:46:43.369862" elapsed="0.000281"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.371125" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:43.370733" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.371611" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:43.371310" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:43.371721" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:43.371877" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:43.370355" elapsed="0.001547"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:43.372907" level="INFO">${ip_address} = 10.30.171.9</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-18T23:46:43.372636" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:43.372982" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:46:43.373149" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:43.372315" elapsed="0.000858"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.374960" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:43.374586" elapsed="0.000400"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:43.377433" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:43.377690" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:43.376901" elapsed="0.000888"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.378177" elapsed="0.000587"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.380082" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:43.706980" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:43.379722" elapsed="0.327356"/>
</kw>
<msg time="2026-04-18T23:46:43.707170" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.379088" elapsed="0.328160"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:43.375966" elapsed="0.331439"/>
</kw>
<msg time="2026-04-18T23:46:43.707497" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:43.375559" elapsed="0.331988"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:43.375182" elapsed="0.332438"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:43.707668" elapsed="0.000031"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:43.374223" elapsed="0.333576"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.709492" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-18T23:46:43.722570" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:43.709104" elapsed="0.013574"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-18T23:46:43.708948" elapsed="0.013767"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.723364" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-18T23:46:43.832228" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:43.722944" elapsed="0.109535"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-18T23:46:43.722802" elapsed="0.109763"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.833972" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-18T23:46:43.887687" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:43.833122" elapsed="0.054815"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-18T23:46:43.832761" elapsed="0.055410"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.889617" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-18T23:46:43.939774" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:43.888704" elapsed="0.051373"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-18T23:46:43.888390" elapsed="0.051797"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.941658" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-18T23:46:43.987609" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:43.940721" elapsed="0.047157"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-18T23:46:43.940400" elapsed="0.047566"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:43.989520" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-18T23:46:44.035114" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:43.988571" elapsed="0.046805"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-18T23:46:43.988243" elapsed="0.047220"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.036926" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-18T23:46:44.083386" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.035986" elapsed="0.047648"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-18T23:46:44.035664" elapsed="0.048058"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.085230" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-18T23:46:44.131263" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.084310" elapsed="0.047203"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-18T23:46:44.083919" elapsed="0.047678"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-18T23:46:43.708815" elapsed="0.422849"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-18T23:46:43.708533" elapsed="0.423263"/>
</kw>
<msg time="2026-04-18T23:46:44.132017" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:44.132193" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:43.707969" elapsed="0.424279"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:44.132618" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:44.133567" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-18T23:46:44.133286" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:44.133240" elapsed="0.000525"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:44.134127" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:43.373432" elapsed="0.760969"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-18T23:46:43.372146" elapsed="0.762350"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:44.136622" level="INFO">${ip_address} = 10.30.171.128</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-18T23:46:44.135946" elapsed="0.000735"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:44.136789" elapsed="0.000069"/>
</return>
<msg time="2026-04-18T23:46:44.137176" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:44.135204" elapsed="0.002027"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.141005" level="INFO">${odl_connection} = 527</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:44.140161" elapsed="0.000934"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:44.145133" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:44.145395" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:44.144578" elapsed="0.000914"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:44.145786" elapsed="0.000618"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.147703" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:44.474965" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:44.147382" elapsed="0.327826"/>
</kw>
<msg time="2026-04-18T23:46:44.475333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:44.146724" elapsed="0.328717"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:44.143501" elapsed="0.332102"/>
</kw>
<msg time="2026-04-18T23:46:44.475694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:44.142405" elapsed="0.333341"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:44.141493" elapsed="0.334329"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:44.475875" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:44.139174" elapsed="0.336895"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.478045" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-18T23:46:44.491307" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.477610" elapsed="0.013940"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-18T23:46:44.477466" elapsed="0.014166"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.493118" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-18T23:46:44.611289" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.492201" elapsed="0.119336"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-18T23:46:44.491838" elapsed="0.119782"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.613127" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-18T23:46:44.660394" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.612226" elapsed="0.048345"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-18T23:46:44.611815" elapsed="0.048812"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.661554" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-18T23:46:44.709563" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.660972" elapsed="0.048966"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-18T23:46:44.660761" elapsed="0.049333"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.711882" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-18T23:46:44.761608" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.710833" elapsed="0.051026"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-18T23:46:44.710410" elapsed="0.051547"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.763534" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-18T23:46:44.812942" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.762555" elapsed="0.050695"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-18T23:46:44.762217" elapsed="0.051122"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.814875" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-18T23:46:44.860634" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.813939" elapsed="0.046944"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-18T23:46:44.813575" elapsed="0.047397"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.862520" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-18T23:46:44.908441" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:44.861582" elapsed="0.047111"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-18T23:46:44.861217" elapsed="0.047563"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-18T23:46:44.477321" elapsed="0.431530"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-18T23:46:44.476980" elapsed="0.432016"/>
</kw>
<msg time="2026-04-18T23:46:44.909322" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:44.909444" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:44.476302" elapsed="0.433196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:44.909876" elapsed="0.000626"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:44.910989" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-18T23:46:44.910684" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:44.910630" elapsed="0.000737"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:44.911743" elapsed="0.000054"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:44.137830" elapsed="0.774196"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-18T23:46:44.134763" elapsed="0.777400"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:44.914271" level="INFO">${ip_address} = 10.30.171.206</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-18T23:46:44.913816" elapsed="0.000495"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:44.914383" elapsed="0.000042"/>
</return>
<msg time="2026-04-18T23:46:44.914615" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:44.912839" elapsed="0.001812"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.917217" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:44.916620" elapsed="0.000673"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:44.921344" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:44.921747" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:44.920169" elapsed="0.001727"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:44.922350" elapsed="0.000925"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:44.925159" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:45.278862" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:44.924664" elapsed="0.354397"/>
</kw>
<msg time="2026-04-18T23:46:45.279243" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:44.923712" elapsed="0.355673"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:44.918774" elapsed="0.360832"/>
</kw>
<msg time="2026-04-18T23:46:45.279737" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:44.918144" elapsed="0.361667"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:44.917571" elapsed="0.362351"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:45.279991" elapsed="0.000080"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:44.915973" elapsed="0.364272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.282636" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-18T23:46:45.295475" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.282237" elapsed="0.013481"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-18T23:46:45.282093" elapsed="0.013707"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.297277" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-18T23:46:45.394724" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.296340" elapsed="0.098861"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-18T23:46:45.295992" elapsed="0.099331"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.397163" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-18T23:46:45.448069" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.396140" elapsed="0.052182"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-18T23:46:45.395644" elapsed="0.052784"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.450007" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-18T23:46:45.496783" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.449138" elapsed="0.047969"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-18T23:46:45.448766" elapsed="0.048428"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.498693" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-18T23:46:45.544080" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.497756" elapsed="0.046614"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-18T23:46:45.497416" elapsed="0.047046"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.545970" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-18T23:46:45.591848" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.545085" elapsed="0.047050"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-18T23:46:45.544688" elapsed="0.047553"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.593690" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-18T23:46:45.640074" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.592783" elapsed="0.047604"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-18T23:46:45.592465" elapsed="0.048014"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.642002" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-18T23:46:45.687814" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:45.641089" elapsed="0.047032"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-18T23:46:45.640702" elapsed="0.047507"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-18T23:46:45.281933" elapsed="0.406345"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-18T23:46:45.281551" elapsed="0.406874"/>
</kw>
<msg time="2026-04-18T23:46:45.688663" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:45.688762" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:45.280558" elapsed="0.408256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:45.689231" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:45.690238" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-18T23:46:45.689886" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:45.689839" elapsed="0.000608"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:45.690789" elapsed="0.000049"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:44.915067" elapsed="0.776037"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-18T23:46:44.912379" elapsed="0.778824"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:43.371983" elapsed="2.319288"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-18T23:46:43.369442" elapsed="2.321948"/>
</kw>
<msg time="2026-04-18T23:46:45.691483" 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-18T23:46:43.368925" elapsed="2.322670"/>
</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-18T23:46:45.697878" elapsed="0.000417"/>
</kw>
<kw name="Open 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-18T23:46:45.698463" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:45.698780" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:45.692352" elapsed="0.006579"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-18T23:46:43.368011" elapsed="2.330979"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-18T23:46:43.367495" elapsed="2.331582"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-18T23:46:45.700972" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:45.700577" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:45.701480" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:45.701175" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:45.701550" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:46:45.701703" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:45.700195" elapsed="0.001532"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.704004" 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-18T23:46:45.704129" 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-18T23:46:45.703862" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:45.706101" level="INFO">${ip_address} = 10.30.171.9</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-18T23:46:45.705628" elapsed="0.000501"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:45.706177" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:45.706327" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:45.705307" elapsed="0.001044"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.710152" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:45.709543" elapsed="0.000654"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:45.712738" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:45.712814" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:45.712442" 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-18T23:46:45.712993" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:45.714204" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:46.028964" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:45.713859" elapsed="0.315315"/>
</kw>
<msg time="2026-04-18T23:46:46.029276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:45.713502" elapsed="0.315878"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:45.711743" elapsed="0.317765"/>
</kw>
<msg time="2026-04-18T23:46:46.029564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:45.711345" elapsed="0.318272"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:45.710801" elapsed="0.318971"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:46.029931" elapsed="0.000121"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:45.708558" elapsed="0.321709"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.032890" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-18T23:46:46.045765" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:46.045937" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-18T23:46:46.046003" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:46.046092" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:46.032683" elapsed="0.013445"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.047627" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:46.046963" elapsed="0.000765"/>
</kw>
<msg time="2026-04-18T23:46:46.047933" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:46.048056" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:46.046391" elapsed="0.001718"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.049454" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:46.048479" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.052354" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.051372" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.053398" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.052825" elapsed="0.000663"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.054376" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.053822" elapsed="0.000648"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:46.050465" elapsed="0.004123"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:46.049689" elapsed="0.004977"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.049642" elapsed="0.005080"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:46.055094" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:46.054844" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.054808" elapsed="0.000434"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:46.055593" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-18T23:46:46.055353" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.055321" elapsed="0.000453"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:46.055919" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:46.032076" elapsed="0.024019"/>
</kw>
<msg time="2026-04-18T23:46:46.056235" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:46.056344" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:46.030659" elapsed="0.025742"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:46.056651" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:46.057516" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-18T23:46:46.057290" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.057270" elapsed="0.000428"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:46.057882" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:45.707059" elapsed="0.351085"/>
</kw>
<msg time="2026-04-18T23:46:46.058204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:45.706510" elapsed="0.351743"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:45.704771" elapsed="0.353568"/>
</kw>
<msg time="2026-04-18T23:46:46.058381" 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-18T23:46:45.704308" elapsed="0.354119"/>
</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-18T23:46:46.061548" elapsed="0.000354"/>
</kw>
<kw name="Open 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-18T23:46:46.062142" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:46.062459" 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-18T23:46:46.058731" elapsed="0.003875"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:45.703241" elapsed="0.359423"/>
</kw>
<msg time="2026-04-18T23:46:46.062720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:45.702777" elapsed="0.359992"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:45.702090" elapsed="0.360766"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:46:45.701921" elapsed="0.360984"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.065115" 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-18T23:46:46.065216" 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-18T23:46:46.064959" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:46.067219" level="INFO">${ip_address} = 10.30.171.128</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-18T23:46:46.066745" elapsed="0.000500"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:46.067294" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:46.067442" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:46.066426" elapsed="0.001040"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.071356" level="INFO">${odl_connection} = 532</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:46.070752" elapsed="0.000648"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.073770" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:46.073845" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:46.073508" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.074038" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.075217" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:46.394739" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:46.074877" elapsed="0.319957"/>
</kw>
<msg time="2026-04-18T23:46:46.394899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.074523" elapsed="0.320453"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:46.073007" elapsed="0.322142"/>
</kw>
<msg time="2026-04-18T23:46:46.395290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.072611" elapsed="0.322743"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:46.071885" elapsed="0.323619"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:46.395660" elapsed="0.000080"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:46.069757" elapsed="0.326167"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.398316" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-18T23:46:46.410928" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:46.411229" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-18T23:46:46.411329" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:46.411418" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:46.398106" elapsed="0.013361"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.413250" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:46.412646" elapsed="0.000701"/>
</kw>
<msg time="2026-04-18T23:46:46.413551" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:46.413645" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:46.411857" elapsed="0.001837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.415098" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:46.414099" elapsed="0.001062"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.418008" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.417018" elapsed="0.001133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.419111" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.418495" elapsed="0.000708"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.419965" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.419540" elapsed="0.000509"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:46.416108" elapsed="0.004023"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:46.415333" elapsed="0.004850"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.415289" elapsed="0.004931"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:46.420462" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:46.420312" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.420277" elapsed="0.000282"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:46.420765" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-18T23:46:46.420634" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.420612" elapsed="0.000273"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:46.421118" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:46.397481" elapsed="0.023877"/>
</kw>
<msg time="2026-04-18T23:46:46.421564" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:46.421725" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:46.396298" elapsed="0.025512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:46.422206" elapsed="0.000688"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:46.423461" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-18T23:46:46.423129" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.423100" elapsed="0.000633"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:46.424002" elapsed="0.000092"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:46.068197" elapsed="0.356189"/>
</kw>
<msg time="2026-04-18T23:46:46.424472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.067648" elapsed="0.356895"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:46.065851" elapsed="0.358870"/>
</kw>
<msg time="2026-04-18T23:46:46.424783" 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-18T23:46:46.065394" elapsed="0.359454"/>
</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-18T23:46:46.429444" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:46.430173" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:46.430619" elapsed="0.000145"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:46.425304" elapsed="0.005537"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:46.064349" elapsed="0.366575"/>
</kw>
<msg time="2026-04-18T23:46:46.431149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.063885" elapsed="0.367343"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:46.063184" elapsed="0.368170"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:46:46.063009" elapsed="0.368411"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.433777" 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-18T23:46:46.433877" 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-18T23:46:46.433643" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:46.435906" level="INFO">${ip_address} = 10.30.171.206</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-18T23:46:46.435442" elapsed="0.000493"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:46:46.435986" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:46:46.436186" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:46.435102" elapsed="0.001111"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.440407" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:46.439743" elapsed="0.000712"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.442830" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:46.442910" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:46.442564" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.443151" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.444359" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:46.756462" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:46.444010" elapsed="0.312879"/>
</kw>
<msg time="2026-04-18T23:46:46.757090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.443650" elapsed="0.313618"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:46.442069" elapsed="0.315451"/>
</kw>
<msg time="2026-04-18T23:46:46.757653" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.441647" elapsed="0.316123"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-18T23:46:46.440915" elapsed="0.317280"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-18T23:46:46.758651" elapsed="0.000207"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-18T23:46:46.438627" elapsed="0.320548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.762805" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-18T23:46:46.775758" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:46.775930" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-18T23:46:46.775994" level="INFO">${stderr} = </msg>
<msg time="2026-04-18T23:46:46.776078" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:46:46.762490" elapsed="0.013622"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.777270" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-18T23:46:46.776843" elapsed="0.000491"/>
</kw>
<msg time="2026-04-18T23:46:46.777462" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-18T23:46:46.777522" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:46.776364" elapsed="0.001188"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.778548" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:46.777786" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.781146" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.780512" elapsed="0.000741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.786224" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.781625" elapsed="0.004698"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.787344" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.786705" elapsed="0.000741"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-18T23:46:46.779524" elapsed="0.008079"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:46.778731" elapsed="0.008960"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.778688" elapsed="0.009063"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-18T23:46:46.788160" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:46.787881" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.787841" elapsed="0.000493"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:46.788765" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-18T23:46:46.788532" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.788480" elapsed="0.000486"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:46.789343" elapsed="0.000052"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-18T23:46:46.761642" elapsed="0.028114"/>
</kw>
<msg time="2026-04-18T23:46:46.790124" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:46:46.790374" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:46:46.759756" elapsed="0.030799"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:46.790964" elapsed="0.000513"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-18T23:46:46.791837" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-18T23:46:46.791609" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.791590" elapsed="0.000453"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:46.792234" elapsed="0.000047"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-18T23:46:46.436945" elapsed="0.355536"/>
</kw>
<msg time="2026-04-18T23:46:46.792597" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.436388" elapsed="0.356261"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-18T23:46:46.434541" elapsed="0.358194"/>
</kw>
<msg time="2026-04-18T23:46:46.792777" 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-18T23:46:46.434079" elapsed="0.358742"/>
</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-18T23:46:46.795894" elapsed="0.000331"/>
</kw>
<kw name="Open 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-18T23:46:46.796391" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:46.796706" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:46.793141" elapsed="0.003712"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-18T23:46:46.432973" elapsed="0.363936"/>
</kw>
<msg time="2026-04-18T23:46:46.796964" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.432525" elapsed="0.364487"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-18T23:46:46.431797" elapsed="0.365315"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:46:46.431565" elapsed="0.365596"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:45.701783" elapsed="1.095412"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-18T23:46:45.699547" elapsed="1.097705"/>
</kw>
<status status="PASS" start="2026-04-18T23:46:45.699154" elapsed="1.098135"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:45.699135" elapsed="1.098177"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-18T23:46:42.273266" elapsed="4.524095"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-18T23:46:36.967602" elapsed="9.829896"/>
</test>
<test id="s1-s1-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.812723" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:46.812105" elapsed="0.000665"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.813804" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:46.813105" elapsed="0.000748"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-18T23:46:46.814769" level="INFO">${epoch} = 1776556006.814606</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-18T23:46:46.814202" elapsed="0.000620"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.815951" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:46.815186" elapsed="0.000817"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.817123" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:46:46.816360" elapsed="0.000817"/>
</kw>
<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-18T23:46:46.819998" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:46.819484" elapsed="0.000570"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.820692" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:46.820279" elapsed="0.000449"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:46.820792" elapsed="0.000054"/>
</return>
<msg time="2026-04-18T23:46:46.820990" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:46.818952" elapsed="0.002064"/>
</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-18T23:46:46.822167" level="INFO">${member_ip} = 10.30.171.9</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-18T23:46:46.821844" elapsed="0.000356"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.823197" 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-18T23:46:46.823302" 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-18T23:46:46.822989" elapsed="0.000338"/>
</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-18T23:46:46.826536" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:46.826220" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:46.826199" elapsed="0.000421"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.826911" 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-18T23:46:46.827011" 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-18T23:46:46.826778" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.827683" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:46.827211" elapsed="0.000521"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.828336" level="INFO">${conn_id} = 536</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:46.827889" elapsed="0.000474"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:46.829580" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:46.829710" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:46.829011" elapsed="0.000725"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.829930" elapsed="0.000742"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:46.832807" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:47.141723" 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 Sat Apr 18 23:46:37 UTC 2026

  System load:  0.02               Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:46:46.832240" elapsed="0.309708"/>
</kw>
<msg time="2026-04-18T23:46:47.142128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.830903" elapsed="0.311405"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:46.828578" elapsed="0.313984"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.143160" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log'.</msg>
<msg time="2026-04-18T23:46:47.165775" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:47.166101" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:47.166205" 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-18T23:46:47.142827" elapsed="0.023430"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.166626" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.168266" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.167557" 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-18T23:46:47.168845" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:47.168544" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.168490" 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-18T23:46:47.169413" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-18T23:46:47.169175" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.169139" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:47.169677" 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-18T23:46:47.186982" elapsed="0.000535"/>
</kw>
<kw name="Open 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-18T23:46:47.187686" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.188115" 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-18T23:46:47.170461" elapsed="0.017805"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:46.825485" elapsed="0.362873"/>
</kw>
<msg time="2026-04-18T23:46:47.188414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:46.824556" elapsed="0.363912"/>
</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-18T23:46:46.824007" elapsed="0.364543"/>
</kw>
<msg time="2026-04-18T23:46:47.188591" 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-18T23:46:46.823498" elapsed="0.365138"/>
</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-18T23:46:47.191727" elapsed="0.000323"/>
</kw>
<kw name="Open 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-18T23:46:47.192216" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.192515" 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-18T23:46:47.188926" elapsed="0.003735"/>
</kw>
<msg time="2026-04-18T23:46:47.192752" 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-18T23:46:46.822491" elapsed="0.370286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.193237" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.192963" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:47.193320" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:46.821436" elapsed="0.372007"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:46:46.821251" elapsed="0.372230"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:47.194727" level="INFO">${member_ip} = 10.30.171.128</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-18T23:46:47.194454" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.195540" 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-18T23:46:47.195687" 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-18T23:46:47.195397" elapsed="0.000317"/>
</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-18T23:46:47.198405" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:47.198129" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.198110" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.198759" 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-18T23:46:47.198863" 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-18T23:46:47.198631" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.199529" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.199065" elapsed="0.000511"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.200178" level="INFO">${conn_id} = 539</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:47.199734" elapsed="0.000470"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.201400" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:47.201524" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:47.200850" elapsed="0.000699"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:47.201733" elapsed="0.000697"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.204700" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:47.535365" 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 Sat Apr 18 23:46:38 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:46:47.204144" elapsed="0.331693"/>
</kw>
<msg time="2026-04-18T23:46:47.536152" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:47.202656" elapsed="0.333870"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:47.200421" elapsed="0.336484"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.538059" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log'.</msg>
<msg time="2026-04-18T23:46:47.561490" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:47.561749" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:47.561847" 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-18T23:46:47.537455" elapsed="0.024443"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.562310" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.563975" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.563260" 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-18T23:46:47.564648" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:47.564298" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.564241" elapsed="0.000575"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:47.565251" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-18T23:46:47.564942" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.564908" elapsed="0.000552"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:47.565663" 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-18T23:46:47.581248" elapsed="0.000554"/>
</kw>
<kw name="Open 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-18T23:46:47.581975" elapsed="0.000399"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.582524" 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-18T23:46:47.566524" elapsed="0.016151"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:47.197537" elapsed="0.385231"/>
</kw>
<msg time="2026-04-18T23:46:47.582822" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:47.196937" elapsed="0.385940"/>
</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-18T23:46:47.196404" elapsed="0.386554"/>
</kw>
<msg time="2026-04-18T23:46:47.583000" 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-18T23:46:47.195871" elapsed="0.387191"/>
</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-18T23:46:47.586303" elapsed="0.000314"/>
</kw>
<kw name="Open 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-18T23:46:47.586781" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.587086" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:46:47.583358" elapsed="0.003876"/>
</kw>
<msg time="2026-04-18T23:46:47.587328" 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-18T23:46:47.194966" elapsed="0.392387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.587776" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.587531" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:47.587860" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:47.193774" elapsed="0.394211"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:46:47.193588" elapsed="0.394450"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:46:47.589049" level="INFO">${member_ip} = 10.30.171.206</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-18T23:46:47.588745" elapsed="0.000334"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.589871" 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-18T23:46:47.589971" 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-18T23:46:47.589726" elapsed="0.000272"/>
</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-18T23:46:47.592946" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:47.592672" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.592653" elapsed="0.000390"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.593323" 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-18T23:46:47.593459" 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-18T23:46:47.593195" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.594129" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.593648" elapsed="0.000568"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.594833" level="INFO">${conn_id} = 542</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:47.594377" elapsed="0.000484"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.596094" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:46:47.596220" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:46:47.595536" elapsed="0.000709"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:47.596432" elapsed="0.000665"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.599196" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:46:47.929305" 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 Sat Apr 18 23:46:34 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:46:47.598625" elapsed="0.330924"/>
</kw>
<msg time="2026-04-18T23:46:47.929688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:47.597327" elapsed="0.332547"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:46:47.595101" elapsed="0.334979"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:46:47.930665" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776556006.814606.log'.</msg>
<msg time="2026-04-18T23:46:47.953681" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-18T23:46:47.953933" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:46:47.954068" 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-18T23:46:47.930358" elapsed="0.023766"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.954498" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.956145" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.955437" 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-18T23:46:47.956726" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:47.956422" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.956367" elapsed="0.000520"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:46:47.957314" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-04-18T23:46:47.957067" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-18T23:46:47.956997" elapsed="0.000535"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:46:47.957606" 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-18T23:46:47.975666" 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-18T23:46:47.976373" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.976690" 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-18T23:46:47.958395" elapsed="0.018445"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:46:47.592141" elapsed="0.384826"/>
</kw>
<msg time="2026-04-18T23:46:47.977043" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:46:47.591521" elapsed="0.385576"/>
</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-18T23:46:47.590686" elapsed="0.386492"/>
</kw>
<msg time="2026-04-18T23:46:47.977287" 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-18T23:46:47.590180" elapsed="0.387157"/>
</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-18T23:46:47.980514" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:46:47.981021" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:46:47.981334" 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-18T23:46:47.977632" elapsed="0.003848"/>
</kw>
<msg time="2026-04-18T23:46:47.981575" 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-18T23:46:47.589297" elapsed="0.392303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.982276" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:47.981783" elapsed="0.000537"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:46:47.982363" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:46:47.588334" elapsed="0.394154"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:46:47.588147" elapsed="0.394379"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:46:46.821103" elapsed="1.161461"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-18T23:46:46.817902" elapsed="1.164726"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.994664" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:47.994277" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.995180" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:47.994853" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:47.995250" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:47.995404" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:47.993880" elapsed="0.001549"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:47.997055" 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-18T23:46:47.996717" elapsed="0.000366"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:46:47.997130" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:46:47.997278" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:47.996367" elapsed="0.000936"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:48.005338" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:48.005083" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:48.005798" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:48.005544" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:46:48.011791" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:46:48.008039" elapsed="0.008678">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-18T23:46:48.005912" elapsed="0.010899">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.017063" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:48.016851" elapsed="0.000322"/>
</branch>
<status status="FAIL" start="2026-04-18T23:46:48.005894" elapsed="0.011303">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.017728" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:46:48.017869" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:48.017829" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:48.017809" elapsed="0.000123"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.018116" elapsed="0.000026"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:46:48.018191" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:46:48.000566" elapsed="0.017739">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:46:48.018376" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-18T23:46:47.997518" elapsed="0.020955">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.018694" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:46:48.018820" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:48.018784" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:48.018767" elapsed="0.000119"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.019099" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.019360" elapsed="0.000026"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-18T23:46:48.019432" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-18T23:46:47.995926" elapsed="0.023607">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-18T23:46:48.019662" elapsed="0.000024"/>
</continue>
<status status="NOT RUN" start="2026-04-18T23:46:48.019619" elapsed="0.000093"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:48.019595" elapsed="0.000139"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.019883" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-18T23:46:47.995679" elapsed="0.024275">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:46:47.995487" elapsed="0.024527">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-18T23:46:47.993472" elapsed="0.026655">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-18T23:46:47.993155" elapsed="0.027032">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-18T23:46:47.993137" elapsed="0.027112">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-18T23:46:48.020525" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:48.020321" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:48.020304" elapsed="0.000298"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-18T23:46:48.020922" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:48.020656" elapsed="0.000341"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:48.020640" elapsed="0.000381"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-18T23:46:47.992696" elapsed="0.028427">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:46:58.038348" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:46:58.037871" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:46:58.038864" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:46:58.038551" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:46:58.038938" elapsed="0.000036"/>
</return>
<msg time="2026-04-18T23:46:58.039122" level="INFO">${index_list} = [1, 2, 3]</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-18T23:46:58.037452" elapsed="0.001695"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:46:58.040663" 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-18T23:46:58.040361" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:46:58.040737" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:46:58.040886" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:46:58.039991" elapsed="0.000920"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:58.048535" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:58.048274" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:46:58.048982" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:46:58.048737" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:46:58.098972" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:46:58.099306" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-18T23:46:58.099618" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:46:58.051224" elapsed="0.049996">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-18T23:46:58.049109" elapsed="0.052411">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.102017" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:58.101622" elapsed="0.000587"/>
</branch>
<status status="FAIL" start="2026-04-18T23:46:58.049090" elapsed="0.053173">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.103526" elapsed="0.000067"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:46:58.103844" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:58.103757" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:58.103716" elapsed="0.000272"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.104351" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:46:58.104511" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:46:58.043682" elapsed="0.061098">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:46:58.104940" elapsed="0.000035"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-18T23:46:58.041138" elapsed="0.064071">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.105701" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:46:58.105986" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:46:58.105906" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:58.105868" elapsed="0.000293"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.106595" elapsed="0.000053"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.107120" elapsed="0.000054"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-18T23:46:58.107271" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-18T23:46:58.039617" elapsed="0.067872">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-18T23:46:58.107745" elapsed="0.000037"/>
</continue>
<status status="NOT RUN" start="2026-04-18T23:46:58.107660" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:58.107623" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.108233" elapsed="0.000048"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-18T23:46:58.039390" elapsed="0.069001">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:46:58.039205" elapsed="0.069316">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-18T23:46:58.037009" elapsed="0.071775">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-18T23:46:58.036665" elapsed="0.072247">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-18T23:46:58.036640" elapsed="0.072339">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-18T23:46:58.109332" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:58.109133" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:58.109115" elapsed="0.000293"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-18T23:46:58.109705" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:46:58.109491" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:46:58.109445" elapsed="0.000339"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-18T23:46:58.036151" elapsed="0.073713">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:47:08.127915" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:47:08.127417" elapsed="0.000533"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:47:08.128459" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:47:08.128143" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:47:08.128534" elapsed="0.000042"/>
</return>
<msg time="2026-04-18T23:47:08.128710" level="INFO">${index_list} = [1, 2, 3]</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-18T23:47:08.126977" elapsed="0.001758"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:08.130339" 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-18T23:47:08.130020" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:47:08.130412" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:47:08.130556" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:47:08.129642" elapsed="0.000938"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:08.138439" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:08.138174" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:08.138890" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:08.138641" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:47:08.167917" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:47:08.168163" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-18T23:47:08.168502" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:47:08.141474" elapsed="0.028000">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-18T23:47:08.139065" elapsed="0.030602">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.170158" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:08.169741" elapsed="0.000574"/>
</branch>
<status status="FAIL" start="2026-04-18T23:47:08.139041" elapsed="0.031326">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.171656" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:47:08.171955" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:08.171874" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:47:08.171837" elapsed="0.000287"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.172443" elapsed="0.000045"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:47:08.172594" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:47:08.133413" elapsed="0.039415">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:47:08.172981" elapsed="0.000033"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-18T23:47:08.130790" elapsed="0.042461">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.173729" elapsed="0.000053"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:47:08.174089" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:08.173963" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:47:08.173919" elapsed="0.000314"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.174685" elapsed="0.000053"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.175201" elapsed="0.000051"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-18T23:47:08.175400" elapsed="0.000045"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-18T23:47:08.129270" elapsed="0.046371">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-18T23:47:08.175896" elapsed="0.000037"/>
</continue>
<status status="NOT RUN" start="2026-04-18T23:47:08.175814" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:47:08.175777" elapsed="0.000290"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.176347" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-18T23:47:08.129020" elapsed="0.047396">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:47:08.128797" elapsed="0.047678">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-18T23:47:08.126558" elapsed="0.050012">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-18T23:47:08.126199" elapsed="0.050427">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-18T23:47:08.126170" elapsed="0.050485">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-18T23:47:08.176919" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:08.176720" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:47:08.176704" elapsed="0.000290"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-18T23:47:08.177292" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:08.177073" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:47:08.177055" elapsed="0.000342"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-18T23:47:08.125619" elapsed="0.051868">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.195834" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:47:18.195362" elapsed="0.000505"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.196367" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:47:18.196054" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:47:18.196454" elapsed="0.000047"/>
</return>
<msg time="2026-04-18T23:47:18.196645" level="INFO">${index_list} = [1, 2, 3]</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-18T23:47:18.194935" elapsed="0.001735"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.198211" 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-18T23:47:18.197894" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:47:18.198284" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:47:18.198430" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:47:18.197539" elapsed="0.000916"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.208002" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.207738" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.208467" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.208221" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:47:18.541833" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:47:18.542103" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:47:18 GMT', 'Expires': 'Sat, 18 Apr 2026 22:47:18 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556038,"status":200} 
 </msg>
<msg time="2026-04-18T23:47:18.542470" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:47:18.210707" elapsed="0.331827"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.208579" elapsed="0.334075"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:18.543212" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:18.542729" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.208559" elapsed="0.334853"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.551082" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556038,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.546349" elapsed="0.004832"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.545746" elapsed="0.005544"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.545700" elapsed="0.005618"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.554327" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.551618" elapsed="0.002800"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.551375" elapsed="0.003148"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.551358" elapsed="0.003193"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.558528" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.554747" elapsed="0.003810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:18.558968" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:18.558697" elapsed="0.000459"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.559925" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:18.559354" elapsed="0.000651"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.559184" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.558677" elapsed="0.001522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.560885" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.560362" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:18.561257" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:18.560982" elapsed="0.000484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.562287" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:18.561660" elapsed="0.000707"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.561494" elapsed="0.001018"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.560964" elapsed="0.001572"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:47:18.562695" elapsed="0.000678"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:47:18.564543" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.563540" elapsed="0.001031"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:47:18.564730" elapsed="0.003105"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:47:18.544648" elapsed="0.023254"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:47:18.568108" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:18.567975" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.567955" elapsed="0.000227"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:47:18.571202" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556038,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:47:18.568330" elapsed="0.002902"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:47:18.571284" elapsed="0.000039"/>
</return>
<msg time="2026-04-18T23:47:18.571456" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556038,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:47:18.201181" elapsed="0.370302"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:47:18.571540" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:47:18.571690" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556038,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:47:18.198663" elapsed="0.373052"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.572564" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556038,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.572309" elapsed="0.000305"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.573621" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556038, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.573181" elapsed="0.000468"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:47:18.573699" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:47:18.573859" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556038, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:47:18.572825" elapsed="0.001094"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:18.574425" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:18.574195" elapsed="0.000258"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:18.574820" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:18.574608" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:47:18.574894" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:47:18.575059" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:47:18.571936" elapsed="0.003149"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:47:18.575262" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:18.575154" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.575136" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.583040" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.582776" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.583487" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.583243" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:47:18.592553" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:47:18.592640" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:47:18 GMT', 'Expires': 'Sat, 18 Apr 2026 22:47:18 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556038,"status":200} 
 </msg>
<msg time="2026-04-18T23:47:18.592756" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:47:18.585750" elapsed="0.007032"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.583596" elapsed="0.009228"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:18.593002" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:18.592849" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.583578" elapsed="0.009527"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.596990" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556038,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.594313" elapsed="0.002789"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.594058" elapsed="0.003149"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.594037" elapsed="0.003197"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.601565" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.597559" elapsed="0.004137"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.597315" elapsed="0.004535"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.597297" elapsed="0.004593"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.602914" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.602149" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:18.603493" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:18.603113" elapsed="0.000638"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.604943" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:18.604059" elapsed="0.001058"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.603790" elapsed="0.001558"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.603085" elapsed="0.002298"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.606406" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.605625" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:18.606925" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:18.606550" elapsed="0.000648"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.608331" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:18.607483" elapsed="0.000964"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.607238" elapsed="0.001421"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.606522" elapsed="0.002172"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:47:18.608920" elapsed="0.000942"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:47:18.610822" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.610043" elapsed="0.000806"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:47:18.611003" elapsed="0.003156"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:47:18.593621" elapsed="0.020603"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:47:18.614402" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:18.614294" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.614275" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:47:18.617387" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:47:18.614616" elapsed="0.002800"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:47:18.617468" elapsed="0.000034"/>
</return>
<msg time="2026-04-18T23:47:18.617629" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:47:18.578306" elapsed="0.039349"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:47:18.617712" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:47:18.617857" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:47:18.575542" elapsed="0.042341"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.618708" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556038,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.618457" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.619725" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556038, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:18.619312" elapsed="0.000441"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:47:18.619802" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:47:18.619960" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556038, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:47:18.618961" elapsed="0.001025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:18.620402" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:18.620170" elapsed="0.000321"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:18.620872" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:18.620657" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:47:18.620945" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:47:18.621185" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:47:18.618106" elapsed="0.003104"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-18T23:47:18.621276" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:47:18.621428" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-18T23:47:18.197167" elapsed="0.424286"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-18T23:47:18.621636" elapsed="0.000036"/>
</continue>
<status status="PASS" start="2026-04-18T23:47:18.621523" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.621506" elapsed="0.000221"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:18.621875" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:47:18.196917" elapsed="0.425013"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.623361" level="INFO">${session} = ClusterManagement__session_2</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-18T23:47:18.623061" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:47:18.623434" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:47:18.623580" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:47:18.622707" elapsed="0.000898"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.631275" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.631011" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:18.631715" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:18.631474" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:47:19.034140" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:47:19.034340" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:47:19 GMT', 'Expires': 'Sat, 18 Apr 2026 22:47:19 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556039,"status":200} 
 </msg>
<msg time="2026-04-18T23:47:19.034623" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:47:18.633959" elapsed="0.400725"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:18.631825" elapsed="0.402967"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:19.035283" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:19.034857" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:18.631806" elapsed="0.403673"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.044507" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556039,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.038478" elapsed="0.006284"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.037816" elapsed="0.007204"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.037759" elapsed="0.007355"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.048457" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.045676" elapsed="0.002872"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.045241" elapsed="0.003483"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.045204" elapsed="0.003557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.049528" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.048949" elapsed="0.000607"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:19.049892" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:19.049627" elapsed="0.000454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.050847" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:19.050275" elapsed="0.000651"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.050108" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.049609" elapsed="0.001506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.051797" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.051278" elapsed="0.000546"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:19.052190" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:19.051894" elapsed="0.000467"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.053140" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:19.052549" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.052387" elapsed="0.000976"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.051876" elapsed="0.001511"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:47:19.053545" elapsed="0.000675"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:47:19.055210" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.054388" elapsed="0.000850"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:47:19.055394" elapsed="0.003166"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:47:19.036660" elapsed="0.021973"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:47:19.058815" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:19.058703" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.058684" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:47:19.061886" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556039,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:47:19.059048" elapsed="0.002868"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:47:19.061968" elapsed="0.000037"/>
</return>
<msg time="2026-04-18T23:47:19.062152" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556039,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:47:18.626573" elapsed="0.435606"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:47:19.062238" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:47:19.062387" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556039,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:47:18.623814" elapsed="0.438599"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.063248" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556039,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.062977" elapsed="0.000320"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.064346" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556039, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.063841" elapsed="0.000567"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:47:19.064459" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:47:19.064624" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556039, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:47:19.063504" elapsed="0.001146"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:19.065064" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:19.064821" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:19.065460" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:19.065250" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:47:19.065534" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:47:19.065683" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:47:19.062627" elapsed="0.003081"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:47:19.065885" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:19.065776" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.065759" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.073446" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.073197" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.073888" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.073645" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:47:19.083867" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:47:19.083945" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:47:19 GMT', 'Expires': 'Sat, 18 Apr 2026 22:47:19 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556039,"status":200} 
 </msg>
<msg time="2026-04-18T23:47:19.084074" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:47:19.076267" elapsed="0.007835"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.073995" elapsed="0.010150"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:19.084323" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:19.084171" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.073977" elapsed="0.010429"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.088235" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556039,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.085585" elapsed="0.002744"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.085347" elapsed="0.003086"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.085328" elapsed="0.003132"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.092396" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.088782" elapsed="0.003746"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.088516" elapsed="0.004181"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.088500" elapsed="0.004238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.093760" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.092976" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:19.094384" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:19.093902" elapsed="0.000736"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.095761" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:19.094916" elapsed="0.000959"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.094677" elapsed="0.001433"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.093876" elapsed="0.002270"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.097179" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.096384" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:19.097699" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:47:19.097320" elapsed="0.000629"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.099120" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:47:19.098285" elapsed="0.000950"/>
</kw>
<status status="PASS" start="2026-04-18T23:47:19.097987" elapsed="0.001461"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.097293" elapsed="0.002190"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:47:19.099707" elapsed="0.001007"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:47:19.101955" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.100960" elapsed="0.001022"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:47:19.102188" elapsed="0.002988"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:47:19.084910" elapsed="0.020330"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:47:19.105415" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:47:19.105309" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.105290" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:47:19.108388" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:47:19.105630" elapsed="0.002787"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:47:19.108469" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:47:19.108623" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:47:19.068735" elapsed="0.039928"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:47:19.108720" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:47:19.108865" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:47:19.066167" elapsed="0.042724"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.109724" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556039,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.109470" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.110807" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556039, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:47:19.110409" elapsed="0.000426"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:47:19.110883" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:47:19.111103" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556039, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:47:19.109978" elapsed="0.001184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:19.111546" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:19.111323" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:47:19.111944" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:47:19.111727" elapsed="0.000242"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:47:19.112016" elapsed="0.000043"/>
</return>
<msg time="2026-04-18T23:47:19.112184" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:47:19.109113" elapsed="0.003095"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-18T23:47:19.112251" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:47:19.112396" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-18T23:47:18.622328" elapsed="0.490092"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-18T23:47:19.112599" elapsed="0.000056"/>
</continue>
<status status="PASS" start="2026-04-18T23:47:19.112488" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-18T23:47:19.112471" elapsed="0.000241"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:47:19.112863" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:47:18.622097" elapsed="0.490821"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.114524" level="INFO">${session} = ClusterManagement__session_3</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-18T23:47:19.114225" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:47:19.114595" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:47:19.114741" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:47:19.113868" elapsed="0.000897"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.122210" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.121938" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:47:19.122647" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:47:19.122408" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:49:24.184773" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:47:19.124899" elapsed="125.065742">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:47:19.122754" elapsed="125.068104">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.191453" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:24.190944" elapsed="0.000664"/>
</branch>
<status status="FAIL" start="2026-04-18T23:47:19.122736" elapsed="125.068927">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.193071" elapsed="0.000076"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:49:24.193415" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:24.193324" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:49:24.193280" elapsed="0.000282"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.193892" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:49:24.194094" elapsed="0.000043"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:47:19.117505" elapsed="125.076854">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:49:24.194521" elapsed="0.000037"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-18T23:47:19.114971" elapsed="125.079771">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.195465" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:49:24.195764" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:24.195680" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:49:24.195641" elapsed="0.000266"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.196479" elapsed="0.000059"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.196828" elapsed="0.000025"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-18T23:49:24.196898" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-18T23:47:19.113488" elapsed="125.083516">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-18T23:49:24.197146" elapsed="0.000019"/>
</continue>
<status status="NOT RUN" start="2026-04-18T23:49:24.197106" elapsed="0.000094"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:49:24.197088" elapsed="0.000139"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.197376" elapsed="0.000022"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-18T23:47:19.113086" elapsed="125.084367">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:47:18.196729" elapsed="126.000786">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-18T23:47:18.194421" elapsed="126.003193">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:47:18.193909" elapsed="126.003766">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-18T23:47:18.193874" elapsed="126.003834">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-18T23:49:24.197978" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:24.197774" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:49:24.197758" elapsed="0.000319"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-18T23:49:24.198360" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:24.198132" elapsed="0.000288"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:49:24.198116" elapsed="0.000327"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-18T23:47:18.193185" elapsed="126.005339">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.218563" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:49:34.218089" elapsed="0.000508"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.219110" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:49:34.218779" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:49:34.219185" elapsed="0.000037"/>
</return>
<msg time="2026-04-18T23:49:34.219454" level="INFO">${index_list} = [1, 2, 3]</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-18T23:49:34.217651" elapsed="0.001829"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.221052" 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-18T23:49:34.220739" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:49:34.221127" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:49:34.221272" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:49:34.220396" elapsed="0.000900"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.228971" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.228704" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.229435" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.229191" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:49:34.239767" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:49:34.239892" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:49:34 GMT', 'Expires': 'Sat, 18 Apr 2026 22:49:34 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556174,"status":200} 
 </msg>
<msg time="2026-04-18T23:49:34.240069" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:49:34.231669" elapsed="0.008436"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.229545" elapsed="0.010621"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.240408" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.240201" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.229527" elapsed="0.010996"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.245670" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556174,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.242135" elapsed="0.003664"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.241792" elapsed="0.004143"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.241767" elapsed="0.004208"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.249927" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.246393" elapsed="0.003673"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.246067" elapsed="0.004138"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.246045" elapsed="0.004194"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.251200" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.250471" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.251663" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.251325" elapsed="0.000574"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.252930" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.252182" elapsed="0.000901"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.251938" elapsed="0.001332"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.251299" elapsed="0.002003"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.254204" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.253519" elapsed="0.000718"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.254662" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.254325" elapsed="0.000561"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.255951" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.255186" elapsed="0.000885"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.254924" elapsed="0.001341"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.254300" elapsed="0.001998"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:49:34.256506" elapsed="0.000882"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:49:34.258666" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.257609" elapsed="0.001137"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.258958" elapsed="0.004232"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:49:34.241245" elapsed="0.022025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:49:34.263502" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:34.263364" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.263337" elapsed="0.000257"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:49:34.267540" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:49:34.263804" elapsed="0.003775"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:49:34.267644" elapsed="0.000039"/>
</return>
<msg time="2026-04-18T23:49:34.267874" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:49:34.224267" elapsed="0.043643"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:49:34.267990" elapsed="0.000034"/>
</return>
<msg time="2026-04-18T23:49:34.268205" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:49:34.221587" elapsed="0.046652"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.269324" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.268977" elapsed="0.000415"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.270638" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.270124" elapsed="0.000548"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:49:34.270738" elapsed="0.000038"/>
</return>
<msg time="2026-04-18T23:49:34.270944" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:49:34.269666" elapsed="0.001314"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.271528" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.271240" elapsed="0.000327"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.272090" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.271773" elapsed="0.000354"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:49:34.272191" elapsed="0.000035"/>
</return>
<msg time="2026-04-18T23:49:34.272385" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:49:34.268518" elapsed="0.003899"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:49:34.272642" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:34.272501" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.272478" elapsed="0.000249"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.285441" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.285056" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.286125" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.285741" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:49:34.297704" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:49:34.297788" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:49:34 GMT', 'Expires': 'Sat, 18 Apr 2026 22:49:34 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556174,"status":200} 
 </msg>
<msg time="2026-04-18T23:49:34.297919" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:49:34.291060" elapsed="0.006890"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.286339" elapsed="0.011656"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.298199" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.298023" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.286309" elapsed="0.011976"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.302163" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556174,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.299474" elapsed="0.002785"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.299226" elapsed="0.003141"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.299207" elapsed="0.003187"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.305695" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.302695" elapsed="0.003136"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.302450" elapsed="0.003539"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.302434" elapsed="0.003616"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.307098" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.306294" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.307628" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.307244" elapsed="0.000671"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.309233" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.308224" elapsed="0.001130"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.307957" elapsed="0.001650"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.307217" elapsed="0.002428"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.310696" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.309893" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.311421" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.310837" elapsed="0.000851"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.312865" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.312011" elapsed="0.000977"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.311727" elapsed="0.001559"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.310811" elapsed="0.002512"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:49:34.313552" elapsed="0.001053"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:49:34.316119" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.314853" elapsed="0.001306"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.316391" elapsed="0.003265"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:49:34.298779" elapsed="0.020999"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:49:34.319964" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:34.319851" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.319832" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:49:34.322943" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:49:34.320197" elapsed="0.002777"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:49:34.323042" elapsed="0.000034"/>
</return>
<msg time="2026-04-18T23:49:34.323206" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:49:34.276913" elapsed="0.046319"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:49:34.323289" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:49:34.323436" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:49:34.272997" elapsed="0.050465"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.324454" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.324126" elapsed="0.000392"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.326043" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.325514" elapsed="0.000565"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:49:34.326147" elapsed="0.000038"/>
</return>
<msg time="2026-04-18T23:49:34.326356" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:49:34.324805" elapsed="0.001586"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.326880" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.326597" elapsed="0.000319"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.327416" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.327143" elapsed="0.000304"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:49:34.327508" elapsed="0.000038"/>
</return>
<msg time="2026-04-18T23:49:34.327701" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:49:34.323674" elapsed="0.004061"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-18T23:49:34.327826" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:49:34.328016" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-18T23:49:34.219998" elapsed="0.108066"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-18T23:49:34.328294" elapsed="0.000045"/>
</continue>
<status status="PASS" start="2026-04-18T23:49:34.328155" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.328131" elapsed="0.000281"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.328608" elapsed="0.000028"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:49:34.219737" elapsed="0.108941"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.330831" level="INFO">${session} = ClusterManagement__session_2</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-18T23:49:34.330440" elapsed="0.000424"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:49:34.330965" elapsed="0.000039"/>
</return>
<msg time="2026-04-18T23:49:34.331183" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:49:34.329959" elapsed="0.001257"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.341225" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.340882" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.341803" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.341490" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:49:34.360399" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:49:34.360514" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:49:34 GMT', 'Expires': 'Sat, 18 Apr 2026 22:49:34 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556174,"status":200} 
 </msg>
<msg time="2026-04-18T23:49:34.360684" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:49:34.344826" elapsed="0.015896"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.341948" elapsed="0.018842"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.361109" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.360830" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.341919" elapsed="0.019307"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.366609" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556174,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.362902" elapsed="0.003832"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.362562" elapsed="0.004312"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.362534" elapsed="0.004378"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.371061" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.367376" elapsed="0.003797"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.366992" elapsed="0.004316"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.366970" elapsed="0.004374"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.373275" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.371578" elapsed="0.001785"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.374356" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.373583" elapsed="0.001166"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.376617" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.375214" elapsed="0.001581"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.374814" elapsed="0.002409"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.373523" elapsed="0.003754"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.378831" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.377641" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.379659" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.379084" elapsed="0.001027"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.382058" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.380575" elapsed="0.001680"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.380178" elapsed="0.002431"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.379008" elapsed="0.003658"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:49:34.383088" elapsed="0.001694"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:49:34.387218" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.385332" elapsed="0.001947"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.387628" elapsed="0.004233"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:49:34.361941" elapsed="0.029993"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:49:34.392144" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:34.392010" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.391990" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:49:34.395197" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:49:34.392367" elapsed="0.002860"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:49:34.395280" elapsed="0.000041"/>
</return>
<msg time="2026-04-18T23:49:34.395451" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:49:34.334822" elapsed="0.060656"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:49:34.395535" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:49:34.395683" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:49:34.331496" elapsed="0.064213"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.396709" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.396443" elapsed="0.000315"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.397784" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.397381" elapsed="0.000431"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:49:34.397862" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:49:34.398022" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:49:34.396968" elapsed="0.001096"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.398443" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.398221" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.398837" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.398629" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:49:34.398909" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:49:34.399072" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:49:34.396048" elapsed="0.003049"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:49:34.399272" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:34.399164" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.399147" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.406891" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.406637" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.407398" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.407149" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:49:34.417167" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:49:34.417246" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:49:34 GMT', 'Expires': 'Sat, 18 Apr 2026 22:49:34 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556174,"status":200} 
 </msg>
<msg time="2026-04-18T23:49:34.417396" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:49:34.409798" elapsed="0.007627"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.407510" elapsed="0.009958"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.417648" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.417495" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.407491" elapsed="0.010241"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.422297" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556174,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.418919" elapsed="0.003513"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.418678" elapsed="0.003900"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.418659" elapsed="0.003957"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.426804" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.423064" elapsed="0.003868"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.422698" elapsed="0.004422"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.422674" elapsed="0.004486"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.428156" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.427387" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.428651" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.428292" elapsed="0.000598"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.429970" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.429174" elapsed="0.000929"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.428926" elapsed="0.001647"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.428266" elapsed="0.002380"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.432417" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.431181" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.433246" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:49:34.432638" elapsed="0.000990"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.435388" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:49:34.434077" elapsed="0.001487"/>
</kw>
<status status="PASS" start="2026-04-18T23:49:34.433687" elapsed="0.002222"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.432597" elapsed="0.003365"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:49:34.436342" elapsed="0.001481"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:49:34.440078" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.438221" elapsed="0.001898"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.440398" elapsed="0.004589"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:49:34.418254" elapsed="0.026850"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:49:34.445370" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:49:34.445209" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.445181" elapsed="0.000286"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:49:34.449793" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:49:34.445683" elapsed="0.004152"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:49:34.449914" elapsed="0.000044"/>
</return>
<msg time="2026-04-18T23:49:34.450167" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:49:34.402158" elapsed="0.048049"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:49:34.450292" elapsed="0.000038"/>
</return>
<msg time="2026-04-18T23:49:34.450508" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:49:34.399537" elapsed="0.051010"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.451866" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556174,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.451463" elapsed="0.000469"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.452893" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:49:34.452500" elapsed="0.000421"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:49:34.452970" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:49:34.453144" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556174, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:49:34.452154" elapsed="0.001016"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.453544" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.453323" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:49:34.453933" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:49:34.453723" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:49:34.454004" elapsed="0.000041"/>
</return>
<msg time="2026-04-18T23:49:34.454169" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:49:34.450856" elapsed="0.003337"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-18T23:49:34.454235" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:49:34.454388" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-18T23:49:34.329229" elapsed="0.125183"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-18T23:49:34.454598" elapsed="0.000037"/>
</continue>
<status status="PASS" start="2026-04-18T23:49:34.454483" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-18T23:49:34.454465" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:49:34.454837" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:49:34.328862" elapsed="0.126029"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.456613" level="INFO">${session} = ClusterManagement__session_3</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-18T23:49:34.456315" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:49:34.456684" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:49:34.456831" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:49:34.455957" elapsed="0.000898"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.464336" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.464088" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:49:34.464776" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:49:34.464536" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:51:39.527418" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:49:34.466995" elapsed="125.064368">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:49:34.464883" elapsed="125.066689">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.532199" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:39.531669" elapsed="0.000682"/>
</branch>
<status status="FAIL" start="2026-04-18T23:49:34.464865" elapsed="125.067540">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.533661" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:51:39.533999" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:39.533911" elapsed="0.000470"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:51:39.533869" elapsed="0.000619"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.534969" elapsed="0.000125"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:51:39.535226" elapsed="0.000044"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:49:34.459578" elapsed="125.075960">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:51:39.535703" elapsed="0.000037"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-18T23:49:34.457080" elapsed="125.078878">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.536574" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:51:39.536886" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:39.536801" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:51:39.536757" elapsed="0.000267"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.537500" elapsed="0.000055"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.537985" elapsed="0.000151"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-18T23:51:39.538242" elapsed="0.000037"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-18T23:49:34.455520" elapsed="125.082954">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-18T23:51:39.538737" elapsed="0.000036"/>
</continue>
<status status="NOT RUN" start="2026-04-18T23:51:39.538652" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:51:39.538613" elapsed="0.000259"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.539219" elapsed="0.000048"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-18T23:49:34.455101" elapsed="125.084278">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:49:34.219541" elapsed="125.320130">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-18T23:49:34.217225" elapsed="125.322669">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:49:34.216821" elapsed="125.323238">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-18T23:49:34.216786" elapsed="125.323347">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-18T23:51:39.540742" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:39.540287" elapsed="0.000573"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:51:39.540249" elapsed="0.000663"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-18T23:51:39.541527" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:39.541057" elapsed="0.000593"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:51:39.540995" elapsed="0.000707"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-18T23:49:34.216020" elapsed="125.325857">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.560019" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:51:49.559552" elapsed="0.000516"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.560550" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:51:49.560240" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:51:49.560623" elapsed="0.000037"/>
</return>
<msg time="2026-04-18T23:51:49.560788" level="INFO">${index_list} = [1, 2, 3]</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-18T23:51:49.559130" elapsed="0.001682"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.562321" 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-18T23:51:49.562009" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:51:49.562394" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:51:49.562540" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:51:49.561670" elapsed="0.000894"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.570382" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.570122" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.570868" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.570594" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:51:49.580698" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:51:49.580806" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:51:49 GMT', 'Expires': 'Sat, 18 Apr 2026 22:51:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556309,"status":200} 
 </msg>
<msg time="2026-04-18T23:51:49.580962" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:51:49.573164" elapsed="0.007834"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.570985" elapsed="0.010097"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.581332" elapsed="0.000097"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.581119" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.570961" elapsed="0.010562"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.586942" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556309,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.583232" elapsed="0.003897"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.582849" elapsed="0.004432"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.582823" elapsed="0.004497"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.590468" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.587739" elapsed="0.002820"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.587399" elapsed="0.003268"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.587376" elapsed="0.003318"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.591457" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.590879" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.591819" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.591555" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.592777" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.592215" elapsed="0.000639"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.592019" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.591537" elapsed="0.001492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.593729" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.593224" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.594099" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.593826" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.595020" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.594462" elapsed="0.000676"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.594299" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.593808" elapsed="0.001502"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:51:49.595467" elapsed="0.000703"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:51:49.597206" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.596338" elapsed="0.000895"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.597390" elapsed="0.003032"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:51:49.582254" elapsed="0.018232"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:51:49.600664" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:49.600556" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.600538" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:51:49.603712" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:51:49.600879" elapsed="0.002862"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:51:49.603793" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:51:49.603951" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:51:49.565421" elapsed="0.038556"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:51:49.604096" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:51:49.604250" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:51:49.562773" elapsed="0.041503"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.605115" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.604839" elapsed="0.000328"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.606285" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.605756" elapsed="0.000558"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:51:49.606364" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:51:49.606528" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:51:49.605413" elapsed="0.001141"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.606935" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.606714" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.607508" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.607144" elapsed="0.000390"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:51:49.607583" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:51:49.607732" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:51:49.604488" elapsed="0.003268"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:51:49.607929" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:49.607822" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.607805" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.615533" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.615286" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.615968" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.615730" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:51:49.624103" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:51:49.624181" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:51:49 GMT', 'Expires': 'Sat, 18 Apr 2026 22:51:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556309,"status":200} 
 </msg>
<msg time="2026-04-18T23:51:49.624292" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:51:49.618207" elapsed="0.006110"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.616094" elapsed="0.008265"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.624532" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.624383" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.616075" elapsed="0.008540"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.628883" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776556309,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.625811" elapsed="0.003204"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.625538" elapsed="0.003676"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.625520" elapsed="0.003733"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.633512" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.629666" elapsed="0.003969"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.629332" elapsed="0.004455"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.629309" elapsed="0.004515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.634786" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.634070" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.635334" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.634921" elapsed="0.000654"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.636382" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.635792" elapsed="0.000667"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.635610" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.634896" elapsed="0.001733"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.637334" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.636788" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.637681" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.637429" elapsed="0.000420"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.638612" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.638051" elapsed="0.000643"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.637874" elapsed="0.000965"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.637412" elapsed="0.001452"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:51:49.639064" elapsed="0.000707"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:51:49.640798" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.639940" elapsed="0.000888"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.640984" elapsed="0.003191"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:51:49.625122" elapsed="0.019118"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:51:49.644414" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:49.644308" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.644290" elapsed="0.000188"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:51:49.647392" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:51:49.644619" elapsed="0.002802"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:51:49.647472" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:51:49.647628" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:51:49.610766" elapsed="0.036888"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:51:49.647709" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:51:49.647852" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:51:49.608225" elapsed="0.039652"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.648745" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.648496" elapsed="0.000298"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.649812" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.649422" elapsed="0.000418"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:51:49.649889" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:51:49.650062" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:51:49.648998" elapsed="0.001092"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.650463" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.650244" elapsed="0.000245"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.650848" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.650641" elapsed="0.000231"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:51:49.650919" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:51:49.651084" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:51:49.648148" elapsed="0.002961"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-18T23:51:49.651152" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:51:49.651324" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-18T23:51:49.561301" elapsed="0.090047"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-18T23:51:49.651524" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-18T23:51:49.651416" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.651399" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.651757" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:51:49.561072" elapsed="0.090739"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.653233" level="INFO">${session} = ClusterManagement__session_2</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-18T23:51:49.652914" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:51:49.653305" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:51:49.653448" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:51:49.652576" elapsed="0.000897"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.661137" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.660875" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.661575" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.661336" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:51:49.673708" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:51:49.673816" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:51:49 GMT', 'Expires': 'Sat, 18 Apr 2026 22:51:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556309,"status":200} 
 </msg>
<msg time="2026-04-18T23:51:49.674019" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:51:49.663800" elapsed="0.010291"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.661683" elapsed="0.012472"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.674409" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.674191" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.661665" elapsed="0.012864"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.680115" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556309,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.676316" elapsed="0.003934"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.675948" elapsed="0.004450"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.675920" elapsed="0.004515"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.684389" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.680854" elapsed="0.003626"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.680515" elapsed="0.004070"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.680491" elapsed="0.004122"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.685324" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.684780" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.685684" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.685423" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.686628" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.686062" elapsed="0.000645"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.685881" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.685404" elapsed="0.001471"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.687616" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.687065" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.687971" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.687714" elapsed="0.000486"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.688945" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.688390" elapsed="0.000633"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.688227" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.687695" elapsed="0.001513"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:51:49.689360" elapsed="0.000653"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:51:49.690984" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.690197" elapsed="0.000814"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.691195" elapsed="0.003210"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:51:49.675274" elapsed="0.019196"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:51:49.694665" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:49.694539" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.694520" elapsed="0.000235"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:51:49.697877" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:51:49.694933" elapsed="0.002973"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:51:49.697957" elapsed="0.000034"/>
</return>
<msg time="2026-04-18T23:51:49.698137" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:51:49.656423" elapsed="0.041772"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:51:49.698255" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:51:49.698405" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:51:49.653685" elapsed="0.044746"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.699298" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.699015" elapsed="0.000332"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.700421" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.699974" elapsed="0.000475"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:51:49.700499" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:51:49.700657" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:51:49.699629" elapsed="0.001054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.701103" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.700838" elapsed="0.000294"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.701497" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.701287" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:51:49.701569" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:51:49.701721" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:51:49.698655" elapsed="0.003089"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:51:49.701918" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:49.701811" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.701793" elapsed="0.000187"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.709466" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.709220" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.709905" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.709664" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:51:49.717963" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:51:49.718198" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sat, 18 Apr 2026 23:51:49 GMT', 'Expires': 'Sat, 18 Apr 2026 22:51:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556309,"status":200} 
 </msg>
<msg time="2026-04-18T23:51:49.718319" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:51:49.712283" elapsed="0.006063"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.710012" elapsed="0.008376"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.718583" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.718413" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.709994" elapsed="0.008716"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.723785" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776556309,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.720054" elapsed="0.003938"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.719686" elapsed="0.004480"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.719659" elapsed="0.004546"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.728229" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.724617" elapsed="0.003701"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.724285" elapsed="0.004135"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.724261" elapsed="0.004187"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.729134" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.728608" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.729484" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.729230" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.730430" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.729840" elapsed="0.000669"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.729678" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.729212" elapsed="0.001467"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.731386" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.730840" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.731764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:51:49.731504" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.732684" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:51:49.732135" elapsed="0.000628"/>
</kw>
<status status="PASS" start="2026-04-18T23:51:49.731958" elapsed="0.000946"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.731481" elapsed="0.001447"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:51:49.733095" elapsed="0.000649"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:51:49.734710" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.733907" elapsed="0.000830"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.734890" elapsed="0.003053"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:51:49.719216" elapsed="0.018790"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:51:49.738213" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:51:49.738105" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.738086" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-18T23:51:49.741243" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-18T23:51:49.738420" elapsed="0.002852"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-18T23:51:49.741323" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:51:49.741477" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-18T23:51:49.704739" elapsed="0.036763"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:51:49.741558" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:51:49.741736" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-18T23:51:49.702202" elapsed="0.039560"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.742603" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776556309,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.742353" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.743720" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:51:49.743288" elapsed="0.000461"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-18T23:51:49.743798" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:51:49.743956" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776556309, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-18T23:51:49.742857" elapsed="0.001125"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.744378" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.744150" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:51:49.744769" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:51:49.744560" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-18T23:51:49.744841" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:51:49.744988" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-18T23:51:49.741972" elapsed="0.003040"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-18T23:51:49.745072" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:51:49.745218" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-18T23:51:49.652202" elapsed="0.093040"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-18T23:51:49.745414" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-18T23:51:49.745307" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-18T23:51:49.745290" elapsed="0.000205"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:51:49.745641" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:51:49.651950" elapsed="0.093746"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.748523" level="INFO">${session} = ClusterManagement__session_3</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-18T23:51:49.748207" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:51:49.748598" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:51:49.748747" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:51:49.747846" elapsed="0.000926"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.756238" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.755970" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:51:49.756679" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:51:49.756437" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:53:54.856274" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:51:49.758912" elapsed="125.099231">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:51:49.756788" elapsed="125.101463">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.858558" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:54.858296" elapsed="0.000407"/>
</branch>
<status status="FAIL" start="2026-04-18T23:51:49.756769" elapsed="125.101962">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.859354" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:53:54.859512" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:54.859470" elapsed="0.000087"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:53:54.859450" elapsed="0.000129"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.859726" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:53:54.859799" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:51:49.751485" elapsed="125.108428">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:53:54.859987" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-18T23:51:49.748981" elapsed="125.111119">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.860326" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-18T23:53:54.860454" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:54.860418" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:53:54.860401" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.860713" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.860934" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-18T23:53:54.861001" elapsed="0.000049"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-18T23:51:49.747417" elapsed="125.113725">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-18T23:53:54.861271" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-18T23:53:54.861231" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:53:54.861206" elapsed="0.000127"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.861480" elapsed="0.000021"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-18T23:51:49.745845" elapsed="125.115723">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:51:49.560869" elapsed="125.300784">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-18T23:51:49.558656" elapsed="125.303138">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:51:49.558301" elapsed="125.303577">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-18T23:51:49.558273" elapsed="125.303651">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-18T23:53:54.862351" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:54.862022" elapsed="0.000409"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:53:54.861997" elapsed="0.000488"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-18T23:53:54.862872" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:54.862563" elapsed="0.000392"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:53:54.862540" elapsed="0.000448"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-18T23:51:49.557748" elapsed="125.305377">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-18T23:53:54.863285" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-18T23:46:47.982797" elapsed="426.880681">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:53:54.869171" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:53:54.868472" elapsed="0.000741"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:53:54.869914" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:53:54.869455" elapsed="0.000497"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:53:54.870021" elapsed="0.000078"/>
</return>
<msg time="2026-04-18T23:53:54.870289" level="INFO">${index_list} = [1, 2, 3]</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-18T23:53:54.867832" elapsed="0.002494"/>
</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-18T23:53:54.871918" level="INFO">${member_ip} = 10.30.171.9</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-18T23:53:54.871522" elapsed="0.000434"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:54.873276" 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-18T23:53:54.873426" 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-18T23:53:54.873005" elapsed="0.000461"/>
</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-18T23:53:54.876147" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:54.875855" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:54.875837" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:54.876506" 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-18T23:53:54.876604" 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-18T23:53:54.876378" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:54.877293" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:54.876790" elapsed="0.000550"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:54.877913" level="INFO">${conn_id} = 545</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:53:54.877497" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:53:54.879052" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:53:54.879148" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:53:54.878633" 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-18T23:53:54.879334" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:53:54.881382" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:53:55.468488" 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 Sat Apr 18 23:53:55 UTC 2026

  System load:  0.33               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:46:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:53:54.880728" elapsed="0.587983"/>
</kw>
<msg time="2026-04-18T23:53:55.468924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:54.880043" elapsed="0.589051"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:53:54.878174" elapsed="0.591041"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:53:55.469770" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-18T23:53:55.482185" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-18T23:53:55.482463" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:53:55.482573" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:53:55.469478" elapsed="0.013151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:55.483066" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:55.484777" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:55.484057" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:55.485435" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:55.485114" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:55.485017" elapsed="0.000605"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:53:55.485978" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-18T23:53:55.485739" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:55.485706" elapsed="0.000496"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:55.486274" 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-18T23:53:55.493121" elapsed="0.001311"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:53:55.494667" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:55.494975" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:55.486981" elapsed="0.008159"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:53:54.875307" elapsed="0.619924"/>
</kw>
<msg time="2026-04-18T23:53:55.495284" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:54.874744" elapsed="0.620603"/>
</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-18T23:53:54.874181" elapsed="0.621243"/>
</kw>
<msg time="2026-04-18T23:53:55.495465" 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-18T23:53:54.873650" elapsed="0.621871"/>
</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-18T23:53:55.498484" elapsed="0.000309"/>
</kw>
<kw name="Open 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-18T23:53:55.498957" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:55.499266" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:55.495808" elapsed="0.003603"/>
</kw>
<msg time="2026-04-18T23:53:55.499502" 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-18T23:53:54.872296" elapsed="0.627231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:55.499949" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:55.499703" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:53:55.500052" 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-18T23:53:54.870855" elapsed="0.629325"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:53:54.870597" elapsed="0.629622"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:55.501243" level="INFO">${member_ip} = 10.30.171.128</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-18T23:53:55.500944" elapsed="0.000326"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:55.502152" 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-18T23:53:55.502251" 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-18T23:53:55.501991" 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-18T23:53:55.505200" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:55.504889" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:55.504871" elapsed="0.000411"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:55.505555" 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-18T23:53:55.505654" 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-18T23:53:55.505428" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:55.506318" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:55.505831" elapsed="0.000534"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:55.506929" level="INFO">${conn_id} = 548</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:53:55.506521" elapsed="0.000435"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:53:55.508047" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:53:55.508143" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:53:55.507644" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:55.508324" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:53:55.510235" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:53:56.105755" 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 Sat Apr 18 23:53:55 UTC 2026

  System load:  0.15               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:46:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:53:55.509603" elapsed="0.596359"/>
</kw>
<msg time="2026-04-18T23:53:56.106113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:55.509017" elapsed="0.597245"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:53:55.507187" elapsed="0.599195"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.106918" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-18T23:53:56.119812" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-18T23:53:56.120011" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:53:56.120133" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:53:56.106641" elapsed="0.013538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:56.120425" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.121520" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:56.121056" elapsed="0.000531"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:56.121909" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:56.121705" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.121669" elapsed="0.000346"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:53:56.122293" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-18T23:53:56.122137" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.122112" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:56.122583" 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-18T23:53:56.129286" elapsed="0.001273"/>
</kw>
<kw name="Open 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-18T23:53:56.130924" elapsed="0.000367"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:56.131619" elapsed="0.000213"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:56.123086" elapsed="0.008860"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:53:55.504334" elapsed="0.627853"/>
</kw>
<msg time="2026-04-18T23:53:56.132308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:55.503753" elapsed="0.628695"/>
</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-18T23:53:55.502936" elapsed="0.629685"/>
</kw>
<msg time="2026-04-18T23:53:56.132712" 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-18T23:53:55.502432" elapsed="0.630404"/>
</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-18T23:53:56.136750" 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-18T23:53:56.137250" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:56.137554" 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-18T23:53:56.133505" elapsed="0.004198"/>
</kw>
<msg time="2026-04-18T23:53:56.137797" 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-18T23:53:55.501529" elapsed="0.636294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.138300" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:56.138017" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:53:56.138385" 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-18T23:53:55.500505" elapsed="0.638004"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:53:55.500319" elapsed="0.638227"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:56.139563" level="INFO">${member_ip} = 10.30.171.206</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-18T23:53:56.139285" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.140465" 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-18T23:53:56.140565" 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-18T23:53:56.140327" elapsed="0.000263"/>
</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-18T23:53:56.143245" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:56.142949" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.142930" elapsed="0.000394"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.143600" 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-18T23:53:56.143700" 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-18T23:53:56.143469" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.144361" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:56.143879" elapsed="0.000584"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.145058" level="INFO">${conn_id} = 551</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:53:56.144622" elapsed="0.000464"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.146208" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:53:56.146305" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:53:56.145760" elapsed="0.000570"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:56.146488" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.148556" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:53:56.738235" 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 Sat Apr 18 23:53:56 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:46:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:53:56.147924" elapsed="0.590519"/>
</kw>
<msg time="2026-04-18T23:53:56.738567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:56.147376" elapsed="0.591328"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:53:56.145303" elapsed="0.593514"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.739357" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-18T23:53:56.751628" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-18T23:53:56.751751" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:53:56.751794" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-18T23:53:56.739090" elapsed="0.012728"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:56.751993" elapsed="0.000246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.752792" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:56.752451" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:56.753111" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:56.752927" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.752900" elapsed="0.000284"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:53:56.753345" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-18T23:53:56.753239" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.753223" elapsed="0.000208"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:56.753465" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:56.756545" elapsed="0.000614"/>
</kw>
<kw name="Open 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-18T23:53:56.757326" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:56.757633" 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-18T23:53:56.753792" elapsed="0.003990"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:53:56.142395" elapsed="0.615477"/>
</kw>
<msg time="2026-04-18T23:53:56.757925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:56.141820" elapsed="0.616169"/>
</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-18T23:53:56.141266" elapsed="0.616826"/>
</kw>
<msg time="2026-04-18T23:53:56.758134" 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-18T23:53:56.140744" elapsed="0.617511"/>
</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-18T23:53:56.761376" 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-18T23:53:56.762045" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:56.762484" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:56.758551" elapsed="0.004146"/>
</kw>
<msg time="2026-04-18T23:53:56.762830" 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-18T23:53:56.139803" elapsed="0.623064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.763556" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:56.763192" elapsed="0.000423"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:53:56.763678" elapsed="0.000044"/>
</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-18T23:53:56.138825" elapsed="0.625036"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:53:56.138643" elapsed="0.625273"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:53:54.870407" elapsed="1.893558"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-18T23:53:54.863932" elapsed="1.900137"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-18T23:46:46.803479" elapsed="429.960713">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:56.764448" elapsed="0.000031"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-18T23:53:56.764811" elapsed="0.000034"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:56.765371" elapsed="0.000033"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:56.765690" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:56.766116" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:56.765825" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:53:56.765800" elapsed="0.000440"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-18T23:53:56.765110" elapsed="0.001165"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-18T23:53:56.764926" elapsed="0.001386"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:56.766545" elapsed="0.000031"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-18T23:46:46.798081" elapsed="429.968728">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-18T23:53:56.767851" elapsed="0.000478"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-18T23:40:20.317055" elapsed="816.451330"/>
</suite>
<suite id="s1-s2" name="Rpc Provider Precedence" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence.robot">
<kw name="Setup_Keyword" 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-18T23:53:56.862294" 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-18T23:53:56.858331" elapsed="0.004016"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-18T23:53:56.858112" elapsed="0.004301"/>
</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-18T23:53:56.867213" 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-18T23:53:56.863548" elapsed="0.003693"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-18T23:53:56.867439" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:56.867323" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.867301" elapsed="0.000204"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.868002" 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-18T23:53:56.867650" elapsed="0.000410"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.868524" level="INFO">${cluster_size} = 3</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-18T23:53:56.868216" 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-18T23:53:56.869051" elapsed="0.000305"/>
</kw>
<msg time="2026-04-18T23:53:56.869453" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:53:56.869499" level="INFO">${possibly_int_of_members} = 3</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-18T23:53:56.868707" elapsed="0.000815"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.870067" level="INFO">${int_of_members} = 3</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-18T23:53:56.869684" elapsed="0.000410"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.871137" 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-18T23:53:56.870836" elapsed="0.000328"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.871561" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-18T23:53:56.871306" elapsed="0.000283"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.872044" 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-18T23:53:56.871742" 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-18T23:53:56.875063" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.875752" level="INFO">${member_ip} = 10.30.171.9</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-18T23:53:56.875428" elapsed="0.000352"/>
</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-18T23:53:56.875927" elapsed="0.000244"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.876937" 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-18T23:53:56.876644" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:53:56.877009" elapsed="0.000048"/>
</return>
<msg time="2026-04-18T23:53:56.877181" 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-18T23:53:56.876358" elapsed="0.000849"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:53:56.877936" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6d3a6d0&gt;, timeout=125, 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-18T23:53:56.877357" elapsed="0.000750"/>
</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-18T23:53:56.878266" elapsed="0.000192"/>
</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-18T23:53:56.874455" elapsed="0.004063"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:53:56.874274" elapsed="0.004288"/>
</iter>
<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-18T23:53:56.879415" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.880095" level="INFO">${member_ip} = 10.30.171.128</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-18T23:53:56.879755" elapsed="0.000367"/>
</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-18T23:53:56.880267" elapsed="0.000219"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.881350" level="INFO">${session} = ClusterManagement__session_2</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-18T23:53:56.880959" elapsed="0.000420"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:53:56.881426" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:53:56.881578" level="INFO">${session_alias} = ClusterManagement__session_2</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-18T23:53:56.880675" elapsed="0.000928"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:53:56.882173" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6d30410&gt;, timeout=125, 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-18T23:53:56.881749" elapsed="0.000531"/>
</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-18T23:53:56.882438" elapsed="0.000211"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-18T23:53:56.878824" elapsed="0.003885"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:53:56.878648" elapsed="0.004105"/>
</iter>
<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-18T23:53:56.883656" elapsed="0.000193"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.884340" level="INFO">${member_ip} = 10.30.171.206</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-18T23:53:56.883998" elapsed="0.000369"/>
</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-18T23:53:56.884510" elapsed="0.000281"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.885685" level="INFO">${session} = ClusterManagement__session_3</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-18T23:53:56.885366" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:53:56.885756" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:53:56.885904" level="INFO">${session_alias} = ClusterManagement__session_3</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-18T23:53:56.885012" elapsed="0.000916"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:53:56.886497" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6d5a910&gt;, timeout=125, 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-18T23:53:56.886093" elapsed="0.000508"/>
</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-18T23:53:56.886774" elapsed="0.000189"/>
</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-18T23:53:56.883062" elapsed="0.003983"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:53:56.882860" elapsed="0.004229"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-18T23:53:56.872127" elapsed="0.014993"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.887675" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-18T23:53:56.887273" elapsed="0.000444"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.888276" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-18T23:53:56.887869" elapsed="0.000448"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.888854" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-18T23:53:56.888468" elapsed="0.000428"/>
</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-18T23:53:56.870393" elapsed="0.018559"/>
</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-18T23:53:56.863210" elapsed="0.025797"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:53:56.889205" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:56.889088" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.889069" elapsed="0.000202"/>
</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-18T23:53:56.893689" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:53:56.893302" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.894191" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:53:56.893871" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:53:56.894263" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:53:56.894417" level="INFO">${index_list} = [1, 2, 3]</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-18T23:53:56.892960" elapsed="0.001481"/>
</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-18T23:53:56.895436" level="INFO">${member_ip} = 10.30.171.9</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-18T23:53:56.895172" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.896187" 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-18T23:53:56.896287" 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-18T23:53:56.896013" elapsed="0.000300"/>
</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-18T23:53:56.899576" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:56.898995" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:56.898976" elapsed="0.000720"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.900334" 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-18T23:53:56.900562" 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-18T23:53:56.899887" elapsed="0.000726"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.901530" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:56.900864" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.902954" 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-18T23:53:56.902065" elapsed="0.000940"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:53:56.904673" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:53:56.904844" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:53:56.904324" 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-18T23:53:56.905225" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:53:56.906924" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:53:57.224066" 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 Sat Apr 18 23:53:55 UTC 2026

  System load:  0.33               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:53:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-18T23:53:56.906470" elapsed="0.317755"/>
</kw>
<msg time="2026-04-18T23:53:57.224313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:56.906009" elapsed="0.318462"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:53:56.903455" elapsed="0.321177"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.225571" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-18T23:53:57.238521" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-18T23:53:57.238758" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:53:57.238909" 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-18T23:53:57.225084" elapsed="0.013897"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:57.239450" elapsed="0.000759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.241885" 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-18T23:53:57.241011" elapsed="0.001047"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:57.242673" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:57.242307" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:57.242268" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:53:57.243377" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-18T23:53:57.243048" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:57.243003" elapsed="0.000641"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:57.243730" 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-18T23:53:57.248571" elapsed="0.000682"/>
</kw>
<kw name="Open 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-18T23:53:57.249664" elapsed="0.000435"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:57.250475" elapsed="0.000325"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:57.244454" elapsed="0.006447"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:53:56.898060" elapsed="0.353118"/>
</kw>
<msg time="2026-04-18T23:53:57.251261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:56.897425" elapsed="0.353913"/>
</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-18T23:53:56.896944" elapsed="0.354512"/>
</kw>
<msg time="2026-04-18T23:53:57.251515" 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-18T23:53:56.896461" elapsed="0.355121"/>
</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-18T23:53:57.255358" elapsed="0.000316"/>
</kw>
<kw name="Open 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-18T23:53:57.255831" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:57.256145" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:57.251997" elapsed="0.004299"/>
</kw>
<msg time="2026-04-18T23:53:57.256389" 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-18T23:53:56.895669" elapsed="0.360745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.256863" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:57.256598" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:53:57.256948" 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-18T23:53:56.894805" elapsed="0.362283"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:53:56.894636" elapsed="0.362490"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:57.258058" level="INFO">${member_ip} = 10.30.171.128</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-18T23:53:57.257765" elapsed="0.000320"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.258802" 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-18T23:53:57.258943" 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-18T23:53:57.258653" elapsed="0.000317"/>
</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-18T23:53:57.262471" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:57.261910" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:57.261890" elapsed="0.000701"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.263221" 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-18T23:53:57.263445" 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-18T23:53:57.262782" elapsed="0.000713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.264406" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:57.263748" elapsed="0.000759"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.265671" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:53:57.264767" elapsed="0.000953"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.267450" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:53:57.267623" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:53:57.267090" elapsed="0.000575"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:57.267989" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.269578" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:53:57.596142" 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 Sat Apr 18 23:53:55 UTC 2026

  System load:  0.15               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:53:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-18T23:53:57.269234" elapsed="0.327043"/>
</kw>
<msg time="2026-04-18T23:53:57.596357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:57.268787" elapsed="0.327714"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:53:57.266163" elapsed="0.330483"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.597513" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-18T23:53:57.610405" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-18T23:53:57.610667" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:53:57.610888" 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-18T23:53:57.597011" elapsed="0.013982"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:57.611683" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.615213" 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-18T23:53:57.613960" elapsed="0.001476"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:57.616408" elapsed="0.000105"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:57.615784" elapsed="0.000912"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:57.615733" elapsed="0.001043"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:53:57.617460" elapsed="0.000132"/>
</return>
<status status="PASS" start="2026-04-18T23:53:57.616949" elapsed="0.000902"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:57.616912" elapsed="0.001026"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:57.618095" 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-18T23:53:57.623432" elapsed="0.000458"/>
</kw>
<kw name="Open 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-18T23:53:57.624229" elapsed="0.000296"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:57.624800" elapsed="0.000236"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:57.619117" elapsed="0.005991"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:53:57.260979" elapsed="0.364299"/>
</kw>
<msg time="2026-04-18T23:53:57.625332" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:57.260179" elapsed="0.365204"/>
</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-18T23:53:57.259628" elapsed="0.365835"/>
</kw>
<msg time="2026-04-18T23:53:57.625502" 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-18T23:53:57.259136" elapsed="0.366411"/>
</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-18T23:53:57.628230" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:53:57.628706" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:57.628990" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:57.625826" elapsed="0.003330"/>
</kw>
<msg time="2026-04-18T23:53:57.629245" 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-18T23:53:57.258294" elapsed="0.370976"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.629678" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:57.629434" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:53:57.629760" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-18T23:53:57.257396" elapsed="0.372488"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:53:57.257220" elapsed="0.372701"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:57.630827" level="INFO">${member_ip} = 10.30.171.206</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-18T23:53:57.630559" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.631575" 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-18T23:53:57.631678" 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-18T23:53:57.631438" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:53:57.634947" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:57.634415" elapsed="0.000631"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:57.634396" elapsed="0.000689"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.635700" 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-18T23:53:57.635924" 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-18T23:53:57.635278" elapsed="0.000696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.636984" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:57.636340" elapsed="0.000767"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.638787" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:53:57.637363" elapsed="0.001603"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-18T23:53:57.641052" level="INFO">Length is 0.</msg>
<msg time="2026-04-18T23:53:57.641229" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-18T23:53:57.640629" elapsed="0.000643"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:57.641600" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.643394" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-18T23:53:57.997171" 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 Sat Apr 18 23:53:56 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:53:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-18T23:53:57.643057" elapsed="0.354255"/>
</kw>
<msg time="2026-04-18T23:53:57.997395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:57.642417" elapsed="0.355126"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-18T23:53:57.639689" elapsed="0.358000"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-18T23:53:57.998533" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-18T23:53:58.011390" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-18T23:53:58.011633" level="INFO">${stdout} = </msg>
<msg time="2026-04-18T23:53:58.011782" 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-18T23:53:57.998063" elapsed="0.013790"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:58.012317" elapsed="0.000741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:58.014666" 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-18T23:53:58.013846" elapsed="0.000968"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:58.015484" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:58.015088" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:58.015048" elapsed="0.000673"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-18T23:53:58.016188" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-04-18T23:53:58.015845" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:58.015820" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-18T23:53:58.016531" 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-18T23:53:58.021356" 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-18T23:53:58.022485" elapsed="0.000409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:58.023409" elapsed="0.000320"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:58.017251" elapsed="0.006579"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-18T23:53:57.633507" elapsed="0.390594"/>
</kw>
<msg time="2026-04-18T23:53:58.024288" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:53:57.632889" elapsed="0.391480"/>
</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-18T23:53:57.632415" elapsed="0.392073"/>
</kw>
<msg time="2026-04-18T23:53:58.024548" 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-18T23:53:57.631850" elapsed="0.392765"/>
</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-18T23:53:58.028291" elapsed="0.000307"/>
</kw>
<kw name="Open 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-18T23:53:58.028759" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:58.029061" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:53:58.025052" elapsed="0.004160"/>
</kw>
<msg time="2026-04-18T23:53:58.029303" 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-18T23:53:57.631078" elapsed="0.398249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:58.029746" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:58.029498" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-18T23:53:58.029831" 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-18T23:53:57.630208" elapsed="0.399752"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:53:57.630016" elapsed="0.399987"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:53:56.894494" elapsed="1.135559"/>
</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-18T23:53:56.889480" elapsed="1.140634"/>
</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-18T23:53:58.030271" elapsed="0.000211"/>
</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-18T23:53:58.043721" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:58.043606" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:58.043586" elapsed="0.000207"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:58.044112" 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-18T23:53:58.044221" 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-18T23:53:58.043945" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:58.044659" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:58.044394" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:58.045107" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:58.044848" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:58.045892" 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-18T23:53:58.045661" elapsed="0.000358">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-18T23:53:58.046142" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:53:58.046188" 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-18T23:53:58.045301" elapsed="0.000910"/>
</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-18T23:53:58.046504" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:58.046286" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:58.046268" elapsed="0.000332"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:58.047359" level="INFO">${ip_address} = 10.30.171.9</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-18T23:53:58.047094" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:53:58.047433" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:53:58.047582" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:53:58.046809" elapsed="0.000798"/>
</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-18T23:53:58.047819" elapsed="0.000432"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:58.048521" level="INFO">index=10
host=10.30.171.9
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-18T23:53:58.048622" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-18T23:53:58.048413" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:53:58.048790" elapsed="0.002190"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:53:58.051432" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:53:58.966721" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-18T23:53:58.051171" elapsed="0.915704"/>
</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-18T23:53:58.970572" 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-18T23:53:58.971110" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:53:58.971421" 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-18T23:53:58.968065" elapsed="0.003510"/>
</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-18T23:53:58.967313" elapsed="0.004309"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-18T23:53:58.043304" elapsed="0.928371"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-18T23:53:58.031253" elapsed="0.940470"/>
</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-18T23:53:58.030817" elapsed="0.940958"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:53:58.030685" elapsed="0.941131"/>
</iter>
<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-18T23:53:58.984587" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:53:58.984472" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:58.984449" elapsed="0.000210"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:58.984946" 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-18T23:53:58.985067" 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-18T23:53:58.984812" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:58.985501" 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-18T23:53:58.985241" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:53:58.985937" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:53:58.985689" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:58.986725" level="FAIL">Dictionary does not contain key '2'.</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-18T23:53:58.986498" elapsed="0.000327">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-18T23:53:58.986930" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:53:58.987047" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-18T23:53:58.986147" elapsed="0.000926"/>
</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-18T23:53:58.987369" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:53:58.987151" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-18T23:53:58.987132" elapsed="0.000337"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:53:58.988240" level="INFO">${ip_address} = 10.30.171.128</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-18T23:53:58.987943" elapsed="0.000324"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:53:58.988315" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:53:58.988470" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:53:58.987677" elapsed="0.000818"/>
</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-18T23:53:58.988642" elapsed="0.000416"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:53:58.989325" level="INFO">index=12
host=10.30.171.128
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-18T23:53:58.989425" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-18T23:53:58.989219" elapsed="0.000232"/>
</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-18T23:53:58.989591" elapsed="0.002320"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:53:58.992354" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:54:00.173828" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-18T23:53:58.992094" elapsed="1.181893"/>
</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-18T23:54:00.177530" 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-18T23:54:00.178075" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:00.178386" 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-18T23:54:00.175210" elapsed="0.003331"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-18T23:54:00.174449" elapsed="0.004139"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-18T23:53:58.984185" elapsed="1.194455"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-18T23:53:58.972453" elapsed="1.206235"/>
</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-18T23:53:58.972090" elapsed="1.206655"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:53:58.971931" elapsed="1.206855"/>
</iter>
<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-18T23:54:00.191703" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:00.191577" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:00.191552" elapsed="0.000227"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:00.192179" 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-18T23:54:00.192286" 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-18T23:54:00.192037" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:00.192722" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:00.192459" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:00.193170" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:00.192910" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:00.193956" level="FAIL">Dictionary does not contain key '3'.</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-18T23:54:00.193723" elapsed="0.000362">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-18T23:54:00.194194" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:54:00.194239" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-18T23:54:00.193364" elapsed="0.000899"/>
</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-18T23:54:00.194561" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:00.194338" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:00.194320" elapsed="0.000339"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:00.195612" level="INFO">${ip_address} = 10.30.171.206</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-18T23:54:00.195333" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:54:00.195688" elapsed="0.000033"/>
</return>
<msg time="2026-04-18T23:54:00.195843" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:54:00.194853" elapsed="0.001015"/>
</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-18T23:54:00.196015" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:00.196699" level="INFO">index=14
host=10.30.171.206
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-18T23:54:00.196798" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-18T23:54:00.196594" elapsed="0.000230"/>
</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-18T23:54:00.196964" elapsed="0.002172"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:54:00.199566" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:54:10.307737" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:00.199304" elapsed="10.110069">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:10.312972" 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-18T23:54:10.313533" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:10.313850" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:54:10.310667" elapsed="0.003343"/>
</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-18T23:54:10.309920" elapsed="0.004160"/>
</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-18T23:54:00.191197" elapsed="10.122975">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:54:10.314272" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:00.179427" elapsed="10.134937">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:00.179046" elapsed="10.135484"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:54:00.178895" elapsed="10.135682"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-18T23:53:58.030539" elapsed="12.284077"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-18T23:53:56.862746" elapsed="13.451933"/>
</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-18T23:54:10.317557" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.317413" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.317388" elapsed="0.000242"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:10.322240" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.322134" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.322116" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:54:10.323254" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:54:10.322852" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:54:10.323733" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:54:10.323433" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:54:10.323803" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:54:10.323959" level="INFO">${index_list} = [1, 2, 3]</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-18T23:54:10.322528" elapsed="0.001455"/>
</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-18T23:54:10.329220" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.329114" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.329095" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:10.330517" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.330379" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.330362" elapsed="0.000224"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:10.331086" 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-18T23:54:10.330724" elapsed="0.000392"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:10.331500" 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-18T23:54:10.331273" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:54:10.414243" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:54:10.332186" elapsed="0.082298"/>
</kw>
<msg time="2026-04-18T23:54:10.414702" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:54:10.414753" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.331676" elapsed="0.083115"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:54:10.537384" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:54:10.415825" elapsed="0.121761"/>
</kw>
<msg time="2026-04-18T23:54:10.537744" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:54:10.537800" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.415160" elapsed="0.122680"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:10.538327" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:10.537961" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.537921" elapsed="0.000736"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:10.539324" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:10.538828" elapsed="0.000595"/>
</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-18T23:54:10.539734" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:10.539492" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.539473" elapsed="0.000453"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:54:10.539970" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:54:10.542302" elapsed="0.000867"/>
</kw>
<kw name="Open 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-18T23:54:10.543520" elapsed="0.000319"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:10.544204" elapsed="0.000247"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:54:10.541429" elapsed="0.003116"/>
</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-18T23:54:10.540425" elapsed="0.004260"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:54:10.330086" elapsed="0.214703"/>
</kw>
<msg time="2026-04-18T23:54:10.544932" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:10.544996" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.329434" elapsed="0.215623"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:54:10.545253" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:54:10.545142" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.545122" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:10.545765" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:10.546144" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:54:10.546217" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:54:10.328806" elapsed="0.217519"/>
</kw>
<msg time="2026-04-18T23:54:10.546419" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:10.546462" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.324369" elapsed="0.222130"/>
</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-18T23:54:10.546818" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:10.546575" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.546558" elapsed="0.000335"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:54:10.324228" elapsed="0.222689"/>
</iter>
<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-18T23:54:10.552339" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.552230" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.552212" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:10.553617" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.553477" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.553459" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:10.554163" level="INFO">${karaf_connection_index} = 12</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-18T23:54:10.553823" elapsed="0.000367"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:10.554614" 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-18T23:54:10.554381" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:54:10.640979" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:54:10.555371" elapsed="0.085765"/>
</kw>
<msg time="2026-04-18T23:54:10.641271" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:54:10.641349" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.554794" elapsed="0.086594"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:54:10.766200" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:54:10.642100" elapsed="0.124310"/>
</kw>
<msg time="2026-04-18T23:54:10.766570" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:54:10.766619" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.641562" elapsed="0.125095"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:10.767104" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:10.766755" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.766731" elapsed="0.000555"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:10.767822" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:10.767429" elapsed="0.000484"/>
</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-18T23:54:10.768278" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:10.767982" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.767963" elapsed="0.000513"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:54:10.768511" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:54:10.770785" elapsed="0.000653"/>
</kw>
<kw name="Open 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-18T23:54:10.771779" elapsed="0.000315"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:10.772444" elapsed="0.000239"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:54:10.769890" elapsed="0.002883"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-18T23:54:10.768813" elapsed="0.004096"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:54:10.553191" elapsed="0.219819"/>
</kw>
<msg time="2026-04-18T23:54:10.773131" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:10.773180" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.552557" elapsed="0.220660"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:54:10.773403" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-18T23:54:10.773295" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.773276" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:10.773897" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:10.774479" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:54:10.774614" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:54:10.551902" elapsed="0.222828"/>
</kw>
<msg time="2026-04-18T23:54:10.774824" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:10.774867" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:10.547356" elapsed="0.227547"/>
</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-18T23:54:10.775441" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:10.774978" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.774961" elapsed="0.000559"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:54:10.547214" elapsed="0.228330"/>
</iter>
<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-18T23:54:10.780814" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.780703" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.780684" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:10.782108" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:10.781960" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:10.781942" elapsed="0.000235"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:10.782656" level="INFO">${karaf_connection_index} = 14</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-18T23:54:10.782326" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:10.783157" 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-18T23:54:10.782836" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:54:20.784872" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-18T23:54:10.783855" elapsed="10.002001">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:54:20.786121" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-18T23:54:20.786173" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-18T23:54:10.783350" elapsed="10.002847"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:54:30.787811" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-18T23:54:20.787154" elapsed="10.001453">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:54:30.788824" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-18T23:54:30.788873" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-18T23:54:20.786488" elapsed="10.002410"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-18T23:54:30.790230" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence.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-18T23:54:30.789407" elapsed="0.000911">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence.robot"</status>
</kw>
<status status="FAIL" start="2026-04-18T23:54:30.789021" elapsed="0.001438">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence.robot"</status>
</branch>
<status status="FAIL" start="2026-04-18T23:54:30.788986" elapsed="0.001512">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence.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-18T23:54:30.790700" 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-18T23:54:30.790949" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:30.790797" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:54:30.790778" elapsed="0.000412"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-18T23:54:30.791231" 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-18T23:54:30.793454" elapsed="0.002274"/>
</kw>
<kw name="Open 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-18T23:54:30.796179" elapsed="0.000326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:30.796901" elapsed="0.000266"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:54:30.792563" elapsed="0.004703"/>
</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-18T23:54:30.791554" elapsed="0.005850"/>
</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-18T23:54:10.781668" elapsed="20.015824">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence.robot"</status>
</kw>
<msg time="2026-04-18T23:54:30.797604" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:54:30.797650" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_precedence.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-18T23:54:10.781053" elapsed="20.016622"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:54:30.797872" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:30.797754" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:30.797735" elapsed="0.000204"/>
</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-18T23:54:30.798741" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:30.798612" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:30.798594" elapsed="0.000226"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:30.799176" 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-18T23:54:30.799285" 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-18T23:54:30.798986" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:30.799731" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:30.799461" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:30.800264" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:30.799926" elapsed="0.000392"/>
</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-18T23:54:30.800839" elapsed="0.000311"/>
</kw>
<msg time="2026-04-18T23:54:30.801248" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:30.801295" level="INFO">${old_connection_index} = 14</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-18T23:54:30.800474" elapsed="0.000845"/>
</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-18T23:54:30.802453" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:54:40.804819" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-18T23:54:30.803807" elapsed="10.001788">No match found for '
' in 10 seconds
Output:
.</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-18T23:54:30.802990" elapsed="10.002749"/>
</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-18T23:54:40.807206" elapsed="0.000340"/>
</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-18T23:54:40.806212" elapsed="0.001410"/>
</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-18T23:54:30.801614" elapsed="10.006096"/>
</kw>
<status status="PASS" start="2026-04-18T23:54:30.801395" elapsed="10.006371"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:30.801376" elapsed="10.006428"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:40.808945" level="INFO">${ip_address} = 10.30.171.206</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-18T23:54:40.808470" elapsed="0.000503"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:54:40.809030" elapsed="0.000050"/>
</return>
<msg time="2026-04-18T23:54:40.809209" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:54:40.808122" elapsed="0.001112"/>
</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-18T23:54:40.809390" elapsed="0.000428"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:40.810179" level="INFO">index=19
host=10.30.171.206
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-18T23:54:40.810371" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-18T23:54:40.810016" elapsed="0.000383"/>
</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-18T23:54:40.810545" elapsed="0.061642"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:54:40.872731" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:54:50.896962" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:40.872418" elapsed="10.025312">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:50.901449" elapsed="0.000687"/>
</kw>
<kw name="Open 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-18T23:54:50.902387" elapsed="0.000444"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:50.903057" elapsed="0.000188"/>
</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-18T23:54:50.898912" elapsed="0.004440"/>
</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-18T23:54:50.898223" elapsed="0.005179"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-18T23:54:30.798359" elapsed="20.105149">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:50.903878" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:54:50.903956" elapsed="0.000022"/>
</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-18T23:54:10.780399" elapsed="40.123692">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:54:50.904206" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:54:50.904249" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:10.775811" elapsed="40.128461"/>
</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-18T23:54:50.904621" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:50.904367" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:50.904345" elapsed="0.000354"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:54:10.775675" elapsed="40.129049"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:54:10.324053" elapsed="40.580703"/>
</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-18T23:54:10.321830" elapsed="40.582984"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-18T23:54:10.315323" elapsed="40.589548"/>
</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-18T23:54:10.314833" elapsed="40.590080"/>
</kw>
<arg>http_timeout=125</arg>
<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-18T23:53:56.857781" elapsed="54.047187"/>
</kw>
<kw name="DrbCommons_Init" owner="DrbCommons">
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.908688" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:54:50.908300" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.909191" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:54:50.908869" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:54:50.909263" elapsed="0.000032"/>
</return>
<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-18T23:54:50.906136" elapsed="0.003256"/>
</kw>
<msg time="2026-04-18T23:54:50.909499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:54:50.905740" elapsed="0.003808"/>
</kw>
<msg time="2026-04-18T23:54:50.909648" level="INFO">${all_indices} = [1, 2, 3]</msg>
<var>${all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-18T23:54:50.905531" elapsed="0.004142"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.910172" level="INFO">${all_indices} = [1, 2, 3]</msg>
<arg>${all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-18T23:54:50.909826" elapsed="0.000389"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.913381" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:54:50.912986" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.913866" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:54:50.913562" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:54:50.913938" elapsed="0.000028"/>
</return>
<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-18T23:54:50.910980" elapsed="0.003101"/>
</kw>
<msg time="2026-04-18T23:54:50.914119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:54:50.910611" elapsed="0.003552"/>
</kw>
<msg time="2026-04-18T23:54:50.914262" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<var>${nonregistered_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-18T23:54:50.910403" elapsed="0.003884"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.914765" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<arg>${nonregistered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-18T23:54:50.914439" elapsed="0.000368"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.917998" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:54:50.917620" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.918631" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:54:50.918194" elapsed="0.000464"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:54:50.918704" elapsed="0.000237"/>
</return>
<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-18T23:54:50.915655" elapsed="0.003475"/>
</kw>
<msg time="2026-04-18T23:54:50.919168" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:54:50.915219" elapsed="0.003994"/>
</kw>
<msg time="2026-04-18T23:54:50.919312" level="INFO">${active_indices} = [1, 2, 3]</msg>
<var>${active_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-18T23:54:50.914995" elapsed="0.004342"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.919861" level="INFO">${active_indices} = [1, 2, 3]</msg>
<arg>${active_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-18T23:54:50.919499" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.920307" level="INFO">${possible_constants} = []</msg>
<var>${possible_constants}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-18T23:54:50.920064" elapsed="0.000269"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.920797" level="INFO">${possible_constants} = []</msg>
<arg>${possible_constants}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-18T23:54:50.920481" elapsed="0.000358"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.921236" level="INFO">${registered_indices} = []</msg>
<var>${registered_indices}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-18T23:54:50.920982" elapsed="0.000280"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.921727" level="INFO">${registered_indices} = []</msg>
<arg>${registered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-18T23:54:50.921411" elapsed="0.000357"/>
</kw>
<doc>Resouce initial keyword. Creates several suite variables which are
used in other keywords and should be used im the test suites.</doc>
<status status="PASS" start="2026-04-18T23:54:50.905274" elapsed="0.016549"/>
</kw>
<doc>Create a list of possible constant responses on the node with unregistered rpc.</doc>
<status status="PASS" start="2026-04-18T23:53:56.857491" elapsed="54.064383"/>
</kw>
<test id="s1-s2-t1" name="Register_Rpc_On_Each_Node" line="31">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-18T23:54:50.925187" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-18T23:54:50.924913" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:50.926433" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:50.926323" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:50.926303" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:50.931377" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:50.931215" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:50.931196" elapsed="0.000255"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.932433" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:54:50.932055" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:54:50.932926" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:54:50.932612" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:54:50.932997" elapsed="0.000042"/>
</return>
<msg time="2026-04-18T23:54:50.933168" level="INFO">${index_list} = [1, 2, 3]</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-18T23:54:50.931671" elapsed="0.001522"/>
</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-18T23:54:50.938415" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:50.938308" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:50.938289" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:50.939641" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:50.939535" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:50.939516" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:50.940161" 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-18T23:54:50.939845" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:50.940554" 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-18T23:54:50.940340" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:54:51.003416" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:54:50.941072" elapsed="0.062483"/>
</kw>
<msg time="2026-04-18T23:54:51.003722" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:54:51.003770" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-18T23:54:50.940731" elapsed="0.063094"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:54:51.053943" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:54:51.004376" elapsed="0.049842"/>
</kw>
<msg time="2026-04-18T23:54:51.054463" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:54:51.054512" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:51.004001" elapsed="0.050549"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:51.055078" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:51.054679" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.054638" elapsed="0.000534"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:51.055789" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:51.055317" elapsed="0.000550"/>
</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-18T23:54:51.056170" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:51.055936" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.055918" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:54:51.056289" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:54:51.057859" elapsed="0.000789"/>
</kw>
<kw name="Open 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-18T23:54:51.058999" elapsed="0.000529"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:51.059797" elapsed="0.000383"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:54:51.057217" elapsed="0.003064"/>
</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-18T23:54:51.056614" elapsed="0.003731"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:54:50.939206" elapsed="0.121241"/>
</kw>
<msg time="2026-04-18T23:54:51.060543" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:51.060589" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:50.938631" elapsed="0.121996"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:54:51.060811" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:54:51.060703" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.060685" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:51.061319" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:51.061656" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:54:51.061726" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:54:50.937960" elapsed="0.123874"/>
</kw>
<msg time="2026-04-18T23:54:51.061929" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:51.061973" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:50.933558" elapsed="0.128452"/>
</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-18T23:54:51.062347" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:51.062102" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.062084" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:54:50.933421" elapsed="0.129026"/>
</iter>
<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-18T23:54:51.067940" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:51.067832" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.067812" 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-18T23:54:51.069224" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:51.069113" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.069093" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:51.069734" level="INFO">${karaf_connection_index} = 12</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-18T23:54:51.069431" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:51.070144" 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-18T23:54:51.069913" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:54:51.130596" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:54:51.070650" elapsed="0.060065"/>
</kw>
<msg time="2026-04-18T23:54:51.130882" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:54:51.130950" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-18T23:54:51.070322" elapsed="0.060665"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:54:51.175093" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:54:51.131559" elapsed="0.043644"/>
</kw>
<msg time="2026-04-18T23:54:51.175426" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:54:51.175474" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:51.131200" elapsed="0.044311"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:51.175873" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:51.175618" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.175592" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:54:51.176444" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:54:51.176118" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:51.176808" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:51.176588" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.176570" elapsed="0.000315"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:54:51.176918" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:54:51.178726" elapsed="0.000835"/>
</kw>
<kw name="Open 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-18T23:54:51.179875" elapsed="0.000510"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:54:51.180664" elapsed="0.000358"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:54:51.177958" elapsed="0.003190"/>
</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-18T23:54:51.177207" elapsed="0.004007"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:54:51.068754" elapsed="0.112562"/>
</kw>
<msg time="2026-04-18T23:54:51.181413" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:51.181460" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:51.068200" elapsed="0.113297"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:54:51.181703" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-18T23:54:51.181588" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.181567" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:51.182219" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:54:51.182558" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:54:51.182633" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:54:51.067461" elapsed="0.115281"/>
</kw>
<msg time="2026-04-18T23:54:51.182835" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:54:51.182879" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:51.062721" elapsed="0.120195"/>
</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-18T23:54:51.183257" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:54:51.182992" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.182975" elapsed="0.000357"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:54:51.062583" elapsed="0.120772"/>
</iter>
<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-18T23:54:51.188826" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:51.188713" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.188693" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:54:51.190120" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:54:51.189979" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-18T23:54:51.189962" elapsed="0.000273"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:54:51.190693" level="INFO">${karaf_connection_index} = 19</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-18T23:54:51.190377" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:54:51.191123" 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-18T23:54:51.190884" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:55:01.192477" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-18T23:54:51.191655" elapsed="10.001887">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:55:01.193839" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-18T23:55:01.193891" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-18T23:54:51.191304" elapsed="10.002611"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:55:11.195407" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-18T23:55:01.194691" elapsed="10.001687">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:55:11.196669" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-18T23:55:11.196721" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-18T23:55:01.194243" elapsed="10.002503"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-18T23:55:11.198006" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Register_Rpc_On_Each_Node"</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-18T23:55:11.197257" elapsed="0.000831">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Register_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-18T23:55:11.196872" elapsed="0.001580">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Register_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-18T23:55:11.196839" elapsed="0.001652">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Register_Rpc_On_Each_Node"</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-18T23:55:11.198657" 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-18T23:55:11.198886" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:11.198746" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:55:11.198728" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-18T23:55:11.199001" elapsed="0.000016"/>
</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-18T23:55:11.200546" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:55:11.201630" elapsed="0.000509"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:55:11.202405" elapsed="0.000364"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:55:11.199892" elapsed="0.002976"/>
</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-18T23:55:11.199316" elapsed="0.003616"/>
</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-18T23:54:51.189672" elapsed="20.013346">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Register_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-18T23:55:11.203145" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:55:11.203193" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Register_Rpc_On_Each_Node"</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-18T23:54:51.189104" elapsed="20.014118"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:55:11.203408" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:55:11.203299" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:11.203280" elapsed="0.000195"/>
</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-18T23:55:11.204325" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:55:11.204193" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:11.204170" elapsed="0.000231"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:55:11.204699" 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-18T23:55:11.204885" 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-18T23:55:11.204550" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:11.205364" level="INFO">{1: 10, 2: 12, 3: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:11.205091" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:11.205809" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:11.205561" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-18T23:55:11.206466" elapsed="0.000272"/>
</kw>
<msg time="2026-04-18T23:55:11.206838" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:55:11.206885" level="INFO">${old_connection_index} = 19</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-18T23:55:11.206007" elapsed="0.000902"/>
</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-18T23:55:11.207730" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:55:21.209672" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-18T23:55:11.208573" elapsed="10.002239">No match found for '
' in 10 seconds
Output:
.</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-18T23:55:11.208101" elapsed="10.002855"/>
</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-18T23:55:21.211935" elapsed="0.000485"/>
</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-18T23:55:21.211311" elapsed="0.001196"/>
</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-18T23:55:11.207221" elapsed="10.005336"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:11.206986" elapsed="10.005624"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:11.206967" elapsed="10.005680"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:55:21.213664" level="INFO">${ip_address} = 10.30.171.206</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-18T23:55:21.213341" elapsed="0.000350"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:55:21.213746" elapsed="0.000036"/>
</return>
<msg time="2026-04-18T23:55:21.213933" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:55:21.212893" 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-18T23:55:21.214161" elapsed="0.000433"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:55:21.214888" level="INFO">index=24
host=10.30.171.206
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-18T23:55:21.214991" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.206
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-18T23:55:21.214764" elapsed="0.000254"/>
</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-18T23:55:21.215320" elapsed="0.002565"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:55:21.218328" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:55:31.288012" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:55:21.218061" elapsed="10.070805">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:55:31.300877" elapsed="0.000552"/>
</kw>
<kw name="Open 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-18T23:55:31.301596" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:55:31.301921" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:55:31.290157" elapsed="0.011940"/>
</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-18T23:55:31.289408" elapsed="0.012744"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-18T23:55:11.203872" elapsed="20.098442">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:55:31.302686" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:55:31.302781" elapsed="0.000029"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-18T23:54:51.188355" elapsed="40.114580">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:55:31.303113" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:55:31.303177" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:54:51.183663" elapsed="40.119547"/>
</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-18T23:55:31.303568" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.303310" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.303288" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:54:51.183487" elapsed="40.120189"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:54:50.933248" elapsed="40.370462"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-18T23:54:50.930840" elapsed="40.372930"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-18T23:54:50.926009" elapsed="40.377820"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:54:50.925596" elapsed="40.378280"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-18T23:54:50.922526" elapsed="40.381423"/>
</kw>
<kw name="Register_Rpc_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.306349" 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-18T23:55:31.306043" elapsed="0.000333"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:55:31.306422" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:55:31.306571" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:55:31.305692" elapsed="0.000904"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.307390" level="INFO">&amp;{mapping} = { CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.306750" elapsed="0.000673"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.343873" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:31.343404" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:31.344820" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:31.344463" elapsed="0.000508">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:31.345219" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:31.344110" elapsed="0.001135"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.345838" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:31.345405" elapsed="0.000461"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:55:31.346203" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:55:31.346409" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:55:31.346021" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.346858" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.346589" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.348365" level="INFO">mapping: {'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.347733" elapsed="0.000757"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.349368" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.348747" elapsed="0.000660"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.350635" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-18T23:55:31.350186" elapsed="0.000482"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-18T23:55:31.351942" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.351525" elapsed="0.000444"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-18T23:55:31.352021" elapsed="0.000047"/>
</return>
<msg time="2026-04-18T23:55:31.352325" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-18T23:55:31.351106" elapsed="0.001252"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.352652" elapsed="0.000342"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-18T23:55:31.349884" elapsed="0.003200"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-18T23:55:31.349531" elapsed="0.003650"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-18T23:55:31.353352" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:55:31.353607" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-18T23:55:31.347331" elapsed="0.006302"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.346979" elapsed="0.006687"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.353834" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.353690" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.346959" elapsed="0.006951"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.354558" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:31.354064" elapsed="0.000521"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:55:31.354634" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:55:31.342746" elapsed="0.012009"/>
</kw>
<msg time="2026-04-18T23:55:31.354807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:31.329425" elapsed="0.025432"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.366906" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.379910" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.391622" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.391850" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.392019" elapsed="0.000036"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.392405" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.392258" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:55:31.392244" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.392614" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.392772" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.392928" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:55:31.392215" elapsed="0.000767"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:55:31.392112" elapsed="0.000895"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.393163" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:55:31.393239" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:55:31.393348" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:55:31.323722" elapsed="0.069652"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.417266" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:31.416813" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:31.418120" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:31.417779" elapsed="0.000486">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:31.418486" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:31.417450" elapsed="0.001062"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.419123" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:31.418669" elapsed="0.000481"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:55:31.419494" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:55:31.419631" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:55:31.419335" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.420085" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.419808" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-18T23:55:31.420547" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.420198" elapsed="0.000411"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.421264" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:31.420774" elapsed="0.000516"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.420634" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.420180" elapsed="0.001166"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.422444" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:31.421484" elapsed="0.001021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:55:31.422557" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:55:31.416187" elapsed="0.006496"/>
</kw>
<msg time="2026-04-18T23:55:31.422735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:31.403961" elapsed="0.018821"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.434715" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.446827" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.458645" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.458833" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.459000" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.459377" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.459237" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:55:31.459223" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.459590" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.459751" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.459913" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:55:31.459194" elapsed="0.000771"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:55:31.459092" elapsed="0.000899"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.460146" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:55:31.460222" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:55:31.460337" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:55:31.403120" elapsed="0.057244"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:31.461723" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:31.461475" elapsed="0.000311">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:31.461876" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:31.461129" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.462225" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.461970" elapsed="0.000311"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.462780" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:31.462477" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.462305" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.461952" elapsed="0.000911"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.465211" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:31.463012" elapsed="0.002227"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-18T23:55:31.465292" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:55:31.465447" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-18T23:55:31.460788" elapsed="0.004683"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.466971" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.466725" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.467426" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.467182" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.467881" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.467630" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.468338" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.468087" elapsed="0.000294"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-18T23:55:31.469271" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-18T23:55:31.469013" elapsed="0.000291"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-18T23:55:31.469660" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-18T23:55:31.469466" elapsed="0.000220"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.469828" elapsed="0.000226"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.470619" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.470206" elapsed="0.000458"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-18T23:55:31.470707" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:55:31.470863" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-18T23:55:31.468576" elapsed="0.002312"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:55:31.939567" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-18T23:55:31.939729" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node01rwjw77sr6bbk1kewipq50iwyp0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 17-Apr-2026 23:55:31 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-18T23:55:31.940073" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:55:31.473074" elapsed="0.467065"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.470958" elapsed="0.469305"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.940784" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.940334" elapsed="0.000796"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.470940" elapsed="0.470243"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.948645" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.943854" elapsed="0.004836"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.943286" elapsed="0.005440"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.943229" elapsed="0.005522"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.951335" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:31.949022" elapsed="0.002361"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.948806" elapsed="0.002612"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.948789" elapsed="0.002654"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.952006" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:31.951611" elapsed="0.000447"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.952378" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.952132" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.952923" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:31.952618" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.952465" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.952113" elapsed="0.000893"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.953533" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:31.953173" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.953850" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.953628" elapsed="0.000278"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.954390" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:31.954096" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:31.953929" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.953610" elapsed="0.000861"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:31.954618" elapsed="0.000347"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:55:31.955481" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:31.955139" elapsed="0.000368"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.955655" elapsed="0.002274"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:55:31.942061" elapsed="0.015932"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-18T23:55:31.958194" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-18T23:55:31.958083" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.958063" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.958434" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:55:31.958500" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:55:31.960688" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-18T23:55:31.465789" elapsed="0.494926"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:55:31.960787" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:55:31.960940" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-18T23:55:31.312143" elapsed="0.648822"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:31.961358" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:31.961122" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:31.961104" elapsed="0.000344"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:55:31.961481" elapsed="0.000025"/>
</return>
<arg>${REGISTER_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-18T23:55:31.307680" elapsed="0.653923"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Register the get-constant rpc on the requested node with given constant.</doc>
<status status="PASS" start="2026-04-18T23:55:31.305250" elapsed="0.656417"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.962213" elapsed="0.000229"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-18T23:55:31.962587" elapsed="0.000152"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the [] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-18T23:55:31.961882" elapsed="0.000912"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.963332" elapsed="0.000191"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.963670" elapsed="0.000187"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-18T23:55:31.964001" elapsed="0.000167"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-18T23:55:31.964308" elapsed="0.000148"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-18T23:55:31.962971" elapsed="0.001538"/>
</kw>
<arg>${index}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-18T23:55:31.304873" elapsed="0.659686"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:55:31.304711" elapsed="0.659878"/>
</iter>
<iter>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.966517" level="INFO">${session} = ClusterManagement__session_2</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-18T23:55:31.966219" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:55:31.966590" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:55:31.966736" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:55:31.965867" elapsed="0.000894"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:55:31.967337" level="INFO">&amp;{mapping} = { CONSTANT=constant-2 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:55:31.966914" elapsed="0.000450"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.000128" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:31.999631" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.000966" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.000642" elapsed="0.000502">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:32.001373" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:32.000315" elapsed="0.001084"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.001993" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:32.001559" elapsed="0.000461"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.002353" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:55:32.002503" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:55:32.002192" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.002978" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.002712" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.004582" level="INFO">mapping: {'CONSTANT': 'constant-2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.003918" elapsed="0.000788"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.005598" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.004970" elapsed="0.000669"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.008395" level="INFO">${value} = constant-2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-18T23:55:32.006436" elapsed="0.001994"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-18T23:55:32.009523" level="INFO">${encoded} = constant-2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.009295" elapsed="0.000255"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-18T23:55:32.009602" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:55:32.009878" level="INFO">${encoded_value} = constant-2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-18T23:55:32.008838" elapsed="0.001074"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.010229" elapsed="0.000318"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-2</var>
<status status="PASS" start="2026-04-18T23:55:32.006150" elapsed="0.004453"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-18T23:55:32.005771" elapsed="0.004930"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-18T23:55:32.010878" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:55:32.011151" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-18T23:55:32.003503" elapsed="0.007675"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.003109" elapsed="0.008102"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.011382" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.011237" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.003090" elapsed="0.008368"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.012187" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:32.011611" elapsed="0.000604"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:55:32.012264" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:55:31.998980" elapsed="0.013407"/>
</kw>
<msg time="2026-04-18T23:55:32.012439" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:31.986743" elapsed="0.025746"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.024546" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.036514" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.048420" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.048666" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.048835" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.049212" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.049074" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:55:32.049058" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.049426" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.049585" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.049743" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:55:32.049012" elapsed="0.000783"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.048910" elapsed="0.000911"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.049959" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.050048" elapsed="0.000017"/>
</return>
<msg time="2026-04-18T23:55:32.050161" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:55:31.982590" elapsed="0.067597"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.074342" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.073893" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.075177" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.074852" elapsed="0.000476">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:32.075553" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:32.074525" elapsed="0.001054"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.076214" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:32.075739" elapsed="0.000503"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.076554" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:55:32.076713" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:55:32.076396" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.077184" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.076898" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-18T23:55:32.077622" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.077298" elapsed="0.000383"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.078338" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.077843" elapsed="0.000521"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.077705" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.077280" elapsed="0.001141"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.079357" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:32.078560" elapsed="0.000859"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:55:32.079472" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:55:32.073286" elapsed="0.006313"/>
</kw>
<msg time="2026-04-18T23:55:32.079652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:32.060925" elapsed="0.018775"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.091617" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.103473" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.115294" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.115487" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.115658" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.116099" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.115907" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:55:32.115891" elapsed="0.000297"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.116324" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.116488" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.116649" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:55:32.115857" elapsed="0.000851"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.115733" elapsed="0.001002"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.116873" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.116950" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:55:32.117132" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:55:32.059993" elapsed="0.057171"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.118476" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.118232" elapsed="0.000309">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:32.118635" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:32.117866" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.118973" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.118731" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.119536" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.119241" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.119074" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.118712" elapsed="0.000906"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.121987" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:32.119762" elapsed="0.002251"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-18T23:55:32.122082" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:55:32.122236" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-18T23:55:32.117541" elapsed="0.004719"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.123767" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.123509" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.124237" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.123958" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.124667" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.124427" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.125106" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.124851" elapsed="0.000298"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-18T23:55:32.125961" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-18T23:55:32.125764" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-18T23:55:32.126327" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-18T23:55:32.126150" elapsed="0.000202"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.126494" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.127113" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.126847" elapsed="0.000310"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-18T23:55:32.127201" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:55:32.127355" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-18T23:55:32.125367" elapsed="0.002012"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:55:32.603163" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-18T23:55:32.603323" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node0kthu5o3s9zvstt389a7gpj790.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 17-Apr-2026 23:55:32 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-18T23:55:32.603612" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:55:32.129660" elapsed="0.474015"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.127448" elapsed="0.476350"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.604303" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.603867" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.127431" elapsed="0.477194"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.611758" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.607189" elapsed="0.004615"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.606619" elapsed="0.005220"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.606575" elapsed="0.005289"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.614461" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.612165" elapsed="0.002343"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.611921" elapsed="0.002622"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.611904" elapsed="0.002664"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.615172" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:32.614739" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.615522" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.615287" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.616084" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.615755" elapsed="0.000357"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.615602" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.615263" elapsed="0.000905"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.616680" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:32.616318" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.617002" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.616774" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.617551" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.617258" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.617105" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.616756" elapsed="0.000876"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:32.617779" elapsed="0.000368"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:55:32.618629" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:32.618330" elapsed="0.000325"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.618801" elapsed="0.002312"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:55:32.605509" elapsed="0.015670"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-18T23:55:32.621363" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-18T23:55:32.621252" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.621233" elapsed="0.000225"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.621635" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.621725" elapsed="0.000016"/>
</return>
<msg time="2026-04-18T23:55:32.624102" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-18T23:55:32.122578" elapsed="0.501552"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:55:32.624203" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:55:32.624356" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-18T23:55:31.971928" elapsed="0.652453"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.624754" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.624521" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.624504" elapsed="0.000341"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:55:32.624878" elapsed="0.000025"/>
</return>
<arg>${REGISTER_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-18T23:55:31.967608" elapsed="0.657391"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Register the get-constant rpc on the requested node with given constant.</doc>
<status status="PASS" start="2026-04-18T23:55:31.965221" elapsed="0.659859"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.625609" elapsed="0.000227"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-18T23:55:32.625982" elapsed="0.000168"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-1'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-18T23:55:32.625298" elapsed="0.000907"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.626719" elapsed="0.000186"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.627067" elapsed="0.000197"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-18T23:55:32.627409" elapsed="0.000148"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-18T23:55:32.627696" elapsed="0.000154"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-18T23:55:32.626412" elapsed="0.001494"/>
</kw>
<arg>${index}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-18T23:55:31.964840" elapsed="0.663117"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:55:31.964682" elapsed="0.663306"/>
</iter>
<iter>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.629918" level="INFO">${session} = ClusterManagement__session_3</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-18T23:55:32.629615" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:55:32.629993" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:55:32.630160" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:55:32.629080" elapsed="0.001105"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.630752" level="INFO">&amp;{mapping} = { CONSTANT=constant-3 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.630352" elapsed="0.000427"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.663594" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.663161" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.664456" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.664135" elapsed="0.000478">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:32.664841" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:32.663778" elapsed="0.001089"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.665483" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:32.665026" elapsed="0.000484"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.665822" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:55:32.665977" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:55:32.665663" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.666498" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.666206" elapsed="0.000341"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.667974" level="INFO">mapping: {'CONSTANT': 'constant-3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.667386" elapsed="0.000738"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.668981" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.668380" elapsed="0.000642"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.670288" level="INFO">${value} = constant-3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-18T23:55:32.669813" elapsed="0.000509"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-18T23:55:32.671586" level="INFO">${encoded} = constant-3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.671356" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-18T23:55:32.671665" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:55:32.671935" level="INFO">${encoded_value} = constant-3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-18T23:55:32.670739" elapsed="0.001229"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.672281" elapsed="0.000315"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-3</var>
<status status="PASS" start="2026-04-18T23:55:32.669528" elapsed="0.003122"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-18T23:55:32.669173" elapsed="0.003572"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-18T23:55:32.672925" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:55:32.673212" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-18T23:55:32.666941" elapsed="0.006298"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.666614" elapsed="0.006657"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.673438" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.673296" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.666596" elapsed="0.006917"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.674178" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:32.673685" elapsed="0.000520"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:55:32.674254" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:55:32.662528" elapsed="0.011848"/>
</kw>
<msg time="2026-04-18T23:55:32.674428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:32.650200" elapsed="0.024307"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.686527" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.698428" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.710179" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.710423" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.710594" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.710979" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.710841" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:55:32.710826" elapsed="0.000255"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.711243" elapsed="0.000027"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.711416" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.711574" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:55:32.710795" elapsed="0.000832"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.710688" elapsed="0.000965"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.711793" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.711870" elapsed="0.000016"/>
</return>
<msg time="2026-04-18T23:55:32.711993" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:55:32.646081" elapsed="0.065937"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.735921" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.735482" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.736776" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.736461" elapsed="0.000469">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:32.737179" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:32.736130" elapsed="0.001075"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.737795" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:32.737362" elapsed="0.000460"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.738152" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:55:32.738358" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:55:32.737975" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.738841" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.738536" elapsed="0.000354"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-18T23:55:32.739348" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.738957" elapsed="0.000454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.740076" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.739576" elapsed="0.000528"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.739436" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.738938" elapsed="0.001222"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.741080" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-3&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:55:32.740298" elapsed="0.000847"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:55:32.741197" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:55:32.734856" elapsed="0.006469"/>
</kw>
<msg time="2026-04-18T23:55:32.741378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:55:32.722636" elapsed="0.018790"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.753326" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.765131" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.776984" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.777188" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.777356" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.777703" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.777569" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:55:32.777555" elapsed="0.000226"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.777912" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.778087" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.778247" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:55:32.777527" elapsed="0.000772"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.777429" elapsed="0.000895"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.778460" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:55:32.778535" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:55:32.778650" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-3&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:55:32.721760" elapsed="0.056918"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:55:32.779987" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.779751" elapsed="0.000316">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-18T23:55:32.780160" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:55:32.779419" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-18T23:55:32.780488" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:55:32.780253" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.781031" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:55:32.780732" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-18T23:55:32.780567" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-18T23:55:32.780235" elapsed="0.000893"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.783426" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:55:32.781271" elapsed="0.002181"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-18T23:55:32.783504" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:55:32.783656" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-18T23:55:32.779096" elapsed="0.004584"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.785194" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.784931" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.785618" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-3&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.785383" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.786063" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.785807" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.786486" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.786250" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-18T23:55:32.787372" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-18T23:55:32.787173" elapsed="0.000225"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-18T23:55:32.787717" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-18T23:55:32.787543" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:55:32.787883" elapsed="0.000221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:55:32.788496" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:55:32.788253" elapsed="0.000286"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-18T23:55:32.788582" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:55:32.788734" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-18T23:55:32.786721" elapsed="0.002037"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:57:37.879442" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.791021" elapsed="125.092298">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:55:32.788827" elapsed="125.094702">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:37.884074" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:37.883612" elapsed="0.000642"/>
</branch>
<status status="FAIL" start="2026-04-18T23:55:32.788810" elapsed="125.095500">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:37.885345" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-18T23:57:37.885830" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:37.885742" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:57:37.885691" elapsed="0.000284"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:37.886326" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:57:37.886477" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.784001" elapsed="125.102715">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:57:37.886898" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.635303" elapsed="125.251836">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:37.887786" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:37.887397" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:57:37.887360" elapsed="0.000738"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-18T23:57:37.888217" elapsed="0.000050"/>
</return>
<arg>${REGISTER_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.631045" elapsed="125.257444">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>${member_index}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Register the get-constant rpc on the requested node with given constant.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.628621" elapsed="125.260113">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="NOT RUN" start="2026-04-18T23:57:37.889336" elapsed="0.000058"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:37.889811" elapsed="0.000054"/>
</kw>
<arg>${index}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="FAIL" start="2026-04-18T23:55:32.628258" elapsed="125.261844">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-18T23:55:32.628098" elapsed="125.262144">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:55:31.304578" elapsed="126.585796">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Register global rpc on given nodes of the cluster.</doc>
<status status="FAIL" start="2026-04-18T23:55:31.304347" elapsed="126.586239">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:37.893448" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:37.892894" elapsed="0.000641"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:37.892852" elapsed="0.000716"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:57:37.893771" elapsed="0.000534"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.900330" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:57:37.899740" elapsed="0.000622"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-18T23:57:37.900591" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:37.900442" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:37.900422" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.901128" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:57:37.900800" elapsed="0.000392"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-18T23:57:37.901695" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Precedence_Register_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-18T23:57:37.901363" elapsed="0.000360"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-18T23:57:37.902078" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-18T23:57:37.901877" elapsed="0.000228"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.902614" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:57:37.902254" elapsed="0.000388"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.903122" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:57:37.902792" elapsed="0.000358"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.903800" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-18T23:57:37.903302" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.904376" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:57:37.904021" elapsed="0.000404"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-18T23:57:37.899430" elapsed="0.005054"/>
</kw>
<status status="PASS" start="2026-04-18T23:57:37.892390" elapsed="0.012145"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-18T23:57:37.891388" elapsed="0.013190"/>
</kw>
<doc>Register global rpc on each node of the cluster.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-18T23:54:50.921943" elapsed="166.982681">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s2-t2" name="Invoke_Rpc_On_Each_Node" line="35">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-18T23:57:37.908453" elapsed="0.000526"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-18T23:57:37.908168" elapsed="0.000884"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:57:37.910103" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:37.909963" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:37.909943" elapsed="0.000231"/>
</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-18T23:57:37.915001" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:37.914893" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:37.914875" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.916192" level="INFO">${return_list_reference} = [1, 2, 3]</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-18T23:57:37.915783" elapsed="0.000458"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-18T23:57:37.916715" level="INFO">${return_list_copy} = [1, 2, 3]</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-18T23:57:37.916404" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-18T23:57:37.916787" elapsed="0.000035"/>
</return>
<msg time="2026-04-18T23:57:37.916950" level="INFO">${index_list} = [1, 2, 3]</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-18T23:57:37.915307" elapsed="0.001669"/>
</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-18T23:57:37.922554" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:37.922443" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:37.922423" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:57:37.923854" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:37.923714" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:37.923696" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:57:37.924437" 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-18T23:57:37.924097" elapsed="0.000368"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:57:37.924853" 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-18T23:57:37.924622" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:57:37.977781" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:57:37.925402" elapsed="0.052486"/>
</kw>
<msg time="2026-04-18T23:57:37.978105" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:57:37.978155" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-18T23:57:37.925053" elapsed="0.053139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:57:38.016124" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:57:37.978747" elapsed="0.037483"/>
</kw>
<msg time="2026-04-18T23:57:38.016408" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:57:38.016454" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:57:37.978389" elapsed="0.038101"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:38.016789" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:38.016567" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.016548" elapsed="0.000319"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:57:38.017360" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:57:38.017001" elapsed="0.000434"/>
</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-18T23:57:38.017716" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:38.017503" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.017485" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:57:38.017828" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:57:38.019383" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:57:38.020441" elapsed="0.000547"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:57:38.021275" elapsed="0.000354"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:57:38.018720" elapsed="0.003005"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-18T23:57:38.018167" elapsed="0.003621"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:57:37.923412" elapsed="0.098474"/>
</kw>
<msg time="2026-04-18T23:57:38.021979" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:57:38.022024" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:57:37.922770" elapsed="0.099313"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:57:38.022271" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:57:38.022161" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.022142" elapsed="0.000257"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:38.022796" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:38.023145" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:57:38.023218" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:57:37.922086" elapsed="0.101241"/>
</kw>
<msg time="2026-04-18T23:57:38.023420" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:57:38.023464" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:57:37.917410" elapsed="0.106090"/>
</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-18T23:57:38.023822" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:38.023576" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.023558" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:57:37.917273" elapsed="0.106649"/>
</iter>
<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-18T23:57:38.029444" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:38.029337" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.029318" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:57:38.030643" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:38.030535" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.030518" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:57:38.031160" level="INFO">${karaf_connection_index} = 12</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-18T23:57:38.030846" elapsed="0.000341"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:57:38.031545" 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-18T23:57:38.031338" elapsed="0.000232"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:57:38.090483" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-18T23:57:38.032067" elapsed="0.058558"/>
</kw>
<msg time="2026-04-18T23:57:38.090832" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-18T23:57:38.090882" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-18T23:57:38.031722" elapsed="0.059197"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:57:38.152000" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-18T23:57:38.091526" elapsed="0.060663"/>
</kw>
<msg time="2026-04-18T23:57:38.152411" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-18T23:57:38.152462" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:57:38.091140" elapsed="0.061360"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:38.152908" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:38.152607" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.152575" elapsed="0.000419"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:57:38.153521" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:57:38.153162" elapsed="0.000436"/>
</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-18T23:57:38.153898" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:38.153669" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.153649" elapsed="0.000418"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-18T23:57:38.154109" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:57:38.155667" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:57:38.156724" elapsed="0.000461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:57:38.157435" elapsed="0.000337"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:57:38.155004" elapsed="0.002863"/>
</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-18T23:57:38.154426" elapsed="0.003506"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-18T23:57:38.030234" elapsed="0.127820"/>
</kw>
<msg time="2026-04-18T23:57:38.158153" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:57:38.158199" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:57:38.029656" elapsed="0.128582"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-18T23:57:38.158425" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-18T23:57:38.158316" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.158298" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:38.158914" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-18T23:57:38.159273" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:57:38.159347" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-18T23:57:38.028951" elapsed="0.130508"/>
</kw>
<msg time="2026-04-18T23:57:38.159558" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:57:38.159604" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:57:38.024199" elapsed="0.135444"/>
</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-18T23:57:38.159987" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:38.159721" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.159703" elapsed="0.000381"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:57:38.024062" elapsed="0.136046"/>
</iter>
<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-18T23:57:38.165627" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:38.165516" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.165497" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-18T23:57:38.166902" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:38.166794" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:38.166777" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:57:38.167428" level="INFO">${karaf_connection_index} = 24</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-18T23:57:38.167129" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:57:38.167817" 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-18T23:57:38.167606" elapsed="0.000238"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:57:48.169242" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-18T23:57:38.168426" elapsed="10.001818">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:57:48.170539" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-18T23:57:48.170593" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-18T23:57:38.168008" elapsed="10.002610"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-18T23:57:58.172522" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-18T23:57:48.171397" elapsed="10.002837">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:57:58.174783" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-18T23:57:58.174893" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-18T23:57:48.170908" elapsed="10.004043"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-18T23:57:58.177521" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node"</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-18T23:57:58.175931" elapsed="0.001657">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-18T23:57:58.175259" elapsed="0.002401">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-18T23:57:58.175185" elapsed="0.002511">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node"</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-18T23:57:58.177859" elapsed="0.000024"/>
</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-18T23:57:58.178110" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:57:58.177949" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:57:58.177932" elapsed="0.000256"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-18T23:57:58.178226" 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-18T23:57:58.179773" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-18T23:57:58.180818" elapsed="0.000464"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:57:58.181542" elapsed="0.000337"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-18T23:57:58.179146" elapsed="0.002829"/>
</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-18T23:57:58.178528" elapsed="0.003537"/>
</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-18T23:57:38.166491" elapsed="20.015664">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-18T23:57:58.182273" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:57:58.182320" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node"</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-18T23:57:38.165844" elapsed="20.016502"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:57:58.182539" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:58.182427" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:58.182408" elapsed="0.000199"/>
</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-18T23:57:58.183440" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:57:58.183330" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:58.183312" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:57:58.183997" 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-18T23:57:58.184125" 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-18T23:57:58.183665" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:57:58.184625" level="INFO">{1: 10, 2: 12, 3: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:57:58.184306" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:57:58.185098" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:57:58.184831" elapsed="0.000313"/>
</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-18T23:57:58.185663" elapsed="0.000260"/>
</kw>
<msg time="2026-04-18T23:57:58.186022" level="INFO">${status} = PASS</msg>
<msg time="2026-04-18T23:57:58.186104" level="INFO">${old_connection_index} = 24</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-18T23:57:58.185305" elapsed="0.000823"/>
</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-18T23:57:58.187022" elapsed="0.000207"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-18T23:58:08.188877" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-18T23:57:58.187866" elapsed="10.002078">No match found for '
' in 10 seconds
Output:
.</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-18T23:57:58.187393" elapsed="10.002728"/>
</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-18T23:58:08.191015" elapsed="0.000482"/>
</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-18T23:58:08.190451" elapsed="0.001139"/>
</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-18T23:57:58.186503" elapsed="10.005137"/>
</kw>
<status status="PASS" start="2026-04-18T23:57:58.186279" elapsed="10.005413"/>
</branch>
<status status="PASS" start="2026-04-18T23:57:58.186259" elapsed="10.005468"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-18T23:58:08.192763" level="INFO">${ip_address} = 10.30.171.206</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-18T23:58:08.192440" elapsed="0.000351"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-18T23:58:08.192845" elapsed="0.000035"/>
</return>
<msg time="2026-04-18T23:58:08.193006" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-18T23:58:08.191971" elapsed="0.001111"/>
</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-18T23:58:08.193239" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-18T23:58:08.193957" level="INFO">index=29
host=10.30.171.206
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-18T23:58:08.194086" level="INFO">${karaf_connection_object} = index=29
host=10.30.171.206
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-18T23:58:08.193837" elapsed="0.000278"/>
</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-18T23:58:08.194260" elapsed="0.002334"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-18T23:58:08.197022" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-18T23:58:18.266204" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:58:08.196758" elapsed="10.070204">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:58:18.280970" elapsed="0.000537"/>
</kw>
<kw name="Open 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-18T23:58:18.281675" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-18T23:58:18.281989" elapsed="0.000119"/>
</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-18T23:58:18.269642" elapsed="0.012519"/>
</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-18T23:58:18.267449" elapsed="0.014758"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-18T23:57:58.183012" elapsed="20.099283">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:58:18.282652" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.282729" elapsed="0.000022"/>
</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-18T23:57:38.165164" elapsed="40.117677">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-18T23:58:18.282951" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-18T23:58:18.282996" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-18T23:57:38.160405" elapsed="40.122614"/>
</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-18T23:58:18.283617" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.283359" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.283337" elapsed="0.000370"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-18T23:57:38.160241" elapsed="40.123491"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-18T23:57:37.917092" elapsed="40.366672"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-18T23:57:37.914535" elapsed="40.369284"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-18T23:57:37.909665" elapsed="40.374207"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-18T23:57:37.909208" elapsed="40.374706"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-18T23:57:37.905970" elapsed="40.377994"/>
</kw>
<kw name="Verify_Constant_On_Registered_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.290463" 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-18T23:58:18.290152" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:58:18.290537" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:58:18.290688" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:58:18.289793" elapsed="0.000920"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.325108" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.324646" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.326007" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.325626" elapsed="0.000559">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.326426" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.325295" elapsed="0.001158"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.327074" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.326613" elapsed="0.000489"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.327427" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:58:18.327588" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:58:18.327259" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.328096" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.327796" elapsed="0.000351"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.329589" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.328953" elapsed="0.000769"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.330638" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.329989" elapsed="0.000691"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.331440" elapsed="0.000046"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.331984" elapsed="0.000062"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.332318" elapsed="0.000046"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.331159" elapsed="0.001256"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.330813" elapsed="0.001685"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-18T23:58:18.332755" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:58:18.333037" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-18T23:58:18.328547" elapsed="0.004518"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.328215" elapsed="0.004883"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.333265" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.333122" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.328196" elapsed="0.005145"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.333956" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.333477" elapsed="0.000507"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.334072" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:58:18.324038" elapsed="0.010160"/>
</kw>
<msg time="2026-04-18T23:58:18.334251" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.311954" elapsed="0.022346"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.346398" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.358205" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.370071" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.370266" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.370437" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.370797" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.370659" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:58:18.370644" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.371008" elapsed="0.000034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.371186" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.371346" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.370615" elapsed="0.000784"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.370512" elapsed="0.000912"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.371563" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.371639" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:58:18.371801" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:58:18.307848" elapsed="0.063979"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.395538" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.395100" elapsed="0.000466"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.396386" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.396078" elapsed="0.000466">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.396784" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.395733" elapsed="0.001077"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.397429" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.396967" elapsed="0.000488"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.397769" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:58:18.397956" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:58:18.397609" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.398418" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.398151" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-18T23:58:18.398854" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.398527" elapsed="0.000388"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.399593" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.399094" elapsed="0.000525"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.398939" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.398509" elapsed="0.001167"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.400322" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.399840" elapsed="0.000509"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.400398" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:58:18.394479" elapsed="0.006043"/>
</kw>
<msg time="2026-04-18T23:58:18.400572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.382372" elapsed="0.018248"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.412597" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.424330" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.436129" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.436317" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.436486" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.436838" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.436702" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:58:18.436687" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.437067" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.437231" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.437390" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.436659" elapsed="0.000783"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.436559" elapsed="0.000909"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.437604" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.437678" elapsed="0.000016"/>
</return>
<msg time="2026-04-18T23:58:18.437787" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:58:18.381510" elapsed="0.056302"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.439121" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.438854" elapsed="0.000331">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.439278" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.438521" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.439609" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.439371" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.440195" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.439885" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.439690" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.439353" elapsed="0.000924"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.442527" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.440421" elapsed="0.002132"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-18T23:58:18.442603" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:58:18.442754" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-18T23:58:18.438202" elapsed="0.004576"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.444362" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.444110" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.444789" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.444552" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.445233" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.444972" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.445658" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.445418" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-18T23:58:18.446510" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-18T23:58:18.446306" elapsed="0.000230"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-18T23:58:18.446858" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-18T23:58:18.446682" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.447037" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.447668" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.447423" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-18T23:58:18.447782" elapsed="0.000029"/>
</return>
<msg time="2026-04-18T23:58:18.447938" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-18T23:58:18.445894" elapsed="0.002069"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:58:18.478069" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01rwjw77sr6bbk1kewipq50iwyp0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:58:18.478580" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-18T23:58:18.478698" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:58:18.450211" elapsed="0.028514"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.448046" elapsed="0.030724"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.478946" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.478797" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.448013" elapsed="0.031035"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.482456" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.480109" elapsed="0.002395"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.479868" elapsed="0.002671"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.479849" elapsed="0.002716"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.485131" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.482835" elapsed="0.002341"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.482620" elapsed="0.002590"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.482603" elapsed="0.002632"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.485772" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.485391" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.486111" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.485867" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.486639" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.486343" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.486192" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.485850" elapsed="0.000871"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.487248" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.486869" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.487606" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.487377" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.488182" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.487863" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.487686" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.487359" elapsed="0.000905"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.488407" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:58:18.489207" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.488906" elapsed="0.000327"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.489380" elapsed="0.002267"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:58:18.479416" elapsed="0.012293"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-18T23:58:18.491901" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-18T23:58:18.491794" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.491775" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.492144" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.492212" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:58:18.494447" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-18T23:58:18.443162" elapsed="0.051313"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.494545" elapsed="0.000027"/>
</return>
<msg time="2026-04-18T23:58:18.494697" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-18T23:58:18.296981" elapsed="0.197743"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.495074" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.494826" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.494809" elapsed="0.000357"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.495198" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:58:18.495346" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-18T23:58:18.290954" elapsed="0.204419"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-18T23:58:18.495583" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:58:18.495444" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.495428" elapsed="0.000215"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-18T23:58:18.496456" level="INFO">${xml} = &lt;Element 'output' at 0x7826f705bf10&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-18T23:58:18.495806" elapsed="0.000678"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-18T23:58:18.496940" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-18T23:58:18.496638" elapsed="0.000328"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-18T23:58:18.497015" elapsed="0.000043"/>
</return>
<msg time="2026-04-18T23:58:18.497184" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-18T23:58:18.289360" elapsed="0.207849"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-18T23:58:18.497401" elapsed="0.000374"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-18T23:58:18.497825" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-18T23:58:18.284743" elapsed="0.213206"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-18T23:58:18.284578" elapsed="0.213405"/>
</iter>
<iter>
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.503926" level="INFO">${session} = ClusterManagement__session_2</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-18T23:58:18.503603" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:58:18.504000" elapsed="0.000048"/>
</return>
<msg time="2026-04-18T23:58:18.504170" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:58:18.503261" elapsed="0.000934"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.538094" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.537616" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.538940" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.538610" elapsed="0.000507">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.539364" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.538280" elapsed="0.001109"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.540000" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.539550" elapsed="0.000492"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.540358" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:58:18.540493" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:58:18.540199" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.540928" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.540667" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.542428" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.541792" elapsed="0.000767"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.543495" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.542825" elapsed="0.000710"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.544358" elapsed="0.000183"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.545046" elapsed="0.000051"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.545365" elapsed="0.000046"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.544043" elapsed="0.001419"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.543672" elapsed="0.001872"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-18T23:58:18.545730" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:58:18.545994" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-18T23:58:18.541386" elapsed="0.004634"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.541056" elapsed="0.005012"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.546239" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.546092" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.541022" elapsed="0.005334"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.546971" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.546499" elapsed="0.000500"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.547089" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:58:18.537006" elapsed="0.010209"/>
</kw>
<msg time="2026-04-18T23:58:18.547266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.524950" elapsed="0.022364"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.559191" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.570932" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.582769" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.582956" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.583138" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.583493" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.583357" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:58:18.583343" elapsed="0.000227"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.583704" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.583883" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.584058" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.583315" elapsed="0.000802"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.583216" elapsed="0.000932"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.584309" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.584384" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:58:18.584491" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:58:18.520890" elapsed="0.063626"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.608105" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.607627" elapsed="0.000506"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.608983" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.608696" elapsed="0.000457">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.609393" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.608288" elapsed="0.001131"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.610012" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.609576" elapsed="0.000479"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.610366" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:58:18.610487" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:58:18.610210" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.610924" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.610660" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-18T23:58:18.611372" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.611047" elapsed="0.000385"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.612130" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.611594" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.611457" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.611013" elapsed="0.001207"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.612809" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.612358" elapsed="0.000477"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.612883" elapsed="0.000035"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:58:18.607012" elapsed="0.005999"/>
</kw>
<msg time="2026-04-18T23:58:18.613083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.595004" elapsed="0.018129"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.625083" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.636789" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.648556" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.648786" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.648953" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.649321" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.649185" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:58:18.649171" elapsed="0.000227"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.649530" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.649696" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.649853" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.649142" elapsed="0.000762"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.649039" elapsed="0.000890"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.650080" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.650155" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:58:18.650262" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:58:18.594164" elapsed="0.056122"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.651508" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.651275" elapsed="0.000296">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.651660" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.650925" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.651999" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.651751" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.652539" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.652250" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.652093" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.651733" elapsed="0.000887"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.654860" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.652762" elapsed="0.002123"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-18T23:58:18.654935" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:58:18.655102" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-18T23:58:18.650607" elapsed="0.004520"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.656639" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.656395" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.657077" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.656827" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.657499" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.657259" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.657925" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.657688" elapsed="0.000278"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-18T23:58:18.658757" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-18T23:58:18.658565" elapsed="0.000217"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-18T23:58:18.659174" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-18T23:58:18.658966" elapsed="0.000233"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.659343" elapsed="0.000207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.659958" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.659698" elapsed="0.000303"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-18T23:58:18.660059" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:58:18.660216" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-18T23:58:18.658171" elapsed="0.002069"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-18T23:58:18.701189" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0kthu5o3s9zvstt389a7gpj790.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-18T23:58:18.701428" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-18T23:58:18.701536" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-18T23:58:18.662454" elapsed="0.039107"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.660309" elapsed="0.041298"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.701782" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.701633" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.660291" elapsed="0.041578"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.705272" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.702882" elapsed="0.002439"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.702666" elapsed="0.002689"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.702648" elapsed="0.002732"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.707943" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.705656" elapsed="0.002333"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.705435" elapsed="0.002587"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.705419" elapsed="0.002643"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.708602" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.708217" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.708937" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.708712" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.709483" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.709185" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.709016" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.708694" elapsed="0.000871"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.710087" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.709713" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.710415" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.710183" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.710937" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.710642" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.710492" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.710165" elapsed="0.000853"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.711180" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-18T23:58:18.712052" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.711721" elapsed="0.000360"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.712233" elapsed="0.002254"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-18T23:58:18.702230" elapsed="0.012318"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-18T23:58:18.714724" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-18T23:58:18.714619" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.714600" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.714949" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.715016" elapsed="0.000032"/>
</return>
<msg time="2026-04-18T23:58:18.717343" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-18T23:58:18.655442" elapsed="0.061930"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.717442" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:58:18.717593" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-18T23:58:18.510324" elapsed="0.207295"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.717947" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.717721" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.717704" elapsed="0.000348"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.718086" elapsed="0.000025"/>
</return>
<msg time="2026-04-18T23:58:18.718232" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-18T23:58:18.504439" elapsed="0.213820"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-18T23:58:18.718467" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-18T23:58:18.718330" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.718313" elapsed="0.000214"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-18T23:58:18.718989" level="INFO">${xml} = &lt;Element 'output' at 0x7826f72b4b80&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-18T23:58:18.718664" elapsed="0.000352"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-18T23:58:18.719472" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-18T23:58:18.719182" elapsed="0.000315"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-18T23:58:18.719545" elapsed="0.000026"/>
</return>
<msg time="2026-04-18T23:58:18.719692" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-18T23:58:18.502759" elapsed="0.216958"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-18T23:58:18.719866" elapsed="0.000407"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-18T23:58:18.720322" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-18T23:58:18.498253" elapsed="0.222189"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-18T23:58:18.498086" elapsed="0.222389"/>
</iter>
<iter>
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.726298" level="INFO">${session} = ClusterManagement__session_3</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-18T23:58:18.725981" elapsed="0.000377"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-18T23:58:18.726408" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:58:18.726556" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-18T23:58:18.725642" elapsed="0.000939"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.760664" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.760232" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.761507" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.761200" elapsed="0.000464">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.761903" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.760848" elapsed="0.001080"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.762542" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.762103" elapsed="0.000467"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.762881" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:58:18.763017" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:58:18.762723" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.763478" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.763209" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.764967" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.764352" elapsed="0.000761"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.766183" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.765389" elapsed="0.000836"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.766971" elapsed="0.000045"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.767515" elapsed="0.000049"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.767832" elapsed="0.000045"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.766692" elapsed="0.001257"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.766360" elapsed="0.001688"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-18T23:58:18.768238" elapsed="0.000031"/>
</return>
<msg time="2026-04-18T23:58:18.768504" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-18T23:58:18.763928" elapsed="0.004602"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.763590" elapsed="0.004973"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.768728" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.768587" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.763571" elapsed="0.005231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.769426" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.768934" elapsed="0.000519"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.769503" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:58:18.759588" elapsed="0.010036"/>
</kw>
<msg time="2026-04-18T23:58:18.769710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.747462" elapsed="0.022297"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.781783" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.793912" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.805628" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.805817" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.805984" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.806357" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.806219" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:58:18.806205" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.806566" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.806724" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.806882" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.806176" elapsed="0.000758"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.806072" elapsed="0.000887"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.807110" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.807187" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:58:18.807296" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:58:18.743349" elapsed="0.063971"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.830935" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.830501" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.831753" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.831464" elapsed="0.000444">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.832232" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.831137" elapsed="0.001121"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.832862" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.832418" elapsed="0.000471"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.833217" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-18T23:58:18.833341" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-18T23:58:18.833057" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.833782" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.833517" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-18T23:58:18.834239" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.833890" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.834958" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.834461" elapsed="0.000524"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.834324" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.833872" elapsed="0.001185"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.835813" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-18T23:58:18.835200" elapsed="0.000640"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-18T23:58:18.835890" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-18T23:58:18.829885" elapsed="0.006162"/>
</kw>
<msg time="2026-04-18T23:58:18.836100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-18T23:58:18.817801" elapsed="0.018347"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.847902" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.859705" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.871408" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.871593" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.871759" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.872147" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.871996" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-18T23:58:18.871979" elapsed="0.000278"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.872396" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.872557" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.872715" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-18T23:58:18.871932" elapsed="0.000835"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.871833" elapsed="0.000960"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.872928" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-18T23:58:18.873002" elapsed="0.000015"/>
</return>
<msg time="2026-04-18T23:58:18.873127" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-18T23:58:18.816956" elapsed="0.056196"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-18T23:58:18.874386" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.874151" elapsed="0.000297">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-18T23:58:18.874538" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-18T23:58:18.873795" elapsed="0.000767"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-18T23:58:18.874870" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-18T23:58:18.874630" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.875417" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-18T23:58:18.875126" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-18T23:58:18.874949" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-18T23:58:18.874613" elapsed="0.000885"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.877738" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-18T23:58:18.875640" elapsed="0.002124"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-18T23:58:18.877815" elapsed="0.000028"/>
</return>
<msg time="2026-04-18T23:58:18.877965" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-18T23:58:18.873476" elapsed="0.004513"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.879498" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.879252" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.879921" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.879688" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.880395" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.880152" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.880819" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.880582" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-18T23:58:18.881660" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-18T23:58:18.881465" elapsed="0.000221"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-18T23:58:18.882002" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-18T23:58:18.881830" elapsed="0.000214"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-18T23:58:18.882196" elapsed="0.000206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-18T23:58:18.882793" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-18T23:58:18.882550" elapsed="0.000286"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-18T23:58:18.882921" elapsed="0.000030"/>
</return>
<msg time="2026-04-18T23:58:18.883101" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-18T23:58:18.881066" elapsed="0.002061"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:00:23.977576" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.886595" elapsed="125.094970">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-18T23:58:18.884570" elapsed="125.097223">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.982326" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:23.981879" elapsed="0.000604"/>
</branch>
<status status="FAIL" start="2026-04-18T23:58:18.883183" elapsed="125.099355">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.983557" elapsed="0.000070"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:00:23.983911" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:23.983821" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:00:23.983777" elapsed="0.000317"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.984415" elapsed="0.000054"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:00:23.984573" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.878329" elapsed="125.106521">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:00:23.985070" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.732738" elapsed="125.252562">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.985977" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:23.985557" elapsed="0.000612"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:00:23.985518" elapsed="0.000707"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:00:23.986299" elapsed="0.000034"/>
</return>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.726823" elapsed="125.259704">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:00:23.986856" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:23.986722" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:00:23.986680" elapsed="0.000314"/>
</if>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.987354" elapsed="0.000049"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.987728" elapsed="0.000064"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:00:23.987906" elapsed="0.000036"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.725210" elapsed="125.262956">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.988641" elapsed="0.000049"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:00:23.988790" elapsed="0.000043"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.720727" elapsed="125.268293">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-18T23:58:18.720561" elapsed="125.268627">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-18T23:58:18.284446" elapsed="125.704869">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="FAIL" start="2026-04-18T23:58:18.284218" elapsed="125.705295">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:23.992194" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:23.991703" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:23.991663" elapsed="0.000620"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:00:23.992432" elapsed="0.000382"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:00:23.997796" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:00:23.997359" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:00:23.998088" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:23.997906" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:23.997887" elapsed="0.000266"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:00:23.998607" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:00:23.998296" elapsed="0.000355"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:00:23.999111" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Precedence_Invoke_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:00:23.998809" elapsed="0.000330"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:00:23.999477" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:00:23.999297" elapsed="0.000207"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.000017" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:00:23.999655" elapsed="0.000409"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.000539" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:00:24.000220" elapsed="0.000348"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.001214" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:00:24.000727" elapsed="0.000542"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.001726" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:00:24.001422" elapsed="0.000353"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:00:23.997050" elapsed="0.004782"/>
</kw>
<status status="PASS" start="2026-04-19T00:00:23.991215" elapsed="0.010704"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:00:23.990250" elapsed="0.011716"/>
</kw>
<doc>Verify that the rpc response comes from the local node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-18T23:57:37.905288" elapsed="166.096725">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s2-t3" name="Unregister_Rpc_On_Node" line="39">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:00:24.006118" elapsed="0.000214"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:00:24.005809" elapsed="0.000578"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:00:24.007428" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.007316" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.007297" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:00:24.012411" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.012303" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.012284" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.013540" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:00:24.013141" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.014047" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:00:24.013723" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:00:24.014121" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:00:24.014289" level="INFO">${index_list} = [1, 2, 3]</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-19T00:00:24.012703" elapsed="0.001612"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:00:24.019692" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.019582" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.019563" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:00:24.020959" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.020850" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.020832" elapsed="0.000231"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:00:24.021598" 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-19T00:00:24.021207" elapsed="0.000423"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:00:24.022079" 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-19T00:00:24.021811" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:00:24.069266" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:00:24.022727" elapsed="0.046646"/>
</kw>
<msg time="2026-04-19T00:00:24.069546" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:00:24.069592" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:00:24.022282" elapsed="0.047346"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:00:24.110814" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:00:24.070264" elapsed="0.040661"/>
</kw>
<msg time="2026-04-19T00:00:24.111108" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:00:24.111155" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:00:24.069798" elapsed="0.041394"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:24.111495" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:24.111271" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.111251" elapsed="0.000371"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.112109" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:00:24.111761" elapsed="0.000421"/>
</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-19T00:00:24.112460" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:24.112249" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.112230" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:00:24.112571" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:00:24.114060" elapsed="0.000774"/>
</kw>
<kw name="Open 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-19T00:00:24.115134" elapsed="0.000471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:00:24.115867" elapsed="0.000395"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:00:24.113418" elapsed="0.002947"/>
</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-19T00:00:24.112842" elapsed="0.003587"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:00:24.020544" elapsed="0.095986"/>
</kw>
<msg time="2026-04-19T00:00:24.116622" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:00:24.116668" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:00:24.019915" elapsed="0.096792"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:00:24.116892" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:00:24.116784" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.116766" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:24.117397" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:24.117743" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:00:24.117815" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:00:24.019222" elapsed="0.098703"/>
</kw>
<msg time="2026-04-19T00:00:24.118042" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:00:24.118089" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:00:24.014713" elapsed="0.103414"/>
</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-19T00:00:24.118498" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:24.118204" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.118186" elapsed="0.000389"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:00:24.014575" elapsed="0.104024"/>
</iter>
<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-19T00:00:24.123917" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.123807" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.123788" 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-19T00:00:24.125161" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.125008" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.124990" elapsed="0.000238"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:00:24.125674" level="INFO">${karaf_connection_index} = 12</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-19T00:00:24.125376" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:00:24.126080" 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-19T00:00:24.125851" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:00:24.168581" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:00:24.126630" elapsed="0.042055"/>
</kw>
<msg time="2026-04-19T00:00:24.168846" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:00:24.168892" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:00:24.126300" elapsed="0.042653"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:00:24.207821" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:00:24.169518" elapsed="0.038680"/>
</kw>
<msg time="2026-04-19T00:00:24.208641" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:00:24.208749" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:00:24.169155" elapsed="0.039680"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:24.209635" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:24.209067" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.208982" elapsed="0.000834"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:00:24.210882" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:00:24.210154" elapsed="0.000920"/>
</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-19T00:00:24.211694" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:24.211227" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.211187" elapsed="0.000679"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:00:24.211945" elapsed="0.000068"/>
</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-19T00:00:24.214870" elapsed="0.001304"/>
</kw>
<kw name="Open 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-19T00:00:24.216609" elapsed="0.000719"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:00:24.217710" elapsed="0.000553"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:00:24.213919" elapsed="0.004492"/>
</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-19T00:00:24.212695" elapsed="0.005807"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:00:24.124708" elapsed="0.093942"/>
</kw>
<msg time="2026-04-19T00:00:24.218785" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:00:24.218850" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:00:24.124155" elapsed="0.094750"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:00:24.219200" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T00:00:24.219017" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.218990" elapsed="0.000334"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:00:24.219903" elapsed="0.000038"/>
</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-19T00:00:24.220404" elapsed="0.000047"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:00:24.220521" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:00:24.123467" elapsed="0.097206"/>
</kw>
<msg time="2026-04-19T00:00:24.220803" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:00:24.220863" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:00:24.118859" elapsed="0.102124"/>
</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-19T00:00:24.221537" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:24.221189" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.221163" elapsed="0.000483"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:00:24.118724" elapsed="0.102955"/>
</iter>
<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-19T00:00:24.227893" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.227780" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.227761" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:00:24.229129" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:24.228991" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:24.228973" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:00:24.229629" level="INFO">${karaf_connection_index} = 29</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-19T00:00:24.229332" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:00:24.230016" 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-19T00:00:24.229805" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:00:34.231304" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:00:24.230538" elapsed="10.001771">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:00:34.232583" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:00:34.232634" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:00:24.230212" elapsed="10.002447"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:00:44.234102" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:00:34.233404" elapsed="10.002256">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:00:44.236218" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:00:44.236326" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:00:34.232922" elapsed="10.003458"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:00:44.238788" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Node"</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-19T00:00:44.237284" elapsed="0.001642">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:00:44.236603" elapsed="0.002499">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:00:44.236548" elapsed="0.002629">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Node"</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-19T00:00:44.239535" elapsed="0.000050"/>
</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-19T00:00:44.240602" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:00:44.239726" elapsed="0.000996"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:00:44.239689" elapsed="0.001084"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:00:44.240850" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:00:44.242742" elapsed="0.000808"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:00:44.243825" elapsed="0.000501"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:00:44.244592" elapsed="0.000371"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:00:44.242060" elapsed="0.003038"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T00:00:44.241475" elapsed="0.003700"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T00:00:24.228693" elapsed="20.016567">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Node"</status>
</kw>
<msg time="2026-04-19T00:00:44.245427" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:00:44.245473" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Node"</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-19T00:00:24.228122" elapsed="20.017376"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:00:44.245684" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:44.245576" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:44.245557" elapsed="0.000194"/>
</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-19T00:00:44.246560" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:00:44.246454" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:44.246437" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:00:44.246916" 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-19T00:00:44.247020" 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-19T00:00:44.246773" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:00:44.247479" level="INFO">{1: 10, 2: 12, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:00:44.247209" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:00:44.247977" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:00:44.247731" elapsed="0.000291"/>
</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-19T00:00:44.248608" elapsed="0.000266"/>
</kw>
<msg time="2026-04-19T00:00:44.248972" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:00:44.249019" level="INFO">${old_connection_index} = 29</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-19T00:00:44.248250" elapsed="0.000885"/>
</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-19T00:00:44.249932" elapsed="0.000214"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:00:54.251708" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:00:44.250781" elapsed="10.001971">No match found for '
' in 10 seconds
Output:
.</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-19T00:00:44.250307" elapsed="10.002574"/>
</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-19T00:00:54.253813" elapsed="0.000461"/>
</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-19T00:00:54.253235" elapsed="0.001126"/>
</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-19T00:00:44.249429" elapsed="10.004980"/>
</kw>
<status status="PASS" start="2026-04-19T00:00:44.249213" elapsed="10.005248"/>
</branch>
<status status="PASS" start="2026-04-19T00:00:44.249195" elapsed="10.005299"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:00:54.255543" level="INFO">${ip_address} = 10.30.171.206</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-19T00:00:54.255212" elapsed="0.000358"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:00:54.255625" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:00:54.255791" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:00:54.254733" elapsed="0.001084"/>
</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-19T00:00:54.255972" elapsed="0.000517"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:00:54.256791" level="INFO">index=34
host=10.30.171.206
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-19T00:00:54.256896" level="INFO">${karaf_connection_object} = index=34
host=10.30.171.206
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-19T00:00:54.256667" elapsed="0.000256"/>
</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-19T00:00:54.257084" elapsed="0.002538"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:00:54.260083" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:01:04.327478" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:00:54.259792" elapsed="10.068546">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:01:04.339993" elapsed="0.000636"/>
</kw>
<kw name="Open 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-19T00:01:04.340795" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:01:04.341156" elapsed="0.000105"/>
</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-19T00:01:04.329578" elapsed="0.011738"/>
</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-19T00:01:04.328818" elapsed="0.012560"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:00:44.246160" elapsed="20.095310">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:01:04.341829" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.341908" elapsed="0.000020"/>
</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-19T00:00:24.227434" elapsed="40.114587">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:01:04.342156" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:01:04.342202" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:00:24.222065" elapsed="40.120160"/>
</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-19T00:01:04.342569" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.342311" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.342290" elapsed="0.000357"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:00:24.221855" elapsed="40.120817"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:00:24.014370" elapsed="40.328335"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:00:24.011909" elapsed="40.330855"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:00:24.006990" elapsed="40.335834"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:00:24.006533" elapsed="40.336338"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:00:24.003250" elapsed="40.339675"/>
</kw>
<kw name="Unregister_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.344755" 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-19T00:01:04.344447" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:01:04.344828" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:01:04.344979" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:01:04.343915" elapsed="0.001090"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.379899" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:04.379517" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:01:04.380701" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:01:04.380442" elapsed="0.000327">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:01:04.380934" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:01:04.380109" elapsed="0.000856"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.381560" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:01:04.381144" elapsed="0.000443"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:01:04.381887" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:01:04.382064" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:01:04.381744" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.382490" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.382244" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.383502" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.383223" elapsed="0.000324"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.383978" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:01:04.383700" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.384402" elapsed="0.000024"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.384632" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.384837" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:01:04.384269" elapsed="0.000628"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.384119" elapsed="0.000807"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:01:04.384970" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:01:04.385153" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:01:04.382892" elapsed="0.002287"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.382602" elapsed="0.002610"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.385381" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.385238" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.382584" elapsed="0.002914"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.386118" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:04.385646" elapsed="0.000501"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:01:04.386198" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:01:04.378883" elapsed="0.007443"/>
</kw>
<msg time="2026-04-19T00:01:04.386379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:04.366547" elapsed="0.019883"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.398552" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.410579" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.422501" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.422692" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.422859" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.423236" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.423098" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:04.423082" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.423447" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.423607" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.423765" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:01:04.423052" elapsed="0.000766"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.422932" elapsed="0.000911"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.424016" elapsed="0.000043"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.424120" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:01:04.424234" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:01:04.362340" elapsed="0.061920"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.448542" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:04.448164" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:01:04.449322" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:01:04.449073" elapsed="0.000314">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:01:04.449481" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:01:04.448726" elapsed="0.000779"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.450119" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:01:04.449702" elapsed="0.000445"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:01:04.450448" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:01:04.450582" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:01:04.450308" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.451011" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.450761" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:01:04.451429" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.451140" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.451992" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:04.451691" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.451544" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.451121" elapsed="0.000976"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.452670" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:04.452242" elapsed="0.000455"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:01:04.452747" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:01:04.447537" elapsed="0.005338"/>
</kw>
<msg time="2026-04-19T00:01:04.452938" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:04.435130" elapsed="0.017868"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.465402" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.477453" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.489286" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.489480" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.489647" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.490087" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.489921" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:04.489906" elapsed="0.000263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.490307" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.490470" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.490630" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:01:04.489874" elapsed="0.000809"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.489764" elapsed="0.000946"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.490848" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.490924" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:01:04.491056" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:01:04.434239" elapsed="0.056845"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:01:04.492430" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:01:04.492161" elapsed="0.000336">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:01:04.492591" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:01:04.491791" elapsed="0.000825"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.492945" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.492687" elapsed="0.000330"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.493533" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:04.493234" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.493059" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.492669" elapsed="0.000948"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.495987" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:01:04.493790" elapsed="0.002232"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:01:04.496100" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:01:04.496282" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:01:04.491460" elapsed="0.004852"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.497885" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.497590" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.498343" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.498098" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.498777" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.498532" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.499232" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.498968" elapsed="0.000307"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:04.500084" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:01:04.499867" elapsed="0.000244"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:01:04.500437" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:01:04.500261" elapsed="0.000203"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:01:04.500608" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.501272" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.500996" elapsed="0.000321"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:01:04.501361" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:01:04.501518" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:01:04.499469" elapsed="0.002074"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:01:04.527264" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01rwjw77sr6bbk1kewipq50iwyp0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:01:04.527369" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T00:01:04.527597" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:01:04.503812" elapsed="0.023844"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.501612" elapsed="0.026147"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.528264" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.527887" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.501594" elapsed="0.026872"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.536125" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.530823" elapsed="0.005402"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.530344" elapsed="0.006008"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.530302" elapsed="0.006138"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.540513" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.537143" elapsed="0.003417"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.536592" elapsed="0.004003"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.536553" elapsed="0.004067"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.541191" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:04.540775" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.541512" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.541287" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.542066" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:04.541741" elapsed="0.000353"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.541593" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.541269" elapsed="0.000880"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.542653" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:04.542298" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.542968" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.542747" elapsed="0.000276"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.543505" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:04.543214" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.543063" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.542730" elapsed="0.000854"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:04.543724" elapsed="0.000363"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:01:04.544523" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:04.544243" elapsed="0.000306"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:01:04.544695" elapsed="0.002281"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:01:04.529279" elapsed="0.017777"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:01:04.547236" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:01:04.547130" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.547112" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.547461" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.547528" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T00:01:04.549712" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:01:04.496644" elapsed="0.053095"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:01:04.549808" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T00:01:04.549985" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:01:04.351651" elapsed="0.198361"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.550442" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.550210" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.550191" elapsed="0.000342"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:01:04.550566" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:01:04.345285" elapsed="0.205403"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister the get-constant rpc on the given node.</doc>
<status status="PASS" start="2026-04-19T00:01:04.343549" elapsed="0.207197"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:01:04.551313" elapsed="0.000240"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:01:04.550952" elapsed="0.000672"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:01:04.552173" elapsed="0.000192"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:01:04.552512" elapsed="0.000187"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:01:04.552845" elapsed="0.000152"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:01:04.553155" elapsed="0.000153"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:01:04.551832" elapsed="0.001532"/>
</kw>
<arg>${UNREGISTERED_RPC_NODE}</arg>
<doc>Unregister global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:01:04.343173" elapsed="0.210242"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.554721" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.554349" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.554330" elapsed="0.000479"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:04.554947" elapsed="0.000513"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.560262" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:04.559837" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T00:01:04.560506" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:01:04.560364" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.560346" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.560730" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.560895" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.561078" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.561239" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.561399" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.561558" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.561716" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:01:04.559538" elapsed="0.002253"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:04.554133" elapsed="0.007791"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:01:04.553684" elapsed="0.008288"/>
</kw>
<doc>Unregister the rpc on one of the cluster nodes.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:00:24.002641" elapsed="40.559372"/>
</test>
<test id="s1-s2-t4" name="Invoke_Rpc_On_Node_With_Unregistered_Rpc" line="43">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:01:04.566616" elapsed="0.000295"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:01:04.566254" elapsed="0.000732"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.568377" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.568224" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.568197" elapsed="0.000275"/>
</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-19T00:01:04.574008" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.573900" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.573869" elapsed="0.000224"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.575078" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:01:04.574680" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.575569" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:01:04.575259" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:01:04.575640" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:01:04.575794" level="INFO">${index_list} = [1, 2, 3]</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-19T00:01:04.574311" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.581471" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.581362" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.581343" 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-19T00:01:04.582724" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.582617" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.582599" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:04.583255" 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-19T00:01:04.582930" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:04.583648" 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-19T00:01:04.583436" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:01:04.642341" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:01:04.584176" elapsed="0.058385"/>
</kw>
<msg time="2026-04-19T00:01:04.642912" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:01:04.642989" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:01:04.583827" elapsed="0.059237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:01:04.683439" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:01:04.643584" elapsed="0.039983"/>
</kw>
<msg time="2026-04-19T00:01:04.683729" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:01:04.683776" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:04.643238" elapsed="0.040575"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.684169" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.683898" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.683874" elapsed="0.000377"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.684753" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.684385" elapsed="0.000447"/>
</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-19T00:01:04.685148" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.684902" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.684881" elapsed="0.000346"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:01:04.685263" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:04.686849" 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-19T00:01:04.687904" elapsed="0.000470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:01:04.688620" elapsed="0.000333"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:01:04.686244" elapsed="0.002829"/>
</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-19T00:01:04.685542" elapsed="0.003594"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:01:04.582313" elapsed="0.106922"/>
</kw>
<msg time="2026-04-19T00:01:04.689327" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:04.689372" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:04.581687" elapsed="0.107721"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:01:04.689589" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:01:04.689483" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.689465" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.690083" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.690444" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.690515" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:01:04.581001" elapsed="0.109621"/>
</kw>
<msg time="2026-04-19T00:01:04.690715" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:04.690758" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:04.576197" elapsed="0.114596"/>
</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-19T00:01:04.691125" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.690868" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.690850" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:01:04.576059" elapsed="0.115167"/>
</iter>
<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-19T00:01:04.698385" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.698275" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.698250" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.699600" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.699493" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.699475" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:04.700117" level="INFO">${karaf_connection_index} = 12</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-19T00:01:04.699804" elapsed="0.000341"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:04.700505" 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-19T00:01:04.700296" elapsed="0.000236"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:01:04.741467" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:01:04.701039" elapsed="0.040526"/>
</kw>
<msg time="2026-04-19T00:01:04.741735" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:01:04.741782" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:01:04.700684" elapsed="0.041134"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:01:04.781461" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:01:04.742370" elapsed="0.039204"/>
</kw>
<msg time="2026-04-19T00:01:04.781729" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:01:04.781774" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:04.741981" elapsed="0.039830"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.782127" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.781886" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.781867" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:04.782649" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:04.782339" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.782996" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.782789" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.782772" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:01:04.783122" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:04.784491" elapsed="0.000731"/>
</kw>
<kw name="Open 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-19T00:01:04.785480" elapsed="0.000416"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:01:04.786161" elapsed="0.000354"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:01:04.783888" elapsed="0.002722"/>
</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-19T00:01:04.783374" elapsed="0.003298"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:01:04.699190" elapsed="0.087579"/>
</kw>
<msg time="2026-04-19T00:01:04.786859" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:04.786902" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:04.698600" elapsed="0.088339"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:01:04.787145" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:01:04.787018" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.787001" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.787608" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:04.787932" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.788004" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:01:04.697868" elapsed="0.090260"/>
</kw>
<msg time="2026-04-19T00:01:04.788221" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:04.788265" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:04.691485" elapsed="0.096816"/>
</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-19T00:01:04.788745" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:04.788500" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.788481" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:01:04.691351" elapsed="0.097493"/>
</iter>
<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-19T00:01:04.794224" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.794117" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.794098" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:04.795454" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:04.795348" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:04.795331" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:04.795946" level="INFO">${karaf_connection_index} = 34</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-19T00:01:04.795655" elapsed="0.000318"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:04.796355" 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-19T00:01:04.796145" elapsed="0.000236"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:01:14.797375" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:01:04.796859" elapsed="10.001432">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:01:14.798534" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:01:14.798585" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:01:04.796533" elapsed="10.002077"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:01:24.799729" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:01:14.799318" elapsed="10.001186">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:01:24.800748" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:01:24.800798" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:01:14.798851" elapsed="10.001972"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:01:24.801994" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</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-19T00:01:24.801317" elapsed="0.000760">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:01:24.800931" elapsed="0.001218">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:01:24.800900" elapsed="0.001283">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</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-19T00:01:24.802343" 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-19T00:01:24.802564" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:24.802428" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:24.802412" elapsed="0.000227"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:01:24.802677" elapsed="0.000016"/>
</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-19T00:01:24.804189" elapsed="0.000733"/>
</kw>
<kw name="Open 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-19T00:01:24.805224" elapsed="0.000438"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:01:24.805908" elapsed="0.000358"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:01:24.803550" elapsed="0.002811"/>
</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-19T00:01:24.802970" elapsed="0.003455"/>
</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-19T00:01:04.795047" elapsed="20.011464">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</status>
</kw>
<msg time="2026-04-19T00:01:24.806679" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:01:24.806725" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</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-19T00:01:04.794482" elapsed="20.012267"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:01:24.806934" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:24.806826" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:24.806808" elapsed="0.000192"/>
</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-19T00:01:24.807810" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:24.807705" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:24.807687" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:24.808177" 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-19T00:01:24.808280" 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-19T00:01:24.808022" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:24.808938" level="INFO">{1: 10, 2: 12, 3: 34}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:24.808452" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:24.809424" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:24.809174" elapsed="0.000294"/>
</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-19T00:01:24.809971" elapsed="0.000271"/>
</kw>
<msg time="2026-04-19T00:01:24.810340" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:24.810387" 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-19T00:01:24.809619" elapsed="0.000791"/>
</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-19T00:01:24.811224" elapsed="0.000187"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:01:34.813047" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:01:24.812043" elapsed="10.002052">No match found for '
' in 10 seconds
Output:
.</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-19T00:01:24.811574" elapsed="10.002659"/>
</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-19T00:01:34.815150" elapsed="0.000451"/>
</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-19T00:01:34.814560" elapsed="0.001128"/>
</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-19T00:01:24.810700" elapsed="10.005036"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:24.810485" elapsed="10.005303"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:24.810466" elapsed="10.005356"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:34.816906" level="INFO">${ip_address} = 10.30.171.206</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-19T00:01:34.816579" elapsed="0.000354"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:01:34.816994" elapsed="0.000087"/>
</return>
<msg time="2026-04-19T00:01:34.817212" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:01:34.816169" elapsed="0.001067"/>
</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-19T00:01:34.817397" elapsed="0.000438"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:34.818150" level="INFO">index=39
host=10.30.171.206
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-19T00:01:34.818253" level="INFO">${karaf_connection_object} = index=39
host=10.30.171.206
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-19T00:01:34.818005" elapsed="0.000274"/>
</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-19T00:01:34.818434" elapsed="0.002419"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:01:34.821679" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:01:44.887097" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:01:34.821022" elapsed="10.066866">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:01:44.900599" elapsed="0.000723"/>
</kw>
<kw name="Open 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-19T00:01:44.901489" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:01:44.901802" 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-19T00:01:44.889057" elapsed="0.012900"/>
</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-19T00:01:44.888368" elapsed="0.013638"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:01:24.807412" elapsed="20.094698">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:01:44.902471" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:01:44.902549" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:01:04.793756" elapsed="40.108923">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:01:44.902791" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:01:44.902836" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:01:04.789140" elapsed="40.113720"/>
</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-19T00:01:44.903224" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:44.902944" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:44.902923" elapsed="0.000379"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:01:04.788985" elapsed="40.114350"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:01:04.575871" elapsed="40.327498"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:01:04.573529" elapsed="40.329896"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:01:04.567798" elapsed="40.335684"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:04.567209" elapsed="40.336319"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:01:04.563151" elapsed="40.340430"/>
</kw>
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:44.909613" 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-19T00:01:44.909304" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:01:44.909688" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:01:44.909838" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:01:44.908948" elapsed="0.000916"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:44.944935" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:44.944506" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:01:44.945718" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:01:44.945465" elapsed="0.000323">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:01:44.945942" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:01:44.945136" elapsed="0.000832"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:44.946564" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:01:44.946146" elapsed="0.000448"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:01:44.946899" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:01:44.947128" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:01:44.946753" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:44.947563" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:44.947311" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:44.948610" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:44.948323" elapsed="0.000332"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:01:44.949155" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:01:44.948834" elapsed="0.000348"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.949501" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.949703" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.949871" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:01:44.949374" elapsed="0.000554"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:01:44.949234" elapsed="0.000723"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:01:44.950000" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T00:01:44.950178" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:01:44.947986" elapsed="0.002217"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:44.947676" elapsed="0.002558"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.950401" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:44.950258" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:44.947658" elapsed="0.002818"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:44.951093" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:44.950629" elapsed="0.000492"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:01:44.951170" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:01:44.943826" elapsed="0.007467"/>
</kw>
<msg time="2026-04-19T00:01:44.951346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:44.931051" elapsed="0.020343"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.963526" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.975364" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.987339" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.987529" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.987739" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.988125" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:44.987963" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:44.987947" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.988339" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.988497" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.988654" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:01:44.987920" elapsed="0.000785"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:01:44.987819" elapsed="0.000912"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:44.988868" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:01:44.988942" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:01:44.989065" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:01:44.926854" elapsed="0.062238"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.013102" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:45.012710" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:01:45.013861" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:01:45.013644" elapsed="0.000280">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:01:45.014016" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:01:45.013315" elapsed="0.000879"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.014815" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:01:45.014358" elapsed="0.000486"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:01:45.015164" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:01:45.015365" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:01:45.015005" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.015785" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.015542" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:01:45.016220" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.015897" elapsed="0.000382"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.016782" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:45.016440" elapsed="0.000368"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:45.016304" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.015877" elapsed="0.000989"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.017446" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:45.017004" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:01:45.017523" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:01:45.012106" elapsed="0.005544"/>
</kw>
<msg time="2026-04-19T00:01:45.017702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:45.000009" elapsed="0.017742"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.029761" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.041573" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.053346" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.053534" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.053701" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.054072" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.053920" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:45.053906" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.054288" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.054459" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.054617" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:01:45.053878" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.053776" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.054831" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.054904" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:01:45.055012" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:01:44.999125" elapsed="0.055929"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:01:45.056344" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:01:45.056096" elapsed="0.000316">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:01:45.056503" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:01:45.055747" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.056833" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.056596" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.057388" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:45.057098" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:45.056912" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.056578" elapsed="0.000892"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.059760" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:01:45.057613" elapsed="0.002173"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:01:45.059838" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:01:45.059990" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:01:45.055421" elapsed="0.004594"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.061845" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.061292" elapsed="0.000599"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.062296" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.062055" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.062751" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.062507" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.063199" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.062939" elapsed="0.000303"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:45.064053" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:01:45.063837" elapsed="0.000243"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:01:45.064411" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:01:45.064232" elapsed="0.000204"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:01:45.064579" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.065207" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.064942" elapsed="0.000309"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:01:45.065294" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:01:45.065449" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:01:45.063439" elapsed="0.002035"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:01:45.121484" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:01:45.067739" elapsed="0.057155">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<status status="FAIL" start="2026-04-19T00:01:45.065544" elapsed="0.059571">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.125893" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.125192" elapsed="0.000914"/>
</branch>
<status status="FAIL" start="2026-04-19T00:01:45.065526" elapsed="0.060638">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.127016" elapsed="0.000099"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.127448" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.127364" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:45.127322" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.127899" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.128079" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:01:45.060357" elapsed="0.067958">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.128495" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:01:44.916129" elapsed="0.212580">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.129371" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.128960" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:45.128923" elapsed="0.000647"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.129642" elapsed="0.000030"/>
</return>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:01:44.910190" elapsed="0.219661">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:01:45.130148" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.130062" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:01:45.129996" elapsed="0.000279"/>
</if>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.130624" elapsed="0.000048"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.130990" elapsed="0.000074"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.131177" elapsed="0.000020"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:01:44.908512" elapsed="0.222781">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.131448" elapsed="0.000021"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.131511" elapsed="0.000014"/>
</return>
<arg>${UNREGISTERED_RPC_NODE}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T00:01:44.903810" elapsed="0.227791">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.132862" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.132489" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.132472" elapsed="0.000475"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:45.133102" elapsed="0.000324"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.138234" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:45.137794" elapsed="0.000468"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:01:45.138544" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.138398" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.138378" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.139068" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:01:45.138749" elapsed="0.000347"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:01:45.139512" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Precedence_Invoke_Rpc_On_Node_With_Unregistered_Rpc</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:01:45.139248" elapsed="0.000291"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:01:45.139869" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:01:45.139693" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.140405" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:45.140058" elapsed="0.000402"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.140923" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:01:45.140612" elapsed="0.000340"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.141558" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"

ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:01:45.141116" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.142068" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.141759" elapsed="0.000409"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:01:45.137494" elapsed="0.004730"/>
</kw>
<status status="PASS" start="2026-04-19T00:01:45.132283" elapsed="0.009992"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:01:45.131908" elapsed="0.010409"/>
</kw>
<doc>Invoke rcp on the node with unregistered rpc. The response is expected
to come from other nodes where the rpc remained registered.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:01:04.562356" elapsed="40.580041">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"

ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</test>
<test id="s1-s2-t5" name="Invoke_Rpc_On_Remaining_Nodes" line="48">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:01:45.146223" elapsed="0.000236"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:01:45.145934" elapsed="0.000581"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.147530" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.147412" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.147391" elapsed="0.000208"/>
</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-19T00:01:45.152469" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.152355" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.152335" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.153571" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:01:45.153169" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.154079" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:01:45.153755" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:01:45.154248" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:01:45.154451" level="INFO">${index_list} = [1, 2, 3]</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-19T00:01:45.152774" elapsed="0.001703"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.159742" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.159635" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.159616" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.160963" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.160858" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.160840" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:45.161501" 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-19T00:01:45.161202" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:45.161897" 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-19T00:01:45.161681" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:01:45.198915" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:01:45.162432" elapsed="0.036584"/>
</kw>
<msg time="2026-04-19T00:01:45.199236" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:01:45.199283" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:01:45.162091" elapsed="0.037230"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:01:45.253919" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:01:45.199823" elapsed="0.054277"/>
</kw>
<msg time="2026-04-19T00:01:45.254413" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:01:45.254464" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:45.199487" elapsed="0.055015"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.254879" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.254610" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.254583" elapsed="0.000379"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.255446" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.255115" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.255799" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.255588" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.255570" elapsed="0.000306"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:01:45.255913" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:45.257417" elapsed="0.000794"/>
</kw>
<kw name="Open 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-19T00:01:45.258506" elapsed="0.000469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:01:45.259253" elapsed="0.000407"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:01:45.256774" elapsed="0.002985"/>
</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-19T00:01:45.256222" elapsed="0.003602"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:01:45.160558" elapsed="0.099367"/>
</kw>
<msg time="2026-04-19T00:01:45.260098" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:45.260145" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:45.159952" elapsed="0.100232"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:01:45.260369" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:01:45.260263" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.260244" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.260848" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.261196" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.261270" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:01:45.159299" elapsed="0.102078"/>
</kw>
<msg time="2026-04-19T00:01:45.261472" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:45.261516" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:45.154854" elapsed="0.106701"/>
</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-19T00:01:45.261874" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.261631" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.261613" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:01:45.154715" elapsed="0.107262"/>
</iter>
<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-19T00:01:45.267358" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.267249" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.267230" 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-19T00:01:45.268576" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.268468" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.268451" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:45.269101" level="INFO">${karaf_connection_index} = 12</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-19T00:01:45.268781" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:45.269495" 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-19T00:01:45.269282" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:01:45.307920" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:01:45.270002" elapsed="0.038232"/>
</kw>
<msg time="2026-04-19T00:01:45.308631" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:01:45.308737" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:01:45.269673" elapsed="0.039148"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:01:45.360599" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:01:45.310095" elapsed="0.050613"/>
</kw>
<msg time="2026-04-19T00:01:45.360865" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:01:45.360910" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:45.309283" elapsed="0.051663"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.361266" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.361022" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.361002" elapsed="0.000341"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:01:45.361769" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:01:45.361477" elapsed="0.000406"/>
</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-19T00:01:45.362202" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.361950" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.361932" elapsed="0.000349"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:01:45.362315" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:01:45.363890" elapsed="0.000784"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:01:45.364945" elapsed="0.000483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:01:45.365685" elapsed="0.000373"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:01:45.363281" elapsed="0.002898"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T00:01:45.362566" elapsed="0.003678"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:01:45.268165" elapsed="0.098179"/>
</kw>
<msg time="2026-04-19T00:01:45.366437" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:45.366483" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:45.267571" elapsed="0.098950"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:01:45.366708" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:01:45.366600" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.366581" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.367204" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:01:45.367540" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.367612" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:01:45.266827" elapsed="0.100892"/>
</kw>
<msg time="2026-04-19T00:01:45.367813" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:01:45.367857" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:45.262283" elapsed="0.105611"/>
</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-19T00:01:45.368229" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:01:45.367969" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.367952" elapsed="0.000354"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:01:45.262134" elapsed="0.106195"/>
</iter>
<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-19T00:01:45.373596" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.373489" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.373471" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:01:45.374873" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:01:45.374765" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:01:45.374747" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:01:45.375407" level="INFO">${karaf_connection_index} = 39</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-19T00:01:45.375105" elapsed="0.000329"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:01:45.375798" 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-19T00:01:45.375587" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:01:55.376937" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:01:45.376318" elapsed="10.001665">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:01:55.378273" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:01:55.378326" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:01:45.375974" elapsed="10.002377"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:02:05.379484" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:01:55.379079" elapsed="10.001285">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:02:05.380645" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:02:05.380707" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:01:55.378617" elapsed="10.002117"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:02:05.381948" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</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-19T00:02:05.381186" elapsed="0.000873">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:02:05.380848" elapsed="0.001551">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:02:05.380816" elapsed="0.001622">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</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-19T00:02:05.382636" elapsed="0.000024"/>
</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-19T00:02:05.382877" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:05.382735" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:02:05.382716" elapsed="0.000240"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:02:05.382993" elapsed="0.000016"/>
</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-19T00:02:05.384564" 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-19T00:02:05.385694" elapsed="0.000505"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:02:05.386473" elapsed="0.000437"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:02:05.383891" elapsed="0.003153"/>
</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-19T00:02:05.383310" elapsed="0.003809"/>
</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-19T00:01:45.374462" elapsed="20.012793">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</status>
</kw>
<msg time="2026-04-19T00:02:05.387366" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:02:05.387412" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</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-19T00:01:45.373809" elapsed="20.013627"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:02:05.387657" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:05.387541" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:05.387518" elapsed="0.000207"/>
</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-19T00:02:05.388545" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:05.388439" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:05.388421" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:02:05.388905" 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-19T00:02:05.389009" 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-19T00:02:05.388763" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:05.389548" level="INFO">{1: 10, 2: 12, 3: 39}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:05.389268" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:05.390016" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:05.389750" elapsed="0.000327"/>
</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-19T00:02:05.390709" elapsed="0.000287"/>
</kw>
<msg time="2026-04-19T00:02:05.391144" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:02:05.391194" level="INFO">${old_connection_index} = 39</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-19T00:02:05.390313" elapsed="0.000904"/>
</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-19T00:02:05.392068" elapsed="0.000196"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:02:15.393965" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:02:05.392914" elapsed="10.002381">No match found for '
' in 10 seconds
Output:
.</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-19T00:02:05.392430" elapsed="10.003045"/>
</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-19T00:02:15.396699" elapsed="0.000642"/>
</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-19T00:02:15.395851" elapsed="0.001603"/>
</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-19T00:02:05.391533" elapsed="10.005989"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:05.391295" elapsed="10.006297"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:05.391277" elapsed="10.006360"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:02:15.399008" level="INFO">${ip_address} = 10.30.171.206</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-19T00:02:15.398573" elapsed="0.000665"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:02:15.399313" elapsed="0.000052"/>
</return>
<msg time="2026-04-19T00:02:15.399541" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:02:15.397964" elapsed="0.001612"/>
</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-19T00:02:15.399791" elapsed="0.000613"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:02:15.400791" level="INFO">index=44
host=10.30.171.206
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-19T00:02:15.400923" level="INFO">${karaf_connection_object} = index=44
host=10.30.171.206
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-19T00:02:15.400633" elapsed="0.000328"/>
</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-19T00:02:15.401197" elapsed="0.005698"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:02:15.407536" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:02:25.432881" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:02:15.407158" elapsed="10.026628">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:02:25.447857" elapsed="0.000626"/>
</kw>
<kw name="Open 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-19T00:02:25.448655" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:02:25.448985" elapsed="0.000344"/>
</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-19T00:02:25.435116" elapsed="0.014274"/>
</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-19T00:02:25.434369" elapsed="0.015069"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:02:05.388144" elapsed="20.061385">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:02:25.449906" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.449993" elapsed="0.000022"/>
</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-19T00:01:45.373149" elapsed="40.077069">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:02:25.450347" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:02:25.450458" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:01:45.368586" elapsed="40.081905"/>
</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-19T00:02:25.450859" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.450595" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.450571" elapsed="0.000369"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:01:45.368453" elapsed="40.082517"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:01:45.154535" elapsed="40.296470"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:01:45.151964" elapsed="40.299119"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:01:45.147113" elapsed="40.304031"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:01:45.146665" elapsed="40.304527"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:01:45.143440" elapsed="40.307807"/>
</kw>
<kw name="Verify_Constant_On_Registered_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.457929" level="INFO">${session} = ClusterManagement__session_2</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-19T00:02:25.457618" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:02:25.458003" elapsed="0.000049"/>
</return>
<msg time="2026-04-19T00:02:25.458176" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:02:25.457268" elapsed="0.000933"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.492423" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:02:25.491964" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:02:25.493322" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:02:25.492949" elapsed="0.000532">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:02:25.493712" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:02:25.492614" elapsed="0.001124"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.494357" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:02:25.493900" elapsed="0.000484"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:02:25.494707" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:02:25.494888" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:02:25.494541" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.495367" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.495096" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.496827" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.496244" elapsed="0.000704"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.497814" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:02:25.497223" elapsed="0.000631"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.498578" elapsed="0.000044"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.499178" elapsed="0.000048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.499485" elapsed="0.000043"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:02:25.498316" elapsed="0.001262"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.497980" elapsed="0.001677"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:02:25.499831" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:02:25.500110" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:02:25.495827" elapsed="0.004309"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.495485" elapsed="0.004683"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.500334" elapsed="0.000205"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.500194" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.495464" elapsed="0.005136"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.501246" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:02:25.500743" elapsed="0.000532"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:02:25.501324" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:02:25.491351" elapsed="0.010095"/>
</kw>
<msg time="2026-04-19T00:02:25.501499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:02:25.479249" elapsed="0.022299"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.513518" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.525290" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.537483" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.537687" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.537858" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.538253" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.538110" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:02:25.538094" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.538469" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.538630" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.538786" elapsed="0.000070"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:02:25.538058" elapsed="0.000834"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.537936" elapsed="0.000982"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.539077" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.539156" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:02:25.539277" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:02:25.475156" elapsed="0.064150"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.563484" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:02:25.562966" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:02:25.564375" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:02:25.564057" elapsed="0.000471">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:02:25.564757" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:02:25.563674" elapsed="0.001109"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.565403" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:02:25.564943" elapsed="0.000488"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:02:25.565743" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:02:25.565890" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:02:25.565586" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.566355" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.566085" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:02:25.566800" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.566467" elapsed="0.000394"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.567527" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:02:25.567026" elapsed="0.000528"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.566886" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.566449" elapsed="0.001164"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.568255" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:02:25.567771" elapsed="0.000511"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:02:25.568331" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:02:25.562353" elapsed="0.006106"/>
</kw>
<msg time="2026-04-19T00:02:25.568510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:02:25.549952" elapsed="0.018607"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.580871" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.592795" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.604636" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.604830" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.604999" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.605379" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.605241" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:02:25.605226" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.605591" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.605751" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.605907" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:02:25.605196" elapsed="0.000763"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.605092" elapsed="0.000893"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.606140" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.606216" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:02:25.606330" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:02:25.549052" elapsed="0.057303"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:02:25.607617" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:02:25.607368" elapsed="0.000317">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:02:25.607776" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:02:25.607003" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.608128" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.607871" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.608689" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:02:25.608397" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.608209" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.607853" elapsed="0.000918"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.611112" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:02:25.608959" elapsed="0.002180"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:02:25.611191" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:02:25.611344" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:02:25.606677" elapsed="0.004692"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.613064" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.612794" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.613534" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.613285" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.613966" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.613723" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.614416" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.614175" elapsed="0.000283"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:02:25.615267" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:02:25.615065" elapsed="0.000227"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:02:25.615615" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:02:25.615439" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:02:25.615783" elapsed="0.000219"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.616436" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.616173" elapsed="0.000307"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:02:25.616522" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:02:25.616676" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:02:25.614653" elapsed="0.002048"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:02:25.631898" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0kthu5o3s9zvstt389a7gpj790.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:02:25.632219" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:02:25.632462" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:02:25.618968" elapsed="0.013604"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.616770" elapsed="0.015904"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.633097" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.632733" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.616752" elapsed="0.016545"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.639675" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.635612" elapsed="0.004131"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.635128" elapsed="0.004663"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.635086" elapsed="0.004741"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.643637" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.640243" elapsed="0.003462"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.639905" elapsed="0.003850"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.639882" elapsed="0.003911"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.644624" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:02:25.644025" elapsed="0.000675"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.645158" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.644799" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.645772" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:02:25.645467" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.645308" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.644774" elapsed="0.001082"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.646410" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:02:25.646008" elapsed="0.000429"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.646732" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.646506" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.647286" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:02:25.646964" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.646812" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.646488" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:02:25.647510" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:02:25.648323" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:02:25.648017" elapsed="0.000333"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:02:25.648523" elapsed="0.002295"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:02:25.634122" elapsed="0.016767"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:02:25.651085" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:02:25.650960" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.650942" elapsed="0.000229"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.651319" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.651387" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:02:25.653636" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:02:25.611694" elapsed="0.041971"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:02:25.653736" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:02:25.653889" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:02:25.464514" elapsed="0.189401"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.654271" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.654019" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.654002" elapsed="0.000363"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:02:25.654397" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:02:25.654545" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:02:25.458450" elapsed="0.196122"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:02:25.654783" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.654646" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.654629" elapsed="0.000214"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:02:25.655386" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7328a40&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:02:25.655018" elapsed="0.000394"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:02:25.655861" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:02:25.655564" elapsed="0.000323"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:02:25.655936" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:02:25.656111" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:02:25.456715" elapsed="0.199421"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:02:25.656287" elapsed="0.000487"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:02:25.656834" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:02:25.452031" elapsed="0.204931"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:02:25.451860" elapsed="0.205136"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:02:25.451724" elapsed="0.205303"/>
</for>
<arg>${registered_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="PASS" start="2026-04-19T00:02:25.451490" elapsed="0.205610"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.658333" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.657939" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.657921" elapsed="0.000499"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:02:25.658561" elapsed="0.000317"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.664056" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:02:25.663627" elapsed="0.000458"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T00:02:25.664306" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:02:25.664162" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.664144" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.664530" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.664698" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.664864" elapsed="0.000035"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.665056" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.665217" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.665376" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.665533" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:02:25.663295" elapsed="0.002313"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:25.657731" elapsed="0.007927"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:02:25.657375" elapsed="0.008325"/>
</kw>
<doc>Verify that the rpc response comes from the local node.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:01:45.142860" elapsed="40.522881"/>
</test>
<test id="s1-s2-t6" name="Reregister_Rpc_On_Node" line="52">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:02:25.669776" elapsed="0.000214"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:02:25.669380" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.671093" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.670927" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.670908" elapsed="0.000257"/>
</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-19T00:02:25.675942" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.675836" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.675819" elapsed="0.000189"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.676993" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:02:25.676616" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.677518" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:02:25.677214" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:02:25.677588" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:02:25.677741" level="INFO">${index_list} = [1, 2, 3]</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-19T00:02:25.676244" elapsed="0.001521"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.683190" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.683080" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.683059" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.684407" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.684302" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.684284" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:02:25.684901" 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-19T00:02:25.684612" elapsed="0.000316"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:02:25.685338" 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-19T00:02:25.685098" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:02:25.725975" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:02:25.685845" elapsed="0.040247"/>
</kw>
<msg time="2026-04-19T00:02:25.726258" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:02:25.726306" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:02:25.685517" elapsed="0.040826"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:02:25.760113" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:02:25.726844" elapsed="0.033503"/>
</kw>
<msg time="2026-04-19T00:02:25.760571" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:02:25.760617" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:02:25.726509" elapsed="0.034147"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.761140" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.760773" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.760737" elapsed="0.000493"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.761745" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.761371" elapsed="0.000453"/>
</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-19T00:02:25.762133" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.761889" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.761871" elapsed="0.000342"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:02:25.762252" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:02:25.763910" elapsed="0.000832"/>
</kw>
<kw name="Open 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-19T00:02:25.765010" elapsed="0.000465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:02:25.765725" elapsed="0.000388"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:02:25.763154" elapsed="0.003058"/>
</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-19T00:02:25.762567" elapsed="0.003708"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:02:25.683977" elapsed="0.082398"/>
</kw>
<msg time="2026-04-19T00:02:25.766470" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:02:25.766516" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:02:25.683405" elapsed="0.083149"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:02:25.766738" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:02:25.766630" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.766612" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.767253" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.767598" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.767669" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:02:25.682722" elapsed="0.085057"/>
</kw>
<msg time="2026-04-19T00:02:25.767874" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:02:25.767918" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:02:25.678141" elapsed="0.089814"/>
</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-19T00:02:25.768291" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.768034" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.768012" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:02:25.677989" elapsed="0.090402"/>
</iter>
<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-19T00:02:25.773979" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.773871" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.773852" elapsed="0.000283"/>
</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-19T00:02:25.775306" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.775198" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.775180" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:02:25.775840" level="INFO">${karaf_connection_index} = 12</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-19T00:02:25.775509" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:02:25.776312" 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-19T00:02:25.776092" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:02:25.815437" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:02:25.776821" elapsed="0.038976"/>
</kw>
<msg time="2026-04-19T00:02:25.816277" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:02:25.816386" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:02:25.776492" elapsed="0.039978"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:02:25.849663" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:02:25.817880" elapsed="0.032004"/>
</kw>
<msg time="2026-04-19T00:02:25.850075" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:02:25.850125" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:02:25.816935" elapsed="0.033229"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.850536" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.850267" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.850237" elapsed="0.000385"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:25.851126" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:25.850764" elapsed="0.000439"/>
</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-19T00:02:25.851491" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.851273" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.851253" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:02:25.851612" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:02:25.853184" 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-19T00:02:25.854204" elapsed="0.000449"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:02:25.854901" elapsed="0.000375"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:02:25.852534" elapsed="0.002840"/>
</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-19T00:02:25.851935" elapsed="0.003501"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:02:25.774872" elapsed="0.080664"/>
</kw>
<msg time="2026-04-19T00:02:25.855632" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:02:25.855678" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:02:25.774317" elapsed="0.081399"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:02:25.855907" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:02:25.855796" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.855777" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.856435" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:02:25.856796" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:02:25.856869" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:02:25.773524" elapsed="0.083459"/>
</kw>
<msg time="2026-04-19T00:02:25.857100" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:02:25.857146" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:02:25.768660" elapsed="0.088526"/>
</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-19T00:02:25.857516" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:25.857266" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.857248" elapsed="0.000346"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:02:25.768525" elapsed="0.089093"/>
</iter>
<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-19T00:02:25.863393" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.863268" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.863248" elapsed="0.000216"/>
</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-19T00:02:25.864712" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:25.864603" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:25.864585" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:02:25.865243" level="INFO">${karaf_connection_index} = 44</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-19T00:02:25.864920" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:02:25.865644" 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-19T00:02:25.865429" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:02:35.867004" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:02:25.866176" elapsed="10.001781">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:02:35.868250" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:02:35.868301" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:02:25.865825" elapsed="10.002500"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:02:45.869469" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:02:35.869077" elapsed="10.001159">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:02:45.870486" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:02:45.870538" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:02:35.868617" elapsed="10.001946"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:02:45.871794" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Reregister_Rpc_On_Node"</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-19T00:02:45.870999" elapsed="0.000860">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Reregister_Rpc_On_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:02:45.870689" elapsed="0.001243">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Reregister_Rpc_On_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:02:45.870657" elapsed="0.001311">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Reregister_Rpc_On_Node"</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-19T00:02:45.872152" 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-19T00:02:45.872383" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:02:45.872241" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:02:45.872224" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:02:45.872498" elapsed="0.000016"/>
</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-19T00:02:45.874007" elapsed="0.000751"/>
</kw>
<kw name="Open 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-19T00:02:45.875060" elapsed="0.000480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:02:45.875789" elapsed="0.000353"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:02:45.873395" elapsed="0.002844"/>
</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-19T00:02:45.872798" elapsed="0.003503"/>
</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-19T00:02:25.864218" elapsed="20.012171">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Reregister_Rpc_On_Node"</status>
</kw>
<msg time="2026-04-19T00:02:45.876504" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:02:45.876550" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Reregister_Rpc_On_Node"</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-19T00:02:25.863612" elapsed="20.012962"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:02:45.876762" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:45.876652" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:45.876634" elapsed="0.000194"/>
</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-19T00:02:45.877639" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:02:45.877535" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:45.877517" elapsed="0.000254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:02:45.878286" 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-19T00:02:45.878395" 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-19T00:02:45.877924" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:45.878837" level="INFO">{1: 10, 2: 12, 3: 44}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:45.878571" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:02:45.879369" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:02:45.879059" elapsed="0.000360"/>
</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-19T00:02:45.879973" elapsed="0.000279"/>
</kw>
<msg time="2026-04-19T00:02:45.880351" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:02:45.880397" level="INFO">${old_connection_index} = 44</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-19T00:02:45.879598" 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-19T00:02:45.881260" elapsed="0.000188"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:02:55.883077" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:02:45.882083" elapsed="10.002036">No match found for '
' in 10 seconds
Output:
.</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-19T00:02:45.881613" elapsed="10.002649"/>
</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-19T00:02:55.885158" elapsed="0.000430"/>
</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-19T00:02:55.884562" elapsed="0.001108"/>
</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-19T00:02:45.880715" elapsed="10.005004"/>
</kw>
<status status="PASS" start="2026-04-19T00:02:45.880497" elapsed="10.005275"/>
</branch>
<status status="PASS" start="2026-04-19T00:02:45.880478" elapsed="10.005327"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:02:55.886774" level="INFO">${ip_address} = 10.30.171.206</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-19T00:02:55.886452" elapsed="0.000350"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:02:55.886856" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:02:55.887016" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:02:55.886069" elapsed="0.001040"/>
</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-19T00:02:55.887273" elapsed="0.000432"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:02:55.887999" level="INFO">index=49
host=10.30.171.206
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-19T00:02:55.888121" level="INFO">${karaf_connection_object} = index=49
host=10.30.171.206
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-19T00:02:55.887872" elapsed="0.000276"/>
</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-19T00:02:55.888300" elapsed="0.002457"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:02:55.891220" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:03:05.999702" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:02:55.890919" elapsed="10.109613">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:03:06.013845" 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-19T00:03:06.014653" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:03:06.014979" elapsed="0.000120"/>
</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-19T00:03:06.002068" elapsed="0.013094"/>
</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-19T00:03:06.001078" elapsed="0.014230"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:02:45.877239" elapsed="20.138172">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:03:06.015801" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.015881" elapsed="0.000020"/>
</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-19T00:02:25.862804" elapsed="40.153193">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:03:06.016408" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:03:06.016455" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:02:25.857901" elapsed="40.158578"/>
</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-19T00:03:06.016859" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.016571" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.016549" elapsed="0.000391"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:02:25.857762" elapsed="40.159210"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:02:25.677817" elapsed="40.339189"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:02:25.675477" elapsed="40.341605"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:02:25.670634" elapsed="40.346508"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:02:25.670210" elapsed="40.346980"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:02:25.666846" elapsed="40.350401"/>
</kw>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.018982" 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-19T00:03:06.018664" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:03:06.019072" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:03:06.019225" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:03:06.018323" elapsed="0.000927"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.019803" level="INFO">&amp;{mapping} = { CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.019409" elapsed="0.000422"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.053195" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:06.052782" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:06.053976" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:06.053716" elapsed="0.000350">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:06.054162" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:06.053386" elapsed="0.000801"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.054734" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:06.054345" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:06.055073" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:06.055299" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:06.054916" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.055725" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.055476" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.056769" level="INFO">mapping: {'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.056473" elapsed="0.000369"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.057293" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.056998" elapsed="0.000321"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.058210" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:03:06.057680" elapsed="0.000556"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:03:06.059326" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.058826" elapsed="0.000540"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:03:06.059533" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:03:06.059798" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:03:06.058420" elapsed="0.001404"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.059971" elapsed="0.000445"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-19T00:03:06.057551" elapsed="0.002907"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:03:06.057373" elapsed="0.003120"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:03:06.060535" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:03:06.060691" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:03:06.056155" elapsed="0.004562"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.055845" elapsed="0.004903"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.060927" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.060773" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.055823" elapsed="0.005179"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.061606" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:06.061155" elapsed="0.000479"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:06.061681" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:06.052168" elapsed="0.009636"/>
</kw>
<msg time="2026-04-19T00:03:06.061856" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:06.039914" elapsed="0.021990"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.075466" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.087353" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.099682" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.099949" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.100142" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.100526" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.100380" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:06.100363" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.100741" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.100935" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.101116" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:06.100330" elapsed="0.000841"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.100222" elapsed="0.000975"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.101337" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.101412" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:03:06.101532" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:06.035533" elapsed="0.066026"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.125664" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:06.125279" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:06.126455" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:06.126200" elapsed="0.000332">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:06.126626" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:06.125849" elapsed="0.000801"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.127280" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:06.126830" elapsed="0.000479"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:06.127607" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:06.127755" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:06.127465" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.128205" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.127933" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:03:06.128609" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.128319" elapsed="0.000349"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.129220" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:06.128831" elapsed="0.000417"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.128693" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.128301" elapsed="0.001003"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.130017" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:06.129447" elapsed="0.000658"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:06.130157" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:06.124632" elapsed="0.005679"/>
</kw>
<msg time="2026-04-19T00:03:06.130368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:06.112237" elapsed="0.018185"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.142596" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.154315" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.166041" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.166234" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.166403" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.166762" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.166625" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:06.166611" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.167008" elapsed="0.000034"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.167187" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.167345" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:06.166583" elapsed="0.000814"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.166483" elapsed="0.000940"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.167559" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.167633" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:03:06.167747" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:06.111360" elapsed="0.056414"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:06.169106" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:06.168823" elapsed="0.000350">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:06.169265" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:06.168489" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.169600" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.169360" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.170157" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:06.169849" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.169680" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.169342" elapsed="0.000899"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.172498" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:06.170385" elapsed="0.002140"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:03:06.172577" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:06.172731" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:03:06.168164" elapsed="0.004591"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.174298" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.174049" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.174739" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.174500" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.175194" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.174932" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.175621" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.175382" elapsed="0.000283"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:06.176469" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:03:06.176273" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:03:06.176816" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:03:06.176642" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.177010" elapsed="0.000223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.177627" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.177382" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:03:06.177712" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:06.177865" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:03:06.175859" elapsed="0.002031"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:03:06.192503" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01rwjw77sr6bbk1kewipq50iwyp0.node0', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:03:06.192572" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T00:03:06.192715" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:03:06.180164" elapsed="0.012587"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.177965" elapsed="0.014849"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.193109" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.192850" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.177941" elapsed="0.015343"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.196597" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.194343" elapsed="0.002297"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.194126" elapsed="0.002549"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.194107" elapsed="0.002593"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.199249" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.196985" elapsed="0.002309"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.196756" elapsed="0.002572"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.196740" elapsed="0.002612"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.199890" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:06.199510" elapsed="0.000407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.200229" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.199986" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.200758" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:06.200462" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.200310" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.199968" elapsed="0.000872"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.201400" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:06.201019" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.201718" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.201495" elapsed="0.000279"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.202257" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:06.201947" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.201797" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.201477" elapsed="0.000861"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:06.202484" elapsed="0.000343"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:03:06.203283" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:06.202986" elapsed="0.000323"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.203457" elapsed="0.002334"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:03:06.193669" elapsed="0.012186"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:03:06.206063" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T00:03:06.205928" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.205909" elapsed="0.000244"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.206294" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.206361" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T00:03:06.208531" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:03:06.173106" elapsed="0.035452"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:03:06.208751" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:03:06.208902" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:03:06.024792" elapsed="0.184135"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.209337" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.209065" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.209047" elapsed="0.000382"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:03:06.209462" elapsed="0.000025"/>
</return>
<arg>${REGISTER_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:03:06.020347" elapsed="0.189237"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Register the get-constant rpc on the requested node with given constant.</doc>
<status status="PASS" start="2026-04-19T00:03:06.017856" elapsed="0.191788"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.210188" elapsed="0.000226"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:03:06.210569" elapsed="0.000151"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:03:06.209859" elapsed="0.000917"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.211276" elapsed="0.000187"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:03:06.211608" elapsed="0.000187"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:03:06.211937" elapsed="0.000163"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:03:06.212240" elapsed="0.000147"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:03:06.210954" elapsed="0.001489"/>
</kw>
<arg>${UNREGISTERED_RPC_NODE}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:03:06.017467" elapsed="0.195026"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.213724" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.213348" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.213331" elapsed="0.000478"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:06.213948" elapsed="0.000370"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.219481" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:06.219047" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T00:03:06.219729" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:03:06.219585" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.219567" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.219949" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.220130" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.220296" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.220453" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.220611" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.220768" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.220925" elapsed="0.000019"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:03:06.218723" elapsed="0.002291"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:06.213140" elapsed="0.008012"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:03:06.212757" elapsed="0.008440"/>
</kw>
<doc>Reregister the rpc.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:02:25.666312" elapsed="40.554925"/>
</test>
<test id="s1-s2-t7" name="Invoke_Rpc_On_Each_Node_Again" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:03:06.224506" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:03:06.224242" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.225789" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.225679" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.225660" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.230697" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.230585" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.230567" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.231751" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:03:06.231367" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.232251" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:03:06.231931" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:03:06.232321" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:06.232474" level="INFO">${index_list} = [1, 2, 3]</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-19T00:03:06.230982" elapsed="0.001516"/>
</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-19T00:03:06.237968" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.237860" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.237841" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.239279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.239165" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.239105" elapsed="0.000242"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:06.239812" 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-19T00:03:06.239512" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:03:06.240227" 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-19T00:03:06.239994" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:03:06.283285" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:03:06.240743" elapsed="0.042649"/>
</kw>
<msg time="2026-04-19T00:03:06.283576" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:03:06.283625" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:03:06.240409" elapsed="0.043253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:03:06.320620" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:03:06.284208" elapsed="0.036594"/>
</kw>
<msg time="2026-04-19T00:03:06.321064" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:03:06.321166" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:03:06.283836" elapsed="0.037407"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.321722" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.321367" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.321332" elapsed="0.000506"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.322487" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.322054" elapsed="0.000617"/>
</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-19T00:03:06.323059" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.322758" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.322735" elapsed="0.000429"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:03:06.323212" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:06.325015" 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-19T00:03:06.326160" elapsed="0.000478"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:03:06.326898" elapsed="0.000389"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:03:06.324360" elapsed="0.003034"/>
</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-19T00:03:06.323603" elapsed="0.003858"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:03:06.238795" elapsed="0.088767"/>
</kw>
<msg time="2026-04-19T00:03:06.327658" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:03:06.327706" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:03:06.238199" elapsed="0.089546"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:03:06.327934" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:03:06.327823" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.327805" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.328457" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.328804" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.328879" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:03:06.237519" elapsed="0.091475"/>
</kw>
<msg time="2026-04-19T00:03:06.329109" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:03:06.329198" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:03:06.232860" elapsed="0.096381"/>
</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-19T00:03:06.329579" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.329322" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.329303" elapsed="0.000357"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:03:06.232724" elapsed="0.096960"/>
</iter>
<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-19T00:03:06.335399" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.335285" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.335262" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.336629" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.336520" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.336501" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:06.337196" level="INFO">${karaf_connection_index} = 12</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-19T00:03:06.336836" elapsed="0.000390"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:03:06.337602" 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-19T00:03:06.337382" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:03:06.379181" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:03:06.338163" elapsed="0.041222"/>
</kw>
<msg time="2026-04-19T00:03:06.379685" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:03:06.379736" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:03:06.337783" elapsed="0.041992"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:03:06.414921" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:03:06.380385" elapsed="0.034670"/>
</kw>
<msg time="2026-04-19T00:03:06.415218" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:03:06.415264" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:03:06.379986" elapsed="0.035316"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.415619" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.415390" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.415368" elapsed="0.000329"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:06.416152" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:06.415830" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.416502" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.416294" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.416276" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:03:06.416617" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:06.418104" 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-19T00:03:06.419154" elapsed="0.000462"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:03:06.419876" elapsed="0.000378"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:03:06.417468" elapsed="0.002885"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T00:03:06.416891" elapsed="0.003528"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:03:06.336208" elapsed="0.084311"/>
</kw>
<msg time="2026-04-19T00:03:06.420609" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:03:06.420655" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:03:06.335618" elapsed="0.085074"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:03:06.420874" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:03:06.420767" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.420749" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.421381" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:06.421707" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.421783" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:03:06.334856" elapsed="0.087035"/>
</kw>
<msg time="2026-04-19T00:03:06.421984" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:03:06.422048" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:03:06.329957" elapsed="0.092131"/>
</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-19T00:03:06.422406" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:06.422164" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.422147" elapsed="0.000378"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:03:06.329818" elapsed="0.092736"/>
</iter>
<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-19T00:03:06.428149" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.428017" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.427998" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:03:06.429373" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:06.429264" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:06.429228" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:06.429879" level="INFO">${karaf_connection_index} = 49</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-19T00:03:06.429582" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:03:06.430287" 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-19T00:03:06.430073" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:03:16.431613" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:03:06.430792" elapsed="10.001886">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:03:16.432958" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:03:16.433010" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:03:06.430466" elapsed="10.002593"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:03:26.434419" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:03:16.433786" elapsed="10.001574">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:03:26.435656" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:03:26.435708" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:03:16.433336" elapsed="10.002397"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:03:26.436980" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</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-19T00:03:26.436244" elapsed="0.000816">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:03:26.435866" elapsed="0.001269">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:03:26.435830" elapsed="0.001343">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</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-19T00:03:26.437338" 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-19T00:03:26.437567" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:26.437428" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:26.437410" elapsed="0.000233"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:03:26.437682" 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-19T00:03:26.439269" elapsed="0.000841"/>
</kw>
<kw name="Open 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-19T00:03:26.440386" elapsed="0.000462"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:03:26.441138" elapsed="0.000368"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:03:26.438592" elapsed="0.003016"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T00:03:26.437982" elapsed="0.003691"/>
</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-19T00:03:06.428921" elapsed="20.012840">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<msg time="2026-04-19T00:03:26.441869" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:03:26.441915" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</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-19T00:03:06.428364" elapsed="20.013729"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:03:26.442298" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:26.442183" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:26.442164" elapsed="0.000201"/>
</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-19T00:03:26.443191" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:26.443084" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:26.443065" elapsed="0.000221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:03:26.443783" 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-19T00:03:26.443895" 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-19T00:03:26.443437" elapsed="0.000485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:26.444402" level="INFO">{1: 10, 2: 12, 3: 49}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:26.444115" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:26.444897" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:26.444638" 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-19T00:03:26.445472" elapsed="0.000266"/>
</kw>
<msg time="2026-04-19T00:03:26.445836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:03:26.445883" level="INFO">${old_connection_index} = 49</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-19T00:03:26.445114" elapsed="0.000791"/>
</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-19T00:03:26.446733" elapsed="0.000196"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:03:36.448753" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:03:26.447608" elapsed="10.002229">No match found for '
' in 10 seconds
Output:
.</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-19T00:03:26.447110" elapsed="10.002865"/>
</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-19T00:03:36.450896" elapsed="0.000469"/>
</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-19T00:03:36.450319" elapsed="0.001133"/>
</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-19T00:03:26.446228" elapsed="10.005274"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:26.445981" elapsed="10.005573"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:26.445963" elapsed="10.005624"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:36.452588" level="INFO">${ip_address} = 10.30.171.206</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-19T00:03:36.452268" elapsed="0.000347"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:03:36.452668" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:03:36.452839" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:03:36.451838" elapsed="0.001026"/>
</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-19T00:03:36.453018" elapsed="0.000467"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:03:36.453782" level="INFO">index=54
host=10.30.171.206
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-19T00:03:36.453912" level="INFO">${karaf_connection_object} = index=54
host=10.30.171.206
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-19T00:03:36.453655" elapsed="0.000284"/>
</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-19T00:03:36.454122" elapsed="0.002288"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:03:36.456829" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:03:46.525669" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:03:36.456570" elapsed="10.070007">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:03:46.538599" elapsed="0.000638"/>
</kw>
<kw name="Open 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-19T00:03:46.539404" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:03:46.539720" elapsed="0.000137"/>
</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-19T00:03:46.528258" elapsed="0.011655"/>
</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-19T00:03:46.527247" elapsed="0.012714"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:03:26.442766" elapsed="20.097300">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:03:46.540442" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.540521" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:03:06.427670" elapsed="40.112969">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:03:46.540761" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:03:46.540826" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:03:06.422818" elapsed="40.118042"/>
</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-19T00:03:46.541240" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.540959" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.540937" elapsed="0.000382"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:03:06.422681" elapsed="40.118670"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:03:06.232550" elapsed="40.308837"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:03:06.230220" elapsed="40.311225"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:03:06.225388" elapsed="40.316114"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:03:06.224917" elapsed="40.316637"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:03:06.222181" elapsed="40.319428"/>
</kw>
<kw name="Verify_Constant_On_Registered_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.548264" 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-19T00:03:46.547931" elapsed="0.000360"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:03:46.548339" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:03:46.548491" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:03:46.547510" elapsed="0.001005"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.582981" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.582534" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.583890" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.583531" elapsed="0.000536">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:46.584298" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:46.583195" elapsed="0.001130"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.584984" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:46.584487" elapsed="0.000524"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.585353" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:46.585518" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:46.585189" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.585969" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.585700" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.587440" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.586834" elapsed="0.000732"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.588483" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:03:46.587847" elapsed="0.000677"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.589264" elapsed="0.000046"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.589779" elapsed="0.000048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.590131" elapsed="0.000047"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:03:46.588964" elapsed="0.001267"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.588649" elapsed="0.001662"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:03:46.590487" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:03:46.590751" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:03:46.586432" elapsed="0.004345"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.586099" elapsed="0.004711"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.590980" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.590835" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.586080" elapsed="0.005011"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.591724" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.591234" elapsed="0.000518"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.591827" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:46.581877" elapsed="0.010078"/>
</kw>
<msg time="2026-04-19T00:03:46.592007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:46.569784" elapsed="0.022303"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.604221" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.615969" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.627659" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.627899" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.628087" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.628444" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.628307" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:46.628293" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.628655" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.628812" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.628968" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:46.628265" elapsed="0.000755"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.628163" elapsed="0.000897"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.629201" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.629275" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:03:46.629384" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:46.565663" elapsed="0.063746"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.653668" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.653110" elapsed="0.000595"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.654793" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.654379" elapsed="0.000599">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:46.655283" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:46.653911" elapsed="0.001406"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.656139" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:46.655526" elapsed="0.000649"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.656585" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:46.656754" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:46.656381" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.657339" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.656986" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:03:46.657907" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.657488" elapsed="0.000495"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.658827" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.658218" elapsed="0.000643"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.658015" elapsed="0.000941"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.657464" elapsed="0.001525"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.659785" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.659201" elapsed="0.000635"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.659906" elapsed="0.000039"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:46.652298" elapsed="0.007787"/>
</kw>
<msg time="2026-04-19T00:03:46.660153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:46.640003" elapsed="0.020213"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.680483" elapsed="0.000093"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.692558" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.704325" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.704562" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.704751" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.705218" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.705062" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:46.705039" elapsed="0.000265"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.705446" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.705606" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.705763" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:46.704977" elapsed="0.000839"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.704844" elapsed="0.001002"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.705990" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.706094" elapsed="0.000021"/>
</return>
<msg time="2026-04-19T00:03:46.706264" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:46.639138" elapsed="0.067155"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.707933" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.707583" elapsed="0.000436">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:46.708133" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:46.707126" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.708497" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.708230" elapsed="0.000323"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.709226" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.708908" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.708577" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.708211" elapsed="0.001098"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.711586" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:46.709453" elapsed="0.002160"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:03:46.711664" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:03:46.711993" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:03:46.706721" elapsed="0.005297"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.713580" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.713320" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.714011" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.713773" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.714460" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.714212" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.714884" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.714645" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:46.715745" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:03:46.715538" elapsed="0.000233"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:03:46.716122" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:03:46.715928" elapsed="0.000221"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:03:46.716293" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.716950" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.716703" elapsed="0.000291"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:03:46.717051" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:03:46.717208" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:03:46.715142" elapsed="0.002091"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:03:46.730261" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01rwjw77sr6bbk1kewipq50iwyp0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:03:46.730399" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:03:46.730508" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:03:46.721168" elapsed="0.009366"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.717302" elapsed="0.013278"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.730754" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.730607" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.717284" elapsed="0.013594"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.736524" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.731943" elapsed="0.004689"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.731696" elapsed="0.005014"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.731678" elapsed="0.005088"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.741472" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.737412" elapsed="0.004107"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.736885" elapsed="0.004668"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.736850" elapsed="0.004728"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.742169" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.741734" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.742495" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.742266" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.743048" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.742730" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.742578" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.742248" elapsed="0.000884"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.743644" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.743281" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.743986" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.743738" elapsed="0.000321"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.744528" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.744234" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.744083" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.743721" elapsed="0.000894"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:46.744758" elapsed="0.000365"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:03:46.745571" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.745281" elapsed="0.000316"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:03:46.745743" elapsed="0.002312"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:03:46.731256" elapsed="0.016864"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:03:46.748301" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:03:46.748192" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.748173" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.748529" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.748602" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T00:03:46.750828" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:03:46.712371" elapsed="0.038486"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.750927" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:03:46.751096" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:03:46.554749" elapsed="0.196373"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.751498" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.751264" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.751246" elapsed="0.000350"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.751628" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:03:46.751778" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:03:46.548793" elapsed="0.203012"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:03:46.752044" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:46.751890" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.751862" elapsed="0.000244"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:03:46.752600" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7494950&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:03:46.752247" elapsed="0.000381"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:03:46.753094" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:03:46.752778" elapsed="0.000342"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:03:46.753169" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:03:46.753315" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:03:46.546924" elapsed="0.206416"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:03:46.753489" elapsed="0.000353"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:03:46.753890" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:03:46.542426" elapsed="0.211584"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:03:46.542257" elapsed="0.211804"/>
</iter>
<iter>
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.759954" level="INFO">${session} = ClusterManagement__session_2</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-19T00:03:46.759641" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:03:46.760148" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:03:46.760304" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:03:46.759302" elapsed="0.001027"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.794663" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.794232" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.795560" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.795243" elapsed="0.000481">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:46.795982" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:46.794850" elapsed="0.001158"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.796623" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:46.796187" elapsed="0.000464"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.796968" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:46.797147" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:46.796807" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.797645" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.797376" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.799144" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.798550" elapsed="0.000719"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.800160" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:03:46.799526" elapsed="0.000674"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.800952" elapsed="0.000043"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.801506" elapsed="0.000048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.801823" elapsed="0.000042"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:03:46.800685" elapsed="0.001230"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.800332" elapsed="0.001665"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:03:46.802193" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:03:46.802459" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:03:46.798142" elapsed="0.004344"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.797769" elapsed="0.004750"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.802686" elapsed="0.000228"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.802545" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.797746" elapsed="0.005228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.803674" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.803132" elapsed="0.000571"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.803754" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:46.793607" elapsed="0.010271"/>
</kw>
<msg time="2026-04-19T00:03:46.803962" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:46.781317" elapsed="0.022697"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.816039" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.827792" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.839582" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.839779" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.839971" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.840425" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.840280" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:46.840263" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.840639" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.840799" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.840956" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:46.840230" elapsed="0.000779"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.840119" elapsed="0.000935"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.841199" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.841275" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:03:46.841392" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:46.777211" elapsed="0.064207"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.865395" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.864928" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.866378" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.866014" elapsed="0.000528">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:46.866786" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:46.865679" elapsed="0.001138"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.867436" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:46.866979" elapsed="0.000485"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.867779" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:46.867933" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:46.867618" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.868418" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.868153" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:03:46.868859" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.868527" elapsed="0.000392"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.869580" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.869101" elapsed="0.000508"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.868944" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.868509" elapsed="0.001157"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.870293" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.869804" elapsed="0.000516"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.870368" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:46.864318" elapsed="0.006176"/>
</kw>
<msg time="2026-04-19T00:03:46.870586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:46.852138" elapsed="0.018498"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.882727" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.894589" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.906436" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.906624" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.906790" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.907163" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.907011" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:46.906996" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.907373" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.907531" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.907692" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:46.906968" elapsed="0.000776"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.906865" elapsed="0.000905"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.907906" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.908016" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:46.908141" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:46.851211" elapsed="0.056955"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.909471" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.909194" elapsed="0.000343">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:46.909633" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:46.908812" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.910003" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.909725" elapsed="0.000352"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.910572" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.910277" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.910101" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.909707" elapsed="0.000946"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.912932" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:46.910798" elapsed="0.002160"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:03:46.913010" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:03:46.913181" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:03:46.908494" elapsed="0.004712"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.914709" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.914463" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.915151" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.914899" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.915582" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.915335" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.916045" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.915767" elapsed="0.000325"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:46.916887" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:03:46.916687" elapsed="0.000226"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:03:46.917250" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:03:46.917074" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:03:46.917419" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.918022" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.917778" elapsed="0.000305"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:03:46.918126" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:46.918280" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:03:46.916291" elapsed="0.002013"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:03:46.931838" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0kthu5o3s9zvstt389a7gpj790.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:03:46.932086" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:03:46.932233" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:03:46.920558" elapsed="0.011713"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.918372" elapsed="0.013966"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.932643" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.932378" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.918354" elapsed="0.014481"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.940441" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.935146" elapsed="0.005403"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.934637" elapsed="0.005987"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.934595" elapsed="0.006085"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.945398" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:46.941316" elapsed="0.004128"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.940800" elapsed="0.004678"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.940764" elapsed="0.004738"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.946130" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.945697" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.946459" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.946227" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.947147" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.946693" elapsed="0.000480"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.946540" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.946209" elapsed="0.001021"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.947743" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.947379" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.948109" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.947839" elapsed="0.000327"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.948635" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.948340" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:46.948189" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.947821" elapsed="0.000895"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:46.948859" elapsed="0.000364"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:03:46.949666" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:46.949382" elapsed="0.000310"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:03:46.949839" elapsed="0.002335"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:03:46.933634" elapsed="0.018604"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:03:46.952416" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:03:46.952309" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.952291" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.952643" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:03:46.952709" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:03:46.954927" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:03:46.913528" elapsed="0.041428"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.955039" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:46.955197" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:03:46.766546" elapsed="0.188678"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:46.955560" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:46.955328" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.955311" elapsed="0.000340"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:03:46.955684" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:03:46.955833" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:03:46.760580" elapsed="0.195313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:03:46.956150" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:03:46.955971" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:46.955953" elapsed="0.000257"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:03:46.956703" level="INFO">${xml} = &lt;Element 'output' at 0x7826f759e8e0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:03:46.956351" elapsed="0.000379"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:03:46.957199" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:03:46.956882" elapsed="0.000343"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:03:46.957274" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:03:46.957426" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:03:46.758849" elapsed="0.198608"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:03:46.957640" elapsed="0.000360"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:03:46.958066" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:03:46.754317" elapsed="0.203874"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:03:46.754150" elapsed="0.204076"/>
</iter>
<iter>
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.964095" level="INFO">${session} = ClusterManagement__session_3</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-19T00:03:46.963752" elapsed="0.000370"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:03:46.964169" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:46.964317" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:03:46.963410" elapsed="0.000931"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:46.998424" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:46.997979" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:46.999325" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.998937" elapsed="0.000541">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:46.999703" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:46.998609" elapsed="0.001119"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.000389" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:46.999889" elapsed="0.000528"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:47.000732" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:47.000877" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:47.000573" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.001339" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.001073" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.002820" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.002232" elapsed="0.000727"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.003842" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:03:47.003244" elapsed="0.000637"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.004762" elapsed="0.000045"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.005367" elapsed="0.000048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.005681" elapsed="0.000041"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:03:47.004356" elapsed="0.001417"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:03:47.004007" elapsed="0.001845"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:03:47.006039" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:03:47.006301" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:03:47.001810" elapsed="0.004517"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:47.001452" elapsed="0.004908"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.006526" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:47.006385" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:47.001433" elapsed="0.005168"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.007215" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:47.006733" elapsed="0.000509"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:47.007291" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:46.997377" elapsed="0.010033"/>
</kw>
<msg time="2026-04-19T00:03:47.007462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:46.985319" elapsed="0.022190"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.019449" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.031112" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.042789" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.042979" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.043162" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.043515" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:47.043378" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:47.043364" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.043725" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.043887" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.044074" elapsed="0.000053"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:47.043336" elapsed="0.000828"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:47.043237" elapsed="0.000952"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.044331" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:47.044407" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:03:47.044515" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:46.981220" elapsed="0.063320"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.068143" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:47.067672" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:47.068933" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:47.068652" elapsed="0.000442">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:47.069316" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:47.068327" elapsed="0.001014"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.069926" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:47.069497" elapsed="0.000456"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:03:47.070277" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:03:47.070402" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:03:47.070121" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.070838" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.070579" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:03:47.071283" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:47.070945" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.071984" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:47.071505" elapsed="0.000505"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:47.071367" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:47.070927" elapsed="0.001165"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.072679" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:03:47.072232" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:03:47.072755" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:03:47.067067" elapsed="0.005809"/>
</kw>
<msg time="2026-04-19T00:03:47.072926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:03:47.055038" elapsed="0.017935"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.085041" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.096752" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.108506" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.108694" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.108859" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.109221" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:47.109086" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:03:47.109071" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.109431" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.109588" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.109743" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:03:47.109042" elapsed="0.000752"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:03:47.108931" elapsed="0.000888"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.109952" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:03:47.110037" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:03:47.110148" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:03:47.054187" elapsed="0.055986"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:03:47.111392" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:03:47.111157" elapsed="0.000297">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:03:47.111548" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:03:47.110809" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:03:47.111876" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:03:47.111641" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.112432" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:03:47.112142" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T00:03:47.111954" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T00:03:47.111623" elapsed="0.000890"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.114797" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:03:47.112692" elapsed="0.002131"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:03:47.114873" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:03:47.115023" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:03:47.110494" elapsed="0.004570"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.116617" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.116370" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.117056" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.116806" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.117479" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.117239" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.117896" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.117662" elapsed="0.000276"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:03:47.118732" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:03:47.118540" elapsed="0.000218"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:03:47.119090" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:03:47.118901" elapsed="0.000215"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:03:47.119257" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:03:47.119916" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:03:47.119619" elapsed="0.000343"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:03:47.120046" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T00:03:47.120244" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:03:47.118145" elapsed="0.002124"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:05:52.198269" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:03:47.122485" elapsed="125.077670">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:03:47.120340" elapsed="125.079934">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.200603" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.200327" elapsed="0.000351"/>
</branch>
<status status="FAIL" start="2026-04-19T00:03:47.120322" elapsed="125.080380">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.201341" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.201507" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.201464" elapsed="0.000086"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:05:52.201444" elapsed="0.000128"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.201713" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.201780" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:03:47.115384" elapsed="125.086509">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.201975" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.970487" elapsed="125.231601">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.202469" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.202283" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:05:52.202265" elapsed="0.000294"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.202592" elapsed="0.000015"/>
</return>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.964586" elapsed="125.238104">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:05:52.202810" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.202773" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:05:52.202757" elapsed="0.000110"/>
</if>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.203018" elapsed="0.000047"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.203212" elapsed="0.000020"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.203277" elapsed="0.000014"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.962961" elapsed="125.240413">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.203531" elapsed="0.000021"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.203594" elapsed="0.000014"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.958481" elapsed="125.245205">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:03:46.958315" elapsed="125.245427">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:03:46.542107" elapsed="125.661692">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="FAIL" start="2026-04-19T00:03:46.541844" elapsed="125.662045">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.205248" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.204842" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.204824" elapsed="0.000522"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:05:52.205498" elapsed="0.000374"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.210754" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:05:52.210315" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:05:52.211056" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.210855" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.210837" elapsed="0.000284"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.211564" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:05:52.211261" elapsed="0.000330"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:05:52.212023" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Precedence_Invoke_Rpc_On_Each_Node_Again</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:05:52.211742" elapsed="0.000354"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:05:52.212564" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:05:52.212322" elapsed="0.000278"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.213371" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:05:52.212855" elapsed="0.000554"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.214078" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:05:52.213617" elapsed="0.000502"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.214980" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:05:52.214327" elapsed="0.000748"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.215947" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:05:52.215282" elapsed="0.000777"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:05:52.209998" elapsed="0.006156"/>
</kw>
<status status="PASS" start="2026-04-19T00:05:52.204633" elapsed="0.011596"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:05:52.204237" elapsed="0.012054"/>
</kw>
<doc>Verify that the rpc response comes from the local node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:03:06.221621" elapsed="165.994729">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s2-t8" name="Unregister_Rpc_On_Each_Node" line="60">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:05:52.220900" elapsed="0.000268"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:05:52.220622" elapsed="0.000603"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.222224" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.222105" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.222085" elapsed="0.000208"/>
</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-19T00:05:52.227100" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.226978" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.226960" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.228157" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:05:52.227757" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.228684" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:05:52.228337" elapsed="0.000379"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:05:52.228765" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:05:52.228926" level="INFO">${index_list} = [1, 2, 3]</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-19T00:05:52.227388" elapsed="0.001562"/>
</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-19T00:05:52.234423" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.234314" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.234295" 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-19T00:05:52.235685" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.235578" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.235560" elapsed="0.000234"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:05:52.236262" 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-19T00:05:52.235937" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:05:52.236659" 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-19T00:05:52.236445" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:05:52.279091" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:05:52.237213" elapsed="0.041987"/>
</kw>
<msg time="2026-04-19T00:05:52.279383" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:05:52.279429" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:05:52.236838" elapsed="0.042628"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:05:52.316364" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:05:52.280000" elapsed="0.036476"/>
</kw>
<msg time="2026-04-19T00:05:52.316635" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:05:52.316680" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:05:52.279644" elapsed="0.037072"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.317059" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.316802" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.316779" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.317593" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:05:52.317281" elapsed="0.000385"/>
</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-19T00:05:52.317968" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.317743" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.317715" elapsed="0.000351"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:05:52.318103" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:05:52.319650" 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-19T00:05:52.320754" elapsed="0.000479"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:05:52.321505" elapsed="0.000339"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:05:52.318999" elapsed="0.002946"/>
</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-19T00:05:52.318412" elapsed="0.003596"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:05:52.235272" elapsed="0.086859"/>
</kw>
<msg time="2026-04-19T00:05:52.322224" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:05:52.322269" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:05:52.234638" elapsed="0.087668"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:05:52.322498" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:05:52.322382" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.322364" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.323056" elapsed="0.000031"/>
</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-19T00:05:52.323396" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.323547" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:05:52.233956" elapsed="0.089710"/>
</kw>
<msg time="2026-04-19T00:05:52.323761" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:05:52.323804" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:05:52.229347" elapsed="0.094493"/>
</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-19T00:05:52.324185" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.323916" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.323899" elapsed="0.000363"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:05:52.229208" elapsed="0.095078"/>
</iter>
<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-19T00:05:52.329842" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.329733" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.329713" 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-19T00:05:52.331136" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.331002" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.330982" elapsed="0.000221"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:05:52.331664" level="INFO">${karaf_connection_index} = 12</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-19T00:05:52.331342" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:05:52.332085" 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-19T00:05:52.331849" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:05:52.371672" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:05:52.332599" elapsed="0.039176"/>
</kw>
<msg time="2026-04-19T00:05:52.371933" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:05:52.372000" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:05:52.332266" elapsed="0.039791"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:05:52.421801" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:05:52.372580" elapsed="0.049329"/>
</kw>
<msg time="2026-04-19T00:05:52.422081" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:05:52.422127" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:05:52.372232" elapsed="0.049931"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.422518" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.422244" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.422223" elapsed="0.000388"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:05:52.423089" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:05:52.422755" elapsed="0.000408"/>
</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-19T00:05:52.423440" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.423229" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.423211" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:05:52.423550" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:05:52.424955" elapsed="0.000733"/>
</kw>
<kw name="Open 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-19T00:05:52.425993" elapsed="0.000441"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:05:52.426693" elapsed="0.000326"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:05:52.424371" elapsed="0.002764"/>
</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-19T00:05:52.423824" elapsed="0.003371"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:05:52.330659" elapsed="0.096634"/>
</kw>
<msg time="2026-04-19T00:05:52.427384" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:05:52.427429" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:05:52.330074" elapsed="0.097392"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:05:52.427648" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T00:05:52.427540" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.427522" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.428138" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:05:52.428465" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.428535" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:05:52.329376" elapsed="0.099264"/>
</kw>
<msg time="2026-04-19T00:05:52.428731" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:05:52.428774" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:05:52.324568" elapsed="0.104243"/>
</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-19T00:05:52.429145" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:05:52.428884" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.428867" elapsed="0.000354"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:05:52.324413" elapsed="0.104830"/>
</iter>
<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-19T00:05:52.436123" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.435997" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.435977" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:05:52.437322" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:05:52.437217" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:05:52.437199" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:05:52.437817" level="INFO">${karaf_connection_index} = 54</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-19T00:05:52.437525" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:05:52.438219" 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-19T00:05:52.437994" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:06:02.439431" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:05:52.438737" elapsed="10.001676">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:06:02.440679" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:06:02.440731" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:05:52.438396" elapsed="10.002360"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:06:12.442139" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:06:02.441509" elapsed="10.001493">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:06:12.443306" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:06:12.443356" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:06:02.441048" elapsed="10.002334"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:06:12.444684" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Each_Node"</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-19T00:06:12.443952" elapsed="0.000795">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:06:12.443611" elapsed="0.001209">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:06:12.443578" elapsed="0.001277">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Each_Node"</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-19T00:06:12.445038" elapsed="0.000024"/>
</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-19T00:06:12.445262" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:12.445126" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:06:12.445110" elapsed="0.000227"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:06:12.445376" elapsed="0.000016"/>
</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-19T00:06:12.446894" elapsed="0.000737"/>
</kw>
<kw name="Open 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-19T00:06:12.447896" elapsed="0.000486"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:06:12.448631" elapsed="0.000339"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:06:12.446283" elapsed="0.002805"/>
</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-19T00:06:12.445679" elapsed="0.003473"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T00:05:52.436896" elapsed="20.012341">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T00:06:12.449341" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:06:12.449388" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Precedence.Unregister_Rpc_On_Each_Node"</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-19T00:05:52.436340" elapsed="20.013073"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:06:12.449600" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:06:12.449491" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:12.449472" elapsed="0.000195"/>
</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-19T00:06:12.450490" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:06:12.450385" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:12.450367" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:06:12.450849" 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-19T00:06:12.450951" 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-19T00:06:12.450706" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:12.451616" level="INFO">{1: 10, 2: 12, 3: 54}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:12.451140" elapsed="0.000522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:12.452089" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:12.451810" elapsed="0.000324"/>
</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-19T00:06:12.452660" elapsed="0.000254"/>
</kw>
<msg time="2026-04-19T00:06:12.453013" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:06:12.453081" level="INFO">${old_connection_index} = 54</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-19T00:06:12.452301" elapsed="0.000803"/>
</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-19T00:06:12.453897" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:06:22.455819" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:06:12.454727" elapsed="10.002149">No match found for '
' in 10 seconds
Output:
.</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-19T00:06:12.454263" elapsed="10.002858"/>
</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-19T00:06:22.458066" elapsed="0.000427"/>
</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-19T00:06:22.457447" elapsed="0.001130"/>
</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-19T00:06:12.453396" elapsed="10.005229"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:12.453180" elapsed="10.005498"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:12.453161" elapsed="10.005551"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:06:22.459688" level="INFO">${ip_address} = 10.30.171.206</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-19T00:06:22.459364" elapsed="0.000352"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:06:22.459770" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:06:22.459940" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:06:22.458962" elapsed="0.001004"/>
</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-19T00:06:22.460141" elapsed="0.000439"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:06:22.460884" level="INFO">index=59
host=10.30.171.206
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-19T00:06:22.460988" level="INFO">${karaf_connection_object} = index=59
host=10.30.171.206
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-19T00:06:22.460748" 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-19T00:06:22.461177" elapsed="0.002348"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:06:22.463954" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:06:32.575399" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:06:22.463686" elapsed="10.112630">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:06:32.590708" elapsed="0.000558"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.591436" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:06:32.591753" 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-19T00:06:32.577586" elapsed="0.014324"/>
</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-19T00:06:32.576863" elapsed="0.015096"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:06:12.450088" elapsed="20.142157">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:06:32.592629" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.592732" elapsed="0.000022"/>
</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-19T00:05:52.435644" elapsed="40.157204">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:06:32.592969" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:06:32.593014" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:05:52.429503" elapsed="40.163549"/>
</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-19T00:06:32.593398" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.593142" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.593121" elapsed="0.000364"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:05:52.429369" elapsed="40.164144"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:05:52.229006" elapsed="40.364540"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:05:52.226608" elapsed="40.367099"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:05:52.221798" elapsed="40.371965"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:05:52.221375" elapsed="40.372432"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:05:52.217525" elapsed="40.376335"/>
</kw>
<kw name="Unregister_Rpc_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Unregister_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.596285" 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-19T00:06:32.595762" elapsed="0.000550"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:06:32.596359" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:06:32.596511" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:06:32.595412" elapsed="0.001124"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.631547" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.631105" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.632422" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:32.632091" elapsed="0.000513">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:32.632845" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:32.631734" elapsed="0.001137"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.633491" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:32.633045" elapsed="0.000474"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.633850" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:06:32.634020" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:06:32.633679" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.634501" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.634224" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.636055" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.635412" elapsed="0.000785"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.637133" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.636461" elapsed="0.000712"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.637922" elapsed="0.000047"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.638476" elapsed="0.000049"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.638791" elapsed="0.000044"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:06:32.637643" elapsed="0.001241"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.637311" elapsed="0.001658"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:06:32.639177" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:06:32.639449" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:06:32.634979" elapsed="0.004496"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.634622" elapsed="0.004885"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.639673" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.639532" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.634600" elapsed="0.005207"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.640502" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:32.639948" elapsed="0.000582"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:06:32.640600" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:06:32.630470" elapsed="0.010260"/>
</kw>
<msg time="2026-04-19T00:06:32.640784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:32.618195" elapsed="0.022642"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.653143" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.665208" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.677210" elapsed="0.000033"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.677427" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.677598" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.677981" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.677840" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:06:32.677824" elapsed="0.000254"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.678214" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.678375" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.678532" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:06:32.677789" elapsed="0.000795"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.677676" elapsed="0.000935"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.678748" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.678825" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:06:32.678951" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:06:32.613623" elapsed="0.065355"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.703113" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.702639" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.703978" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:32.703631" elapsed="0.000554">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:32.704470" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:32.703300" elapsed="0.001197"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.705125" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:32.704660" elapsed="0.000493"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.705521" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:06:32.705682" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:06:32.705350" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.706147" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.705858" elapsed="0.000331"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:06:32.706595" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.706257" elapsed="0.000400"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.707372" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.706822" elapsed="0.000576"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.706683" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.706239" elapsed="0.001217"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.708087" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:32.707596" elapsed="0.000518"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:06:32.708164" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:06:32.702019" elapsed="0.006274"/>
</kw>
<msg time="2026-04-19T00:06:32.708345" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:32.689839" elapsed="0.018572"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.720756" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.732544" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.744291" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.744553" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.744723" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.745097" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.744945" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:06:32.744931" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.745308" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.745467" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.745623" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:06:32.744901" elapsed="0.000775"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.744799" elapsed="0.000903"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.745836" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.745910" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:06:32.746021" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:06:32.688936" elapsed="0.057125"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.747303" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:32.747056" elapsed="0.000312">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:32.747459" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:32.746707" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.747790" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.747551" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.748377" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.748055" elapsed="0.000349"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.747870" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.747534" elapsed="0.000927"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.750755" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:32.748612" elapsed="0.002170"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:06:32.750835" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:06:32.750989" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:06:32.746387" elapsed="0.004627"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.752559" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.752309" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.752990" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.752754" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.753443" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.753200" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.753911" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.753669" elapsed="0.000286"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:06:32.754766" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:06:32.754569" elapsed="0.000224"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:06:32.755132" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:06:32.754940" elapsed="0.000219"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.755337" elapsed="0.000242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.755977" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.755729" elapsed="0.000294"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:06:32.756081" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:06:32.756236" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:06:32.754169" elapsed="0.002093"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:06:32.777004" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01rwjw77sr6bbk1kewipq50iwyp0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:06:32.777125" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T00:06:32.777382" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:06:32.758539" elapsed="0.018909"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.756366" elapsed="0.021185"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.777949" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.777611" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.756347" elapsed="0.021839"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.785866" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.780639" elapsed="0.005325"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.780112" elapsed="0.005989"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.780066" elapsed="0.006096"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.790371" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.786770" elapsed="0.003647"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.786288" elapsed="0.004163"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.786252" elapsed="0.004223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.791057" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:32.790633" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.791386" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.791157" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.791942" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.791636" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.791470" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.791138" elapsed="0.000886"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.792589" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:32.792215" elapsed="0.000401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.792911" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.792684" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.793473" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.793173" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.792993" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.792667" elapsed="0.000889"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:32.793702" elapsed="0.000425"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:06:32.794581" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:32.794290" elapsed="0.000317"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.794756" elapsed="0.002320"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:06:32.779065" elapsed="0.018077"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:06:32.797338" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T00:06:32.797216" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.797197" elapsed="0.000232"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.797575" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.797645" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:06:32.799852" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:06:32.751358" elapsed="0.048522"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:06:32.799963" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:06:32.800156" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:06:32.602882" elapsed="0.197328"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.800580" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.800332" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.800311" elapsed="0.000362"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:06:32.800707" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:06:32.596814" elapsed="0.204015"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister the get-constant rpc on the given node.</doc>
<status status="PASS" start="2026-04-19T00:06:32.595016" elapsed="0.205873"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.801465" elapsed="0.000235"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:06:32.801133" elapsed="0.000627"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.802287" elapsed="0.000192"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.802626" elapsed="0.000189"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:06:32.802959" elapsed="0.000168"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:06:32.803268" elapsed="0.000151"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:06:32.801944" elapsed="0.001530"/>
</kw>
<arg>${index}</arg>
<doc>Unregister global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:06:32.594655" elapsed="0.208869"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:06:32.594484" elapsed="0.209071"/>
</iter>
<iter>
<kw name="Unregister_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.805562" level="INFO">${session} = ClusterManagement__session_2</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-19T00:06:32.804989" elapsed="0.000602"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:06:32.805640" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:06:32.805837" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:06:32.804648" elapsed="0.001215"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.843818" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.843360" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.844736" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:32.844402" elapsed="0.000499">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:32.845162" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:32.844009" elapsed="0.001179"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.845782" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:32.845346" elapsed="0.000464"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.846140" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:06:32.846295" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:06:32.845962" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.846731" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.846467" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.848299" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.847616" elapsed="0.000816"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.849355" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.848702" elapsed="0.000693"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.850159" elapsed="0.000046"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.850691" elapsed="0.000048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.851005" elapsed="0.000063"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:06:32.849863" elapsed="0.001257"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.849530" elapsed="0.001675"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:06:32.851395" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:06:32.851665" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:06:32.847207" elapsed="0.004484"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.846846" elapsed="0.004876"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.851887" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.851747" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.846826" elapsed="0.005136"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.852612" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:32.852133" elapsed="0.000507"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:06:32.852688" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:06:32.842706" elapsed="0.010105"/>
</kw>
<msg time="2026-04-19T00:06:32.852869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:32.829608" elapsed="0.023310"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.865201" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.878856" elapsed="0.000048"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.890808" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.891044" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.891225" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.891633" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.891485" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:06:32.891468" elapsed="0.000248"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.891853" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.892053" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.892217" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:06:32.891426" elapsed="0.000845"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.891310" elapsed="0.000989"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.892439" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.892518" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T00:06:32.892659" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:06:32.823792" elapsed="0.068894"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.916936" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.916477" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.917862" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:32.917497" elapsed="0.000560">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:32.918313" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:32.917160" elapsed="0.001243"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.919040" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:32.918568" elapsed="0.000503"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.919397" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:06:32.919560" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:06:32.919229" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.920050" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.919738" elapsed="0.000357"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:06:32.920513" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.920167" elapsed="0.000407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.921306" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.920743" elapsed="0.000591"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.920600" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.920147" elapsed="0.001246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.922012" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:32.921535" elapsed="0.000525"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:06:32.922117" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:06:32.915821" elapsed="0.006429"/>
</kw>
<msg time="2026-04-19T00:06:32.922303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:32.903393" elapsed="0.018962"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.934876" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.946662" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.958535" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.958731" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.958902" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.959299" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.959154" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:06:32.959138" elapsed="0.000281"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.959558" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.959722" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.959918" elapsed="0.000027"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:06:32.959099" elapsed="0.000889"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.958977" elapsed="0.001061"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.960188" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:06:32.960265" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:06:32.960377" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:06:32.902487" elapsed="0.057915"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:32.961685" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:32.961440" elapsed="0.000312">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:32.961844" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:32.961096" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:32.962199" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:32.961939" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.962743" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:32.962448" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.962279" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.961921" elapsed="0.000903"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.965148" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:32.962967" elapsed="0.002208"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:06:32.965228" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:06:32.965384" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:06:32.960746" elapsed="0.004663"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.966915" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.966666" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.967368" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.967126" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.967819" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.967553" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.968279" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.968013" elapsed="0.000310"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:06:32.969147" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:06:32.968918" elapsed="0.000256"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:06:32.969499" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:06:32.969323" elapsed="0.000203"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:06:32.969669" elapsed="0.000209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:32.970300" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:32.970048" elapsed="0.000340"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:06:32.970432" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:06:32.970593" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:06:32.968517" elapsed="0.002101"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:06:33.005574" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0kthu5o3s9zvstt389a7gpj790.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:06:33.005662" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T00:06:33.005767" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:06:32.972865" elapsed="0.032929"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:32.970687" elapsed="0.035154"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.006019" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.005867" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:32.970670" elapsed="0.035472"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.009470" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.007172" elapsed="0.002342"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:33.006936" elapsed="0.002614"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.006917" elapsed="0.002658"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.012217" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.009861" elapsed="0.002405"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:33.009632" elapsed="0.002670"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.009615" elapsed="0.002712"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.012886" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:33.012494" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.013238" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.012983" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.013778" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:33.013476" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:33.013321" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.012965" elapsed="0.000898"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.014430" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:33.014014" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.014754" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.014527" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.015307" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:33.014987" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:33.014836" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.014510" elapsed="0.000883"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:33.015539" elapsed="0.000373"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:06:33.016382" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:33.016091" elapsed="0.000317"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:33.016558" elapsed="0.002280"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:06:33.006498" elapsed="0.012404"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:06:33.019144" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T00:06:33.019011" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.018991" elapsed="0.000242"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.019376" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:06:33.019446" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T00:06:33.021638" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:06:32.965734" elapsed="0.055931"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:06:33.021736" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:06:33.021889" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:06:32.812138" elapsed="0.209776"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.022274" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.022018" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.022001" elapsed="0.000365"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:06:33.022399" elapsed="0.000026"/>
</return>
<arg>${UNREGISTER_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:06:32.806134" elapsed="0.216388"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister the get-constant rpc on the given node.</doc>
<status status="PASS" start="2026-04-19T00:06:32.804276" elapsed="0.218305"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:33.023118" elapsed="0.000229"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:06:33.022789" elapsed="0.000617"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:33.023916" elapsed="0.000205"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:06:33.024276" elapsed="0.000187"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:06:33.024608" elapsed="0.000149"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:06:33.024897" elapsed="0.000165"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:06:33.023587" elapsed="0.001535"/>
</kw>
<arg>${index}</arg>
<doc>Unregister global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:06:32.803826" elapsed="0.221347"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:06:32.803658" elapsed="0.221546"/>
</iter>
<iter>
<kw name="Unregister_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.027001" level="INFO">${session} = ClusterManagement__session_3</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-19T00:06:33.026699" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:06:33.027090" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:06:33.027237" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:06:33.026191" elapsed="0.001070"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.061676" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:33.061212" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:33.062574" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.062235" elapsed="0.000572">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:33.063071" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:33.061872" elapsed="0.001228"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.063740" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:33.063265" elapsed="0.000502"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:06:33.064104" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:06:33.064261" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:06:33.063924" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.064703" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.064436" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.066259" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.065605" elapsed="0.000820"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.067357" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:06:33.066700" elapsed="0.000698"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.068175" elapsed="0.000047"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.068711" elapsed="0.000048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.069045" elapsed="0.000050"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:06:33.067878" elapsed="0.001269"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:06:33.067535" elapsed="0.001697"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:06:33.069421" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:06:33.069692" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:06:33.065193" elapsed="0.004526"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:33.064822" elapsed="0.004930"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.069923" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.069781" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.064801" elapsed="0.005198"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.070656" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:33.070174" elapsed="0.000510"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:06:33.070734" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:06:33.060549" elapsed="0.010306"/>
</kw>
<msg time="2026-04-19T00:06:33.070907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:33.048445" elapsed="0.022511"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.084680" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.096449" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.108229" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.108425" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.108592" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.108946" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.108810" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:06:33.108795" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.109174" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.109332" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.109490" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:06:33.108766" elapsed="0.000777"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:06:33.108666" elapsed="0.000902"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.109705" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:06:33.109779" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:06:33.109888" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:06:33.044363" elapsed="0.065550"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.133717" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:33.133277" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:33.134580" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.134272" elapsed="0.000466">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:33.134979" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:33.133905" elapsed="0.001100"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.135640" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:33.135188" elapsed="0.000479"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:06:33.135980" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:06:33.136137" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:06:33.135822" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.136622" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.136353" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:06:33.137074" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.136732" elapsed="0.000404"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.137808" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:33.137299" elapsed="0.000536"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:33.137160" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.136714" elapsed="0.001177"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.138515" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:06:33.138057" elapsed="0.000486"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:06:33.138592" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:06:33.132657" elapsed="0.006060"/>
</kw>
<msg time="2026-04-19T00:06:33.138768" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:06:33.120555" elapsed="0.018260"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.151007" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.162789" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.174572" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.174759" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.174926" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.175300" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.175162" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:06:33.175148" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.175539" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.175702" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.175861" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:06:33.175118" elapsed="0.000795"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:06:33.174999" elapsed="0.000939"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.176092" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:06:33.176202" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:06:33.176312" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:06:33.119688" elapsed="0.056649"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:06:33.177575" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.177330" elapsed="0.000308">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:06:33.177729" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:06:33.176980" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:06:33.178077" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:06:33.177823" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.178614" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:06:33.178326" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-19T00:06:33.178157" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T00:06:33.177805" elapsed="0.000891"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.180967" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:06:33.178838" elapsed="0.002155"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:06:33.181059" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:06:33.181214" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:06:33.176661" elapsed="0.004578"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.182737" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.182490" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.183192" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.182929" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.183632" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.183385" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.184087" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.183819" elapsed="0.000312"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:06:33.184915" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:06:33.184721" elapsed="0.000220"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:06:33.185280" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:06:33.185106" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:06:33.185594" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:06:33.186229" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:06:33.185954" elapsed="0.000318"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:06:33.186315" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:06:33.186468" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:06:33.184323" elapsed="0.002170"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:08:38.264912" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.188755" elapsed="125.078181">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:06:33.186561" elapsed="125.080515">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:38.267637" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:38.267240" elapsed="0.000507"/>
</branch>
<status status="FAIL" start="2026-04-19T00:06:33.186544" elapsed="125.081238">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:38.268442" elapsed="0.000042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:08:38.268675" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:38.268616" elapsed="0.000120"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:08:38.268587" elapsed="0.000179"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:38.269058" elapsed="0.000037"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:08:38.269164" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.181559" elapsed="125.087802">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:08:38.269483" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.033635" elapsed="125.235987">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:38.270059" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:38.269782" elapsed="0.000373"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:08:38.269759" elapsed="0.000429"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:08:38.270233" elapsed="0.000021"/>
</return>
<arg>${UNREGISTER_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.027506" elapsed="125.242881">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>${member_index}</arg>
<doc>Unregister the get-constant rpc on the given node.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.025808" elapsed="125.244717">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Remove a constant from the [] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="NOT RUN" start="2026-04-19T00:08:38.270850" elapsed="0.000035"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:38.271194" elapsed="0.000045"/>
</kw>
<arg>${index}</arg>
<doc>Unregister global rpc on given node of the cluster.</doc>
<status status="FAIL" start="2026-04-19T00:06:33.025450" elapsed="125.245951">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:06:33.025292" elapsed="125.246216">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:06:32.594350" elapsed="125.677263">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Unregister global rpc on given nodes of the cluster.</doc>
<status status="FAIL" start="2026-04-19T00:06:32.594116" elapsed="125.677658">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:38.274205" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:38.273466" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:38.273439" elapsed="0.000884"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:38.274487" elapsed="0.000437"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.280808" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:08:38.280241" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:08:38.281155" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:38.280941" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:38.280918" elapsed="0.000323"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.281862" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:08:38.281456" elapsed="0.000445"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:08:38.282496" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Precedence_Unregister_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:08:38.282137" elapsed="0.000399"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:08:38.283010" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:08:38.282757" elapsed="0.000307"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.283738" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:08:38.283268" elapsed="0.000505"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.284396" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:08:38.283967" elapsed="0.000465"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.285281" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:08:38.284628" elapsed="0.000760"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.286249" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:38.285604" elapsed="0.000708"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:08:38.279806" elapsed="0.006579"/>
</kw>
<status status="PASS" start="2026-04-19T00:08:38.273081" elapsed="0.013377"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:08:38.272361" elapsed="0.014162"/>
</kw>
<doc>Unregister rpc on every node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:05:52.216826" elapsed="166.069754">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T00:08:38.287287" elapsed="0.000401"/>
</kw>
<doc>DOMRpcBroker testing: RPC Provider Precedence

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

The aim is to establish that remote RPC implementations have lower priority
than local ones, which is to say that any movement of RPCs on remote nodes
does not affect routing as long as a local implementation is available.</doc>
<status status="FAIL" start="2026-04-18T23:53:56.769472" elapsed="881.518261"/>
</suite>
<suite id="s1-s3" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.403750" 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-19T00:08:38.399344" elapsed="0.004462"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T00:08:38.399106" elapsed="0.004773"/>
</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-19T00:08:38.409190" 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-19T00:08:38.405068" elapsed="0.004173"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T00:08:38.409442" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:38.409330" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:38.409306" elapsed="0.000206"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.410003" 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-19T00:08:38.409665" elapsed="0.000397"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.410534" level="INFO">${cluster_size} = 3</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-19T00:08:38.410225" elapsed="0.000335"/>
</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-19T00:08:38.411083" elapsed="0.000290"/>
</kw>
<msg time="2026-04-19T00:08:38.411469" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:08:38.411515" level="INFO">${possibly_int_of_members} = 3</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-19T00:08:38.410726" elapsed="0.000812"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.412088" level="INFO">${int_of_members} = 3</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-19T00:08:38.411706" elapsed="0.000408"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.413095" 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-19T00:08:38.412820" elapsed="0.000303"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.413540" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:08:38.413279" elapsed="0.000287"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.414013" 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-19T00:08:38.413725" elapsed="0.000329"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:08:38.417327" elapsed="0.000280"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.418142" level="INFO">${member_ip} = 10.30.171.9</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-19T00:08:38.417778" elapsed="0.000390"/>
</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-19T00:08:38.418330" elapsed="0.000235"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.419376" 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-19T00:08:38.419076" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:08:38.419449" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:08:38.419608" 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-19T00:08:38.418763" elapsed="0.000870"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:08:38.420257" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f75e5c90&gt;, timeout=125, 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-19T00:08:38.419802" elapsed="0.000609"/>
</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-19T00:08:38.420575" 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-19T00:08:38.416697" elapsed="0.004129"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:08:38.416506" elapsed="0.004363"/>
</iter>
<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-19T00:08:38.422001" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.422705" level="INFO">${member_ip} = 10.30.171.128</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-19T00:08:38.422376" elapsed="0.000355"/>
</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-19T00:08:38.422885" elapsed="0.000237"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.423917" level="INFO">${session} = ClusterManagement__session_2</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-19T00:08:38.423620" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:08:38.424043" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:08:38.424200" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T00:08:38.423324" elapsed="0.000903"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:08:38.424805" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f74cce50&gt;, timeout=125, 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-19T00:08:38.424395" elapsed="0.000519"/>
</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-19T00:08:38.425095" elapsed="0.000207"/>
</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-19T00:08:38.421426" elapsed="0.003938"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:08:38.420956" elapsed="0.004451"/>
</iter>
<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-19T00:08:38.426269" elapsed="0.000191"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.426946" level="INFO">${member_ip} = 10.30.171.206</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-19T00:08:38.426618" elapsed="0.000355"/>
</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-19T00:08:38.427140" elapsed="0.000225"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.428174" level="INFO">${session} = ClusterManagement__session_3</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-19T00:08:38.427856" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:08:38.428246" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:08:38.428398" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T00:08:38.427558" elapsed="0.000866"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:08:38.428985" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f75e4990&gt;, timeout=125, 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-19T00:08:38.428579" elapsed="0.000528"/>
</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-19T00:08:38.429293" elapsed="0.000193"/>
</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-19T00:08:38.425676" elapsed="0.003870"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:08:38.425494" elapsed="0.004096"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T00:08:38.414111" elapsed="0.015509"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.430202" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T00:08:38.429783" elapsed="0.000469"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.430805" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T00:08:38.430415" elapsed="0.000433"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.431402" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T00:08:38.431010" elapsed="0.000435"/>
</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-19T00:08:38.412368" elapsed="0.019133"/>
</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-19T00:08:38.404636" elapsed="0.026920"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:08:38.431736" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:38.431621" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:38.431603" elapsed="0.000199"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.435270" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:08:38.434847" elapsed="0.000450"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.435796" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:08:38.435494" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:08:38.435866" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:08:38.436019" level="INFO">${index_list} = [1, 2, 3]</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-19T00:08:38.434519" elapsed="0.001541"/>
</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-19T00:08:38.437052" level="INFO">${member_ip} = 10.30.171.9</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-19T00:08:38.436771" elapsed="0.000309"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:38.437826" 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-19T00:08:38.437926" 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-19T00:08:38.437667" elapsed="0.000285"/>
</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-19T00:08:38.440591" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:38.440276" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:38.440257" elapsed="0.000522"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:38.441071" 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-19T00:08:38.441219" 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-19T00:08:38.440927" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.442307" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:38.441400" elapsed="0.000955"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:38.443155" 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-19T00:08:38.442512" elapsed="0.000669"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:08:38.444463" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:08:38.444661" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:08:38.443910" elapsed="0.000798"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:38.444986" elapsed="0.000640"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:08:38.447259" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:08:39.027023" 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 Sun Apr 19 00:08:38 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sat Apr 18 23:53:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:08:38.446833" elapsed="0.580425"/>
</kw>
<msg time="2026-04-19T00:08:39.027391" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:38.445946" elapsed="0.581631"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:08:38.443401" elapsed="0.584435"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.028442" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:08:39.040928" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:08:39.041340" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:08:39.041449" 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-19T00:08:39.028113" elapsed="0.013391"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:39.041882" elapsed="0.000618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.044456" 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-19T00:08:39.043097" elapsed="0.001496"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:08:39.045307" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:39.044844" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:39.044777" elapsed="0.000742"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:08:39.046081" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:08:39.045675" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:39.045627" elapsed="0.000785"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:08:39.046523" 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-19T00:08:39.052739" elapsed="0.001579"/>
</kw>
<kw name="Open 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-19T00:08:39.054770" elapsed="0.000782"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:39.055877" elapsed="0.000339"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:39.047484" elapsed="0.008872"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:08:38.439774" elapsed="0.616739"/>
</kw>
<msg time="2026-04-19T00:08:39.056605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:38.439125" elapsed="0.617594"/>
</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-19T00:08:38.438634" elapsed="0.618224"/>
</kw>
<msg time="2026-04-19T00:08:39.056924" 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-19T00:08:38.438125" elapsed="0.618872"/>
</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-19T00:08:39.060442" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T00:08:39.060981" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:39.061327" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:39.057450" elapsed="0.004031"/>
</kw>
<msg time="2026-04-19T00:08:39.061577" 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-19T00:08:38.437310" elapsed="0.624292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.062166" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:39.061814" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:08:39.062258" 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-19T00:08:38.436413" elapsed="0.625993"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:08:38.436239" elapsed="0.626206"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:39.063413" level="INFO">${member_ip} = 10.30.171.128</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-19T00:08:39.063119" elapsed="0.000320"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.064209" 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-19T00:08:39.064336" 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-19T00:08:39.064020" elapsed="0.000419"/>
</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-19T00:08:39.067489" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:39.067163" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:39.067142" elapsed="0.000541"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.067968" 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-19T00:08:39.068109" 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-19T00:08:39.067835" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.069259" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:39.068297" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.070274" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:08:39.069476" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.071806" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:08:39.072065" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:08:39.071232" elapsed="0.000902"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:39.072515" elapsed="0.000758"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.074784" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:08:39.643107" 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 Sun Apr 19 00:08:39 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.128
  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: Sat Apr 18 23:53:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:08:39.074387" elapsed="0.568956"/>
</kw>
<msg time="2026-04-19T00:08:39.643456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:39.073606" elapsed="0.570019"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:08:39.070601" elapsed="0.573271"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.644480" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:08:39.657154" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:08:39.657375" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:08:39.657438" 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-19T00:08:39.644141" elapsed="0.013330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:39.657704" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.659050" 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-19T00:08:39.658338" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:08:39.659497" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:39.659236" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:39.659202" elapsed="0.000399"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:08:39.659860" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T00:08:39.659679" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:39.659657" elapsed="0.000323"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:08:39.660051" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:39.667201" elapsed="0.002171"/>
</kw>
<kw name="Open 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-19T00:08:39.669888" elapsed="0.000948"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:39.671332" elapsed="0.000431"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:39.660545" elapsed="0.011407"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:08:39.066640" elapsed="0.605621"/>
</kw>
<msg time="2026-04-19T00:08:39.672411" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:39.065913" elapsed="0.606617"/>
</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-19T00:08:39.065406" elapsed="0.607305"/>
</kw>
<msg time="2026-04-19T00:08:39.672811" 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-19T00:08:39.064617" elapsed="0.608372"/>
</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-19T00:08:39.676140" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T00:08:39.676769" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:39.677168" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:39.673496" elapsed="0.003865"/>
</kw>
<msg time="2026-04-19T00:08:39.677476" 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-19T00:08:39.063657" elapsed="0.613850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.678076" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:39.677750" elapsed="0.000389"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:08:39.678193" elapsed="0.000041"/>
</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-19T00:08:39.062735" elapsed="0.615626"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:08:39.062545" elapsed="0.615865"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:39.679494" level="INFO">${member_ip} = 10.30.171.206</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-19T00:08:39.679205" elapsed="0.000317"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.680343" 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-19T00:08:39.680447" 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-19T00:08:39.680192" elapsed="0.000282"/>
</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-19T00:08:39.683617" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:39.683221" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:39.683196" elapsed="0.000652"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.684265" 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-19T00:08:39.684423" 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-19T00:08:39.684068" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.685826" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:39.684662" elapsed="0.001227"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.686975" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:08:39.686164" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:08:39.688405" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:08:39.688608" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:08:39.687796" elapsed="0.000862"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:39.688938" elapsed="0.000799"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:08:39.691272" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:08:40.312015" 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 Sun Apr 19 00:08:39 UTC 2026

  System load:  0.08               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sat Apr 18 23:53:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:08:39.690844" elapsed="0.621450"/>
</kw>
<msg time="2026-04-19T00:08:40.312431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:39.690076" elapsed="0.622567"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:08:39.687257" elapsed="0.625682"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.313633" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:08:40.326326" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:08:40.326549" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:08:40.326611" 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-19T00:08:40.313280" elapsed="0.013364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.326883" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.328173" 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-19T00:08:40.327494" elapsed="0.000730"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:08:40.328513" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:40.328327" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.328293" elapsed="0.000295"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:08:40.328777" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-19T00:08:40.328646" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.328630" elapsed="0.000241"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:08:40.328906" 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-19T00:08:40.332602" elapsed="0.001107"/>
</kw>
<kw name="Open 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-19T00:08:40.334095" elapsed="0.000755"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.335242" elapsed="0.000354"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:40.329305" elapsed="0.006465"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:08:39.682553" elapsed="0.653393"/>
</kw>
<msg time="2026-04-19T00:08:40.336099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:39.681697" elapsed="0.654501"/>
</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-19T00:08:39.681196" elapsed="0.655152"/>
</kw>
<msg time="2026-04-19T00:08:40.336510" 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-19T00:08:39.680631" elapsed="0.655968"/>
</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-19T00:08:40.341553" elapsed="0.000471"/>
</kw>
<kw name="Open 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-19T00:08:40.342318" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.342857" elapsed="0.000214"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:40.337200" elapsed="0.005974"/>
</kw>
<msg time="2026-04-19T00:08:40.343351" 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-19T00:08:39.679761" elapsed="0.663640"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.344365" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:40.343794" elapsed="0.000625"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:08:40.344474" elapsed="0.000038"/>
</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-19T00:08:39.678759" elapsed="0.665876"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:08:39.678528" elapsed="0.666157"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:08:38.436112" elapsed="1.908618"/>
</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-19T00:08:38.432037" elapsed="1.912770"/>
</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-19T00:08:40.345016" elapsed="0.000306"/>
</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-19T00:08:40.362614" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:40.362495" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.362475" elapsed="0.000210"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.362993" 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-19T00:08:40.363118" 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-19T00:08:40.362848" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.363572" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:40.363301" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.364053" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:40.363788" elapsed="0.000312"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:40.365058" 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-19T00:08:40.364751" elapsed="0.000475">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T00:08:40.365359" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:08:40.365414" 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-19T00:08:40.364259" elapsed="0.001182"/>
</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-19T00:08:40.365823" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:40.365534" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.365511" elapsed="0.000432"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:40.366886" level="INFO">${ip_address} = 10.30.171.9</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-19T00:08:40.366570" elapsed="0.000348"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:08:40.366976" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:08:40.367178" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:08:40.366226" elapsed="0.000983"/>
</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-19T00:08:40.367413" elapsed="0.000541"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.368399" level="INFO">index=10
host=10.30.171.9
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-19T00:08:40.368521" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.368259" elapsed="0.000294"/>
</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-19T00:08:40.368742" elapsed="0.002651"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.371848" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:08:40.566581" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:08:40.371563" elapsed="0.195185"/>
</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-19T00:08:40.570692" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:08:40.571193" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.571524" 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-19T00:08:40.567932" elapsed="0.003748"/>
</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-19T00:08:40.567194" elapsed="0.004533"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.362182" elapsed="0.209599"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:08:40.346083" elapsed="0.225747"/>
</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-19T00:08:40.345692" elapsed="0.226192"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:08:40.345549" elapsed="0.226376"/>
</iter>
<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-19T00:08:40.585920" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:40.585789" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.585765" elapsed="0.000232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.586356" 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-19T00:08:40.586468" 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-19T00:08:40.586195" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.586937" 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-19T00:08:40.586653" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.587400" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:40.587151" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:40.588259" level="FAIL">Dictionary does not contain key '2'.</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-19T00:08:40.588008" elapsed="0.000359">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T00:08:40.588474" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:08:40.588520" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T00:08:40.587615" elapsed="0.000928"/>
</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-19T00:08:40.588924" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:40.588619" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.588601" elapsed="0.000440"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:40.589812" level="INFO">${ip_address} = 10.30.171.128</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-19T00:08:40.589542" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:08:40.589889" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:08:40.590062" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:08:40.589259" 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-19T00:08:40.590247" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.590944" level="INFO">index=12
host=10.30.171.128
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-19T00:08:40.591059" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T00:08:40.590838" 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-19T00:08:40.591236" elapsed="0.002620"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.594303" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:08:40.818698" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:08:40.594024" elapsed="0.224824"/>
</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-19T00:08:40.822518" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:08:40.823001" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.823359" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:40.820017" elapsed="0.003504"/>
</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-19T00:08:40.819283" elapsed="0.004285"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:08:40.585446" elapsed="0.238174"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:08:40.572559" elapsed="0.251110"/>
</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-19T00:08:40.572185" elapsed="0.251536"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:08:40.572041" elapsed="0.251722"/>
</iter>
<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-19T00:08:40.837805" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:40.837686" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.837664" elapsed="0.000215"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.838187" 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-19T00:08:40.838295" 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-19T00:08:40.838049" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.838810" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:40.838546" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:40.839266" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:40.839006" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:40.840111" level="FAIL">Dictionary does not contain key '3'.</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-19T00:08:40.839865" elapsed="0.000353">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T00:08:40.840324" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:08:40.840369" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T00:08:40.839503" elapsed="0.000889"/>
</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-19T00:08:40.840690" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:40.840467" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:40.840449" elapsed="0.000338"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:40.841750" level="INFO">${ip_address} = 10.30.171.206</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-19T00:08:40.841278" elapsed="0.000500"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:08:40.841827" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:08:40.841983" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:08:40.840988" elapsed="0.001020"/>
</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-19T00:08:40.842181" elapsed="0.000404"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.842860" level="INFO">index=14
host=10.30.171.206
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-19T00:08:40.842960" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T00:08:40.842754" 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-19T00:08:40.843153" elapsed="0.002385"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:08:40.845960" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:08:50.910749" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:08:40.845701" elapsed="10.065987">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:08:50.915397" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:08:50.915906" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:50.916249" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:50.912923" elapsed="0.003482"/>
</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-19T00:08:50.912233" elapsed="0.004219"/>
</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-19T00:08:40.837395" elapsed="10.079146">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:08:50.916643" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:08:40.824397" elapsed="10.092341">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:08:40.824008" elapsed="10.092796"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:08:40.823866" elapsed="10.093090"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T00:08:40.345395" elapsed="10.571600"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T00:08:38.404195" elapsed="12.512877"/>
</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-19T00:08:50.920112" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:50.919974" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:50.919952" elapsed="0.000233"/>
</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-19T00:08:50.925171" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:50.925061" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:50.925031" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:08:50.926214" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:08:50.925801" elapsed="0.000440"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:08:50.926806" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:08:50.926492" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:08:50.926878" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:08:50.927060" level="INFO">${index_list} = [1, 2, 3]</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-19T00:08:50.925469" elapsed="0.001618"/>
</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-19T00:08:50.932542" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:50.932433" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:50.932414" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:08:50.933656" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:50.933549" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:50.933532" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:50.934189" 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-19T00:08:50.933874" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:50.934566" 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-19T00:08:50.934374" elapsed="0.000218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:08:50.979366" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:08:50.935104" elapsed="0.044396"/>
</kw>
<msg time="2026-04-19T00:08:50.979604" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:08:50.979668" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:50.934750" elapsed="0.044956"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:08:51.043816" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:08:50.980240" elapsed="0.063779"/>
</kw>
<msg time="2026-04-19T00:08:51.044162" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:08:51.044209" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:50.979876" elapsed="0.064370"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:51.044614" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:51.044334" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.044310" elapsed="0.000387"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:51.045173" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:51.044841" elapsed="0.000506"/>
</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-19T00:08:51.045697" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:51.045419" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.045398" elapsed="0.000381"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:08:51.045817" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:51.047208" elapsed="0.000802"/>
</kw>
<kw name="Open 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-19T00:08:51.048337" elapsed="0.000475"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:51.049120" elapsed="0.000209"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:51.046745" elapsed="0.002722"/>
</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-19T00:08:51.046145" elapsed="0.003398"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:08:50.933296" elapsed="0.116350"/>
</kw>
<msg time="2026-04-19T00:08:51.049741" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:08:51.049787" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:50.932764" elapsed="0.117061"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:08:51.050025" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T00:08:51.049902" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.049883" elapsed="0.000269"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:51.050559" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:51.050894" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:08:51.050967" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:08:50.932145" elapsed="0.118951"/>
</kw>
<msg time="2026-04-19T00:08:51.051210" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:08:51.051256" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:50.927457" elapsed="0.123837"/>
</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-19T00:08:51.051625" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:51.051371" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.051353" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:08:50.927315" elapsed="0.124412"/>
</iter>
<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-19T00:08:51.057330" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:51.057218" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.057198" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:08:51.058668" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:51.058543" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.058520" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:51.059190" level="INFO">${karaf_connection_index} = 12</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-19T00:08:51.058884" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:51.059575" 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-19T00:08:51.059378" elapsed="0.000224"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:08:51.102873" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:08:51.060139" elapsed="0.042910"/>
</kw>
<msg time="2026-04-19T00:08:51.103255" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:08:51.103304" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:51.059772" elapsed="0.043570"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:08:51.166614" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:08:51.103909" elapsed="0.062877"/>
</kw>
<msg time="2026-04-19T00:08:51.166887" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:08:51.166932" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:51.103537" elapsed="0.063431"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:51.167341" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:51.167078" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.167031" elapsed="0.000391"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:08:51.167839" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:08:51.167562" elapsed="0.000371"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:51.168232" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:51.167998" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.167980" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:08:51.168343" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:08:51.169599" 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-19T00:08:51.170497" elapsed="0.000448"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:08:51.171231" elapsed="0.000218"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:08:51.169175" elapsed="0.002412"/>
</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-19T00:08:51.168627" elapsed="0.003006"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:08:51.058268" elapsed="0.113462"/>
</kw>
<msg time="2026-04-19T00:08:51.171821" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:08:51.171866" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:51.057554" elapsed="0.114350"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:08:51.172103" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:08:51.171979" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.171961" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:51.172585" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:08:51.173155" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:08:51.173229" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:08:51.056898" elapsed="0.116441"/>
</kw>
<msg time="2026-04-19T00:08:51.173433" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:08:51.173477" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:08:51.051995" elapsed="0.121520"/>
</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-19T00:08:51.173877" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:08:51.173624" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.173606" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:08:51.051853" elapsed="0.122125"/>
</iter>
<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-19T00:08:51.179482" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:51.179375" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.179356" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:08:51.180606" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:08:51.180501" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:08:51.180483" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:08:51.181103" level="INFO">${karaf_connection_index} = 14</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-19T00:08:51.180817" elapsed="0.000314"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:08:51.181482" 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-19T00:08:51.181290" elapsed="0.000218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:09:01.182736" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:08:51.182003" elapsed="10.001559">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:09:01.183810" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:09:01.183879" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:08:51.181666" elapsed="10.002248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:09:11.185747" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:09:01.184930" elapsed="10.001485">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:09:11.186619" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:09:11.186668" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:09:01.184295" elapsed="10.002398"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:09:11.187853" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T00:09:11.187192" elapsed="0.000727">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:09:11.186828" elapsed="0.001161">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:09:11.186792" elapsed="0.001232">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T00:09:11.188209" 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-19T00:09:11.188438" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:11.188297" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:09:11.188280" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:09:11.188550" elapsed="0.000016"/>
</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-19T00:09:11.189917" elapsed="0.000810"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:11.191044" elapsed="0.000564"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:11.191894" elapsed="0.000222"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:11.189470" elapsed="0.002783"/>
</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-19T00:09:11.188853" elapsed="0.003450"/>
</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-19T00:08:51.180250" elapsed="20.012192">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T00:09:11.192547" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:09:11.192593" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T00:08:51.179726" elapsed="20.012893"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:09:11.192809" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:11.192699" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:11.192680" elapsed="0.000196"/>
</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-19T00:09:11.193664" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:11.193558" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:11.193540" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:11.194051" 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-19T00:09:11.194158" 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-19T00:09:11.193881" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:11.194599" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:11.194335" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:11.195050" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:11.194795" elapsed="0.000301"/>
</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-19T00:09:11.195614" elapsed="0.000253"/>
</kw>
<msg time="2026-04-19T00:09:11.195964" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:09:11.196011" level="INFO">${old_connection_index} = 14</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-19T00:09:11.195252" elapsed="0.000796"/>
</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-19T00:09:11.196857" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:09:21.198838" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:09:11.197799" elapsed="10.002716">No match found for '
' in 10 seconds
Output:
.</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-19T00:09:11.197286" elapsed="10.003418"/>
</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-19T00:09:21.201685" elapsed="0.000457"/>
</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-19T00:09:21.201054" elapsed="0.001217"/>
</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-19T00:09:11.196347" elapsed="10.005973"/>
</kw>
<status status="PASS" start="2026-04-19T00:09:11.196125" elapsed="10.006245"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:11.196107" elapsed="10.006298"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:21.203370" level="INFO">${ip_address} = 10.30.171.206</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-19T00:09:21.203022" elapsed="0.000375"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:09:21.203449" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:09:21.203613" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:09:21.202656" elapsed="0.000981"/>
</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-19T00:09:21.203798" elapsed="0.000579"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:21.204676" level="INFO">index=19
host=10.30.171.206
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-19T00:09:21.204780" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T00:09:21.204549" elapsed="0.000256"/>
</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-19T00:09:21.204956" elapsed="0.002996"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:09:21.208408" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:09:31.278105" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:09:21.208137" elapsed="10.070866">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:09:31.282894" elapsed="0.000574"/>
</kw>
<kw name="Open 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-19T00:09:31.283637" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:31.283958" elapsed="0.000121"/>
</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-19T00:09:31.280299" elapsed="0.003833"/>
</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-19T00:09:31.279560" elapsed="0.004618"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:09:11.193311" elapsed="20.090956">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:09:31.284631" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:09:31.284708" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:08:51.179080" elapsed="40.105739">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:09:31.284935" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:09:31.284980" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:08:51.174268" elapsed="40.110736"/>
</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-19T00:09:31.285371" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:31.285109" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:31.285088" elapsed="0.000361"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:08:51.174127" elapsed="40.111352"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:08:50.927142" elapsed="40.358373"/>
</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-19T00:08:50.924755" elapsed="40.360822"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T00:08:50.917690" elapsed="40.367947"/>
</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-19T00:08:50.917241" elapsed="40.368439"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T00:08:38.398686" elapsed="52.887048"/>
</kw>
<test id="s1-s3-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.291986" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:09:31.291594" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.292509" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:09:31.292200" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:09:31.292580" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:09:31.292736" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T00:09:31.291209" elapsed="0.001553"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.293741" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:09:31.293360" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.294243" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:09:31.293926" elapsed="0.000416"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:09:31.294391" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:31.294790" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T00:09:31.292967" elapsed="0.001862"/>
</kw>
<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-19T00:09:31.296368" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:09:31.295969" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.296853" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:09:31.296552" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:09:31.296924" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:09:31.297095" level="INFO">${index_list} = [1, 2, 3]</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-19T00:09:31.295593" elapsed="0.001527"/>
</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-19T00:09:31.298174" level="INFO">${member_ip} = 10.30.171.9</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-19T00:09:31.297887" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:31.298993" 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-19T00:09:31.299108" 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-19T00:09:31.298848" elapsed="0.000287"/>
</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-19T00:09:31.301905" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:31.301631" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:31.301611" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:31.302278" 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-19T00:09:31.302379" 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-19T00:09:31.302149" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.303074" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:31.302589" elapsed="0.000533"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:31.303686" 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-19T00:09:31.303278" elapsed="0.000434"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.304891" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:31.305013" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:31.304382" elapsed="0.000673"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:31.305290" elapsed="0.000631"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:31.307948" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:31.626821" 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 Sun Apr 19 00:08:38 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:08:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:09:31.307399" elapsed="0.319735"/>
</kw>
<msg time="2026-04-19T00:09:31.627259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:31.306173" elapsed="0.321253"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:31.303931" elapsed="0.323655"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:31.628096" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T00:09:31.995259" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:31.995650" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:09:31.995756" 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-19T00:09:31.627822" elapsed="0.367989"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:31.996329" elapsed="0.000564"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:31.998120" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:31.997345" elapsed="0.000877"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:31.998703" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:31.998394" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:31.998344" elapsed="0.000522"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:31.999275" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:09:31.998990" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:31.998955" elapsed="0.000524"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:31.999557" elapsed="0.000065"/>
</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-19T00:09:32.014526" 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-19T00:09:32.015255" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:32.015592" 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-19T00:09:32.000368" elapsed="0.015376"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:31.300929" elapsed="0.714908"/>
</kw>
<msg time="2026-04-19T00:09:32.015892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:31.300354" elapsed="0.715593"/>
</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-19T00:09:31.299794" elapsed="0.716416"/>
</kw>
<msg time="2026-04-19T00:09:32.016255" 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-19T00:09:31.299290" elapsed="0.717011"/>
</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-19T00:09:32.019233" 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-19T00:09:32.019739" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:32.020170" 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-19T00:09:32.016594" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T00:09:32.020413" 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-19T00:09:31.298412" elapsed="0.722026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:32.020864" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:32.020616" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:32.020949" 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-19T00:09:31.297488" elapsed="0.723601"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:09:31.297306" elapsed="0.723822"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:32.022097" level="INFO">${member_ip} = 10.30.171.128</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-19T00:09:32.021809" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.022949" 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-19T00:09:32.023063" 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-19T00:09:32.022809" elapsed="0.000282"/>
</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-19T00:09:32.025772" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:32.025507" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:32.025488" elapsed="0.000363"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.026142" 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-19T00:09:32.026242" 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-19T00:09:32.025997" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:32.026872" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:32.026418" elapsed="0.000501"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.027509" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:32.027089" elapsed="0.000446"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:32.028689" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:32.028808" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:32.028191" elapsed="0.000642"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:32.029015" elapsed="0.002099"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.033116" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:32.348481" 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 Sun Apr 19 00:08:39 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:08:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:09:32.032564" elapsed="0.316132"/>
</kw>
<msg time="2026-04-19T00:09:32.348823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:32.031342" elapsed="0.317647"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:32.027751" elapsed="0.321437"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.349722" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T00:09:32.726094" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:32.726457" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:09:32.726556" 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-19T00:09:32.349443" elapsed="0.377167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:32.727106" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:32.728799" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:32.728102" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:32.729456" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:32.729155" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:32.729100" 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-19T00:09:32.730013" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T00:09:32.729749" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:32.729705" elapsed="0.000648"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:32.730437" 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-19T00:09:32.748141" elapsed="0.000513"/>
</kw>
<kw name="Open 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-19T00:09:32.748836" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:32.749172" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:32.731173" elapsed="0.018158"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:32.024959" elapsed="0.724467"/>
</kw>
<msg time="2026-04-19T00:09:32.749482" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:32.024386" elapsed="0.725153"/>
</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-19T00:09:32.023776" elapsed="0.725843"/>
</kw>
<msg time="2026-04-19T00:09:32.749662" 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-19T00:09:32.023248" elapsed="0.726461"/>
</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-19T00:09:32.752861" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:09:32.753368" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:32.753668" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:32.750017" elapsed="0.003817"/>
</kw>
<msg time="2026-04-19T00:09:32.753927" 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-19T00:09:32.022400" elapsed="0.731553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:32.754413" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:32.754159" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:32.754500" 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-19T00:09:32.021401" elapsed="0.733223"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:09:32.021220" elapsed="0.733443"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:32.755777" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:32.755503" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.756589" 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-19T00:09:32.756689" 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-19T00:09:32.756450" elapsed="0.000294"/>
</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-19T00:09:32.810934" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:32.810626" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:32.810602" elapsed="0.000452"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.811376" 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-19T00:09:32.811488" 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-19T00:09:32.811209" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:32.812165" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:32.811667" elapsed="0.000640"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.812904" 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-19T00:09:32.812468" elapsed="0.000464"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:32.814143" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:32.814267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:32.813611" elapsed="0.000681"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:32.814485" elapsed="0.000698"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:32.817207" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:33.169317" 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 Sun Apr 19 00:08:39 UTC 2026

  System load:  0.08               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:08:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:32.816642" elapsed="0.352885"/>
</kw>
<msg time="2026-04-19T00:09:33.169657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:32.815409" elapsed="0.354430"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:32.813177" elapsed="0.356841"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:33.170559" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T00:09:33.537090" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T00:09:33.537478" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:09:33.537583" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:09:33.170296" elapsed="0.367356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:33.538181" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.539863" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:33.539135" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:33.540495" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:33.540190" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:33.540136" elapsed="0.000516"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:33.540992" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T00:09:33.540767" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:33.540734" elapsed="0.000478"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:33.541286" 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-19T00:09:33.556609" elapsed="0.000531"/>
</kw>
<kw name="Open 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-19T00:09:33.557310" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:33.557625" 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-19T00:09:33.541975" elapsed="0.015800"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:32.810071" elapsed="0.747796"/>
</kw>
<msg time="2026-04-19T00:09:33.557922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:32.809363" elapsed="0.748618"/>
</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-19T00:09:32.808710" elapsed="0.749474"/>
</kw>
<msg time="2026-04-19T00:09:33.558298" 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-19T00:09:32.756904" elapsed="0.801445"/>
</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-19T00:09:33.561317" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:33.561796" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:33.562289" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:33.558643" elapsed="0.003797"/>
</kw>
<msg time="2026-04-19T00:09:33.562530" 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-19T00:09:32.756022" elapsed="0.806533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.562978" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:33.562732" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:33.563077" 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-19T00:09:32.754944" elapsed="0.808257"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:09:32.754759" elapsed="0.808486"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:09:31.297175" elapsed="2.266107"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T00:09:31.295091" elapsed="2.268252"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.563808" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:09:33.563500" elapsed="0.000334"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:09:33.563985" elapsed="0.000245"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T00:09:33.564407" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:33.564301" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:33.564282" elapsed="0.000188"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.566458" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:33.566161" elapsed="0.000324"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:33.567428" level="INFO">${member_ip} = 10.30.171.9</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-19T00:09:33.567155" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:33.568421" 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-19T00:09:33.568525" 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-19T00:09:33.568091" elapsed="0.000460"/>
</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-19T00:09:33.572109" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:33.571682" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:33.571634" elapsed="0.000604"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:33.573512" 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-19T00:09:33.573735" 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-19T00:09:33.573119" elapsed="0.000707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.575262" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:33.574733" elapsed="0.000628"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:33.576904" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:33.576257" elapsed="0.000736"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.579165" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:33.579240" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:33.578874" 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-19T00:09:33.579471" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:33.580831" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:33.899092" 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 Sun Apr 19 00:08:38 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:09:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:09:33.580465" elapsed="0.318794"/>
</kw>
<msg time="2026-04-19T00:09:33.899350" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:33.580015" elapsed="0.319431"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:33.578155" elapsed="0.321574"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:33.901200" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:33.923863" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:33.924394" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:33.924710" 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-19T00:09:33.900767" elapsed="0.024175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:33.927124" elapsed="0.000835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.929983" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:33.929275" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:33.930708" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:33.930366" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:33.930288" elapsed="0.000602"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:33.931378" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:09:33.931104" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:33.931016" elapsed="0.000577"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:33.931698" elapsed="0.000049"/>
</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-19T00:09:33.937979" elapsed="0.000485"/>
</kw>
<kw name="Open 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-19T00:09:33.938752" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:33.939259" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:33.933516" elapsed="0.006025"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:33.570439" elapsed="0.369397"/>
</kw>
<msg time="2026-04-19T00:09:33.940262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:33.569770" elapsed="0.370572"/>
</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-19T00:09:33.569237" elapsed="0.371217"/>
</kw>
<msg time="2026-04-19T00:09:33.940511" 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-19T00:09:33.568707" elapsed="0.371867"/>
</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-19T00:09:33.943936" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:09:33.944524" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:33.944832" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:33.941169" elapsed="0.003840"/>
</kw>
<msg time="2026-04-19T00:09:33.945169" level="INFO">${output} = 1</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-19T00:09:33.567667" elapsed="0.377527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.945624" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:33.945376" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:33.945709" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:33.945858" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:33.566682" elapsed="0.379201"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:33.945929" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:09:33.946091" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:33.565745" elapsed="0.380370"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:33.946672" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:33.946273" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:33.565353" elapsed="0.381516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:35.950414" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:35.949607" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:35.952615" level="INFO">${member_ip} = 10.30.171.9</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-19T00:09:35.951973" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:35.954496" 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-19T00:09:35.954720" 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-19T00:09:35.954160" elapsed="0.000621"/>
</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-19T00:09:35.959312" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:35.958834" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:35.958781" elapsed="0.000665"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:35.960757" 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-19T00:09:35.960984" 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-19T00:09:35.960350" elapsed="0.000743"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:35.962520" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:35.961981" elapsed="0.000641"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:35.964231" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:35.963540" elapsed="0.000782"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:35.966443" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:35.966519" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:35.966162" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:35.966747" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:35.968166" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:36.270224" 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 Sun Apr 19 00:08:38 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:09:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:09:35.967815" elapsed="0.302643"/>
</kw>
<msg time="2026-04-19T00:09:36.270561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:35.967455" elapsed="0.303210"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:35.965419" elapsed="0.305521"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:36.272400" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:36.294594" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:36.295148" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:36.295465" 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-19T00:09:36.271968" elapsed="0.023692"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:36.297713" elapsed="0.000991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:36.300888" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:36.299886" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:36.301979" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:36.301486" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:36.301372" elapsed="0.000974"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:36.302877" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T00:09:36.302677" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:36.302572" elapsed="0.000477"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:36.303127" 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-19T00:09:36.307693" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T00:09:36.308294" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:36.308653" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:36.304399" elapsed="0.004463"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:35.957527" elapsed="0.351565"/>
</kw>
<msg time="2026-04-19T00:09:36.309376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:35.956833" elapsed="0.352602"/>
</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-19T00:09:35.955971" elapsed="0.353550"/>
</kw>
<msg time="2026-04-19T00:09:36.309564" 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-19T00:09:35.955201" elapsed="0.354409"/>
</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-19T00:09:36.312649" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:09:36.313140" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:36.313441" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:36.309899" elapsed="0.003690"/>
</kw>
<msg time="2026-04-19T00:09:36.313679" level="INFO">${output} = 1</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-19T00:09:35.953196" elapsed="0.360509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:36.314232" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:36.313966" elapsed="0.000334"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:36.314343" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:36.314492" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:35.950971" elapsed="0.363546"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:36.314562" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:09:36.314702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:35.948770" elapsed="0.365956"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:36.315304" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:36.314895" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:35.947693" elapsed="0.367796">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:38.320429" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:38.319354" elapsed="0.001152"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:38.321919" level="INFO">${member_ip} = 10.30.171.9</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-19T00:09:38.321520" elapsed="0.000438"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:38.323372" 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-19T00:09:38.323521" 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-19T00:09:38.323109" elapsed="0.000450"/>
</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-19T00:09:38.328473" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:38.328004" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:38.327951" elapsed="0.000657"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:38.329959" 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-19T00:09:38.330214" 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-19T00:09:38.329516" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:38.331736" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:38.331206" elapsed="0.000641"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:38.334222" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:38.333253" elapsed="0.001087"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:38.337478" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:38.337584" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:38.336902" elapsed="0.000715"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:38.337942" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:38.339685" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:38.686367" 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 Sun Apr 19 00:08:38 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:09:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:09:38.339274" elapsed="0.347340"/>
</kw>
<msg time="2026-04-19T00:09:38.686701" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:38.338716" elapsed="0.348073"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:38.335856" elapsed="0.351234"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:38.688592" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:38.711501" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:38.712022" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:38.712398" 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-19T00:09:38.688194" elapsed="0.024419"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:38.714872" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:38.718101" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:38.717020" elapsed="0.001312"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:38.719203" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:38.718673" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:38.718551" elapsed="0.000940"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:38.720279" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:09:38.719808" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:38.719699" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:38.720809" elapsed="0.000080"/>
</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-19T00:09:38.726997" elapsed="0.000514"/>
</kw>
<kw name="Open 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-19T00:09:38.727828" elapsed="0.000269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:38.728394" elapsed="0.000154"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:38.722747" elapsed="0.005958"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:38.326318" elapsed="0.402703"/>
</kw>
<msg time="2026-04-19T00:09:38.729542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:38.325313" elapsed="0.404317"/>
</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-19T00:09:38.324535" elapsed="0.405215"/>
</kw>
<msg time="2026-04-19T00:09:38.729810" 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-19T00:09:38.323785" elapsed="0.406094"/>
</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-19T00:09:38.734215" elapsed="0.000454"/>
</kw>
<kw name="Open 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-19T00:09:38.734911" elapsed="0.000266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:38.735400" elapsed="0.000151"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:38.730314" elapsed="0.005317"/>
</kw>
<msg time="2026-04-19T00:09:38.735761" level="INFO">${output} = 1</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-19T00:09:38.322293" elapsed="0.413503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:38.736467" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:38.736104" elapsed="0.000432"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:38.736600" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:09:38.736829" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:38.320912" elapsed="0.415956"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:38.736938" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T00:09:38.737263" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:38.318112" elapsed="0.419188"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:38.738234" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:38.737620" elapsed="0.000726">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:38.316585" elapsed="0.421932">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:40.742080" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:40.741256" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:40.743681" level="INFO">${member_ip} = 10.30.171.9</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-19T00:09:40.743306" elapsed="0.000413"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:40.744830" 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-19T00:09:40.744971" 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-19T00:09:40.744611" elapsed="0.000398"/>
</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-19T00:09:40.750515" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:40.749867" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:40.749791" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:40.752677" 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-19T00:09:40.753008" 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-19T00:09:40.752080" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:40.754915" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:40.754379" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:40.756701" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:40.755996" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:40.759124" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:40.759203" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:40.758831" 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-19T00:09:40.759435" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:40.760679" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:41.344606" 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 Sun Apr 19 00:09:40 UTC 2026

  System load:  0.0                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:09:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:09:40.760358" elapsed="0.584398"/>
</kw>
<msg time="2026-04-19T00:09:41.344869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:40.759986" elapsed="0.584976"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:40.758072" elapsed="0.587213"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:41.346784" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:41.369690" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:41.370239" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T00:09:41.370575" 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-19T00:09:41.346383" elapsed="0.024402"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:41.373074" elapsed="0.000872"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:41.376214" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:41.375239" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:41.377377" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:41.376840" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:41.376675" elapsed="0.000994"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:41.378478" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:09:41.377991" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:41.377884" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:41.379006" elapsed="0.000239"/>
</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-19T00:09:41.385531" 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-19T00:09:41.386088" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:41.386444" 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-19T00:09:41.382014" elapsed="0.004634"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:40.747673" elapsed="0.639195"/>
</kw>
<msg time="2026-04-19T00:09:41.387236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:40.746732" elapsed="0.640562"/>
</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-19T00:09:40.745970" elapsed="0.641405"/>
</kw>
<msg time="2026-04-19T00:09:41.387416" 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-19T00:09:40.745249" elapsed="0.642213"/>
</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-19T00:09:41.390435" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:09:41.390914" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:41.391311" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:41.387752" elapsed="0.003707"/>
</kw>
<msg time="2026-04-19T00:09:41.391550" level="INFO">${output} = 0</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-19T00:09:40.744018" elapsed="0.647558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:41.392000" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:41.391753" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:41.392104" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:41.392254" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:40.742610" elapsed="0.649670"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:41.392327" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:09:41.392470" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:40.740392" elapsed="0.652102"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T00:09:41.392650" elapsed="0.000397"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T00:09:40.739348" elapsed="0.653763"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:09:33.564800" elapsed="7.828360"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:09:33.564653" elapsed="7.828547"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:41.395128" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:41.394762" elapsed="0.000395"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:41.396051" level="INFO">${member_ip} = 10.30.171.128</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-19T00:09:41.395763" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:41.396877" 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-19T00:09:41.396980" 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-19T00:09:41.396703" elapsed="0.000304"/>
</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-19T00:09:41.400839" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:41.400224" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:41.400172" elapsed="0.000804"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:41.402376" 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-19T00:09:41.402612" 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-19T00:09:41.401930" elapsed="0.000779"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:41.404268" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:41.403708" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:41.406044" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:41.405356" elapsed="0.000786"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:41.408566" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:41.408644" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:41.408253" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:41.408898" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:41.410523" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:41.979430" 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 Sun Apr 19 00:09:41 UTC 2026

  System load:  0.04               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:09:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:09:41.409842" elapsed="0.569740"/>
</kw>
<msg time="2026-04-19T00:09:41.979666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:41.409478" elapsed="0.570274"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:41.407388" elapsed="0.572691"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:41.981547" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:42.004285" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:42.004778" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T00:09:42.005164" 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-19T00:09:41.981160" elapsed="0.024216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:42.007604" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.010786" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:42.009774" elapsed="0.001389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:42.012082" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:42.011515" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:42.011393" elapsed="0.000988"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:42.013183" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:09:42.012701" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:42.012594" elapsed="0.000941"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:42.013714" 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-19T00:09:42.020272" 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-19T00:09:42.020812" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:42.021278" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:42.016887" elapsed="0.004601"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:41.398867" elapsed="0.622844"/>
</kw>
<msg time="2026-04-19T00:09:42.022017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:41.398233" elapsed="0.623855"/>
</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-19T00:09:41.397682" elapsed="0.624487"/>
</kw>
<msg time="2026-04-19T00:09:42.022211" 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-19T00:09:41.397181" elapsed="0.625075"/>
</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-19T00:09:42.025215" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:09:42.025690" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:42.025992" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:42.022547" elapsed="0.003610"/>
</kw>
<msg time="2026-04-19T00:09:42.026248" level="INFO">${output} = 0</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-19T00:09:41.396295" elapsed="0.629978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.026701" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:42.026449" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:42.026789" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:42.026944" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:41.395357" elapsed="0.631613"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:42.027016" elapsed="0.000081"/>
</return>
<msg time="2026-04-19T00:09:42.027218" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:41.394416" elapsed="0.632827"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T00:09:42.027399" elapsed="0.000349"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T00:09:41.393963" elapsed="0.633848"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:09:41.393440" elapsed="0.634444"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:09:41.393298" elapsed="0.634625"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.029714" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:42.029426" elapsed="0.000322"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:42.030639" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:42.030372" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:42.031511" 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-19T00:09:42.031610" 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-19T00:09:42.031377" elapsed="0.000258"/>
</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-19T00:09:42.035258" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:42.034817" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:42.034766" elapsed="0.000627"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:42.038436" 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-19T00:09:42.038690" 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-19T00:09:42.036373" elapsed="0.002414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.040377" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:42.039738" elapsed="0.000747"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:42.042188" 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-19T00:09:42.041483" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.044704" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:42.044782" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:42.044424" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:42.045256" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:42.046701" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:42.688925" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:42.046373" elapsed="0.642732"/>
</kw>
<msg time="2026-04-19T00:09:42.689198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:42.045829" elapsed="0.643463"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:42.043476" elapsed="0.646115"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:42.691172" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:42.714451" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:42.714966" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:42.715339" 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-19T00:09:42.690704" elapsed="0.024847"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:42.717760" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.720886" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:42.719908" elapsed="0.001233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:42.721986" elapsed="0.000094"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:42.721490" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:42.721365" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:42.723140" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:09:42.722617" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:42.722512" elapsed="0.001080"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:42.723766" elapsed="0.000082"/>
</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-19T00:09:42.728680" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:09:42.729238" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:42.729593" 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-19T00:09:42.725271" elapsed="0.004528"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:42.033489" elapsed="0.696550"/>
</kw>
<msg time="2026-04-19T00:09:42.730353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:42.032840" elapsed="0.697568"/>
</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-19T00:09:42.032314" elapsed="0.698177"/>
</kw>
<msg time="2026-04-19T00:09:42.730532" 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-19T00:09:42.031788" elapsed="0.698789"/>
</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-19T00:09:42.733627" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:42.734113" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:42.734419" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:42.730866" elapsed="0.003699"/>
</kw>
<msg time="2026-04-19T00:09:42.734655" level="INFO">${output} = 1</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-19T00:09:42.030916" elapsed="0.703763"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.735142" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:42.734853" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:42.735228" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:42.735377" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:42.029945" elapsed="0.705457"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:42.735449" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:09:42.735591" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:42.029085" elapsed="0.706530"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:42.736201" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:42.735771" elapsed="0.000533">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:42.028685" elapsed="0.707734">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:44.738385" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:44.737966" elapsed="0.000456"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:44.739340" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:44.739062" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:44.740192" 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-19T00:09:44.740293" 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-19T00:09:44.740003" elapsed="0.000317"/>
</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-19T00:09:44.744197" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:44.743719" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:44.743664" elapsed="0.000673"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:44.747157" 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-19T00:09:44.747687" 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-19T00:09:44.745749" elapsed="0.002155"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:44.750096" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:44.749546" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:44.751863" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:44.751173" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:44.754386" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:44.754462" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:44.754098" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:44.754695" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:44.755935" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:45.066485" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:44.755613" elapsed="0.311045"/>
</kw>
<msg time="2026-04-19T00:09:45.066753" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:44.755258" elapsed="0.311597"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:44.753332" elapsed="0.313869"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:45.068845" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:45.091396" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:45.091950" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:45.092444" 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-19T00:09:45.068402" elapsed="0.024278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:45.095236" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:45.098897" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:45.097763" elapsed="0.001431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:45.100082" elapsed="0.000123"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:45.099548" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:45.099425" elapsed="0.001061"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:45.101227" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:09:45.100811" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:45.100702" elapsed="0.000748"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:45.101561" elapsed="0.000050"/>
</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-19T00:09:45.108886" elapsed="0.000574"/>
</kw>
<kw name="Open 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-19T00:09:45.109798" elapsed="0.000405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:45.110509" elapsed="0.000297"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:45.103639" elapsed="0.007328"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:44.742358" elapsed="0.368978"/>
</kw>
<msg time="2026-04-19T00:09:45.111795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:44.741663" elapsed="0.370237"/>
</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-19T00:09:44.741129" elapsed="0.370894"/>
</kw>
<msg time="2026-04-19T00:09:45.112152" 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-19T00:09:44.740584" elapsed="0.371656"/>
</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-19T00:09:45.115749" 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-19T00:09:45.116323" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:45.116649" 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-19T00:09:45.112691" elapsed="0.004112"/>
</kw>
<msg time="2026-04-19T00:09:45.116914" level="INFO">${output} = 1</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-19T00:09:44.739584" elapsed="0.377356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:45.117474" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:45.117201" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:45.117563" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:09:45.117740" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:44.738635" elapsed="0.379133"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:45.117817" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:09:45.117978" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:44.737570" elapsed="0.380436"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:45.118671" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:45.118233" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:44.736968" elapsed="0.381914">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:47.122349" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:47.121557" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:47.124445" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:47.123816" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:47.126365" 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-19T00:09:47.126590" 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-19T00:09:47.125939" elapsed="0.000709"/>
</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-19T00:09:47.132103" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:47.131454" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:47.131380" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:47.134577" 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-19T00:09:47.134988" 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-19T00:09:47.133640" elapsed="0.001530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:47.137352" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:47.136585" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:47.139705" 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-19T00:09:47.138874" elapsed="0.000928"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:47.142178" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:47.142255" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:47.141863" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:47.142490" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:47.143752" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:47.462738" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:47.143427" elapsed="0.319401"/>
</kw>
<msg time="2026-04-19T00:09:47.462893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:47.143066" elapsed="0.319900"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:47.141112" elapsed="0.322107"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:47.464573" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:47.487587" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:47.488121" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:47.488459" 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-19T00:09:47.464239" elapsed="0.024429"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:47.490947" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:47.494258" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:47.493243" elapsed="0.001158"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:47.494923" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:47.494618" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:47.494542" elapsed="0.000588"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:47.495609" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T00:09:47.495327" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:47.495260" elapsed="0.000607"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:47.495976" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:47.502621" 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-19T00:09:47.503390" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:47.503870" 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-19T00:09:47.497812" elapsed="0.006386"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:47.129491" elapsed="0.375029"/>
</kw>
<msg time="2026-04-19T00:09:47.505009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:47.128541" elapsed="0.376585"/>
</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-19T00:09:47.127783" elapsed="0.377456"/>
</kw>
<msg time="2026-04-19T00:09:47.505295" 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-19T00:09:47.126998" elapsed="0.378360"/>
</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-19T00:09:47.508566" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:09:47.509064" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:47.509366" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:47.505796" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T00:09:47.509599" level="INFO">${output} = 1</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-19T00:09:47.124983" elapsed="0.384640"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:47.510107" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:47.509808" elapsed="0.000440"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:47.510294" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:47.510444" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:47.122870" elapsed="0.387598"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:47.510515" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:09:47.510655" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:47.120720" elapsed="0.389959"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:47.511238" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:47.510833" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:47.119676" elapsed="0.391743">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:49.515111" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:49.514349" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:49.517250" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:49.516621" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:49.518405" 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-19T00:09:49.518555" 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-19T00:09:49.518184" elapsed="0.000408"/>
</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-19T00:09:49.523963" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:49.523336" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:49.523259" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:49.526464" 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-19T00:09:49.526801" 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-19T00:09:49.525549" elapsed="0.001392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:49.529207" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:49.528425" elapsed="0.000905"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:49.531088" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:49.530362" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:49.533545" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:49.533623" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:49.533261" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:49.533856" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:49.535144" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:49.891349" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:49.534794" elapsed="0.356689"/>
</kw>
<msg time="2026-04-19T00:09:49.891563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:49.534429" elapsed="0.357221"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:49.532495" elapsed="0.359459"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:49.893527" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:49.916860" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:49.917606" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:49.917975" 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-19T00:09:49.893118" elapsed="0.025163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:49.920877" elapsed="0.001097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:49.924526" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:49.923444" elapsed="0.001314"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:49.925672" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:49.925154" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:49.924993" elapsed="0.000974"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:49.926812" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T00:09:49.926361" elapsed="0.000897"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:49.926249" elapsed="0.001151"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:49.927578" elapsed="0.000084"/>
</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-19T00:09:49.935167" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:09:49.935746" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:49.936135" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:49.930604" elapsed="0.005743"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:49.521412" elapsed="0.415159"/>
</kw>
<msg time="2026-04-19T00:09:49.936880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:49.520451" elapsed="0.416495"/>
</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-19T00:09:49.519636" elapsed="0.417409"/>
</kw>
<msg time="2026-04-19T00:09:49.937090" 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-19T00:09:49.518809" elapsed="0.418329"/>
</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-19T00:09:49.940196" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:49.940678" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:49.940973" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:49.937436" elapsed="0.003703"/>
</kw>
<msg time="2026-04-19T00:09:49.941232" level="INFO">${output} = 1</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-19T00:09:49.517593" elapsed="0.423665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:49.941686" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:49.941437" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:49.941773" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:09:49.941928" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:49.515638" elapsed="0.426315"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:49.942002" elapsed="0.000050"/>
</return>
<msg time="2026-04-19T00:09:49.942178" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:49.513498" elapsed="0.428705"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:49.942767" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:49.942363" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:49.512424" elapsed="0.430538">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:51.946373" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:51.945563" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:51.948551" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:51.947898" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:51.950455" 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-19T00:09:51.950681" 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-19T00:09:51.950071" elapsed="0.000670"/>
</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-19T00:09:51.957343" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:51.956856" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:51.956582" elapsed="0.000899"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:51.958915" 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-19T00:09:51.959172" 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-19T00:09:51.958482" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:51.960795" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:51.960255" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:51.962631" 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-19T00:09:51.961901" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:51.964968" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:51.965139" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:51.964692" elapsed="0.000473"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:51.965380" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:51.966716" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:52.275362" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:51.966390" elapsed="0.309140"/>
</kw>
<msg time="2026-04-19T00:09:52.275622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:51.965987" elapsed="0.309732"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:51.963922" elapsed="0.312097"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:52.277605" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:52.291144" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:52.291482" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:52.291706" 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-19T00:09:52.277180" elapsed="0.014670"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:52.293378" elapsed="0.000623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:52.296072" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:52.295103" elapsed="0.001200"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:52.297208" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:52.296651" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:52.296526" elapsed="0.000977"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:52.298493" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T00:09:52.297822" elapsed="0.000889"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:52.297718" elapsed="0.001121"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:52.299013" elapsed="0.000114"/>
</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-19T00:09:52.307854" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T00:09:52.308421" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:52.308781" 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-19T00:09:52.302004" elapsed="0.006983"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:51.955127" elapsed="0.354109"/>
</kw>
<msg time="2026-04-19T00:09:52.309541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:51.953547" elapsed="0.356052"/>
</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-19T00:09:51.952313" elapsed="0.357368"/>
</kw>
<msg time="2026-04-19T00:09:52.309722" 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-19T00:09:51.951124" elapsed="0.358642"/>
</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-19T00:09:52.312752" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:09:52.313254" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:52.313546" 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-19T00:09:52.310105" elapsed="0.003587"/>
</kw>
<msg time="2026-04-19T00:09:52.313782" level="INFO">${output} = 1</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-19T00:09:51.949128" elapsed="0.364737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:52.314377" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:52.314124" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:52.314465" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:09:52.314617" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:51.946937" elapsed="0.367706"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:52.314690" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:09:52.314834" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:51.944717" elapsed="0.370142"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:52.315434" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:52.315017" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:51.943661" elapsed="0.371960">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:54.319255" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:54.318447" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:54.320637" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:54.320251" elapsed="0.000424"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:54.321798" 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-19T00:09:54.321938" 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-19T00:09:54.321580" elapsed="0.000396"/>
</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-19T00:09:54.327609" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:54.326905" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:54.326546" elapsed="0.001254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:54.329412" 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-19T00:09:54.329656" 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-19T00:09:54.328960" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:54.331348" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:54.330736" elapsed="0.000861"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:54.333300" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:54.332577" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:54.335869" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:54.335950" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:54.335555" 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-19T00:09:54.336289" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:54.337772" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:54.670787" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:54.337431" elapsed="0.333642"/>
</kw>
<msg time="2026-04-19T00:09:54.671157" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:54.336977" elapsed="0.334266"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:54.334629" elapsed="0.336892"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:54.673111" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:54.685902" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:54.686536" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:54.686897" 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-19T00:09:54.672682" elapsed="0.014484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:54.689505" elapsed="0.000612"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:54.691592" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:54.690934" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:54.692341" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:54.691978" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:54.691895" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:54.693097" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T00:09:54.692755" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:54.692683" elapsed="0.000655"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:54.693461" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:54.699397" 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-19T00:09:54.699952" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:54.700333" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:54.695457" 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-19T00:09:54.324687" elapsed="0.376079"/>
</kw>
<msg time="2026-04-19T00:09:54.701085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:54.323734" elapsed="0.377409"/>
</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-19T00:09:54.322951" elapsed="0.378274"/>
</kw>
<msg time="2026-04-19T00:09:54.701267" 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-19T00:09:54.322225" elapsed="0.379088"/>
</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-19T00:09:54.704412" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:09:54.704887" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:54.705200" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:54.701622" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:09:54.705440" level="INFO">${output} = 1</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-19T00:09:54.320977" elapsed="0.384488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:54.705934" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:54.705685" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:54.706022" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:09:54.706199" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:54.319657" elapsed="0.386567"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:54.706270" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:09:54.706412" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:54.317613" elapsed="0.388824"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:54.707039" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:54.706640" elapsed="0.000532">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:54.316582" elapsed="0.390703">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:56.710863" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:56.710133" elapsed="0.000799"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:56.712979" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:56.712357" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:56.714814" 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-19T00:09:56.715047" 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-19T00:09:56.714491" elapsed="0.000644"/>
</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-19T00:09:56.721973" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:56.721486" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:56.719753" elapsed="0.002377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:56.723546" 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-19T00:09:56.723786" 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-19T00:09:56.723104" elapsed="0.000780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:56.725485" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:56.724926" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:56.727362" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:56.726565" elapsed="0.000896"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:56.729804" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:56.729881" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:56.729513" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:56.730153" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:56.731553" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:57.044178" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:56.731230" elapsed="0.313109"/>
</kw>
<msg time="2026-04-19T00:09:57.044428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:56.730714" elapsed="0.313804"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:56.728665" elapsed="0.316174"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:57.046331" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:57.069098" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:57.069582" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:57.069913" 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-19T00:09:57.045924" elapsed="0.024272"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:57.072470" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:57.075558" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:57.074591" elapsed="0.001192"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:57.076647" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:57.076157" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:57.076004" elapsed="0.000928"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:57.077727" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:09:57.077286" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:57.077179" elapsed="0.001089"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:57.078456" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:57.083209" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:09:57.083764" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:57.084143" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:57.079802" elapsed="0.004551"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:56.718441" elapsed="0.366140"/>
</kw>
<msg time="2026-04-19T00:09:57.084926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:56.717740" elapsed="0.367247"/>
</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-19T00:09:56.716690" elapsed="0.368395"/>
</kw>
<msg time="2026-04-19T00:09:57.085127" 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-19T00:09:56.715485" elapsed="0.369688"/>
</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-19T00:09:57.088276" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:09:57.088752" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:57.089061" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:57.085469" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T00:09:57.089301" level="INFO">${output} = 1</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-19T00:09:56.713553" elapsed="0.375772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:57.089781" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:57.089516" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:57.089869" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:09:57.090022" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:56.711420" elapsed="0.378775"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:57.090244" elapsed="0.000079"/>
</return>
<msg time="2026-04-19T00:09:57.090451" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:56.709300" elapsed="0.381176"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:57.091060" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:57.090647" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:56.708266" elapsed="0.382981">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:09:59.095075" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:09:59.094211" elapsed="0.000943"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:09:59.097627" level="INFO">${member_ip} = 10.30.171.206</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-19T00:09:59.096885" elapsed="0.000781"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:59.098830" 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-19T00:09:59.098974" 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-19T00:09:59.098582" elapsed="0.000431"/>
</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-19T00:09:59.104631" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:09:59.103956" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:59.103876" elapsed="0.000954"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:59.106789" 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-19T00:09:59.107040" 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-19T00:09:59.106129" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:59.108854" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:59.108295" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:09:59.110682" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:09:59.109973" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:09:59.113131" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:09:59.113210" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:09:59.112831" 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-19T00:09:59.113473" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:09:59.114737" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:09:59.470971" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:09:59.114406" elapsed="0.356747"/>
</kw>
<msg time="2026-04-19T00:09:59.471241" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:59.114030" elapsed="0.357309"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:09:59.112071" elapsed="0.359541"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:09:59.473242" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:09:59.496080" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:09:59.496325" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:09:59.496477" 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-19T00:09:59.472803" elapsed="0.023770"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:59.497625" elapsed="0.000466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:59.499134" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:59.498666" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:59.499723" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:09:59.499408" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:59.499348" elapsed="0.000513"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:09:59.500234" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:09:59.500009" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T00:09:59.499961" elapsed="0.000442"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:09:59.500484" 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-19T00:09:59.505202" 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-19T00:09:59.505752" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:59.506234" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:59.501837" elapsed="0.004610"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:09:59.101910" elapsed="0.404756"/>
</kw>
<msg time="2026-04-19T00:09:59.506969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:09:59.100791" elapsed="0.406241"/>
</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-19T00:09:59.099996" elapsed="0.407134"/>
</kw>
<msg time="2026-04-19T00:09:59.507171" 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-19T00:09:59.099269" elapsed="0.407949"/>
</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-19T00:09:59.510326" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:09:59.510804" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:09:59.511117" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:09:59.507512" elapsed="0.003754"/>
</kw>
<msg time="2026-04-19T00:09:59.511358" level="INFO">${output} = 1</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-19T00:09:59.097973" elapsed="0.413410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:09:59.511829" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:09:59.511578" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:09:59.511917" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:09:59.512088" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:09:59.095829" elapsed="0.416286"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:09:59.512163" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:09:59.512308" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:09:59.093292" elapsed="0.419041"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:09:59.512965" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:09:59.512489" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:09:59.092131" elapsed="0.421044">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:01.516824" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:01.515965" elapsed="0.000964"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:01.519250" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:01.518564" elapsed="0.000756"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:01.520778" 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-19T00:10:01.521110" 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-19T00:10:01.520531" elapsed="0.000622"/>
</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-19T00:10:01.527001" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:01.526295" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:01.526212" elapsed="0.001030"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:01.529579" 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-19T00:10:01.529850" 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-19T00:10:01.528783" elapsed="0.001168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:01.531654" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:01.531012" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:01.533625" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:01.532788" elapsed="0.000939"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:01.536248" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:01.536328" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:01.535912" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:01.536573" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:01.538060" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:01.841444" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:09:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:01.537710" elapsed="0.303886"/>
</kw>
<msg time="2026-04-19T00:10:01.841685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:01.537340" elapsed="0.304439"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:01.534997" elapsed="0.307061"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:01.843559" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:01.866486" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:01.866984" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:01.867434" 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-19T00:10:01.843155" elapsed="0.024526"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:01.870477" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:01.873863" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:01.872859" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:01.874982" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:01.874482" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:01.874360" elapsed="0.001032"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:01.876368" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-19T00:10:01.875723" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:01.875613" elapsed="0.001129"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:01.876981" elapsed="0.000118"/>
</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-19T00:10:01.882477" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:10:01.883159" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:01.883535" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:01.878746" elapsed="0.005005"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:01.524198" elapsed="0.359782"/>
</kw>
<msg time="2026-04-19T00:10:01.884371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:01.523107" elapsed="0.361330"/>
</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-19T00:10:01.522263" elapsed="0.362257"/>
</kw>
<msg time="2026-04-19T00:10:01.884563" 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-19T00:10:01.521407" elapsed="0.363202"/>
</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-19T00:10:01.887727" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:01.888231" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:01.888568" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:01.884905" elapsed="0.003816"/>
</kw>
<msg time="2026-04-19T00:10:01.888815" level="INFO">${output} = 1</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-19T00:10:01.519847" elapsed="0.368994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:01.889374" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:01.889113" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:01.889464" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:01.889618" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:01.517542" elapsed="0.372101"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:01.889690" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:01.889834" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:01.515075" elapsed="0.374783"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:01.890441" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:01.890016" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:01.513954" elapsed="0.376678">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:03.894223" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:03.893453" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:03.895783" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:03.895406" elapsed="0.000415"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:03.896943" 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-19T00:10:03.897108" 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-19T00:10:03.896724" elapsed="0.000423"/>
</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-19T00:10:03.902585" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:03.901890" elapsed="0.000904"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:03.901814" elapsed="0.001067"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:03.904568" 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-19T00:10:03.904814" 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-19T00:10:03.903890" elapsed="0.001024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:03.906489" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:03.905912" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:03.908311" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:03.907598" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:03.910771" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:03.910849" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:03.910484" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:03.911101" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:03.912356" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:04.228344" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:03.912014" elapsed="0.316475"/>
</kw>
<msg time="2026-04-19T00:10:04.228572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:03.911658" elapsed="0.317001"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:03.909680" elapsed="0.319261"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:04.230443" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:04.253444" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:04.253948" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:04.254380" 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-19T00:10:04.230056" elapsed="0.024534"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:04.256766" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:04.259903" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:04.258910" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:04.261007" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:04.260513" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:04.260391" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:04.262134" elapsed="0.000174"/>
</return>
<status status="PASS" start="2026-04-19T00:10:04.261656" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:04.261550" elapsed="0.000996"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:04.262723" 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-19T00:10:04.267534" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:10:04.268090" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:04.268445" 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-19T00:10:04.264159" elapsed="0.004491"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:03.899853" elapsed="0.369021"/>
</kw>
<msg time="2026-04-19T00:10:04.269288" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:03.898895" elapsed="0.370453"/>
</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-19T00:10:03.898103" elapsed="0.371328"/>
</kw>
<msg time="2026-04-19T00:10:04.269472" 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-19T00:10:03.897367" elapsed="0.372150"/>
</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-19T00:10:04.272542" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:10:04.273018" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:04.273332" 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-19T00:10:04.269806" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T00:10:04.273570" level="INFO">${output} = 1</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-19T00:10:03.896146" elapsed="0.377450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:04.274019" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:04.273772" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:04.274126" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:10:04.274277" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:03.894802" elapsed="0.379597"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:04.274451" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:10:04.274598" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:03.892615" elapsed="0.382009"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:04.275282" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:04.274783" elapsed="0.000575">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:03.891545" elapsed="0.383925">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:06.278911" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:06.278176" elapsed="0.000808"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:06.281098" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:06.280427" elapsed="0.000738"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:06.282630" 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-19T00:10:06.282776" 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-19T00:10:06.282402" elapsed="0.000413"/>
</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-19T00:10:06.289230" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:06.288327" elapsed="0.001030"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:06.287825" elapsed="0.001617"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:06.291113" 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-19T00:10:06.291355" 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-19T00:10:06.290628" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:06.292989" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:06.292441" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:06.294929" 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-19T00:10:06.294214" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:06.297583" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:06.297662" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:06.297294" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:06.297900" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:06.299251" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:06.613971" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:06.298840" elapsed="0.315313"/>
</kw>
<msg time="2026-04-19T00:10:06.614240" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:06.298478" elapsed="0.315859"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:06.296462" elapsed="0.318158"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:06.616149" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:06.638423" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:06.638942" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:06.639331" 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-19T00:10:06.615707" elapsed="0.023834"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:06.641791" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:06.644983" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:06.643992" elapsed="0.001161"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:06.645700" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:06.645377" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:06.645298" elapsed="0.000584"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:06.646393" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:10:06.646109" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:06.646019" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:06.646730" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:06.653845" elapsed="0.000535"/>
</kw>
<kw name="Open 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-19T00:10:06.654695" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:06.655266" 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-19T00:10:06.648685" elapsed="0.006917"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:06.285534" elapsed="0.370415"/>
</kw>
<msg time="2026-04-19T00:10:06.656507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:06.284558" elapsed="0.372031"/>
</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-19T00:10:06.283784" elapsed="0.372926"/>
</kw>
<msg time="2026-04-19T00:10:06.656767" 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-19T00:10:06.283063" elapsed="0.373772"/>
</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-19T00:10:06.661242" elapsed="0.000457"/>
</kw>
<kw name="Open 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-19T00:10:06.661933" elapsed="0.000303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:06.662454" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:06.657375" elapsed="0.005284"/>
</kw>
<msg time="2026-04-19T00:10:06.662783" level="INFO">${output} = 1</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-19T00:10:06.281656" elapsed="0.381163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:06.663451" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:06.663098" elapsed="0.000418"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:06.663578" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T00:10:06.663794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:06.279476" elapsed="0.384355"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:06.663899" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:10:06.664218" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:06.277330" elapsed="0.386925"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:06.665031" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:06.664480" elapsed="0.000667">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:06.276268" elapsed="0.389029">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:08.668854" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:08.668108" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:08.670950" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:08.670350" elapsed="0.000658"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:08.672779" 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-19T00:10:08.672998" 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-19T00:10:08.672452" elapsed="0.000635"/>
</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-19T00:10:08.678290" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:08.677783" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:08.677495" elapsed="0.000936"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:08.679903" 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-19T00:10:08.680172" 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-19T00:10:08.679454" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:08.681820" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:08.681268" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:08.683682" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:08.682962" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:08.686146" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:08.686236" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:08.685842" 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-19T00:10:08.686470" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:08.687799" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:09.016372" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:08.687476" elapsed="0.329049"/>
</kw>
<msg time="2026-04-19T00:10:09.016610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:08.687116" elapsed="0.329582"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:08.684989" elapsed="0.331994"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:09.018473" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:09.041243" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:09.041742" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:09.042127" 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-19T00:10:09.018079" elapsed="0.024266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:09.044566" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:09.047735" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:09.046753" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:09.049159" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:09.048356" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:09.048232" elapsed="0.001064"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:09.049643" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T00:10:09.049442" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:09.049394" elapsed="0.000405"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:09.049877" 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-19T00:10:09.054628" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:10:09.055188" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:09.055543" 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-19T00:10:09.051226" elapsed="0.004520"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:08.676169" elapsed="0.379799"/>
</kw>
<msg time="2026-04-19T00:10:09.056297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:08.675454" elapsed="0.380900"/>
</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-19T00:10:08.674794" elapsed="0.381641"/>
</kw>
<msg time="2026-04-19T00:10:09.056503" 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-19T00:10:08.673434" elapsed="0.383116"/>
</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-19T00:10:09.059532" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T00:10:09.060000" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:09.060311" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:09.056838" elapsed="0.003620"/>
</kw>
<msg time="2026-04-19T00:10:09.060644" level="INFO">${output} = 1</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-19T00:10:08.671517" elapsed="0.389153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:09.061222" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:09.060846" elapsed="0.000422"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:09.061311" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:10:09.061462" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:08.669407" elapsed="0.392080"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:09.061534" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:09.061676" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:08.667284" elapsed="0.394417"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:09.062265" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:09.061856" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:08.666222" elapsed="0.396226">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:11.066105" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:11.065313" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:11.067896" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:11.067484" elapsed="0.000452"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:11.069177" 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-19T00:10:11.069329" 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-19T00:10:11.068913" elapsed="0.000456"/>
</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-19T00:10:11.076144" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:11.075623" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:11.073639" elapsed="0.002651"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:11.077772" 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-19T00:10:11.078024" 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-19T00:10:11.077306" elapsed="0.000844"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:11.079800" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:11.079233" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:11.081718" 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-19T00:10:11.080973" elapsed="0.000855"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:11.084364" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:11.084443" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:11.083894" elapsed="0.000574"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:11.084684" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:11.085968" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:11.395643" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:11.085621" elapsed="0.310286"/>
</kw>
<msg time="2026-04-19T00:10:11.396001" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:11.085262" elapsed="0.310868"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:11.083106" elapsed="0.313370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:11.398012" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:11.421065" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:11.421594" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:11.422082" 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-19T00:10:11.397605" elapsed="0.024748"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:11.424913" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:11.427762" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:11.426899" elapsed="0.001064"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:11.428770" elapsed="0.000060"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:11.428307" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:11.428194" elapsed="0.000863"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:11.429743" elapsed="0.000105"/>
</return>
<status status="PASS" start="2026-04-19T00:10:11.429345" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:11.429251" elapsed="0.000928"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:11.430340" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:11.436298" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T00:10:11.436871" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:11.437251" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:11.432404" elapsed="0.005054"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:11.072271" elapsed="0.365408"/>
</kw>
<msg time="2026-04-19T00:10:11.437984" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:11.071293" elapsed="0.366824"/>
</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-19T00:10:11.070410" elapsed="0.367796"/>
</kw>
<msg time="2026-04-19T00:10:11.438248" 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-19T00:10:11.069617" elapsed="0.368677"/>
</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-19T00:10:11.441377" 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-19T00:10:11.441853" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:11.442168" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:11.438585" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T00:10:11.442406" level="INFO">${output} = 1</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-19T00:10:11.068285" elapsed="0.374146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:11.442861" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:11.442615" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:11.442948" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:10:11.443185" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:11.066659" elapsed="0.376552"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:11.443257" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:11.443400" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:11.064453" elapsed="0.378971"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:11.444069" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:11.443646" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:11.063358" elapsed="0.380906">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:13.447855" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:13.447116" elapsed="0.000807"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:13.449957" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:13.449363" elapsed="0.000652"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:13.451788" 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-19T00:10:13.452008" 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-19T00:10:13.451456" elapsed="0.000639"/>
</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-19T00:10:13.456697" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:13.456194" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:13.456136" elapsed="0.000702"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:13.458523" 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-19T00:10:13.458767" 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-19T00:10:13.457830" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:13.460434" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:13.459859" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:13.462313" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:13.461588" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:13.464846" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:13.464923" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:13.464553" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:13.465178" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:13.466434" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:13.776771" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:13.466109" elapsed="0.310842"/>
</kw>
<msg time="2026-04-19T00:10:13.777112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:13.465733" elapsed="0.311520"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:13.463626" elapsed="0.314144"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:13.780772" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:13.794380" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:13.794870" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:13.795243" 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-19T00:10:13.780016" elapsed="0.015437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:13.797704" elapsed="0.000762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:13.799905" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:13.799292" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:13.800651" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:13.800329" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:13.800248" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:13.801378" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:10:13.801080" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:13.800986" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:13.801761" elapsed="0.000059"/>
</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-19T00:10:13.808009" 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-19T00:10:13.808593" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:13.808948" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:13.803718" elapsed="0.005462"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:13.454775" elapsed="0.354636"/>
</kw>
<msg time="2026-04-19T00:10:13.809756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:13.454076" elapsed="0.355738"/>
</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-19T00:10:13.453419" elapsed="0.356480"/>
</kw>
<msg time="2026-04-19T00:10:13.809940" 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-19T00:10:13.452499" elapsed="0.357487"/>
</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-19T00:10:13.813014" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T00:10:13.813502" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:13.813822" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:13.810295" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T00:10:13.814075" level="INFO">${output} = 1</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-19T00:10:13.450525" elapsed="0.363577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:13.814525" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:13.814277" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:13.814611" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:10:13.814762" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:13.448398" elapsed="0.366389"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:13.814833" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:13.814976" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:13.446213" elapsed="0.368787"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:13.815574" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:13.815173" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:13.445161" elapsed="0.370601">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:15.819127" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:15.818371" elapsed="0.000828"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:15.821352" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:15.820729" elapsed="0.000681"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:15.823163" 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-19T00:10:15.823385" 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-19T00:10:15.822807" elapsed="0.000635"/>
</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-19T00:10:15.827711" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:15.827238" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:15.827177" elapsed="0.000687"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:15.829570" 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-19T00:10:15.829816" 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-19T00:10:15.828877" elapsed="0.001039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:15.831464" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:15.830897" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:15.833390" 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-19T00:10:15.832594" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:15.835898" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:15.835976" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:15.835587" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:15.836225" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:15.837484" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:16.149996" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:15.837158" elapsed="0.312968"/>
</kw>
<msg time="2026-04-19T00:10:16.150202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:15.836777" elapsed="0.313509"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:15.834706" elapsed="0.315838"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:16.151965" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:16.174786" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:16.175315" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:16.175646" 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-19T00:10:16.151599" elapsed="0.024256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:16.178179" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:16.181297" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:16.180332" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:16.182481" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:16.181858" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:16.181740" elapsed="0.001035"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:16.183565" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T00:10:16.183122" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:16.182984" elapsed="0.000924"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:16.184231" elapsed="0.000085"/>
</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-19T00:10:16.189650" 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-19T00:10:16.190204" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:16.190557" 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-19T00:10:16.186217" elapsed="0.004546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:15.825852" elapsed="0.365133"/>
</kw>
<msg time="2026-04-19T00:10:16.191307" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:15.825169" elapsed="0.366195"/>
</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-19T00:10:15.824618" elapsed="0.366827"/>
</kw>
<msg time="2026-04-19T00:10:16.191486" 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-19T00:10:15.823835" elapsed="0.367696"/>
</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-19T00:10:16.194599" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T00:10:16.195085" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:16.195383" 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-19T00:10:16.191816" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T00:10:16.195617" level="INFO">${output} = 1</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-19T00:10:15.821882" elapsed="0.373760"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:16.196158" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:16.195815" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:16.196247" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:16.196398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:15.819802" elapsed="0.376621"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:16.196469" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:16.196611" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:15.817554" elapsed="0.379081"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:16.197223" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:16.196808" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:15.816508" elapsed="0.380909">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:18.200879" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:18.200148" elapsed="0.000799"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:18.203055" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:18.202434" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:18.205056" 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-19T00:10:18.205408" 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-19T00:10:18.204697" elapsed="0.000825"/>
</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-19T00:10:18.211428" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:18.210729" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:18.210648" elapsed="0.000984"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:18.214182" 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-19T00:10:18.214504" 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-19T00:10:18.213130" elapsed="0.001475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:18.216165" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:18.215603" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:18.218004" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:18.217273" elapsed="0.000927"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:18.220456" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:18.220534" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:18.220166" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:18.220770" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:18.222219" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:18.552575" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:18.221762" elapsed="0.330970"/>
</kw>
<msg time="2026-04-19T00:10:18.552821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:18.221365" elapsed="0.331549"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:18.219395" elapsed="0.333805"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:18.554660" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:18.577270" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:18.577735" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:18.577958" 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-19T00:10:18.554268" elapsed="0.023870"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:18.579748" elapsed="0.000669"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:18.582002" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:18.581318" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:18.582859" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:18.582491" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:18.582369" 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-19T00:10:18.583722" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T00:10:18.583427" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:18.583356" elapsed="0.000607"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:18.584179" elapsed="0.000057"/>
</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-19T00:10:18.591456" 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-19T00:10:18.592099" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:18.592470" 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-19T00:10:18.586175" elapsed="0.006507"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:18.208619" elapsed="0.384290"/>
</kw>
<msg time="2026-04-19T00:10:18.593250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:18.207631" elapsed="0.385686"/>
</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-19T00:10:18.206821" elapsed="0.386582"/>
</kw>
<msg time="2026-04-19T00:10:18.593446" 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-19T00:10:18.205879" elapsed="0.387615"/>
</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-19T00:10:18.596560" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:10:18.597067" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:18.597366" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:18.593786" elapsed="0.003734"/>
</kw>
<msg time="2026-04-19T00:10:18.597613" level="INFO">${output} = 1</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-19T00:10:18.203694" elapsed="0.393945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:18.598085" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:18.597820" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:18.598172" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:10:18.598352" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:18.201425" elapsed="0.396954"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:18.598427" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:18.598574" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:18.199325" elapsed="0.399274"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:18.599200" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:18.598759" elapsed="0.000523">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:18.198246" elapsed="0.401153">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:20.601757" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:20.601270" elapsed="0.000532"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:20.603127" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:20.602720" elapsed="0.000446"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:20.604289" 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-19T00:10:20.604431" 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-19T00:10:20.604069" elapsed="0.000400"/>
</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-19T00:10:20.609112" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:20.608619" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:20.608326" elapsed="0.000985"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:20.610762" 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-19T00:10:20.611004" 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-19T00:10:20.610319" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:20.612628" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:20.612086" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:20.614668" 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-19T00:10:20.613783" elapsed="0.000981"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:20.617167" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:20.617249" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:20.616730" 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-19T00:10:20.617484" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:20.618762" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:20.942508" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:20.618435" elapsed="0.324241"/>
</kw>
<msg time="2026-04-19T00:10:20.942761" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:20.618070" elapsed="0.324778"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:20.615944" elapsed="0.327183"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:20.944618" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:20.968001" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:20.968347" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:20.968559" 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-19T00:10:20.944224" elapsed="0.024468"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:20.970076" elapsed="0.000592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:20.972120" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:20.971463" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:20.972820" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:20.972494" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:20.972414" 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-19T00:10:20.973647" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:10:20.973361" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:20.973294" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:20.973973" elapsed="0.000099"/>
</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-19T00:10:20.980399" 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-19T00:10:20.980958" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:20.981340" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:20.975900" elapsed="0.005647"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:20.606979" elapsed="0.374795"/>
</kw>
<msg time="2026-04-19T00:10:20.982150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:20.606243" elapsed="0.375965"/>
</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-19T00:10:20.605438" elapsed="0.376853"/>
</kw>
<msg time="2026-04-19T00:10:20.982331" 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-19T00:10:20.604689" elapsed="0.377688"/>
</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-19T00:10:20.985489" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:10:20.985973" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:20.986358" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:20.982789" elapsed="0.003722"/>
</kw>
<msg time="2026-04-19T00:10:20.986630" level="INFO">${output} = 1</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-19T00:10:20.603473" elapsed="0.383184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:20.987115" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:20.986833" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:20.987204" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:20.987355" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:20.602138" elapsed="0.385242"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:20.987426" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:20.987569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:20.600715" elapsed="0.386878"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:20.988169" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:20.987749" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:20.599990" elapsed="0.388363">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:22.991965" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:22.991208" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:22.994198" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:22.993499" elapsed="0.000761"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:22.995520" 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-19T00:10:22.995671" 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-19T00:10:22.995296" elapsed="0.000413"/>
</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-19T00:10:23.001392" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:23.000719" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:23.000336" elapsed="0.001291"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:23.003526" 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-19T00:10:23.003771" 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-19T00:10:23.003011" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:23.005499" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:23.004873" elapsed="0.000753"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:23.007404" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:23.006677" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:23.009965" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:23.010059" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:23.009680" 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-19T00:10:23.010299" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:23.011571" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:23.333840" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:23.011243" elapsed="0.322726"/>
</kw>
<msg time="2026-04-19T00:10:23.334084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:23.010862" elapsed="0.323309"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:23.008745" elapsed="0.325691"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:23.335915" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:23.358950" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:23.359493" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:23.359829" 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-19T00:10:23.335533" elapsed="0.024541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:23.362405" elapsed="0.000686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:23.364543" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:23.363916" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:23.365299" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:23.364922" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:23.364842" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:23.366087" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T00:10:23.365737" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:23.365637" elapsed="0.000697"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:23.366446" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:23.372466" 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-19T00:10:23.373140" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:23.373553" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:23.368308" elapsed="0.005461"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:22.998443" elapsed="0.375552"/>
</kw>
<msg time="2026-04-19T00:10:23.374336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:22.997450" elapsed="0.376946"/>
</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-19T00:10:22.996678" elapsed="0.377803"/>
</kw>
<msg time="2026-04-19T00:10:23.374522" 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-19T00:10:22.995933" elapsed="0.378635"/>
</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-19T00:10:23.377693" 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-19T00:10:23.378254" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:23.378559" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:23.374933" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T00:10:23.378799" level="INFO">${output} = 1</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-19T00:10:22.994693" elapsed="0.384131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:23.379273" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:23.379002" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:23.379368" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:10:23.379529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:22.992537" elapsed="0.387034"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:23.379633" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:10:23.379788" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:22.990330" elapsed="0.389483"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:23.380394" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:23.379971" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:22.989186" elapsed="0.391397">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:25.384061" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:25.383297" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:25.386192" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:25.385550" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:25.388025" 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-19T00:10:25.388283" 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-19T00:10:25.387699" elapsed="0.000643"/>
</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-19T00:10:25.396389" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:25.395711" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:25.393414" elapsed="0.003206"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:25.398368" 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-19T00:10:25.398611" 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-19T00:10:25.397912" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:25.400234" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:25.399676" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:25.402081" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:25.401376" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:25.404421" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:25.404499" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:25.404141" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:25.404757" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:25.406168" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:25.733758" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:25.405828" elapsed="0.328060"/>
</kw>
<msg time="2026-04-19T00:10:25.733969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:25.405469" elapsed="0.328600"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:25.403368" elapsed="0.330967"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:25.735788" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:25.758654" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:25.759192" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:25.759525" 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-19T00:10:25.735403" elapsed="0.024332"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:25.762206" elapsed="0.000989"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:25.765645" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:25.764615" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:25.766848" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:25.766255" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:25.766130" elapsed="0.001044"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:25.768021" elapsed="0.000271"/>
</return>
<status status="PASS" start="2026-04-19T00:10:25.767576" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:25.767467" elapsed="0.001057"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:25.768695" elapsed="0.000081"/>
</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-19T00:10:25.774061" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:10:25.774607" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:25.774959" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:25.770648" elapsed="0.004532"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:25.391552" elapsed="0.383849"/>
</kw>
<msg time="2026-04-19T00:10:25.775708" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:25.390600" elapsed="0.385163"/>
</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-19T00:10:25.389838" elapsed="0.386006"/>
</kw>
<msg time="2026-04-19T00:10:25.775884" 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-19T00:10:25.388746" elapsed="0.387183"/>
</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-19T00:10:25.778969" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:10:25.779459" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:25.779751" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:25.776283" elapsed="0.003618"/>
</kw>
<msg time="2026-04-19T00:10:25.780148" level="INFO">${output} = 1</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-19T00:10:25.386750" elapsed="0.393426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:25.780599" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:25.780352" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:25.780684" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:25.780834" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:25.384610" elapsed="0.396249"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:25.780904" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:25.781089" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:25.382460" elapsed="0.398657"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:25.781673" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:25.781285" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:25.381420" elapsed="0.400432">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:27.785526" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:27.784710" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:27.787838" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:27.787187" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:27.789019" 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-19T00:10:27.789185" 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-19T00:10:27.788800" elapsed="0.000423"/>
</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-19T00:10:27.794632" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:27.793948" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:27.793870" elapsed="0.000966"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:27.796811" 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-19T00:10:27.797081" 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-19T00:10:27.796155" elapsed="0.001025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:27.798692" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:27.798148" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:27.800494" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:27.799788" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:27.802900" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:27.802977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:27.802620" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:27.803254" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:27.804518" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:28.121401" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:27.804193" elapsed="0.317438"/>
</kw>
<msg time="2026-04-19T00:10:28.121718" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:27.803813" elapsed="0.317989"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:27.801848" elapsed="0.320243"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:28.123564" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:28.146790" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:28.147020" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:28.147191" 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-19T00:10:28.123177" elapsed="0.024108"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:28.148270" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:28.149722" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:28.149283" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:28.150250" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:28.149990" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:28.149932" elapsed="0.000453"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:28.150735" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T00:10:28.150531" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:28.150482" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:28.150980" 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-19T00:10:28.155620" 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-19T00:10:28.156280" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:28.156635" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:28.152313" elapsed="0.004530"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:27.791919" elapsed="0.365162"/>
</kw>
<msg time="2026-04-19T00:10:28.157407" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:27.790943" elapsed="0.366523"/>
</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-19T00:10:27.790179" elapsed="0.367370"/>
</kw>
<msg time="2026-04-19T00:10:28.157590" 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-19T00:10:27.789445" elapsed="0.368191"/>
</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-19T00:10:28.160630" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:10:28.161239" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:28.161560" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:28.157927" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T00:10:28.161799" level="INFO">${output} = 1</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-19T00:10:27.788218" elapsed="0.373606"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:28.162267" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:28.162002" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:28.162354" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:28.162503" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:27.786115" elapsed="0.376413"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:28.162655" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:10:28.162810" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:27.783811" elapsed="0.379023"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:28.163454" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:28.163053" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:27.782708" elapsed="0.380930">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:30.167512" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:30.166546" elapsed="0.001041"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:30.169824" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:30.169193" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:30.171874" 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-19T00:10:30.172023" 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-19T00:10:30.171534" elapsed="0.000575"/>
</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-19T00:10:30.177762" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:30.177061" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:30.176958" elapsed="0.001022"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:30.180290" 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-19T00:10:30.180542" 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-19T00:10:30.179440" elapsed="0.001203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:30.182287" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:30.181674" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:30.184175" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:30.183424" elapsed="0.000854"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:30.186687" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:30.186766" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:30.186397" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:30.187070" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:30.188450" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:30.503956" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:30.188089" elapsed="0.316026"/>
</kw>
<msg time="2026-04-19T00:10:30.504197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:30.187685" elapsed="0.316594"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:30.185607" elapsed="0.318970"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:30.506102" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:30.528977" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:30.529518" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:30.529881" 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-19T00:10:30.505689" elapsed="0.024455"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:30.532426" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:30.535614" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:30.534595" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:30.536757" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:30.536257" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:30.536132" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:30.537896" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:10:30.537437" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:30.537329" elapsed="0.000962"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:30.538470" elapsed="0.000087"/>
</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-19T00:10:30.544101" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T00:10:30.544666" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:30.545017" 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-19T00:10:30.540689" elapsed="0.004568"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:30.174926" elapsed="0.370551"/>
</kw>
<msg time="2026-04-19T00:10:30.545797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:30.173857" elapsed="0.371998"/>
</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-19T00:10:30.173107" elapsed="0.372829"/>
</kw>
<msg time="2026-04-19T00:10:30.545977" 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-19T00:10:30.172347" elapsed="0.373675"/>
</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-19T00:10:30.549124" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:10:30.549599" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:30.549890" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:30.546329" elapsed="0.003725"/>
</kw>
<msg time="2026-04-19T00:10:30.550194" level="INFO">${output} = 1</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-19T00:10:30.170459" elapsed="0.379762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:30.550644" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:30.550399" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:30.550731" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:30.550883" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:30.168130" elapsed="0.382782"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:30.550959" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:30.551196" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:30.165584" elapsed="0.385637"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:30.551764" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:30.551377" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:30.164513" elapsed="0.387462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:32.555702" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:32.554816" elapsed="0.000957"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:32.558097" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:32.557433" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:32.559925" 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-19T00:10:32.560188" 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-19T00:10:32.559598" elapsed="0.000651"/>
</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-19T00:10:32.565631" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:32.565163" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:32.565106" elapsed="0.000662"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:32.567464" 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-19T00:10:32.567711" 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-19T00:10:32.566789" elapsed="0.001024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:32.569394" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:32.568812" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:32.571252" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:32.570531" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:32.573739" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:32.573817" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:32.573457" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:32.574094" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:32.575357" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:32.894714" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:32.575012" elapsed="0.319836"/>
</kw>
<msg time="2026-04-19T00:10:32.894927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:32.574651" elapsed="0.320357"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:32.572592" elapsed="0.322708"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:32.896759" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:32.919499" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:32.919743" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:32.919895" 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-19T00:10:32.896375" elapsed="0.023618"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:32.921062" elapsed="0.000440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:32.922560" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:32.922108" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:32.923152" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:32.922828" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:32.922769" 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-19T00:10:32.923641" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T00:10:32.923434" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:32.923384" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:32.923888" 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-19T00:10:32.928613" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:10:32.929195" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:32.929591" 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-19T00:10:32.925261" elapsed="0.004538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:32.563730" elapsed="0.366293"/>
</kw>
<msg time="2026-04-19T00:10:32.930492" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:32.563052" elapsed="0.367498"/>
</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-19T00:10:32.561777" elapsed="0.368853"/>
</kw>
<msg time="2026-04-19T00:10:32.930671" 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-19T00:10:32.560600" elapsed="0.370117"/>
</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-19T00:10:32.933697" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:10:32.934239" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:32.934531" 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-19T00:10:32.931008" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T00:10:32.934765" level="INFO">${output} = 1</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-19T00:10:32.558646" elapsed="0.376144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:32.935227" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:32.934962" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:32.935313" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:10:32.935462" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:32.556473" elapsed="0.379014"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:32.935533" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:32.935676" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:32.553945" elapsed="0.381755"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:32.936258" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:32.935854" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:32.552847" elapsed="0.383593">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:34.939830" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:34.939114" elapsed="0.000784"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:34.941958" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:34.941306" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:34.943228" 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-19T00:10:34.943487" 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-19T00:10:34.942980" elapsed="0.000548"/>
</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-19T00:10:34.949829" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:34.949065" elapsed="0.000986"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:34.948633" elapsed="0.001510"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:34.951606" 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-19T00:10:34.951857" 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-19T00:10:34.951152" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:34.953535" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:34.952952" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:34.955676" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:34.954870" elapsed="0.000909"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:34.958564" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:34.958644" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:34.957946" elapsed="0.000724"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:34.958889" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:34.960222" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:35.278700" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:34.959872" elapsed="0.318973"/>
</kw>
<msg time="2026-04-19T00:10:35.278928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:34.959505" elapsed="0.319507"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:34.957061" elapsed="0.322247"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:35.280808" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:35.303803" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:35.304150" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:35.304387" 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-19T00:10:35.280424" elapsed="0.024096"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:35.305877" elapsed="0.000568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:35.307829" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:35.307237" 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-19T00:10:35.308570" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:35.308216" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:35.308137" 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-19T00:10:35.309267" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:10:35.308954" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:35.308887" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:35.309596" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:35.316062" elapsed="0.000488"/>
</kw>
<kw name="Open 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-19T00:10:35.316985" elapsed="0.000313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:35.317494" 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-19T00:10:35.311411" elapsed="0.006291"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:34.946546" elapsed="0.371379"/>
</kw>
<msg time="2026-04-19T00:10:35.318259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:34.945470" elapsed="0.372845"/>
</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-19T00:10:34.944593" elapsed="0.373805"/>
</kw>
<msg time="2026-04-19T00:10:35.318440" 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-19T00:10:34.943764" elapsed="0.374722"/>
</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-19T00:10:35.321529" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:10:35.322003" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:35.322318" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:35.318777" elapsed="0.003690"/>
</kw>
<msg time="2026-04-19T00:10:35.322556" level="INFO">${output} = 1</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-19T00:10:34.942373" elapsed="0.380209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:35.323008" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:35.322757" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:35.323115" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:35.323268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:34.940375" elapsed="0.382919"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:35.323341" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:35.323487" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:34.938287" elapsed="0.385225"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:35.324072" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:35.323666" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:34.937230" elapsed="0.387026">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:37.327788" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:37.327022" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:37.329662" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:37.329258" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:37.330878" 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-19T00:10:37.331030" 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-19T00:10:37.330645" elapsed="0.000443"/>
</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-19T00:10:37.336972" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:37.336251" elapsed="0.001165"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:37.335825" elapsed="0.001654"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:37.339057" 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-19T00:10:37.339326" 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-19T00:10:37.338512" elapsed="0.000932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:37.341117" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:37.340490" elapsed="0.000737"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:37.343191" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:37.342198" elapsed="0.001089"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:37.345759" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:37.345838" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:37.345456" 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-19T00:10:37.346159" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:37.347554" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:37.668238" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:37.347220" elapsed="0.321181"/>
</kw>
<msg time="2026-04-19T00:10:37.668488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:37.346742" elapsed="0.321835"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:37.344618" elapsed="0.324245"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:37.670413" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:37.693531" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:37.694189" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:37.694552" 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-19T00:10:37.669967" elapsed="0.024799"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:37.697115" elapsed="0.000991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:37.700389" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:37.699402" elapsed="0.001221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:37.701489" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:37.700963" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:37.700843" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:37.702888" elapsed="0.000416"/>
</return>
<status status="PASS" start="2026-04-19T00:10:37.702375" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:37.701988" elapsed="0.001433"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:37.703503" 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-19T00:10:37.708364" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T00:10:37.708972" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:37.709372" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:37.704866" elapsed="0.004724"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:37.333887" elapsed="0.375929"/>
</kw>
<msg time="2026-04-19T00:10:37.710227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:37.332894" elapsed="0.377405"/>
</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-19T00:10:37.332090" elapsed="0.378292"/>
</kw>
<msg time="2026-04-19T00:10:37.710423" 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-19T00:10:37.331320" elapsed="0.379148"/>
</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-19T00:10:37.713895" elapsed="0.000416"/>
</kw>
<kw name="Open 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-19T00:10:37.714488" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:37.714844" 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-19T00:10:37.710828" elapsed="0.004170"/>
</kw>
<msg time="2026-04-19T00:10:37.715117" level="INFO">${output} = 1</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-19T00:10:37.330019" elapsed="0.385125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:37.715620" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:37.715364" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:37.715711" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T00:10:37.715878" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:37.328335" elapsed="0.387569"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:37.715950" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:37.716112" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:37.326224" elapsed="0.389913"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:37.716698" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:37.716299" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:37.325144" elapsed="0.391737">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:39.720605" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:39.719837" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:39.722907" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:39.722306" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:39.724815" 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-19T00:10:39.725101" 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-19T00:10:39.724446" elapsed="0.000717"/>
</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-19T00:10:39.732656" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:39.732153" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:39.730258" elapsed="0.002543"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:39.734257" 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-19T00:10:39.734505" 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-19T00:10:39.733784" elapsed="0.000824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:39.736235" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:39.735584" elapsed="0.000762"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:39.738166" 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-19T00:10:39.737374" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:39.740602" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:39.740680" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:39.740311" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:39.740916" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:39.742383" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:40.039190" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:39.741863" elapsed="0.297458"/>
</kw>
<msg time="2026-04-19T00:10:40.039402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:39.741503" elapsed="0.297981"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:39.739472" elapsed="0.300274"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:40.041276" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:40.063973" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:40.064503" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:40.064836" 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-19T00:10:40.040833" elapsed="0.024311"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:40.067343" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:40.070448" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:40.069480" elapsed="0.001193"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:40.071556" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:40.071020" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:40.070899" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:40.072643" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T00:10:40.072201" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:40.072089" elapsed="0.000899"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:40.073427" elapsed="0.000085"/>
</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-19T00:10:40.078565" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:10:40.079119" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:40.079471" 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-19T00:10:40.075210" elapsed="0.004468"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:39.728865" elapsed="0.351033"/>
</kw>
<msg time="2026-04-19T00:10:40.080221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:39.728053" elapsed="0.352224"/>
</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-19T00:10:39.726705" elapsed="0.353653"/>
</kw>
<msg time="2026-04-19T00:10:40.080399" 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-19T00:10:39.725533" elapsed="0.354911"/>
</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-19T00:10:40.083534" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:10:40.084008" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:40.084326" 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-19T00:10:40.080790" elapsed="0.003683"/>
</kw>
<msg time="2026-04-19T00:10:40.084562" level="INFO">${output} = 1</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-19T00:10:39.723479" elapsed="0.361108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:40.085008" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:40.084762" elapsed="0.000393"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:40.085212" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:10:40.085367" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:39.721303" elapsed="0.364089"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:40.085439" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:40.085583" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:39.718914" elapsed="0.366694"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:40.086172" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:40.085765" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:39.717769" elapsed="0.368583">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:42.089976" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:42.089195" elapsed="0.000886"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:42.092286" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:42.091587" elapsed="0.000764"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:42.094254" 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-19T00:10:42.094495" 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-19T00:10:42.093881" elapsed="0.000679"/>
</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-19T00:10:42.099612" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:42.099133" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:42.099075" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:42.101568" 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-19T00:10:42.101823" 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-19T00:10:42.100846" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:42.103530" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:42.102936" elapsed="0.000707"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:42.105418" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:42.104683" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:42.107932" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:42.108011" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:42.107644" 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-19T00:10:42.108284" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:42.109647" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:42.421125" 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 Sun Apr 19 00:09:42 UTC 2026

  System load:  0.18               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:42.109316" elapsed="0.311961"/>
</kw>
<msg time="2026-04-19T00:10:42.421360" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:42.108923" elapsed="0.312525"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:42.106757" elapsed="0.314972"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:42.423208" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:42.445820" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:42.446362" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:42.446689" 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-19T00:10:42.422804" elapsed="0.024092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:42.449126" elapsed="0.000876"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:42.452232" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:42.451266" elapsed="0.001190"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:42.453377" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:42.452800" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:42.452678" elapsed="0.000984"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:42.454425" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T00:10:42.453980" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:42.453877" elapsed="0.000784"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:42.454776" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:42.461949" elapsed="0.000499"/>
</kw>
<kw name="Open 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-19T00:10:42.462665" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:42.463154" 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-19T00:10:42.456834" elapsed="0.006537"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:42.097699" elapsed="0.365895"/>
</kw>
<msg time="2026-04-19T00:10:42.463907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:42.096919" elapsed="0.367051"/>
</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-19T00:10:42.096351" elapsed="0.367718"/>
</kw>
<msg time="2026-04-19T00:10:42.464112" 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-19T00:10:42.094934" elapsed="0.369224"/>
</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-19T00:10:42.467264" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:10:42.467747" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:42.468059" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:42.464455" elapsed="0.003754"/>
</kw>
<msg time="2026-04-19T00:10:42.468370" level="INFO">${output} = 1</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-19T00:10:42.092868" elapsed="0.375528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:42.468853" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:42.468599" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:42.468941" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:10:42.469116" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:42.090574" elapsed="0.378568"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:42.469189" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:42.469364" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:42.088298" elapsed="0.381091"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:42.469941" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:42.469547" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:42.087218" elapsed="0.382925">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:44.473881" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:44.473147" elapsed="0.000804"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:44.476140" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:44.475475" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:44.477463" 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-19T00:10:44.477604" 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-19T00:10:44.477243" elapsed="0.000399"/>
</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-19T00:10:44.483199" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:44.482480" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:44.482402" elapsed="0.000994"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:44.485122" 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-19T00:10:44.485375" 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-19T00:10:44.484418" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:44.487089" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:44.486468" elapsed="0.000732"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:44.489192" 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-19T00:10:44.488312" elapsed="0.000983"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:44.491644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:44.491721" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:44.491364" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:44.491957" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:44.493230" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:45.087289" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:44.492889" elapsed="0.594645"/>
</kw>
<msg time="2026-04-19T00:10:45.087617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:44.492531" elapsed="0.595173"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:44.490563" elapsed="0.597414"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:45.089561" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:45.112333" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:45.112993" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:45.113514" 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-19T00:10:45.089120" elapsed="0.024690"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:45.116545" elapsed="0.000643"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:45.118705" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:45.118058" 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-19T00:10:45.119465" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:45.119120" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:45.119014" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:45.120240" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T00:10:45.119876" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:45.119804" elapsed="0.000683"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:45.120605" elapsed="0.000057"/>
</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-19T00:10:45.126657" 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-19T00:10:45.127221" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:45.127584" 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-19T00:10:45.122645" elapsed="0.005147"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:44.480521" elapsed="0.647496"/>
</kw>
<msg time="2026-04-19T00:10:45.128371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:44.479546" elapsed="0.648888"/>
</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-19T00:10:44.478725" elapsed="0.649793"/>
</kw>
<msg time="2026-04-19T00:10:45.128559" 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-19T00:10:44.477865" elapsed="0.650740"/>
</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-19T00:10:45.131692" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:10:45.132231" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:45.132536" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:45.128898" elapsed="0.003789"/>
</kw>
<msg time="2026-04-19T00:10:45.132779" level="INFO">${output} = 1</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-19T00:10:44.476599" elapsed="0.656207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:45.133254" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:45.132986" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:45.133344" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:10:45.133497" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:44.474441" elapsed="0.659082"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:45.133569" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:45.133715" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:44.472294" elapsed="0.661447"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:45.134408" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:45.133954" elapsed="0.000529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:44.470967" elapsed="0.663627">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:47.138373" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:47.137548" elapsed="0.000900"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:47.140656" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:47.139979" elapsed="0.000715"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:47.141830" 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-19T00:10:47.141973" 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-19T00:10:47.141602" elapsed="0.000408"/>
</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-19T00:10:47.147322" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:47.146669" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:47.146591" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:47.149507" 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-19T00:10:47.149756" 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-19T00:10:47.148814" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:47.151391" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:47.150830" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:47.153196" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:47.152479" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:47.155603" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:47.155682" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:47.155312" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:47.155918" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:47.157231" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:47.482326" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:47.156887" elapsed="0.325592"/>
</kw>
<msg time="2026-04-19T00:10:47.482564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:47.156524" elapsed="0.326132"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:47.154546" elapsed="0.328395"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:47.484423" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:47.507213" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:47.507780" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:47.508154" 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-19T00:10:47.484012" elapsed="0.024352"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:47.510682" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:47.513833" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:47.512870" elapsed="0.001115"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:47.514589" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:47.514245" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:47.514160" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:47.515312" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T00:10:47.514994" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:47.514925" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:47.515670" elapsed="0.000056"/>
</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-19T00:10:47.522469" 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-19T00:10:47.523059" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:47.523429" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:47.517822" elapsed="0.005822"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:47.144737" elapsed="0.379135"/>
</kw>
<msg time="2026-04-19T00:10:47.524203" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:47.143762" elapsed="0.380506"/>
</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-19T00:10:47.142980" elapsed="0.381371"/>
</kw>
<msg time="2026-04-19T00:10:47.524392" 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-19T00:10:47.142255" elapsed="0.382183"/>
</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-19T00:10:47.527561" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:47.528062" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:47.528359" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:47.524736" elapsed="0.003770"/>
</kw>
<msg time="2026-04-19T00:10:47.528597" level="INFO">${output} = 1</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-19T00:10:47.140999" elapsed="0.387623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:47.529156" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:47.528828" elapsed="0.000372"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:47.529246" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:10:47.529403" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:47.138945" elapsed="0.390483"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:47.529474" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:47.529619" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:47.136607" elapsed="0.393036"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:47.530209" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:47.529799" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:47.135431" elapsed="0.394963">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:49.534189" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:49.533363" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:49.536749" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:49.535991" elapsed="0.000798"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:49.537972" 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-19T00:10:49.538142" 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-19T00:10:49.537733" elapsed="0.000447"/>
</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-19T00:10:49.543827" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:49.543189" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:49.542794" elapsed="0.001226"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:49.545668" 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-19T00:10:49.545915" 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-19T00:10:49.545229" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:49.547539" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:49.546986" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:49.549367" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:49.548630" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:49.551756" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:49.551833" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:49.551476" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:49.552097" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:49.553380" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:49.867093" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:49.553053" elapsed="0.314199"/>
</kw>
<msg time="2026-04-19T00:10:49.867341" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:49.552679" elapsed="0.314753"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:49.550684" elapsed="0.317029"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:49.869298" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:49.892359" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:49.892890" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:49.893282" 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-19T00:10:49.868857" elapsed="0.024636"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:49.895727" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:49.898652" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:49.897905" elapsed="0.000889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:49.899498" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:49.899015" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:49.898937" elapsed="0.000746"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:49.900182" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:10:49.899882" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:49.899816" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:49.900515" elapsed="0.000051"/>
</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-19T00:10:49.906658" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:10:49.907328" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:49.907684" 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-19T00:10:49.902377" elapsed="0.005510"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:49.540906" elapsed="0.367219"/>
</kw>
<msg time="2026-04-19T00:10:49.908428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:49.539888" elapsed="0.368597"/>
</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-19T00:10:49.539145" elapsed="0.369420"/>
</kw>
<msg time="2026-04-19T00:10:49.908606" 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-19T00:10:49.538403" elapsed="0.370248"/>
</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-19T00:10:49.911609" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:10:49.912098" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:49.912391" 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-19T00:10:49.908956" elapsed="0.003581"/>
</kw>
<msg time="2026-04-19T00:10:49.912629" level="INFO">${output} = 1</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-19T00:10:49.537127" elapsed="0.375526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:49.913124" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:49.912858" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:49.913211" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:49.913362" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:49.534880" elapsed="0.378506"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:49.913433" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:49.913576" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:49.532496" elapsed="0.381104"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:49.914262" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:49.913753" elapsed="0.000582">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:49.531247" elapsed="0.383197">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:51.917817" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:51.917108" elapsed="0.000777"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:51.919881" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:51.919278" elapsed="0.000640"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:51.921081" 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-19T00:10:51.921344" 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-19T00:10:51.920802" elapsed="0.000580"/>
</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-19T00:10:51.927020" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:51.926307" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:51.925926" elapsed="0.001314"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:51.928848" 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-19T00:10:51.929119" 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-19T00:10:51.928405" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:51.930788" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:51.930244" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:51.932609" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:51.931893" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:51.935156" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:51.935233" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:51.934860" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:51.935487" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:51.936731" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:52.272879" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:51.936412" elapsed="0.336647"/>
</kw>
<msg time="2026-04-19T00:10:52.273149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:51.936054" elapsed="0.337187"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:51.933969" elapsed="0.339559"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:52.275014" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:52.297631" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:52.298222" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:52.298558" 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-19T00:10:52.274617" elapsed="0.024151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:52.301119" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:52.304286" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:52.303294" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:52.305520" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:52.304852" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:52.304730" elapsed="0.001076"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:52.306584" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:10:52.306150" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:52.306014" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:52.307319" elapsed="0.000081"/>
</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-19T00:10:52.312923" elapsed="0.000381"/>
</kw>
<kw name="Open 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-19T00:10:52.313586" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:52.313954" 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-19T00:10:52.309473" elapsed="0.004713"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:51.924077" elapsed="0.390335"/>
</kw>
<msg time="2026-04-19T00:10:52.314722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:51.923113" elapsed="0.391674"/>
</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-19T00:10:51.922350" elapsed="0.392520"/>
</kw>
<msg time="2026-04-19T00:10:52.314912" 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-19T00:10:51.921607" elapsed="0.393352"/>
</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-19T00:10:52.318207" 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-19T00:10:52.318699" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:52.318994" elapsed="0.000223"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:52.315338" elapsed="0.003933"/>
</kw>
<msg time="2026-04-19T00:10:52.319364" level="INFO">${output} = 1</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-19T00:10:51.920236" elapsed="0.399153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:52.319845" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:52.319594" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:52.319947" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:10:52.320119" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:51.918355" elapsed="0.401789"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:52.320190" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:52.320333" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:51.916291" elapsed="0.404066"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:52.320932" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:52.320511" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:51.915256" elapsed="0.405874">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:54.324551" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:54.323801" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:54.326656" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:54.325977" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:54.327931" 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-19T00:10:54.328099" 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-19T00:10:54.327704" elapsed="0.000435"/>
</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-19T00:10:54.335829" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:54.335316" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:54.332930" elapsed="0.003139"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:54.337546" 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-19T00:10:54.337797" 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-19T00:10:54.337070" elapsed="0.000826"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:54.339498" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:54.338914" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:54.341408" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:54.340685" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:54.344009" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:54.344104" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:54.343678" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:54.344346" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:54.345621" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:54.650509" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:54.345295" elapsed="0.305383"/>
</kw>
<msg time="2026-04-19T00:10:54.650765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:54.344916" elapsed="0.305943"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:54.342742" elapsed="0.308440"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:54.652708" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:54.675478" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:54.675995" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:54.676386" 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-19T00:10:54.652301" elapsed="0.024297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:54.678891" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:54.682138" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:54.681101" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:54.683263" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:54.682743" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:54.682619" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:54.684338" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:10:54.683866" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:54.683759" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:54.684860" elapsed="0.000080"/>
</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-19T00:10:54.690869" 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-19T00:10:54.691445" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:54.691806" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:54.687445" elapsed="0.004569"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:54.330959" elapsed="0.361299"/>
</kw>
<msg time="2026-04-19T00:10:54.692632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:54.329925" elapsed="0.362772"/>
</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-19T00:10:54.329143" elapsed="0.363635"/>
</kw>
<msg time="2026-04-19T00:10:54.692819" 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-19T00:10:54.328371" elapsed="0.364494"/>
</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-19T00:10:54.695949" 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-19T00:10:54.696440" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:54.696732" 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-19T00:10:54.693188" elapsed="0.003691"/>
</kw>
<msg time="2026-04-19T00:10:54.696972" level="INFO">${output} = 1</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-19T00:10:54.327105" elapsed="0.369893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:54.697475" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:54.697224" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:54.697563" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:10:54.697717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:54.325084" elapsed="0.372658"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:54.697788" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:10:54.697929" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:54.322984" elapsed="0.374970"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:54.698600" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:54.698190" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:54.321893" elapsed="0.376892">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:56.702430" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:56.701646" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:56.704618" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:56.703936" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:56.706513" 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-19T00:10:56.706747" 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-19T00:10:56.706177" elapsed="0.000630"/>
</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-19T00:10:56.711990" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:56.711522" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:56.711465" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:56.713906" 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-19T00:10:56.714174" 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-19T00:10:56.713202" elapsed="0.001072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:56.715804" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:56.715260" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:56.717731" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:10:56.717018" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:56.720294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:56.720384" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:56.719824" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:56.720622" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:56.721898" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:57.083556" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:56.721568" elapsed="0.362142"/>
</kw>
<msg time="2026-04-19T00:10:57.083795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:56.721203" elapsed="0.362681"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:56.719054" elapsed="0.365137"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:57.085781" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:57.108824" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:57.109373" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:57.109708" 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-19T00:10:57.085373" elapsed="0.024545"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:57.112178" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:57.114596" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:57.113930" elapsed="0.000820"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:57.115392" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:57.114990" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:57.114904" elapsed="0.000689"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:57.116129" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T00:10:57.115804" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:57.115734" elapsed="0.000635"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:57.116484" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:57.122948" 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-19T00:10:57.123530" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:57.123889" elapsed="0.000271"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:57.118580" elapsed="0.005695"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:56.710111" elapsed="0.414392"/>
</kw>
<msg time="2026-04-19T00:10:57.124830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:56.709380" elapsed="0.415512"/>
</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-19T00:10:56.708439" elapsed="0.416538"/>
</kw>
<msg time="2026-04-19T00:10:57.125020" 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-19T00:10:56.707195" elapsed="0.417893"/>
</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-19T00:10:57.128338" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:10:57.128849" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:57.129169" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:57.125450" elapsed="0.003871"/>
</kw>
<msg time="2026-04-19T00:10:57.129413" level="INFO">${output} = 1</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-19T00:10:56.705204" elapsed="0.424235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:57.129883" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:57.129632" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:57.129971" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:10:57.130140" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:56.702966" elapsed="0.427199"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:57.130213" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:57.130357" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:56.700783" elapsed="0.429598"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:57.130933" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:57.130537" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:56.699642" elapsed="0.431496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:10:59.134563" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:10:59.133756" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:10:59.136108" level="INFO">${member_ip} = 10.30.171.206</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-19T00:10:59.135685" elapsed="0.000464"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:59.137332" 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-19T00:10:59.137479" 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-19T00:10:59.137096" elapsed="0.000422"/>
</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-19T00:10:59.142926" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:10:59.142292" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:59.142180" elapsed="0.000937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:59.144790" 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-19T00:10:59.145056" 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-19T00:10:59.144105" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:59.146705" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:59.146149" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:10:59.148566" 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-19T00:10:59.147811" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:10:59.151019" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:10:59.151118" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:10:59.150738" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:59.151353" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:10:59.152680" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:10:59.455968" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:10:59.152354" elapsed="0.303802"/>
</kw>
<msg time="2026-04-19T00:10:59.456247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:59.151975" elapsed="0.304397"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:10:59.149924" elapsed="0.306739"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:10:59.458201" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:10:59.481081" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:10:59.481316" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:10:59.481467" 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-19T00:10:59.457777" elapsed="0.023786"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:59.482588" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:59.484085" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:59.483615" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:59.484608" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:10:59.484359" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:59.484298" elapsed="0.000446"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:10:59.485116" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T00:10:59.484890" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T00:10:59.484839" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:10:59.485355" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:59.490171" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T00:10:59.490748" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:59.491126" 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-19T00:10:59.486709" elapsed="0.004623"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:10:59.140329" elapsed="0.351227"/>
</kw>
<msg time="2026-04-19T00:10:59.491865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:10:59.139356" elapsed="0.352566"/>
</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-19T00:10:59.138549" elapsed="0.353455"/>
</kw>
<msg time="2026-04-19T00:10:59.492062" 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-19T00:10:59.137753" elapsed="0.354357"/>
</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-19T00:10:59.495232" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:10:59.495717" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:10:59.496014" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:10:59.492399" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T00:10:59.496343" level="INFO">${output} = 1</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-19T00:10:59.136470" elapsed="0.359900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:10:59.496793" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:10:59.496546" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:10:59.496879" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:10:59.497045" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:10:59.135083" elapsed="0.361989"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:10:59.497120" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:10:59.497265" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:10:59.132933" elapsed="0.364357"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:10:59.497838" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:10:59.497446" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:10:59.131892" elapsed="0.366131">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:01.500587" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:01.499995" elapsed="0.000656"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:01.502112" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:01.501701" elapsed="0.000450"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:01.503284" 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-19T00:11:01.503426" 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-19T00:11:01.503053" elapsed="0.000424"/>
</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-19T00:11:01.508783" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:01.508156" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:01.508080" elapsed="0.000891"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:01.512067" 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-19T00:11:01.512374" 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-19T00:11:01.510506" elapsed="0.001970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:01.514272" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:01.513669" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:01.516146" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:01.515378" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:01.518780" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:01.518859" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:01.518345" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:01.519236" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:01.520541" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:01.845094" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:10:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:01.520211" elapsed="0.325221"/>
</kw>
<msg time="2026-04-19T00:11:01.845546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:01.519832" elapsed="0.325847"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:01.517565" elapsed="0.328628"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:01.848303" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:01.871458" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:01.872084" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:01.872425" 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-19T00:11:01.847691" elapsed="0.024944"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:01.874842" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:01.878251" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:01.877187" elapsed="0.001294"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:01.879387" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:01.878842" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:01.878718" elapsed="0.001017"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:01.880399" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T00:11:01.880129" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:01.879968" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:01.880639" 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-19T00:11:01.885760" 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-19T00:11:01.886328" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:01.886683" 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-19T00:11:01.882000" elapsed="0.004889"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:01.506197" elapsed="0.380928"/>
</kw>
<msg time="2026-04-19T00:11:01.887425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:01.505213" elapsed="0.382270"/>
</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-19T00:11:01.504443" elapsed="0.383123"/>
</kw>
<msg time="2026-04-19T00:11:01.887606" 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-19T00:11:01.503703" elapsed="0.383960"/>
</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-19T00:11:01.890676" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:11:01.891168" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:01.891468" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:01.887953" elapsed="0.003664"/>
</kw>
<msg time="2026-04-19T00:11:01.891737" level="INFO">${output} = 1</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-19T00:11:01.502458" elapsed="0.389305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:01.892209" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:01.891943" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:01.892298" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:01.892450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:01.501079" elapsed="0.391396"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:01.892521" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:11:01.892666" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:01.499464" elapsed="0.393227"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:01.893377" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:01.892892" elapsed="0.000570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:01.498683" elapsed="0.394893">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:03.897058" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:03.896272" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:03.899170" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:03.898503" elapsed="0.000731"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:03.901102" 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-19T00:11:03.901292" 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-19T00:11:03.900689" elapsed="0.000642"/>
</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-19T00:11:03.907198" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:03.906484" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:03.906078" elapsed="0.001324"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:03.909522" 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-19T00:11:03.909872" 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-19T00:11:03.908853" elapsed="0.001164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:03.912385" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:03.911509" elapsed="0.001033"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:03.914459" 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-19T00:11:03.913748" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:03.916962" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:03.917059" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:03.916640" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:03.917295" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:03.918548" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:04.234053" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:03.918220" elapsed="0.315988"/>
</kw>
<msg time="2026-04-19T00:11:04.234297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:03.917845" elapsed="0.316546"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:03.915878" elapsed="0.318798"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:04.236223" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:04.259339" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:04.259851" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:04.260239" 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-19T00:11:04.235808" elapsed="0.024648"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:04.262766" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:04.265732" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:04.264985" elapsed="0.000891"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:04.266514" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:04.266181" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:04.266021" 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-19T00:11:04.267202" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:11:04.266903" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:04.266836" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:04.267530" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:04.274341" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T00:11:04.275136" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:04.275639" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:04.269396" elapsed="0.006540"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:03.904142" elapsed="0.372137"/>
</kw>
<msg time="2026-04-19T00:11:04.276721" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:03.903140" elapsed="0.373663"/>
</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-19T00:11:03.902339" elapsed="0.374611"/>
</kw>
<msg time="2026-04-19T00:11:04.277013" 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-19T00:11:03.901566" elapsed="0.375553"/>
</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-19T00:11:04.280218" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:11:04.280700" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:04.281051" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:04.277462" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T00:11:04.281297" level="INFO">${output} = 1</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-19T00:11:03.899747" elapsed="0.381575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:04.281753" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:04.281499" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:04.281839" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:04.281991" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:03.897578" elapsed="0.384439"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:04.282144" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:11:04.282295" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:03.895445" elapsed="0.386876"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:04.282869" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:04.282477" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:03.894391" elapsed="0.388676">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:06.286498" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:06.285727" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:06.288760" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:06.288119" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:06.290610" 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-19T00:11:06.290833" 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-19T00:11:06.290292" elapsed="0.000600"/>
</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-19T00:11:06.296841" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:06.296363" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:06.296080" elapsed="0.000900"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:06.298461" 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-19T00:11:06.298704" 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-19T00:11:06.297997" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:06.300351" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:06.299795" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:06.302231" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:06.301506" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:06.304700" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:06.304777" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:06.304414" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:06.305012" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:06.306417" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:06.629229" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:06.306084" elapsed="0.323293"/>
</kw>
<msg time="2026-04-19T00:11:06.629458" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:06.305683" elapsed="0.323872"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:06.303627" elapsed="0.326213"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:06.631356" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:06.654299" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:06.654829" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:06.655211" 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-19T00:11:06.630945" elapsed="0.024484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:06.657691" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:06.660425" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:06.659719" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:06.661287" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:06.660817" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:06.660734" elapsed="0.000751"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:06.661999" elapsed="0.000105"/>
</return>
<status status="PASS" start="2026-04-19T00:11:06.661699" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:06.661627" elapsed="0.000671"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:06.662416" elapsed="0.000056"/>
</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-19T00:11:06.667454" 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-19T00:11:06.668009" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:06.668424" 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-19T00:11:06.664132" elapsed="0.004502"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:06.294730" elapsed="0.374128"/>
</kw>
<msg time="2026-04-19T00:11:06.669216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:06.293677" elapsed="0.375602"/>
</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-19T00:11:06.292467" elapsed="0.376899"/>
</kw>
<msg time="2026-04-19T00:11:06.669408" 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-19T00:11:06.291314" elapsed="0.378140"/>
</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-19T00:11:06.672612" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:11:06.673106" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:06.673404" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:06.669748" elapsed="0.003801"/>
</kw>
<msg time="2026-04-19T00:11:06.673641" level="INFO">${output} = 1</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-19T00:11:06.289333" elapsed="0.384333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:06.674130" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:06.673864" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:06.674229" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:11:06.674385" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:06.287177" elapsed="0.387233"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:06.674457" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:06.674600" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:06.284907" elapsed="0.389717"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:06.675203" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:06.674779" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:06.283879" elapsed="0.391528">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:08.677948" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:08.677444" elapsed="0.000553"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:08.679383" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:08.678921" elapsed="0.000502"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:08.680608" 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-19T00:11:08.681047" 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-19T00:11:08.680376" elapsed="0.000715"/>
</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-19T00:11:08.689366" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:08.688824" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:08.686256" elapsed="0.003261"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:08.691005" 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-19T00:11:08.691307" 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-19T00:11:08.690521" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:08.692953" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:08.692387" elapsed="0.000767"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:08.695023" 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-19T00:11:08.694273" elapsed="0.000878"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:08.697852" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:08.697934" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:08.697535" 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-19T00:11:08.698196" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:08.699576" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:09.017025" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:08.699199" elapsed="0.318118"/>
</kw>
<msg time="2026-04-19T00:11:09.017474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:08.698790" elapsed="0.318839"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:08.696586" elapsed="0.321647"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:09.021591" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:09.044822" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:09.045365" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:09.045698" 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-19T00:11:09.020722" elapsed="0.025188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:09.048184" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:09.051524" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:09.050398" elapsed="0.001375"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:09.052697" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:09.052172" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:09.052012" elapsed="0.000995"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:09.053841" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T00:11:09.053378" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:09.053265" elapsed="0.001125"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:09.054578" elapsed="0.000086"/>
</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-19T00:11:09.060630" 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-19T00:11:09.061328" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:09.061701" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:09.057048" elapsed="0.004869"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:08.684014" elapsed="0.378154"/>
</kw>
<msg time="2026-04-19T00:11:09.062494" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:08.682988" elapsed="0.379566"/>
</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-19T00:11:08.682203" elapsed="0.380437"/>
</kw>
<msg time="2026-04-19T00:11:09.062681" 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-19T00:11:08.681331" elapsed="0.381396"/>
</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-19T00:11:09.065758" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:11:09.066259" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:09.066561" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:09.063020" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T00:11:09.066806" level="INFO">${output} = 1</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-19T00:11:08.679744" elapsed="0.387087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:09.067285" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:09.067018" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:09.067374" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:09.067561" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:08.678321" elapsed="0.389266"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:09.067635" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:11:09.067784" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:08.676879" elapsed="0.390930"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:09.068401" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:09.067967" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:08.676129" elapsed="0.392462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:11.071986" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:11.071274" elapsed="0.000806"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:11.073911" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:11.073510" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:11.075154" 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-19T00:11:11.075305" 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-19T00:11:11.074901" elapsed="0.000449"/>
</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-19T00:11:11.081202" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:11.080467" elapsed="0.000946"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:11.080387" elapsed="0.001114"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:11.083211" 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-19T00:11:11.083461" 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-19T00:11:11.082504" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:11.085136" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:11.084573" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:11.086942" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:11.086235" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:11.089429" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:11.089506" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:11.089144" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:11.089741" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:11.091000" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:11.405405" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:11.090675" elapsed="0.314902"/>
</kw>
<msg time="2026-04-19T00:11:11.405669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:11.090317" elapsed="0.315448"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:11.088336" elapsed="0.317753"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:11.407603" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:11.430716" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:11.431361" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:11.431696" 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-19T00:11:11.407196" elapsed="0.024711"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:11.434455" elapsed="0.000998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:11.437722" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:11.436731" elapsed="0.001214"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:11.438814" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:11.438321" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:11.438199" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:11.439892" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:11:11.439457" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:11.439348" elapsed="0.001052"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:11.440573" elapsed="0.000080"/>
</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-19T00:11:11.446291" elapsed="0.000377"/>
</kw>
<kw name="Open 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-19T00:11:11.446884" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:11.447395" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:11.442497" elapsed="0.005129"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:11.078418" elapsed="0.369438"/>
</kw>
<msg time="2026-04-19T00:11:11.448336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:11.077389" elapsed="0.371015"/>
</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-19T00:11:11.076574" elapsed="0.371914"/>
</kw>
<msg time="2026-04-19T00:11:11.448529" 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-19T00:11:11.075683" elapsed="0.372892"/>
</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-19T00:11:11.451727" elapsed="0.000439"/>
</kw>
<kw name="Open 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-19T00:11:11.452333" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:11.452630" elapsed="0.000109"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:11.448910" elapsed="0.003882"/>
</kw>
<msg time="2026-04-19T00:11:11.452886" level="INFO">${output} = 1</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-19T00:11:11.074291" elapsed="0.378619"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:11.453377" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:11.453126" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:11.453466" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:11:11.453620" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:11.072579" elapsed="0.381067"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:11.453693" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:11:11.453837" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:11.070450" elapsed="0.383412"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:11.454427" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:11.454017" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:11.069429" elapsed="0.385186">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:13.458107" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:13.457301" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:13.460205" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:13.459564" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:13.462082" 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-19T00:11:13.462317" 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-19T00:11:13.461687" elapsed="0.000690"/>
</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-19T00:11:13.468569" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:13.468108" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:13.468049" elapsed="0.000656"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:13.470466" 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-19T00:11:13.470727" 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-19T00:11:13.469686" elapsed="0.001144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:13.472406" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:13.471818" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:13.474432" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:13.473585" elapsed="0.000951"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:13.476991" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:13.477088" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:13.476704" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:13.477324" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:13.478638" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:13.803570" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:13.478308" elapsed="0.325441"/>
</kw>
<msg time="2026-04-19T00:11:13.803842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:13.477922" elapsed="0.326022"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:13.475783" elapsed="0.328493"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:13.805828" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:13.828814" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:13.829377" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:13.829706" 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-19T00:11:13.805402" elapsed="0.024512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:13.832197" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:13.835377" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:13.834382" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:13.836510" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:13.835954" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:13.835829" elapsed="0.000975"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:13.837727" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T00:11:13.837280" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:13.837015" elapsed="0.001152"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:13.838344" elapsed="0.000082"/>
</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-19T00:11:13.843560" 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-19T00:11:13.844133" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:13.844490" 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-19T00:11:13.839966" elapsed="0.004729"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:13.466715" elapsed="0.378205"/>
</kw>
<msg time="2026-04-19T00:11:13.845290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:13.465205" elapsed="0.380144"/>
</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-19T00:11:13.463898" elapsed="0.381535"/>
</kw>
<msg time="2026-04-19T00:11:13.845474" 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-19T00:11:13.462728" elapsed="0.382792"/>
</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-19T00:11:13.848612" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:11:13.849103" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:13.849399" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:13.845877" elapsed="0.003671"/>
</kw>
<msg time="2026-04-19T00:11:13.849643" level="INFO">${output} = 1</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-19T00:11:13.460745" elapsed="0.388924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:13.850149" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:13.849849" elapsed="0.000345"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:13.850237" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:11:13.850391" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:13.458628" elapsed="0.391788"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:13.850464" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:13.850609" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:13.456470" elapsed="0.394165"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:13.851270" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:13.850792" elapsed="0.000554">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:13.455428" elapsed="0.396028">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:15.854883" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:15.854138" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:15.856626" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:15.856216" elapsed="0.000451"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:15.857873" 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-19T00:11:15.858043" 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-19T00:11:15.857639" elapsed="0.000446"/>
</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-19T00:11:15.863684" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:15.862952" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:15.862873" elapsed="0.000966"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:15.865571" 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-19T00:11:15.865825" 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-19T00:11:15.864850" elapsed="0.001079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:15.867571" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:15.866961" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:15.869439" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:15.868701" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:15.871978" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:15.872073" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:15.871689" 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-19T00:11:15.872312" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:15.873662" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:16.180889" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:15.873331" elapsed="0.307732"/>
</kw>
<msg time="2026-04-19T00:11:16.181153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:15.872944" elapsed="0.308302"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:15.870852" elapsed="0.310683"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:16.183064" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:16.205987" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:16.206623" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:16.206957" 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-19T00:11:16.182637" elapsed="0.024610"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:16.209554" elapsed="0.000972"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:16.212470" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:16.211791" elapsed="0.000833"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:16.213229" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:16.212859" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:16.212775" elapsed="0.000646"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:16.213928" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T00:11:16.213633" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:16.213563" elapsed="0.000629"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:16.214308" elapsed="0.000056"/>
</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-19T00:11:16.221465" elapsed="0.000508"/>
</kw>
<kw name="Open 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-19T00:11:16.222331" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:16.222856" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:16.216419" elapsed="0.006923"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:15.860950" elapsed="0.362719"/>
</kw>
<msg time="2026-04-19T00:11:16.223996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:15.859966" elapsed="0.364114"/>
</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-19T00:11:15.859155" elapsed="0.365010"/>
</kw>
<msg time="2026-04-19T00:11:16.224207" 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-19T00:11:15.858322" elapsed="0.365931"/>
</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-19T00:11:16.227317" 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-19T00:11:16.227799" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:16.228110" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:16.224549" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T00:11:16.228498" level="INFO">${output} = 1</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-19T00:11:15.856994" elapsed="0.371531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:16.228991" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:16.228730" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:16.229109" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:11:16.229268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:15.855518" elapsed="0.373775"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:16.229341" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:16.229487" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:15.853272" elapsed="0.376240"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:16.230089" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:16.229674" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:15.852244" elapsed="0.378036">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:18.233891" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:18.233127" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:18.236019" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:18.235414" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:18.237565" 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-19T00:11:18.237731" 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-19T00:11:18.237334" elapsed="0.000439"/>
</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-19T00:11:18.243985" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:18.243293" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:18.242863" elapsed="0.001358"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:18.245944" 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-19T00:11:18.246241" 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-19T00:11:18.245440" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:18.247915" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:18.247339" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:18.249781" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:18.249051" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:18.252380" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:18.252460" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:18.252063" 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-19T00:11:18.252703" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:18.254019" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:18.559200" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:18.253683" elapsed="0.305795"/>
</kw>
<msg time="2026-04-19T00:11:18.559567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:18.253309" elapsed="0.306359"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:18.251189" elapsed="0.308770"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:18.561524" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:18.584131" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:18.584696" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:18.585134" 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-19T00:11:18.561119" elapsed="0.024247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:18.587769" elapsed="0.001004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:18.590240" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:18.589569" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:18.590932" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:18.590609" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:18.590529" elapsed="0.000614"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:18.591634" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:11:18.591355" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:18.591285" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:18.591966" elapsed="0.000051"/>
</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-19T00:11:18.598215" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:18.598761" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:18.599133" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:18.593824" elapsed="0.005517"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:18.240810" elapsed="0.358750"/>
</kw>
<msg time="2026-04-19T00:11:18.599863" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:18.239761" elapsed="0.360164"/>
</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-19T00:11:18.238945" elapsed="0.361061"/>
</kw>
<msg time="2026-04-19T00:11:18.600062" 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-19T00:11:18.238013" elapsed="0.362097"/>
</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-19T00:11:18.603187" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:11:18.603658" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:18.603950" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:18.600401" elapsed="0.003713"/>
</kw>
<msg time="2026-04-19T00:11:18.604233" level="INFO">${output} = 1</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-19T00:11:18.236658" elapsed="0.367611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:18.604750" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:18.604471" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:18.604839" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:11:18.604993" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:18.234445" elapsed="0.370573"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:18.605084" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:18.605229" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:18.232178" elapsed="0.373076"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:18.605878" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:18.605479" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:18.231127" elapsed="0.375005">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:20.609893" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:20.609014" elapsed="0.000931"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:20.611462" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:20.611014" elapsed="0.000489"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:20.612694" 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-19T00:11:20.612847" 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-19T00:11:20.612460" elapsed="0.000427"/>
</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-19T00:11:20.619718" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:20.618958" elapsed="0.000887"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:20.618528" elapsed="0.001411"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:20.622201" 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-19T00:11:20.622452" 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-19T00:11:20.621510" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:20.624264" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:20.623541" elapsed="0.000847"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:20.626291" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:20.625456" elapsed="0.000946"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:20.628938" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:20.629016" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:20.628643" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:20.629275" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:20.630792" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:20.945429" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:20.630462" elapsed="0.315132"/>
</kw>
<msg time="2026-04-19T00:11:20.945686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:20.629900" elapsed="0.315910"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:20.627635" elapsed="0.318508"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:20.947667" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:20.970824" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:20.971688" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:20.972069" 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-19T00:11:20.947264" elapsed="0.025023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:20.974648" elapsed="0.000754"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:20.976983" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:20.976326" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:20.977781" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:20.977410" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:20.977324" elapsed="0.000666"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:20.978536" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T00:11:20.978234" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:20.978160" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:20.978900" elapsed="0.000059"/>
</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-19T00:11:20.985144" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:11:20.985702" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:20.986194" 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-19T00:11:20.981026" elapsed="0.005382"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:20.616350" elapsed="0.370281"/>
</kw>
<msg time="2026-04-19T00:11:20.986941" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:20.615235" elapsed="0.371768"/>
</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-19T00:11:20.614399" elapsed="0.372711"/>
</kw>
<msg time="2026-04-19T00:11:20.987158" 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-19T00:11:20.613164" elapsed="0.374041"/>
</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-19T00:11:20.990398" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:11:20.990908" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:20.991238" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:20.987496" elapsed="0.003892"/>
</kw>
<msg time="2026-04-19T00:11:20.991480" level="INFO">${output} = 1</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-19T00:11:20.611826" elapsed="0.379679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:20.991947" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:20.991699" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:20.992050" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:11:20.992208" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:20.610395" elapsed="0.381838"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:20.992280" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:11:20.992423" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:20.608013" elapsed="0.384434"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:20.992997" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:20.992602" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:20.606919" elapsed="0.386285">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:22.996707" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:22.995942" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:22.999093" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:22.998405" elapsed="0.000751"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:23.000598" 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-19T00:11:23.000739" 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-19T00:11:23.000374" elapsed="0.000402"/>
</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-19T00:11:23.008552" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:23.007871" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:23.005477" elapsed="0.003277"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:23.010793" 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-19T00:11:23.011198" 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-19T00:11:23.010161" elapsed="0.001181"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:23.013183" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:23.012553" elapsed="0.000739"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:23.015006" 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-19T00:11:23.014269" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:23.017516" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:23.017593" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:23.017231" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:23.017827" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:23.019139" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:23.377948" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:23.018764" elapsed="0.359380"/>
</kw>
<msg time="2026-04-19T00:11:23.378239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:23.018405" elapsed="0.359934"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:23.016329" elapsed="0.362308"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:23.380229" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:23.403270" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:23.403818" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:23.404228" 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-19T00:11:23.379799" elapsed="0.024647"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:23.406776" elapsed="0.000943"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:23.410078" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:23.408992" elapsed="0.001315"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:23.411320" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:23.410650" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:23.410529" elapsed="0.001135"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:23.412246" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T00:11:23.411996" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:23.411887" elapsed="0.000524"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:23.412493" 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-19T00:11:23.417437" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:11:23.418016" elapsed="0.000238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:23.418452" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:23.413904" elapsed="0.004767"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:23.003618" elapsed="0.415288"/>
</kw>
<msg time="2026-04-19T00:11:23.419307" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:23.002652" elapsed="0.416731"/>
</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-19T00:11:23.001882" elapsed="0.417666"/>
</kw>
<msg time="2026-04-19T00:11:23.419594" 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-19T00:11:23.000994" elapsed="0.418649"/>
</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-19T00:11:23.422946" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T00:11:23.423515" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:23.423813" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:23.419962" elapsed="0.003999"/>
</kw>
<msg time="2026-04-19T00:11:23.424083" level="INFO">${output} = 1</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-19T00:11:22.999637" elapsed="0.424475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:23.424578" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:23.424325" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:23.424667" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:11:23.424827" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:22.997456" elapsed="0.427396"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:23.424900" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:11:23.425163" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:22.995135" elapsed="0.430055"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:23.425742" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:23.425348" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:22.994018" elapsed="0.431937">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:25.429435" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:25.428671" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:25.431546" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:25.430911" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:25.433459" 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-19T00:11:25.433821" 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-19T00:11:25.433086" elapsed="0.000797"/>
</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-19T00:11:25.440451" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:25.439784" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:25.439708" elapsed="0.000935"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:25.442894" 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-19T00:11:25.443271" 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-19T00:11:25.441989" elapsed="0.001418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:25.445448" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:25.444805" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:25.447303" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:25.446596" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:25.449668" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:25.449746" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:25.449386" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:25.449982" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:25.451310" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:25.804725" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:25.450940" elapsed="0.353942"/>
</kw>
<msg time="2026-04-19T00:11:25.804969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:25.450582" elapsed="0.354500"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:25.448605" elapsed="0.356767"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:25.806865" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:25.829520" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:25.830098" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:25.830464" 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-19T00:11:25.806466" elapsed="0.024227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:25.833158" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:25.836545" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:25.835490" elapsed="0.001298"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:25.837735" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:25.837199" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:25.837060" elapsed="0.001025"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:25.838923" elapsed="0.000219"/>
</return>
<status status="PASS" start="2026-04-19T00:11:25.838441" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:25.838322" elapsed="0.001079"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:25.839592" elapsed="0.000088"/>
</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-19T00:11:25.845316" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:11:25.845925" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:25.846372" 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-19T00:11:25.841864" 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-19T00:11:25.437844" elapsed="0.408978"/>
</kw>
<msg time="2026-04-19T00:11:25.847146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:25.436719" elapsed="0.410487"/>
</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-19T00:11:25.435442" elapsed="0.411848"/>
</kw>
<msg time="2026-04-19T00:11:25.847332" 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-19T00:11:25.434271" elapsed="0.413107"/>
</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-19T00:11:25.850451" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:11:25.850925" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:25.851233" 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-19T00:11:25.847665" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T00:11:25.851470" level="INFO">${output} = 1</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-19T00:11:25.432134" elapsed="0.419362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:25.852020" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:25.851769" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:25.852124" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:11:25.852283" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:25.429959" elapsed="0.422349"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:25.852371" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:25.852516" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:25.427813" elapsed="0.424728"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:25.853103" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:25.852696" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:25.426760" elapsed="0.426529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:27.856984" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:27.856194" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:27.859206" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:27.858581" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:27.861064" 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-19T00:11:27.861289" 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-19T00:11:27.860709" elapsed="0.000638"/>
</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-19T00:11:27.867192" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:27.866541" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:27.866463" elapsed="0.001015"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:27.869854" 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-19T00:11:27.870232" 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-19T00:11:27.868883" elapsed="0.001450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:27.871856" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:27.871312" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:27.873684" 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-19T00:11:27.872951" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:27.876121" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:27.876198" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:27.875820" 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-19T00:11:27.876434" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:27.877718" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:28.190048" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:27.877367" elapsed="0.312833"/>
</kw>
<msg time="2026-04-19T00:11:28.190283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:27.876988" elapsed="0.313386"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:27.875055" elapsed="0.315594"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:28.192152" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:28.214881" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:28.215457" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:28.215815" 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-19T00:11:28.191738" elapsed="0.024340"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:28.218507" elapsed="0.000939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:28.221885" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:28.220795" elapsed="0.001369"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:28.222634" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:28.222393" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:28.222335" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:28.223140" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T00:11:28.222918" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:28.222868" elapsed="0.000438"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:28.223388" 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-19T00:11:28.228215" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:11:28.228760" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:28.229131" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:28.224759" elapsed="0.004580"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:27.864488" elapsed="0.365072"/>
</kw>
<msg time="2026-04-19T00:11:28.229961" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:27.863480" elapsed="0.366542"/>
</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-19T00:11:27.862669" elapsed="0.367451"/>
</kw>
<msg time="2026-04-19T00:11:28.230162" 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-19T00:11:27.861742" elapsed="0.368466"/>
</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-19T00:11:28.233248" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:11:28.233756" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:28.234064" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:28.230501" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T00:11:28.234304" level="INFO">${output} = 1</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-19T00:11:27.859739" elapsed="0.374590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:28.234784" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:28.234518" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:28.234871" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:28.235076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:27.857603" elapsed="0.377500"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:28.235150" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:28.235295" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:27.855286" elapsed="0.380034"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:28.235877" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:28.235478" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:27.854152" elapsed="0.382017">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:30.239760" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:30.238982" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:30.241993" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:30.241377" elapsed="0.000727"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:30.244010" 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-19T00:11:30.244280" 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-19T00:11:30.243674" elapsed="0.000666"/>
</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-19T00:11:30.249949" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:30.249483" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:30.249424" elapsed="0.000680"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:30.251802" 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-19T00:11:30.252065" 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-19T00:11:30.251113" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:30.253698" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:30.253154" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:30.255630" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:30.254878" elapsed="0.000855"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:30.258085" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:30.258165" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:30.257782" 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-19T00:11:30.258399" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:30.259806" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:30.565592" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:30.259480" elapsed="0.306286"/>
</kw>
<msg time="2026-04-19T00:11:30.565851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:30.259098" elapsed="0.306841"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:30.256942" elapsed="0.309299"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:30.567755" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:30.590195" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:30.590703" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:30.591106" 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-19T00:11:30.567372" elapsed="0.023944"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:30.593474" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:30.596149" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:30.595508" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:30.596829" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:30.596511" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:30.596433" elapsed="0.000579"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:30.597517" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:11:30.597237" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:30.597171" elapsed="0.000562"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:30.597842" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:30.604144" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:11:30.604688" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:30.605056" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:30.599716" elapsed="0.005552"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:30.248098" elapsed="0.357392"/>
</kw>
<msg time="2026-04-19T00:11:30.605792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:30.247383" elapsed="0.358465"/>
</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-19T00:11:30.245967" elapsed="0.359963"/>
</kw>
<msg time="2026-04-19T00:11:30.605971" 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-19T00:11:30.244723" elapsed="0.361294"/>
</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-19T00:11:30.609177" 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-19T00:11:30.609654" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:30.609951" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:30.606389" elapsed="0.003729"/>
</kw>
<msg time="2026-04-19T00:11:30.610209" level="INFO">${output} = 1</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-19T00:11:30.242676" elapsed="0.367559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:30.610669" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:30.610420" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:30.610758" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:30.610935" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:30.240318" elapsed="0.370643"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:30.611009" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T00:11:30.611173" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:30.238071" elapsed="0.373127"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:30.611742" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:30.611356" elapsed="0.000458">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:30.236961" elapsed="0.374960">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:32.615501" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:32.614752" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:32.617682" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:32.617012" elapsed="0.000730"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:32.619512" 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-19T00:11:32.619729" 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-19T00:11:32.619182" elapsed="0.000604"/>
</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-19T00:11:32.626628" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:32.625926" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:32.625492" elapsed="0.001339"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:32.628944" 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-19T00:11:32.629343" 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-19T00:11:32.628293" elapsed="0.001192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:32.631345" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:32.630782" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:32.633191" 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-19T00:11:32.632430" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:32.635546" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:32.635623" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:32.635256" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:32.635857" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:32.637400" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:32.980926" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:32.636924" elapsed="0.344152"/>
</kw>
<msg time="2026-04-19T00:11:32.981156" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:32.636564" elapsed="0.344675"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:32.634484" elapsed="0.347022"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:32.982995" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:33.006084" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:33.006418" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:33.006628" 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-19T00:11:32.982610" elapsed="0.024154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:33.008254" elapsed="0.000548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:33.010228" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:33.009599" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:33.010921" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:33.010598" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:33.010519" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:33.011643" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T00:11:33.011361" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:33.011293" elapsed="0.000574"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:33.011979" elapsed="0.000055"/>
</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-19T00:11:33.017919" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:11:33.018478" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:33.018834" 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-19T00:11:33.013867" elapsed="0.005178"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:32.623524" elapsed="0.395830"/>
</kw>
<msg time="2026-04-19T00:11:33.019675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:32.622527" elapsed="0.397208"/>
</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-19T00:11:32.621316" elapsed="0.398500"/>
</kw>
<msg time="2026-04-19T00:11:33.019856" 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-19T00:11:32.620164" elapsed="0.399738"/>
</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-19T00:11:33.022852" 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-19T00:11:33.023425" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:33.023747" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:33.020209" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T00:11:33.024048" level="INFO">${output} = 1</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-19T00:11:32.618250" elapsed="0.405837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:33.024514" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:33.024266" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:33.024600" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:33.024750" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:32.616096" elapsed="0.408679"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:33.024821" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:33.024964" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:32.613918" elapsed="0.411071"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:33.025553" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:33.025163" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:32.612828" elapsed="0.412941">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:35.029368" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:35.028569" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:35.031473" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:35.030837" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:35.033365" 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-19T00:11:35.033525" 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-19T00:11:35.033007" elapsed="0.000544"/>
</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-19T00:11:35.037592" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:35.037116" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:35.036815" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:35.039163" 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-19T00:11:35.039404" 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-19T00:11:35.038714" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:35.041047" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:35.040487" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:35.042953" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:35.042239" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:35.045504" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:35.045594" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:35.045160" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:35.045877" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:35.047406" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:35.352025" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:35.046893" elapsed="0.305338"/>
</kw>
<msg time="2026-04-19T00:11:35.352305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:35.046517" elapsed="0.305866"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:35.044289" elapsed="0.308349"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:35.354099" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:35.377376" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:35.377897" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:35.378288" 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-19T00:11:35.353714" elapsed="0.024791"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:35.380754" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:35.383392" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:35.382762" 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-19T00:11:35.384154" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:35.383757" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:35.383681" elapsed="0.000661"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:35.384823" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:11:35.384544" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:35.384477" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:35.385183" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:35.391354" 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-19T00:11:35.391893" elapsed="0.000291"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:35.392384" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:35.387021" elapsed="0.005573"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:35.035488" elapsed="0.357327"/>
</kw>
<msg time="2026-04-19T00:11:35.393139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:35.034779" elapsed="0.358416"/>
</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-19T00:11:35.034240" elapsed="0.359035"/>
</kw>
<msg time="2026-04-19T00:11:35.393315" 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-19T00:11:35.033712" elapsed="0.359649"/>
</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-19T00:11:35.396353" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:11:35.396825" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:35.397136" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:35.393650" elapsed="0.003636"/>
</kw>
<msg time="2026-04-19T00:11:35.397375" level="INFO">${output} = 1</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-19T00:11:35.032012" elapsed="0.365387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:35.397820" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:35.397573" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:35.397908" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:35.398076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:35.029888" elapsed="0.368215"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:35.398149" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:35.398331" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:35.027727" elapsed="0.370631"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:35.398954" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:35.398560" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:35.026679" elapsed="0.372486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:37.402778" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:37.401992" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:37.404827" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:37.404364" elapsed="0.000502"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:37.406016" 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-19T00:11:37.406204" 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-19T00:11:37.405792" elapsed="0.000453"/>
</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-19T00:11:37.413925" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:37.413414" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:37.411069" elapsed="0.003032"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:37.415648" 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-19T00:11:37.415923" 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-19T00:11:37.415176" elapsed="0.000847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:37.417571" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:37.417006" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:37.419401" 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-19T00:11:37.418652" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:37.422082" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:37.422162" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:37.421776" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:37.422399" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:37.423650" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:37.765047" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:37.423328" elapsed="0.341835"/>
</kw>
<msg time="2026-04-19T00:11:37.765239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:37.422951" elapsed="0.342369"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:37.420912" elapsed="0.344671"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:37.767073" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:37.790085" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:37.790681" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:37.791009" 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-19T00:11:37.766651" elapsed="0.024635"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:37.793555" elapsed="0.000982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:37.796443" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:37.795751" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:37.797206" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:37.796836" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:37.796749" elapsed="0.000652"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:37.797907" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T00:11:37.797615" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:37.797539" elapsed="0.000636"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:37.798291" elapsed="0.000055"/>
</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-19T00:11:37.805165" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T00:11:37.805738" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:37.806125" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:37.800334" elapsed="0.006005"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:37.409175" elapsed="0.397385"/>
</kw>
<msg time="2026-04-19T00:11:37.806869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:37.408144" elapsed="0.398791"/>
</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-19T00:11:37.407306" elapsed="0.399711"/>
</kw>
<msg time="2026-04-19T00:11:37.807177" 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-19T00:11:37.406470" elapsed="0.400757"/>
</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-19T00:11:37.810237" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:11:37.810718" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:37.811014" elapsed="0.000199"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:37.807548" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T00:11:37.811359" level="INFO">${output} = 1</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-19T00:11:37.405192" elapsed="0.406192"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:37.811877" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:37.811597" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:37.811967" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:11:37.812144" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:37.403344" elapsed="0.408825"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:37.812216" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:37.812359" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:37.401143" elapsed="0.411241"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:37.812933" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:37.812539" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:37.399999" elapsed="0.413138">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:39.816922" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:39.816087" elapsed="0.000911"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:39.819374" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:39.818685" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:39.821374" 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-19T00:11:39.821617" 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-19T00:11:39.821001" elapsed="0.000680"/>
</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-19T00:11:39.827803" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:39.827337" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:39.827280" elapsed="0.000660"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:39.829613" 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-19T00:11:39.829863" 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-19T00:11:39.828920" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:39.831500" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:39.830932" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:39.833302" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:39.832576" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:39.835737" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:39.835814" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:39.835456" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:39.836063" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:39.837340" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:40.192140" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:39.836980" elapsed="0.355403"/>
</kw>
<msg time="2026-04-19T00:11:40.192534" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:39.836617" elapsed="0.356067"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:39.834589" elapsed="0.358677"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:40.195546" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:40.218825" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:40.219386" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:40.219719" 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-19T00:11:40.195146" elapsed="0.024783"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:40.222211" elapsed="0.001019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:40.225461" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:40.224492" elapsed="0.001194"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:40.226717" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:40.226063" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:40.225907" elapsed="0.001106"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:40.227815" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T00:11:40.227370" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:40.227263" elapsed="0.001006"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:40.228445" elapsed="0.000081"/>
</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-19T00:11:40.235092" 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-19T00:11:40.235654" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:40.236016" elapsed="0.000193"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:40.231521" elapsed="0.004799"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:39.825951" elapsed="0.410597"/>
</kw>
<msg time="2026-04-19T00:11:40.236857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:39.824681" elapsed="0.412237"/>
</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-19T00:11:39.823360" elapsed="0.413641"/>
</kw>
<msg time="2026-04-19T00:11:40.237060" 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-19T00:11:39.822092" elapsed="0.415017"/>
</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-19T00:11:40.240283" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:11:40.240763" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:40.241076" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:40.237406" elapsed="0.003819"/>
</kw>
<msg time="2026-04-19T00:11:40.241316" level="INFO">${output} = 1</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-19T00:11:39.819962" elapsed="0.421379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:40.241783" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:40.241534" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:40.241871" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:11:40.242024" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:39.817666" elapsed="0.424400"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:40.242115" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:40.242261" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:39.815194" elapsed="0.427091"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:40.242857" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:40.242442" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:39.814093" elapsed="0.428971">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:42.246464" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:42.245709" elapsed="0.000822"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:42.248342" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:42.247897" elapsed="0.000484"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:42.249583" 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-19T00:11:42.249914" 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-19T00:11:42.249352" elapsed="0.000604"/>
</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-19T00:11:42.255656" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:42.254934" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:42.254852" elapsed="0.000964"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:42.257491" 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-19T00:11:42.257733" 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-19T00:11:42.256792" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:42.259373" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:42.258799" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:42.261156" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:42.260449" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:42.263593" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:42.263671" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:42.263270" 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-19T00:11:42.263905" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:42.265182" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:42.578624" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:42.264839" elapsed="0.313978"/>
</kw>
<msg time="2026-04-19T00:11:42.578902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:42.264481" elapsed="0.314513"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:42.262502" elapsed="0.316816"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:42.580828" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:42.603889" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:42.604514" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:42.604849" 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-19T00:11:42.580434" elapsed="0.024667"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:42.607411" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:42.610598" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:42.609631" elapsed="0.001192"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:42.611763" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:42.611279" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:42.611154" elapsed="0.000743"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:42.612270" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:11:42.612065" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:42.611998" elapsed="0.000439"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:42.612516" 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-19T00:11:42.617364" 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-19T00:11:42.617991" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:42.618393" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:42.613930" elapsed="0.004674"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:42.252922" elapsed="0.365906"/>
</kw>
<msg time="2026-04-19T00:11:42.619196" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:42.251885" elapsed="0.367375"/>
</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-19T00:11:42.251068" elapsed="0.368276"/>
</kw>
<msg time="2026-04-19T00:11:42.619386" 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-19T00:11:42.250218" elapsed="0.369214"/>
</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-19T00:11:42.622458" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:11:42.622934" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:42.623316" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:42.619722" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T00:11:42.623555" level="INFO">${output} = 1</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-19T00:11:42.248697" elapsed="0.374883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:42.624012" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:42.623764" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:42.624118" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:42.624270" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:42.246975" elapsed="0.377320"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:42.624341" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:11:42.624484" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:42.244875" elapsed="0.379633"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:42.625151" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:42.624663" elapsed="0.000565">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:42.243855" elapsed="0.381485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:44.629086" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:44.628250" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:44.631845" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:44.630916" elapsed="0.000994"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:44.633947" 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-19T00:11:44.634075" 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-19T00:11:44.633672" elapsed="0.000432"/>
</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-19T00:11:44.638077" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:44.637564" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:44.637507" elapsed="0.000793"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:44.640006" 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-19T00:11:44.640285" 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-19T00:11:44.639304" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:44.642006" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:44.641437" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:44.643821" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:44.643117" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:44.646454" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:44.646537" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:44.646154" 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-19T00:11:44.646778" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:44.648307" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:44.961220" 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 Sun Apr 19 00:10:44 UTC 2026

  System load:  0.12               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:44.647943" elapsed="0.313425"/>
</kw>
<msg time="2026-04-19T00:11:44.961451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:44.647564" elapsed="0.313975"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:44.645271" elapsed="0.316549"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:44.963404" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:44.986292" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:44.986804" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:44.987186" 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-19T00:11:44.962971" elapsed="0.024432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:44.989670" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:44.992809" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:44.991821" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:44.993921" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:44.993428" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:44.993304" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:44.995019" elapsed="0.000282"/>
</return>
<status status="PASS" start="2026-04-19T00:11:44.994572" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:44.994464" elapsed="0.001074"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:44.995712" elapsed="0.000081"/>
</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-19T00:11:45.001033" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T00:11:45.001597" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:45.001960" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:44.997682" elapsed="0.004507"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:44.636130" elapsed="0.366283"/>
</kw>
<msg time="2026-04-19T00:11:45.002829" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:44.635382" elapsed="0.367508"/>
</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-19T00:11:44.634815" elapsed="0.368159"/>
</kw>
<msg time="2026-04-19T00:11:45.003015" 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-19T00:11:44.634267" elapsed="0.368857"/>
</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-19T00:11:45.006152" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:11:45.006632" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:45.006928" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:45.003422" elapsed="0.003776"/>
</kw>
<msg time="2026-04-19T00:11:45.007290" level="INFO">${output} = 1</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-19T00:11:44.632474" elapsed="0.374842"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:45.007744" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:45.007495" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:45.007832" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:11:45.007988" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:44.629851" elapsed="0.378162"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:45.008076" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:11:45.008224" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:44.627329" elapsed="0.380919"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:45.008825" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:45.008432" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:44.626208" elapsed="0.382802">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:47.012761" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:47.011945" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:47.015015" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:47.014444" elapsed="0.000629"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:47.016189" 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-19T00:11:47.016371" 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-19T00:11:47.015947" elapsed="0.000471"/>
</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-19T00:11:47.022751" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:47.022012" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:47.021533" elapsed="0.001456"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:47.024585" 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-19T00:11:47.024856" 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-19T00:11:47.024099" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:47.026651" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:47.026092" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:47.028580" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:47.027822" elapsed="0.000877"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:47.031254" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:47.031336" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:47.030877" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:47.031578" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:47.032863" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:47.662382" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:47.032536" elapsed="0.630010"/>
</kw>
<msg time="2026-04-19T00:11:47.662634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:47.032169" elapsed="0.630563"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:47.030062" elapsed="0.632958"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:47.664537" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:47.687337" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:47.687838" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:47.688225" 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-19T00:11:47.664141" elapsed="0.024297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:47.690679" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:47.693990" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:47.692843" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:47.694723" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:47.694399" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:47.694317" elapsed="0.000592"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:47.695479" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:11:47.695187" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:47.695111" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:47.695813" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:47.702366" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:11:47.702912" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:47.703285" 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-19T00:11:47.697793" elapsed="0.005699"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:47.019465" elapsed="0.684246"/>
</kw>
<msg time="2026-04-19T00:11:47.704013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:47.018400" elapsed="0.685686"/>
</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-19T00:11:47.017535" elapsed="0.686636"/>
</kw>
<msg time="2026-04-19T00:11:47.704212" 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-19T00:11:47.016664" elapsed="0.687594"/>
</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-19T00:11:47.707381" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:11:47.707860" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:47.708175" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:47.704610" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T00:11:47.708418" level="INFO">${output} = 1</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-19T00:11:47.015375" elapsed="0.693069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:47.708869" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:47.708621" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:47.708958" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:11:47.709173" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:47.013357" elapsed="0.695842"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:47.709246" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:47.709391" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:47.011071" elapsed="0.698345"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:47.710048" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:47.709571" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:47.009916" elapsed="0.700315">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:49.713982" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:49.713202" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:49.716251" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:49.715637" elapsed="0.000655"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:49.717486" 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-19T00:11:49.717632" 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-19T00:11:49.717248" elapsed="0.000421"/>
</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-19T00:11:49.722589" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:49.722097" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:49.721762" elapsed="0.000965"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:49.724184" 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-19T00:11:49.724425" 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-19T00:11:49.723728" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:49.726022" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:49.725483" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:49.727874" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:49.727150" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:49.730296" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:49.730373" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:49.729923" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:49.730605" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:49.731936" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:50.049965" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:49.731611" elapsed="0.318504"/>
</kw>
<msg time="2026-04-19T00:11:50.050195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:49.731238" elapsed="0.319041"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:49.729172" elapsed="0.321370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:50.051993" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:50.074601" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:50.075135" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:50.075468" 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-19T00:11:50.051612" elapsed="0.024067"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:50.077964" elapsed="0.000870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:50.081111" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:50.080128" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:50.082227" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:50.081696" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:50.081573" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:50.083323" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T00:11:50.082845" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:50.082735" elapsed="0.000935"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:50.083846" elapsed="0.000084"/>
</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-19T00:11:50.089985" 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-19T00:11:50.090556" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:50.090908" 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-19T00:11:50.086525" elapsed="0.004659"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:49.720451" elapsed="0.370958"/>
</kw>
<msg time="2026-04-19T00:11:50.091716" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:49.719578" elapsed="0.372195"/>
</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-19T00:11:49.718727" elapsed="0.373136"/>
</kw>
<msg time="2026-04-19T00:11:50.091905" 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-19T00:11:49.717904" elapsed="0.374047"/>
</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-19T00:11:50.094908" 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-19T00:11:50.095481" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:50.095776" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:50.092259" elapsed="0.003665"/>
</kw>
<msg time="2026-04-19T00:11:50.096096" level="INFO">${output} = 1</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-19T00:11:49.716616" elapsed="0.379507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:50.096553" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:50.096304" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:50.096642" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:11:50.096793" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:49.714571" elapsed="0.382248"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:50.096866" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:50.097012" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:49.712311" elapsed="0.384745"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:50.097618" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:50.097226" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:49.711132" elapsed="0.386667">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:52.101279" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:52.100526" elapsed="0.000822"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:52.103360" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:52.102732" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:52.105263" 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-19T00:11:52.105412" 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-19T00:11:52.104959" elapsed="0.000491"/>
</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-19T00:11:52.113480" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:52.112894" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:52.110315" elapsed="0.003307"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:52.115159" 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-19T00:11:52.115403" 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-19T00:11:52.114676" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:52.117149" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:52.116497" elapsed="0.000762"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:52.118922" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:52.118229" elapsed="0.000790"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:52.121372" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:52.121449" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:52.121016" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:52.121684" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:52.122953" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:52.462930" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:52.122631" elapsed="0.340785"/>
</kw>
<msg time="2026-04-19T00:11:52.463581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:52.122269" elapsed="0.341502"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:52.120230" elapsed="0.344169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:52.467548" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:52.490955" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:52.491488" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:52.491814" 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-19T00:11:52.466753" elapsed="0.025269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:52.494231" elapsed="0.000564"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:52.496245" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:52.495609" 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-19T00:11:52.496969" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:52.496628" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:52.496548" elapsed="0.000634"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:52.497672" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T00:11:52.497390" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:52.497320" elapsed="0.000622"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:52.498073" elapsed="0.000055"/>
</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-19T00:11:52.503984" elapsed="0.000453"/>
</kw>
<kw name="Open 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-19T00:11:52.504648" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:52.505003" 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-19T00:11:52.499930" elapsed="0.005302"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:52.108369" elapsed="0.397085"/>
</kw>
<msg time="2026-04-19T00:11:52.505791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:52.107365" elapsed="0.398488"/>
</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-19T00:11:52.106552" elapsed="0.399385"/>
</kw>
<msg time="2026-04-19T00:11:52.505978" 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-19T00:11:52.105770" elapsed="0.400254"/>
</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-19T00:11:52.509108" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:52.509589" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:52.509913" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:52.506332" elapsed="0.003746"/>
</kw>
<msg time="2026-04-19T00:11:52.510171" level="INFO">${output} = 1</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-19T00:11:52.103966" elapsed="0.406230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:52.510624" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:52.510375" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:52.510713" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:11:52.510864" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:52.101801" elapsed="0.409088"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:52.510935" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:11:52.511096" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:52.099669" elapsed="0.411452"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:52.511709" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:52.511319" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:52.098636" elapsed="0.413261">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:54.515360" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:54.514592" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:54.518068" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:54.517332" elapsed="0.000801"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:54.519942" 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-19T00:11:54.520203" 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-19T00:11:54.519593" elapsed="0.000670"/>
</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-19T00:11:54.526265" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:54.525789" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:54.525732" elapsed="0.000669"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:54.528301" 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-19T00:11:54.528566" 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-19T00:11:54.527510" elapsed="0.001160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:54.530498" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:54.529802" elapsed="0.000840"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:54.532504" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:54.531772" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:54.534984" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:54.535083" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:54.534678" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:54.535321" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:54.536622" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:54.842508" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:54.536292" elapsed="0.306366"/>
</kw>
<msg time="2026-04-19T00:11:54.842745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:54.535913" elapsed="0.306920"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:54.533825" elapsed="0.309314"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:54.844656" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:54.868247" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:54.868789" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:54.869171" 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-19T00:11:54.844233" elapsed="0.025168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:54.871866" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:54.875318" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:54.874283" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:54.876684" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:54.875938" elapsed="0.000923"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:54.875809" elapsed="0.001184"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:54.877503" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T00:11:54.877302" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:54.877249" elapsed="0.000416"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:54.877744" 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-19T00:11:54.882484" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:54.883047" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:54.883411" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:54.879080" elapsed="0.004538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:54.524428" elapsed="0.359415"/>
</kw>
<msg time="2026-04-19T00:11:54.884222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:54.523000" elapsed="0.361284"/>
</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-19T00:11:54.521776" elapsed="0.362628"/>
</kw>
<msg time="2026-04-19T00:11:54.884448" 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-19T00:11:54.520615" elapsed="0.363880"/>
</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-19T00:11:54.887514" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:11:54.887987" elapsed="0.000285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:54.888442" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:11:54.884789" elapsed="0.003808"/>
</kw>
<msg time="2026-04-19T00:11:54.888689" level="INFO">${output} = 1</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-19T00:11:54.518623" elapsed="0.370090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:54.889167" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:54.888902" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:54.889254" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:11:54.889408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:54.516106" elapsed="0.373326"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:54.889479" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:11:54.889621" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:54.513750" elapsed="0.375895"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:54.890214" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:54.889801" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:54.512701" elapsed="0.377697">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:56.893866" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:56.893104" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:56.896358" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:56.895666" elapsed="0.000759"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:56.898377" 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-19T00:11:56.898616" 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-19T00:11:56.897990" elapsed="0.000688"/>
</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-19T00:11:56.904123" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:56.903636" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:56.903579" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:56.905990" 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-19T00:11:56.906254" 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-19T00:11:56.905299" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:56.907893" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:56.907343" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:56.909730" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:56.909016" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:56.912185" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:56.912261" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:56.911887" 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-19T00:11:56.912492" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:56.913813" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:57.229184" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:56.913485" elapsed="0.315861"/>
</kw>
<msg time="2026-04-19T00:11:57.229467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:56.913118" elapsed="0.316447"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:56.911131" elapsed="0.318733"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:57.231498" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:57.254575" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:57.255134" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:57.255471" 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-19T00:11:57.231086" elapsed="0.024621"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:57.258058" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:57.261357" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:57.260295" elapsed="0.001334"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:57.262640" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:57.261982" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:57.261859" elapsed="0.001094"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:11:57.263781" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:11:57.263325" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:57.263212" elapsed="0.000988"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:57.264384" elapsed="0.000086"/>
</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-19T00:11:57.270421" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:11:57.270968" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:57.271416" 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-19T00:11:57.266971" elapsed="0.004657"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:56.902255" elapsed="0.369599"/>
</kw>
<msg time="2026-04-19T00:11:57.272196" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:56.901550" elapsed="0.370706"/>
</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-19T00:11:56.900338" elapsed="0.372001"/>
</kw>
<msg time="2026-04-19T00:11:57.272380" 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-19T00:11:56.899085" elapsed="0.373342"/>
</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-19T00:11:57.275526" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:11:57.276019" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:57.276354" 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-19T00:11:57.272720" elapsed="0.003787"/>
</kw>
<msg time="2026-04-19T00:11:57.276601" level="INFO">${output} = 1</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-19T00:11:56.896965" elapsed="0.379662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:57.277167" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:57.276811" elapsed="0.000405"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:57.277262" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:11:57.277422" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:56.894616" elapsed="0.382832"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:57.277497" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:11:57.277670" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:56.892219" elapsed="0.385476"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:57.278276" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:57.277856" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:56.891209" elapsed="0.387253">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:11:59.281994" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:11:59.281259" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:11:59.284136" level="INFO">${member_ip} = 10.30.171.206</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-19T00:11:59.283499" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:59.286005" 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-19T00:11:59.286495" 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-19T00:11:59.285674" elapsed="0.000904"/>
</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-19T00:11:59.292201" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:11:59.291682" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:59.291616" elapsed="0.000724"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:59.294057" 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-19T00:11:59.294309" 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-19T00:11:59.293341" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:59.295938" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:59.295384" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:11:59.297778" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:59.297081" elapsed="0.000795"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:11:59.300246" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:11:59.300325" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:11:59.299944" 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-19T00:11:59.300559" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:11:59.301827" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:11:59.628565" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:11:59.301504" elapsed="0.327214"/>
</kw>
<msg time="2026-04-19T00:11:59.628803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:59.301142" elapsed="0.327748"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:11:59.299194" elapsed="0.330009"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:11:59.630706" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:11:59.653370" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:11:59.653927" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:11:59.654374" 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-19T00:11:59.630306" elapsed="0.024288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:59.656835" elapsed="0.001009"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:59.659664" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:59.658861" elapsed="0.000954"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:59.660399" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:11:59.660067" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:59.659961" 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-19T00:11:59.661114" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T00:11:59.660789" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T00:11:59.660720" elapsed="0.000624"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:11:59.661460" elapsed="0.000059"/>
</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-19T00:11:59.668023" 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-19T00:11:59.668687" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:59.669074" 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-19T00:11:59.663583" elapsed="0.005710"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:11:59.290304" elapsed="0.379216"/>
</kw>
<msg time="2026-04-19T00:11:59.669855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:11:59.289592" elapsed="0.380327"/>
</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-19T00:11:59.288361" elapsed="0.381642"/>
</kw>
<msg time="2026-04-19T00:11:59.670059" 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-19T00:11:59.287017" elapsed="0.383090"/>
</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-19T00:11:59.673228" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:11:59.673763" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:11:59.674087" 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-19T00:11:59.670401" elapsed="0.003840"/>
</kw>
<msg time="2026-04-19T00:11:59.674333" level="INFO">${output} = 1</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-19T00:11:59.284689" elapsed="0.389669"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:11:59.674816" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:11:59.674561" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:11:59.674907" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:11:59.675079" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:11:59.282552" elapsed="0.392553"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:11:59.675152" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:11:59.675297" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:11:59.280365" elapsed="0.394956"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:11:59.675868" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:11:59.675476" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:11:59.279309" elapsed="0.396824">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:01.678608" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:01.678101" elapsed="0.000564"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:01.680050" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:01.679644" elapsed="0.000446"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:01.681222" 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-19T00:12:01.681363" 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-19T00:12:01.680979" elapsed="0.000421"/>
</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-19T00:12:01.687018" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:01.686334" elapsed="0.000894"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:01.685924" elapsed="0.001390"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:01.689394" 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-19T00:12:01.689668" 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-19T00:12:01.688762" elapsed="0.001007"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:01.691394" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:01.690800" elapsed="0.000709"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:01.693234" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:01.692514" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:01.695745" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:01.695821" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:01.695425" 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-19T00:12:01.696118" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:01.697433" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:02.044379" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:11:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:01.697103" elapsed="0.347424"/>
</kw>
<msg time="2026-04-19T00:12:02.044612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:01.696727" elapsed="0.347974"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:01.694632" elapsed="0.350379"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:02.046509" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:02.069442" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:02.069939" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:02.070318" 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-19T00:12:02.046112" elapsed="0.024414"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:02.072695" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:02.075007" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:02.074409" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:02.075794" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:02.075470" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:02.075390" 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-19T00:12:02.076478" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:12:02.076200" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:02.076131" elapsed="0.000565"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:02.076805" elapsed="0.000051"/>
</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-19T00:12:02.082894" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T00:12:02.083507" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:02.083860" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:02.078642" elapsed="0.005443"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:01.684065" elapsed="0.400240"/>
</kw>
<msg time="2026-04-19T00:12:02.084668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:01.683113" elapsed="0.401612"/>
</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-19T00:12:01.682353" elapsed="0.402454"/>
</kw>
<msg time="2026-04-19T00:12:02.084848" 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-19T00:12:01.681623" elapsed="0.403270"/>
</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-19T00:12:02.088037" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:12:02.088513" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:02.088805" 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-19T00:12:02.085213" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T00:12:02.089085" level="INFO">${output} = 1</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-19T00:12:01.680393" elapsed="0.408718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:02.089547" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:02.089299" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:02.089634" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:02.089784" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:01.678952" elapsed="0.410857"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:02.089854" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:02.089997" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:01.677562" elapsed="0.412459"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:02.090590" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:02.090194" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:01.676814" elapsed="0.413964">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:04.094243" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:04.093443" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:04.096416" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:04.095709" elapsed="0.000770"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:04.098421" 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-19T00:12:04.098626" 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-19T00:12:04.098095" elapsed="0.000571"/>
</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-19T00:12:04.104656" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:04.103959" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:04.103581" elapsed="0.001279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:04.107257" 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-19T00:12:04.107615" 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-19T00:12:04.106380" elapsed="0.001336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:04.109296" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:04.108713" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:04.111172" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:04.110459" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:04.113661" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:04.113741" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:04.113365" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:04.113975" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:04.115255" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:04.444492" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:04.114913" elapsed="0.329738"/>
</kw>
<msg time="2026-04-19T00:12:04.444748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:04.114553" elapsed="0.330327"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:04.112583" elapsed="0.332634"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:04.446759" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:04.469638" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:04.470268" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:04.470676" 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-19T00:12:04.446356" elapsed="0.024548"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:04.473455" elapsed="0.000708"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:04.475656" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:04.474984" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:04.476403" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:04.476063" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:04.475960" elapsed="0.000640"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:04.477179" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T00:12:04.476824" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:04.476750" elapsed="0.000667"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:04.477535" elapsed="0.000055"/>
</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-19T00:12:04.484502" elapsed="0.000542"/>
</kw>
<kw name="Open 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-19T00:12:04.485353" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:04.485791" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:04.479676" elapsed="0.006332"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:04.101488" elapsed="0.384776"/>
</kw>
<msg time="2026-04-19T00:12:04.486590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:04.100495" elapsed="0.386156"/>
</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-19T00:12:04.099683" elapsed="0.387051"/>
</kw>
<msg time="2026-04-19T00:12:04.486776" 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-19T00:12:04.098902" elapsed="0.387921"/>
</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-19T00:12:04.489994" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:12:04.490506" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:04.490839" 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-19T00:12:04.487299" elapsed="0.003695"/>
</kw>
<msg time="2026-04-19T00:12:04.491125" level="INFO">${output} = 1</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-19T00:12:04.097074" elapsed="0.394078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:04.491598" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:04.491341" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:04.491688" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:12:04.491843" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:04.094766" elapsed="0.397103"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:04.491916" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:12:04.492082" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:04.092620" elapsed="0.399488"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:04.492686" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:04.492266" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:04.091590" elapsed="0.401282">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:06.495161" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:06.494672" elapsed="0.000532"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:06.496278" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:06.495940" elapsed="0.000370"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:06.497276" 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-19T00:12:06.497394" 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-19T00:12:06.497069" elapsed="0.000356"/>
</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-19T00:12:06.504182" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:06.503594" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:06.501213" elapsed="0.003127"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:06.505947" 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-19T00:12:06.506235" 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-19T00:12:06.505451" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:06.508091" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:06.507463" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:06.510144" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:06.509355" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:06.512827" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:06.512915" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:06.512494" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:06.513317" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:06.514873" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:06.810943" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:06.514463" elapsed="0.296648"/>
</kw>
<msg time="2026-04-19T00:12:06.811196" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:06.514039" elapsed="0.297244"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:06.511614" elapsed="0.299943"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:06.813315" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:06.835889" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:06.836422" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:06.836752" 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-19T00:12:06.812900" elapsed="0.024087"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:06.839236" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:06.842359" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:06.841396" elapsed="0.001188"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:06.843458" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:06.842927" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:06.842805" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:06.844542" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T00:12:06.844099" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:06.843958" elapsed="0.000977"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:06.845279" elapsed="0.000084"/>
</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-19T00:12:06.888341" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T00:12:06.888967" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:06.889363" 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-19T00:12:06.846816" elapsed="0.042772"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:06.499714" elapsed="0.390104"/>
</kw>
<msg time="2026-04-19T00:12:06.890166" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:06.498876" elapsed="0.391357"/>
</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-19T00:12:06.498246" elapsed="0.392069"/>
</kw>
<msg time="2026-04-19T00:12:06.890355" 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-19T00:12:06.497617" elapsed="0.392784"/>
</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-19T00:12:06.893460" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:12:06.893938" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:06.894250" 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-19T00:12:06.890713" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T00:12:06.894572" level="INFO">${output} = 1</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-19T00:12:06.496570" elapsed="0.398028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:06.895071" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:06.894795" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:06.895177" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:12:06.895350" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:06.495455" elapsed="0.399923"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:06.895424" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:06.895567" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:06.494218" elapsed="0.401374"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:06.896309" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:06.895774" elapsed="0.000623">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:06.493532" elapsed="0.402982">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:08.900285" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:08.899720" elapsed="0.000615"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:08.901687" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:08.901293" elapsed="0.000434"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:08.902979" 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-19T00:12:08.903150" 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-19T00:12:08.902730" elapsed="0.000460"/>
</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-19T00:12:08.909851" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:08.908728" elapsed="0.001389"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:08.908603" elapsed="0.001672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:08.912170" 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-19T00:12:08.912422" 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-19T00:12:08.911634" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:08.914126" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:08.913521" elapsed="0.000718"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:08.916057" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:08.915295" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:08.918554" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:08.918636" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:08.918261" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:08.918884" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:08.920328" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:09.244006" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:08.919980" elapsed="0.324284"/>
</kw>
<msg time="2026-04-19T00:12:09.244349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:08.919606" elapsed="0.324834"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:08.917409" elapsed="0.327308"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:09.246232" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:09.269019" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:09.269633" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:09.269977" 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-19T00:12:09.245820" elapsed="0.024416"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:09.272462" elapsed="0.000979"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:09.275722" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:09.274690" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:09.276843" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:09.276341" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:09.276219" elapsed="0.000996"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:09.277900" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T00:12:09.277544" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:09.277434" elapsed="0.000646"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:09.278164" 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-19T00:12:09.282980" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T00:12:09.283618" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:09.283987" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:09.279548" elapsed="0.004662"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:08.906300" elapsed="0.378129"/>
</kw>
<msg time="2026-04-19T00:12:09.284731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:08.904955" elapsed="0.379903"/>
</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-19T00:12:08.904195" elapsed="0.380763"/>
</kw>
<msg time="2026-04-19T00:12:09.285006" 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-19T00:12:08.903436" elapsed="0.381646"/>
</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-19T00:12:09.288136" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:12:09.288612" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:09.288931" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:09.285376" elapsed="0.003743"/>
</kw>
<msg time="2026-04-19T00:12:09.289212" level="INFO">${output} = 1</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-19T00:12:08.902094" elapsed="0.387143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:09.289695" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:09.289434" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:09.289786" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:12:09.289941" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:08.900636" elapsed="0.389330"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:09.290014" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T00:12:09.290181" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:08.898780" elapsed="0.391426"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:09.290824" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:09.290411" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:08.897473" elapsed="0.393540">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:11.294543" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:11.293766" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:11.296695" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:11.296083" elapsed="0.000672"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:11.298541" 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-19T00:12:11.298778" 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-19T00:12:11.298209" elapsed="0.000629"/>
</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-19T00:12:11.305848" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:11.305359" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:11.305302" elapsed="0.000702"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:11.307547" 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-19T00:12:11.307804" 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-19T00:12:11.307050" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:11.309473" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:11.308877" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:11.311335" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:11.310565" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:11.313917" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:11.313996" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:11.313599" 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-19T00:12:11.314254" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:11.315598" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:11.628870" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:11.315264" elapsed="0.313760"/>
</kw>
<msg time="2026-04-19T00:12:11.629131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:11.314875" elapsed="0.314345"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:11.312772" elapsed="0.316731"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:11.630987" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:11.653812" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:11.654348" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:11.654705" 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-19T00:12:11.630597" elapsed="0.024335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:11.657222" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:11.660411" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:11.659372" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:11.661511" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:11.660982" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:11.660861" elapsed="0.000940"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:11.662603" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:12:11.662154" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:11.662017" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:11.663164" elapsed="0.000084"/>
</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-19T00:12:11.668428" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:12:11.668979" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:11.669365" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:11.664974" elapsed="0.004599"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:11.303370" elapsed="0.366423"/>
</kw>
<msg time="2026-04-19T00:12:11.670147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:11.301632" elapsed="0.368576"/>
</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-19T00:12:11.300389" elapsed="0.369903"/>
</kw>
<msg time="2026-04-19T00:12:11.670334" 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-19T00:12:11.299215" elapsed="0.371166"/>
</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-19T00:12:11.673515" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:12:11.673989" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:11.674302" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:11.670675" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T00:12:11.674540" level="INFO">${output} = 1</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-19T00:12:11.297269" elapsed="0.377296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:11.674995" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:11.674745" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:11.675099" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:12:11.675278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:11.295132" elapsed="0.380171"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:11.675350" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:11.675495" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:11.292907" elapsed="0.382613"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:11.676183" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:11.675675" elapsed="0.000585">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:11.291819" elapsed="0.384552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:13.679876" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:13.679131" elapsed="0.000814"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:13.682182" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:13.681545" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:13.684023" 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-19T00:12:13.684282" 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-19T00:12:13.683697" elapsed="0.000645"/>
</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-19T00:12:13.690389" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:13.689904" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:13.689849" elapsed="0.000678"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:13.691972" 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-19T00:12:13.692227" 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-19T00:12:13.691523" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:13.693835" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:13.693296" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:13.695640" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:13.694924" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:13.698066" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:13.698145" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:13.697769" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:13.698378" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:13.699672" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:14.016391" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:13.699348" elapsed="0.317220"/>
</kw>
<msg time="2026-04-19T00:12:14.016656" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:13.698957" elapsed="0.317796"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:13.696930" elapsed="0.320159"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:14.018679" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:14.041816" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:14.042369" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:14.042700" 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-19T00:12:14.018239" elapsed="0.024673"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:14.045257" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:14.048473" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:14.047439" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:14.049697" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:14.049080" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:14.048927" elapsed="0.001072"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:14.050893" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T00:12:14.050393" elapsed="0.000897"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:14.050251" elapsed="0.001181"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:14.051635" elapsed="0.000088"/>
</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-19T00:12:14.057412" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:12:14.057959" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:14.058336" 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-19T00:12:14.053793" elapsed="0.004750"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:13.688300" elapsed="0.370468"/>
</kw>
<msg time="2026-04-19T00:12:14.059141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:13.687144" elapsed="0.372059"/>
</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-19T00:12:13.685854" elapsed="0.373432"/>
</kw>
<msg time="2026-04-19T00:12:14.059327" 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-19T00:12:13.684692" elapsed="0.374681"/>
</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-19T00:12:14.062404" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:12:14.062877" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:14.063276" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:14.059662" elapsed="0.003761"/>
</kw>
<msg time="2026-04-19T00:12:14.063514" level="INFO">${output} = 1</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-19T00:12:13.682726" elapsed="0.380812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:14.063966" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:14.063718" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:14.064073" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:12:14.064228" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:13.680591" elapsed="0.383782"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:14.064432" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:12:14.064591" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:13.678263" elapsed="0.386354"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:14.065210" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:14.064786" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:13.677227" elapsed="0.388169">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:16.068933" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:16.068105" elapsed="0.000900"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:16.071108" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:16.070472" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:16.072966" 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-19T00:12:16.073261" 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-19T00:12:16.072642" elapsed="0.000659"/>
</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-19T00:12:16.078975" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:16.078341" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:16.078264" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:16.081334" 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-19T00:12:16.081685" 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-19T00:12:16.080673" elapsed="0.001157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:16.083986" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:16.083213" elapsed="0.001006"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:16.086295" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:16.085534" elapsed="0.000864"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:16.088919" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:16.089001" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:16.088595" 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-19T00:12:16.089257" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:16.090596" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:16.402379" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:16.090258" elapsed="0.312400"/>
</kw>
<msg time="2026-04-19T00:12:16.402810" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:16.089842" elapsed="0.313117"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:16.087769" elapsed="0.315614"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:16.405520" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:16.428722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:16.429296" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:16.429637" 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-19T00:12:16.404965" elapsed="0.024889"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:16.432336" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:16.435467" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:16.434456" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:16.436705" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:16.436194" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:16.435932" elapsed="0.001067"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:16.437816" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:12:16.437361" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:16.437250" elapsed="0.000959"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:16.438448" elapsed="0.000092"/>
</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-19T00:12:16.443570" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:12:16.444272" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:16.444644" 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-19T00:12:16.440200" elapsed="0.004660"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:16.075964" elapsed="0.369145"/>
</kw>
<msg time="2026-04-19T00:12:16.445420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:16.075018" elapsed="0.370463"/>
</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-19T00:12:16.074268" elapsed="0.371299"/>
</kw>
<msg time="2026-04-19T00:12:16.445612" 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-19T00:12:16.073525" elapsed="0.372135"/>
</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-19T00:12:16.449004" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:12:16.449521" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:16.449827" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:16.446003" elapsed="0.003980"/>
</kw>
<msg time="2026-04-19T00:12:16.450111" level="INFO">${output} = 1</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-19T00:12:16.071650" elapsed="0.378489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:16.450624" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:16.450359" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:16.450717" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:12:16.450888" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:16.069520" elapsed="0.381398"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:16.450969" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:16.451182" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:16.067264" elapsed="0.383944"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:16.451772" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:16.451370" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:16.066212" elapsed="0.385744">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:18.455853" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:18.455100" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:18.458149" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:18.457420" elapsed="0.000794"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:18.459990" 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-19T00:12:18.460249" 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-19T00:12:18.459654" elapsed="0.000655"/>
</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-19T00:12:18.464922" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:18.464443" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:18.464140" elapsed="0.001008"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:18.466619" 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-19T00:12:18.466863" 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-19T00:12:18.466162" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:18.468556" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:18.467948" elapsed="0.000716"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:18.470403" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:18.469686" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:18.472871" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:18.472949" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:18.472587" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:18.473216" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:18.474496" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:18.793140" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:18.474172" elapsed="0.319104"/>
</kw>
<msg time="2026-04-19T00:12:18.793357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:18.473793" elapsed="0.319647"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:18.471722" elapsed="0.321996"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:18.795193" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:18.817725" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:18.818273" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:18.818609" 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-19T00:12:18.794796" elapsed="0.024026"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:18.821073" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:18.824257" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:18.823264" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:18.825360" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:18.824834" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:18.824714" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:18.826468" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:12:18.825977" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:18.825868" elapsed="0.001059"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:18.827311" elapsed="0.000091"/>
</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-19T00:12:18.832568" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:12:18.833129" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:18.833487" 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-19T00:12:18.829164" elapsed="0.004531"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:18.462797" elapsed="0.371121"/>
</kw>
<msg time="2026-04-19T00:12:18.834348" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:18.462107" elapsed="0.372301"/>
</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-19T00:12:18.461560" elapsed="0.372930"/>
</kw>
<msg time="2026-04-19T00:12:18.834531" 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-19T00:12:18.460765" elapsed="0.373812"/>
</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-19T00:12:18.837651" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:12:18.838144" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:18.838444" 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-19T00:12:18.834870" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T00:12:18.838682" level="INFO">${output} = 1</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-19T00:12:18.458704" elapsed="0.380004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:18.839237" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:18.838890" elapsed="0.000393"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:18.839326" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:12:18.839480" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:18.456416" elapsed="0.383089"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:18.839552" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:18.839694" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:18.454193" elapsed="0.385556"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:18.840327" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:18.839915" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:18.452882" elapsed="0.387628">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:20.843899" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:20.843173" elapsed="0.000794"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:20.845758" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:20.845354" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:20.846980" 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-19T00:12:20.847162" 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-19T00:12:20.846744" elapsed="0.000458"/>
</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-19T00:12:20.853181" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:20.852434" elapsed="0.000874"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:20.851989" elapsed="0.001419"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:20.855964" 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-19T00:12:20.856375" 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-19T00:12:20.855083" elapsed="0.001442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:20.858480" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:20.857851" elapsed="0.000740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:20.860492" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:20.859750" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:20.862947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:20.863190" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:20.862646" elapsed="0.000572"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:20.863436" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:20.864750" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:21.184088" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:20.864418" elapsed="0.319822"/>
</kw>
<msg time="2026-04-19T00:12:21.184326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:20.864045" elapsed="0.320372"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:20.861830" elapsed="0.322873"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:21.186219" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:21.208876" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:21.209174" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:21.209326" 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-19T00:12:21.185801" elapsed="0.023626"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:21.210479" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:21.211987" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:21.211504" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:21.212526" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:21.212278" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:21.212218" elapsed="0.000438"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:21.213006" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T00:12:21.212805" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:21.212757" elapsed="0.000435"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:21.213273" 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-19T00:12:21.219704" elapsed="0.000381"/>
</kw>
<kw name="Open 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-19T00:12:21.220301" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:21.220660" 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-19T00:12:21.214611" elapsed="0.006255"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:20.850090" elapsed="0.371019"/>
</kw>
<msg time="2026-04-19T00:12:21.221420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:20.849062" elapsed="0.372416"/>
</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-19T00:12:20.848218" elapsed="0.373339"/>
</kw>
<msg time="2026-04-19T00:12:21.221597" 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-19T00:12:20.847437" elapsed="0.374206"/>
</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-19T00:12:21.224856" 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-19T00:12:21.225349" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:21.225642" 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-19T00:12:21.222201" elapsed="0.003587"/>
</kw>
<msg time="2026-04-19T00:12:21.225876" level="INFO">${output} = 1</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-19T00:12:20.846137" elapsed="0.379764"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:21.226348" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:21.226096" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:21.226435" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:12:21.226584" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:20.844444" elapsed="0.382164"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:21.226654" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:21.226794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:20.842349" elapsed="0.384469"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:21.227447" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:21.226972" elapsed="0.000549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:20.841322" elapsed="0.386309">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:23.231406" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:23.230577" elapsed="0.000899"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:23.233560" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:23.232909" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:23.235750" 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-19T00:12:23.235979" 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-19T00:12:23.235409" elapsed="0.000657"/>
</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-19T00:12:23.241794" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:23.241309" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:23.241252" elapsed="0.000714"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:23.243750" 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-19T00:12:23.244000" 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-19T00:12:23.242989" elapsed="0.001154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:23.245742" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:23.245160" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:23.247654" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:23.246858" elapsed="0.000894"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:23.250024" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:23.250122" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:23.249738" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:23.250367" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:23.251925" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:23.566162" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:23.251569" elapsed="0.314728"/>
</kw>
<msg time="2026-04-19T00:12:23.566376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:23.251017" elapsed="0.315439"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:23.248943" elapsed="0.317780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:23.568219" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:23.590883" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:23.591477" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:23.591825" 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-19T00:12:23.567801" elapsed="0.024281"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:23.594449" elapsed="0.000952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:23.597761" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:23.596702" elapsed="0.001360"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:23.598962" elapsed="0.000241"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:23.598444" elapsed="0.000876"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:23.598319" elapsed="0.001131"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:23.600311" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T00:12:23.599785" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:23.599674" elapsed="0.001013"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:23.600874" elapsed="0.000088"/>
</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-19T00:12:23.606529" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:23.607114" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:23.607479" 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-19T00:12:23.603170" elapsed="0.004525"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:23.239872" elapsed="0.368054"/>
</kw>
<msg time="2026-04-19T00:12:23.608295" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:23.238954" elapsed="0.369407"/>
</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-19T00:12:23.237650" elapsed="0.370798"/>
</kw>
<msg time="2026-04-19T00:12:23.608490" 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-19T00:12:23.236444" elapsed="0.372093"/>
</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-19T00:12:23.611701" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:12:23.612198" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:23.612495" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:23.608839" elapsed="0.003805"/>
</kw>
<msg time="2026-04-19T00:12:23.612794" level="INFO">${output} = 1</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-19T00:12:23.234231" elapsed="0.378589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:23.613266" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:23.612999" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:23.613354" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:23.613507" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:23.231942" elapsed="0.381590"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:23.613580" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:23.613727" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:23.229683" elapsed="0.384082"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:23.614350" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:23.613935" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:23.228539" elapsed="0.385991">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:25.618012" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:25.617253" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:25.620293" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:25.619556" elapsed="0.000803"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:25.622235" 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-19T00:12:25.622463" 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-19T00:12:25.621866" elapsed="0.000639"/>
</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-19T00:12:25.627773" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:25.627141" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:25.627063" elapsed="0.000903"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:25.630339" 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-19T00:12:25.630685" 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-19T00:12:25.629362" elapsed="0.001464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:25.632991" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:25.632226" elapsed="0.000939"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:25.635320" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:25.634607" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:25.637738" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:25.637818" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:25.637434" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:25.638193" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:25.639497" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:25.963008" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:25.639147" elapsed="0.324119"/>
</kw>
<msg time="2026-04-19T00:12:25.963349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:25.638754" elapsed="0.324682"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:25.636631" elapsed="0.327077"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:25.965224" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:25.988013" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:25.988263" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:25.988414" 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-19T00:12:25.964795" elapsed="0.023714"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:25.989534" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:25.990993" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:25.990549" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:25.991532" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:25.991279" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:25.991221" elapsed="0.000446"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:25.992015" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T00:12:25.991814" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:25.991765" elapsed="0.000428"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:25.992272" 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-19T00:12:25.997094" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:12:25.997636" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:25.997989" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:25.993633" elapsed="0.004666"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:25.625185" elapsed="0.373451"/>
</kw>
<msg time="2026-04-19T00:12:25.998946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:25.624223" elapsed="0.374780"/>
</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-19T00:12:25.623462" elapsed="0.375642"/>
</kw>
<msg time="2026-04-19T00:12:25.999145" 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-19T00:12:25.622734" elapsed="0.376457"/>
</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-19T00:12:26.002328" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:12:26.002810" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:26.003119" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:25.999494" elapsed="0.003775"/>
</kw>
<msg time="2026-04-19T00:12:26.003360" level="INFO">${output} = 1</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-19T00:12:25.620853" elapsed="0.382533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:26.003816" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:26.003566" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:26.003904" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:12:26.004071" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:25.618601" elapsed="0.385496"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:26.004145" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:26.004289" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:25.616405" elapsed="0.387908"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:26.004907" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:26.004513" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:25.615343" elapsed="0.389780">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:28.008937" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:28.008195" elapsed="0.000812"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:28.010889" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:28.010499" elapsed="0.000428"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:28.012073" 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-19T00:12:28.012220" 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-19T00:12:28.011835" elapsed="0.000423"/>
</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-19T00:12:28.017884" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:28.017079" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:28.016961" elapsed="0.001180"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:28.020716" 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-19T00:12:28.021260" 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-19T00:12:28.019542" elapsed="0.001913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:28.023890" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:28.023110" elapsed="0.001039"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:28.026398" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:28.025399" elapsed="0.001127"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:28.029362" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:28.029443" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:28.029059" 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-19T00:12:28.029690" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:28.031099" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:28.354663" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:28.030739" elapsed="0.324068"/>
</kw>
<msg time="2026-04-19T00:12:28.354888" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:28.030344" elapsed="0.324627"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:28.028238" elapsed="0.327029"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:28.356728" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:28.379387" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:28.379889" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:28.380272" 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-19T00:12:28.356345" elapsed="0.024141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:28.382738" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:28.385948" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:28.384904" elapsed="0.001320"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:28.387110" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:28.386578" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:28.386457" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:28.388217" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:12:28.387731" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:28.387620" elapsed="0.000954"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:28.388754" elapsed="0.000086"/>
</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-19T00:12:28.395757" elapsed="0.000478"/>
</kw>
<kw name="Open 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-19T00:12:28.396529" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:28.397015" elapsed="0.000235"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:28.391041" elapsed="0.006392"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:28.014931" elapsed="0.382851"/>
</kw>
<msg time="2026-04-19T00:12:28.398232" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:28.013973" elapsed="0.384340"/>
</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-19T00:12:28.013213" elapsed="0.385213"/>
</kw>
<msg time="2026-04-19T00:12:28.398486" 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-19T00:12:28.012478" elapsed="0.386086"/>
</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-19T00:12:28.402471" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:12:28.402943" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:28.403257" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:28.398990" elapsed="0.004415"/>
</kw>
<msg time="2026-04-19T00:12:28.403496" level="INFO">${output} = 1</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-19T00:12:28.011256" elapsed="0.392266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:28.403948" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:28.403701" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:28.404049" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:12:28.404205" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:28.009501" elapsed="0.394730"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:28.404279" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:28.404425" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:28.007327" elapsed="0.397123"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:28.404998" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:28.404610" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:28.005928" elapsed="0.399306">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:30.408884" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:30.408130" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:30.411277" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:30.410592" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:30.413246" 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-19T00:12:30.413484" 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-19T00:12:30.412836" elapsed="0.000710"/>
</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-19T00:12:30.421052" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:30.420339" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:30.420282" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:30.422641" 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-19T00:12:30.422910" 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-19T00:12:30.422193" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:30.424572" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:30.424010" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:30.426389" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:30.425672" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:30.428863" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:30.428943" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:30.428577" 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-19T00:12:30.429196" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:30.430464" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:30.751438" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:30.430137" elapsed="0.321544"/>
</kw>
<msg time="2026-04-19T00:12:30.751832" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:30.429760" elapsed="0.322226"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:30.427783" elapsed="0.324806"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:30.755247" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:30.777879" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:30.778457" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:30.778973" 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-19T00:12:30.754823" elapsed="0.024416"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:30.781557" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:30.784794" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:30.783749" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:30.786091" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:30.785407" elapsed="0.000904"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:30.785286" elapsed="0.001157"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:30.786988" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T00:12:30.786705" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:30.786639" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:30.787350" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:30.793974" elapsed="0.000509"/>
</kw>
<kw name="Open 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-19T00:12:30.794780" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:30.795299" 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-19T00:12:30.789251" elapsed="0.006340"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:30.417931" elapsed="0.377978"/>
</kw>
<msg time="2026-04-19T00:12:30.796365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:30.416422" elapsed="0.380026"/>
</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-19T00:12:30.415156" elapsed="0.381405"/>
</kw>
<msg time="2026-04-19T00:12:30.796618" 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-19T00:12:30.413910" elapsed="0.382772"/>
</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-19T00:12:30.800262" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:12:30.800741" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:30.801172" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:30.797110" elapsed="0.004216"/>
</kw>
<msg time="2026-04-19T00:12:30.801417" level="INFO">${output} = 1</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-19T00:12:30.411842" elapsed="0.389600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:30.801875" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:30.801625" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:30.801961" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:30.802130" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:30.409607" elapsed="0.392549"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:30.802203" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:30.802357" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:30.407264" elapsed="0.395118"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:30.802929" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:30.802537" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:30.406101" elapsed="0.397031">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:32.806746" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:32.805947" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:32.808881" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:32.808342" elapsed="0.000579"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:32.810104" 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-19T00:12:32.810357" 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-19T00:12:32.809854" elapsed="0.000542"/>
</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-19T00:12:32.816216" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:32.815496" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:32.815124" elapsed="0.001291"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:32.818576" 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-19T00:12:32.818932" 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-19T00:12:32.817824" elapsed="0.001303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:32.821275" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:32.820674" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:32.823140" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:32.822400" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:32.825647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:32.825727" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:32.825356" 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-19T00:12:32.825971" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:32.827289" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:33.149801" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:32.826929" elapsed="0.323011"/>
</kw>
<msg time="2026-04-19T00:12:33.150021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:32.826558" elapsed="0.323563"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:32.824546" elapsed="0.325853"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:33.151897" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:33.174632" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:33.175167" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:33.175504" 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-19T00:12:33.151487" elapsed="0.024227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:33.177991" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:33.181244" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:33.180272" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:33.182344" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:33.181815" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:33.181695" elapsed="0.000939"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:33.183437" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:12:33.182956" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:33.182847" elapsed="0.000993"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:33.184171" elapsed="0.000092"/>
</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-19T00:12:33.189424" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:12:33.190053" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:33.190415" 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-19T00:12:33.185890" elapsed="0.004732"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:32.813196" elapsed="0.377651"/>
</kw>
<msg time="2026-04-19T00:12:33.191170" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:32.812203" elapsed="0.379024"/>
</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-19T00:12:32.811402" elapsed="0.379908"/>
</kw>
<msg time="2026-04-19T00:12:33.191352" 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-19T00:12:32.810625" elapsed="0.380774"/>
</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-19T00:12:33.194404" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:12:33.194879" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:33.195189" 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-19T00:12:33.191691" elapsed="0.003645"/>
</kw>
<msg time="2026-04-19T00:12:33.195425" level="INFO">${output} = 1</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-19T00:12:32.809252" elapsed="0.386199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:33.195918" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:33.195635" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:33.196005" elapsed="0.000134"/>
</return>
<msg time="2026-04-19T00:12:33.196268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:32.807319" elapsed="0.388974"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:33.196339" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:33.196482" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:32.805090" elapsed="0.391417"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:33.197068" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:33.196662" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:32.803907" elapsed="0.393346">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:35.200756" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:35.199980" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:35.202869" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:35.202269" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:35.204872" 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-19T00:12:35.205151" 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-19T00:12:35.204456" elapsed="0.000760"/>
</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-19T00:12:35.210674" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:35.210188" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:35.209852" elapsed="0.001041"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:35.212534" 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-19T00:12:35.212792" 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-19T00:12:35.211946" elapsed="0.000953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:35.214851" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:35.214217" elapsed="0.000746"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:35.216673" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:35.215953" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:35.219230" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:35.219308" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:35.218923" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:35.219544" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:35.220816" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:35.536257" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:35.220491" elapsed="0.316007"/>
</kw>
<msg time="2026-04-19T00:12:35.536654" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:35.220127" elapsed="0.316684"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:35.218156" elapsed="0.319236"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:35.539650" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:35.562563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:35.563158" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:35.563498" 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-19T00:12:35.539259" elapsed="0.024451"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:35.566006" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:35.568377" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:35.567698" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:35.569096" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:35.568749" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:35.568668" 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-19T00:12:35.569795" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T00:12:35.569493" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:35.569424" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:35.570163" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:35.579023" 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-19T00:12:35.579593" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:35.579951" elapsed="0.000242"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:35.572001" elapsed="0.008406"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:35.208514" elapsed="0.372129"/>
</kw>
<msg time="2026-04-19T00:12:35.581008" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:35.207764" elapsed="0.373320"/>
</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-19T00:12:35.207014" elapsed="0.374152"/>
</kw>
<msg time="2026-04-19T00:12:35.581207" 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-19T00:12:35.205613" elapsed="0.375639"/>
</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-19T00:12:35.584238" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:35.584720" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:35.585020" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:35.581546" elapsed="0.003643"/>
</kw>
<msg time="2026-04-19T00:12:35.585280" level="INFO">${output} = 1</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-19T00:12:35.203441" elapsed="0.381864"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:35.585753" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:35.585493" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:35.585843" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:12:35.585997" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:35.201313" elapsed="0.384709"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:35.586084" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:35.586227" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:35.199174" elapsed="0.387079"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:35.586795" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:35.586405" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:35.198137" elapsed="0.388839">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:37.590459" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:37.589691" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:37.592587" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:37.591953" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:37.594441" 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-19T00:12:37.594666" 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-19T00:12:37.594110" elapsed="0.000615"/>
</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-19T00:12:37.601529" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:37.601048" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:37.600975" elapsed="0.000733"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:37.603429" 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-19T00:12:37.603682" 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-19T00:12:37.602701" elapsed="0.001084"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:37.605333" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:37.604760" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:37.607242" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:37.606488" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:37.609681" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:37.609758" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:37.609402" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:37.609998" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:37.611357" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:37.929942" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:37.610927" elapsed="0.319310"/>
</kw>
<msg time="2026-04-19T00:12:37.930360" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:37.610566" elapsed="0.319941"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:37.608633" elapsed="0.322279"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:37.932947" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:37.955968" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:37.956610" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:37.956971" 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-19T00:12:37.932425" elapsed="0.024822"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:37.959786" elapsed="0.000701"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:37.961951" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:37.961309" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:37.962695" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:37.962356" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:37.962274" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:37.963426" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T00:12:37.963116" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:37.963045" elapsed="0.000621"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:37.963779" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:37.969940" elapsed="0.000424"/>
</kw>
<kw name="Open 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-19T00:12:37.970577" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:37.970934" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:37.965773" elapsed="0.005390"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:37.599177" elapsed="0.372227"/>
</kw>
<msg time="2026-04-19T00:12:37.971716" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:37.597528" elapsed="0.374255"/>
</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-19T00:12:37.596315" elapsed="0.375551"/>
</kw>
<msg time="2026-04-19T00:12:37.971913" 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-19T00:12:37.595140" elapsed="0.376819"/>
</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-19T00:12:37.975129" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:12:37.975633" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:37.975930" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:37.972367" elapsed="0.003734"/>
</kw>
<msg time="2026-04-19T00:12:37.976193" level="INFO">${output} = 1</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-19T00:12:37.593166" elapsed="0.383053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:37.976644" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:37.976398" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:37.976730" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:37.976882" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:37.590982" elapsed="0.385926"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:37.976955" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:37.977154" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:37.588841" elapsed="0.388339"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:37.977729" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:37.977337" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:37.587769" elapsed="0.390156">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:39.981642" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:39.980743" elapsed="0.001013"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:39.984000" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:39.983282" elapsed="0.000820"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:39.986017" 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-19T00:12:39.986142" 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-19T00:12:39.985679" elapsed="0.000491"/>
</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-19T00:12:39.990315" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:39.989779" elapsed="0.000622"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:39.989717" elapsed="0.000747"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:39.992372" 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-19T00:12:39.992627" 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-19T00:12:39.991479" elapsed="0.001254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:39.994355" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:39.993768" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:39.996217" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:39.995461" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:39.998786" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:39.998868" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:39.998476" 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-19T00:12:39.999127" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:40.000538" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:40.309008" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:40.000200" elapsed="0.308987"/>
</kw>
<msg time="2026-04-19T00:12:40.309269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:39.999803" elapsed="0.309554"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:39.997668" elapsed="0.311966"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:40.311095" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:40.334159" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:40.334649" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:40.334978" 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-19T00:12:40.310697" elapsed="0.024539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:40.337549" elapsed="0.000729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:40.339712" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:40.339091" 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-19T00:12:40.340525" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:40.340191" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:40.340109" elapsed="0.000601"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:40.341305" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:12:40.340914" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:40.340847" elapsed="0.000680"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:40.341637" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:40.347770" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T00:12:40.348380" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:40.348749" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:40.343473" elapsed="0.005486"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:39.988244" elapsed="0.361095"/>
</kw>
<msg time="2026-04-19T00:12:40.349678" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:39.987487" elapsed="0.362258"/>
</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-19T00:12:39.986902" elapsed="0.362940"/>
</kw>
<msg time="2026-04-19T00:12:40.349887" 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-19T00:12:39.986367" elapsed="0.363573"/>
</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-19T00:12:40.353210" 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-19T00:12:40.353687" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:40.353983" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:40.350298" elapsed="0.003852"/>
</kw>
<msg time="2026-04-19T00:12:40.354314" level="INFO">${output} = 1</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-19T00:12:39.984614" elapsed="0.369729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:40.354816" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:40.354555" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:40.354904" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:12:40.355079" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:39.982301" elapsed="0.372805"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:40.355154" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:12:40.355303" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:39.979807" elapsed="0.375521"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:40.355900" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:40.355486" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:39.978697" elapsed="0.377424">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:42.358615" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:42.358088" elapsed="0.000573"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:42.359930" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:42.359547" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:42.361108" 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-19T00:12:42.361252" 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-19T00:12:42.360860" elapsed="0.000429"/>
</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-19T00:12:42.366785" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:42.366096" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:42.365994" elapsed="0.000984"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:42.368713" 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-19T00:12:42.368962" 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-19T00:12:42.368003" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:42.370704" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:42.370066" elapsed="0.000755"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:42.372624" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:42.371862" elapsed="0.000864"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:42.375241" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:42.375320" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:42.374854" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:42.375556" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:42.376864" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:42.697298" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:42.376527" elapsed="0.321102"/>
</kw>
<msg time="2026-04-19T00:12:42.697725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:42.376163" elapsed="0.321673"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:42.373973" elapsed="0.324194"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:42.699702" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:42.722795" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:42.723448" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:42.723822" 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-19T00:12:42.699297" elapsed="0.024785"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:42.726416" elapsed="0.000981"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:42.728878" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:42.728237" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:42.729645" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:42.729302" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:42.729218" 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-19T00:12:42.730392" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T00:12:42.730097" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:42.730002" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:42.730775" elapsed="0.000056"/>
</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-19T00:12:42.738147" elapsed="0.000530"/>
</kw>
<kw name="Open 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-19T00:12:42.738979" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:42.739401" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:42.733111" elapsed="0.006517"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:42.363998" elapsed="0.375865"/>
</kw>
<msg time="2026-04-19T00:12:42.740271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:42.363061" elapsed="0.377275"/>
</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-19T00:12:42.362245" elapsed="0.378177"/>
</kw>
<msg time="2026-04-19T00:12:42.740465" 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-19T00:12:42.361509" elapsed="0.379002"/>
</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-19T00:12:42.743699" 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-19T00:12:42.744205" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:42.744504" 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-19T00:12:42.740823" elapsed="0.003829"/>
</kw>
<msg time="2026-04-19T00:12:42.744745" level="INFO">${output} = 1</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-19T00:12:42.360289" elapsed="0.384482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:42.745236" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:42.744967" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:42.745326" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:12:42.745481" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:42.358950" elapsed="0.386556"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:42.745553" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:42.745696" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:42.357536" elapsed="0.388185"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:42.746436" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:42.745949" elapsed="0.000648">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:42.356770" elapsed="0.389944">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:44.749257" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:44.748598" elapsed="0.000719"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:44.751083" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:44.750538" elapsed="0.000597"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:44.752642" 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-19T00:12:44.752831" 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-19T00:12:44.752342" elapsed="0.000540"/>
</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-19T00:12:44.759071" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:44.758176" elapsed="0.000997"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:44.758105" elapsed="0.001145"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:44.761012" 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-19T00:12:44.761331" 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-19T00:12:44.760466" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:44.763369" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:44.762667" elapsed="0.000872"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:44.765627" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:44.764741" elapsed="0.001009"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:44.768581" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:44.768672" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:44.768239" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:44.768941" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:44.770746" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:45.118579" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:44.770338" elapsed="0.348391"/>
</kw>
<msg time="2026-04-19T00:12:45.118830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:44.769644" elapsed="0.349299"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:44.767249" elapsed="0.352050"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:45.120910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:45.143655" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:45.143981" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:45.144259" 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-19T00:12:45.120517" elapsed="0.023884"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:45.145788" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:45.147863" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:45.147222" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:45.148980" elapsed="0.000167"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:45.148343" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:45.148207" elapsed="0.001254"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:45.150550" elapsed="0.000156"/>
</return>
<status status="PASS" start="2026-04-19T00:12:45.149897" elapsed="0.000958"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:45.149757" elapsed="0.001310"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:45.151318" elapsed="0.000118"/>
</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-19T00:12:45.157220" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:12:45.157779" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:45.158159" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:45.153531" elapsed="0.004850"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:44.756436" elapsed="0.402196"/>
</kw>
<msg time="2026-04-19T00:12:45.158946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:44.755258" elapsed="0.403748"/>
</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-19T00:12:44.754224" elapsed="0.404886"/>
</kw>
<msg time="2026-04-19T00:12:45.159154" 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-19T00:12:44.753218" elapsed="0.405984"/>
</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-19T00:12:45.162336" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:12:45.162821" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:45.163135" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:45.159502" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T00:12:45.163397" level="INFO">${output} = 1</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-19T00:12:44.751585" elapsed="0.411845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:45.163970" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:45.163692" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:45.164077" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:12:45.164241" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:44.749733" elapsed="0.414533"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:45.164313" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:45.164460" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:44.747942" elapsed="0.416543"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:45.165112" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:45.164648" elapsed="0.000543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:44.747283" elapsed="0.418021">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:47.168850" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:47.168049" elapsed="0.000876"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:47.171336" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:47.170546" elapsed="0.000856"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:47.173249" 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-19T00:12:47.173483" 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-19T00:12:47.172887" elapsed="0.000659"/>
</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-19T00:12:47.179779" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:47.179302" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:47.178977" elapsed="0.000942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:47.181382" 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-19T00:12:47.181626" 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-19T00:12:47.180923" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:47.183267" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:47.182692" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:47.185135" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:47.184428" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:47.187522" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:47.187601" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:47.187217" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:47.187835" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:47.189355" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:47.534872" 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 Sun Apr 19 00:11:47 UTC 2026

  System load:  0.07               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:47.189008" elapsed="0.346008"/>
</kw>
<msg time="2026-04-19T00:12:47.535120" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:47.188642" elapsed="0.346571"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:47.186429" elapsed="0.349061"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:47.537006" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:47.559601" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:47.559828" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:47.559976" 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-19T00:12:47.536608" elapsed="0.023488"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:47.561129" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:47.562582" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:47.562139" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:47.563197" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:47.562851" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:47.562791" elapsed="0.000544"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:47.563686" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T00:12:47.563480" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:47.563432" elapsed="0.000413"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:47.563923" 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-19T00:12:47.568666" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:12:47.569241" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:47.569597" 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-19T00:12:47.565283" elapsed="0.004522"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:47.177656" elapsed="0.392531"/>
</kw>
<msg time="2026-04-19T00:12:47.570488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:47.176420" elapsed="0.394126"/>
</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-19T00:12:47.175124" elapsed="0.395505"/>
</kw>
<msg time="2026-04-19T00:12:47.570670" 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-19T00:12:47.173901" elapsed="0.396817"/>
</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-19T00:12:47.573693" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:12:47.574227" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:47.574527" 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-19T00:12:47.571007" elapsed="0.003667"/>
</kw>
<msg time="2026-04-19T00:12:47.574765" level="INFO">${output} = 1</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-19T00:12:47.171903" elapsed="0.402887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:47.575233" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:47.574966" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:47.575320" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:47.575480" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:47.169583" elapsed="0.405922"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:47.575553" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:47.575695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:47.167202" elapsed="0.408518"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:47.576284" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:47.575874" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:47.166132" elapsed="0.410386">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:49.580013" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:49.579269" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:49.581935" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:49.581547" elapsed="0.000427"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:49.583164" 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-19T00:12:49.583446" 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-19T00:12:49.582919" elapsed="0.000578"/>
</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-19T00:12:49.589695" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:49.589129" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:49.588650" elapsed="0.001185"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:49.591348" 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-19T00:12:49.591594" 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-19T00:12:49.590829" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:49.593301" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:49.592695" elapsed="0.000716"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:49.595114" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:49.594400" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:49.597546" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:49.597625" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:49.597261" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:49.597859" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:49.599128" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:50.160362" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:49.598790" elapsed="0.561725"/>
</kw>
<msg time="2026-04-19T00:12:50.160600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:49.598432" elapsed="0.562256"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:49.596472" elapsed="0.564500"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:50.162499" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:50.185333" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:50.185993" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:50.186384" 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-19T00:12:50.162107" elapsed="0.024492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:50.189086" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:50.192493" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:50.191418" elapsed="0.001353"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:50.193551" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:50.193225" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:50.193083" elapsed="0.000607"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:50.194116" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T00:12:50.193836" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:50.193786" elapsed="0.000506"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:50.194373" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:50.201337" 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-19T00:12:50.201955" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:50.202336" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:50.195727" elapsed="0.006817"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:49.586518" elapsed="0.616248"/>
</kw>
<msg time="2026-04-19T00:12:50.203090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:49.585388" elapsed="0.617765"/>
</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-19T00:12:49.584558" elapsed="0.618676"/>
</kw>
<msg time="2026-04-19T00:12:50.203274" 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-19T00:12:49.583732" elapsed="0.619587"/>
</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-19T00:12:50.206439" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:12:50.206921" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:50.207233" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:50.203637" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T00:12:50.207471" level="INFO">${output} = 1</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-19T00:12:49.582322" elapsed="0.625173"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:50.207922" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:50.207675" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:50.208009" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:12:50.208179" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:49.580588" elapsed="0.627616"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:50.208249" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:50.208393" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:49.578407" elapsed="0.630010"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:50.208961" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:50.208569" elapsed="0.000565">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:49.577347" elapsed="0.631926">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:52.212752" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:52.211991" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:52.214926" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:52.214326" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:52.216762" 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-19T00:12:52.216983" 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-19T00:12:52.216440" elapsed="0.000630"/>
</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-19T00:12:52.223985" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:52.223524" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:52.223468" elapsed="0.000743"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:52.225893" 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-19T00:12:52.226157" 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-19T00:12:52.225184" elapsed="0.001073"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:52.227810" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:52.227263" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:52.229629" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:52.228892" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:52.232173" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:52.232260" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:52.231836" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:52.232500" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:52.233816" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:52.534606" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:52.233464" elapsed="0.301282"/>
</kw>
<msg time="2026-04-19T00:12:52.534826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:52.233074" elapsed="0.301835"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:52.230957" elapsed="0.304251"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:52.536675" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:52.559172" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:52.559410" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:52.559570" 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-19T00:12:52.536289" elapsed="0.023381"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:52.560712" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:52.562256" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:52.561783" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:52.562789" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:52.562535" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:52.562472" elapsed="0.000468"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:52.563325" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T00:12:52.563111" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:52.563057" elapsed="0.000531"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:52.563777" elapsed="0.000104"/>
</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-19T00:12:52.572363" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:12:52.572899" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:52.573347" 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-19T00:12:52.566974" elapsed="0.006622"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:52.221636" elapsed="0.352183"/>
</kw>
<msg time="2026-04-19T00:12:52.574192" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:52.220010" elapsed="0.354241"/>
</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-19T00:12:52.218721" elapsed="0.355613"/>
</kw>
<msg time="2026-04-19T00:12:52.574375" 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-19T00:12:52.217472" elapsed="0.356949"/>
</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-19T00:12:52.577475" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:12:52.577950" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:52.578261" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:52.574714" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T00:12:52.578502" level="INFO">${output} = 1</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-19T00:12:52.215498" elapsed="0.363030"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:52.578950" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:52.578705" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:52.579051" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:12:52.579205" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:52.213305" elapsed="0.365925"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:52.579276" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:12:52.579418" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:52.211180" elapsed="0.368262"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:52.579981" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:52.579595" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:52.210124" elapsed="0.370057">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:54.583691" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:54.582932" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:54.585832" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:54.585184" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:54.587257" 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-19T00:12:54.587401" 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-19T00:12:54.587016" elapsed="0.000423"/>
</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-19T00:12:54.592733" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:54.592103" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:54.592003" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:54.595303" 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-19T00:12:54.595650" 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-19T00:12:54.594338" elapsed="0.001453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:54.597891" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:54.597252" elapsed="0.000749"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:54.599833" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:54.599136" elapsed="0.000796"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:54.602260" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:54.602353" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:54.601955" 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-19T00:12:54.602591" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:54.604066" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:54.911006" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:54.603711" elapsed="0.307454"/>
</kw>
<msg time="2026-04-19T00:12:54.911245" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:54.603344" elapsed="0.307985"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:54.601155" elapsed="0.310454"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:54.913092" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:54.935628" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:54.936207" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:54.936574" 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-19T00:12:54.912695" elapsed="0.024109"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:54.939257" elapsed="0.001018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:54.942755" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:54.941685" elapsed="0.001425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:54.944080" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:54.943503" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:54.943367" elapsed="0.001036"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:54.945414" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T00:12:54.944758" elapsed="0.000960"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:54.944640" elapsed="0.001232"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:54.946099" elapsed="0.000094"/>
</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-19T00:12:54.951139" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:12:54.951684" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:54.952056" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:54.947730" elapsed="0.004537"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:54.590147" elapsed="0.362345"/>
</kw>
<msg time="2026-04-19T00:12:54.952805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:54.589176" elapsed="0.363687"/>
</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-19T00:12:54.588405" elapsed="0.364539"/>
</kw>
<msg time="2026-04-19T00:12:54.952985" 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-19T00:12:54.587661" elapsed="0.365427"/>
</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-19T00:12:54.956180" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:12:54.956657" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:54.956947" elapsed="0.000205"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:54.953484" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T00:12:54.957296" level="INFO">${output} = 1</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-19T00:12:54.586405" elapsed="0.370916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:54.957779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:54.957500" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:54.957867" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:54.958019" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:54.584244" elapsed="0.373816"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:54.958108" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:12:54.958257" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:54.582128" elapsed="0.376153"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:54.958838" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:54.958439" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:54.580997" elapsed="0.378024">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:56.962787" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:56.961955" elapsed="0.000907"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:56.964997" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:56.964359" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:56.966903" 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-19T00:12:56.967072" 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-19T00:12:56.966655" elapsed="0.000456"/>
</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-19T00:12:56.972669" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:56.971993" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:56.971907" elapsed="0.000963"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:56.975327" 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-19T00:12:56.975689" 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-19T00:12:56.974326" elapsed="0.001507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:56.978140" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:56.977263" elapsed="0.001042"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:56.980239" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:56.979476" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:56.982709" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:56.982787" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:56.982416" 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-19T00:12:56.983021" elapsed="0.000597"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:56.984576" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:57.302321" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:56.984244" elapsed="0.318217"/>
</kw>
<msg time="2026-04-19T00:12:57.302543" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:56.983847" elapsed="0.318782"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:56.981578" elapsed="0.321321"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:57.304368" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:57.327066" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:57.327573" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:57.327907" 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-19T00:12:57.303970" elapsed="0.024191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:57.330412" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:57.333564" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:57.332582" elapsed="0.001240"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:57.334806" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:57.334312" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:57.334183" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:57.335881" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:12:57.335442" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:57.335337" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:57.336435" elapsed="0.000081"/>
</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-19T00:12:57.342431" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:12:57.342977" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:57.343351" 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-19T00:12:57.339077" elapsed="0.004481"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:56.969946" elapsed="0.373839"/>
</kw>
<msg time="2026-04-19T00:12:57.344216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:56.968889" elapsed="0.375388"/>
</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-19T00:12:56.968114" elapsed="0.376248"/>
</kw>
<msg time="2026-04-19T00:12:57.344404" 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-19T00:12:56.967342" elapsed="0.377109"/>
</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-19T00:12:57.347587" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:12:57.348106" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:57.348408" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:57.344746" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T00:12:57.348715" level="INFO">${output} = 1</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-19T00:12:56.965599" elapsed="0.383145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:57.349283" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:57.348933" elapsed="0.000397"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:57.349374" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:12:57.349530" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:56.963369" elapsed="0.386187"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:57.349605" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:12:57.349782" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:56.961018" elapsed="0.388789"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:57.350377" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:57.349963" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:56.959923" elapsed="0.390639">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:12:59.354239" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:12:59.353418" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:12:59.356417" level="INFO">${member_ip} = 10.30.171.206</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-19T00:12:59.355778" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:59.358375" 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-19T00:12:59.358603" 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-19T00:12:59.357993" elapsed="0.000669"/>
</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-19T00:12:59.362973" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:12:59.362164" elapsed="0.000912"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:59.362096" elapsed="0.001041"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:59.364779" 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-19T00:12:59.365062" 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-19T00:12:59.364295" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:59.366856" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:59.366288" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:12:59.368682" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:59.367963" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:12:59.371259" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:12:59.371337" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:12:59.370943" 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-19T00:12:59.371574" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:12:59.372873" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:12:59.687977" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:12:59.372535" elapsed="0.315707"/>
</kw>
<msg time="2026-04-19T00:12:59.688325" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:59.372149" elapsed="0.316264"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:12:59.370182" elapsed="0.318512"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:12:59.690252" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:12:59.713125" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:12:59.713692" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:12:59.714078" 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-19T00:12:59.689827" elapsed="0.024496"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:59.716597" elapsed="0.000982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:59.720134" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:59.719002" elapsed="0.001373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:59.721313" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:12:59.720763" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:59.720634" elapsed="0.001006"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:12:59.722688" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-19T00:12:59.722176" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T00:12:59.721927" elapsed="0.001017"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:12:59.723081" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:59.729995" elapsed="0.000755"/>
</kw>
<kw name="Open 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-19T00:12:59.730973" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:59.731361" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:59.725010" elapsed="0.006564"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:12:59.360720" elapsed="0.371096"/>
</kw>
<msg time="2026-04-19T00:12:59.732150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:12:59.360011" elapsed="0.372201"/>
</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-19T00:12:59.359469" elapsed="0.372827"/>
</kw>
<msg time="2026-04-19T00:12:59.732337" 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-19T00:12:59.358888" elapsed="0.373497"/>
</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-19T00:12:59.735480" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:12:59.735969" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:12:59.736284" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:12:59.732682" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T00:12:59.736525" level="INFO">${output} = 1</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-19T00:12:59.356966" elapsed="0.379585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:12:59.737016" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:12:59.736762" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:12:59.737122" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:12:59.737275" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:12:59.354801" elapsed="0.382501"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:12:59.737349" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:12:59.737497" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:12:59.352537" elapsed="0.384985"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:12:59.738223" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:12:59.737772" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:12:59.351427" elapsed="0.386982">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:01.742123" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:01.741440" elapsed="0.000730"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:01.743451" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:01.743062" elapsed="0.000426"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:01.744624" 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-19T00:13:01.744770" 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-19T00:13:01.744385" elapsed="0.000422"/>
</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-19T00:13:01.750820" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:01.749974" elapsed="0.000986"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:01.749465" elapsed="0.001625"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:01.753703" 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-19T00:13:01.754050" 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-19T00:13:01.752847" elapsed="0.001321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:01.755694" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:01.755146" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:01.757615" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:01.756807" elapsed="0.000907"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:01.759977" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:01.760071" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:01.759684" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:01.760317" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:01.761739" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:02.083948" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:12:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:01.761395" elapsed="0.322701"/>
</kw>
<msg time="2026-04-19T00:13:02.084177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:01.760890" elapsed="0.323369"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:01.758907" elapsed="0.325604"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:02.086001" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:02.109202" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:02.109725" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:02.110104" 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-19T00:13:02.085608" elapsed="0.024712"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:02.112574" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:02.114992" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:02.114393" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:02.115719" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:02.115403" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:02.115325" elapsed="0.000578"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:02.116402" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:13:02.116122" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:02.116054" elapsed="0.000569"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:02.116732" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:02.123273" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T00:13:02.124050" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:02.124548" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:02.118566" elapsed="0.006275"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:01.747510" elapsed="0.377667"/>
</kw>
<msg time="2026-04-19T00:13:02.125719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:01.746564" elapsed="0.379236"/>
</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-19T00:13:01.745783" elapsed="0.380098"/>
</kw>
<msg time="2026-04-19T00:13:02.125922" 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-19T00:13:01.745048" elapsed="0.380919"/>
</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-19T00:13:02.128985" 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-19T00:13:02.129478" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:02.129800" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:02.126275" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T00:13:02.130055" level="INFO">${output} = 1</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-19T00:13:01.743788" elapsed="0.386294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:02.130508" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:02.130261" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:02.130595" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:02.130746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:01.742460" elapsed="0.388312"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:02.130824" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:13:02.130969" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:01.740578" elapsed="0.390417"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:02.131585" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:02.131197" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:01.739493" elapsed="0.392276">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:04.135316" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:04.134548" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:04.137934" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:04.137243" elapsed="0.000753"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:04.139792" 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-19T00:13:04.140020" 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-19T00:13:04.139467" elapsed="0.000646"/>
</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-19T00:13:04.147483" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:04.146983" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:04.146707" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:04.149106" 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-19T00:13:04.149385" 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-19T00:13:04.148638" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:04.151100" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:04.150520" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:04.152924" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:04.152209" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:04.155417" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:04.155497" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:04.155129" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:04.155734" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:04.157013" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:04.473681" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:04.156681" elapsed="0.317147"/>
</kw>
<msg time="2026-04-19T00:13:04.473913" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:04.156314" elapsed="0.317689"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:04.154322" elapsed="0.319976"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:04.475788" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:04.498634" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:04.499178" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:04.499513" 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-19T00:13:04.475389" elapsed="0.024335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:04.501967" elapsed="0.000588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:04.503941" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:04.503341" elapsed="0.000777"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:04.504745" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:04.504342" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:04.504262" elapsed="0.000676"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:04.505463" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:13:04.505164" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:04.505097" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:04.505795" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:04.514734" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T00:13:04.515312" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:04.515672" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:04.507846" elapsed="0.008034"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:04.144537" elapsed="0.371700"/>
</kw>
<msg time="2026-04-19T00:13:04.516546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:04.142924" elapsed="0.373681"/>
</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-19T00:13:04.141695" elapsed="0.374990"/>
</kw>
<msg time="2026-04-19T00:13:04.516725" 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-19T00:13:04.140469" elapsed="0.376301"/>
</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-19T00:13:04.519770" 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-19T00:13:04.520263" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:04.520553" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:04.517087" elapsed="0.003610"/>
</kw>
<msg time="2026-04-19T00:13:04.520786" level="INFO">${output} = 1</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-19T00:13:04.138521" elapsed="0.382289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:04.521333" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:04.520999" elapsed="0.000378"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:04.521421" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:13:04.521572" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:04.136081" elapsed="0.385515"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:04.521642" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:04.521782" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:04.133709" elapsed="0.388097"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:04.522380" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:04.521960" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:04.132589" elapsed="0.389973">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:06.526105" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:06.525341" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:06.528210" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:06.527575" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:06.530026" 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-19T00:13:06.530406" 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-19T00:13:06.529698" elapsed="0.000769"/>
</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-19T00:13:06.538422" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:06.537912" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:06.537792" elapsed="0.000768"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:06.540302" 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-19T00:13:06.540550" 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-19T00:13:06.539597" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:06.542209" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:06.541652" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:06.544005" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:06.543305" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:06.546455" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:06.546534" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:06.546175" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:06.546771" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:06.548187" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:06.860924" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:06.547704" elapsed="0.313402"/>
</kw>
<msg time="2026-04-19T00:13:06.861190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:06.547343" elapsed="0.313934"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:06.545390" elapsed="0.316165"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:06.863098" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:06.886350" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:06.886892" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:06.887297" 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-19T00:13:06.862665" elapsed="0.024863"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:06.890267" elapsed="0.000684"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:06.892500" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:06.891792" 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-19T00:13:06.893268" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:06.892877" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:06.892794" elapsed="0.000663"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:06.893967" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T00:13:06.893668" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:06.893597" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:06.894374" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:06.901187" elapsed="0.000472"/>
</kw>
<kw name="Open 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-19T00:13:06.902022" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:06.902409" 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-19T00:13:06.896343" elapsed="0.006283"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:06.534751" elapsed="0.368104"/>
</kw>
<msg time="2026-04-19T00:13:06.903193" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:06.533271" elapsed="0.369985"/>
</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-19T00:13:06.532006" elapsed="0.371334"/>
</kw>
<msg time="2026-04-19T00:13:06.903383" 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-19T00:13:06.530824" elapsed="0.372607"/>
</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-19T00:13:06.906524" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:13:06.907008" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:06.907325" 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-19T00:13:06.903726" elapsed="0.003754"/>
</kw>
<msg time="2026-04-19T00:13:06.907574" level="INFO">${output} = 1</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-19T00:13:06.528746" elapsed="0.378854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:06.908152" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:06.907867" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:06.908239" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:13:06.908392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:06.526629" elapsed="0.381788"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:06.908464" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:06.908611" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:06.524458" elapsed="0.384177"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:06.909256" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:06.908792" elapsed="0.000540">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:06.523400" elapsed="0.386042">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:08.913066" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:08.912218" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:08.914427" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:08.913992" elapsed="0.000473"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:08.915624" 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-19T00:13:08.915782" 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-19T00:13:08.915395" elapsed="0.000428"/>
</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-19T00:13:08.921398" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:08.920844" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:08.920764" elapsed="0.000883"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:08.923380" 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-19T00:13:08.923635" 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-19T00:13:08.922660" elapsed="0.001087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:08.925355" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:08.924779" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:08.927276" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:08.926505" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:08.929786" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:08.929865" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:08.929492" 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-19T00:13:08.930117" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:08.931423" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:09.236566" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:08.931090" elapsed="0.305601"/>
</kw>
<msg time="2026-04-19T00:13:09.236765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:08.930709" elapsed="0.306136"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:08.928701" elapsed="0.308413"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:09.238510" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:09.261093" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:09.261592" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:09.261936" 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-19T00:13:09.238149" elapsed="0.024038"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:09.264372" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:09.267454" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:09.266509" elapsed="0.001170"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:09.268536" elapsed="0.000106"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:09.268016" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:09.267896" elapsed="0.000980"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:09.269348" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T00:13:09.269149" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:09.269101" elapsed="0.000406"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:09.269586" 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-19T00:13:09.274322" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:13:09.274867" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:09.275235" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:09.270954" elapsed="0.004487"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:08.918780" elapsed="0.356880"/>
</kw>
<msg time="2026-04-19T00:13:09.276015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:08.917680" elapsed="0.358408"/>
</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-19T00:13:08.916876" elapsed="0.359295"/>
</kw>
<msg time="2026-04-19T00:13:09.276212" 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-19T00:13:08.916089" elapsed="0.360169"/>
</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-19T00:13:09.279328" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:13:09.279805" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:09.280122" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:09.276548" elapsed="0.003723"/>
</kw>
<msg time="2026-04-19T00:13:09.280361" level="INFO">${output} = 1</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-19T00:13:08.914778" elapsed="0.365608"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:09.280836" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:09.280567" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:09.280924" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:13:09.281091" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:08.913407" elapsed="0.367710"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:09.281165" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:09.281311" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:08.911333" elapsed="0.370002"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:09.281879" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:09.281491" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:08.910273" elapsed="0.371886">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:11.286146" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:11.285330" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:11.288449" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:11.287716" elapsed="0.000796"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:11.289940" 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-19T00:13:11.290113" 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-19T00:13:11.289698" elapsed="0.000454"/>
</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-19T00:13:11.295115" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:11.294521" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:11.294464" elapsed="0.000798"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:11.297041" 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-19T00:13:11.297294" 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-19T00:13:11.296304" elapsed="0.001098"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:11.298983" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:11.298423" elapsed="0.000743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:11.300978" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:11.300255" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:11.303587" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:11.303667" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:11.303292" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:11.303907" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:11.305243" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:11.617400" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:11.304898" elapsed="0.312659"/>
</kw>
<msg time="2026-04-19T00:13:11.617644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:11.304528" elapsed="0.313209"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:11.302338" elapsed="0.315685"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:11.619541" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:11.642426" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:11.642663" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:11.642815" 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-19T00:13:11.619145" elapsed="0.023766"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:11.643921" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:11.645452" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:11.644985" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:11.645970" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:11.645724" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:11.645665" elapsed="0.000459"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:11.646477" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T00:13:11.646275" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:11.646226" elapsed="0.000439"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:11.646768" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:11.651537" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:11.652106" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:11.652473" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:11.648126" elapsed="0.004556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:11.293000" elapsed="0.359902"/>
</kw>
<msg time="2026-04-19T00:13:11.653371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:11.291959" elapsed="0.361470"/>
</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-19T00:13:11.291179" elapsed="0.362334"/>
</kw>
<msg time="2026-04-19T00:13:11.653554" 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-19T00:13:11.290406" elapsed="0.363195"/>
</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-19T00:13:11.656666" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:13:11.657197" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:11.657496" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:11.653960" elapsed="0.003685"/>
</kw>
<msg time="2026-04-19T00:13:11.657737" level="INFO">${output} = 1</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-19T00:13:11.289010" elapsed="0.368752"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:11.658208" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:11.657941" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:11.658296" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:11.658447" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:11.286724" elapsed="0.371748"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:11.658519" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:11.658666" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:11.284426" elapsed="0.374265"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:11.659255" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:11.658846" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:11.283224" elapsed="0.376247">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:13.663404" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:13.662505" elapsed="0.000971"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:13.665679" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:13.664949" elapsed="0.000808"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:13.667994" 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-19T00:13:13.668270" 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-19T00:13:13.667577" elapsed="0.000735"/>
</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-19T00:13:13.672941" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:13.672184" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:13.672121" elapsed="0.000995"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:13.674642" 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-19T00:13:13.674909" 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-19T00:13:13.674163" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:13.676660" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:13.676096" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:13.678577" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:13.677839" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:13.681174" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:13.681256" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:13.680785" elapsed="0.000496"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:13.681495" elapsed="0.001558"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:13.684065" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:14.007805" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:13.683666" elapsed="0.324298"/>
</kw>
<msg time="2026-04-19T00:13:14.008073" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:13.683292" elapsed="0.324875"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:13.679984" elapsed="0.328470"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:14.009942" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:14.032524" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:14.033068" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:14.033413" 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-19T00:13:14.009544" elapsed="0.024078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:14.035875" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:14.039014" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:14.038018" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:14.040187" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:14.039633" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:14.039510" elapsed="0.000968"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:14.041277" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:13:14.040798" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:14.040693" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:14.041808" elapsed="0.000084"/>
</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-19T00:13:14.050197" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:14.050775" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:14.051153" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:14.044889" elapsed="0.006479"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:13.670583" elapsed="0.381009"/>
</kw>
<msg time="2026-04-19T00:13:14.051936" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:13.669726" elapsed="0.382271"/>
</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-19T00:13:13.669008" elapsed="0.383174"/>
</kw>
<msg time="2026-04-19T00:13:14.052225" 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-19T00:13:13.668479" elapsed="0.383793"/>
</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-19T00:13:14.055226" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:13:14.055712" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:14.056006" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:14.052564" elapsed="0.003607"/>
</kw>
<msg time="2026-04-19T00:13:14.056323" level="INFO">${output} = 1</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-19T00:13:13.666399" elapsed="0.389950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:14.056773" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:14.056526" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:14.056859" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:14.057011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:13.663976" elapsed="0.393141"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:14.057167" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:13:14.057317" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:13.661561" elapsed="0.395781"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:14.057893" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:14.057499" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:13.660413" elapsed="0.397682">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:16.061650" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:16.060870" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:16.063825" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:16.063162" elapsed="0.000725"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:16.065418" 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-19T00:13:16.065560" 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-19T00:13:16.065192" elapsed="0.000405"/>
</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-19T00:13:16.071220" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:16.070553" elapsed="0.000795"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:16.070169" elapsed="0.001262"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:16.073472" 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-19T00:13:16.073809" 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-19T00:13:16.072818" elapsed="0.001130"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:16.076147" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:16.075366" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:16.078095" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:16.077392" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:16.080445" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:16.080522" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:16.080163" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:16.080754" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:16.082137" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:16.405423" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:16.081793" elapsed="0.323944"/>
</kw>
<msg time="2026-04-19T00:13:16.405851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:16.081434" elapsed="0.324539"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:16.079398" elapsed="0.326952"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:16.408125" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:16.431412" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:16.431964" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:16.432315" 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-19T00:13:16.407659" elapsed="0.024853"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:16.434318" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:16.437399" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:16.436497" elapsed="0.001053"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:16.438157" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:16.437785" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:16.437699" elapsed="0.000654"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:16.438861" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T00:13:16.438567" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:16.438495" elapsed="0.000640"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:16.439296" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:16.445995" elapsed="0.000547"/>
</kw>
<kw name="Open 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-19T00:13:16.446863" elapsed="0.000409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:16.447576" 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-19T00:13:16.441200" elapsed="0.006670"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:16.068302" elapsed="0.379895"/>
</kw>
<msg time="2026-04-19T00:13:16.448645" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:16.067332" elapsed="0.381404"/>
</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-19T00:13:16.066560" elapsed="0.382289"/>
</kw>
<msg time="2026-04-19T00:13:16.448901" 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-19T00:13:16.065820" elapsed="0.383142"/>
</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-19T00:13:16.452842" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T00:13:16.453395" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:16.453714" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:16.449410" elapsed="0.004461"/>
</kw>
<msg time="2026-04-19T00:13:16.453967" level="INFO">${output} = 1</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-19T00:13:16.064398" elapsed="0.389596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:16.454497" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:16.454234" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:16.454594" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:13:16.454780" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:16.062211" elapsed="0.392602"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:16.454991" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:13:16.455245" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:16.060058" elapsed="0.395215"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:16.456228" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:16.455594" elapsed="0.000738">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:16.058922" elapsed="0.397563">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:18.460522" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:18.459618" elapsed="0.000975"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:18.462880" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:18.462215" elapsed="0.000745"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:18.464983" 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-19T00:13:18.465342" 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-19T00:13:18.464639" elapsed="0.000777"/>
</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-19T00:13:18.473180" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:18.472678" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:18.472372" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:18.474862" 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-19T00:13:18.475131" 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-19T00:13:18.474381" elapsed="0.000850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:18.476849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:18.476258" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:18.478767" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:18.477978" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:18.481525" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:18.481627" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:18.481219" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:18.481874" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:18.483427" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:18.801588" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:18.482908" elapsed="0.318840"/>
</kw>
<msg time="2026-04-19T00:13:18.801835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:18.482473" elapsed="0.319466"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:18.480175" elapsed="0.322104"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:18.803841" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:18.826878" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:18.827462" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:18.827856" 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-19T00:13:18.803433" elapsed="0.024734"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:18.831073" elapsed="0.001276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:18.835596" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:18.834266" elapsed="0.001517"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:18.836552" elapsed="0.000060"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:18.836113" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:18.835977" elapsed="0.000838"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:18.837566" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T00:13:18.837208" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:18.836997" elapsed="0.000835"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:18.837958" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:18.846456" 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-19T00:13:18.847151" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:18.847522" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:18.839943" elapsed="0.007785"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:18.470263" elapsed="0.377683"/>
</kw>
<msg time="2026-04-19T00:13:18.848266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:18.468572" elapsed="0.379756"/>
</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-19T00:13:18.467178" elapsed="0.381229"/>
</kw>
<msg time="2026-04-19T00:13:18.848447" 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-19T00:13:18.465779" elapsed="0.382713"/>
</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-19T00:13:18.851537" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:13:18.852009" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:18.852364" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:18.848785" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T00:13:18.852601" level="INFO">${output} = 1</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-19T00:13:18.463561" elapsed="0.389064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:18.853071" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:18.852806" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:18.853159" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:18.853310" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:18.461171" elapsed="0.392164"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:18.853381" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:13:18.853522" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:18.458584" elapsed="0.394962"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:18.854108" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:18.853700" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:18.457413" elapsed="0.396880">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:20.857790" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:20.857011" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:20.860245" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:20.859514" elapsed="0.000791"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:20.862190" 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-19T00:13:20.862449" 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-19T00:13:20.861779" elapsed="0.000730"/>
</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-19T00:13:20.870941" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:20.870227" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:20.870056" elapsed="0.001042"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:20.872755" 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-19T00:13:20.873002" 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-19T00:13:20.872098" elapsed="0.001021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:20.874697" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:20.874105" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:20.876545" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:20.875793" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:20.878933" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:20.879010" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:20.878648" 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-19T00:13:20.879261" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:20.880645" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:21.185874" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:20.880318" elapsed="0.305673"/>
</kw>
<msg time="2026-04-19T00:13:21.186098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:20.879814" elapsed="0.306369"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:20.877859" elapsed="0.308568"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:21.187852" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:21.210665" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:21.211203" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:21.211540" 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-19T00:13:21.187482" elapsed="0.024268"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:21.213973" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:21.217213" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:21.216254" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:21.218444" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:21.217792" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:21.217670" elapsed="0.001076"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:21.219565" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:13:21.219107" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:21.218961" elapsed="0.000957"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:21.220256" elapsed="0.000087"/>
</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-19T00:13:21.226428" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:13:21.226972" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:21.227347" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:21.222969" elapsed="0.004587"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:20.867088" elapsed="0.360692"/>
</kw>
<msg time="2026-04-19T00:13:21.228154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:20.865538" elapsed="0.362674"/>
</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-19T00:13:20.864304" elapsed="0.363992"/>
</kw>
<msg time="2026-04-19T00:13:21.228338" 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-19T00:13:20.862862" elapsed="0.365521"/>
</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-19T00:13:21.231416" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:13:21.231891" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:21.232285" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:21.228675" elapsed="0.003759"/>
</kw>
<msg time="2026-04-19T00:13:21.232527" level="INFO">${output} = 1</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-19T00:13:20.860834" elapsed="0.371718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:21.232980" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:21.232734" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:21.233083" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:21.233235" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:20.858521" elapsed="0.374739"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:21.233308" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:13:21.233452" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:20.856193" elapsed="0.377283"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:21.234040" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:21.233632" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:20.855147" elapsed="0.379118">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:23.237762" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:23.236967" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:23.239867" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:23.239267" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:23.241745" 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-19T00:13:23.242204" 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-19T00:13:23.241376" elapsed="0.000891"/>
</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-19T00:13:23.247645" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:23.246990" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:23.246913" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:23.250162" 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-19T00:13:23.250501" 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-19T00:13:23.249235" elapsed="0.001401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:23.252827" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:23.251975" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:23.255160" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:23.254372" elapsed="0.000885"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:23.257523" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:23.257616" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:23.257241" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:23.257854" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:23.259132" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:23.572082" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:23.258790" elapsed="0.313420"/>
</kw>
<msg time="2026-04-19T00:13:23.572289" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:23.258427" elapsed="0.313945"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:23.256462" elapsed="0.316175"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:23.574127" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:23.597082" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:23.597612" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:23.597948" 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-19T00:13:23.573735" elapsed="0.024466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:23.600414" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:23.603535" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:23.602577" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:23.604634" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:23.604142" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:23.603989" elapsed="0.000929"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:23.605767" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T00:13:23.605274" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:23.605166" elapsed="0.001113"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:23.606485" elapsed="0.000089"/>
</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-19T00:13:23.613288" elapsed="0.000508"/>
</kw>
<kw name="Open 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-19T00:13:23.614196" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:23.614685" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:23.608426" elapsed="0.006469"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:23.245065" elapsed="0.370077"/>
</kw>
<msg time="2026-04-19T00:13:23.615452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:23.244119" elapsed="0.371391"/>
</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-19T00:13:23.243357" elapsed="0.372236"/>
</kw>
<msg time="2026-04-19T00:13:23.615635" 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-19T00:13:23.242611" elapsed="0.373069"/>
</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-19T00:13:23.618652" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T00:13:23.619137" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:23.619431" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:23.615969" elapsed="0.003611"/>
</kw>
<msg time="2026-04-19T00:13:23.619676" level="INFO">${output} = 1</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-19T00:13:23.240438" elapsed="0.379263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:23.620142" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:23.619880" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:23.620228" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:23.620382" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:23.238318" elapsed="0.382089"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:23.620453" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:23.620597" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:23.236153" elapsed="0.384468"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:23.621279" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:23.620775" elapsed="0.000579">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:23.235109" elapsed="0.386370">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:25.624999" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:25.624237" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:25.627137" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:25.626500" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:25.629008" 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-19T00:13:25.629270" 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-19T00:13:25.628635" elapsed="0.000696"/>
</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-19T00:13:25.634766" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:25.634132" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:25.634050" elapsed="0.001028"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:25.637436" 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-19T00:13:25.637789" 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-19T00:13:25.636464" elapsed="0.001467"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:25.640098" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:25.639319" elapsed="0.000934"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:25.642441" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:25.641723" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:25.644821" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:25.644897" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:25.644540" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:25.645278" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:25.646535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:25.966248" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:25.646209" elapsed="0.320199"/>
</kw>
<msg time="2026-04-19T00:13:25.966499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:25.645833" elapsed="0.320761"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:25.643760" elapsed="0.323138"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:25.968461" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:25.991535" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:25.992128" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:25.992476" 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-19T00:13:25.968022" elapsed="0.024670"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:25.995106" elapsed="0.000997"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:25.998533" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:25.997455" elapsed="0.001323"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:25.999764" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:25.999242" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:25.999106" elapsed="0.001037"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:26.001080" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T00:13:26.000479" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:26.000368" elapsed="0.001095"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:26.001644" elapsed="0.000070"/>
</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-19T00:13:26.006558" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T00:13:26.007153" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:26.007523" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:26.003116" elapsed="0.004627"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:25.632156" elapsed="0.375829"/>
</kw>
<msg time="2026-04-19T00:13:26.008442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:25.631186" elapsed="0.377320"/>
</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-19T00:13:25.630414" elapsed="0.378179"/>
</kw>
<msg time="2026-04-19T00:13:26.008636" 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-19T00:13:25.629676" elapsed="0.379009"/>
</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-19T00:13:26.011833" 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-19T00:13:26.012360" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:26.012666" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:26.009067" elapsed="0.003778"/>
</kw>
<msg time="2026-04-19T00:13:26.012959" level="INFO">${output} = 1</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-19T00:13:25.627685" elapsed="0.385301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:26.013470" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:26.013202" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:26.013563" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:26.013721" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:25.625553" elapsed="0.388196"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:26.013797" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:26.013958" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:25.623365" elapsed="0.390619"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:26.014627" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:26.014225" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:25.622322" elapsed="0.392504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:28.018445" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:28.017653" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:28.020727" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:28.019943" elapsed="0.000845"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:28.021917" 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-19T00:13:28.022079" 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-19T00:13:28.021695" elapsed="0.000423"/>
</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-19T00:13:28.027687" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:28.026710" elapsed="0.001088"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:28.026634" elapsed="0.001246"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:28.029894" 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-19T00:13:28.030251" 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-19T00:13:28.029282" elapsed="0.001106"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:28.032683" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:28.031855" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:28.035449" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:28.034314" elapsed="0.001271"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:28.038828" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:28.038962" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:28.038383" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:28.039487" elapsed="0.000503"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:28.041205" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:28.355218" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:28.040847" elapsed="0.314531"/>
</kw>
<msg time="2026-04-19T00:13:28.355465" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:28.040363" elapsed="0.315197"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:28.037292" elapsed="0.318552"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:28.357367" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:28.380131" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:28.380657" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:28.380990" 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-19T00:13:28.356950" elapsed="0.024298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:28.383474" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:28.386710" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:28.385685" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:28.387849" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:28.387342" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:28.387216" elapsed="0.000965"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:28.388924" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:13:28.388557" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:28.388448" elapsed="0.000717"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:28.389278" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:28.395928" elapsed="0.000522"/>
</kw>
<kw name="Open 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-19T00:13:28.396744" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:28.397259" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:28.391241" elapsed="0.006309"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:28.024784" elapsed="0.373074"/>
</kw>
<msg time="2026-04-19T00:13:28.398388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:28.023817" elapsed="0.374651"/>
</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-19T00:13:28.023076" elapsed="0.375504"/>
</kw>
<msg time="2026-04-19T00:13:28.398638" 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-19T00:13:28.022340" elapsed="0.376361"/>
</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-19T00:13:28.402478" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:13:28.402953" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:28.403265" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:28.399252" elapsed="0.004161"/>
</kw>
<msg time="2026-04-19T00:13:28.403504" level="INFO">${output} = 1</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-19T00:13:28.021123" elapsed="0.382406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:28.403955" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:28.403708" elapsed="0.000437"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:28.404202" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:13:28.404362" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:28.018978" elapsed="0.385410"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:28.404435" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:13:28.404577" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:28.016811" elapsed="0.387791"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:28.405235" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:28.404758" elapsed="0.000551">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:28.015693" elapsed="0.389726">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:30.408925" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:30.408199" elapsed="0.000797"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:30.411056" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:30.410420" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:30.413020" 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-19T00:13:30.413293" 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-19T00:13:30.412578" elapsed="0.000775"/>
</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-19T00:13:30.419141" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:30.418480" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:30.418101" elapsed="0.001234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:30.421328" 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-19T00:13:30.421667" 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-19T00:13:30.420697" elapsed="0.001110"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:30.423965" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:30.423165" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:30.425806" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:30.425119" elapsed="0.000784"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:30.428176" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:30.428253" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:30.427879" 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-19T00:13:30.428485" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:30.429987" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:30.742222" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:30.429656" elapsed="0.312736"/>
</kw>
<msg time="2026-04-19T00:13:30.742484" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:30.429288" elapsed="0.313299"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:30.427101" elapsed="0.315785"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:30.744446" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:30.767296" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:30.767801" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:30.768168" 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-19T00:13:30.744044" elapsed="0.024334"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:30.770543" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:30.773621" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:30.772644" elapsed="0.001201"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:30.774701" elapsed="0.000061"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:30.774221" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:30.774100" elapsed="0.000884"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:30.775813" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T00:13:30.775328" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:30.775224" elapsed="0.000819"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:30.776126" 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-19T00:13:30.780820" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T00:13:30.781491" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:30.781853" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:30.777504" elapsed="0.004575"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:30.416252" elapsed="0.366048"/>
</kw>
<msg time="2026-04-19T00:13:30.782604" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:30.415267" elapsed="0.367401"/>
</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-19T00:13:30.414507" elapsed="0.368242"/>
</kw>
<msg time="2026-04-19T00:13:30.782789" 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-19T00:13:30.413709" elapsed="0.369125"/>
</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-19T00:13:30.785981" 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-19T00:13:30.786488" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:30.786793" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:30.783155" elapsed="0.003793"/>
</kw>
<msg time="2026-04-19T00:13:30.787149" level="INFO">${output} = 1</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-19T00:13:30.411597" elapsed="0.375579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:30.787683" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:30.787393" elapsed="0.000339"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:30.787805" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T00:13:30.788015" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:30.409481" elapsed="0.378677"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:30.788210" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:13:30.788359" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:30.407316" elapsed="0.381068"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:30.788939" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:30.788541" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:30.406263" elapsed="0.382876">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:32.792584" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:32.791811" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:32.794691" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:32.794081" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:32.796372" 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-19T00:13:32.796515" 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-19T00:13:32.796146" elapsed="0.000406"/>
</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-19T00:13:32.802282" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:32.801603" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:32.801237" elapsed="0.001240"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:32.804539" 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-19T00:13:32.804882" 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-19T00:13:32.803893" elapsed="0.001129"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:32.807233" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:32.806405" elapsed="0.000984"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:32.809324" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:32.808607" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:32.811734" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:32.811812" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:32.811454" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:32.812206" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:32.813487" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:33.130535" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:32.813156" elapsed="0.317617"/>
</kw>
<msg time="2026-04-19T00:13:33.130857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:32.812778" elapsed="0.318178"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:32.810646" elapsed="0.320616"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:33.132781" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:33.155575" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:33.156186" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:33.156548" 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-19T00:13:33.132387" elapsed="0.024390"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:33.159307" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:33.162761" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:33.161663" elapsed="0.001431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:33.164005" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:33.163474" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:33.163340" elapsed="0.000875"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:33.164696" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T00:13:33.164417" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:33.164349" elapsed="0.000574"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:33.165069" elapsed="0.000057"/>
</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-19T00:13:33.174447" elapsed="0.000528"/>
</kw>
<kw name="Open 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-19T00:13:33.175355" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:33.175859" elapsed="0.000131"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:33.167076" elapsed="0.009041"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:32.799358" elapsed="0.376979"/>
</kw>
<msg time="2026-04-19T00:13:33.176637" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:32.798272" elapsed="0.378429"/>
</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-19T00:13:32.797506" elapsed="0.379275"/>
</kw>
<msg time="2026-04-19T00:13:33.176821" 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-19T00:13:32.796774" elapsed="0.380091"/>
</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-19T00:13:33.179944" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:33.180442" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:33.180739" 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-19T00:13:33.177179" elapsed="0.003707"/>
</kw>
<msg time="2026-04-19T00:13:33.180976" level="INFO">${output} = 1</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-19T00:13:32.795308" elapsed="0.385693"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:33.181467" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:33.181217" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:33.181556" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:13:33.181710" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:32.793139" elapsed="0.388595"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:33.181779" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:33.181919" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:32.790942" elapsed="0.391001"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:33.182587" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:33.182189" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:32.789890" elapsed="0.392887">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:35.186318" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:35.185509" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:35.187919" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:35.187518" elapsed="0.000440"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:35.189160" 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-19T00:13:35.189311" 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-19T00:13:35.188906" elapsed="0.000443"/>
</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-19T00:13:35.194913" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:35.194214" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:35.194132" elapsed="0.001003"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:35.197559" 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-19T00:13:35.197914" 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-19T00:13:35.196562" elapsed="0.001572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:35.199941" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:35.199400" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:35.201733" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:35.201014" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:35.204193" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:35.204270" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:35.203885" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:35.204503" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:35.205768" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:35.549978" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:35.205441" elapsed="0.344693"/>
</kw>
<msg time="2026-04-19T00:13:35.550243" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:35.205081" elapsed="0.345250"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:35.203139" elapsed="0.347469"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:35.552151" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:35.575091" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:35.575630" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:35.576069" 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-19T00:13:35.551730" elapsed="0.024577"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:35.578756" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:35.582117" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:35.581095" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:35.583312" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:35.582748" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:35.582607" elapsed="0.001008"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:35.584456" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:13:35.583963" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:35.583851" elapsed="0.000983"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:35.585221" elapsed="0.000094"/>
</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-19T00:13:35.593412" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:13:35.593976" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:35.594397" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:35.588288" elapsed="0.006326"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:35.192194" elapsed="0.402651"/>
</kw>
<msg time="2026-04-19T00:13:35.595190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:35.191181" elapsed="0.404074"/>
</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-19T00:13:35.190370" elapsed="0.404970"/>
</kw>
<msg time="2026-04-19T00:13:35.595383" 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-19T00:13:35.189582" elapsed="0.405850"/>
</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-19T00:13:35.598644" 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-19T00:13:35.599158" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:35.599461" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:35.595728" elapsed="0.003883"/>
</kw>
<msg time="2026-04-19T00:13:35.599707" level="INFO">${output} = 1</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-19T00:13:35.188300" elapsed="0.411433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:35.600202" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:35.599923" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:35.600293" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:13:35.600450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:35.186842" elapsed="0.413634"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:35.600524" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:35.600673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:35.184680" elapsed="0.416018"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:35.601431" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:35.600969" elapsed="0.000542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:35.183612" elapsed="0.418017">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:37.605313" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:37.604540" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:37.607132" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:37.606723" elapsed="0.000448"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:37.608299" 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-19T00:13:37.608443" 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-19T00:13:37.608077" elapsed="0.000404"/>
</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-19T00:13:37.613865" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:37.613171" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:37.613092" elapsed="0.000988"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:37.616352" 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-19T00:13:37.616697" 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-19T00:13:37.615424" elapsed="0.001412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:37.618820" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:37.618269" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:37.620671" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:37.619900" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:37.623296" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:37.623380" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:37.622739" elapsed="0.000665"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:37.623616" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:37.624883" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:37.942661" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:37.624556" elapsed="0.318253"/>
</kw>
<msg time="2026-04-19T00:13:37.942893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:37.624192" elapsed="0.318794"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:37.621969" elapsed="0.321309"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:37.944752" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:37.967840" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:37.968387" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:37.968718" 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-19T00:13:37.944364" elapsed="0.024560"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:37.971168" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:37.974322" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:37.973314" elapsed="0.001235"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:37.975546" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:37.974895" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:37.974770" elapsed="0.001071"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:37.976656" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:13:37.976207" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:37.976095" elapsed="0.000920"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:37.977350" elapsed="0.000084"/>
</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-19T00:13:37.984272" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T00:13:37.985116" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:37.985641" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:37.979501" elapsed="0.006434"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:37.611252" elapsed="0.375016"/>
</kw>
<msg time="2026-04-19T00:13:37.986698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:37.610290" elapsed="0.376489"/>
</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-19T00:13:37.609482" elapsed="0.377411"/>
</kw>
<msg time="2026-04-19T00:13:37.986949" 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-19T00:13:37.608704" elapsed="0.378310"/>
</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-19T00:13:37.990453" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:13:37.990926" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:37.991238" 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-19T00:13:37.987519" elapsed="0.003866"/>
</kw>
<msg time="2026-04-19T00:13:37.991477" level="INFO">${output} = 1</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-19T00:13:37.607480" elapsed="0.384022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:37.991924" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:37.991679" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:37.992011" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:13:37.992182" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:37.606141" elapsed="0.386067"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:37.992256" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:13:37.992400" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:37.603648" elapsed="0.388776"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:37.992973" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:37.992581" elapsed="0.000521">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:37.602517" elapsed="0.390699">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:39.996748" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:39.995979" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:39.999005" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:39.998353" elapsed="0.000751"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:40.000274" 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-19T00:13:40.000529" 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-19T00:13:40.000053" elapsed="0.000515"/>
</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-19T00:13:40.006072" elapsed="0.000099"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:40.005421" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:40.005344" elapsed="0.000979"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:40.008300" 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-19T00:13:40.008543" 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-19T00:13:40.007590" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:40.010254" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:40.009623" elapsed="0.000743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:40.012089" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:40.011337" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:40.014646" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:40.014725" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:40.014361" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:40.014961" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:40.016245" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:40.331354" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:40.015902" elapsed="0.315599"/>
</kw>
<msg time="2026-04-19T00:13:40.331585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:40.015540" elapsed="0.316133"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:40.013396" elapsed="0.318551"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:40.333493" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:40.356226" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:40.356772" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:40.357158" 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-19T00:13:40.333094" elapsed="0.024278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:40.359620" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:40.362786" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:40.361785" elapsed="0.001226"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:40.363991" elapsed="0.000096"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:40.363495" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:40.363372" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:40.365158" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T00:13:40.364669" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:40.364522" elapsed="0.000888"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:40.365489" 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-19T00:13:40.370302" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:13:40.370978" elapsed="0.000261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:40.371435" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:40.366810" elapsed="0.004833"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:40.003479" elapsed="0.368387"/>
</kw>
<msg time="2026-04-19T00:13:40.372194" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:40.002398" elapsed="0.369855"/>
</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-19T00:13:40.001540" elapsed="0.370801"/>
</kw>
<msg time="2026-04-19T00:13:40.372383" 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-19T00:13:40.000793" elapsed="0.371636"/>
</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-19T00:13:40.375508" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:13:40.375985" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:40.376300" 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-19T00:13:40.372757" elapsed="0.003690"/>
</kw>
<msg time="2026-04-19T00:13:40.376540" level="INFO">${output} = 1</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-19T00:13:39.999453" elapsed="0.377112"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:40.377002" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:40.376754" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:40.377106" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:40.377261" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:39.997307" elapsed="0.379979"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:40.377333" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:40.377479" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:39.995164" elapsed="0.382340"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:40.378081" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:40.377659" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:39.994088" elapsed="0.384185">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:42.381654" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:42.380904" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:42.383393" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:42.382953" elapsed="0.000481"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:42.384713" 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-19T00:13:42.384875" 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-19T00:13:42.384456" elapsed="0.000461"/>
</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-19T00:13:42.391047" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:42.390261" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:42.390176" elapsed="0.001090"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:42.392775" 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-19T00:13:42.393047" 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-19T00:13:42.392304" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:42.394808" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:42.394248" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:42.396676" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:42.395941" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:42.399262" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:42.399342" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:42.398939" 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-19T00:13:42.399587" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:42.400918" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:42.708256" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:42.400587" elapsed="0.307809"/>
</kw>
<msg time="2026-04-19T00:13:42.708476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:42.400210" elapsed="0.308357"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:42.398138" elapsed="0.310716"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:42.710355" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:42.732970" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:42.733503" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:42.733838" 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-19T00:13:42.709945" elapsed="0.024145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:42.736351" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:42.739494" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:42.738500" elapsed="0.001221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:42.740626" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:42.740102" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:42.739944" elapsed="0.000980"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:42.741743" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:13:42.741289" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:42.741179" elapsed="0.001075"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:42.742440" elapsed="0.000086"/>
</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-19T00:13:42.748758" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:13:42.749317" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:42.749674" 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-19T00:13:42.745383" elapsed="0.004499"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:42.388063" elapsed="0.362099"/>
</kw>
<msg time="2026-04-19T00:13:42.750550" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:42.386974" elapsed="0.363635"/>
</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-19T00:13:42.386165" elapsed="0.364526"/>
</kw>
<msg time="2026-04-19T00:13:42.750732" 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-19T00:13:42.385234" elapsed="0.365544"/>
</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-19T00:13:42.753821" 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-19T00:13:42.754400" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:42.754696" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:42.751118" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:13:42.754935" level="INFO">${output} = 1</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-19T00:13:42.383758" elapsed="0.371202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:42.755403" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:42.755155" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:42.755489" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:42.755639" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:42.382329" elapsed="0.373335"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:42.755710" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:42.755855" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:42.380109" elapsed="0.375771"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:42.756461" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:42.756051" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:42.379092" elapsed="0.377554">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:44.760145" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:44.759338" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:44.762259" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:44.761620" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:44.764218" 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-19T00:13:44.764445" 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-19T00:13:44.763851" elapsed="0.000632"/>
</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-19T00:13:44.768958" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:44.768291" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:44.767938" elapsed="0.001190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:44.770645" 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-19T00:13:44.770899" 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-19T00:13:44.770173" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:44.772670" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:44.772095" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:44.774985" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:44.774202" elapsed="0.000930"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:44.777607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:44.777692" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:44.777316" 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-19T00:13:44.777943" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:44.779259" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:45.091767" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:44.778910" elapsed="0.312996"/>
</kw>
<msg time="2026-04-19T00:13:45.091988" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:44.778537" elapsed="0.313554"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:44.776470" elapsed="0.315917"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:45.093959" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:45.116703" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:45.117252" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:45.117580" 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-19T00:13:45.093543" elapsed="0.024273"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:45.120077" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:45.123009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:45.122383" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:45.123726" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:45.123402" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:45.123324" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:45.124415" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T00:13:45.124131" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:45.124062" elapsed="0.000582"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:45.124754" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:45.131320" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:13:45.131883" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:45.132287" 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-19T00:13:45.126855" elapsed="0.005683"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:44.766490" elapsed="0.366302"/>
</kw>
<msg time="2026-04-19T00:13:45.133254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:44.765759" elapsed="0.367559"/>
</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-19T00:13:44.765200" elapsed="0.368202"/>
</kw>
<msg time="2026-04-19T00:13:45.133450" 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-19T00:13:44.764655" elapsed="0.368843"/>
</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-19T00:13:45.136657" 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-19T00:13:45.137204" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:45.137510" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:45.133952" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T00:13:45.137783" level="INFO">${output} = 1</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-19T00:13:44.762797" elapsed="0.375016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:45.138299" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:45.138018" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:45.138389" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:13:45.138545" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:44.760671" elapsed="0.377899"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:45.138617" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:45.138764" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:44.758498" elapsed="0.380290"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:45.139378" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:45.138946" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:44.757460" elapsed="0.382103">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:47.143056" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:47.142298" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:47.145174" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:47.144542" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:47.146892" 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-19T00:13:47.147059" 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-19T00:13:47.146674" elapsed="0.000425"/>
</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-19T00:13:47.151602" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:47.151126" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:47.150824" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:47.153239" 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-19T00:13:47.153484" 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-19T00:13:47.152781" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:47.155158" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:47.154575" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:47.156983" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:47.156285" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:47.159454" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:47.159530" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:47.159172" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:47.159763" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:47.161133" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:47.472309" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:47.160780" elapsed="0.311618"/>
</kw>
<msg time="2026-04-19T00:13:47.472461" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:47.160418" elapsed="0.312116"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:47.158322" elapsed="0.314438"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:47.474152" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:47.497270" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:47.497825" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:47.498216" 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-19T00:13:47.473794" elapsed="0.024640"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:47.500679" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:47.503848" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:47.502857" elapsed="0.001349"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:47.505067" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:47.504552" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:47.504432" elapsed="0.000930"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:47.506237" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:13:47.505754" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:47.505645" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:47.506659" 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-19T00:13:47.513047" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:47.513625" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:47.513978" 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-19T00:13:47.507989" elapsed="0.006214"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:47.149495" elapsed="0.364931"/>
</kw>
<msg time="2026-04-19T00:13:47.514740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:47.148790" elapsed="0.366008"/>
</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-19T00:13:47.148091" elapsed="0.366786"/>
</kw>
<msg time="2026-04-19T00:13:47.514917" 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-19T00:13:47.147320" elapsed="0.367642"/>
</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-19T00:13:47.518168" 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-19T00:13:47.518643" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:47.518936" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:47.515281" elapsed="0.003833"/>
</kw>
<msg time="2026-04-19T00:13:47.519258" level="INFO">${output} = 1</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-19T00:13:47.145819" elapsed="0.373465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:47.519714" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:47.519467" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:47.519799" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:47.519946" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:47.143582" elapsed="0.376388"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:47.520015" elapsed="0.000105"/>
</return>
<msg time="2026-04-19T00:13:47.520240" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:47.141463" elapsed="0.378801"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:47.520814" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:47.520419" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:47.140431" elapsed="0.380566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:49.524544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:49.523778" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:49.526678" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:49.526011" elapsed="0.000734"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:49.528763" 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-19T00:13:49.528995" 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-19T00:13:49.528426" elapsed="0.000671"/>
</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-19T00:13:49.533842" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:49.533377" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:49.533321" elapsed="0.000661"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:49.535697" 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-19T00:13:49.535944" 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-19T00:13:49.535001" elapsed="0.001060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:49.537597" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:49.537052" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:49.539499" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:49.538776" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:49.541886" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:49.541962" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:49.541605" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:49.542324" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:49.543636" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:49.849229" 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 Sun Apr 19 00:12:49 UTC 2026

  System load:  0.02               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:49.543268" elapsed="0.306178"/>
</kw>
<msg time="2026-04-19T00:13:49.849530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:49.542884" elapsed="0.306734"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:49.540823" elapsed="0.309062"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:49.851372" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:49.873968" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:49.874501" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:49.874830" 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-19T00:13:49.850963" elapsed="0.024108"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:49.877416" elapsed="0.001076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:49.880771" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:49.879895" elapsed="0.001028"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:49.881526" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:49.881187" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:49.881101" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:49.882247" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T00:13:49.881927" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:49.881859" elapsed="0.000621"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:49.882597" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:49.889324" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:13:49.889871" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:49.890250" 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-19T00:13:49.884629" elapsed="0.005830"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:49.531956" elapsed="0.358731"/>
</kw>
<msg time="2026-04-19T00:13:49.891000" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:49.531265" elapsed="0.359869"/>
</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-19T00:13:49.530695" elapsed="0.360525"/>
</kw>
<msg time="2026-04-19T00:13:49.891261" 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-19T00:13:49.529458" elapsed="0.361849"/>
</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-19T00:13:49.894300" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:13:49.894775" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:49.895528" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:49.891605" elapsed="0.004091"/>
</kw>
<msg time="2026-04-19T00:13:49.895821" level="INFO">${output} = 1</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-19T00:13:49.527341" elapsed="0.368508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:49.896300" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:49.896047" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:49.896388" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:49.896539" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:49.525100" elapsed="0.371464"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:49.896611" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:49.896754" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:49.522926" elapsed="0.373853"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:49.897402" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:49.896988" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:49.521808" elapsed="0.375783">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:51.901452" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:51.900691" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:51.903548" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:51.902907" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:51.905513" 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-19T00:13:51.905742" 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-19T00:13:51.905003" elapsed="0.000797"/>
</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-19T00:13:51.910705" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:51.910233" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:51.910176" elapsed="0.000667"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:51.912578" 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-19T00:13:51.912826" 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-19T00:13:51.911850" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:51.914496" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:51.913922" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:51.916342" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:51.915623" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:51.918759" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:51.918837" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:51.918472" 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-19T00:13:51.919150" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:51.920442" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:52.470123" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:51.920114" elapsed="0.550148"/>
</kw>
<msg time="2026-04-19T00:13:52.470343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:51.919733" elapsed="0.550694"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:51.917658" elapsed="0.553048"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:52.472222" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:52.484883" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:52.485427" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:52.485792" 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-19T00:13:52.471807" elapsed="0.014197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:52.488229" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:52.490767" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:52.490167" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:52.491481" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:52.491157" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:52.491079" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:52.492242" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:13:52.491865" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:52.491799" elapsed="0.000665"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:52.492572" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:52.498975" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:13:52.499541" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:52.499899" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:52.494447" elapsed="0.005746"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:51.908808" elapsed="0.591605"/>
</kw>
<msg time="2026-04-19T00:13:52.500713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:51.908105" elapsed="0.592666"/>
</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-19T00:13:51.907370" elapsed="0.593482"/>
</kw>
<msg time="2026-04-19T00:13:52.500894" 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-19T00:13:51.906192" elapsed="0.594748"/>
</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-19T00:13:52.504046" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:13:52.504525" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:52.504820" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:52.501250" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T00:13:52.505078" level="INFO">${output} = 1</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-19T00:13:51.904109" elapsed="0.600996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:52.505558" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:52.505284" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:52.505647" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:13:52.505807" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:51.901978" elapsed="0.603854"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:52.505879" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:13:52.506025" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:51.899858" elapsed="0.606208"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:52.506614" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:52.506223" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:51.898758" elapsed="0.608060">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:54.510337" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:54.509575" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:54.512610" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:54.511956" elapsed="0.000715"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:54.514441" 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-19T00:13:54.514666" 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-19T00:13:54.514118" elapsed="0.000608"/>
</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-19T00:13:54.519706" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:54.519246" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:54.519190" elapsed="0.000656"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:54.521535" 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-19T00:13:54.521784" 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-19T00:13:54.520842" elapsed="0.001041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:54.523405" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:54.522849" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:54.525300" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:54.524508" elapsed="0.000890"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:54.527627" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:54.527705" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:54.527348" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:54.527938" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:54.529325" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:54.848867" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:54.528883" elapsed="0.320125"/>
</kw>
<msg time="2026-04-19T00:13:54.849127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:54.528521" elapsed="0.320734"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:54.526573" elapsed="0.323021"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:54.851075" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:54.873927" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:54.874489" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:54.874842" 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-19T00:13:54.850691" elapsed="0.024412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:54.877490" elapsed="0.000934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:54.880771" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:54.879744" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:54.882106" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:54.881430" elapsed="0.000858"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:54.881299" elapsed="0.001121"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:54.883401" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T00:13:54.882759" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:54.882647" elapsed="0.001132"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:54.883969" elapsed="0.000120"/>
</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-19T00:13:54.889832" 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-19T00:13:54.890430" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:54.890804" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:54.886378" elapsed="0.004634"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:54.517856" elapsed="0.373444"/>
</kw>
<msg time="2026-04-19T00:13:54.891609" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:54.517170" elapsed="0.374498"/>
</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-19T00:13:54.516306" elapsed="0.375445"/>
</kw>
<msg time="2026-04-19T00:13:54.891793" 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-19T00:13:54.515106" elapsed="0.376732"/>
</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-19T00:13:54.894812" elapsed="0.000422"/>
</kw>
<kw name="Open 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-19T00:13:54.895400" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:54.895696" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:54.892148" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T00:13:54.895942" level="INFO">${output} = 1</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-19T00:13:54.513181" elapsed="0.382787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:54.896422" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:54.896169" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:54.896511" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:54.896665" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:54.511006" elapsed="0.385684"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:54.896738" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:13:54.896884" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:54.508739" elapsed="0.388170"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:54.897483" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:54.897082" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:54.507658" elapsed="0.390006">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:56.901662" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:56.900810" elapsed="0.000927"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:56.903813" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:56.903198" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:56.905725" 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-19T00:13:56.906164" 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-19T00:13:56.905364" elapsed="0.000863"/>
</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-19T00:13:56.911312" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:56.910508" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:56.910449" elapsed="0.001005"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:56.912949" 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-19T00:13:56.913243" 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-19T00:13:56.912504" elapsed="0.000840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:56.914859" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:56.914321" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:56.916697" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:56.915970" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:56.919153" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:56.919246" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:56.918837" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:56.919489" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:56.920784" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:57.227021" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:56.920457" elapsed="0.306690"/>
</kw>
<msg time="2026-04-19T00:13:57.227221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:56.920094" elapsed="0.307213"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:56.918000" elapsed="0.309558"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:57.229044" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:57.251883" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:57.252461" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:57.252786" 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-19T00:13:57.228653" elapsed="0.024340"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:57.255201" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:57.258323" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:57.257357" elapsed="0.001190"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:57.259414" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:57.258892" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:57.258769" elapsed="0.000936"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:57.260566" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:13:57.260024" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:57.259920" elapsed="0.000983"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:57.260994" elapsed="0.000108"/>
</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-19T00:13:57.265846" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T00:13:57.266469" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:57.266830" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:57.262371" 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-19T00:13:56.909129" elapsed="0.358152"/>
</kw>
<msg time="2026-04-19T00:13:57.267582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:56.908400" elapsed="0.359238"/>
</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-19T00:13:56.907824" elapsed="0.359897"/>
</kw>
<msg time="2026-04-19T00:13:57.267763" 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-19T00:13:56.906586" elapsed="0.361222"/>
</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-19T00:13:57.270838" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:13:57.271334" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:57.271631" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:57.268140" elapsed="0.003640"/>
</kw>
<msg time="2026-04-19T00:13:57.271870" level="INFO">${output} = 1</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-19T00:13:56.904413" elapsed="0.367482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:57.272351" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:57.272090" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:57.272437" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:57.272590" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:56.902230" elapsed="0.370384"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:57.272661" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:13:57.272804" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:56.899919" elapsed="0.372909"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:57.273502" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:57.272986" elapsed="0.000598">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:56.898637" elapsed="0.375064">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:13:59.277535" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:13:59.276616" elapsed="0.000997"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:13:59.279074" level="INFO">${member_ip} = 10.30.171.206</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-19T00:13:59.278654" elapsed="0.000461"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:59.280279" 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-19T00:13:59.280425" 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-19T00:13:59.280002" elapsed="0.000459"/>
</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-19T00:13:59.286315" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:13:59.285731" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:59.285329" elapsed="0.001199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:59.288073" 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-19T00:13:59.288333" 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-19T00:13:59.287578" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:59.290135" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:59.289498" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:13:59.292003" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:13:59.291275" elapsed="0.000849"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:13:59.294589" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:13:59.294675" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:13:59.294295" 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-19T00:13:59.294927" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:13:59.296227" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:13:59.599523" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:13:59.295879" elapsed="0.303779"/>
</kw>
<msg time="2026-04-19T00:13:59.599737" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:59.295518" elapsed="0.304304"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:13:59.293424" elapsed="0.306693"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:13:59.601585" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:13:59.624272" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:13:59.624780" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:13:59.625157" 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-19T00:13:59.601195" elapsed="0.024171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:59.627712" elapsed="0.000987"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:59.631181" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:59.629936" elapsed="0.001575"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:59.632523" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:13:59.631975" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:59.631819" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:13:59.633596" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T00:13:59.633156" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-19T00:13:59.633019" elapsed="0.000924"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:13:59.634254" elapsed="0.000085"/>
</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-19T00:13:59.640145" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T00:13:59.640701" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:59.641079" 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-19T00:13:59.636150" elapsed="0.005141"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:13:59.283264" elapsed="0.358249"/>
</kw>
<msg time="2026-04-19T00:13:59.641881" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:13:59.282261" elapsed="0.359679"/>
</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-19T00:13:59.281483" elapsed="0.360621"/>
</kw>
<msg time="2026-04-19T00:13:59.642173" 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-19T00:13:59.280685" elapsed="0.361538"/>
</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-19T00:13:59.645220" 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-19T00:13:59.645706" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:13:59.646004" elapsed="0.000193"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:13:59.642519" elapsed="0.003733"/>
</kw>
<msg time="2026-04-19T00:13:59.646345" level="INFO">${output} = 1</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-19T00:13:59.279423" elapsed="0.366948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:13:59.646809" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:13:59.646556" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:13:59.646899" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:13:59.647067" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:13:59.278052" elapsed="0.369042"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:13:59.647141" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:13:59.647313" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:13:59.275667" elapsed="0.371674"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:13:59.647903" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:13:59.647501" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:13:59.274569" elapsed="0.373539">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:01.651956" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:01.651180" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:01.654219" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:01.653514" elapsed="0.000768"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:01.655730" 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-19T00:14:01.655955" 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-19T00:14:01.655500" elapsed="0.000492"/>
</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-19T00:14:01.661746" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:01.661056" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:01.660664" elapsed="0.001286"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:01.663818" 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-19T00:14:01.664092" 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-19T00:14:01.663368" elapsed="0.000822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:01.665690" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:01.665152" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:01.667635" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:01.666905" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:01.670049" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:01.670131" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:01.669736" 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-19T00:14:01.670368" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:01.671668" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:01.965870" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:13:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:01.671343" elapsed="0.294683"/>
</kw>
<msg time="2026-04-19T00:14:01.966129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:01.670955" elapsed="0.295263"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:01.668970" elapsed="0.297551"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:01.968160" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:01.991266" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:01.991829" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:01.992259" 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-19T00:14:01.967707" elapsed="0.024773"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:01.994797" elapsed="0.001019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:01.997387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:01.996724" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:01.998183" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:01.997767" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:01.997685" 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-19T00:14:01.998874" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:14:01.998585" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:01.998517" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:01.999244" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:02.007120" 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-19T00:14:02.007687" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:02.008057" 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-19T00:14:02.001166" elapsed="0.007118"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:01.658786" elapsed="0.349725"/>
</kw>
<msg time="2026-04-19T00:14:02.008828" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:01.657724" elapsed="0.351164"/>
</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-19T00:14:01.656950" elapsed="0.352028"/>
</kw>
<msg time="2026-04-19T00:14:02.009023" 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-19T00:14:01.656236" elapsed="0.352864"/>
</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-19T00:14:02.012186" 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-19T00:14:02.012663" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:02.012954" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:02.009454" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T00:14:02.013221" level="INFO">${output} = 1</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-19T00:14:01.654818" elapsed="0.358428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:02.013671" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:02.013425" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:02.013759" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:14:02.013909" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:01.652566" elapsed="0.361368"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:02.013980" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:02.014211" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:01.650236" elapsed="0.364000"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:02.014782" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:02.014392" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:01.648995" elapsed="0.365990">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:04.018498" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:04.017733" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:04.020641" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:04.020007" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:04.022484" 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-19T00:14:04.022711" 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-19T00:14:04.022162" elapsed="0.000609"/>
</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-19T00:14:04.028598" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:04.027941" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:04.027865" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:04.031129" 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-19T00:14:04.031588" 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-19T00:14:04.030187" elapsed="0.001550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:04.033548" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:04.032930" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:04.035412" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:04.034682" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:04.037905" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:04.037982" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:04.037623" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:04.038231" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:04.039613" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:04.357684" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:04.039250" elapsed="0.318594"/>
</kw>
<msg time="2026-04-19T00:14:04.357929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:04.038857" elapsed="0.319189"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:04.036850" elapsed="0.321484"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:04.359843" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:04.382709" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:04.383250" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:04.383582" 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-19T00:14:04.359453" elapsed="0.024336"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:04.386065" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:04.389295" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:04.388283" elapsed="0.001238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:04.390396" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:04.389865" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:04.389745" elapsed="0.000939"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:04.391474" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:14:04.390998" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:04.390893" elapsed="0.000928"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:04.391995" elapsed="0.000167"/>
</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-19T00:14:04.397634" 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-19T00:14:04.398191" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:04.398547" 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-19T00:14:04.394041" elapsed="0.004712"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:04.025985" elapsed="0.372988"/>
</kw>
<msg time="2026-04-19T00:14:04.399298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:04.025021" elapsed="0.374335"/>
</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-19T00:14:04.024276" elapsed="0.375163"/>
</kw>
<msg time="2026-04-19T00:14:04.399480" 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-19T00:14:04.023158" elapsed="0.376367"/>
</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-19T00:14:04.402642" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:14:04.403131" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:04.403427" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:04.399811" elapsed="0.003764"/>
</kw>
<msg time="2026-04-19T00:14:04.403724" level="INFO">${output} = 1</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-19T00:14:04.021215" elapsed="0.382536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:04.404232" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:04.403927" elapsed="0.000355"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:04.404326" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:04.404477" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:04.019023" elapsed="0.385478"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:04.404548" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:04.404692" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:04.016890" elapsed="0.387826"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:04.405343" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:04.404870" elapsed="0.000549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:04.015810" elapsed="0.389720">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:06.409226" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:06.408282" elapsed="0.001013"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:06.411335" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:06.410700" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:06.413212" 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-19T00:14:06.413448" 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-19T00:14:06.412849" elapsed="0.000659"/>
</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-19T00:14:06.418811" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:06.418351" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:06.418294" elapsed="0.000653"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:06.420629" 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-19T00:14:06.420872" 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-19T00:14:06.419941" elapsed="0.001032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:06.422519" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:06.421950" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:06.424430" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:06.423667" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:06.426817" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:06.426897" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:06.426529" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:06.427327" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:06.428645" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:06.756129" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:06.428315" elapsed="0.328068"/>
</kw>
<msg time="2026-04-19T00:14:06.756478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:06.427917" elapsed="0.328650"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:06.425723" elapsed="0.331118"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:06.758355" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:06.781656" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:06.782189" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:06.782518" 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-19T00:14:06.757933" elapsed="0.024789"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:06.784940" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:06.788008" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:06.787088" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:06.789203" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:06.788723" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:06.788604" elapsed="0.000733"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:06.789675" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T00:14:06.789477" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:06.789430" elapsed="0.000404"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:06.789912" 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-19T00:14:06.794741" 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-19T00:14:06.795309" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:06.795660" 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-19T00:14:06.791248" elapsed="0.004618"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:06.416946" elapsed="0.379269"/>
</kw>
<msg time="2026-04-19T00:14:06.796537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:06.416261" elapsed="0.380335"/>
</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-19T00:14:06.415069" elapsed="0.381608"/>
</kw>
<msg time="2026-04-19T00:14:06.796718" 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-19T00:14:06.413857" elapsed="0.382906"/>
</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-19T00:14:06.799747" 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-19T00:14:06.800278" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:06.800585" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:06.797071" elapsed="0.003663"/>
</kw>
<msg time="2026-04-19T00:14:06.800828" level="INFO">${output} = 1</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-19T00:14:06.411902" elapsed="0.388951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:06.801294" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:06.801044" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:06.801381" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:06.801533" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:06.409751" elapsed="0.391807"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:06.801606" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:14:06.801749" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:06.407387" elapsed="0.394386"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:06.802390" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:06.801973" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:06.406309" elapsed="0.396267">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:08.806200" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:08.805430" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:08.808337" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:08.807675" elapsed="0.000723"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:08.810185" 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-19T00:14:08.810415" 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-19T00:14:08.809826" elapsed="0.000648"/>
</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-19T00:14:08.816464" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:08.815805" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:08.815711" elapsed="0.000945"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:08.818945" 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-19T00:14:08.819326" 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-19T00:14:08.818006" elapsed="0.001463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:08.821339" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:08.820748" elapsed="0.000697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:08.823167" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:08.822424" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:08.825650" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:08.825727" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:08.825365" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:08.825960" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:08.827255" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:09.185984" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:08.826900" elapsed="0.359256"/>
</kw>
<msg time="2026-04-19T00:14:09.186239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:08.826539" elapsed="0.359791"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:08.824589" elapsed="0.362024"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:09.188125" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:09.211529" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:09.212256" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:09.212628" 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-19T00:14:09.187717" elapsed="0.025132"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:09.215273" elapsed="0.001097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:09.218248" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:09.217540" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:09.218974" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:09.218633" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:09.218548" elapsed="0.000646"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:09.219686" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T00:14:09.219403" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:09.219331" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:09.220053" elapsed="0.000056"/>
</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-19T00:14:09.226548" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:09.227118" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:09.227485" 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-19T00:14:09.221952" elapsed="0.005741"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:08.813861" elapsed="0.414063"/>
</kw>
<msg time="2026-04-19T00:14:09.228253" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:08.812905" elapsed="0.415419"/>
</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-19T00:14:08.812077" elapsed="0.416349"/>
</kw>
<msg time="2026-04-19T00:14:09.228471" 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-19T00:14:08.810823" elapsed="0.417695"/>
</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-19T00:14:09.231531" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:09.232003" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:09.232313" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:09.228809" elapsed="0.003678"/>
</kw>
<msg time="2026-04-19T00:14:09.232580" level="INFO">${output} = 1</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-19T00:14:08.808882" elapsed="0.423723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:09.233054" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:09.232781" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:09.233144" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:09.233298" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:08.806727" elapsed="0.426596"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:09.233370" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:09.233515" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:08.804545" elapsed="0.428995"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:09.234193" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:09.233697" elapsed="0.000575">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:08.803445" elapsed="0.430949">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:11.237950" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:11.237201" elapsed="0.000819"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:11.240277" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:11.239636" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:11.242128" 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-19T00:14:11.242358" 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-19T00:14:11.241767" elapsed="0.000650"/>
</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-19T00:14:11.248762" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:11.247795" elapsed="0.001079"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:11.247718" elapsed="0.001239"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:11.250944" 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-19T00:14:11.251339" 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-19T00:14:11.250347" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:11.253320" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:11.252699" elapsed="0.000737"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:11.255162" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:11.254448" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:11.257591" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:11.257668" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:11.257301" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:11.257901" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:11.259162" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:11.578931" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:11.258824" elapsed="0.320276"/>
</kw>
<msg time="2026-04-19T00:14:11.579185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:11.258467" elapsed="0.320808"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:11.256463" elapsed="0.323099"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:11.581106" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:11.603854" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:11.604139" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:11.604287" 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-19T00:14:11.580687" elapsed="0.023698"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:11.605419" elapsed="0.000457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:11.606935" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:11.606466" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:11.607548" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:11.607222" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:11.607161" elapsed="0.000524"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:11.608080" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T00:14:11.607859" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:11.607808" elapsed="0.000438"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:11.608327" 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-19T00:14:11.613162" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T00:14:11.613722" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:11.614103" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:11.609662" elapsed="0.004649"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:11.245860" elapsed="0.368672"/>
</kw>
<msg time="2026-04-19T00:14:11.614838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:11.244901" elapsed="0.370002"/>
</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-19T00:14:11.243993" elapsed="0.370993"/>
</kw>
<msg time="2026-04-19T00:14:11.615041" 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-19T00:14:11.242767" elapsed="0.372323"/>
</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-19T00:14:11.618273" 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-19T00:14:11.618748" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:11.619066" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:11.615383" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T00:14:11.619311" level="INFO">${output} = 1</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-19T00:14:11.240822" elapsed="0.378515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:11.619773" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:11.619525" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:11.619873" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:14:11.620045" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:11.238657" elapsed="0.381417"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:11.620122" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:11.620341" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:11.236364" elapsed="0.384003"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:11.620930" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:11.620528" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:11.235250" elapsed="0.385921">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:13.624807" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:13.624060" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:13.626961" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:13.626306" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:13.628314" 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-19T00:14:13.628586" 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-19T00:14:13.628094" elapsed="0.000531"/>
</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-19T00:14:13.634300" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:13.633526" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:13.633153" elapsed="0.001380"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:13.636353" 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-19T00:14:13.636605" 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-19T00:14:13.635892" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:13.638252" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:13.637690" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:13.640158" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:13.639379" elapsed="0.000879"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:13.642545" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:13.642624" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:13.642240" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:13.642859" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:13.644256" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:13.994234" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:13.643787" elapsed="0.350597"/>
</kw>
<msg time="2026-04-19T00:14:13.994468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:13.643428" elapsed="0.351127"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:13.641460" elapsed="0.353566"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:13.996526" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:14.019194" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:14.019738" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:14.020141" 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-19T00:14:13.996128" elapsed="0.024244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:14.023803" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:14.026175" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:14.025511" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:14.026903" elapsed="0.000055"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:14.026561" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:14.026476" elapsed="0.000733"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:14.027706" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T00:14:14.027422" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:14.027352" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:14.028079" elapsed="0.000056"/>
</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-19T00:14:14.033721" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T00:14:14.034375" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:14.034739" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:14.029951" elapsed="0.005021"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:13.631326" elapsed="0.403957"/>
</kw>
<msg time="2026-04-19T00:14:14.035592" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:13.630353" elapsed="0.405300"/>
</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-19T00:14:13.629594" elapsed="0.406142"/>
</kw>
<msg time="2026-04-19T00:14:14.035780" 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-19T00:14:13.628847" elapsed="0.406980"/>
</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-19T00:14:14.038778" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T00:14:14.039403" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:14.039697" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:14.036134" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T00:14:14.039936" level="INFO">${output} = 1</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-19T00:14:13.627504" elapsed="0.412457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:14.040414" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:14.040163" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:14.040501" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:14.040654" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:13.625365" elapsed="0.415315"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:14.040726" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:14.040871" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:13.623189" elapsed="0.417706"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:14.041460" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:14.041065" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:13.622000" elapsed="0.419656">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:16.044221" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:16.043707" elapsed="0.000561"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:16.045590" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:16.045153" elapsed="0.000477"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:16.046828" 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-19T00:14:16.046980" 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-19T00:14:16.046584" elapsed="0.000436"/>
</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-19T00:14:16.052806" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:16.052164" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:16.051730" elapsed="0.001373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:16.055075" 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-19T00:14:16.055403" 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-19T00:14:16.054447" elapsed="0.001087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:16.057713" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:16.056846" elapsed="0.001035"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:16.060409" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:16.059363" elapsed="0.001192"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:16.064148" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:16.064268" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:16.063687" elapsed="0.000622"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:16.064630" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:16.066557" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:16.413072" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:16.066079" elapsed="0.347146"/>
</kw>
<msg time="2026-04-19T00:14:16.413313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:16.065514" elapsed="0.347892"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:16.062309" elapsed="0.351385"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:16.415230" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:16.438217" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:16.438724" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:16.439100" 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-19T00:14:16.414818" elapsed="0.024496"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:16.441554" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:16.443920" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:16.443314" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:16.444791" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:16.444402" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:16.444301" elapsed="0.000686"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:16.445623" elapsed="0.000106"/>
</return>
<status status="PASS" start="2026-04-19T00:14:16.445256" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:16.445176" elapsed="0.000799"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:16.446171" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:16.454759" 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-19T00:14:16.455375" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:16.455795" 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-19T00:14:16.448496" elapsed="0.007518"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:16.049749" elapsed="0.406516"/>
</kw>
<msg time="2026-04-19T00:14:16.456667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:16.048797" elapsed="0.407935"/>
</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-19T00:14:16.048071" elapsed="0.408743"/>
</kw>
<msg time="2026-04-19T00:14:16.456854" 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-19T00:14:16.047290" elapsed="0.409609"/>
</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-19T00:14:16.459977" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:16.460483" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:16.460790" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:16.457233" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T00:14:16.461052" level="INFO">${output} = 1</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-19T00:14:16.045945" elapsed="0.415135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:16.461533" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:16.461274" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:16.461624" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:14:16.461917" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:16.044571" elapsed="0.417375"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:16.461994" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:14:16.462228" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:16.043174" elapsed="0.419080"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:16.462816" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:16.462410" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:16.042424" elapsed="0.420578">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:18.466512" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:18.465695" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:18.468674" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:18.468079" elapsed="0.000633"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:18.469852" 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-19T00:14:18.469997" 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-19T00:14:18.469626" elapsed="0.000427"/>
</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-19T00:14:18.475633" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:18.474972" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:18.474893" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:18.477991" 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-19T00:14:18.478268" 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-19T00:14:18.477220" elapsed="0.001148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:18.479912" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:18.479356" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:18.481844" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:18.481119" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:18.484457" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:18.484539" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:18.484150" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:18.484781" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:18.486252" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:18.827914" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:18.485756" elapsed="0.342352"/>
</kw>
<msg time="2026-04-19T00:14:18.828204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:18.485381" elapsed="0.342937"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:18.483235" elapsed="0.345438"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:18.830213" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:18.852782" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:18.853345" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:18.853677" 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-19T00:14:18.829791" elapsed="0.024092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:18.856133" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:18.859655" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:18.858524" elapsed="0.001381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:18.860868" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:18.860373" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:18.860239" elapsed="0.000847"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:18.861611" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T00:14:18.861308" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:18.861236" elapsed="0.000606"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:18.862073" elapsed="0.000064"/>
</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-19T00:14:18.869006" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T00:14:18.869574" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:18.869933" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:18.864165" elapsed="0.005995"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:18.473025" elapsed="0.397356"/>
</kw>
<msg time="2026-04-19T00:14:18.870685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:18.472063" elapsed="0.398682"/>
</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-19T00:14:18.471140" elapsed="0.399688"/>
</kw>
<msg time="2026-04-19T00:14:18.870870" 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-19T00:14:18.470278" elapsed="0.400638"/>
</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-19T00:14:18.874104" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:14:18.874589" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:18.874887" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:18.871390" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T00:14:18.875205" level="INFO">${output} = 1</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-19T00:14:18.469020" elapsed="0.406212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:18.875666" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:18.875414" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:18.875754" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:14:18.875908" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:18.467085" elapsed="0.408849"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:18.875981" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:18.876145" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:18.464844" elapsed="0.411325"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:18.876755" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:18.876332" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:18.463761" elapsed="0.413190">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:20.880410" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:20.879642" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:20.882710" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:20.882062" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:20.884607" 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-19T00:14:20.884845" 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-19T00:14:20.884249" elapsed="0.000655"/>
</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-19T00:14:20.890050" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:20.889495" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:20.889438" elapsed="0.000784"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:20.892215" 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-19T00:14:20.892469" 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-19T00:14:20.891408" elapsed="0.001162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:20.894205" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:20.893557" elapsed="0.000758"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:20.896069" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:20.895340" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:20.898726" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:20.898805" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:20.898396" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:20.899059" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:20.900436" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:21.218367" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:20.900107" elapsed="0.318408"/>
</kw>
<msg time="2026-04-19T00:14:21.218600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:20.899726" elapsed="0.318964"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:20.897410" elapsed="0.321590"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:21.220498" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:21.243344" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:21.243836" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:21.244220" 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-19T00:14:21.220114" elapsed="0.024318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:21.246712" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:21.249166" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:21.248493" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:21.249886" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:21.249550" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:21.249466" elapsed="0.000694"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:21.250666" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:14:21.250372" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:21.250301" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:21.251071" elapsed="0.000057"/>
</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-19T00:14:21.257330" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:21.257903" elapsed="0.000322"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:21.258428" 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-19T00:14:21.252997" elapsed="0.005659"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:20.888123" elapsed="0.370796"/>
</kw>
<msg time="2026-04-19T00:14:21.259244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:20.887396" elapsed="0.371913"/>
</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-19T00:14:20.886532" elapsed="0.372861"/>
</kw>
<msg time="2026-04-19T00:14:21.259434" 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-19T00:14:20.885291" elapsed="0.374189"/>
</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-19T00:14:21.262528" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:14:21.263125" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:21.263426" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:21.259780" elapsed="0.003795"/>
</kw>
<msg time="2026-04-19T00:14:21.263737" level="INFO">${output} = 1</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-19T00:14:20.883281" elapsed="0.380483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:21.264229" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:21.263958" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:21.264319" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:14:21.264475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:20.881116" elapsed="0.383384"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:21.264548" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:21.264696" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:20.878750" elapsed="0.385971"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:21.265329" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:21.264879" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:20.877677" elapsed="0.387840">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:23.269135" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:23.268306" elapsed="0.000900"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:23.270673" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:23.270292" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:23.271823" 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-19T00:14:23.271966" 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-19T00:14:23.271604" elapsed="0.000399"/>
</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-19T00:14:23.277621" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:23.276936" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:23.276857" elapsed="0.000965"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:23.279638" 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-19T00:14:23.279887" 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-19T00:14:23.278830" elapsed="0.001156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:23.281549" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:23.280974" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:23.283472" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:23.282624" elapsed="0.000947"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:23.285971" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:23.286064" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:23.285677" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:23.286303" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:23.287601" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:23.633063" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:23.287271" elapsed="0.346052"/>
</kw>
<msg time="2026-04-19T00:14:23.633409" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:23.286890" elapsed="0.346606"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:23.284888" elapsed="0.348882"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:23.635280" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:23.658227" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:23.658857" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:23.659241" 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-19T00:14:23.634874" elapsed="0.024582"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:23.661984" elapsed="0.001072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:23.665379" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:23.664339" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:23.666138" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:23.665870" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:23.665809" elapsed="0.000466"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:23.666628" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T00:14:23.666423" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:23.666373" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:23.666880" 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-19T00:14:23.671654" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:23.672291" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:23.672699" 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-19T00:14:23.668306" elapsed="0.004602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:23.274880" elapsed="0.398277"/>
</kw>
<msg time="2026-04-19T00:14:23.673478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:23.273883" elapsed="0.399657"/>
</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-19T00:14:23.273117" elapsed="0.400506"/>
</kw>
<msg time="2026-04-19T00:14:23.673663" 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-19T00:14:23.272248" elapsed="0.401461"/>
</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-19T00:14:23.676814" elapsed="0.000433"/>
</kw>
<kw name="Open 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-19T00:14:23.677413" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:23.677705" 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-19T00:14:23.674001" elapsed="0.003851"/>
</kw>
<msg time="2026-04-19T00:14:23.677941" level="INFO">${output} = 1</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-19T00:14:23.271013" elapsed="0.406954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:23.678406" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:23.678159" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:23.678493" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:23.678645" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:23.269656" elapsed="0.409014"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:23.678715" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:23.678859" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:23.267460" elapsed="0.411423"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:23.679515" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:23.679116" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:23.266319" elapsed="0.413384">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:25.683311" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:25.682399" elapsed="0.000983"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:25.684825" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:25.684444" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:25.686000" 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-19T00:14:25.686167" 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-19T00:14:25.685773" elapsed="0.000432"/>
</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-19T00:14:25.691896" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:25.690926" elapsed="0.001072"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:25.690793" elapsed="0.001281"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:25.693581" 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-19T00:14:25.693824" 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-19T00:14:25.693135" elapsed="0.000791"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:25.695494" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:25.694937" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:25.697316" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:25.696595" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:25.699795" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:25.699874" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:25.699509" 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-19T00:14:25.700126" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:25.701395" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:26.008279" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:25.701069" elapsed="0.307367"/>
</kw>
<msg time="2026-04-19T00:14:26.008519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:25.700694" elapsed="0.307912"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:25.698690" elapsed="0.310196"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:26.010373" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:26.033234" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:26.033725" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:26.034096" 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-19T00:14:26.009975" elapsed="0.024337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:26.036508" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:26.039625" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:26.038614" elapsed="0.001237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:26.040733" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:26.040237" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:26.040110" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:26.041819" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:14:26.041378" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:26.041272" elapsed="0.001039"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:26.042598" elapsed="0.000111"/>
</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-19T00:14:26.048288" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:14:26.048844" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:26.049278" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:26.044808" elapsed="0.004679"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:25.688928" elapsed="0.360780"/>
</kw>
<msg time="2026-04-19T00:14:26.050044" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:25.687969" elapsed="0.362140"/>
</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-19T00:14:25.687219" elapsed="0.362972"/>
</kw>
<msg time="2026-04-19T00:14:26.050233" 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-19T00:14:25.686426" elapsed="0.363853"/>
</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-19T00:14:26.053350" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T00:14:26.053862" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:26.054193" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:26.050571" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T00:14:26.054444" level="INFO">${output} = 1</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-19T00:14:25.685194" elapsed="0.369275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:26.054922" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:26.054666" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:26.055010" elapsed="0.000050"/>
</return>
<msg time="2026-04-19T00:14:26.055219" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:25.683837" elapsed="0.371409"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:26.055301" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:26.055448" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:25.681555" elapsed="0.373919"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:26.056055" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:26.055633" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:25.680506" elapsed="0.375740">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:28.059720" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:28.058955" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:28.062137" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:28.061495" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:28.063445" 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-19T00:14:28.063591" 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-19T00:14:28.063227" elapsed="0.000402"/>
</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-19T00:14:28.069367" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:28.068736" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:28.068371" elapsed="0.001137"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:28.070981" 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-19T00:14:28.071287" 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-19T00:14:28.070512" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:28.073075" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:28.072423" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:28.074950" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:28.074216" elapsed="0.000873"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:28.077555" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:28.077633" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:28.077264" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:28.077890" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:28.079225" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:28.392820" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:28.078836" elapsed="0.314124"/>
</kw>
<msg time="2026-04-19T00:14:28.393082" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:28.078476" elapsed="0.314697"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:28.076359" elapsed="0.317105"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:28.394996" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:28.417469" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:28.417975" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:28.418429" 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-19T00:14:28.394600" elapsed="0.024049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:28.421005" elapsed="0.001009"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:28.423461" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:28.422819" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:28.424254" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:28.423831" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:28.423750" elapsed="0.000694"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:28.424937" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T00:14:28.424651" elapsed="0.000619"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:28.424582" elapsed="0.000776"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:28.425471" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:28.432110" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T00:14:28.432869" elapsed="0.000276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:28.433426" 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-19T00:14:28.427414" elapsed="0.006361"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:28.066491" elapsed="0.367623"/>
</kw>
<msg time="2026-04-19T00:14:28.434542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:28.065508" elapsed="0.369113"/>
</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-19T00:14:28.064593" elapsed="0.370142"/>
</kw>
<msg time="2026-04-19T00:14:28.434793" 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-19T00:14:28.063852" elapsed="0.371006"/>
</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-19T00:14:28.438867" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:14:28.439369" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:28.439662" 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-19T00:14:28.435420" elapsed="0.004389"/>
</kw>
<msg time="2026-04-19T00:14:28.439900" level="INFO">${output} = 1</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-19T00:14:28.062628" elapsed="0.377298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:28.440429" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:28.440120" elapsed="0.000354"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:28.440518" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:14:28.440673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:28.060468" elapsed="0.380231"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:28.440747" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:14:28.440892" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:28.058147" elapsed="0.382770"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:28.441508" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:28.441116" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:28.057096" elapsed="0.384595">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:30.445244" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:30.444456" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:30.447326" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:30.446825" elapsed="0.000540"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:30.448501" 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-19T00:14:30.448781" 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-19T00:14:30.448279" elapsed="0.000542"/>
</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-19T00:14:30.454753" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:30.454003" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:30.453639" elapsed="0.001325"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:30.456586" 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-19T00:14:30.456847" 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-19T00:14:30.456102" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:30.458583" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:30.457980" elapsed="0.000771"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:30.460608" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:30.459856" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:30.463357" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:30.463435" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:30.462931" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:30.463671" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:30.464930" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:30.772648" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:30.464608" elapsed="0.308185"/>
</kw>
<msg time="2026-04-19T00:14:30.772875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:30.464249" elapsed="0.308712"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:30.462049" elapsed="0.311205"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:30.774727" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:30.797223" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:30.797713" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:30.798084" 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-19T00:14:30.774343" elapsed="0.023955"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:30.800501" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:30.803644" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:30.802613" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:30.804748" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:30.804253" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:30.804130" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:30.805838" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:14:30.805397" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:30.805289" elapsed="0.000929"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:30.806397" elapsed="0.000082"/>
</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-19T00:14:30.813740" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T00:14:30.814359" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:30.814717" 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-19T00:14:30.808788" elapsed="0.006164"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:30.451674" elapsed="0.363563"/>
</kw>
<msg time="2026-04-19T00:14:30.815542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:30.450701" elapsed="0.364898"/>
</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-19T00:14:30.449838" elapsed="0.365840"/>
</kw>
<msg time="2026-04-19T00:14:30.815720" 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-19T00:14:30.449074" elapsed="0.366692"/>
</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-19T00:14:30.818712" elapsed="0.000419"/>
</kw>
<kw name="Open 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-19T00:14:30.819297" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:30.819591" 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-19T00:14:30.816071" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T00:14:30.819828" level="INFO">${output} = 1</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-19T00:14:30.447675" elapsed="0.372178"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:30.820302" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:30.820049" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:30.820387" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:30.820537" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:30.445803" elapsed="0.374759"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:30.820607" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:30.820746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:30.443620" elapsed="0.377151"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:30.821326" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:30.820923" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:30.442495" elapsed="0.379009">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:32.823717" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:32.823301" elapsed="0.000462"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:32.824946" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:32.824597" elapsed="0.000382"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:32.826012" 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-19T00:14:32.826165" 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-19T00:14:32.825805" elapsed="0.000395"/>
</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-19T00:14:32.830839" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:32.830362" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:32.830303" elapsed="0.000778"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:32.832816" 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-19T00:14:32.833108" 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-19T00:14:32.832086" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:32.835062" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:32.834394" elapsed="0.000805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:32.837440" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:32.836534" elapsed="0.001033"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:32.840160" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:32.840246" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:32.839851" 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-19T00:14:32.840527" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:32.841944" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:33.150751" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:32.841559" elapsed="0.309334"/>
</kw>
<msg time="2026-04-19T00:14:33.150976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:32.841115" elapsed="0.309968"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:32.839057" elapsed="0.312320"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:33.152950" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:33.165327" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:33.165906" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:33.166324" 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-19T00:14:33.152516" elapsed="0.014039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:33.169014" elapsed="0.000709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:33.171347" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:33.170625" elapsed="0.000892"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:33.172151" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:33.171765" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:33.171677" elapsed="0.000678"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:33.172926" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-19T00:14:33.172609" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:33.172515" elapsed="0.000890"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:33.173540" elapsed="0.000056"/>
</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-19T00:14:33.179525" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T00:14:33.180118" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:33.180489" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:33.175572" elapsed="0.005180"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:32.828716" elapsed="0.352271"/>
</kw>
<msg time="2026-04-19T00:14:33.181383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:32.827777" elapsed="0.353672"/>
</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-19T00:14:32.827098" elapsed="0.354435"/>
</kw>
<msg time="2026-04-19T00:14:33.181583" 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-19T00:14:32.826410" elapsed="0.355226"/>
</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-19T00:14:33.184767" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T00:14:33.185288" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:33.185595" 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-19T00:14:33.181940" elapsed="0.003820"/>
</kw>
<msg time="2026-04-19T00:14:33.185856" level="INFO">${output} = 1</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-19T00:14:32.825280" elapsed="0.360603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:33.186359" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:33.186098" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:33.186452" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:14:33.186609" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:32.824050" elapsed="0.362586"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:33.186693" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:14:33.186845" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:32.822800" elapsed="0.364071"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:33.187483" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:33.187074" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:32.822141" elapsed="0.365532">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:35.191375" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:35.190570" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:35.193622" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:35.192939" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:35.195645" 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-19T00:14:35.195887" 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-19T00:14:35.195298" elapsed="0.000670"/>
</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-19T00:14:35.201204" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:35.200707" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:35.200647" elapsed="0.000697"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:35.203084" 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-19T00:14:35.203333" 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-19T00:14:35.202365" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:35.204965" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:35.204421" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:35.206993" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:35.206287" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:35.209432" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:35.209510" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:35.209145" 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-19T00:14:35.209747" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:35.211108" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:35.528633" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:35.210727" elapsed="0.318031"/>
</kw>
<msg time="2026-04-19T00:14:35.528835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:35.210366" elapsed="0.318553"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:35.208331" elapsed="0.320876"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:35.530685" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:35.553605" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:35.554155" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:35.554522" 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-19T00:14:35.530308" elapsed="0.024426"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:35.556941" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:35.560184" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:35.559142" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:35.561294" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:35.560769" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:35.560649" elapsed="0.000936"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:35.562430" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:14:35.561898" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:35.561793" elapsed="0.000993"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:35.562963" elapsed="0.000143"/>
</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-19T00:14:35.568110" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:14:35.568660" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:35.569017" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:35.564611" elapsed="0.004638"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:35.199325" elapsed="0.370150"/>
</kw>
<msg time="2026-04-19T00:14:35.569782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:35.198616" elapsed="0.371223"/>
</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-19T00:14:35.197658" elapsed="0.372262"/>
</kw>
<msg time="2026-04-19T00:14:35.569962" 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-19T00:14:35.196403" elapsed="0.373605"/>
</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-19T00:14:35.573189" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:14:35.573672" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:35.573973" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:35.570411" elapsed="0.003729"/>
</kw>
<msg time="2026-04-19T00:14:35.574233" level="INFO">${output} = 1</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-19T00:14:35.194279" elapsed="0.379980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:35.574709" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:35.574457" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:35.574799" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:35.574951" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:35.191930" elapsed="0.383047"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:35.575048" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:14:35.575197" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:35.189634" elapsed="0.385588"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:35.575770" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:35.575379" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:35.188528" elapsed="0.387422">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:37.579659" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:37.578860" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:37.581765" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:37.581159" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:37.583670" 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-19T00:14:37.583903" 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-19T00:14:37.583273" elapsed="0.000690"/>
</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-19T00:14:37.590271" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:37.589790" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:37.589733" elapsed="0.000675"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:37.592102" 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-19T00:14:37.592347" 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-19T00:14:37.591390" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:37.593962" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:37.593419" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:37.595775" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:37.595057" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:37.598201" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:37.598279" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:37.597904" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:37.598513" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:37.599863" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:37.933398" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:37.599515" elapsed="0.334111"/>
</kw>
<msg time="2026-04-19T00:14:37.933764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:37.599151" elapsed="0.334758"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:37.597146" elapsed="0.337283"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:37.936880" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:37.959790" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:37.960237" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:37.960458" 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-19T00:14:37.936389" elapsed="0.024209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:37.962059" elapsed="0.000651"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:37.964209" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:37.963517" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:37.964933" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:37.964590" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:37.964511" elapsed="0.000656"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:37.965695" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T00:14:37.965390" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:37.965317" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:37.966077" elapsed="0.000055"/>
</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-19T00:14:37.972854" elapsed="0.000695"/>
</kw>
<kw name="Open 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-19T00:14:37.973868" elapsed="0.000264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:37.974428" elapsed="0.000154"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:37.967921" elapsed="0.006816"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:37.588408" elapsed="0.386667"/>
</kw>
<msg time="2026-04-19T00:14:37.975486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:37.586756" elapsed="0.388822"/>
</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-19T00:14:37.585526" elapsed="0.390172"/>
</kw>
<msg time="2026-04-19T00:14:37.975760" 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-19T00:14:37.584356" elapsed="0.391473"/>
</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-19T00:14:37.980277" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:37.980999" elapsed="0.000283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:37.981514" elapsed="0.000149"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:37.976313" elapsed="0.005429"/>
</kw>
<msg time="2026-04-19T00:14:37.981964" level="INFO">${output} = 1</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-19T00:14:37.582332" elapsed="0.399671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:37.982690" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:37.982311" elapsed="0.000446"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:37.982823" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:14:37.983076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:37.580216" elapsed="0.402900"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:37.983185" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T00:14:37.983413" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:37.578013" elapsed="0.405435"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:37.984267" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:37.983659" elapsed="0.000716">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:37.576775" elapsed="0.407764">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:39.988158" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:39.987385" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:39.990298" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:39.989665" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:39.992128" 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-19T00:14:39.992357" 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-19T00:14:39.991774" elapsed="0.000642"/>
</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-19T00:14:39.998405" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:39.997424" elapsed="0.001094"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:39.997338" elapsed="0.001262"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:40.000575" 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-19T00:14:40.000908" 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-19T00:14:39.999946" elapsed="0.001151"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:40.003207" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:40.002443" elapsed="0.000914"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:40.005696" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:40.004703" elapsed="0.001090"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:40.008007" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:40.008102" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:40.007729" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:40.008334" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:40.009744" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:40.313816" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:40.009418" elapsed="0.304568"/>
</kw>
<msg time="2026-04-19T00:14:40.314075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:40.008886" elapsed="0.305268"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:40.006969" elapsed="0.307422"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:40.315763" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:40.338520" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:40.339014" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:40.339399" 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-19T00:14:40.315414" elapsed="0.024196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:40.341859" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:40.344955" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:40.343979" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:40.346131" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:40.345615" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:40.345493" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:40.346820" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T00:14:40.346621" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:40.346572" elapsed="0.000407"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:40.347074" 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-19T00:14:40.351685" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:14:40.352310" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:40.352664" 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-19T00:14:40.348438" elapsed="0.004433"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:39.995483" elapsed="0.357628"/>
</kw>
<msg time="2026-04-19T00:14:40.353443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:39.994542" elapsed="0.358961"/>
</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-19T00:14:39.993776" elapsed="0.359810"/>
</kw>
<msg time="2026-04-19T00:14:40.353627" 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-19T00:14:39.992764" elapsed="0.360910"/>
</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-19T00:14:40.356922" 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-19T00:14:40.357448" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:40.357753" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:40.353966" elapsed="0.003937"/>
</kw>
<msg time="2026-04-19T00:14:40.357996" level="INFO">${output} = 1</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-19T00:14:39.990835" elapsed="0.367186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:40.358481" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:40.358231" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:40.358568" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:40.358720" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:39.988678" elapsed="0.370067"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:40.358791" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:40.358935" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:39.986537" elapsed="0.372424"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:40.359583" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:40.359186" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:39.985443" elapsed="0.374327">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:42.363389" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:42.362572" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:42.365519" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:42.364877" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:42.367418" 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-19T00:14:42.367590" 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-19T00:14:42.367089" elapsed="0.000538"/>
</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-19T00:14:42.373319" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:42.372639" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:42.372261" elapsed="0.001263"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:42.375567" 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-19T00:14:42.375898" 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-19T00:14:42.374931" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:42.378162" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:42.377393" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:42.380446" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:42.379740" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:42.382800" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:42.382878" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:42.382508" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:42.383244" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:42.384504" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:42.705492" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:42.384180" elapsed="0.321423"/>
</kw>
<msg time="2026-04-19T00:14:42.705679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:42.383804" elapsed="0.321952"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:42.381740" elapsed="0.324265"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:42.707469" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:42.730246" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:42.730731" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:42.731156" 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-19T00:14:42.707098" elapsed="0.024277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:42.733548" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:42.736671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:42.735689" elapsed="0.001210"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:42.737769" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:42.737278" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:42.737156" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:42.738961" elapsed="0.000152"/>
</return>
<status status="PASS" start="2026-04-19T00:14:42.738466" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:42.738326" elapsed="0.001033"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:42.739543" elapsed="0.000078"/>
</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-19T00:14:42.744343" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:14:42.744892" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:42.745262" 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-19T00:14:42.740939" elapsed="0.004530"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:42.370371" elapsed="0.375329"/>
</kw>
<msg time="2026-04-19T00:14:42.746012" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:42.369396" elapsed="0.376691"/>
</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-19T00:14:42.368580" elapsed="0.377588"/>
</kw>
<msg time="2026-04-19T00:14:42.746208" 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-19T00:14:42.367848" elapsed="0.378405"/>
</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-19T00:14:42.749283" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:14:42.749765" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:42.750074" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:42.746542" elapsed="0.003682"/>
</kw>
<msg time="2026-04-19T00:14:42.750320" level="INFO">${output} = 1</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-19T00:14:42.366092" elapsed="0.384254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:42.750766" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:42.750522" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:42.750851" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:14:42.751015" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:42.363916" elapsed="0.387137"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:42.751100" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:42.751249" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:42.361724" elapsed="0.389549"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:42.751822" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:42.751427" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:42.360640" elapsed="0.391366">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:44.755787" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:44.754938" elapsed="0.000921"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:44.758187" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:44.757525" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:44.760151" 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-19T00:14:44.760383" 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-19T00:14:44.759782" elapsed="0.000661"/>
</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-19T00:14:44.767397" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:44.766707" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:44.766318" elapsed="0.001290"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:44.769099" 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-19T00:14:44.769340" 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-19T00:14:44.768642" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:44.771023" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:44.770453" elapsed="0.000755"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:44.772889" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:44.772193" elapsed="0.000796"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:44.775453" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:44.775530" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:44.774999" 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-19T00:14:44.775764" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:44.777010" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:45.087834" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:44.776687" elapsed="0.311304"/>
</kw>
<msg time="2026-04-19T00:14:45.088100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:44.776329" elapsed="0.311862"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:44.774234" elapsed="0.314238"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:45.089976" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:45.112617" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:45.113164" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:45.113501" 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-19T00:14:45.089581" elapsed="0.024134"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:45.116074" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:45.119287" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:45.118283" elapsed="0.001232"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:45.120504" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:45.119866" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:45.119743" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:45.121614" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:14:45.121160" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:45.121018" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:45.122349" elapsed="0.000090"/>
</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-19T00:14:45.129087" 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-19T00:14:45.129631" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:45.130005" elapsed="0.000171"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:45.123901" elapsed="0.006382"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:44.764441" elapsed="0.366058"/>
</kw>
<msg time="2026-04-19T00:14:45.130797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:44.763497" elapsed="0.367356"/>
</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-19T00:14:44.762098" elapsed="0.368832"/>
</kw>
<msg time="2026-04-19T00:14:45.130969" 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-19T00:14:44.760816" elapsed="0.370197"/>
</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-19T00:14:45.134129" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:14:45.134603" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:45.134899" 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-19T00:14:45.131405" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T00:14:45.135196" level="INFO">${output} = 1</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-19T00:14:44.758730" elapsed="0.376491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:45.135644" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:45.135400" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:45.135730" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:14:45.135878" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:44.756517" elapsed="0.379385"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:45.135947" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:14:45.136104" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:44.754101" elapsed="0.382027"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:45.136669" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:45.136283" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:44.752903" elapsed="0.383948">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:47.140537" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:47.139695" elapsed="0.000924"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:47.142699" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:47.142094" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:47.144600" 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-19T00:14:47.145112" 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-19T00:14:47.144275" elapsed="0.000905"/>
</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-19T00:14:47.151007" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:47.150554" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:47.150498" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:47.201783" 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-19T00:14:47.202182" 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-19T00:14:47.152185" elapsed="0.050108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:47.204011" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:47.203357" elapsed="0.000783"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:47.205872" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:47.205126" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:47.208377" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:47.208456" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:47.208084" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:47.208700" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:47.210101" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:47.522795" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:47.209717" elapsed="0.313217"/>
</kw>
<msg time="2026-04-19T00:14:47.523018" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:47.209317" elapsed="0.313815"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:47.207273" elapsed="0.316154"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:47.524926" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:47.547483" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:47.547988" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:47.548404" 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-19T00:14:47.524534" elapsed="0.024086"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:47.550891" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:47.554189" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:47.553179" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:47.555392" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:47.554841" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:47.554707" elapsed="0.000983"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:47.556567" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:14:47.556073" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:47.555912" elapsed="0.001024"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:47.557287" elapsed="0.000087"/>
</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-19T00:14:47.562941" 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-19T00:14:47.563577" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:47.563942" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:47.559487" elapsed="0.004712"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:47.149190" elapsed="0.415243"/>
</kw>
<msg time="2026-04-19T00:14:47.564778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:47.148077" elapsed="0.416771"/>
</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-19T00:14:47.146748" elapsed="0.418185"/>
</kw>
<msg time="2026-04-19T00:14:47.564975" 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-19T00:14:47.145538" elapsed="0.419485"/>
</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-19T00:14:47.568099" 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-19T00:14:47.568588" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:47.568885" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:47.565376" elapsed="0.003759"/>
</kw>
<msg time="2026-04-19T00:14:47.569233" level="INFO">${output} = 1</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-19T00:14:47.143272" elapsed="0.425986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:47.569766" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:47.569440" elapsed="0.000384"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:47.569869" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:47.570056" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:47.141143" elapsed="0.428940"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:47.570132" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:14:47.570281" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:47.138788" elapsed="0.431518"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:47.570869" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:47.570465" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:47.137679" elapsed="0.433391">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:49.574471" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:49.573689" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:49.576641" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:49.576014" elapsed="0.000686"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:49.579165" 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-19T00:14:49.579447" 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-19T00:14:49.578705" elapsed="0.000813"/>
</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-19T00:14:49.585181" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:49.584685" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:49.584627" elapsed="0.000767"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:49.586893" 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-19T00:14:49.587155" 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-19T00:14:49.586437" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:49.588796" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:49.588251" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:49.590675" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:49.589919" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:49.593130" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:49.593208" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:49.592832" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:49.593454" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:49.594717" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:49.903769" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:49.594393" elapsed="0.309537"/>
</kw>
<msg time="2026-04-19T00:14:49.904019" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:49.594011" elapsed="0.310125"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:49.592068" elapsed="0.312356"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:49.905928" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:49.928423" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:49.929007" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:49.929449" 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-19T00:14:49.905523" elapsed="0.024163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:49.932179" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:49.934890" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:49.934262" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:49.935617" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:49.935287" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:49.935206" elapsed="0.000603"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:49.936327" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T00:14:49.936015" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:49.935944" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:49.936673" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:49.943338" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T00:14:49.944165" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:49.944660" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:49.938648" elapsed="0.006341"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:49.582965" elapsed="0.362381"/>
</kw>
<msg time="2026-04-19T00:14:49.945825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:49.582246" elapsed="0.363643"/>
</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-19T00:14:49.581335" elapsed="0.364636"/>
</kw>
<msg time="2026-04-19T00:14:49.946012" 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-19T00:14:49.579970" elapsed="0.366201"/>
</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-19T00:14:49.949265" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:14:49.949772" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:49.950177" 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-19T00:14:49.946467" elapsed="0.003865"/>
</kw>
<msg time="2026-04-19T00:14:49.950427" level="INFO">${output} = 1</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-19T00:14:49.577301" elapsed="0.373152"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:49.950909" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:49.950656" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:49.951000" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T00:14:49.951178" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:49.575086" elapsed="0.376118"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:49.951251" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:14:49.951398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:49.572858" elapsed="0.378565"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:49.951985" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:49.951580" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:49.571819" elapsed="0.380367">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:51.955649" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:51.954883" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:51.957472" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:51.957085" elapsed="0.000425"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:51.958633" 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-19T00:14:51.958778" 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-19T00:14:51.958415" elapsed="0.000399"/>
</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-19T00:14:51.964566" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:51.963860" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:51.963779" elapsed="0.000982"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:51.966783" 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-19T00:14:51.967170" 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-19T00:14:51.966161" elapsed="0.001148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:51.969306" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:51.968714" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:51.971242" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:51.970472" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:51.973651" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:51.973729" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:51.973362" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:51.973962" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:51.975409" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:52.294225" 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 Sun Apr 19 00:13:52 UTC 2026

  System load:  0.01               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:51.974898" elapsed="0.319481"/>
</kw>
<msg time="2026-04-19T00:14:52.294462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:51.974536" elapsed="0.320013"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:51.972579" elapsed="0.322261"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:52.296332" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:52.319458" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:52.319976" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:52.320356" 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-19T00:14:52.295929" elapsed="0.024639"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:52.322865" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:52.326080" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:52.325085" elapsed="0.001232"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:52.327200" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:52.326670" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:52.326547" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:52.328297" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:14:52.327815" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:52.327707" elapsed="0.000943"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:52.328825" elapsed="0.000089"/>
</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-19T00:14:52.334873" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T00:14:52.335427" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:52.335781" 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-19T00:14:52.331430" elapsed="0.004566"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:51.961583" elapsed="0.374657"/>
</kw>
<msg time="2026-04-19T00:14:52.336552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:51.960597" elapsed="0.376013"/>
</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-19T00:14:51.959765" elapsed="0.376926"/>
</kw>
<msg time="2026-04-19T00:14:52.336732" 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-19T00:14:51.959055" elapsed="0.377788"/>
</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-19T00:14:52.339940" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:14:52.340432" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:52.340726" 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-19T00:14:52.337271" elapsed="0.003603"/>
</kw>
<msg time="2026-04-19T00:14:52.340965" level="INFO">${output} = 1</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-19T00:14:51.957815" elapsed="0.383177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:52.341539" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:52.341266" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:52.341628" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:14:52.341779" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:51.956260" elapsed="0.385544"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:52.341851" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:52.342001" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:51.954066" elapsed="0.387979"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:52.342593" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:52.342203" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:51.952961" elapsed="0.389814">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:54.346607" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:54.345707" elapsed="0.001006"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:54.349581" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:54.348888" elapsed="0.000757"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:54.351630" 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-19T00:14:54.351927" 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-19T00:14:54.351263" elapsed="0.000706"/>
</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-19T00:14:54.357825" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:54.357175" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:54.357096" elapsed="0.000956"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:54.360131" 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-19T00:14:54.360478" 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-19T00:14:54.359460" elapsed="0.001159"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:54.362834" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:54.362054" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:54.365013" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:54.364301" elapsed="0.000873"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:54.367482" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:54.367563" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:54.367173" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:54.367799" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:54.369315" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:54.946119" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:54.368845" elapsed="0.577425"/>
</kw>
<msg time="2026-04-19T00:14:54.946356" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:54.368467" elapsed="0.577980"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:54.366363" elapsed="0.580367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:54.948277" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:54.970795" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:54.971370" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:54.971708" 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-19T00:14:54.947839" elapsed="0.024104"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:54.974254" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:54.977454" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:54.976473" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:54.978567" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:54.978067" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:54.977915" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:54.979884" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T00:14:54.979372" elapsed="0.000900"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:54.979120" elapsed="0.001285"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:54.980583" 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-19T00:14:54.985566" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:14:54.986147" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:54.986516" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:54.982121" elapsed="0.004609"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:54.354726" elapsed="0.632230"/>
</kw>
<msg time="2026-04-19T00:14:54.987301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:54.353735" elapsed="0.633630"/>
</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-19T00:14:54.352957" elapsed="0.634493"/>
</kw>
<msg time="2026-04-19T00:14:54.987492" 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-19T00:14:54.352222" elapsed="0.635317"/>
</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-19T00:14:54.990661" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:54.991172" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:54.991474" 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-19T00:14:54.987854" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T00:14:54.991813" level="INFO">${output} = 1</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-19T00:14:54.350186" elapsed="0.641655"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:54.992445" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:54.992183" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:54.992538" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:14:54.992725" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:54.347440" elapsed="0.645311"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:54.992802" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:54.992950" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:54.344780" elapsed="0.648196"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:54.993602" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:54.993154" elapsed="0.000523">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:54.343616" elapsed="0.650172">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:56.997248" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:56.996488" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:56.999374" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:56.998740" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:57.001210" 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-19T00:14:57.001436" 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-19T00:14:57.000857" elapsed="0.000639"/>
</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-19T00:14:57.006422" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:57.005936" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:57.005647" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:57.008008" 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-19T00:14:57.008296" 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-19T00:14:57.007571" elapsed="0.000824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:57.009945" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:57.009407" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:57.011755" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:57.011060" elapsed="0.000793"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:57.014223" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:57.014302" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:57.013926" 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-19T00:14:57.014559" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:57.015882" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:57.332895" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:57.015561" elapsed="0.317508"/>
</kw>
<msg time="2026-04-19T00:14:57.333134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:57.015200" elapsed="0.318005"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:57.013175" elapsed="0.320259"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:57.334778" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:57.357668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:57.358212" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:57.358575" 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-19T00:14:57.334446" elapsed="0.024344"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:57.361107" elapsed="0.000876"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:57.364233" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:57.363250" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:57.365303" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:57.364791" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:57.364675" elapsed="0.000914"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:57.366377" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:14:57.365904" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:57.365797" elapsed="0.000930"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:57.366901" elapsed="0.000082"/>
</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-19T00:14:57.373952" 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-19T00:14:57.374793" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:57.375396" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:57.369312" elapsed="0.006378"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:57.004336" elapsed="0.371663"/>
</kw>
<msg time="2026-04-19T00:14:57.376456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:57.003632" elapsed="0.372902"/>
</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-19T00:14:57.003093" elapsed="0.373553"/>
</kw>
<msg time="2026-04-19T00:14:57.376703" 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-19T00:14:57.001847" elapsed="0.374919"/>
</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-19T00:14:57.381054" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:57.381724" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:57.382156" elapsed="0.000137"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:57.377192" elapsed="0.005173"/>
</kw>
<msg time="2026-04-19T00:14:57.382489" level="INFO">${output} = 1</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-19T00:14:56.999914" elapsed="0.382611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:57.383225" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:57.382771" elapsed="0.000522"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:57.383354" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T00:14:57.383566" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:56.997778" elapsed="0.385824"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:57.383666" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:14:57.383867" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:56.995648" elapsed="0.388253"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:57.384554" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:57.384159" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:56.994592" elapsed="0.390147">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:14:59.388486" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:14:59.387604" elapsed="0.000949"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:14:59.390560" level="INFO">${member_ip} = 10.30.171.206</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-19T00:14:59.389931" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:59.392472" 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-19T00:14:59.392713" 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-19T00:14:59.392077" elapsed="0.000718"/>
</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-19T00:14:59.398870" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:14:59.398396" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:59.398102" elapsed="0.000911"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:59.400524" 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-19T00:14:59.400767" 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-19T00:14:59.400046" elapsed="0.000824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:59.402431" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:59.401860" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:14:59.404263" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:59.403515" elapsed="0.000845"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:14:59.406662" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:14:59.406739" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:14:59.406377" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:59.406971" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:14:59.408266" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:14:59.695820" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:14:59.407923" elapsed="0.288027"/>
</kw>
<msg time="2026-04-19T00:14:59.696047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:59.407560" elapsed="0.288573"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:14:59.405546" elapsed="0.290853"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:14:59.697867" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:14:59.720722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:14:59.721267" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:14:59.721621" 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-19T00:14:59.697471" elapsed="0.024363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:59.724010" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:59.727203" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:59.726240" elapsed="0.001193"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:59.728295" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:14:59.727776" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:59.727655" elapsed="0.000930"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:14:59.729424" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:14:59.728902" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T00:14:59.728795" elapsed="0.000989"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:14:59.729960" elapsed="0.000192"/>
</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-19T00:14:59.734788" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T00:14:59.735353" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:59.735709" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:14:59.731413" elapsed="0.004507"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:14:59.396736" elapsed="0.339421"/>
</kw>
<msg time="2026-04-19T00:14:59.736459" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:14:59.395927" elapsed="0.340590"/>
</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-19T00:14:59.394490" elapsed="0.342110"/>
</kw>
<msg time="2026-04-19T00:14:59.736641" 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-19T00:14:59.393202" elapsed="0.343485"/>
</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-19T00:14:59.739732" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:14:59.740260" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:14:59.740554" 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-19T00:14:59.736973" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:14:59.740790" level="INFO">${output} = 1</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-19T00:14:59.391119" elapsed="0.349696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:14:59.741281" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:14:59.740992" elapsed="0.000336"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:14:59.741371" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:14:59.741524" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:14:59.388997" elapsed="0.352552"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:14:59.741596" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:14:59.741741" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:14:59.386698" elapsed="0.355067"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:14:59.742413" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:14:59.741920" elapsed="0.000567">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:14:59.385554" elapsed="0.357044">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:01.746230" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:01.745341" elapsed="0.000937"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:01.747717" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:01.747332" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:01.748874" 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-19T00:15:01.749017" 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-19T00:15:01.748658" elapsed="0.000418"/>
</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-19T00:15:01.756787" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:01.756133" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:01.753638" elapsed="0.003346"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:01.759077" 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-19T00:15:01.759420" 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-19T00:15:01.758430" elapsed="0.001131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:01.761817" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:01.760926" elapsed="0.001207"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:01.763913" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:01.763226" elapsed="0.000786"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:01.766361" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:01.766440" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:01.766071" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:01.766678" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:01.767991" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:02.105162" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:14:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:01.767645" elapsed="0.337672"/>
</kw>
<msg time="2026-04-19T00:15:02.105402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:01.767270" elapsed="0.338223"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:01.765262" elapsed="0.340532"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:02.107317" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:02.130148" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:02.130424" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:02.130575" 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-19T00:15:02.106888" elapsed="0.023785"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:02.131733" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:02.133341" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:02.132849" elapsed="0.000596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:02.133926" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:02.133610" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:02.133552" 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-19T00:15:02.134436" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T00:15:02.134228" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:02.134180" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:02.134684" 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-19T00:15:02.139462" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:02.140051" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:02.140418" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:02.136049" elapsed="0.004579"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:01.751790" elapsed="0.389061"/>
</kw>
<msg time="2026-04-19T00:15:02.141322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:01.750829" elapsed="0.390558"/>
</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-19T00:15:01.750081" elapsed="0.391390"/>
</kw>
<msg time="2026-04-19T00:15:02.141513" 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-19T00:15:01.749302" elapsed="0.392258"/>
</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-19T00:15:02.144571" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:15:02.145107" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:02.145410" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:02.141854" elapsed="0.003707"/>
</kw>
<msg time="2026-04-19T00:15:02.145655" level="INFO">${output} = 1</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-19T00:15:01.748079" elapsed="0.397602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:02.146143" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:02.145870" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:02.146232" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:02.146386" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:01.746729" elapsed="0.399683"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:02.146459" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:02.146603" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:01.744503" elapsed="0.402125"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:02.147194" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:02.146784" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:01.743450" elapsed="0.403927">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:04.150899" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:04.150158" elapsed="0.000812"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:04.153423" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:04.152738" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:04.155429" 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-19T00:15:04.155847" 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-19T00:15:04.154945" elapsed="0.000972"/>
</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-19T00:15:04.163068" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:04.162383" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:04.162300" elapsed="0.000988"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:04.165700" 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-19T00:15:04.166072" 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-19T00:15:04.164733" elapsed="0.001484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:04.168396" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:04.167602" elapsed="0.000949"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:04.171002" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:04.170001" elapsed="0.001213"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:04.173912" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:04.173991" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:04.173625" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:04.174246" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:04.175524" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:04.492935" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:04.175187" elapsed="0.317999"/>
</kw>
<msg time="2026-04-19T00:15:04.493337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:04.174802" elapsed="0.318683"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:04.172727" elapsed="0.321366"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:04.497226" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:04.520207" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:04.520854" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:04.521239" 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-19T00:15:04.496424" elapsed="0.025034"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:04.523910" elapsed="0.001210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:04.527490" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:04.526481" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:04.528620" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:04.528105" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:04.527948" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:04.529875" elapsed="0.000132"/>
</return>
<status status="PASS" start="2026-04-19T00:15:04.529367" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:04.529263" elapsed="0.001012"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:04.530356" 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-19T00:15:04.535470" 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-19T00:15:04.536211" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:04.536601" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:04.531710" elapsed="0.005124"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:04.160312" elapsed="0.376840"/>
</kw>
<msg time="2026-04-19T00:15:04.537473" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:04.158786" elapsed="0.378760"/>
</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-19T00:15:04.157545" elapsed="0.380087"/>
</kw>
<msg time="2026-04-19T00:15:04.537675" 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-19T00:15:04.156339" elapsed="0.381396"/>
</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-19T00:15:04.540782" 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-19T00:15:04.541449" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:04.541792" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:04.538064" elapsed="0.003885"/>
</kw>
<msg time="2026-04-19T00:15:04.542069" level="INFO">${output} = 1</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-19T00:15:04.153971" elapsed="0.388126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:04.542574" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:04.542314" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:04.542666" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:15:04.542832" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:04.151709" elapsed="0.391148"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:04.542905" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:04.543073" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:04.149297" elapsed="0.393802"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:04.543665" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:04.543261" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:04.148209" elapsed="0.395642">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:06.546767" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:06.546154" elapsed="0.000675"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:06.548634" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:06.548105" elapsed="0.000580"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:06.550183" 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-19T00:15:06.550356" 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-19T00:15:06.549891" elapsed="0.000508"/>
</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-19T00:15:06.556712" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:06.556170" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:06.556100" elapsed="0.000861"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:06.559011" 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-19T00:15:06.559369" 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-19T00:15:06.558147" elapsed="0.001348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:06.561433" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:06.560724" elapsed="0.000848"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:06.563688" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:06.562741" elapsed="0.001053"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:06.566595" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:06.566691" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:06.566237" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:06.567000" elapsed="0.000657"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:06.568762" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:06.903405" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:06.568391" elapsed="0.335168"/>
</kw>
<msg time="2026-04-19T00:15:06.903647" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:06.567946" elapsed="0.335794"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:06.565252" elapsed="0.338801"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:06.905550" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:06.928185" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:06.928603" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:06.928856" 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-19T00:15:06.905146" elapsed="0.023909"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:06.930790" elapsed="0.000779"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:06.933344" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:06.932562" elapsed="0.000963"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:06.934286" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:06.933802" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:06.933703" elapsed="0.000765"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:06.934877" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:15:06.934640" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:06.934581" elapsed="0.000517"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:06.935193" 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-19T00:15:06.941127" elapsed="0.000423"/>
</kw>
<kw name="Open 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-19T00:15:06.941815" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:06.942401" 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-19T00:15:06.936749" elapsed="0.005868"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:06.553881" elapsed="0.388961"/>
</kw>
<msg time="2026-04-19T00:15:06.943249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:06.552590" elapsed="0.390727"/>
</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-19T00:15:06.551613" elapsed="0.391790"/>
</kw>
<msg time="2026-04-19T00:15:06.943445" 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-19T00:15:06.550644" elapsed="0.392848"/>
</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-19T00:15:06.946707" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:15:06.947210" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:06.947508" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:06.943791" elapsed="0.003866"/>
</kw>
<msg time="2026-04-19T00:15:06.947750" level="INFO">${output} = 1</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-19T00:15:06.549139" elapsed="0.398636"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:06.948239" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:06.947971" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:06.948327" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:15:06.948483" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:06.547286" elapsed="0.401223"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:06.948555" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:06.948701" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:06.545483" elapsed="0.403243"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:06.949293" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:06.948882" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:06.544597" elapsed="0.404885">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:08.953218" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:08.952304" elapsed="0.000995"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:08.955422" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:08.954761" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:08.957393" 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-19T00:15:08.957553" 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-19T00:15:08.956949" elapsed="0.000643"/>
</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-19T00:15:08.963714" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:08.962955" elapsed="0.000888"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:08.962864" elapsed="0.001070"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:08.966626" 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-19T00:15:08.967012" 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-19T00:15:08.965501" elapsed="0.001692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:08.969570" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:08.968712" elapsed="0.000978"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:08.971635" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:08.970859" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:08.974638" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:08.974725" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:08.974327" 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-19T00:15:08.974971" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:08.976337" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:09.302660" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:08.975981" elapsed="0.326929"/>
</kw>
<msg time="2026-04-19T00:15:09.303095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:08.975591" elapsed="0.327665"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:08.973483" elapsed="0.330326"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:09.306232" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:09.329352" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:09.330128" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:09.330637" 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-19T00:15:09.305815" elapsed="0.025137"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:09.333778" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:09.335764" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:09.335163" 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-19T00:15:09.336497" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:09.336147" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:09.336061" elapsed="0.000628"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:09.337179" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:15:09.336890" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:09.336826" elapsed="0.000578"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:09.337512" elapsed="0.000050"/>
</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-19T00:15:09.343970" elapsed="0.000511"/>
</kw>
<kw name="Open 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-19T00:15:09.344769" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:09.345284" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:09.339252" elapsed="0.006324"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:08.960679" elapsed="0.385212"/>
</kw>
<msg time="2026-04-19T00:15:09.346353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:08.959536" elapsed="0.386896"/>
</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-19T00:15:08.958675" elapsed="0.387860"/>
</kw>
<msg time="2026-04-19T00:15:09.346583" 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-19T00:15:08.957832" elapsed="0.388805"/>
</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-19T00:15:09.350437" 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-19T00:15:09.350999" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:09.351399" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:09.347220" elapsed="0.004349"/>
</kw>
<msg time="2026-04-19T00:15:09.351677" level="INFO">${output} = 1</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-19T00:15:08.955971" elapsed="0.395735"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:09.352294" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:09.351957" elapsed="0.000389"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:09.352398" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T00:15:09.352584" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:08.953767" elapsed="0.398848"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:09.352673" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:15:09.352838" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:08.951424" elapsed="0.401439"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:09.353489" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:09.353023" elapsed="0.000547">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:08.950342" elapsed="0.403347">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:11.356127" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:11.355608" elapsed="0.000563"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:11.357459" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:11.357067" elapsed="0.000432"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:11.358656" 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-19T00:15:11.358801" 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-19T00:15:11.358418" elapsed="0.000424"/>
</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-19T00:15:11.364518" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:11.363825" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:11.363380" elapsed="0.001326"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:11.366611" 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-19T00:15:11.366954" 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-19T00:15:11.365990" elapsed="0.001147"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:11.369231" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:11.368435" elapsed="0.000945"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:11.371739" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:11.370659" elapsed="0.001209"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:11.374795" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:11.374892" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:11.374413" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:11.375471" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:11.377256" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:11.709068" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:11.376825" elapsed="0.332413"/>
</kw>
<msg time="2026-04-19T00:15:11.709328" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:11.376351" elapsed="0.333072"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:11.373406" elapsed="0.336321"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:11.711258" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:11.734067" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:11.734634" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:11.734993" 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-19T00:15:11.710830" elapsed="0.024438"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:11.737725" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:11.741276" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:11.740135" elapsed="0.001391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:11.742507" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:11.741908" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:11.741771" elapsed="0.001045"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:11.743951" elapsed="0.000159"/>
</return>
<status status="PASS" start="2026-04-19T00:15:11.743408" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:11.743282" elapsed="0.001083"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:11.744552" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:11.749490" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:15:11.750103" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:11.750470" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:11.746003" elapsed="0.004677"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:11.361622" elapsed="0.389279"/>
</kw>
<msg time="2026-04-19T00:15:11.751224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:11.360645" elapsed="0.390640"/>
</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-19T00:15:11.359836" elapsed="0.391530"/>
</kw>
<msg time="2026-04-19T00:15:11.751407" 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-19T00:15:11.359098" elapsed="0.392356"/>
</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-19T00:15:11.754533" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:11.755021" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:11.755335" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:11.751758" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:15:11.755665" level="INFO">${output} = 1</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-19T00:15:11.357811" elapsed="0.397882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:11.756147" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:11.755874" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:11.756237" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:11.756393" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:11.356468" elapsed="0.399951"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:11.756467" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:15:11.756612" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:11.355059" elapsed="0.401578"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:11.757216" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:11.756794" elapsed="0.000515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:11.354336" elapsed="0.403114">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:13.759798" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:13.759338" elapsed="0.000503"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:13.761095" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:13.760715" elapsed="0.000416"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:13.762206" 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-19T00:15:13.762342" 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-19T00:15:13.761967" elapsed="0.000411"/>
</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-19T00:15:13.767637" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:13.767004" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:13.766617" elapsed="0.001195"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:13.769677" 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-19T00:15:13.769979" 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-19T00:15:13.769114" elapsed="0.001021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:13.772065" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:13.771365" elapsed="0.000837"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:13.774434" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:13.773452" elapsed="0.001100"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:13.777432" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:13.777529" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:13.777060" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:13.777836" elapsed="0.000646"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:13.779711" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:14.084511" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:13.779271" elapsed="0.305499"/>
</kw>
<msg time="2026-04-19T00:15:14.084855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:13.778773" elapsed="0.306172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:13.776060" elapsed="0.309190"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:14.086743" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:14.109289" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:14.109792" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:14.110184" 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-19T00:15:14.086342" elapsed="0.024059"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:14.112669" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:14.115854" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:14.114844" elapsed="0.001359"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:14.116905" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:14.116562" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:14.116438" elapsed="0.000680"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:14.117642" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:15:14.117328" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:14.117259" elapsed="0.000612"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:14.117981" elapsed="0.000072"/>
</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-19T00:15:14.124800" 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-19T00:15:14.125584" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:14.126152" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:14.119916" elapsed="0.006535"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:13.764916" elapsed="0.361844"/>
</kw>
<msg time="2026-04-19T00:15:14.127207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:13.763985" elapsed="0.363301"/>
</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-19T00:15:13.763292" elapsed="0.364109"/>
</kw>
<msg time="2026-04-19T00:15:14.127457" 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-19T00:15:13.762594" elapsed="0.364927"/>
</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-19T00:15:14.130838" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:15:14.131357" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:14.131652" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:14.127925" elapsed="0.003873"/>
</kw>
<msg time="2026-04-19T00:15:14.131890" level="INFO">${output} = 1</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-19T00:15:13.761428" elapsed="0.370488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:14.132391" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:14.132140" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:14.132479" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:14.132631" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:13.760148" elapsed="0.372508"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:14.132703" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:15:14.132846" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:13.758813" elapsed="0.374057"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:14.133490" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:14.133091" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:13.758114" elapsed="0.375567">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:16.136252" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:16.135707" elapsed="0.000597"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:16.137660" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:16.137242" elapsed="0.000455"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:16.138877" 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-19T00:15:16.139053" 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-19T00:15:16.138626" elapsed="0.000471"/>
</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-19T00:15:16.147782" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:16.146999" elapsed="0.000913"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:16.144255" elapsed="0.003751"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:16.150002" 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-19T00:15:16.150358" 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-19T00:15:16.149361" elapsed="0.001134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:16.152806" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:16.151972" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:16.155664" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:16.154532" elapsed="0.001272"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:16.159273" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:16.159386" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:16.158692" elapsed="0.000733"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:16.159743" elapsed="0.000571"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:16.161764" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:16.485834" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:16.161237" elapsed="0.324743"/>
</kw>
<msg time="2026-04-19T00:15:16.486081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:16.160647" elapsed="0.325522"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:16.157499" elapsed="0.328946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:16.487901" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:16.510537" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:16.511091" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:16.511430" 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-19T00:15:16.487511" elapsed="0.024129"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:16.513891" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:16.517090" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:16.516108" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:16.518075" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:16.517725" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:16.517607" elapsed="0.000665"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:16.518802" elapsed="0.000093"/>
</return>
<status status="PASS" start="2026-04-19T00:15:16.518472" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:16.518406" elapsed="0.000674"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:16.519201" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:16.526541" elapsed="0.000711"/>
</kw>
<kw name="Open 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-19T00:15:16.527646" elapsed="0.000298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:16.528469" elapsed="0.000172"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:16.521381" elapsed="0.007424"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:16.142093" elapsed="0.387113"/>
</kw>
<msg time="2026-04-19T00:15:16.529658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:16.140970" elapsed="0.388767"/>
</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-19T00:15:16.140165" elapsed="0.389657"/>
</kw>
<msg time="2026-04-19T00:15:16.529864" 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-19T00:15:16.139349" elapsed="0.390562"/>
</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-19T00:15:16.532919" 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-19T00:15:16.533444" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:16.533769" 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-19T00:15:16.530228" elapsed="0.003704"/>
</kw>
<msg time="2026-04-19T00:15:16.534043" level="INFO">${output} = 1</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-19T00:15:16.138010" elapsed="0.396061"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:16.534538" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:16.534278" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:16.534628" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:15:16.534785" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:16.136613" elapsed="0.398198"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:16.534858" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:15:16.535005" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:16.135140" elapsed="0.399906"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:16.535611" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:16.535208" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:16.134347" elapsed="0.401459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:18.537626" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:18.537265" elapsed="0.000396"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:18.538701" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:18.538406" elapsed="0.000323"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:18.539558" 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-19T00:15:18.539660" 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-19T00:15:18.539385" elapsed="0.000302"/>
</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-19T00:15:18.543526" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:18.543059" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:18.542980" elapsed="0.000685"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:18.545354" 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-19T00:15:18.545600" 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-19T00:15:18.544658" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:18.547288" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:18.546707" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:18.549105" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:18.548387" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:18.551572" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:18.551649" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:18.551287" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:18.551883" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:18.553160" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:18.921864" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:18.552817" elapsed="0.369263"/>
</kw>
<msg time="2026-04-19T00:15:18.922195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:18.552452" elapsed="0.369846"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:18.550424" elapsed="0.372168"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:18.924146" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:18.946969" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:18.947581" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:18.947989" 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-19T00:15:18.923697" elapsed="0.024582"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:18.950871" elapsed="0.001398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:18.955418" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:18.954304" elapsed="0.001449"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:18.956384" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:18.955946" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:18.955880" elapsed="0.000661"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:18.956904" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:15:18.956696" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:18.956645" elapsed="0.000449"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:18.957178" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:18.961982" 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-19T00:15:18.962552" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:18.962912" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:18.958565" elapsed="0.004689"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:18.541614" elapsed="0.421877"/>
</kw>
<msg time="2026-04-19T00:15:18.963796" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:18.540917" elapsed="0.422942"/>
</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-19T00:15:18.540382" elapsed="0.423561"/>
</kw>
<msg time="2026-04-19T00:15:18.963984" 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-19T00:15:18.539845" elapsed="0.424201"/>
</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-19T00:15:18.967186" elapsed="0.000473"/>
</kw>
<kw name="Open 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-19T00:15:18.967889" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:18.968287" 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-19T00:15:18.964341" elapsed="0.004098"/>
</kw>
<msg time="2026-04-19T00:15:18.968538" level="INFO">${output} = 1</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-19T00:15:18.538949" elapsed="0.429616"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:18.969005" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:18.968752" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:18.969111" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:18.969267" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:18.537975" elapsed="0.431316"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:18.969339" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:15:18.969482" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:18.536865" elapsed="0.432641"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:18.970077" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:18.969663" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:18.536337" elapsed="0.433937">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:20.973835" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:20.973065" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:20.975999" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:20.975377" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:20.977927" 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-19T00:15:20.978346" 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-19T00:15:20.977544" elapsed="0.000865"/>
</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-19T00:15:20.983923" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:20.983295" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:20.983218" elapsed="0.000965"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:20.986625" 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-19T00:15:20.986995" 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-19T00:15:20.985550" elapsed="0.001657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:20.989596" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:20.988743" elapsed="0.001096"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:20.991677" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:20.990843" elapsed="0.000930"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:20.994166" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:20.994267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:20.993793" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:20.994570" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:20.996190" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:21.311053" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:20.995823" elapsed="0.315340"/>
</kw>
<msg time="2026-04-19T00:15:21.311234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:20.995427" elapsed="0.315885"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:20.992948" elapsed="0.318609"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:21.312967" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:21.335656" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:21.336194" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:21.336524" 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-19T00:15:21.312608" elapsed="0.024123"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:21.339052" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:21.342381" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:21.341354" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:21.343551" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:21.342992" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:21.342862" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:21.344722" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T00:15:21.344245" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:21.344130" elapsed="0.001186"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:21.345510" elapsed="0.000089"/>
</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-19T00:15:21.350468" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:15:21.351092" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:21.351451" 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-19T00:15:21.347010" elapsed="0.004658"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:20.981327" elapsed="0.370567"/>
</kw>
<msg time="2026-04-19T00:15:21.352400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:20.980358" elapsed="0.372101"/>
</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-19T00:15:20.979576" elapsed="0.372967"/>
</kw>
<msg time="2026-04-19T00:15:21.352585" 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-19T00:15:20.978771" elapsed="0.373859"/>
</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-19T00:15:21.355696" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:15:21.356195" elapsed="0.000313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:21.356668" 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-19T00:15:21.352930" elapsed="0.003891"/>
</kw>
<msg time="2026-04-19T00:15:21.356913" level="INFO">${output} = 1</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-19T00:15:20.976584" elapsed="0.380369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:21.357503" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:21.357248" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:21.357592" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:21.357748" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:20.974409" elapsed="0.383364"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:21.357821" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:21.357967" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:20.972161" elapsed="0.385830"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:21.358564" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:21.358166" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:20.971090" elapsed="0.387661">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:23.362523" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:23.361695" elapsed="0.000902"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:23.365090" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:23.364351" elapsed="0.000806"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:23.367356" 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-19T00:15:23.367653" 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-19T00:15:23.366793" elapsed="0.000932"/>
</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-19T00:15:23.375330" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:23.374241" elapsed="0.001381"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:23.374136" elapsed="0.001606"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:23.378115" 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-19T00:15:23.378448" 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-19T00:15:23.377053" elapsed="0.001524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:23.380641" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:23.379833" elapsed="0.000943"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:23.382825" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:23.382061" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:23.385486" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:23.385573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:23.385195" 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-19T00:15:23.385862" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:23.387224" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:23.706823" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:23.386834" elapsed="0.320165"/>
</kw>
<msg time="2026-04-19T00:15:23.707134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:23.386466" elapsed="0.320793"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:23.384374" elapsed="0.323249"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:23.709487" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:23.732398" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:23.732754" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:23.732940" 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-19T00:15:23.708858" elapsed="0.024212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:23.734237" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:23.735814" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:23.735343" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:23.736397" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:23.736144" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:23.736078" elapsed="0.000458"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:23.736891" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T00:15:23.736683" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:23.736634" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:23.737184" 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-19T00:15:23.743695" elapsed="0.000941"/>
</kw>
<kw name="Open 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-19T00:15:23.745056" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:23.745424" 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-19T00:15:23.738553" elapsed="0.007085"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:23.371516" elapsed="0.374347"/>
</kw>
<msg time="2026-04-19T00:15:23.746287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:23.370202" elapsed="0.376152"/>
</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-19T00:15:23.369194" elapsed="0.377260"/>
</kw>
<msg time="2026-04-19T00:15:23.746498" 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-19T00:15:23.368142" elapsed="0.378405"/>
</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-19T00:15:23.749601" 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-19T00:15:23.750129" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:23.750431" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:23.746843" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T00:15:23.750672" level="INFO">${output} = 1</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-19T00:15:23.365665" elapsed="0.385033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:23.751209" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:23.750883" elapsed="0.000371"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:23.751297" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:23.751453" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:23.363188" elapsed="0.388290"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:23.751526" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:23.751673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:23.360804" elapsed="0.390895"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:23.752303" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:23.751883" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:23.359679" elapsed="0.392812">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:25.754773" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:25.754295" elapsed="0.000522"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:25.756055" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:25.755647" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:25.757329" 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-19T00:15:25.757462" 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-19T00:15:25.757105" elapsed="0.000391"/>
</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-19T00:15:25.762768" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:25.762160" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:25.761739" elapsed="0.001209"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:25.764786" 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-19T00:15:25.765133" 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-19T00:15:25.764206" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:25.767212" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:25.766480" elapsed="0.000881"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:25.769702" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:25.768689" elapsed="0.001135"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:25.772792" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:25.772893" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:25.772419" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:25.773465" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:25.775162" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:26.104046" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:25.774723" elapsed="0.329477"/>
</kw>
<msg time="2026-04-19T00:15:26.104286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:25.774240" elapsed="0.330135"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:25.771359" elapsed="0.333299"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:26.106181" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:26.129495" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:26.130021" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:26.130434" 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-19T00:15:26.105762" elapsed="0.024891"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:26.133123" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:26.136472" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:26.135368" elapsed="0.001344"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:26.137717" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:26.137126" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:26.136946" elapsed="0.001182"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:26.138682" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-19T00:15:26.138345" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:26.138275" elapsed="0.000665"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:26.139099" elapsed="0.000058"/>
</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-19T00:15:26.146125" elapsed="0.000513"/>
</kw>
<kw name="Open 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-19T00:15:26.146993" elapsed="0.000298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:26.147577" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:26.141311" elapsed="0.006586"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:25.760078" elapsed="0.388302"/>
</kw>
<msg time="2026-04-19T00:15:26.148819" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:25.759105" elapsed="0.389801"/>
</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-19T00:15:25.758403" elapsed="0.390645"/>
</kw>
<msg time="2026-04-19T00:15:26.149112" 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-19T00:15:25.757706" elapsed="0.391473"/>
</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-19T00:15:26.152550" 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-19T00:15:26.153053" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:26.153384" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:26.149764" elapsed="0.003771"/>
</kw>
<msg time="2026-04-19T00:15:26.153628" level="INFO">${output} = 1</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-19T00:15:25.756557" elapsed="0.397097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:26.154107" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:26.153838" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:26.154196" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:26.154351" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:25.755115" elapsed="0.399261"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:26.154424" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:26.154569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:25.753784" elapsed="0.400810"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:26.155177" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:26.154750" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:25.753118" elapsed="0.402247">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:28.158755" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:28.157994" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:28.160841" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:28.160238" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:28.162695" 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-19T00:15:28.162924" 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-19T00:15:28.162373" elapsed="0.000611"/>
</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-19T00:15:28.168786" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:28.168317" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:28.167989" elapsed="0.000936"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:28.170375" 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-19T00:15:28.170614" 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-19T00:15:28.169919" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:28.172245" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:28.171679" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:28.174099" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:28.173393" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:28.176433" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:28.176511" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:28.176154" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:28.176744" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:28.178195" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:28.484458" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:28.177853" elapsed="0.306753"/>
</kw>
<msg time="2026-04-19T00:15:28.484692" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:28.177486" elapsed="0.307297"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:28.175385" elapsed="0.309698"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:28.486646" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:28.508624" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:28.509161" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:28.509492" 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-19T00:15:28.486148" elapsed="0.023553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:28.511909" elapsed="0.000876"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:28.514984" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:28.514010" elapsed="0.001239"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:28.516165" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:28.515623" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:28.515473" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:28.517250" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:15:28.516776" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:28.516672" elapsed="0.000929"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:28.517778" elapsed="0.000085"/>
</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-19T00:15:28.523844" 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-19T00:15:28.524433" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:28.524789" 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-19T00:15:28.520490" elapsed="0.004506"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:28.166689" elapsed="0.358549"/>
</kw>
<msg time="2026-04-19T00:15:28.525541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:28.165811" elapsed="0.359790"/>
</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-19T00:15:28.164536" elapsed="0.361146"/>
</kw>
<msg time="2026-04-19T00:15:28.525724" 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-19T00:15:28.163370" elapsed="0.362400"/>
</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-19T00:15:28.528786" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:15:28.529278" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:28.529573" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:28.526127" elapsed="0.003595"/>
</kw>
<msg time="2026-04-19T00:15:28.529917" level="INFO">${output} = 1</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-19T00:15:28.161431" elapsed="0.368514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:28.530467" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:28.530215" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:28.530556" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:28.530708" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:28.159306" elapsed="0.371428"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:28.530782" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:28.530927" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:28.157170" elapsed="0.373782"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:28.531536" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:28.531126" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:28.156133" elapsed="0.375587">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:30.534125" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:30.533621" elapsed="0.000550"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:30.535477" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:30.535088" elapsed="0.000427"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:30.536638" 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-19T00:15:30.536780" 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-19T00:15:30.536419" elapsed="0.000399"/>
</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-19T00:15:30.544953" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:30.544273" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:30.541686" elapsed="0.003506"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:30.547589" 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-19T00:15:30.547990" 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-19T00:15:30.546834" elapsed="0.001345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:30.550815" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:30.549877" elapsed="0.001098"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:30.552841" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:30.552098" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:30.555316" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:30.555395" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:30.555014" 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-19T00:15:30.555634" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:30.556895" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:30.879167" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:30.556571" elapsed="0.322840"/>
</kw>
<msg time="2026-04-19T00:15:30.879494" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:30.556211" elapsed="0.323372"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:30.554225" elapsed="0.325631"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:30.881351" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:30.903979" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:30.904518" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:30.904858" 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-19T00:15:30.880943" elapsed="0.024167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:30.907360" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:30.910436" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:30.909584" elapsed="0.000999"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:30.911159" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:30.910809" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:30.910729" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:30.911866" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:15:30.911577" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:30.911489" elapsed="0.000671"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:30.912275" elapsed="0.000057"/>
</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-19T00:15:30.919118" 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-19T00:15:30.919914" elapsed="0.000287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:30.920508" elapsed="0.000184"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:30.914297" elapsed="0.006573"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:30.539807" elapsed="0.381635"/>
</kw>
<msg time="2026-04-19T00:15:30.921879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:30.538725" elapsed="0.383246"/>
</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-19T00:15:30.537778" elapsed="0.384335"/>
</kw>
<msg time="2026-04-19T00:15:30.922173" 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-19T00:15:30.537060" elapsed="0.385171"/>
</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-19T00:15:30.925362" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:15:30.925869" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:30.926195" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:30.922541" elapsed="0.003806"/>
</kw>
<msg time="2026-04-19T00:15:30.926441" level="INFO">${output} = 1</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-19T00:15:30.535816" elapsed="0.390651"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:30.926936" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:30.926680" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:30.927042" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:15:30.927207" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:30.534466" elapsed="0.392766"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:30.927280" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:30.927426" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:30.533101" elapsed="0.394352"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:30.928102" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:30.927684" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:30.532388" elapsed="0.395902">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:32.931982" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:32.931223" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:32.934125" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:32.933493" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:32.935778" 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-19T00:15:32.935921" 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-19T00:15:32.935550" elapsed="0.000408"/>
</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-19T00:15:32.941257" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:32.940605" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:32.940528" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:32.943771" 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-19T00:15:32.944146" 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-19T00:15:32.942829" elapsed="0.001453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:32.946398" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:32.945617" elapsed="0.000972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:32.948515" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:32.947748" elapsed="0.000866"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:32.950872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:32.950951" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:32.950586" 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-19T00:15:32.951200" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:32.952627" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:33.278321" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:32.952280" elapsed="0.326205"/>
</kw>
<msg time="2026-04-19T00:15:33.278580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:32.951761" elapsed="0.326919"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:32.949797" elapsed="0.329267"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:33.280818" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:33.303928" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:33.304446" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:33.304672" 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-19T00:15:33.280357" elapsed="0.024459"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:33.306639" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:33.309292" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:33.308509" elapsed="0.000991"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:33.310215" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:33.309770" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:33.309682" elapsed="0.000780"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:33.311084" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T00:15:33.310715" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:33.310640" elapsed="0.000692"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:33.311458" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:33.323211" 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-19T00:15:33.323819" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:33.324206" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:33.314698" elapsed="0.009748"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:32.938647" elapsed="0.386043"/>
</kw>
<msg time="2026-04-19T00:15:33.325061" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:32.937674" elapsed="0.387460"/>
</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-19T00:15:32.936908" elapsed="0.388337"/>
</kw>
<msg time="2026-04-19T00:15:33.325303" 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-19T00:15:32.936199" elapsed="0.389166"/>
</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-19T00:15:33.328607" 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-19T00:15:33.329109" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:33.329421" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:33.325808" elapsed="0.003764"/>
</kw>
<msg time="2026-04-19T00:15:33.329666" level="INFO">${output} = 1</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-19T00:15:32.934719" elapsed="0.394974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:33.330165" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:33.329893" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:33.330256" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:15:33.330415" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:32.932543" elapsed="0.397898"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:33.330503" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:15:33.330660" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:32.930229" elapsed="0.400461"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:33.331395" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:33.330863" elapsed="0.000617">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:32.929131" elapsed="0.402483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:35.335201" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:35.334426" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:35.337728" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:35.337116" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:35.339587" 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-19T00:15:35.339813" 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-19T00:15:35.339250" elapsed="0.000621"/>
</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-19T00:15:35.344870" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:35.344298" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:35.344193" elapsed="0.000870"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:35.346865" 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-19T00:15:35.347142" 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-19T00:15:35.346143" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:35.348843" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:35.348296" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:35.350632" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:35.349922" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:35.353071" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:35.353150" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:35.352767" 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-19T00:15:35.353382" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:35.354651" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:35.724280" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:35.354318" elapsed="0.370071"/>
</kw>
<msg time="2026-04-19T00:15:35.724459" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:35.353939" elapsed="0.370601"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:35.351968" elapsed="0.372810"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:35.726182" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:35.749267" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:35.749761" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:35.750135" 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-19T00:15:35.725808" elapsed="0.024538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:35.752611" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:35.755771" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:35.754765" elapsed="0.001232"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:35.757076" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:35.756373" elapsed="0.000882"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:35.756251" elapsed="0.001129"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:35.758198" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:15:35.757706" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:35.757595" elapsed="0.000966"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:35.758737" 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-19T00:15:35.766630" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:15:35.767247" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:35.767620" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:35.761853" elapsed="0.005979"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:35.342664" elapsed="0.425410"/>
</kw>
<msg time="2026-04-19T00:15:35.768389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:35.341956" elapsed="0.426491"/>
</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-19T00:15:35.341414" elapsed="0.427116"/>
</kw>
<msg time="2026-04-19T00:15:35.768571" 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-19T00:15:35.340254" elapsed="0.428364"/>
</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-19T00:15:35.771690" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:15:35.772188" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:35.772489" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:35.768913" elapsed="0.003725"/>
</kw>
<msg time="2026-04-19T00:15:35.772730" level="INFO">${output} = 1</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-19T00:15:35.338305" elapsed="0.434451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:35.773207" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:35.772934" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:35.773295" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:35.773450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:35.336109" elapsed="0.437366"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:35.773522" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:15:35.773667" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:35.333574" elapsed="0.440118"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:35.774260" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:35.773847" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:35.332501" elapsed="0.441946">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:37.777943" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:37.777220" elapsed="0.000794"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:37.780113" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:37.779475" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:37.781445" 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-19T00:15:37.781715" 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-19T00:15:37.781208" elapsed="0.000548"/>
</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-19T00:15:37.787363" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:37.786685" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:37.786607" elapsed="0.000987"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:37.790080" 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-19T00:15:37.790439" 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-19T00:15:37.789044" elapsed="0.001541"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:37.792730" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:37.792059" elapsed="0.000783"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:37.794582" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:37.793810" elapsed="0.000871"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:37.796947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:37.797041" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:37.796660" 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-19T00:15:37.797285" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:37.798719" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:38.118688" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:37.798388" elapsed="0.320470"/>
</kw>
<msg time="2026-04-19T00:15:38.118941" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:37.797857" elapsed="0.321186"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:37.795882" elapsed="0.323443"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:38.120796" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:38.143600" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:38.144150" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:38.144491" 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-19T00:15:38.120404" elapsed="0.024301"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:38.146962" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:38.150100" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:38.149120" elapsed="0.001212"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:38.151232" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:38.150676" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:38.150555" elapsed="0.000964"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:38.152335" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:15:38.151848" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:38.151738" elapsed="0.000951"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:38.152871" elapsed="0.000086"/>
</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-19T00:15:38.159359" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:38.159975" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:38.160354" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:38.155809" elapsed="0.004757"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:37.784658" elapsed="0.376134"/>
</kw>
<msg time="2026-04-19T00:15:38.161170" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:37.783614" elapsed="0.377617"/>
</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-19T00:15:37.782778" elapsed="0.378537"/>
</kw>
<msg time="2026-04-19T00:15:38.161357" 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-19T00:15:37.781993" elapsed="0.379411"/>
</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-19T00:15:38.164379" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:15:38.164853" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:38.165245" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:38.161693" elapsed="0.003704"/>
</kw>
<msg time="2026-04-19T00:15:38.165488" level="INFO">${output} = 1</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-19T00:15:37.780583" elapsed="0.384931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:38.165947" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:38.165700" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:38.166049" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:15:38.166204" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:37.778493" elapsed="0.387736"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:38.166276" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:15:38.166421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:37.776377" elapsed="0.390069"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:38.167041" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:38.166601" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:37.775198" elapsed="0.392031">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:40.170805" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:40.170019" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:40.172959" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:40.172360" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:40.174797" 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-19T00:15:40.175021" 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-19T00:15:40.174475" elapsed="0.000639"/>
</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-19T00:15:40.182062" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:40.181127" elapsed="0.001179"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:40.180534" elapsed="0.001900"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:40.185622" 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-19T00:15:40.186180" 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-19T00:15:40.184504" elapsed="0.001871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:40.189567" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:40.188593" elapsed="0.001141"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:40.192395" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:40.191198" elapsed="0.001332"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:40.196150" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:40.196280" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:40.195598" elapsed="0.000721"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:40.196638" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:40.198631" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:40.534866" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:40.198011" elapsed="0.336997"/>
</kw>
<msg time="2026-04-19T00:15:40.535120" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:40.197482" elapsed="0.337723"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:40.194365" elapsed="0.341124"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:40.536951" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:40.559800" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:40.560375" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:40.560717" 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-19T00:15:40.536565" elapsed="0.024364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:40.563248" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:40.566985" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:40.565973" elapsed="0.001299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:40.568227" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:40.567661" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:40.567535" elapsed="0.000992"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:40.569550" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T00:15:40.568923" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:40.568777" elapsed="0.001140"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:40.570191" elapsed="0.000087"/>
</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-19T00:15:40.575795" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T00:15:40.576370" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:40.576730" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:40.572360" elapsed="0.004581"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:40.178394" elapsed="0.398846"/>
</kw>
<msg time="2026-04-19T00:15:40.577618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:40.177394" elapsed="0.400286"/>
</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-19T00:15:40.176624" elapsed="0.401141"/>
</kw>
<msg time="2026-04-19T00:15:40.577807" 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-19T00:15:40.175462" elapsed="0.402392"/>
</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-19T00:15:40.580875" 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-19T00:15:40.581455" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:40.581753" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:40.578164" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T00:15:40.581993" level="INFO">${output} = 1</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-19T00:15:40.173533" elapsed="0.408486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:40.582465" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:40.582213" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:40.582552" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:40.582704" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:40.171393" elapsed="0.411336"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:40.582776" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:15:40.582919" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:40.169212" elapsed="0.413733"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:40.583535" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:40.583138" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:40.168139" elapsed="0.415583">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:42.587695" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:15:42.586804" elapsed="0.000965"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:42.589980" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:42.589360" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:42.591904" 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-19T00:15:42.592171" 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-19T00:15:42.591567" elapsed="0.000665"/>
</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-19T00:15:42.599556" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:42.599068" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:42.598747" elapsed="0.000953"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:42.601191" 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-19T00:15:42.601439" 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-19T00:15:42.600719" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:42.603201" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:42.602631" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:42.605137" level="INFO">${conn_id} = 495</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:42.604387" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:42.607599" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:42.607678" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:42.607307" 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-19T00:15:42.607947" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:42.609282" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:42.930593" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:42.608915" elapsed="0.321827"/>
</kw>
<msg time="2026-04-19T00:15:42.931017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:42.608553" elapsed="0.322588"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:42.606494" elapsed="0.325007"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:42.933166" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:15:42.955711" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:42.956336" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:15:42.956706" 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-19T00:15:42.932724" elapsed="0.024219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:42.959439" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:42.962969" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:42.961934" elapsed="0.001314"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:42.964301" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:42.963618" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:42.963488" elapsed="0.001128"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:42.964987" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:15:42.964784" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:42.964733" elapsed="0.000480"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:42.965293" 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-19T00:15:42.971548" elapsed="0.000495"/>
</kw>
<kw name="Open 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-19T00:15:42.972417" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:42.972924" elapsed="0.000263"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:42.966953" elapsed="0.006382"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:42.596814" elapsed="0.376824"/>
</kw>
<msg time="2026-04-19T00:15:42.974061" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:42.595146" elapsed="0.379002"/>
</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-19T00:15:42.593821" elapsed="0.380442"/>
</kw>
<msg time="2026-04-19T00:15:42.974322" 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-19T00:15:42.592621" elapsed="0.381765"/>
</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-19T00:15:42.978042" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T00:15:42.978532" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:42.978964" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:42.974879" elapsed="0.004260"/>
</kw>
<msg time="2026-04-19T00:15:42.979246" level="INFO">${output} = 1</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-19T00:15:42.590568" elapsed="0.388712"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:42.979750" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:42.979490" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:42.979840" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:15:42.979998" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:15:42.588326" elapsed="0.391696"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:15:42.980106" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:15:42.980252" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:15:42.585851" elapsed="0.394426"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:15:42.980832" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:15:42.980431" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:15:42.584668" elapsed="0.396352">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T00:15:42.981169" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:09:42.028177" elapsed="360.953089">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:09:42.028020" elapsed="360.953318">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T00:09:33.564515" elapsed="369.416890">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:42.981708" elapsed="0.000027"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T00:15:42.981780" elapsed="0.000016"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T00:09:31.286726" elapsed="371.695154">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:09:31.285802" elapsed="371.696261">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s3-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T00:15:42.988771" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:42.988336" elapsed="0.000465"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:42.989325" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:42.988971" elapsed="0.000387"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:42.989406" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:15:42.989574" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:42.987883" elapsed="0.001717"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:42.991966" 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-19T00:15:42.992102" 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-19T00:15:42.991807" elapsed="0.000622"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:42.996607" level="INFO">${ip_address} = 10.30.171.9</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-19T00:15:42.996166" elapsed="0.000481"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:42.996711" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T00:15:42.996901" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:42.995705" elapsed="0.001227"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:43.000908" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:43.000022" elapsed="0.000989"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:43.003785" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:43.003864" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:43.003492" 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-19T00:15:43.004083" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:43.005295" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:43.682868" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:09:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:43.004955" elapsed="0.678068"/>
</kw>
<msg time="2026-04-19T00:15:43.683126" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:43.004595" elapsed="0.678624"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:43.002969" elapsed="0.680378"/>
</kw>
<msg time="2026-04-19T00:15:43.683400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:43.002573" elapsed="0.680878"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:43.001598" elapsed="0.682041"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:43.683739" elapsed="0.000060"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:42.998824" elapsed="0.685255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:43.687312" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:43.700338" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:43.700611" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:43.700722" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:43.700826" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:43.687086" elapsed="0.013799"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:43.702898" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:43.702274" elapsed="0.000725"/>
</kw>
<msg time="2026-04-19T00:15:43.703245" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:43.703370" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:43.701455" elapsed="0.001969"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:43.704945" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:43.703931" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:43.707756" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:43.707182" elapsed="0.000728"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:43.708486" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:43.708148" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:43.709108" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:43.708755" elapsed="0.000416"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:43.706219" elapsed="0.003029"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:43.705349" elapsed="0.003949"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:43.705294" elapsed="0.004041"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:43.709639" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:43.709492" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:43.709464" elapsed="0.000276"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:43.710012" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:15:43.709883" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:43.709859" elapsed="0.000309"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:43.710442" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:43.686104" elapsed="0.024679"/>
</kw>
<msg time="2026-04-19T00:15:43.710989" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:43.711113" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:43.684379" elapsed="0.026787"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:43.711541" elapsed="0.000353"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:43.712328" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T00:15:43.712078" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:43.712049" elapsed="0.000494"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:43.712748" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:42.997858" elapsed="0.715140"/>
</kw>
<msg time="2026-04-19T00:15:43.713102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:42.997172" elapsed="0.716008"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:42.995157" elapsed="0.718145"/>
</kw>
<msg time="2026-04-19T00:15:43.713360" 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-19T00:15:42.992602" elapsed="0.720822"/>
</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-19T00:15:43.717728" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:43.718443" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:43.718909" elapsed="0.000165"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:43.713844" elapsed="0.005305"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:42.991178" elapsed="0.728052"/>
</kw>
<msg time="2026-04-19T00:15:43.719342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:42.990688" elapsed="0.728722"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:42.989968" elapsed="0.729559"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:15:42.989805" elapsed="0.729842"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:43.721928" 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-19T00:15:43.722068" 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-19T00:15:43.721790" elapsed="0.000306"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:43.724233" level="INFO">${ip_address} = 10.30.171.128</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-19T00:15:43.723897" elapsed="0.000363"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:43.724311" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:15:43.724461" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:43.723572" elapsed="0.000914"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:43.727974" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:43.727269" elapsed="0.000820"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:43.730693" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:43.730771" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:43.730420" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:43.730951" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:43.732165" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:44.425330" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:09:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:43.731832" elapsed="0.693651"/>
</kw>
<msg time="2026-04-19T00:15:44.425571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:43.731478" elapsed="0.694186"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:43.729915" elapsed="0.695867"/>
</kw>
<msg time="2026-04-19T00:15:44.425836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:43.729525" elapsed="0.696363"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:43.728626" elapsed="0.697477"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:44.426209" elapsed="0.000059"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:43.726126" elapsed="0.700441"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.429818" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:44.442518" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:44.442685" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:44.442746" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:44.442803" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:44.429600" elapsed="0.013234"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.444139" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:44.443699" elapsed="0.000506"/>
</kw>
<msg time="2026-04-19T00:15:44.444339" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:44.444399" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:44.443207" elapsed="0.001223"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.445505" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:44.444833" elapsed="0.000709"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.447275" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:44.446877" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.447901" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:44.447553" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.448558" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:44.448213" elapsed="0.000409"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:44.446261" elapsed="0.002439"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:44.445740" elapsed="0.003013"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.445705" elapsed="0.003086"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:44.449136" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:44.448948" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.448919" elapsed="0.000317"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:44.449520" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T00:15:44.449385" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.449359" elapsed="0.000287"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:44.449921" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:44.428640" elapsed="0.021675"/>
</kw>
<msg time="2026-04-19T00:15:44.450547" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:44.450652" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:44.426885" elapsed="0.023831"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:44.451131" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:44.451862" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T00:15:44.451604" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.451577" elapsed="0.000525"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:44.452323" elapsed="0.000033"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:43.725193" elapsed="0.727389"/>
</kw>
<msg time="2026-04-19T00:15:44.452665" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:43.724645" elapsed="0.728092"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:43.722998" elapsed="0.729861"/>
</kw>
<msg time="2026-04-19T00:15:44.452917" 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-19T00:15:43.722272" elapsed="0.730708"/>
</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-19T00:15:44.457351" elapsed="0.000445"/>
</kw>
<kw name="Open 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-19T00:15:44.458026" elapsed="0.000336"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:44.458606" elapsed="0.000167"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:44.453429" elapsed="0.005410"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:43.721166" elapsed="0.737748"/>
</kw>
<msg time="2026-04-19T00:15:44.458969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:43.720694" elapsed="0.738326"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:43.719970" elapsed="0.739199"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:15:43.719797" elapsed="0.739421"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.461463" 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-19T00:15:44.461565" 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-19T00:15:44.461321" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:44.463744" level="INFO">${ip_address} = 10.30.171.206</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-19T00:15:44.463424" elapsed="0.000348"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:44.463822" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:44.463978" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:44.463087" elapsed="0.000916"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.467562" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:44.466833" elapsed="0.000827"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.470327" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:44.470405" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:44.470052" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.470625" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.471828" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:44.792386" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:44.471509" elapsed="0.321018"/>
</kw>
<msg time="2026-04-19T00:15:44.792609" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.471137" elapsed="0.321556"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:44.469543" elapsed="0.323268"/>
</kw>
<msg time="2026-04-19T00:15:44.792865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.469138" elapsed="0.323779"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:44.468224" elapsed="0.324922"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:44.793249" elapsed="0.000055"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:44.465676" elapsed="0.327887"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.796815" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:44.809488" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:44.809650" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:44.809810" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:44.809871" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:44.796611" elapsed="0.013292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.811204" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:44.810778" elapsed="0.000491"/>
</kw>
<msg time="2026-04-19T00:15:44.811417" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:44.811481" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:44.810282" elapsed="0.001230"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.812483" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:44.811823" elapsed="0.000698"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.814268" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:44.813849" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.814907" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:44.814560" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.815570" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:44.815212" elapsed="0.000419"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:44.813239" elapsed="0.002467"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:44.812717" elapsed="0.003038"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.812681" elapsed="0.003110"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:44.816117" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:44.815946" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.815919" elapsed="0.000292"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:44.816499" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T00:15:44.816351" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.816326" elapsed="0.000293"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:44.816895" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:44.795654" elapsed="0.021610"/>
</kw>
<msg time="2026-04-19T00:15:44.817483" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:44.817586" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:44.793852" elapsed="0.023785"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:44.818003" elapsed="0.000343"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:44.818778" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T00:15:44.818523" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:44.818495" elapsed="0.000499"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:44.819230" elapsed="0.000032"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:44.464726" elapsed="0.354766"/>
</kw>
<msg time="2026-04-19T00:15:44.819578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.464181" elapsed="0.355469"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:44.462251" elapsed="0.357520"/>
</kw>
<msg time="2026-04-19T00:15:44.819831" 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-19T00:15:44.461750" elapsed="0.358144"/>
</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-19T00:15:44.824246" elapsed="0.000487"/>
</kw>
<kw name="Open 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-19T00:15:44.824974" elapsed="0.000444"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:44.825642" elapsed="0.000153"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:44.820332" elapsed="0.005540"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:44.460677" elapsed="0.365414"/>
</kw>
<msg time="2026-04-19T00:15:44.826290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.460209" elapsed="0.366176"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:44.459487" elapsed="0.367029"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:15:44.459325" elapsed="0.367258"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:42.989663" elapsed="1.836978"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:15:42.984810" elapsed="1.841927"/>
</kw>
<kw name="Check_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-19T00:15:44.830751" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:44.830330" elapsed="0.000448"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.831256" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:44.830936" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:44.831330" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:15:44.831487" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:44.829903" elapsed="0.001609"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.833848" 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-19T00:15:44.833948" 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-19T00:15:44.833704" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:44.835814" level="INFO">${ip_address} = 10.30.171.9</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-19T00:15:44.835483" elapsed="0.000359"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:44.835891" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:15:44.836064" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:44.835162" elapsed="0.000928"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.839559" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:44.838854" elapsed="0.000803"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:44.842458" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:44.842535" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:44.842182" 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-19T00:15:44.842719" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:44.843903" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:45.159580" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:44.843586" elapsed="0.316253"/>
</kw>
<msg time="2026-04-19T00:15:45.159932" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.843230" elapsed="0.316838"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:44.841644" elapsed="0.318547"/>
</kw>
<msg time="2026-04-19T00:15:45.160246" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.841109" elapsed="0.319189"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:44.840213" elapsed="0.320287"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:45.160606" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:44.837708" elapsed="0.323212"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.164322" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:45.177053" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:45.177214" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:45.177274" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:45.177331" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:45.164116" elapsed="0.013246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.178730" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:45.178338" elapsed="0.000455"/>
</kw>
<msg time="2026-04-19T00:15:45.178922" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:45.178982" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:45.177683" elapsed="0.001329"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.179952" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:45.179339" elapsed="0.000649"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.181597" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.181253" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.182252" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.181897" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.182841" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.182515" elapsed="0.000385"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:45.180674" elapsed="0.002300"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:45.180198" elapsed="0.002825"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.180166" elapsed="0.002924"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:45.183382" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:45.183239" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.183214" elapsed="0.000260"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:45.183741" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T00:15:45.183613" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.183589" elapsed="0.000268"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:45.184144" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:45.163156" elapsed="0.021329"/>
</kw>
<msg time="2026-04-19T00:15:45.184688" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:45.184790" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:45.161272" elapsed="0.023569"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:45.185211" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:45.186241" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T00:15:45.185966" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.185940" elapsed="0.000515"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:45.186656" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:44.836779" elapsed="0.350127"/>
</kw>
<msg time="2026-04-19T00:15:45.187097" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.836249" elapsed="0.350919"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:44.834621" elapsed="0.352719"/>
</kw>
<msg time="2026-04-19T00:15:45.187399" 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-19T00:15:44.834160" elapsed="0.353303"/>
</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-19T00:15:45.191662" elapsed="0.000458"/>
</kw>
<kw name="Open 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-19T00:15:45.192352" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:45.192788" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:45.187871" elapsed="0.005123"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:44.833090" elapsed="0.360007"/>
</kw>
<msg time="2026-04-19T00:15:45.193174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:44.832625" elapsed="0.360615"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:44.831860" elapsed="0.361496"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:15:44.831700" elapsed="0.361719"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.196112" 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-19T00:15:45.196212" 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-19T00:15:45.195958" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:45.198006" level="INFO">${ip_address} = 10.30.171.128</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-19T00:15:45.197688" elapsed="0.000367"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:45.198104" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:45.198254" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:45.197371" elapsed="0.000908"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.201731" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:45.201021" elapsed="0.000842"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.204655" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:45.204732" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:45.204390" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.204913" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.206201" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:45.521704" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:45.205865" elapsed="0.316110"/>
</kw>
<msg time="2026-04-19T00:15:45.522114" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.205488" elapsed="0.316741"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:45.203885" elapsed="0.318485"/>
</kw>
<msg time="2026-04-19T00:15:45.522427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.203498" elapsed="0.318980"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:45.202422" elapsed="0.320239"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:45.522763" elapsed="0.000060"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:45.199882" elapsed="0.323219"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.526874" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:45.539232" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:45.539396" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:45.539457" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:45.539513" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:45.526632" elapsed="0.012912"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.541101" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:45.540575" elapsed="0.000616"/>
</kw>
<msg time="2026-04-19T00:15:45.541352" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:45.541463" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:45.539945" elapsed="0.001570"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.542977" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:45.541927" elapsed="0.001096"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.544838" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.544454" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.545820" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.545143" elapsed="0.000738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.546465" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.546121" elapsed="0.000405"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:45.543767" elapsed="0.002835"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:45.543248" elapsed="0.003409"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.543213" elapsed="0.003496"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:45.547077" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:45.546886" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.546857" elapsed="0.000319"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:45.547455" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-19T00:15:45.547322" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.547296" elapsed="0.000280"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:45.547852" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:45.525480" elapsed="0.022741"/>
</kw>
<msg time="2026-04-19T00:15:45.548426" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:45.548522" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:45.523389" elapsed="0.025183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:45.548930" elapsed="0.000345"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:45.549720" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T00:15:45.549458" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.549410" elapsed="0.000527"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:45.550163" elapsed="0.000032"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:45.198953" elapsed="0.351488"/>
</kw>
<msg time="2026-04-19T00:15:45.550671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.198435" elapsed="0.352348"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:45.196842" elapsed="0.354114"/>
</kw>
<msg time="2026-04-19T00:15:45.551024" 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-19T00:15:45.196390" elapsed="0.354735"/>
</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-19T00:15:45.555514" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T00:15:45.556234" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:45.556672" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:45.551577" elapsed="0.005303"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:45.195344" elapsed="0.361617"/>
</kw>
<msg time="2026-04-19T00:15:45.557151" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.194799" elapsed="0.362423"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:45.193795" elapsed="0.363544"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:15:45.193550" elapsed="0.363853"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.559859" 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-19T00:15:45.560159" 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-19T00:15:45.559674" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:45.562369" level="INFO">${ip_address} = 10.30.171.206</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-19T00:15:45.561953" elapsed="0.000445"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:45.562457" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:15:45.562638" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:45.561587" elapsed="0.001077"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.566636" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:45.565900" elapsed="0.000835"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.569650" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:45.569727" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:45.569325" 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-19T00:15:45.569913" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.571111" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:45.889193" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:45.570775" elapsed="0.318703"/>
</kw>
<msg time="2026-04-19T00:15:45.889571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.570421" elapsed="0.319252"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:45.568813" elapsed="0.320984"/>
</kw>
<msg time="2026-04-19T00:15:45.889851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.568417" elapsed="0.321487"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:45.567294" elapsed="0.322834"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:45.890236" elapsed="0.000067"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:45.564584" elapsed="0.325987"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.893901" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:45.906809" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:45.907240" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:45.907386" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:45.907524" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:45.893690" elapsed="0.013910"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.909966" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:45.909329" elapsed="0.000774"/>
</kw>
<msg time="2026-04-19T00:15:45.910316" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:45.910413" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:45.908383" elapsed="0.002078"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.911915" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:45.910952" elapsed="0.001001"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.913824" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.913452" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.917565" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.914139" elapsed="0.003513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.918258" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:45.917899" elapsed="0.000417"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:45.912764" elapsed="0.005624"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:45.912181" elapsed="0.006252"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.912142" elapsed="0.006331"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:45.918774" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:45.918624" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.918598" elapsed="0.000271"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:45.919161" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-19T00:15:45.919001" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.918979" elapsed="0.000311"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:45.919549" elapsed="0.000026"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:45.892699" elapsed="0.027111"/>
</kw>
<msg time="2026-04-19T00:15:45.919961" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:45.920047" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:45.890889" elapsed="0.029198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:45.920349" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:45.920947" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:15:45.920763" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:45.920744" elapsed="0.000390"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:45.921279" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:45.563504" elapsed="0.357956"/>
</kw>
<msg time="2026-04-19T00:15:45.921587" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.562857" elapsed="0.358787"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:45.560920" elapsed="0.360807"/>
</kw>
<msg time="2026-04-19T00:15:45.921768" 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-19T00:15:45.560374" elapsed="0.361437"/>
</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-19T00:15:45.924996" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T00:15:45.925533" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:45.925851" 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-19T00:15:45.922147" elapsed="0.003851"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:45.558980" elapsed="0.367092"/>
</kw>
<msg time="2026-04-19T00:15:45.926128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.558537" elapsed="0.367639"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:45.557822" elapsed="0.368435"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:15:45.557590" elapsed="0.368714"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:44.831567" elapsed="1.094772"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:15:44.827129" elapsed="1.099266"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.926552" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T00:15:45.931232" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:45.930630" elapsed="0.000640"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.931771" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:45.931458" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:45.931842" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:45.931997" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:45.930137" elapsed="0.001885"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.934349" 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-19T00:15:45.934451" 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-19T00:15:45.934206" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:45.936501" level="INFO">${ip_address} = 10.30.171.9</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-19T00:15:45.936020" elapsed="0.000574"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:45.936825" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:15:45.936984" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:45.935624" elapsed="0.001385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.940929" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:45.940542" elapsed="0.000413"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:45.942767" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:45.942844" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:45.942481" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.943026" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:45.944236" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:46.266738" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:45.943882" elapsed="0.323012"/>
</kw>
<msg time="2026-04-19T00:15:46.266980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.943530" elapsed="0.323564"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:45.941981" elapsed="0.325230"/>
</kw>
<msg time="2026-04-19T00:15:46.267264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.941592" elapsed="0.325724"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:45.941213" elapsed="0.326183"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:46.267501" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:45.939850" elapsed="0.327937"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.270593" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:46.283437" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:46.283609" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:46.283672" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:46.283730" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:46.270392" elapsed="0.013372"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.285678" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:46.285065" elapsed="0.000722"/>
</kw>
<msg time="2026-04-19T00:15:46.286016" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:46.286158" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:46.284212" elapsed="0.002001"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.287688" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:46.286622" elapsed="0.001130"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.290475" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:46.289837" elapsed="0.000740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.291575" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:46.290960" elapsed="0.000714"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.292650" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:46.292071" elapsed="0.000845"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:46.288825" elapsed="0.004259"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:46.287946" elapsed="0.005229"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.287898" elapsed="0.005339"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:46.293625" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:46.293374" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.293333" elapsed="0.000426"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:46.293904" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T00:15:46.293812" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.293797" elapsed="0.000195"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:46.294155" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:46.269822" elapsed="0.024454"/>
</kw>
<msg time="2026-04-19T00:15:46.294527" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:46.294611" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:46.268932" elapsed="0.025720"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:46.295678" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:46.296423" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:15:46.296237" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.296176" elapsed="0.000395"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:46.297627" elapsed="0.000037"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:45.937940" elapsed="0.359928"/>
</kw>
<msg time="2026-04-19T00:15:46.298277" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.937198" elapsed="0.361136"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:45.935102" elapsed="0.363322"/>
</kw>
<msg time="2026-04-19T00:15:46.298466" 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-19T00:15:45.934631" elapsed="0.363880"/>
</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-19T00:15:46.301590" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:15:46.302086" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:46.302397" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:46.298812" elapsed="0.003736"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:45.933565" elapsed="0.369041"/>
</kw>
<msg time="2026-04-19T00:15:46.302662" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.933120" elapsed="0.369596"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:45.932400" elapsed="0.370421"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:15:45.932242" elapsed="0.370636"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.305257" 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-19T00:15:46.305404" 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-19T00:15:46.305014" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:46.307545" level="INFO">${ip_address} = 10.30.171.128</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-19T00:15:46.307082" elapsed="0.000524"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:46.307864" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:15:46.308043" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:46.306610" elapsed="0.001460"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.312224" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:46.311745" elapsed="0.000507"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.314157" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:46.314236" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:46.313876" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.314419" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.315608" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:46.629415" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:46.315283" elapsed="0.314285"/>
</kw>
<msg time="2026-04-19T00:15:46.629654" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.314909" elapsed="0.314836"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:46.313388" elapsed="0.316477"/>
</kw>
<msg time="2026-04-19T00:15:46.629916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.312859" elapsed="0.317109"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:46.312458" elapsed="0.317601"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:46.630165" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:46.311053" elapsed="0.319402"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.633258" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:46.645784" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:46.646060" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:46.646160" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:46.646251" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:46.633003" elapsed="0.013298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.648554" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:46.647893" elapsed="0.000763"/>
</kw>
<msg time="2026-04-19T00:15:46.648870" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:46.648966" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:46.646693" elapsed="0.002323"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.650405" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:46.649427" elapsed="0.001036"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.653120" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:46.652545" elapsed="0.000668"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.654101" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:46.653549" elapsed="0.000644"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.655066" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:46.654524" elapsed="0.000639"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:46.651617" elapsed="0.003662"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:46.650741" elapsed="0.004616"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.650694" elapsed="0.004719"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:46.655756" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:46.655535" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.655499" elapsed="0.000401"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:46.656240" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T00:15:46.656013" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.655980" elapsed="0.000441"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:46.656786" elapsed="0.000036"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:46.632434" elapsed="0.024488"/>
</kw>
<msg time="2026-04-19T00:15:46.657181" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:46.657262" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:46.631563" elapsed="0.025739"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:46.658304" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:46.659001" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T00:15:46.658817" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:46.658759" elapsed="0.000406"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:46.660142" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:46.308778" elapsed="0.351571"/>
</kw>
<msg time="2026-04-19T00:15:46.660758" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.308228" elapsed="0.352585"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:46.306076" elapsed="0.354830"/>
</kw>
<msg time="2026-04-19T00:15:46.660947" 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-19T00:15:46.305590" elapsed="0.355403"/>
</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-19T00:15:46.664080" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:15:46.664566" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:46.664888" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:46.661307" elapsed="0.003748"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:46.304338" elapsed="0.360778"/>
</kw>
<msg time="2026-04-19T00:15:46.665172" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.303871" elapsed="0.361351"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:46.303164" elapsed="0.362143"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:15:46.302981" elapsed="0.362410"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.667670" 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-19T00:15:46.667770" 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-19T00:15:46.667534" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:46.669839" level="INFO">${ip_address} = 10.30.171.206</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-19T00:15:46.669394" elapsed="0.000504"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:46.670150" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:15:46.670308" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:46.668982" elapsed="0.001351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.674405" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:46.673960" elapsed="0.000472"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:46.676217" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:46.676295" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:46.675936" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.676507" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.677694" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:46.989047" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:46.677374" elapsed="0.311815"/>
</kw>
<msg time="2026-04-19T00:15:46.989277" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.677002" elapsed="0.312356"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:46.675455" elapsed="0.314010"/>
</kw>
<msg time="2026-04-19T00:15:46.989516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.675013" elapsed="0.314553"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:46.674635" elapsed="0.315009"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:46.989741" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:46.673085" elapsed="0.316930"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:46.992775" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:47.004605" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:47.004736" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:47.004786" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:47.004878" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:46.992580" elapsed="0.012348"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.007545" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:47.006204" elapsed="0.001452"/>
</kw>
<msg time="2026-04-19T00:15:47.007998" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:47.008153" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:47.005389" elapsed="0.002820"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.009602" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:47.008598" elapsed="0.001064"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.012221" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.011622" elapsed="0.000699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.013226" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.012664" elapsed="0.000657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.014220" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.013656" elapsed="0.000664"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:47.010680" elapsed="0.003762"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:47.009849" elapsed="0.004674"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.009802" elapsed="0.004780"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:47.014934" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:47.014705" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.014668" elapsed="0.000449"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:47.015437" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T00:15:47.015235" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.015200" elapsed="0.000428"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:47.015953" elapsed="0.000048"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:46.991996" elapsed="0.024314"/>
</kw>
<msg time="2026-04-19T00:15:47.016855" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:47.016937" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:46.991159" elapsed="0.025819"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:47.018023" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:47.018766" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T00:15:47.018580" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.018520" elapsed="0.000398"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:47.019929" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:46.671008" elapsed="0.349182"/>
</kw>
<msg time="2026-04-19T00:15:47.020578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.670490" elapsed="0.350146"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:46.668459" elapsed="0.352268"/>
</kw>
<msg time="2026-04-19T00:15:47.020770" 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-19T00:15:46.667953" elapsed="0.352863"/>
</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-19T00:15:47.023879" 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-19T00:15:47.024402" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:47.024716" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:47.021152" elapsed="0.003718"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:46.666832" elapsed="0.358096"/>
</kw>
<msg time="2026-04-19T00:15:47.025022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:46.666386" elapsed="0.358717"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:46.665647" elapsed="0.359547"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:15:46.665489" elapsed="0.359765"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:45.932102" elapsed="1.093188"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:15:45.927552" elapsed="1.097797"/>
</kw>
<msg time="2026-04-19T00:15:47.025389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:45.927056" elapsed="1.098379"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:47.025596" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T00:15:42.984245" elapsed="4.041438"/>
</kw>
<kw name="Check_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-19T00:15:47.029266" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:47.028862" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.029757" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:47.029454" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:47.029827" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:15:47.029980" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:47.028482" elapsed="0.001522"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.032383" 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-19T00:15:47.032490" 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-19T00:15:47.032247" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:47.034517" level="INFO">${ip_address} = 10.30.171.9</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-19T00:15:47.034237" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:47.034595" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T00:15:47.034767" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:47.033674" elapsed="0.001118"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.037453" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:47.036696" elapsed="0.000798"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.040746" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:47.040824" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:47.040471" 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-19T00:15:47.041010" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.042215" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:47.352012" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:47.041880" elapsed="0.310379"/>
</kw>
<msg time="2026-04-19T00:15:47.352344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.041521" elapsed="0.310909"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:47.039811" elapsed="0.312729"/>
</kw>
<msg time="2026-04-19T00:15:47.352631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.039084" elapsed="0.313617"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:47.037762" elapsed="0.315064"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:47.352927" elapsed="0.000040"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:47.036280" elapsed="0.316837"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.356727" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:47.369565" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:47.370207" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T00:15:47.370554" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:47.370883" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:47.356383" elapsed="0.014749"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.375505" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:47.374846" elapsed="0.000761"/>
</kw>
<msg time="2026-04-19T00:15:47.376203" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:47.376536" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:47.373403" elapsed="0.003342"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.379167" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:47.378148" elapsed="0.001156"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.381835" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.381482" elapsed="0.000542"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.382609" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.382263" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.383230" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.382877" elapsed="0.000413"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:47.380822" elapsed="0.002599"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:47.379529" elapsed="0.003952"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.379453" elapsed="0.004109"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:47.384125" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:47.383774" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.383704" elapsed="0.000603"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:47.384794" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T00:15:47.384515" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.384450" elapsed="0.000562"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:47.386402" elapsed="0.000077"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:47.354465" elapsed="0.032317"/>
</kw>
<msg time="2026-04-19T00:15:47.387134" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:47.387197" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:47.353342" elapsed="0.033889"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:47.387453" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:47.388048" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T00:15:47.387874" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.387844" elapsed="0.000323"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:47.388366" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:47.035509" elapsed="0.353020"/>
</kw>
<msg time="2026-04-19T00:15:47.388660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.034950" elapsed="0.353776"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:47.033156" elapsed="0.355854"/>
</kw>
<msg time="2026-04-19T00:15:47.389231" 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-19T00:15:47.032671" elapsed="0.356607"/>
</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-19T00:15:47.392339" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:47.392818" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:47.393228" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:47.389577" elapsed="0.003800"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:47.031599" elapsed="0.361967"/>
</kw>
<msg time="2026-04-19T00:15:47.393660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.031157" elapsed="0.362550"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:47.030458" elapsed="0.363458"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:15:47.030304" elapsed="0.363703"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.396240" 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-19T00:15:47.396339" 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-19T00:15:47.396102" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:47.398152" level="INFO">${ip_address} = 10.30.171.128</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-19T00:15:47.397866" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:47.398228" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:15:47.398376" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:47.397544" elapsed="0.000857"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.401277" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:47.400529" elapsed="0.000788"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.404394" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:47.404470" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:47.404124" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.404650" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.405833" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:47.736454" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:47.405511" elapsed="0.331104"/>
</kw>
<msg time="2026-04-19T00:15:47.736704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.405156" elapsed="0.331640"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:47.403603" elapsed="0.333314"/>
</kw>
<msg time="2026-04-19T00:15:47.737026" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.402876" elapsed="0.334248"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:47.401581" elapsed="0.335673"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:47.737353" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:47.400117" elapsed="0.337409"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.741116" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:47.754491" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:47.755179" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T00:15:47.755585" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:47.755940" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:47.740751" elapsed="0.015443"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.760424" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:47.759744" elapsed="0.000887"/>
</kw>
<msg time="2026-04-19T00:15:47.761148" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:47.761484" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:47.758490" elapsed="0.003203"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.764731" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:47.763921" elapsed="0.000913"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.766742" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.766482" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.767248" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.766994" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.767731" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:47.767479" elapsed="0.000296"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:47.765944" elapsed="0.001928"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:47.765000" elapsed="0.002918"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.764944" elapsed="0.003035"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:47.768373" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:47.768158" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.768107" elapsed="0.000394"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:47.768858" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T00:15:47.768652" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.768604" elapsed="0.000412"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:47.770001" elapsed="0.000155"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:47.738604" elapsed="0.031773"/>
</kw>
<msg time="2026-04-19T00:15:47.770617" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:47.770663" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:47.737758" elapsed="0.032929"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:47.770850" elapsed="0.000250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:47.771279" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:15:47.771166" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:47.771148" elapsed="0.000214"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:47.771517" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:47.399374" elapsed="0.372261"/>
</kw>
<msg time="2026-04-19T00:15:47.771731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.398555" elapsed="0.373225"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:47.396969" elapsed="0.375029"/>
</kw>
<msg time="2026-04-19T00:15:47.772096" 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-19T00:15:47.396519" elapsed="0.375623"/>
</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-19T00:15:47.775224" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:15:47.775726" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:47.776046" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:47.772435" elapsed="0.003834"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:47.395445" elapsed="0.381012"/>
</kw>
<msg time="2026-04-19T00:15:47.776552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.394980" elapsed="0.381620"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:47.394278" elapsed="0.382535"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:15:47.394121" elapsed="0.382772"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.779208" 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-19T00:15:47.779308" 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-19T00:15:47.779074" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:47.781108" level="INFO">${ip_address} = 10.30.171.206</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-19T00:15:47.780820" elapsed="0.000314"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:47.781182" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:47.781330" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:47.780498" elapsed="0.000857"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.784154" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:47.783397" elapsed="0.000797"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:47.787228" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:47.787304" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:47.786945" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.787504" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:47.788776" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:48.104671" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:47.788461" elapsed="0.316364"/>
</kw>
<msg time="2026-04-19T00:15:48.104909" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.787990" elapsed="0.317009"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:47.786467" elapsed="0.318667"/>
</kw>
<msg time="2026-04-19T00:15:48.105236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.785740" elapsed="0.319568"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:47.784458" elapsed="0.320974"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:48.105531" elapsed="0.000042"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:47.782963" elapsed="0.322735"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.109204" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:15:48.123573" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:48.123853" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T00:15:48.124268" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:48.124618" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:48.108847" elapsed="0.015997"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.129451" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:48.128658" elapsed="0.000905"/>
</kw>
<msg time="2026-04-19T00:15:48.130198" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:48.130661" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:48.127354" elapsed="0.003534"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.135365" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:48.133362" elapsed="0.002239"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.137638" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.137376" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.138227" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.137890" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.138715" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.138422" elapsed="0.000337"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:48.136882" elapsed="0.001976"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:48.135883" elapsed="0.003018"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.135827" elapsed="0.003134"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:48.139361" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:48.139128" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.139079" elapsed="0.000408"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:48.139833" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T00:15:48.139634" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.139587" elapsed="0.000406"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:48.140987" elapsed="0.000084"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:48.106934" elapsed="0.034357"/>
</kw>
<msg time="2026-04-19T00:15:48.141530" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:48.141576" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:48.105925" elapsed="0.035676"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:48.141761" elapsed="0.000243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:48.142223" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T00:15:48.142111" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.142093" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:48.142448" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:47.782262" elapsed="0.360304"/>
</kw>
<msg time="2026-04-19T00:15:48.142660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.781509" elapsed="0.361200"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:47.779965" elapsed="0.362960"/>
</kw>
<msg time="2026-04-19T00:15:48.143003" 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-19T00:15:47.779506" elapsed="0.363619"/>
</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-19T00:15:48.146282" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:15:48.146755" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:48.147185" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:48.143437" elapsed="0.003921"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:47.778441" elapsed="0.369103"/>
</kw>
<msg time="2026-04-19T00:15:48.147637" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:47.777871" elapsed="0.369814"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:47.777170" elapsed="0.370726"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:15:47.776993" elapsed="0.370949"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:47.030167" elapsed="1.117809"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:15:47.025929" elapsed="1.122155"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.157801" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:48.155575" elapsed="0.002259"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T00:15:48.159579" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:48.159173" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.160085" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:48.159766" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:48.160156" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:48.160310" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:48.158788" elapsed="0.001547"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.162578" 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-19T00:15:48.162677" 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-19T00:15:48.162441" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:48.164916" level="INFO">${ip_address} = 10.30.171.9</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-19T00:15:48.164461" elapsed="0.000482"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:48.164993" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:48.165163" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:48.164139" elapsed="0.001050"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.169324" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:48.168410" elapsed="0.000960"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.171639" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:48.171718" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:48.171364" 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-19T00:15:48.171901" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.173122" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:48.498714" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:48.172776" elapsed="0.326091"/>
</kw>
<msg time="2026-04-19T00:15:48.498952" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.172414" elapsed="0.326650"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:48.170846" elapsed="0.328360"/>
</kw>
<msg time="2026-04-19T00:15:48.499347" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.170446" elapsed="0.328955"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:48.169822" elapsed="0.329740"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:48.499714" elapsed="0.000089"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:48.167392" elapsed="0.332608"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.502399" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T00:15:48.514902" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:48.515020" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T00:15:48.515087" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:48.515142" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:48.502198" elapsed="0.012968"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.515972" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:48.515692" elapsed="0.000327"/>
</kw>
<msg time="2026-04-19T00:15:48.516130" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:48.516175" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:48.515349" elapsed="0.000848"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.516805" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:48.516366" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.517933" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.517682" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.518384" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.518145" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.518809" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.518574" elapsed="0.000278"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:48.517279" elapsed="0.001625"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:48.516918" elapsed="0.002021"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.516894" elapsed="0.002071"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:48.519167" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:48.519022" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.519004" elapsed="0.000230"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:48.519381" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:15:48.519288" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.519272" elapsed="0.000193"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:48.519611" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:48.501594" elapsed="0.018176"/>
</kw>
<msg time="2026-04-19T00:15:48.519911" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:48.520023" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:48.500394" elapsed="0.019708"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:48.520354" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:48.521245" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T00:15:48.520986" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.520966" elapsed="0.000467"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:48.521618" elapsed="0.000047"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:48.165874" elapsed="0.355989"/>
</kw>
<msg time="2026-04-19T00:15:48.521924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.165346" elapsed="0.356629"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:48.163586" elapsed="0.358532"/>
</kw>
<msg time="2026-04-19T00:15:48.522163" 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-19T00:15:48.162856" elapsed="0.359354"/>
</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-19T00:15:48.525297" 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-19T00:15:48.525777" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:48.526151" 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-19T00:15:48.522510" elapsed="0.003795"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:48.161815" elapsed="0.364550"/>
</kw>
<msg time="2026-04-19T00:15:48.526421" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.161375" elapsed="0.365095"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:48.160673" elapsed="0.365883"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:15:48.160519" elapsed="0.366085"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.528812" 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-19T00:15:48.528913" 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-19T00:15:48.528678" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:48.531226" level="INFO">${ip_address} = 10.30.171.128</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-19T00:15:48.530724" elapsed="0.000529"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:48.531305" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:48.531458" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:48.530395" elapsed="0.001088"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.535268" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:48.534642" elapsed="0.000671"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.537439" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:48.537516" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:48.537178" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.537697" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.538874" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:48.851606" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:48.538554" elapsed="0.313258"/>
</kw>
<msg time="2026-04-19T00:15:48.851892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.538199" elapsed="0.313771"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:48.536678" elapsed="0.315415"/>
</kw>
<msg time="2026-04-19T00:15:48.852146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.536286" elapsed="0.315909"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:48.535758" elapsed="0.316591"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:48.852492" elapsed="0.000084"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:48.533654" elapsed="0.319104"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.855154" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T00:15:48.868119" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:48.868374" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T00:15:48.868474" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:48.868564" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:48.854907" elapsed="0.013707"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.870449" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:48.869805" elapsed="0.000748"/>
</kw>
<msg time="2026-04-19T00:15:48.870797" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:48.870901" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:48.869010" elapsed="0.001980"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.872400" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:48.871411" elapsed="0.001048"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.874981" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.874387" elapsed="0.000740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.875969" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.875466" elapsed="0.000577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.876630" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:48.876257" elapsed="0.000435"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:48.873433" elapsed="0.003335"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:48.872639" elapsed="0.004178"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.872593" elapsed="0.004260"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:48.877095" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:48.876931" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.876908" elapsed="0.000281"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:48.877385" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T00:15:48.877259" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.877238" elapsed="0.000268"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:48.877709" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:48.854325" elapsed="0.023614"/>
</kw>
<msg time="2026-04-19T00:15:48.878166" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:48.878321" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:48.853137" elapsed="0.025263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:48.878745" elapsed="0.000720"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:48.879994" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T00:15:48.879658" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.879622" elapsed="0.000659"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:48.880535" elapsed="0.000062"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:48.532192" elapsed="0.348761"/>
</kw>
<msg time="2026-04-19T00:15:48.881153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.531644" elapsed="0.349589"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:48.529818" elapsed="0.351543"/>
</kw>
<msg time="2026-04-19T00:15:48.881422" 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-19T00:15:48.529122" elapsed="0.352365"/>
</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-19T00:15:48.885857" 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-19T00:15:48.886559" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:48.887176" elapsed="0.000159"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:48.881909" elapsed="0.005504"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:48.528054" elapsed="0.359444"/>
</kw>
<msg time="2026-04-19T00:15:48.887578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.527590" elapsed="0.360058"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:48.526856" elapsed="0.360913"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:15:48.526699" elapsed="0.361136"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.890023" 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-19T00:15:48.890140" 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-19T00:15:48.889886" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:48.892531" level="INFO">${ip_address} = 10.30.171.206</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-19T00:15:48.892019" elapsed="0.000541"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:48.892616" elapsed="0.000089"/>
</return>
<msg time="2026-04-19T00:15:48.892837" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:48.891689" elapsed="0.001173"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.896745" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:48.896108" elapsed="0.000687"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:48.899069" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:48.899147" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:48.898764" 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-19T00:15:48.899328" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:48.900526" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:49.202996" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:48.900180" elapsed="0.302960"/>
</kw>
<msg time="2026-04-19T00:15:49.203218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.899811" elapsed="0.303486"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:48.898282" elapsed="0.305119"/>
</kw>
<msg time="2026-04-19T00:15:49.203453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.897861" elapsed="0.305640"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:48.897325" elapsed="0.306327"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:49.203796" elapsed="0.000087"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:48.895110" elapsed="0.308980"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.206436" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T00:15:49.219013" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:49.219193" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T00:15:49.219256" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:49.219313" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.206236" elapsed="0.013108"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.220818" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:49.220213" elapsed="0.000708"/>
</kw>
<msg time="2026-04-19T00:15:49.221159" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:49.221258" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:49.219593" elapsed="0.001715"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.222639" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:49.221675" elapsed="0.001022"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.225180" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:49.224603" elapsed="0.000679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.226168" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:49.225612" elapsed="0.000647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.227276" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:49.226698" elapsed="0.000674"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:49.223689" elapsed="0.003800"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:49.222905" elapsed="0.004660"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:49.222854" elapsed="0.004767"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:49.227969" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:49.227744" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:49.227707" elapsed="0.000438"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:49.228457" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T00:15:49.228259" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:49.228225" elapsed="0.000417"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:49.228957" elapsed="0.000048"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:49.205631" elapsed="0.023711"/>
</kw>
<msg time="2026-04-19T00:15:49.229649" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:49.229887" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:49.204437" elapsed="0.025576"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:49.230702" elapsed="0.001146"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:49.232241" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:15:49.231996" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:49.231976" elapsed="0.000458"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:49.232617" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:48.893580" elapsed="0.339281"/>
</kw>
<msg time="2026-04-19T00:15:49.232922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.893051" elapsed="0.339920"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:48.890862" elapsed="0.342213"/>
</kw>
<msg time="2026-04-19T00:15:49.233117" 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-19T00:15:48.890320" elapsed="0.342843"/>
</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-19T00:15:49.236238" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:49.236709" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:49.237069" 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-19T00:15:49.233462" elapsed="0.003759"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:48.889274" elapsed="0.348006"/>
</kw>
<msg time="2026-04-19T00:15:49.237347" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:48.888816" elapsed="0.348583"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:48.888118" elapsed="0.349367"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:15:48.887943" elapsed="0.349588"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:48.160389" elapsed="1.077177"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:15:48.158199" elapsed="1.079425"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:48.157911" elapsed="1.079749"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:48.157892" elapsed="1.079794"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.239011" 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-19T00:15:49.239140" 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-19T00:15:49.238875" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T00:15:49.240306" elapsed="0.000476"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.241775" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:49.241396" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.242285" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:49.241962" elapsed="0.000382"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:49.242392" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:49.242551" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:49.241001" elapsed="0.001575"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:49.243583" level="INFO">${ip_address} = 10.30.171.9</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-19T00:15:49.243312" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:49.243657" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:15:49.243803" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:49.242974" elapsed="0.000854"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.245394" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:49.245008" elapsed="0.000412"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:49.247849" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:49.248121" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:49.247336" elapsed="0.000883"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:49.248506" elapsed="0.000610"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.250405" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:49.615582" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:49.250086" elapsed="0.365886"/>
</kw>
<msg time="2026-04-19T00:15:49.616316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:49.249412" elapsed="0.367106"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:49.246383" elapsed="0.370453"/>
</kw>
<msg time="2026-04-19T00:15:49.617078" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:49.245980" elapsed="0.371216"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:49.245598" elapsed="0.371738"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:49.617410" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:49.244652" elapsed="0.372995"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.621352" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T00:15:49.634633" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.620477" elapsed="0.014400"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T00:15:49.620176" elapsed="0.014788"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.636179" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T00:15:49.743441" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.635522" elapsed="0.108278"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T00:15:49.635205" elapsed="0.108702"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.745515" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T00:15:49.795118" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.744612" elapsed="0.050835"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T00:15:49.744217" elapsed="0.051468"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.797463" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T00:15:49.843461" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.796406" elapsed="0.047379"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T00:15:49.795959" elapsed="0.047939"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.845641" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T00:15:49.891596" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.844619" elapsed="0.047218"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T00:15:49.844223" elapsed="0.047694"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.893026" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T00:15:49.940645" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.892428" elapsed="0.048556"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T00:15:49.892157" elapsed="0.048986"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.943635" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T00:15:49.991360" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.941967" elapsed="0.049843"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T00:15:49.941422" elapsed="0.050501"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:49.993550" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T00:15:50.039760" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:49.992604" elapsed="0.047609"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T00:15:49.992226" elapsed="0.048094"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T00:15:49.619866" elapsed="0.420536"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T00:15:49.619237" elapsed="0.421321"/>
</kw>
<msg time="2026-04-19T00:15:50.040821" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:50.040931" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:49.617962" elapsed="0.423025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:50.041747" elapsed="0.000805"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:50.043082" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:15:50.042741" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:50.042689" elapsed="0.000600"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:50.043618" elapsed="0.000049"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:49.244102" elapsed="0.799788"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T00:15:49.242796" elapsed="0.801190"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:50.046165" level="INFO">${ip_address} = 10.30.171.128</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-19T00:15:50.045514" elapsed="0.000710"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:50.046331" elapsed="0.000140"/>
</return>
<msg time="2026-04-19T00:15:50.046750" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:50.044723" elapsed="0.002083"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.051717" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:50.050782" elapsed="0.001003"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:50.058336" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:50.058945" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:50.057095" elapsed="0.002102"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:50.059850" elapsed="0.001492"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.063535" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:50.377195" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:50.063199" elapsed="0.314267"/>
</kw>
<msg time="2026-04-19T00:15:50.377619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:50.062012" elapsed="0.315723"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:50.054240" elapsed="0.323671"/>
</kw>
<msg time="2026-04-19T00:15:50.378009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:50.053285" elapsed="0.324802"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:50.052382" elapsed="0.325787"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:50.378249" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:50.049825" elapsed="0.328605"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.380506" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T00:15:50.393052" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.380073" elapsed="0.013168"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T00:15:50.379902" elapsed="0.013398"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.394487" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T00:15:50.508168" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.393665" elapsed="0.114899"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T00:15:50.393456" elapsed="0.115218"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.510485" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T00:15:50.563789" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.509438" elapsed="0.054685"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T00:15:50.508967" elapsed="0.055267"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.565996" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T00:15:50.615299" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.564947" elapsed="0.050648"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T00:15:50.564536" elapsed="0.051160"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.617511" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T00:15:50.663166" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.616452" elapsed="0.047060"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T00:15:50.615951" elapsed="0.047670"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.665421" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T00:15:50.711529" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.664368" elapsed="0.047511"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T00:15:50.663899" elapsed="0.048096"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.713788" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T00:15:50.759266" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.712792" elapsed="0.046721"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T00:15:50.712354" elapsed="0.047244"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.761067" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T00:15:50.806962" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:50.760172" elapsed="0.046986"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T00:15:50.759799" elapsed="0.047417"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T00:15:50.379751" elapsed="0.427511"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T00:15:50.379410" elapsed="0.427952"/>
</kw>
<msg time="2026-04-19T00:15:50.807517" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:50.807582" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:50.378681" elapsed="0.428934"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:50.807858" elapsed="0.000342"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:50.808505" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-19T00:15:50.808313" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:50.808281" elapsed="0.000431"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:50.808928" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:50.048145" elapsed="0.760983"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T00:15:50.044310" elapsed="0.764879"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:50.810515" level="INFO">${ip_address} = 10.30.171.206</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-19T00:15:50.810119" elapsed="0.000433"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:50.810621" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:15:50.810829" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:50.809603" elapsed="0.001260"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.813101" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:50.812550" elapsed="0.000589"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:50.816642" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:50.816996" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:50.815870" elapsed="0.001285"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:50.817559" elapsed="0.000946"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:50.820325" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:51.126137" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:50.819856" elapsed="0.306399"/>
</kw>
<msg time="2026-04-19T00:15:51.126370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:50.818925" elapsed="0.307543"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:50.814570" elapsed="0.312054"/>
</kw>
<msg time="2026-04-19T00:15:51.126713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:50.813920" elapsed="0.312845"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:50.813386" elapsed="0.313456"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:51.126893" elapsed="0.000052"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:50.812025" elapsed="0.315085"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.129094" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T00:15:51.141959" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.128621" elapsed="0.013522"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T00:15:51.128470" elapsed="0.013725"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.143144" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T00:15:51.190957" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.142517" elapsed="0.048762"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T00:15:51.142321" elapsed="0.049052"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.192878" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T00:15:51.238859" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.191957" elapsed="0.047191"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T00:15:51.191606" elapsed="0.047632"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.240823" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T00:15:51.287390" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.239900" elapsed="0.047736"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T00:15:51.239576" elapsed="0.048143"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.289194" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T00:15:51.335377" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.288280" elapsed="0.047353"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T00:15:51.287917" elapsed="0.047803"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.337205" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T00:15:51.383250" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.336301" elapsed="0.047207"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T00:15:51.335929" elapsed="0.047667"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.385130" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T00:15:51.434967" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.384190" elapsed="0.051065"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T00:15:51.383805" elapsed="0.051537"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.436779" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T00:15:51.482769" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.435874" elapsed="0.047143"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T00:15:51.435553" elapsed="0.047591"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T00:15:51.128319" elapsed="0.354897"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T00:15:51.127975" elapsed="0.355381"/>
</kw>
<msg time="2026-04-19T00:15:51.483588" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:51.483691" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:51.127331" elapsed="0.356414"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:51.484163" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:51.485124" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:15:51.484797" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:51.484751" elapsed="0.000583"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:51.485667" elapsed="0.000074"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:50.811252" elapsed="0.674717"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T00:15:50.809320" elapsed="0.676777"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:49.242630" elapsed="2.243537"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T00:15:49.239817" elapsed="2.246470"/>
</kw>
<msg time="2026-04-19T00:15:51.486384" 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-19T00:15:49.239319" elapsed="2.247177"/>
</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-19T00:15:51.492127" elapsed="0.000500"/>
</kw>
<kw name="Open 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-19T00:15:51.492856" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:51.493303" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:51.487215" elapsed="0.006295"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T00:15:49.238378" elapsed="2.255212"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T00:15:49.237857" elapsed="2.255823"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T00:15:51.496259" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:51.495682" elapsed="0.000615"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.496948" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:51.496522" elapsed="0.000462"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:51.497068" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T00:15:51.497288" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:51.495155" elapsed="0.002168"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.502738" 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-19T00:15:51.502840" 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-19T00:15:51.502597" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:51.504812" level="INFO">${ip_address} = 10.30.171.9</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-19T00:15:51.504363" elapsed="0.000477"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:51.504888" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:51.505065" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:51.504023" elapsed="0.001069"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.508906" level="INFO">${odl_connection} = 532</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:51.508319" elapsed="0.000633"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.511140" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:51.511216" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:51.510848" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.511397" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.512570" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:51.866080" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:51.512253" elapsed="0.353932"/>
</kw>
<msg time="2026-04-19T00:15:51.866255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.511881" elapsed="0.354449"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:51.510370" elapsed="0.356056"/>
</kw>
<msg time="2026-04-19T00:15:51.866501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.509939" elapsed="0.356615"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:51.509417" elapsed="0.357276"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:51.866832" elapsed="0.000085"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:51.507312" elapsed="0.359806"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.869413" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T00:15:51.881972" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:51.882257" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T00:15:51.882357" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:51.882447" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:51.869218" elapsed="0.013280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.884307" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:51.883685" elapsed="0.000724"/>
</kw>
<msg time="2026-04-19T00:15:51.884618" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:51.884714" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:51.882892" elapsed="0.001872"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.886163" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:51.885170" elapsed="0.001053"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.888641" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:51.888094" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.889694" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:51.889111" elapsed="0.000675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.890411" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:51.890077" elapsed="0.000393"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:51.887183" elapsed="0.003360"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:51.886404" elapsed="0.004188"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:51.886356" elapsed="0.004272"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:51.890845" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:51.890706" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:51.890683" elapsed="0.000253"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:51.891154" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T00:15:51.891007" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:51.890986" elapsed="0.000285"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:51.891473" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:51.868631" elapsed="0.023061"/>
</kw>
<msg time="2026-04-19T00:15:51.891883" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:51.892069" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:51.867443" elapsed="0.024711"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:51.892495" elapsed="0.000673"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:51.893692" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T00:15:51.893348" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:51.893321" elapsed="0.000628"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:51.894230" elapsed="0.000065"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:51.505816" elapsed="0.388753"/>
</kw>
<msg time="2026-04-19T00:15:51.894652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.505251" elapsed="0.389470"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:51.503507" elapsed="0.391336"/>
</kw>
<msg time="2026-04-19T00:15:51.894900" 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-19T00:15:51.503042" elapsed="0.391920"/>
</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-19T00:15:51.899510" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T00:15:51.900257" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:51.900677" 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-19T00:15:51.895395" elapsed="0.005489"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:51.499426" elapsed="0.401541"/>
</kw>
<msg time="2026-04-19T00:15:51.901143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.498784" elapsed="0.402432"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:51.497804" elapsed="0.403530"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:15:51.497576" elapsed="0.403821"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.903778" 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-19T00:15:51.903879" 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-19T00:15:51.903644" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:51.905872" level="INFO">${ip_address} = 10.30.171.128</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-19T00:15:51.905402" elapsed="0.000497"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:51.905948" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:51.906122" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:51.905080" elapsed="0.001067"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.910060" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:51.909418" elapsed="0.000689"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:51.912267" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:51.912344" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:51.911988" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.912525" elapsed="0.000479"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:51.913947" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:52.226311" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:51.913624" elapsed="0.312824"/>
</kw>
<msg time="2026-04-19T00:15:52.226529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.913243" elapsed="0.313372"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:51.911507" elapsed="0.315222"/>
</kw>
<msg time="2026-04-19T00:15:52.226862" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.911115" elapsed="0.315800"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:51.910567" elapsed="0.316527"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:52.227247" elapsed="0.000087"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:51.908409" elapsed="0.319116"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.229911" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T00:15:52.242177" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:52.242297" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T00:15:52.242342" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:52.242382" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:52.229709" elapsed="0.012696"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.243235" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:52.242926" elapsed="0.000354"/>
</kw>
<msg time="2026-04-19T00:15:52.243373" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:52.243416" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:52.242585" elapsed="0.000854"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.244063" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:52.243610" elapsed="0.000481"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.245200" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.244927" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.245663" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.245424" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.246102" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.245852" elapsed="0.000294"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:52.244526" elapsed="0.001672"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:52.244179" elapsed="0.002053"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.244155" elapsed="0.002103"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:52.246415" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:52.246314" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.246297" elapsed="0.000184"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:52.246620" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:15:52.246532" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.246517" elapsed="0.000186"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:52.246848" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:52.229094" elapsed="0.017914"/>
</kw>
<msg time="2026-04-19T00:15:52.247172" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:52.247283" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:52.227880" elapsed="0.019461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:52.247590" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:52.248443" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T00:15:52.248218" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.248199" elapsed="0.000429"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:52.248810" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:51.906828" elapsed="0.342250"/>
</kw>
<msg time="2026-04-19T00:15:52.249139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.906304" elapsed="0.342884"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:51.904537" elapsed="0.344779"/>
</kw>
<msg time="2026-04-19T00:15:52.249373" 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-19T00:15:51.904078" elapsed="0.345350"/>
</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-19T00:15:52.252720" 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-19T00:15:52.253216" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:52.253557" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:52.249726" elapsed="0.003983"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:51.903013" elapsed="0.350755"/>
</kw>
<msg time="2026-04-19T00:15:52.253824" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:51.902569" elapsed="0.351304"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:51.901776" elapsed="0.352183"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:15:51.901559" elapsed="0.352447"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.256267" 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-19T00:15:52.256366" 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-19T00:15:52.256130" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:52.258346" level="INFO">${ip_address} = 10.30.171.206</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-19T00:15:52.257872" elapsed="0.000502"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:15:52.258423" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:52.258575" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:52.257553" elapsed="0.001047"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.262447" level="INFO">${odl_connection} = 536</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:52.261840" elapsed="0.000652"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.264607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:52.264683" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:52.264344" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.264863" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.266275" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:52.576857" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:52.265932" elapsed="0.311189"/>
</kw>
<msg time="2026-04-19T00:15:52.577229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.265571" elapsed="0.311754"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:52.263841" elapsed="0.313597"/>
</kw>
<msg time="2026-04-19T00:15:52.577490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.263452" elapsed="0.314090"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:15:52.262935" elapsed="0.314767"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:15:52.577853" elapsed="0.000085"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:15:52.260829" elapsed="0.317325"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.580543" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T00:15:52.593186" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:52.593362" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T00:15:52.593429" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:15:52.593489" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:15:52.580340" elapsed="0.013183"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.594736" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:15:52.594331" elapsed="0.000473"/>
</kw>
<msg time="2026-04-19T00:15:52.594942" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:15:52.595011" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:52.593787" elapsed="0.001279"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.595960" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:52.595318" elapsed="0.000681"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.597676" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.597301" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.598358" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.597969" elapsed="0.000451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.598997" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.598645" elapsed="0.000439"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:15:52.596654" elapsed="0.002510"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:52.596144" elapsed="0.003072"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.596111" elapsed="0.003145"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:15:52.599496" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:52.599341" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.599316" elapsed="0.000284"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:52.599809" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-19T00:15:52.599677" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.599655" elapsed="0.000281"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:52.600174" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:15:52.579731" elapsed="0.020694"/>
</kw>
<msg time="2026-04-19T00:15:52.600635" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:15:52.600800" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:15:52.578526" elapsed="0.022360"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:52.601315" elapsed="0.000708"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:15:52.602584" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T00:15:52.602246" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.602217" elapsed="0.000645"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:52.603159" elapsed="0.000072"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:15:52.259301" elapsed="0.344225"/>
</kw>
<msg time="2026-04-19T00:15:52.603703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.258756" elapsed="0.345028"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:15:52.257002" elapsed="0.346912"/>
</kw>
<msg time="2026-04-19T00:15:52.603979" 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-19T00:15:52.256546" elapsed="0.347522"/>
</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-19T00:15:52.608983" elapsed="0.000616"/>
</kw>
<kw name="Open 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-19T00:15:52.609851" elapsed="0.000277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:52.610281" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:52.604520" elapsed="0.005919"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:15:52.255503" elapsed="0.354996"/>
</kw>
<msg time="2026-04-19T00:15:52.610560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.255061" elapsed="0.355549"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:15:52.254347" elapsed="0.356348"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:15:52.254190" elapsed="0.356553"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:51.497398" elapsed="1.113380"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:15:51.494288" elapsed="1.116549"/>
</kw>
<status status="PASS" start="2026-04-19T00:15:51.493800" elapsed="1.117073"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:51.493775" elapsed="1.117123"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T00:15:48.151418" elapsed="4.459527"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:15:42.982838" elapsed="9.628250"/>
</test>
<test id="s1-s3-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.624569" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:52.624130" elapsed="0.000468"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.625169" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:52.624773" elapsed="0.000424"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T00:15:52.625647" level="INFO">${epoch} = 1776557752.62557</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T00:15:52.625364" elapsed="0.000311"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.626268" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:52.625843" elapsed="0.000452"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.626875" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:15:52.626466" elapsed="0.000436"/>
</kw>
<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-19T00:15:52.628556" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:52.628172" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.629068" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:52.628745" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:52.629144" elapsed="0.000060"/>
</return>
<msg time="2026-04-19T00:15:52.629336" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:52.627779" elapsed="0.001583"/>
</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-19T00:15:52.630422" level="INFO">${member_ip} = 10.30.171.9</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-19T00:15:52.630151" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.631249" 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-19T00:15:52.631348" 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-19T00:15:52.631090" elapsed="0.000284"/>
</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-19T00:15:52.634042" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:52.633743" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.633723" elapsed="0.000401"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.634601" 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-19T00:15:52.634706" 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-19T00:15:52.634270" elapsed="0.000463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.635376" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.634888" elapsed="0.000538"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.636007" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:52.635584" elapsed="0.000466"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.637261" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:52.637385" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:52.636705" elapsed="0.000704"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.637597" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.640373" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:52.946921" 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 Sun Apr 19 00:15:43 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:15:52.639796" elapsed="0.307562"/>
</kw>
<msg time="2026-04-19T00:15:52.947612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.638507" elapsed="0.309444"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:52.636272" elapsed="0.312180"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:52.949458" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log'.</msg>
<msg time="2026-04-19T00:15:52.972364" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:52.972628" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:52.972729" 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-19T00:15:52.948902" elapsed="0.023878"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:52.973244" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:52.974864" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:52.974191" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:52.975474" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:52.975177" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.975125" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:52.975986" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T00:15:52.975752" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:52.975719" elapsed="0.000492"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:52.976286" 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-19T00:15:52.996618" elapsed="0.000977"/>
</kw>
<kw name="Open 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-19T00:15:52.997831" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:52.998290" 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-19T00:15:52.976975" elapsed="0.021524"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:52.633209" elapsed="0.365419"/>
</kw>
<msg time="2026-04-19T00:15:52.998703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:52.632572" elapsed="0.366205"/>
</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-19T00:15:52.632048" elapsed="0.366836"/>
</kw>
<msg time="2026-04-19T00:15:52.998940" 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-19T00:15:52.631530" elapsed="0.367470"/>
</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-19T00:15:53.002813" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:15:53.003318" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:53.003618" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:52.999423" elapsed="0.004369"/>
</kw>
<msg time="2026-04-19T00:15:53.003886" 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-19T00:15:52.630667" elapsed="0.373245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.004393" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.004126" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:53.004480" 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-19T00:15:52.629731" elapsed="0.374875"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:15:52.629554" elapsed="0.375091"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:53.005817" level="INFO">${member_ip} = 10.30.171.128</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-19T00:15:53.005539" elapsed="0.000306"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.006652" 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-19T00:15:53.006810" 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-19T00:15:53.006514" elapsed="0.000323"/>
</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-19T00:15:53.009630" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:53.009354" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:53.009334" elapsed="0.000378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.010003" 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-19T00:15:53.010161" 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-19T00:15:53.009859" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.010834" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.010360" elapsed="0.000524"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.011476" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:53.011060" elapsed="0.000443"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.012716" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:53.012846" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:53.012166" elapsed="0.000706"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:53.013101" elapsed="0.000874"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.016183" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:53.333864" 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 Sun Apr 19 00:15:44 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:15:53.015571" elapsed="0.318576"/>
</kw>
<msg time="2026-04-19T00:15:53.334285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:53.014249" elapsed="0.320211"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:53.011717" elapsed="0.322923"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.335172" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log'.</msg>
<msg time="2026-04-19T00:15:53.358457" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:53.358722" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:53.358826" 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-19T00:15:53.334886" elapsed="0.023995"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:53.359320" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.361114" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.360318" elapsed="0.000902"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.361712" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:53.361402" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:53.361349" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:53.362338" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T00:15:53.362008" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:53.361968" elapsed="0.000574"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.362718" 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-19T00:15:53.380125" elapsed="0.000523"/>
</kw>
<kw name="Open 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-19T00:15:53.380836" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:53.381201" 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-19T00:15:53.363510" elapsed="0.017842"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:53.008741" elapsed="0.372703"/>
</kw>
<msg time="2026-04-19T00:15:53.381499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:53.008126" elapsed="0.373431"/>
</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-19T00:15:53.007562" elapsed="0.374074"/>
</kw>
<msg time="2026-04-19T00:15:53.381677" 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-19T00:15:53.006996" elapsed="0.374727"/>
</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-19T00:15:53.384966" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:15:53.385475" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:53.385773" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:15:53.382013" elapsed="0.003908"/>
</kw>
<msg time="2026-04-19T00:15:53.386012" 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-19T00:15:53.006085" elapsed="0.379983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.386516" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.386262" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:53.386600" elapsed="0.000032"/>
</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-19T00:15:53.004931" elapsed="0.381798"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:15:53.004746" elapsed="0.382020"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:15:53.387879" level="INFO">${member_ip} = 10.30.171.206</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-19T00:15:53.387598" elapsed="0.000307"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.388687" 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-19T00:15:53.388788" 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-19T00:15:53.388548" elapsed="0.000303"/>
</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-19T00:15:53.391773" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:53.391495" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:53.391475" elapsed="0.000380"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.392148" 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-19T00:15:53.392263" 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-19T00:15:53.392001" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.392941" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.392450" elapsed="0.000614"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.393651" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:53.393227" elapsed="0.000451"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.394874" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:15:53.394998" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:15:53.394351" elapsed="0.000703"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:53.395247" elapsed="0.000721"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.398076" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:15:53.710334" 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 Sun Apr 19 00:14:54 UTC 2026

  System load:  0.0                Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:15:53.397483" elapsed="0.313133"/>
</kw>
<msg time="2026-04-19T00:15:53.710764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:53.396216" elapsed="0.314730"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:15:53.393898" elapsed="0.317254"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:15:53.711729" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776557752.62557.log'.</msg>
<msg time="2026-04-19T00:15:53.734572" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:15:53.734859" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:15:53.734956" 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-19T00:15:53.711429" elapsed="0.023580"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:53.735481" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.737267" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.736450" elapsed="0.000915"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.737845" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:53.737547" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:53.737491" elapsed="0.000514"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:15:53.738400" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T00:15:53.738164" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T00:15:53.738128" elapsed="0.000463"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.738665" 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-19T00:15:53.757696" elapsed="0.000558"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:15:53.758425" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:53.758744" 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-19T00:15:53.739405" elapsed="0.019493"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:15:53.390927" elapsed="0.368063"/>
</kw>
<msg time="2026-04-19T00:15:53.759099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:15:53.390343" elapsed="0.368816"/>
</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-19T00:15:53.389780" elapsed="0.369459"/>
</kw>
<msg time="2026-04-19T00:15:53.759340" 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-19T00:15:53.389014" elapsed="0.370376"/>
</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-19T00:15:53.762663" 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-19T00:15:53.763222" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:15:53.763538" 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-19T00:15:53.759696" elapsed="0.003995"/>
</kw>
<msg time="2026-04-19T00:15:53.763787" 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-19T00:15:53.388139" elapsed="0.375673"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.764610" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.764338" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:15:53.764718" elapsed="0.000038"/>
</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-19T00:15:53.387165" elapsed="0.377692"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:15:53.386864" elapsed="0.378030"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:15:52.629420" elapsed="1.135511"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T00:15:52.627241" elapsed="1.137755"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.777062" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:15:53.776649" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.777564" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:15:53.777255" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:15:53.777635" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:15:53.777791" level="INFO">${index_list} = [1, 2, 3]</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-19T00:15:53.776247" elapsed="0.001568"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.779367" 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-19T00:15:53.779062" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:15:53.779439" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:15:53.779589" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:15:53.778699" elapsed="0.000914"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.789742" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.789482" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:15:53.790211" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:15:53.789946" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:15:53.795812" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:15:53.792456" elapsed="0.005117">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T00:15:53.790326" elapsed="0.007338">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.797858" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:53.797701" elapsed="0.000279"/>
</branch>
<status status="FAIL" start="2026-04-19T00:15:53.790306" elapsed="0.007699">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.798585" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.798725" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:53.798686" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:15:53.798668" elapsed="0.000129"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.798971" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.799064" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:15:53.784714" elapsed="0.014464">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.799252" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:15:53.779825" elapsed="0.019527">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.799580" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.799711" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:15:53.799674" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:15:53.799656" elapsed="0.000119"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.799975" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.800222" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:15:53.800291" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:15:53.778323" elapsed="0.022075">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:15:53.800519" elapsed="0.000018"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:15:53.800478" elapsed="0.000084"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:15:53.800462" elapsed="0.000121"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.800743" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T00:15:53.778088" elapsed="0.022726">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:15:53.777872" elapsed="0.023002">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:15:53.775818" elapsed="0.025154">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T00:15:53.775493" elapsed="0.025552">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T00:15:53.775471" elapsed="0.025638">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:15:53.801383" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:53.801182" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:15:53.801165" elapsed="0.000295"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:15:53.801721" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:15:53.801513" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:15:53.801497" elapsed="0.000304"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:15:53.775055" elapsed="0.026825">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:16:03.822456" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:16:03.821997" elapsed="0.000492"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:16:03.822971" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:16:03.822659" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:16:03.823062" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:16:03.823230" level="INFO">${index_list} = [1, 2, 3]</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-19T00:16:03.821593" elapsed="0.001662"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:03.824775" 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-19T00:16:03.824476" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:16:03.824850" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:16:03.824997" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:16:03.824129" elapsed="0.000893"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:03.832650" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:03.832390" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:03.833114" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:03.832853" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:16:03.920727" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:16:03.920959" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T00:16:03.921399" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:16:03.835358" elapsed="0.086962">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:16:03.833228" elapsed="0.089477">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.923244" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:03.922791" elapsed="0.000623"/>
</branch>
<status status="FAIL" start="2026-04-19T00:16:03.833209" elapsed="0.090269">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.924761" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:03.925141" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:03.925004" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:03.924962" elapsed="0.000329"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.925621" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:16:03.925782" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:16:03.827763" elapsed="0.098263">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:03.926221" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:16:03.825249" elapsed="0.101215">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.926964" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:16:03.927287" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:03.927205" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:03.927166" elapsed="0.000279"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.927941" elapsed="0.000056"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.928415" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:16:03.928484" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:16:03.823726" elapsed="0.104859">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:16:03.928703" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:16:03.928665" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:03.928648" elapsed="0.000117"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.928908" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T00:16:03.823499" elapsed="0.105486">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:16:03.823313" elapsed="0.105751">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:16:03.821170" elapsed="0.107993">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:16:03.820810" elapsed="0.108411">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T00:16:03.820785" elapsed="0.108467">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:16:03.929520" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:03.929319" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:03.929302" elapsed="0.000295"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:16:03.929895" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:03.929681" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:03.929634" elapsed="0.000343"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:16:03.820294" elapsed="0.109780">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:16:13.949878" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:16:13.949415" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:16:13.950440" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:16:13.950102" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:16:13.950519" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:16:13.950692" level="INFO">${index_list} = [1, 2, 3]</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-19T00:16:13.948958" elapsed="0.001764"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:13.952580" 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-19T00:16:13.952270" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:16:13.952656" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:16:13.952807" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:16:13.951891" elapsed="0.000941"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:13.960509" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:13.960222" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:13.960960" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:13.960713" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:16:13.971800" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:16:13.971877" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T00:16:13.972011" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:16:13.963239" elapsed="0.009183">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:16:13.961093" elapsed="0.011422">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.972709" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:13.972549" elapsed="0.000226"/>
</branch>
<status status="FAIL" start="2026-04-19T00:16:13.961073" elapsed="0.011726">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.973406" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:13.973555" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:13.973515" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:13.973497" elapsed="0.000122"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.973766" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:16:13.973837" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:16:13.955657" elapsed="0.018290">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:13.974021" elapsed="0.000050"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:16:13.953061" elapsed="0.021097">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.974383" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:16:13.974530" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:13.974493" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:13.974472" elapsed="0.000123"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.974797" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.975069" elapsed="0.000027"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:16:13.975142" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:16:13.951499" elapsed="0.023748">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:16:13.975368" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:16:13.975329" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:13.975311" elapsed="0.000120"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.975587" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T00:16:13.951261" elapsed="0.024399">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:16:13.950783" elapsed="0.024947">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:16:13.948532" elapsed="0.027338">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:16:13.948171" elapsed="0.027782">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T00:16:13.948142" elapsed="0.027855">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:16:13.976397" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:13.976114" elapsed="0.000366"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:13.976090" elapsed="0.000430"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:16:13.976899" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:13.976600" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:16:13.976577" elapsed="0.000436"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:16:13.947595" elapsed="0.029553">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:16:23.996279" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:16:23.995622" elapsed="0.000704"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:16:23.997066" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:16:23.996583" elapsed="0.000524"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:16:23.997180" elapsed="0.000052"/>
</return>
<msg time="2026-04-19T00:16:23.997422" level="INFO">${index_list} = [1, 2, 3]</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-19T00:16:23.995062" elapsed="0.002398"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:23.999736" 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-19T00:16:23.999292" elapsed="0.000482"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:16:23.999841" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T00:16:24.000095" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:16:23.998755" elapsed="0.001380"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.014364" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.013647" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.015459" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.014842" elapsed="0.000719"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:16:24.266646" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:16:24.266848" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:16:24 GMT', 'Expires': 'Sat, 18 Apr 2026 23:16:24 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557784,"status":200} 
 </msg>
<msg time="2026-04-19T00:16:24.267186" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:16:24.020883" elapsed="0.246367"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.015723" elapsed="0.251641"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.267841" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.267432" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.015677" elapsed="0.252389"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.275231" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557784,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.270993" elapsed="0.004381"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.270429" elapsed="0.005102"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.270380" elapsed="0.005192"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.280094" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.276014" elapsed="0.004220"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.275656" elapsed="0.004734"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.275631" elapsed="0.004800"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.281626" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.280693" elapsed="0.000983"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.282421" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.281889" elapsed="0.000806"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.283653" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.282996" elapsed="0.000738"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.282736" elapsed="0.001148"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.281855" elapsed="0.002054"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.284646" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.284094" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.285010" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.284747" elapsed="0.000456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.285993" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.285402" elapsed="0.000694"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.285231" elapsed="0.001029"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.284728" elapsed="0.001557"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:16:24.286449" elapsed="0.000706"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:16:24.288156" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.287324" elapsed="0.000860"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.288340" elapsed="0.003245"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:16:24.269319" elapsed="0.022337"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:24.291842" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:24.291727" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.291708" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:16:24.294875" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:16:24.292074" elapsed="0.002831"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:16:24.294957" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:16:24.295254" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:16:24.004324" elapsed="0.290957"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:16:24.295339" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:16:24.295516" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:16:24.000458" elapsed="0.295092"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.296670" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.296316" elapsed="0.000414"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.297810" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.297378" elapsed="0.000462"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:16:24.297890" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:16:24.298120" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:16:24.296950" elapsed="0.001269"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.298622" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.298388" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.299022" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.298807" elapsed="0.000282"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:16:24.299139" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:16:24.299293" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:16:24.295847" elapsed="0.003471"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:16:24.299506" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:24.299392" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.299373" elapsed="0.000199"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.307129" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.306860" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.307571" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.307329" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:16:24.317650" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:16:24.317769" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:16:24 GMT', 'Expires': 'Sat, 18 Apr 2026 23:16:24 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557784,"status":200} 
 </msg>
<msg time="2026-04-19T00:16:24.317943" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:16:24.309972" elapsed="0.008015"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.307697" elapsed="0.010380"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.318368" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.318138" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.307678" elapsed="0.010816"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.324571" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557784,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.320464" elapsed="0.004253"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.319983" elapsed="0.004899"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.319947" elapsed="0.004976"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.329626" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.325422" elapsed="0.004342"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.325009" elapsed="0.004917"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.324983" elapsed="0.004984"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.331119" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.330263" elapsed="0.000897"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.331655" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.331267" elapsed="0.000645"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.333223" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.332234" elapsed="0.001107"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.331951" elapsed="0.001604"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.331240" elapsed="0.002351"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.334654" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.333832" elapsed="0.000863"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.335220" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.334800" elapsed="0.000678"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.336655" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.335762" elapsed="0.001010"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.335518" elapsed="0.001472"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.334774" elapsed="0.002252"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:16:24.337304" elapsed="0.001048"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:16:24.339592" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.338604" elapsed="0.001016"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.339779" elapsed="0.003087"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:16:24.319340" elapsed="0.023595"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:24.343136" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:24.343006" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.342987" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:16:24.346192" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:16:24.343355" elapsed="0.002868"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:16:24.346278" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:16:24.346446" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:16:24.302368" elapsed="0.044106"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:16:24.346533" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:16:24.346688" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:16:24.299777" elapsed="0.046939"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.347585" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.347323" elapsed="0.000311"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.348637" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.348227" elapsed="0.000439"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:16:24.348716" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:16:24.348877" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:16:24.347847" elapsed="0.001058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.349376" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.349146" elapsed="0.000295"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.349818" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.349602" elapsed="0.000241"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:16:24.349891" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:16:24.350059" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:16:24.346940" elapsed="0.003171"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:16:24.350158" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:16:24.350309" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:16:23.998173" elapsed="0.352162"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:16:24.350517" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T00:16:24.350405" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.350387" elapsed="0.000215"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.350752" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:16:23.997822" elapsed="0.352988"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.352459" level="INFO">${session} = ClusterManagement__session_2</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-19T00:16:24.352152" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:16:24.352534" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:16:24.352685" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:16:24.351779" elapsed="0.000931"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.360211" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.359946" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.360649" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.360409" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:16:24.752747" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:16:24.752956" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:16:24 GMT', 'Expires': 'Sat, 18 Apr 2026 23:16:24 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557784,"status":200} 
 </msg>
<msg time="2026-04-19T00:16:24.753293" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:16:24.362889" elapsed="0.390467"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.360758" elapsed="0.392711"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.754155" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.753537" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.360740" elapsed="0.393684"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.762419" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557784,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.758106" elapsed="0.004455"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.757403" elapsed="0.005319"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.757358" elapsed="0.005405"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.767254" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.763226" elapsed="0.004162"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.762847" elapsed="0.004768"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.762822" elapsed="0.004836"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.768740" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.767922" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.769309" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.768884" elapsed="0.000678"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.770552" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.769843" elapsed="0.000789"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.769600" elapsed="0.001177"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.768857" elapsed="0.001944"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.771501" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.770963" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.771853" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.771598" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.772795" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.772232" elapsed="0.000641"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.772070" elapsed="0.000949"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.771580" elapsed="0.001504"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:16:24.773246" elapsed="0.000742"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:16:24.775055" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.774225" elapsed="0.000859"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.775242" elapsed="0.003204"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:16:24.756099" elapsed="0.022415"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:24.778698" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:24.778584" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.778566" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:16:24.781749" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:16:24.778915" elapsed="0.002863"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:16:24.781830" elapsed="0.000060"/>
</return>
<msg time="2026-04-19T00:16:24.782022" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:16:24.355490" elapsed="0.426575"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:16:24.782123" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:16:24.782271" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:16:24.352924" elapsed="0.429373"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.783145" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.782871" elapsed="0.000323"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.784151" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.783736" elapsed="0.000478"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:16:24.784267" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:16:24.784428" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:16:24.783402" elapsed="0.001052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.784833" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.784609" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.785302" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.785014" elapsed="0.000313"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:16:24.785375" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:16:24.785523" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:16:24.782518" elapsed="0.003029"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:16:24.785721" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:24.785614" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.785597" elapsed="0.000188"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.793426" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.793175" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.793894" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.793626" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:16:24.802873" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:16:24.802948" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:16:24 GMT', 'Expires': 'Sat, 18 Apr 2026 23:16:24 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557784,"status":200} 
 </msg>
<msg time="2026-04-19T00:16:24.803077" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:16:24.796150" elapsed="0.006969"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.794005" elapsed="0.009179"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.803445" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.803221" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.793987" elapsed="0.009584"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.809331" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557784,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.805344" elapsed="0.004125"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.804963" elapsed="0.004663"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.804936" elapsed="0.004731"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.814209" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.810161" elapsed="0.004138"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.809750" elapsed="0.004653"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.809725" elapsed="0.004704"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.815126" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.814593" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.815511" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.815223" elapsed="0.000461"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.816453" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.815875" elapsed="0.000657"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.815711" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.815205" elapsed="0.001514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.817417" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.816881" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.817768" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:16:24.817514" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.818753" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:16:24.818197" elapsed="0.000634"/>
</kw>
<status status="PASS" start="2026-04-19T00:16:24.817993" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.817496" elapsed="0.001502"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:16:24.819167" elapsed="0.000648"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:16:24.820761" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.819982" elapsed="0.000805"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.820943" elapsed="0.003117"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:16:24.804341" elapsed="0.019789"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:16:24.824306" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:16:24.824200" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.824181" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:16:24.827342" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:16:24.824517" elapsed="0.002854"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:16:24.827423" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:16:24.827580" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:16:24.788684" elapsed="0.038923"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:16:24.827663" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:16:24.827808" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:16:24.786037" elapsed="0.041797"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.828662" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557784,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.828412" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.829664" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:16:24.829272" elapsed="0.000420"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:16:24.829740" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:16:24.829917" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557784, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:16:24.828915" elapsed="0.001071"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.830463" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.830239" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:16:24.830854" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:16:24.830645" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:16:24.830926" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:16:24.831090" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:16:24.828059" elapsed="0.003056"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:16:24.831159" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:16:24.831304" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:16:24.351392" elapsed="0.479936"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:16:24.831507" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T00:16:24.831395" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:16:24.831378" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:16:24.831737" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:16:24.351157" elapsed="0.480635"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.833220" level="INFO">${session} = ClusterManagement__session_3</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-19T00:16:24.832900" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:16:24.833292" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:16:24.833440" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:16:24.832557" elapsed="0.000907"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.842727" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.842475" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:16:24.843194" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:16:24.842926" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:18:29.916011" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:16:24.845429" elapsed="125.074648">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:16:24.843303" elapsed="125.076997">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.920861" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:29.920384" elapsed="0.000629"/>
</branch>
<status status="FAIL" start="2026-04-19T00:16:24.843284" elapsed="125.077824">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.922421" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:18:29.922761" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:29.922673" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:18:29.922631" elapsed="0.000272"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.923260" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:18:29.923418" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:16:24.837962" elapsed="125.085701">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:18:29.923822" elapsed="0.000035"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:16:24.833670" elapsed="125.090402">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.924708" elapsed="0.000056"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:18:29.924995" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:29.924914" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:18:29.924877" elapsed="0.000292"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.925607" elapsed="0.000055"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.926132" elapsed="0.000055"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:18:29.926286" elapsed="0.000035"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:16:24.832182" elapsed="125.094385">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:18:29.926845" elapsed="0.000034"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:18:29.926764" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:18:29.926726" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.927355" elapsed="0.000037"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:16:24.831939" elapsed="125.095518">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:16:23.997545" elapsed="125.929974">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:16:23.994472" elapsed="125.933148">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:16:23.993958" elapsed="125.933721">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:16:23.993925" elapsed="125.933784">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:18:29.927975" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:29.927776" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:18:29.927759" elapsed="0.000315"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:18:29.928345" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:29.928136" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:18:29.928120" elapsed="0.000305"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:16:23.993273" elapsed="125.935231">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.946161" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:18:39.945687" elapsed="0.000505"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.946682" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:18:39.946365" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:18:39.946759" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:18:39.946927" level="INFO">${index_list} = [1, 2, 3]</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-19T00:18:39.945246" elapsed="0.001706"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.948506" 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-19T00:18:39.948199" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:18:39.948580" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:18:39.948730" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:18:39.947830" elapsed="0.000966"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.956593" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:39.956329" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.957206" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:39.956836" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:18:39.969425" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:18:39.969621" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:18:39 GMT', 'Expires': 'Sat, 18 Apr 2026 23:18:39 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557919,"status":200} 
 </msg>
<msg time="2026-04-19T00:18:39.969938" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:18:39.959474" elapsed="0.010530"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:39.957328" elapsed="0.012825"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:39.970597" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:39.970220" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:39.957308" elapsed="0.013496"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.978800" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557919,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:39.973756" elapsed="0.005142"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:39.973164" elapsed="0.005844"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:39.973118" elapsed="0.005934"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.982116" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:39.979357" elapsed="0.002855"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:39.979112" elapsed="0.003214"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:39.979095" elapsed="0.003263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.983108" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:39.982540" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:39.983478" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:39.983210" elapsed="0.000451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.984527" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:39.983861" elapsed="0.000751"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:39.983690" elapsed="0.001079"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:39.983192" elapsed="0.001602"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.985553" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:39.984961" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:39.985921" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:39.985656" elapsed="0.000477"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.986915" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:39.986330" elapsed="0.000667"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:39.986161" elapsed="0.001009"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:39.985636" elapsed="0.001559"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:18:39.987353" elapsed="0.000701"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:18:39.989101" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:39.988225" elapsed="0.000952"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:18:39.989342" elapsed="0.003082"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:18:39.972017" elapsed="0.020475"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:18:39.992676" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:39.992564" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:39.992544" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:18:39.995791" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557919,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:18:39.992892" elapsed="0.002929"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:18:39.995876" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:18:39.996057" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557919,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:18:39.951666" elapsed="0.044420"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:18:39.996147" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:18:39.996301" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557919,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:18:39.949127" elapsed="0.047203"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.997221" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557919,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:39.996913" elapsed="0.000361"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:39.998355" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557919, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:39.997840" elapsed="0.000545"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:18:39.998437" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:18:39.998601" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557919, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:18:39.997489" elapsed="0.001139"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:39.999017" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:39.998787" elapsed="0.000277"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:39.999449" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:39.999222" elapsed="0.000258"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:18:39.999531" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:18:39.999686" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:18:39.996549" elapsed="0.003163"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:18:39.999893" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:39.999782" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:39.999765" elapsed="0.000194"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.007804" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.007551" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.008267" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.008005" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:18:40.016638" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:18:40.016714" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:18:40 GMT', 'Expires': 'Sat, 18 Apr 2026 23:18:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557920,"status":200} 
 </msg>
<msg time="2026-04-19T00:18:40.016832" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:18:40.010643" elapsed="0.006216"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.008415" elapsed="0.008488"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.017104" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.016929" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.008395" elapsed="0.008828"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.022436" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776557920,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.018700" elapsed="0.003867"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.018357" elapsed="0.004356"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.018330" elapsed="0.004420"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.026624" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.023190" elapsed="0.003525"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.022829" elapsed="0.003991"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.022806" elapsed="0.004041"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.027549" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.027012" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.027906" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.027645" elapsed="0.000474"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.028868" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:40.028311" elapsed="0.000635"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.028146" elapsed="0.000960"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.027627" elapsed="0.001503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.029817" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.029303" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.030187" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.029913" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.031143" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:40.030548" elapsed="0.000672"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.030385" elapsed="0.000976"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.029895" elapsed="0.001490"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:18:40.031539" elapsed="0.000665"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:18:40.033163" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.032371" elapsed="0.000819"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.033387" elapsed="0.003165"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:18:40.017738" elapsed="0.018913"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:18:40.036832" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:40.036723" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.036704" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:18:40.039848" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:18:40.037064" elapsed="0.002813"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:18:40.039930" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:18:40.040109" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:18:40.002985" elapsed="0.037150"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:18:40.040193" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:18:40.040340" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:18:40.000181" elapsed="0.040185"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.041200" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557920,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.040929" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.042237" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557920, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.041826" elapsed="0.000439"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:18:40.042315" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:18:40.042473" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557920, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:18:40.041488" elapsed="0.001011"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:40.042876" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.042655" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:40.043345" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.043131" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:18:40.043418" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:18:40.043566" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:18:40.040573" elapsed="0.003017"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:18:40.043633" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:18:40.043775" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:18:39.947450" elapsed="0.096350"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:18:40.043973" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T00:18:40.043865" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.043849" elapsed="0.000223"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.044220" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:18:39.947219" elapsed="0.097057"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.045704" level="INFO">${session} = ClusterManagement__session_2</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-19T00:18:40.045401" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:18:40.045812" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:18:40.045967" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:18:40.045022" elapsed="0.000971"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.053728" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.053477" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.054203" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.053931" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:18:40.065889" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:18:40.065969" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:18:40 GMT', 'Expires': 'Sat, 18 Apr 2026 23:18:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557920,"status":200} 
 </msg>
<msg time="2026-04-19T00:18:40.066126" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:18:40.056485" elapsed="0.009669"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.054315" elapsed="0.011882"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.066379" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.066225" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.054297" elapsed="0.012169"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.074968" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557920,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.069073" elapsed="0.006021"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.068366" elapsed="0.006840"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.068323" elapsed="0.006911"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.078261" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.075539" elapsed="0.002819"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.075293" elapsed="0.003175"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.075276" elapsed="0.003219"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.079229" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.078660" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.079588" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.079328" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.080552" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:40.079956" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.079793" elapsed="0.000991"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.079310" elapsed="0.001498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.081508" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.080969" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.081900" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.081635" elapsed="0.000463"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.082868" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:40.082291" elapsed="0.000659"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.082126" elapsed="0.001014"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.081587" elapsed="0.001578"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:18:40.083319" elapsed="0.000726"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:18:40.085023" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.084218" elapsed="0.000851"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.085228" elapsed="0.003863"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:18:40.067380" elapsed="0.021778"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:18:40.089344" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:40.089231" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.089211" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:18:40.092419" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557920,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:18:40.089562" elapsed="0.002887"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:18:40.092504" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:18:40.092667" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557920,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:18:40.048942" elapsed="0.043754"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:18:40.092755" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:18:40.092913" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557920,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:18:40.046222" elapsed="0.046719"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.093817" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557920,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.093538" elapsed="0.000330"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.094915" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557920, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.094508" elapsed="0.000436"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:18:40.094997" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:18:40.095180" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557920, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:18:40.094158" elapsed="0.001049"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:40.095591" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.095364" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:40.095988" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.095773" elapsed="0.000242"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:18:40.096080" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:18:40.096232" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:18:40.093175" elapsed="0.003083"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:18:40.096437" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:40.096326" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.096309" elapsed="0.000193"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.104264" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.103997" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.104749" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.104503" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:18:40.113081" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:18:40.113158" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:18:40 GMT', 'Expires': 'Sat, 18 Apr 2026 23:18:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557920,"status":200} 
 </msg>
<msg time="2026-04-19T00:18:40.113269" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:18:40.107176" elapsed="0.006120"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.104860" elapsed="0.008479"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.113518" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.113366" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.104841" elapsed="0.008763"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.118593" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776557920,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.114855" elapsed="0.003871"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.114572" elapsed="0.004299"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.114553" elapsed="0.004357"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.123031" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.119349" elapsed="0.003788"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.118990" elapsed="0.004252"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.118967" elapsed="0.004303"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.123949" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.123434" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.124323" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.124064" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.125274" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:40.124682" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.124519" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.124032" elapsed="0.001485"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.126217" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.125678" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.126578" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:18:40.126314" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.127535" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:18:40.126936" elapsed="0.000677"/>
</kw>
<status status="PASS" start="2026-04-19T00:18:40.126774" elapsed="0.000983"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.126296" elapsed="0.001485"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:18:40.127934" elapsed="0.000670"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:18:40.129601" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.128771" elapsed="0.000859"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.129839" elapsed="0.003155"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:18:40.114145" elapsed="0.018934"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:18:40.133265" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:18:40.133153" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.133134" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:18:40.136283" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:18:40.133481" elapsed="0.002831"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:18:40.136365" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:18:40.136521" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:18:40.099374" elapsed="0.037173"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:18:40.136604" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:18:40.136750" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:18:40.096707" elapsed="0.040068"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.137603" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776557920,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.137353" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.138657" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557920, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:18:40.138257" elapsed="0.000429"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:18:40.138736" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:18:40.138897" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776557920, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:18:40.137858" elapsed="0.001066"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:40.139401" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.139172" elapsed="0.000257"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:18:40.139799" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:18:40.139587" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:18:40.139873" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:18:40.140024" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:18:40.136984" elapsed="0.003082"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:18:40.140112" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:18:40.140260" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:18:40.044645" elapsed="0.095639"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:18:40.140462" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T00:18:40.140353" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:18:40.140336" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:18:40.140691" elapsed="0.000023"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:18:40.044417" elapsed="0.096331"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.142425" level="INFO">${session} = ClusterManagement__session_3</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-19T00:18:40.142120" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:18:40.142500" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:18:40.142648" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:18:40.141738" elapsed="0.000935"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.150227" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.149945" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:18:40.150732" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:18:40.150482" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:20:45.245911" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:18:40.152964" elapsed="125.096911">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:18:40.150844" elapsed="125.099279">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.250736" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:45.250256" elapsed="0.000626"/>
</branch>
<status status="FAIL" start="2026-04-19T00:18:40.150825" elapsed="125.100094">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.251767" elapsed="0.000042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:20:45.251984" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:45.251926" elapsed="0.000145"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:20:45.251899" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.252310" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:20:45.252409" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:18:40.145438" elapsed="125.107126">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:20:45.252666" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:18:40.142888" elapsed="125.109915">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.253137" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:20:45.253316" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:45.253267" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:20:45.253243" elapsed="0.000159"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.253676" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.253982" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:20:45.254099" elapsed="0.000023"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:18:40.141312" elapsed="125.112963">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:20:45.254441" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:20:45.254389" elapsed="0.000108"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:20:45.254364" elapsed="0.000162"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.254730" elapsed="0.000029"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:18:40.140890" elapsed="125.113940">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:18:39.947011" elapsed="125.307989">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:18:39.944801" elapsed="125.310365">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:18:39.944415" elapsed="125.310833">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:18:39.944390" elapsed="125.310901">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:20:45.255682" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:45.255384" elapsed="0.000376"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:20:45.255361" elapsed="0.000432"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:20:45.256189" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:45.255873" elapsed="0.000396"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:20:45.255851" elapsed="0.000451"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:18:39.943881" elapsed="125.312532">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.275470" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:20:55.274975" elapsed="0.000528"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.276009" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:20:55.275693" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:20:55.276103" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:20:55.276277" level="INFO">${index_list} = [1, 2, 3]</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-19T00:20:55.274542" elapsed="0.001759"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.277864" 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-19T00:20:55.277545" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:20:55.277938" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:20:55.278102" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:20:55.277197" elapsed="0.000931"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.285866" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.285585" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.286339" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.286089" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:20:55.296969" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:20:55.297115" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:20:55 GMT', 'Expires': 'Sat, 18 Apr 2026 23:20:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776558055,"status":200} 
 </msg>
<msg time="2026-04-19T00:20:55.297302" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:20:55.288631" elapsed="0.008709"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.286452" elapsed="0.010949"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.297653" elapsed="0.000113"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.297438" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.286433" elapsed="0.011434"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.303619" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776558055,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.299670" elapsed="0.004086"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.299296" elapsed="0.004617"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.299268" elapsed="0.004685"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.307089" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.304355" elapsed="0.002837"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.304068" elapsed="0.003232"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.304012" elapsed="0.003316"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.308107" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.307527" elapsed="0.000615"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.308481" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.308214" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.309509" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.308852" elapsed="0.000739"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.308686" elapsed="0.001055"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.308195" elapsed="0.001571"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.310528" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.309929" elapsed="0.000628"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.310888" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.310627" elapsed="0.000453"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.311886" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.311285" elapsed="0.000684"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.311107" elapsed="0.001029"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.310609" elapsed="0.001559"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:20:55.312331" elapsed="0.000668"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:20:55.314088" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.313190" elapsed="0.000928"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.314291" elapsed="0.003117"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:20:55.298656" elapsed="0.018817"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:20:55.317652" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:55.317544" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.317525" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:20:55.320854" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:20:55.317864" elapsed="0.003020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:20:55.320936" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:20:55.321117" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:20:55.280917" elapsed="0.040228"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:20:55.321235" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:20:55.321405" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:20:55.278342" elapsed="0.043091"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.322372" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.322000" elapsed="0.000422"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.323461" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.322975" elapsed="0.000517"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:20:55.323546" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:20:55.323708" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:20:55.322636" elapsed="0.001099"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.324137" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.323892" elapsed="0.000273"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.324552" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.324324" elapsed="0.000255"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:20:55.324627" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:20:55.324778" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:20:55.321645" elapsed="0.003157"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:20:55.324977" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:55.324869" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.324852" elapsed="0.000208"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.332656" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.332393" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.333119" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.332858" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:20:55.343172" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:20:55.343250" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:20:55 GMT', 'Expires': 'Sat, 18 Apr 2026 23:20:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776558055,"status":200} 
 </msg>
<msg time="2026-04-19T00:20:55.343373" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:20:55.336810" elapsed="0.006589"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.333229" elapsed="0.010233"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.343659" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.343497" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.333211" elapsed="0.010536"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.347752" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776558055,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.344992" elapsed="0.002858"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.344710" elapsed="0.003249"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.344690" elapsed="0.003296"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.351077" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.348318" elapsed="0.002852"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.348067" elapsed="0.003208"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.348048" elapsed="0.003254"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.352068" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.351500" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.352540" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.352169" elapsed="0.000614"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.353891" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.353085" elapsed="0.000915"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.352830" elapsed="0.001437"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.352150" elapsed="0.002152"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.355298" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.354530" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.355830" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.355456" elapsed="0.000653"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.357225" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.356381" elapsed="0.000955"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.356149" elapsed="0.001392"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.355428" elapsed="0.002146"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:20:55.357790" elapsed="0.001018"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:20:55.360242" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.359081" elapsed="0.001188"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.360427" elapsed="0.003124"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:20:55.344273" elapsed="0.019345"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:20:55.363799" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:55.363690" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.363670" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:20:55.366821" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:20:55.364017" elapsed="0.002833"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:20:55.366903" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:20:55.367089" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:20:55.327862" elapsed="0.039256"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:20:55.367177" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:20:55.367327" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:20:55.325266" elapsed="0.042087"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.368279" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.367991" elapsed="0.000338"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.369312" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.368887" elapsed="0.000454"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:20:55.369391" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:20:55.369560" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:20:55.368541" elapsed="0.001046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.369969" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.369745" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.370466" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.370252" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:20:55.370540" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:20:55.370689" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:20:55.367632" elapsed="0.003082"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:20:55.370758" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:20:55.370902" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:20:55.276795" elapsed="0.094131"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:20:55.371123" elapsed="0.000040"/>
</continue>
<status status="PASS" start="2026-04-19T00:20:55.370994" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.370977" elapsed="0.000243"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.371369" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:20:55.276557" elapsed="0.094883"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.373084" level="INFO">${session} = ClusterManagement__session_2</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-19T00:20:55.372761" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:20:55.373162" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:20:55.373318" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:20:55.372407" elapsed="0.000936"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.380978" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.380725" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.381459" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.381200" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:20:55.391793" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:20:55.391870" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:20:55 GMT', 'Expires': 'Sat, 18 Apr 2026 23:20:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776558055,"status":200} 
 </msg>
<msg time="2026-04-19T00:20:55.392014" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:20:55.383762" elapsed="0.008299"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.381573" elapsed="0.010533"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.392423" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.392132" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.381554" elapsed="0.011081"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.400869" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776558055,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.395531" elapsed="0.005433"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.394905" elapsed="0.006183"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.394860" elapsed="0.006257"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.404199" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.401420" elapsed="0.002873"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.401175" elapsed="0.003227"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.401158" elapsed="0.003272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.405154" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.404595" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.405514" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.405253" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.406486" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.405892" elapsed="0.000673"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.405717" elapsed="0.000997"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.405234" elapsed="0.001506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.407513" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.406911" elapsed="0.000630"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.407884" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.407613" elapsed="0.000466"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.408937" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.408278" elapsed="0.000739"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.408107" elapsed="0.001088"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.407594" elapsed="0.001626"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:20:55.409376" elapsed="0.000817"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:20:55.411220" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.410377" elapsed="0.000871"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.411406" elapsed="0.003399"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:20:55.393886" elapsed="0.020990"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:20:55.415090" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:55.414952" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.414931" elapsed="0.000233"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:20:55.418177" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:20:55.415332" elapsed="0.002887"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:20:55.418289" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:20:55.418459" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:20:55.376176" elapsed="0.042355"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:20:55.418593" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:20:55.418749" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:20:55.373558" elapsed="0.045218"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.419787" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.419513" elapsed="0.000325"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.420971" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.420565" elapsed="0.000434"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:20:55.421069" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:20:55.421233" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:20:55.420169" elapsed="0.001093"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.421654" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.421427" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.422067" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.421838" elapsed="0.000256"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:20:55.422141" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:20:55.422300" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:20:55.419006" elapsed="0.003321"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:20:55.422505" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:55.422397" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.422378" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.430237" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.429953" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.430704" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.430454" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:20:55.439555" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:20:55.439633" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:20:55 GMT', 'Expires': 'Sat, 18 Apr 2026 23:20:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776558055,"status":200} 
 </msg>
<msg time="2026-04-19T00:20:55.439747" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:20:55.433156" elapsed="0.006618"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.430815" elapsed="0.009002"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.439996" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.439842" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.430796" elapsed="0.009339"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.445534" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776558055,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.441787" elapsed="0.003878"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.441448" elapsed="0.004365"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.441421" elapsed="0.004431"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.449563" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.446290" elapsed="0.003363"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.445932" elapsed="0.003833"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.445908" elapsed="0.003885"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.450511" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.449957" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.450871" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.450610" elapsed="0.000470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.451851" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.451276" elapsed="0.000654"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.451108" elapsed="0.000986"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.450592" elapsed="0.001526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.452791" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.452280" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.453161" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:20:55.452889" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.454098" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:20:55.453524" elapsed="0.000652"/>
</kw>
<status status="PASS" start="2026-04-19T00:20:55.453360" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.452871" elapsed="0.001474"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:20:55.454499" elapsed="0.000694"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:20:55.456172" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.455360" elapsed="0.000839"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.456355" elapsed="0.003078"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:20:55.440830" elapsed="0.018720"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:20:55.459734" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:20:55.459623" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.459604" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:20:55.462733" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:20:55.459946" elapsed="0.002816"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:20:55.462816" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:20:55.462985" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:20:55.425425" elapsed="0.037589"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:20:55.463195" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:20:55.463414" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:20:55.422772" elapsed="0.040669"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.464338" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776558055,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.464077" elapsed="0.000312"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.465381" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:20:55.464948" elapsed="0.000463"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:20:55.465461" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:20:55.465646" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776558055, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:20:55.464602" elapsed="0.001072"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.466102" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.465834" elapsed="0.000297"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:20:55.466506" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:20:55.466291" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:20:55.466578" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:20:55.466728" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:20:55.463689" elapsed="0.003064"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:20:55.466797" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:20:55.466943" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:20:55.371813" elapsed="0.095155"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:20:55.467197" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T00:20:55.467082" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T00:20:55.467023" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:20:55.467431" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:20:55.371587" elapsed="0.095912"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.469191" level="INFO">${session} = ClusterManagement__session_3</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-19T00:20:55.468859" elapsed="0.000361"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:20:55.469266" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:20:55.469416" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:20:55.468513" elapsed="0.000927"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.477152" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.476871" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:20:55.477617" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:20:55.477370" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:23:00.576481" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:20:55.479911" elapsed="125.100529">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:20:55.477729" elapsed="125.102856">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.581003" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:00.580650" elapsed="0.000592"/>
</branch>
<status status="FAIL" start="2026-04-19T00:20:55.477710" elapsed="125.103572">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.582152" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:23:00.582391" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:00.582318" elapsed="0.000145"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:23:00.582291" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.582764" elapsed="0.000033"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:23:00.582870" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:20:55.472266" elapsed="125.110805">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:23:00.583203" elapsed="0.000027"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:20:55.469653" elapsed="125.113697">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.583667" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:23:00.583850" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:00.583798" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:23:00.583774" elapsed="0.000161"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.584237" elapsed="0.000036"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.584547" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:23:00.584641" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:20:55.468120" elapsed="125.116661">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:23:00.584943" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:23:00.584892" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:23:00.584867" elapsed="0.000181"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.585251" elapsed="0.000029"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:20:55.467645" elapsed="125.117709">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:20:55.276361" elapsed="125.309075">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:20:55.274116" elapsed="125.311454">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:20:55.273725" elapsed="125.311924">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:20:55.273697" elapsed="125.311994">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:23:00.586096" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:00.585781" elapsed="0.000392"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:23:00.585758" elapsed="0.000448"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:23:00.586575" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:00.586279" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:23:00.586257" elapsed="0.000429"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:20:55.273177" elapsed="125.313619">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:23:00.586950" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:15:53.765184" elapsed="426.822073">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:23:00.591460" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:23:00.590936" elapsed="0.000552"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:00.591963" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:23:00.591651" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:23:00.592066" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:23:00.592283" level="INFO">${index_list} = [1, 2, 3]</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-19T00:23:00.590504" elapsed="0.001807"/>
</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-19T00:23:00.593406" level="INFO">${member_ip} = 10.30.171.9</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-19T00:23:00.593135" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:00.594305" 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-19T00:23:00.594410" 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-19T00:23:00.594119" elapsed="0.000318"/>
</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-19T00:23:00.597209" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:00.596909" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:00.596889" elapsed="0.000402"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:00.597567" 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-19T00:23:00.597668" 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-19T00:23:00.597438" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:00.598413" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:00.597865" elapsed="0.000599"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:00.599109" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:23:00.598633" elapsed="0.000518"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:23:00.600322" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:23:00.600417" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:23:00.599887" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:00.600605" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:23:00.602711" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:23:01.214995" 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 Sun Apr 19 00:23:00 UTC 2026

  System load:  0.07               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:15:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:23:00.602091" elapsed="0.613126"/>
</kw>
<msg time="2026-04-19T00:23:01.215408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:00.601346" elapsed="0.614197"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:23:00.599410" elapsed="0.616244"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.216225" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T00:23:01.228765" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T00:23:01.229014" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:23:01.229154" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:23:01.215891" elapsed="0.013317"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:01.229580" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.231273" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:01.230509" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:01.231839" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:01.231547" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:01.231499" elapsed="0.000496"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:23:01.232474" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T00:23:01.232156" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:01.232119" elapsed="0.000548"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:01.232742" 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-19T00:23:01.237265" elapsed="0.000791"/>
</kw>
<kw name="Open 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-19T00:23:01.238290" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:01.238715" elapsed="0.000134"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:01.233371" elapsed="0.005550"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:23:00.596343" elapsed="0.642728"/>
</kw>
<msg time="2026-04-19T00:23:01.239148" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:00.595766" elapsed="0.643469"/>
</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-19T00:23:00.595148" elapsed="0.644196"/>
</kw>
<msg time="2026-04-19T00:23:01.239402" 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-19T00:23:00.594596" elapsed="0.644884"/>
</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-19T00:23:01.242942" 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-19T00:23:01.243432" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:01.243722" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:01.239881" elapsed="0.003987"/>
</kw>
<msg time="2026-04-19T00:23:01.243960" 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-19T00:23:00.593660" elapsed="0.650325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.244445" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:01.244178" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:23:01.244530" 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-19T00:23:00.592678" elapsed="0.651979"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:23:00.592500" elapsed="0.652195"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:01.245720" level="INFO">${member_ip} = 10.30.171.128</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-19T00:23:01.245449" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.246627" 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-19T00:23:01.246728" 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-19T00:23:01.246488" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:01.249706" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:01.249416" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:01.249397" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.250083" 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-19T00:23:01.250186" 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-19T00:23:01.249938" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.250831" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:01.250364" elapsed="0.000514"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.251513" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:23:01.251087" elapsed="0.000454"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.252644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:23:01.252737" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:23:01.252239" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:01.252920" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.254816" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:23:01.829703" 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 Sun Apr 19 00:23:01 UTC 2026

  System load:  0.03               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:15:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:23:01.254198" elapsed="0.575704"/>
</kw>
<msg time="2026-04-19T00:23:01.830019" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:01.253632" elapsed="0.576542"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:23:01.251760" elapsed="0.578522"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.830777" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T00:23:01.843430" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T00:23:01.843650" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:23:01.843745" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:23:01.830520" elapsed="0.013278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:01.844190" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.845511" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:01.845008" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:01.845887" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:01.845692" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:01.845659" elapsed="0.000345"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:23:01.846276" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T00:23:01.846116" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:01.846093" elapsed="0.000384"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:01.846568" 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-19T00:23:01.853017" elapsed="0.001155"/>
</kw>
<kw name="Open 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-19T00:23:01.854504" elapsed="0.000346"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:01.855198" elapsed="0.000212"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:01.847219" elapsed="0.008301"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:23:01.248832" elapsed="0.606881"/>
</kw>
<msg time="2026-04-19T00:23:01.855831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:01.248232" elapsed="0.607744"/>
</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-19T00:23:01.247635" elapsed="0.608553"/>
</kw>
<msg time="2026-04-19T00:23:01.856277" 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-19T00:23:01.246913" elapsed="0.609482"/>
</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-19T00:23:01.860844" 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-19T00:23:01.861564" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:01.861968" elapsed="0.000160"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:01.857075" elapsed="0.005132"/>
</kw>
<msg time="2026-04-19T00:23:01.862330" 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-19T00:23:01.246009" elapsed="0.616355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.862963" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:01.862631" elapsed="0.000389"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:23:01.863117" 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-19T00:23:01.244972" elapsed="0.618312"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:23:01.244790" elapsed="0.618544"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:01.864675" level="INFO">${member_ip} = 10.30.171.206</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-19T00:23:01.864316" elapsed="0.000394"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.865833" 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-19T00:23:01.865965" 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-19T00:23:01.865650" elapsed="0.000351"/>
</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-19T00:23:01.869619" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:01.869230" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:01.869203" elapsed="0.000531"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.870150" 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-19T00:23:01.870299" 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-19T00:23:01.869950" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.871245" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:01.870553" elapsed="0.000822"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.872138" level="INFO">${conn_id} = 553</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:23:01.871584" elapsed="0.000587"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:23:01.873671" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:23:01.873799" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:23:01.873129" elapsed="0.000706"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:01.874085" elapsed="0.001030"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:23:01.877103" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:23:02.493273" 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 Sun Apr 19 00:23:02 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:15:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:23:01.876180" elapsed="0.617293"/>
</kw>
<msg time="2026-04-19T00:23:02.493594" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:01.875368" elapsed="0.618360"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:23:01.872464" elapsed="0.621374"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:23:02.494364" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T00:23:02.507152" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T00:23:02.507407" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:23:02.507502" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:23:02.494108" elapsed="0.013447"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:02.507967" elapsed="0.000508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.509614" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:02.508883" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:02.510236" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:02.509879" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:02.509829" 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-19T00:23:02.510744" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T00:23:02.510513" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:02.510479" elapsed="0.000453"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:02.511007" elapsed="0.000065"/>
</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-19T00:23:02.516670" elapsed="0.000882"/>
</kw>
<kw name="Open 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-19T00:23:02.517803" elapsed="0.000264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:02.518289" 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-19T00:23:02.511735" elapsed="0.006776"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:23:01.868447" elapsed="0.650198"/>
</kw>
<msg time="2026-04-19T00:23:02.518725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:01.867681" elapsed="0.651144"/>
</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-19T00:23:01.866921" elapsed="0.652017"/>
</kw>
<msg time="2026-04-19T00:23:02.518997" 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-19T00:23:01.866241" elapsed="0.652956"/>
</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-19T00:23:02.523221" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:23:02.523693" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:02.523985" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:02.519645" elapsed="0.004518"/>
</kw>
<msg time="2026-04-19T00:23:02.524257" 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-19T00:23:01.865060" elapsed="0.659221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.524736" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:02.524488" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:23:02.524821" 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-19T00:23:01.863707" elapsed="0.661241"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:23:01.863459" elapsed="0.661547"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:23:00.592367" elapsed="1.932693"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T00:23:00.587702" elapsed="1.937420"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T00:15:52.616077" elapsed="429.909133">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:02.525405" elapsed="0.000022"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T00:23:02.525650" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:02.526025" elapsed="0.000040"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:02.526267" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:02.526550" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:02.526365" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:23:02.526347" elapsed="0.000286"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T00:23:02.525848" elapsed="0.000809"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T00:23:02.525732" elapsed="0.000949"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:02.526834" elapsed="0.000021"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:15:52.611398" elapsed="429.915615">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T00:23:02.527654" elapsed="0.000297"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T00:08:38.288793" elapsed="864.239195"/>
</suite>
<suite id="s1-s4" name="Rpc Provider Partition And Heal" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_partition_and_heal.robot">
<kw name="Setup_Kw" 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-19T00:23:02.619457" 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-19T00:23:02.615378" elapsed="0.004136"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T00:23:02.615141" elapsed="0.004522"/>
</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-19T00:23:02.624531" 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-19T00:23:02.620773" elapsed="0.003787"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T00:23:02.624775" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:02.624650" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:02.624625" elapsed="0.000219"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.625380" 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-19T00:23:02.624999" elapsed="0.000425"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.625897" level="INFO">${cluster_size} = 3</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-19T00:23:02.625583" elapsed="0.000341"/>
</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-19T00:23:02.626492" elapsed="0.000287"/>
</kw>
<msg time="2026-04-19T00:23:02.626875" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:02.626922" level="INFO">${possibly_int_of_members} = 3</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-19T00:23:02.626145" elapsed="0.000801"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.627495" level="INFO">${int_of_members} = 3</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-19T00:23:02.627126" elapsed="0.000395"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.628502" 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-19T00:23:02.628239" elapsed="0.000289"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.628924" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:23:02.628672" elapsed="0.000277"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.629424" 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-19T00:23:02.629125" elapsed="0.000325"/>
</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-19T00:23:02.632542" elapsed="0.000223"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.633276" level="INFO">${member_ip} = 10.30.171.9</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-19T00:23:02.632920" 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-19T00:23:02.633452" elapsed="0.000229"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.634501" 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-19T00:23:02.634208" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:23:02.634574" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:23:02.634735" 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-19T00:23:02.633872" elapsed="0.000887"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:23:02.635609" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7fd1910&gt;, timeout=125, 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-19T00:23:02.634920" elapsed="0.000825"/>
</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-19T00:23:02.635906" elapsed="0.000213"/>
</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-19T00:23:02.631967" elapsed="0.004215"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:23:02.631773" elapsed="0.004454"/>
</iter>
<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-19T00:23:02.637072" elapsed="0.000193"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.637742" level="INFO">${member_ip} = 10.30.171.128</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-19T00:23:02.637418" elapsed="0.000352"/>
</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-19T00:23:02.637916" elapsed="0.000255"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.639022" level="INFO">${session} = ClusterManagement__session_2</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-19T00:23:02.638728" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:23:02.639113" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:23:02.639270" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T00:23:02.638362" elapsed="0.000933"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:23:02.639849" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7f76350&gt;, timeout=125, 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-19T00:23:02.639446" elapsed="0.000507"/>
</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-19T00:23:02.640128" elapsed="0.000195"/>
</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-19T00:23:02.636500" elapsed="0.003882"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:23:02.636317" elapsed="0.004110"/>
</iter>
<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-19T00:23:02.641261" elapsed="0.000186"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.641918" level="INFO">${member_ip} = 10.30.171.206</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-19T00:23:02.641598" elapsed="0.000346"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:23:02.642135" elapsed="0.000817"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.645450" level="INFO">${session} = ClusterManagement__session_3</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-19T00:23:02.644620" elapsed="0.000895"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:23:02.645626" elapsed="0.000092"/>
</return>
<msg time="2026-04-19T00:23:02.646012" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T00:23:02.643718" elapsed="0.002420"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:23:02.647526" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7f8b9d0&gt;, timeout=125, 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-19T00:23:02.646503" elapsed="0.001313"/>
</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-19T00:23:02.648247" elapsed="0.000445"/>
</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-19T00:23:02.640695" elapsed="0.008136"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:23:02.640512" elapsed="0.008422"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T00:23:02.629508" elapsed="0.019501"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.650471" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T00:23:02.649429" elapsed="0.001145"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.651561" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T00:23:02.650952" elapsed="0.000652"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.652173" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T00:23:02.651764" elapsed="0.000453"/>
</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-19T00:23:02.627775" elapsed="0.024502"/>
</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-19T00:23:02.620430" elapsed="0.031912"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:02.652577" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:02.652428" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:02.652404" elapsed="0.000243"/>
</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-19T00:23:02.656202" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:23:02.655793" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.656691" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:23:02.656386" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:23:02.656761" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:23:02.656915" level="INFO">${index_list} = [1, 2, 3]</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-19T00:23:02.655464" elapsed="0.001475"/>
</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-19T00:23:02.657947" level="INFO">${member_ip} = 10.30.171.9</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-19T00:23:02.657684" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:02.658769" 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-19T00:23:02.658871" 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-19T00:23:02.658595" elapsed="0.000302"/>
</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-19T00:23:02.662255" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:02.661660" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:02.661640" elapsed="0.000736"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:02.662993" 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-19T00:23:02.663237" 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-19T00:23:02.662566" elapsed="0.000726"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.664221" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:02.663555" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:02.665478" 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-19T00:23:02.664589" elapsed="0.000939"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:23:02.667256" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:23:02.667430" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:23:02.666872" elapsed="0.000602"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:02.667815" elapsed="0.000473"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:23:02.669549" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:23:02.984285" 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 Sun Apr 19 00:23:00 UTC 2026

  System load:  0.07               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:23:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:23:02.669087" elapsed="0.315390"/>
</kw>
<msg time="2026-04-19T00:23:02.984562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:02.668630" elapsed="0.316093"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:23:02.665951" elapsed="0.318930"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:23:02.985849" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:23:02.998432" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:23:02.998796" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:23:02.999021" 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-19T00:23:02.985360" elapsed="0.013822"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:02.999843" elapsed="0.001320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.003679" 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-19T00:23:03.002434" elapsed="0.001476"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:03.004914" elapsed="0.000109"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:03.004342" elapsed="0.000935"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.004285" elapsed="0.001076"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:23:03.006063" elapsed="0.000142"/>
</return>
<status status="PASS" start="2026-04-19T00:23:03.005541" elapsed="0.000841"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.005502" elapsed="0.000967"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:03.006603" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.011446" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T00:23:03.012214" elapsed="0.000312"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.012785" elapsed="0.000225"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:03.007681" elapsed="0.005439"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:23:02.660708" elapsed="0.352591"/>
</kw>
<msg time="2026-04-19T00:23:03.013356" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:02.660055" elapsed="0.353352"/>
</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-19T00:23:02.659567" elapsed="0.353920"/>
</kw>
<msg time="2026-04-19T00:23:03.013527" 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-19T00:23:02.659066" elapsed="0.354505"/>
</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-19T00:23:03.016317" 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-19T00:23:03.016819" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.017162" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:03.013856" elapsed="0.003460"/>
</kw>
<msg time="2026-04-19T00:23:03.017408" 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-19T00:23:02.658229" elapsed="0.359203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.017867" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:03.017611" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:23:03.017960" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:23:02.657333" elapsed="0.360767"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:23:02.657155" elapsed="0.360983"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:03.019062" level="INFO">${member_ip} = 10.30.171.128</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-19T00:23:03.018773" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.019799" 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-19T00:23:03.019941" 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-19T00:23:03.019661" elapsed="0.000307"/>
</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-19T00:23:03.023545" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:03.022977" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.022957" elapsed="0.000710"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.024308" 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-19T00:23:03.024536" 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-19T00:23:03.023860" elapsed="0.000759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.025550" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:03.024880" elapsed="0.000772"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.026816" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:23:03.025915" elapsed="0.000951"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.028639" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:23:03.028815" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:23:03.028244" elapsed="0.000615"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.029209" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.030867" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:23:03.343074" 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 Sun Apr 19 00:23:01 UTC 2026

  System load:  0.03               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:23:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:23:03.030539" elapsed="0.312711"/>
</kw>
<msg time="2026-04-19T00:23:03.343356" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.030003" elapsed="0.313570"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:23:03.027354" elapsed="0.316426"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.344906" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:23:03.357951" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:23:03.358188" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:23:03.358316" 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-19T00:23:03.344289" elapsed="0.014088"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.358790" elapsed="0.000683"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.360936" 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-19T00:23:03.360229" elapsed="0.000858"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:03.361640" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:03.361304" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.361269" elapsed="0.000581"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:23:03.362252" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T00:23:03.361953" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.361931" elapsed="0.000686"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:03.362695" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.367402" 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-19T00:23:03.368345" elapsed="0.000360"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.369064" elapsed="0.000278"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:03.363336" elapsed="0.006100"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:23:03.022057" elapsed="0.347599"/>
</kw>
<msg time="2026-04-19T00:23:03.369727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.021424" elapsed="0.348367"/>
</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-19T00:23:03.020667" elapsed="0.349222"/>
</kw>
<msg time="2026-04-19T00:23:03.369940" 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-19T00:23:03.020146" elapsed="0.349850"/>
</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-19T00:23:03.373747" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T00:23:03.374361" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.374763" elapsed="0.000122"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:03.370390" elapsed="0.004559"/>
</kw>
<msg time="2026-04-19T00:23:03.375093" 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-19T00:23:03.019302" elapsed="0.355824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.375659" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:03.375350" elapsed="0.000359"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:23:03.375762" elapsed="0.000036"/>
</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-19T00:23:03.018418" elapsed="0.357498"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:23:03.018234" elapsed="0.357731"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:03.377160" level="INFO">${member_ip} = 10.30.171.206</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-19T00:23:03.376803" elapsed="0.000389"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.378128" 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-19T00:23:03.378258" 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-19T00:23:03.377930" elapsed="0.000361"/>
</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-19T00:23:03.382559" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:03.381830" elapsed="0.001470"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.381806" elapsed="0.001621"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.385097" 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-19T00:23:03.385604" 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-19T00:23:03.383956" elapsed="0.001760"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.387990" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:03.386426" elapsed="0.001931"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.390948" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:23:03.388936" elapsed="0.002151"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.394875" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:23:03.395322" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:23:03.394022" elapsed="0.001344"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.395698" elapsed="0.000675"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.397625" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:23:03.726876" 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 Sun Apr 19 00:23:02 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:23:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:23:03.397297" elapsed="0.329767"/>
</kw>
<msg time="2026-04-19T00:23:03.727160" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.396721" elapsed="0.330616"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:23:03.392021" elapsed="0.335482"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.728425" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:23:03.741965" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:23:03.742359" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:23:03.742577" 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-19T00:23:03.727906" elapsed="0.014777"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.743375" elapsed="0.001091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.746990" 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-19T00:23:03.745715" elapsed="0.001581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:03.748288" elapsed="0.000107"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:03.747670" elapsed="0.000886"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.747615" elapsed="0.001022"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:23:03.749306" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T00:23:03.748884" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.748843" elapsed="0.000644"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:23:03.749548" elapsed="0.000017"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.752917" elapsed="0.000472"/>
</kw>
<kw name="Open 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-19T00:23:03.753661" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.754216" elapsed="0.000226"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:03.750092" elapsed="0.004418"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:23:03.380663" elapsed="0.374023"/>
</kw>
<msg time="2026-04-19T00:23:03.754821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:03.379877" elapsed="0.374999"/>
</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-19T00:23:03.379275" elapsed="0.375683"/>
</kw>
<msg time="2026-04-19T00:23:03.754999" 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-19T00:23:03.378490" elapsed="0.376571"/>
</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-19T00:23:03.757822" 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-19T00:23:03.758306" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.758593" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:03.755355" elapsed="0.003381"/>
</kw>
<msg time="2026-04-19T00:23:03.758827" 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-19T00:23:03.377470" elapsed="0.381381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.759282" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:03.759020" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:23:03.759366" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:23:03.376343" elapsed="0.383145"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:23:03.376108" elapsed="0.383417"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:23:02.656996" elapsed="1.102564"/>
</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-19T00:23:02.652881" elapsed="1.106738"/>
</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-19T00:23:03.759774" elapsed="0.000210"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:03.773440" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:03.773330" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.773310" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.773792" 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-19T00:23:03.773893" 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-19T00:23:03.773658" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.774342" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:03.774085" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:03.774772" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:03.774532" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:03.775560" 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-19T00:23:03.775337" elapsed="0.000339">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T00:23:03.775781" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:23:03.775826" 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-19T00:23:03.774965" 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-19T00:23:03.776167" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:03.775922" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:03.775904" elapsed="0.000367"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:03.777009" level="INFO">${ip_address} = 10.30.171.9</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-19T00:23:03.776732" elapsed="0.000317"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:23:03.777098" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:23:03.777247" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:23:03.776466" elapsed="0.000805"/>
</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-19T00:23:03.777471" elapsed="0.000414"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.778175" level="INFO">index=10
host=10.30.171.9
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-19T00:23:03.778274" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.778066" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:23:03.778447" elapsed="0.002196"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:23:03.781105" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:23:04.632517" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:23:03.780804" elapsed="0.851913"/>
</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-19T00:23:04.636678" elapsed="0.000397"/>
</kw>
<kw name="Open 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-19T00:23:04.637244" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:04.637614" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:04.634052" elapsed="0.003724"/>
</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-19T00:23:04.633238" elapsed="0.004588"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:23:03.773043" elapsed="0.864836"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:23:03.760752" elapsed="0.877176"/>
</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-19T00:23:03.760385" elapsed="0.877596"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:23:03.760248" elapsed="0.877775"/>
</iter>
<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-19T00:23:04.651243" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:04.651120" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:04.651094" elapsed="0.000228"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:04.651628" 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-19T00:23:04.651748" 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-19T00:23:04.651476" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:04.652215" 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-19T00:23:04.651927" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:04.652672" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:04.652414" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:04.653489" level="FAIL">Dictionary does not contain key '2'.</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-19T00:23:04.653250" elapsed="0.000399">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T00:23:04.653820" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:23:04.653947" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T00:23:04.652875" elapsed="0.001099"/>
</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-19T00:23:04.654299" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:04.654072" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:04.654050" elapsed="0.000349"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:04.655161" level="INFO">${ip_address} = 10.30.171.128</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-19T00:23:04.654872" elapsed="0.000316"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:23:04.655236" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:23:04.655393" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:23:04.654598" elapsed="0.000820"/>
</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-19T00:23:04.655567" elapsed="0.000409"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:04.656265" level="INFO">index=12
host=10.30.171.128
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-19T00:23:04.656364" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T00:23:04.656158" elapsed="0.000232"/>
</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-19T00:23:04.656533" elapsed="0.002384"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:23:04.659355" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:23:05.721924" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:23:04.659095" elapsed="1.063014"/>
</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-19T00:23:05.725686" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T00:23:05.726258" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:05.726578" elapsed="0.000137"/>
</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-19T00:23:05.723383" elapsed="0.003388"/>
</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-19T00:23:05.722556" elapsed="0.004262"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:23:04.650804" elapsed="1.076066"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:23:04.638683" elapsed="1.088235"/>
</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-19T00:23:04.638294" elapsed="1.088677"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:23:04.638153" elapsed="1.088860"/>
</iter>
<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-19T00:23:05.740042" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:05.739895" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:05.739872" elapsed="0.000346"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:05.740594" 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-19T00:23:05.740704" 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-19T00:23:05.740452" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:05.741169" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:05.740883" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:05.741617" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:05.741370" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:05.742454" level="FAIL">Dictionary does not contain key '3'.</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-19T00:23:05.742212" elapsed="0.000350">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T00:23:05.742676" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:23:05.742753" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T00:23:05.741817" elapsed="0.000960"/>
</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-19T00:23:05.743091" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:05.742854" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:05.742835" elapsed="0.000356"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:05.744150" level="INFO">${ip_address} = 10.30.171.206</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-19T00:23:05.743854" elapsed="0.000323"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:23:05.744227" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:23:05.744388" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:23:05.743389" elapsed="0.001023"/>
</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-19T00:23:05.744564" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:05.745259" level="INFO">index=14
host=10.30.171.206
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-19T00:23:05.745361" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T00:23:05.745150" 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-19T00:23:05.745533" elapsed="0.002217"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:23:05.748189" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:23:15.816291" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:05.747911" elapsed="10.069340">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:15.820863" elapsed="0.000377"/>
</kw>
<kw name="Open 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-19T00:23:15.821403" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:15.821755" 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-19T00:23:15.818568" elapsed="0.003344"/>
</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-19T00:23:15.817851" elapsed="0.004106"/>
</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-19T00:23:05.739587" elapsed="10.082475">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:23:15.822166" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:05.727654" elapsed="10.094605">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:05.727277" elapsed="10.095146"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:23:05.727135" elapsed="10.095336"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T00:23:03.760097" elapsed="12.062412"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T00:23:02.619968" elapsed="13.202602"/>
</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-19T00:23:15.825396" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:15.825277" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:15.825254" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:15.830174" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:15.830062" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:15.830010" elapsed="0.000232"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:23:15.831197" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:23:15.830793" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:15.831683" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:23:15.831380" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:23:15.831753" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:23:15.831908" level="INFO">${index_list} = [1, 2, 3]</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-19T00:23:15.830465" elapsed="0.001467"/>
</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-19T00:23:15.837161" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:15.837045" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:15.837014" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:15.838435" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:15.838306" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:15.838289" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:15.838971" 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-19T00:23:15.838647" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:15.839397" 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-19T00:23:15.839172" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:23:15.917188" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:23:15.840086" elapsed="0.077232"/>
</kw>
<msg time="2026-04-19T00:23:15.917445" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:23:15.917492" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:15.839578" elapsed="0.077951"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:23:16.044354" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:23:15.918248" elapsed="0.126270"/>
</kw>
<msg time="2026-04-19T00:23:16.044656" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:23:16.044703" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:15.917696" elapsed="0.127044"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:16.045159" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:16.044820" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.044799" elapsed="0.000582"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:16.045894" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:16.045530" elapsed="0.000484"/>
</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-19T00:23:16.046335" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:16.046098" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.046079" elapsed="0.000427"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:23:16.046542" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:16.048716" elapsed="0.002006"/>
</kw>
<kw name="Open 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-19T00:23:16.051096" elapsed="0.000301"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:16.051723" 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-19T00:23:16.047729" elapsed="0.004436"/>
</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-19T00:23:16.046812" elapsed="0.005491"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:23:15.838000" elapsed="0.214405"/>
</kw>
<msg time="2026-04-19T00:23:16.052497" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:16.052541" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:15.837376" elapsed="0.215203"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:23:16.052767" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:23:16.052657" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.052638" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:16.053268" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:16.053609" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:23:16.053682" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:23:15.836747" elapsed="0.217044"/>
</kw>
<msg time="2026-04-19T00:23:16.053884" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:16.053928" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:15.832325" elapsed="0.221641"/>
</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-19T00:23:16.054318" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:16.054071" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.054052" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:23:15.832174" elapsed="0.222246"/>
</iter>
<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-19T00:23:16.059599" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:16.059492" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.059473" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:16.060925" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:16.060796" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.060777" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:16.061478" level="INFO">${karaf_connection_index} = 12</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-19T00:23:16.061161" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:16.061922" 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-19T00:23:16.061697" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:23:16.142131" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:23:16.062620" elapsed="0.079646"/>
</kw>
<msg time="2026-04-19T00:23:16.142393" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:23:16.142440" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:16.062134" elapsed="0.080342"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:23:16.276453" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:23:16.143235" elapsed="0.133388"/>
</kw>
<msg time="2026-04-19T00:23:16.276757" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:23:16.276804" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:16.142685" elapsed="0.134156"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:16.277193" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:16.276921" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.276900" elapsed="0.000469"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:16.277872" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "r "p "c "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:16.277511" elapsed="0.000455"/>
</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-19T00:23:16.278294" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:16.278057" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.278016" elapsed="0.000469"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:23:16.278520" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:16.280528" 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-19T00:23:16.281376" elapsed="0.000294"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:16.281991" elapsed="0.000251"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:16.279730" elapsed="0.002627"/>
</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-19T00:23:16.278817" elapsed="0.003680"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:23:16.060478" elapsed="0.222120"/>
</kw>
<msg time="2026-04-19T00:23:16.282694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:16.282740" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:16.059820" elapsed="0.222958"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:23:16.282961" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:23:16.282854" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.282836" elapsed="0.000471"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:16.283705" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:16.344991" elapsed="0.000084"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:23:16.345284" elapsed="0.000024"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:23:16.059200" elapsed="0.286248"/>
</kw>
<msg time="2026-04-19T00:23:16.345558" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:16.345605" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:16.054681" elapsed="0.290963"/>
</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-19T00:23:16.346072" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:16.345737" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.345715" elapsed="0.000439"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:23:16.054544" elapsed="0.291635"/>
</iter>
<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-19T00:23:16.351438" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:16.351327" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.351308" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:16.352723" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:16.352596" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:16.352578" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:16.353293" level="INFO">${karaf_connection_index} = 14</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-19T00:23:16.352933" elapsed="0.000386"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:16.353703" 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-19T00:23:16.353475" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:23:26.355522" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:23:16.354401" elapsed="10.002160">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:23:26.356798" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:23:26.356850" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:23:16.353885" elapsed="10.002989"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:23:36.358639" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:23:26.357785" elapsed="10.001759">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:23:36.359777" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:23:36.359826" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:23:26.357172" elapsed="10.002679"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:23:36.361236" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_partition_and_heal.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-19T00:23:36.360453" elapsed="0.000865">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_partition_and_heal.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:23:36.359979" elapsed="0.001482">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_partition_and_heal.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:23:36.359946" elapsed="0.001731">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_partition_and_heal.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-19T00:23:36.361848" 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-19T00:23:36.362145" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:36.361935" elapsed="0.000371"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:23:36.361919" elapsed="0.000413"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:23:36.362376" 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-19T00:23:36.364420" 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-19T00:23:36.365296" elapsed="0.000303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:36.365925" elapsed="0.000287"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:36.363621" elapsed="0.002681"/>
</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-19T00:23:36.362689" elapsed="0.003746"/>
</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-19T00:23:16.352308" elapsed="20.014217">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_partition_and_heal.robot"</status>
</kw>
<msg time="2026-04-19T00:23:36.366630" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:23:36.366674" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/rpc_provider_partition_and_...</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-19T00:23:16.351663" elapsed="20.015035"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:23:36.366881" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:36.366774" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:36.366756" 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-19T00:23:36.367707" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:36.367602" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:36.367585" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:36.368178" 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-19T00:23:36.368284" 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-19T00:23:36.367923" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:36.368727" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:36.368461" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:36.369183" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:36.368920" elapsed="0.000306"/>
</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-19T00:23:36.369735" elapsed="0.000283"/>
</kw>
<msg time="2026-04-19T00:23:36.370164" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:36.370211" level="INFO">${old_connection_index} = 14</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-19T00:23:36.369380" elapsed="0.000854"/>
</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-19T00:23:36.371335" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:23:46.373537" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:23:36.372616" elapsed="10.001724">No match found for '
' in 10 seconds
Output:
.</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-19T00:23:36.371824" elapsed="10.002673"/>
</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-19T00:23:46.375764" elapsed="0.000337"/>
</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-19T00:23:46.374901" elapsed="0.001277"/>
</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-19T00:23:36.370528" elapsed="10.005737"/>
</kw>
<status status="PASS" start="2026-04-19T00:23:36.370309" elapsed="10.006009"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:36.370292" elapsed="10.006062"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:46.377422" level="INFO">${ip_address} = 10.30.171.206</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-19T00:23:46.376939" elapsed="0.000510"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:23:46.377502" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:23:46.377661" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:23:46.376603" elapsed="0.001083"/>
</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-19T00:23:46.377854" elapsed="0.000454"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:46.378730" level="INFO">index=19
host=10.30.171.206
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-19T00:23:46.378836" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T00:23:46.378602" elapsed="0.000261"/>
</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-19T00:23:46.379013" elapsed="0.002645"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:23:46.382109" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:23:56.444712" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:46.381825" elapsed="10.063754">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:56.449370" elapsed="0.000646"/>
</kw>
<kw name="Open 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-19T00:23:56.450282" elapsed="0.000438"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:56.450935" elapsed="0.000199"/>
</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-19T00:23:56.446796" elapsed="0.004421"/>
</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-19T00:23:56.446108" elapsed="0.005156"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:23:36.367359" elapsed="20.083994">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:56.451727" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:23:56.451804" elapsed="0.000020"/>
</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-19T00:23:16.351002" elapsed="40.100916">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:23:56.452043" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:23:56.452111" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:16.346501" elapsed="40.105635"/>
</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-19T00:23:56.452499" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:56.452233" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.452209" elapsed="0.000373"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:23:16.346317" elapsed="40.106291"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:23:15.831986" elapsed="40.620657"/>
</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-19T00:23:15.829736" elapsed="40.623020"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T00:23:15.823204" elapsed="40.629615"/>
</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-19T00:23:15.822731" elapsed="40.630132"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T00:23:02.614786" elapsed="53.838133"/>
</kw>
<kw name="DrbCommons_Init" owner="DrbCommons">
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.456642" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:23:56.456252" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.457205" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:23:56.456866" elapsed="0.000365"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:23:56.457279" elapsed="0.000033"/>
</return>
<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-19T00:23:56.454091" elapsed="0.003318"/>
</kw>
<msg time="2026-04-19T00:23:56.457540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:56.453654" elapsed="0.003934"/>
</kw>
<msg time="2026-04-19T00:23:56.457687" level="INFO">${all_indices} = [1, 2, 3]</msg>
<var>${all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T00:23:56.453442" elapsed="0.004270"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.458301" level="INFO">${all_indices} = [1, 2, 3]</msg>
<arg>${all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:23:56.457870" elapsed="0.000474"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.461508" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:23:56.461126" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.461993" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:23:56.461690" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:23:56.462081" elapsed="0.000031"/>
</return>
<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-19T00:23:56.459141" elapsed="0.003069"/>
</kw>
<msg time="2026-04-19T00:23:56.462247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:56.458749" elapsed="0.003542"/>
</kw>
<msg time="2026-04-19T00:23:56.462389" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<var>${nonregistered_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T00:23:56.458536" elapsed="0.003878"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.462897" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<arg>${nonregistered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:23:56.462568" elapsed="0.000374"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.466201" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:23:56.465803" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.466684" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:23:56.466381" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:23:56.466754" elapsed="0.000028"/>
</return>
<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-19T00:23:56.463825" elapsed="0.003052"/>
</kw>
<msg time="2026-04-19T00:23:56.466913" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:56.463362" elapsed="0.003594"/>
</kw>
<msg time="2026-04-19T00:23:56.467069" level="INFO">${active_indices} = [1, 2, 3]</msg>
<var>${active_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T00:23:56.463151" elapsed="0.003944"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.467567" level="INFO">${active_indices} = [1, 2, 3]</msg>
<arg>${active_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:23:56.467250" elapsed="0.000358"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.467989" level="INFO">${possible_constants} = []</msg>
<var>${possible_constants}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:23:56.467751" elapsed="0.000263"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.468499" level="INFO">${possible_constants} = []</msg>
<arg>${possible_constants}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:23:56.468183" elapsed="0.000356"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.468920" level="INFO">${registered_indices} = []</msg>
<var>${registered_indices}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:23:56.468684" elapsed="0.000262"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.469501" level="INFO">${registered_indices} = []</msg>
<arg>${registered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:23:56.469154" elapsed="0.000389"/>
</kw>
<doc>Resouce initial keyword. Creates several suite variables which are
used in other keywords and should be used im the test suites.</doc>
<status status="PASS" start="2026-04-19T00:23:56.453181" elapsed="0.016417"/>
</kw>
<doc>Setup keyword. Create ${possible_constants} list with possible variables of remote constants.</doc>
<status status="PASS" start="2026-04-19T00:23:02.614376" elapsed="53.855272"/>
</kw>
<test id="s1-s4-t1" name="Register_Rpc_On_Two_Nodes" line="33">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:23:56.472777" elapsed="0.000203"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:23:56.472517" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:56.474083" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.473956" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.473937" elapsed="0.000260"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:56.479001" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.478894" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.478876" elapsed="0.000210"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.480068" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:23:56.479677" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.480551" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:23:56.480251" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:23:56.480620" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:23:56.480774" level="INFO">${index_list} = [1, 2, 3]</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-19T00:23:56.479306" elapsed="0.001492"/>
</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-19T00:23:56.486152" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.486024" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.486005" 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-19T00:23:56.487367" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.487261" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.487243" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:56.487878" 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-19T00:23:56.487577" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:56.488296" 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-19T00:23:56.488079" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:23:56.540341" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:23:56.488809" elapsed="0.051639"/>
</kw>
<msg time="2026-04-19T00:23:56.540613" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:23:56.540659" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:23:56.488478" elapsed="0.052218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:23:56.596181" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:23:56.541265" elapsed="0.055303"/>
</kw>
<msg time="2026-04-19T00:23:56.596950" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:23:56.597028" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:56.540889" elapsed="0.056251"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:56.597840" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:56.597326" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.597272" elapsed="0.000708"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.598826" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:56.598225" elapsed="0.000728"/>
</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-19T00:23:56.599404" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:56.599077" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.599025" elapsed="0.000500"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:23:56.599588" elapsed="0.000064"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:23:56.601974" elapsed="0.001297"/>
</kw>
<kw name="Open 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-19T00:23:56.603691" elapsed="0.000643"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:56.604736" elapsed="0.000575"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:56.601021" elapsed="0.004444"/>
</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-19T00:23:56.600101" elapsed="0.005465"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:23:56.486932" elapsed="0.118787"/>
</kw>
<msg time="2026-04-19T00:23:56.605873" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:56.605949" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:56.486369" elapsed="0.119639"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:23:56.606316" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-19T00:23:56.606153" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.606124" elapsed="0.000327"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:56.607044" elapsed="0.000077"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:56.607582" elapsed="0.000037"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:23:56.607682" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:23:56.485684" elapsed="0.122158"/>
</kw>
<msg time="2026-04-19T00:23:56.607992" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:56.608087" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:56.481183" elapsed="0.126964"/>
</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-19T00:23:56.608629" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:56.608268" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.608242" elapsed="0.000508"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:23:56.481029" elapsed="0.127760"/>
</iter>
<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-19T00:23:56.616826" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.616661" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.616631" elapsed="0.000299"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:56.618724" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.618559" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.618532" elapsed="0.000294"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:56.619496" level="INFO">${karaf_connection_index} = 12</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-19T00:23:56.619025" elapsed="0.000507"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:56.619968" 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-19T00:23:56.619731" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:23:56.676281" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:23:56.620515" elapsed="0.056076"/>
</kw>
<msg time="2026-04-19T00:23:56.676929" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:23:56.677007" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:23:56.620174" elapsed="0.056929"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:23:56.728751" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:23:56.678195" elapsed="0.051123"/>
</kw>
<msg time="2026-04-19T00:23:56.729769" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:23:56.729878" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:56.677477" elapsed="0.052487"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:56.730893" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:56.730247" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.730184" elapsed="0.000932"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:23:56.732262" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:23:56.731437" elapsed="0.001111"/>
</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-19T00:23:56.733162" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:56.732762" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.732714" elapsed="0.000561"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:23:56.733328" elapsed="0.000058"/>
</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-19T00:23:56.736045" elapsed="0.001217"/>
</kw>
<kw name="Open 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-19T00:23:56.737666" elapsed="0.000689"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:23:56.738737" elapsed="0.000573"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:23:56.735005" elapsed="0.004449"/>
</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-19T00:23:56.733803" elapsed="0.005743"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:23:56.618116" elapsed="0.121577"/>
</kw>
<msg time="2026-04-19T00:23:56.739866" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:56.739930" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:56.617219" elapsed="0.122765"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:23:56.740276" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T00:23:56.740121" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.740094" elapsed="0.000305"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:23:56.741015" elapsed="0.000031"/>
</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-19T00:23:56.741396" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:23:56.741471" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:23:56.616130" elapsed="0.125451"/>
</kw>
<msg time="2026-04-19T00:23:56.741676" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:23:56.741721" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:56.609268" elapsed="0.132491"/>
</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-19T00:23:56.742148" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:23:56.741844" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.741825" elapsed="0.000405"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:23:56.609041" elapsed="0.133213"/>
</iter>
<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-19T00:23:56.747811" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.747699" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.747679" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:23:56.749228" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:23:56.749109" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T00:23:56.749085" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:23:56.749752" level="INFO">${karaf_connection_index} = 19</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-19T00:23:56.749440" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:23:56.750184" 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-19T00:23:56.749936" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:24:06.751403" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:23:56.750709" elapsed="10.001691">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:24:06.752676" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:24:06.752728" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:23:56.750373" elapsed="10.002380"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:24:16.754177" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:24:06.753480" elapsed="10.001776">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:24:16.755607" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:24:16.755673" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:24:06.753009" elapsed="10.002697"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:24:16.757293" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</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-19T00:24:16.756318" elapsed="0.001057">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:24:16.755861" elapsed="0.002007">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:24:16.755818" elapsed="0.002103">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</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-19T00:24:16.758155" elapsed="0.000031"/>
</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-19T00:24:16.758456" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:16.758269" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:24:16.758248" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:24:16.758602" elapsed="0.000022"/>
</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-19T00:24:16.760334" elapsed="0.000811"/>
</kw>
<kw name="Open 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-19T00:24:16.761437" elapsed="0.000528"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:24:16.762251" elapsed="0.000380"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:24:16.759629" elapsed="0.003113"/>
</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-19T00:24:16.758987" elapsed="0.003831"/>
</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-19T00:23:56.748689" elapsed="20.014218">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</status>
</kw>
<msg time="2026-04-19T00:24:16.763015" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:24:16.763080" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</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-19T00:23:56.748033" elapsed="20.015073"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:24:16.763297" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:16.763185" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:16.763166" elapsed="0.000198"/>
</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-19T00:24:16.764261" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:16.764121" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:16.764101" elapsed="0.000381"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:24:16.764825" 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-19T00:24:16.764934" 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-19T00:24:16.764650" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:16.765414" level="INFO">{1: 10, 2: 12, 3: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:16.765134" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:16.765932" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:16.765656" elapsed="0.000320"/>
</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-19T00:24:16.766574" elapsed="0.000297"/>
</kw>
<msg time="2026-04-19T00:24:16.766972" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:24:16.767019" level="INFO">${old_connection_index} = 19</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-19T00:24:16.766206" elapsed="0.000852"/>
</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-19T00:24:16.767875" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:24:26.769820" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:24:16.768808" elapsed="10.002062">No match found for '
' in 10 seconds
Output:
.</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-19T00:24:16.768320" elapsed="10.002688"/>
</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-19T00:24:26.771912" elapsed="0.000550"/>
</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-19T00:24:26.771340" elapsed="0.001213"/>
</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-19T00:24:16.767362" elapsed="10.005239"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:16.767136" elapsed="10.005519"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:16.767118" elapsed="10.005572"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:24:26.773651" level="INFO">${ip_address} = 10.30.171.206</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-19T00:24:26.773332" elapsed="0.000346"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:24:26.773740" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:24:26.773899" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:24:26.772930" elapsed="0.000994"/>
</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-19T00:24:26.774096" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:24:26.774804" level="INFO">index=24
host=10.30.171.206
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-19T00:24:26.774905" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.206
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-19T00:24:26.774690" 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-19T00:24:26.775107" elapsed="0.002564"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:24:26.778148" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:24:36.808517" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:24:26.777834" elapsed="10.031588">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:24:36.824373" elapsed="0.000535"/>
</kw>
<kw name="Open 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-19T00:24:36.825411" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:24:36.825769" 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-19T00:24:36.810655" elapsed="0.015269"/>
</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-19T00:24:36.809944" elapsed="0.016139"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:24:16.763772" elapsed="20.062405">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:24:36.826556" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:24:36.826634" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:23:56.747342" elapsed="40.079408">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:24:36.826866" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:24:36.826910" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:23:56.742533" elapsed="40.084400"/>
</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-19T00:24:36.827296" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:36.827021" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:36.826999" elapsed="0.000376"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:23:56.742391" elapsed="40.085017"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:23:56.480852" elapsed="40.346592"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:23:56.478535" elapsed="40.348970"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:23:56.473665" elapsed="40.353899"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:23:56.473203" elapsed="40.354408"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:23:56.470272" elapsed="40.357396"/>
</kw>
<kw name="Register_Rpc_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.830343" 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-19T00:24:36.830014" elapsed="0.000356"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:24:36.830417" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:24:36.830567" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:24:36.829673" elapsed="0.000919"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.831387" level="INFO">&amp;{mapping} = { CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:24:36.830751" elapsed="0.000663"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.864293" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:36.863816" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:24:36.865172" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:24:36.864815" elapsed="0.000538">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:24:36.865658" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:24:36.864484" elapsed="0.001200"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.866310" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:24:36.865845" elapsed="0.000492"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:24:36.866663" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:24:36.866900" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:24:36.866497" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.867408" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.867094" elapsed="0.000359"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.869013" level="INFO">mapping: {'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.868330" elapsed="0.000857"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.870203" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:24:36.869475" elapsed="0.000771"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.871653" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:24:36.871162" elapsed="0.000529"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:24:36.872998" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:24:36.872640" elapsed="0.000463"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:24:36.873161" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:24:36.873470" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:24:36.872192" elapsed="0.001344"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:24:36.873896" elapsed="0.000365"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-19T00:24:36.870811" elapsed="0.003508"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:24:36.870400" elapsed="0.004033"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:24:36.874646" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:24:36.874925" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:24:36.867871" elapsed="0.007081"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:36.867526" elapsed="0.007459"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.875174" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:36.875011" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:36.867505" elapsed="0.007747"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.875874" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:36.875393" elapsed="0.000508"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:24:36.875950" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:24:36.863210" elapsed="0.012892"/>
</kw>
<msg time="2026-04-19T00:24:36.876156" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:36.850999" elapsed="0.025207"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.888374" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.900373" elapsed="0.000055"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.912426" elapsed="0.000062"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.912852" elapsed="0.000026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.913060" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.913496" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:36.913348" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:24:36.913330" elapsed="0.000276"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.913746" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.913908" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.914082" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:24:36.913290" elapsed="0.000847"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:24:36.913152" elapsed="0.001012"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.914308" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:24:36.914389" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T00:24:36.914541" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:24:36.846873" elapsed="0.067695"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.939233" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:36.938693" elapsed="0.000574"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:24:36.940160" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:24:36.939779" elapsed="0.000574">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:24:36.940630" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:24:36.939437" elapsed="0.001218"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.941296" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:24:36.940820" elapsed="0.000504"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:24:36.941686" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:24:36.941910" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:24:36.941482" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.942379" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.942109" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:24:36.942908" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:36.942505" elapsed="0.000467"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.943767" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:36.943174" elapsed="0.000621"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:36.942999" elapsed="0.000831"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:36.942482" elapsed="0.001370"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.944851" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:36.943996" elapsed="0.000937"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:24:36.944988" elapsed="0.000051"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:24:36.937926" elapsed="0.007216"/>
</kw>
<msg time="2026-04-19T00:24:36.945197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:36.925446" elapsed="0.019801"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.957375" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.969430" elapsed="0.000049"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.981256" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.981474" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.981675" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.982138" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:36.981937" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:24:36.981920" elapsed="0.000304"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.982361" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.982521" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.982680" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:24:36.981879" elapsed="0.000855"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:24:36.981762" elapsed="0.001000"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.982903" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:24:36.982983" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:24:36.983165" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:24:36.924498" elapsed="0.058703"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:24:36.984836" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:24:36.984543" elapsed="0.000367">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:24:36.985005" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:24:36.984015" elapsed="0.001030"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:36.985384" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:36.985119" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.985946" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:36.985651" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:36.985466" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:36.985100" elapsed="0.000948"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.988302" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:24:36.986197" elapsed="0.002131"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:24:36.988381" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:24:36.988537" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:24:36.983656" elapsed="0.004905"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.990150" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.989875" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.990578" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.990343" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.991008" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.990768" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.991453" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.991213" elapsed="0.000284"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:24:36.992308" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:24:36.992106" elapsed="0.000228"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:24:36.992655" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:24:36.992482" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:24:36.992825" elapsed="0.000225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:36.993503" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:36.993204" elapsed="0.000358"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:24:36.993606" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:24:36.993759" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:24:36.991692" elapsed="0.002092"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:24:37.468234" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:24:37.468383" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node0xtkt3ytftmvjpfsi1vtndb7q0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 00:24:37 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T00:24:37.468656" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:24:36.997401" elapsed="0.471314"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:36.995363" elapsed="0.473469"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.469327" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.468900" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:36.993837" elapsed="0.475942"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.478171" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.472575" elapsed="0.005644"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.472056" elapsed="0.006200"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.471985" elapsed="0.006296"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.480855" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.478562" elapsed="0.002340"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.478338" elapsed="0.002600"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.478321" elapsed="0.002642"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.481556" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:37.481153" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.481905" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.481654" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.482484" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:37.482177" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.481988" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.481636" elapsed="0.000932"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.483103" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:37.482722" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.483433" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.483206" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.483960" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:37.483668" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.483514" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.483188" elapsed="0.000869"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:37.484211" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:24:37.485020" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:37.484720" elapsed="0.000343"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.485215" elapsed="0.002359"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:24:37.470859" elapsed="0.016792"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:24:37.487837" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-19T00:24:37.487725" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.487706" elapsed="0.000226"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.488097" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:24:37.488166" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T00:24:37.490401" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:24:36.988882" elapsed="0.501546"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:24:37.490500" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:24:37.490652" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:24:36.836115" elapsed="0.654563"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.491093" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.490831" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.490814" elapsed="0.000373"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:24:37.491219" elapsed="0.000025"/>
</return>
<arg>${REGISTER_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:24:36.831667" elapsed="0.659672"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Register the get-constant rpc on the requested node with given constant.</doc>
<status status="PASS" start="2026-04-19T00:24:36.828865" elapsed="0.662535"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.491943" elapsed="0.000255"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:24:37.492350" elapsed="0.000150"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the [] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:24:37.491620" elapsed="0.000936"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.493063" elapsed="0.000189"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.493402" elapsed="0.000187"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:24:37.493734" elapsed="0.000178"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:24:37.494072" elapsed="0.000150"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:24:37.492738" elapsed="0.001540"/>
</kw>
<arg>${index}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:24:36.828499" elapsed="0.665830"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:24:36.828335" elapsed="0.666027"/>
</iter>
<iter>
<kw name="Register_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.496370" level="INFO">${session} = ClusterManagement__session_2</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-19T00:24:37.496059" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:24:37.496445" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:24:37.496596" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:24:37.495496" elapsed="0.001125"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.497189" level="INFO">&amp;{mapping} = { CONSTANT=constant-2 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.496782" elapsed="0.000434"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.530804" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:37.530265" elapsed="0.000573"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:24:37.531765" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:24:37.531403" elapsed="0.000550">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:24:37.532254" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:24:37.531016" elapsed="0.001264"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.532903" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:24:37.532448" elapsed="0.000483"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:24:37.533276" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:24:37.533439" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:24:37.533104" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.534046" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.533695" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.535763" level="INFO">mapping: {'CONSTANT': 'constant-2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.535020" elapsed="0.000895"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.536941" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.536230" elapsed="0.000755"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.538532" level="INFO">${value} = constant-2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:24:37.538012" elapsed="0.000560"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:24:37.539955" level="INFO">${encoded} = constant-2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.539538" elapsed="0.000445"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:24:37.540132" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:24:37.540458" level="INFO">${encoded_value} = constant-2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:24:37.539084" elapsed="0.001414"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.540847" elapsed="0.000363"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-2</var>
<status status="PASS" start="2026-04-19T00:24:37.537586" elapsed="0.003683"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:24:37.537164" elapsed="0.004219"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:24:37.541601" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:24:37.541946" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:24:37.534582" elapsed="0.007391"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.534178" elapsed="0.007829"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.542200" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.542048" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.534153" elapsed="0.008125"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.542923" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:37.542419" elapsed="0.000532"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:24:37.542999" elapsed="0.000058"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:24:37.529446" elapsed="0.013710"/>
</kw>
<msg time="2026-04-19T00:24:37.543214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:37.516859" elapsed="0.026406"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.555830" elapsed="0.000048"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.567812" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.579866" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.580205" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.580390" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.580802" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.580654" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:24:37.580637" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.581024" elapsed="0.000037"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.581206" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.581366" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:24:37.580594" elapsed="0.000826"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:24:37.580475" elapsed="0.000973"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.581595" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:24:37.581675" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T00:24:37.581827" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:24:37.512615" elapsed="0.069266"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.606265" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:37.605594" elapsed="0.000704"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:24:37.607169" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:24:37.606800" elapsed="0.000552">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:24:37.607623" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:24:37.606463" elapsed="0.001186"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.608282" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:24:37.607813" elapsed="0.000497"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:24:37.608634" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:24:37.608791" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:24:37.608468" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.609266" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.608973" elapsed="0.000341"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:24:37.609739" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.609387" elapsed="0.000414"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.610553" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:37.609991" elapsed="0.000590"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.609827" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.609366" elapsed="0.001272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.611404" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:37.610782" elapsed="0.000706"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:24:37.611542" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:24:37.604961" elapsed="0.006714"/>
</kw>
<msg time="2026-04-19T00:24:37.611729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:37.592622" elapsed="0.019155"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.624111" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.636091" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.647936" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.648141" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.648318" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.648683" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.648543" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:24:37.648529" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.648897" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.649075" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.649238" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:24:37.648499" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:24:37.648396" elapsed="0.000922"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.649458" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:24:37.649533" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:24:37.649648" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:24:37.591701" elapsed="0.057975"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:24:37.651173" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:24:37.650910" elapsed="0.000330">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:24:37.651333" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:24:37.650567" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:37.651669" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:37.651428" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.652233" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:37.651921" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.651748" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.651410" elapsed="0.000905"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.654599" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:24:37.652462" elapsed="0.002163"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:24:37.654676" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:24:37.654829" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:24:37.650113" elapsed="0.004741"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.656378" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.656130" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.656807" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.656572" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.657259" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.657000" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.657687" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.657449" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:24:37.658553" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:24:37.658357" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:24:37.658900" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:24:37.658728" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:24:37.659086" elapsed="0.000207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:37.659687" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:37.659444" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:24:37.659774" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:24:37.659927" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:24:37.657941" elapsed="0.002011"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:24:38.117857" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:24:38.118011" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node01revv2toir9ik1kxh50zkqtdgm0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 00:24:38 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T00:24:38.118379" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:24:37.662255" elapsed="0.456190"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:37.660021" elapsed="0.458550"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.119082" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.118641" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:37.660004" elapsed="0.459410"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.127349" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:38.121910" elapsed="0.005542"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:38.121391" elapsed="0.006141"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.121348" elapsed="0.006242"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.132295" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:38.128278" elapsed="0.004066"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:38.127723" elapsed="0.004656"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.127679" elapsed="0.004726"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.132982" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:38.132577" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.133355" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.133111" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.133894" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:38.133592" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:38.133436" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.133092" elapsed="0.000886"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.134554" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:38.134178" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.134891" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.134652" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.135445" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:24:38.135143" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:38.134971" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.134634" elapsed="0.000894"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:38.135677" elapsed="0.000376"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:24:38.136509" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:38.136216" elapsed="0.000320"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:38.136686" elapsed="0.002339"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:24:38.120302" elapsed="0.018803"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:24:38.139385" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-19T00:24:38.139270" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.139249" elapsed="0.000231"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.139627" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:24:38.139695" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:24:38.141887" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:24:37.655192" elapsed="0.486722"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:24:38.141986" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:24:38.142172" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:24:37.501767" elapsed="0.640433"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.142594" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.142355" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.142337" elapsed="0.000350"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:24:38.142721" elapsed="0.000026"/>
</return>
<arg>${REGISTER_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:24:37.497471" elapsed="0.645374"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Register the get-constant rpc on the requested node with given constant.</doc>
<status status="PASS" start="2026-04-19T00:24:37.495045" elapsed="0.647863"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:38.143468" elapsed="0.000232"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:24:38.143850" elapsed="0.000152"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-1'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:24:38.143146" elapsed="0.000928"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:38.144571" elapsed="0.000189"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:24:38.144909" elapsed="0.000203"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:24:38.145261" elapsed="0.000149"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:24:38.145560" elapsed="0.000148"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:24:38.144258" elapsed="0.001506"/>
</kw>
<arg>${index}</arg>
<doc>Register global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:24:37.494657" elapsed="0.651158"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:24:37.494454" elapsed="0.651392"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:24:36.828198" elapsed="1.317681"/>
</for>
<arg>${INSTALLED_RPC_MEMEBER_IDX_LIST}</arg>
<doc>Register global rpc on given nodes of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:24:36.827933" elapsed="1.318003"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.147407" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.146812" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.146794" elapsed="0.000700"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:38.147639" elapsed="0.000318"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.153074" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:24:38.152587" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T00:24:38.153333" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T00:24:38.153184" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.153164" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.153565" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.153733" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.153902" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.154077" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.154259" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.154422" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.154579" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:24:38.152244" elapsed="0.002477"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:38.146603" elapsed="0.008170"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:24:38.146240" elapsed="0.008574"/>
</kw>
<doc>Register rpc on two nodes of the odl cluster.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:23:56.469716" elapsed="41.685141"/>
</test>
<test id="s1-s4-t2" name="Invoke_Rpc_On_Each_Node" line="37">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:24:38.158476" elapsed="0.000212"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:24:38.158202" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:24:38.159763" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.159654" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.159635" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:24:38.164728" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.164622" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.164604" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.165787" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:24:38.165406" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.166388" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:24:38.165967" elapsed="0.000448"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:24:38.166460" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:24:38.166615" level="INFO">${index_list} = [1, 2, 3]</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-19T00:24:38.165016" elapsed="0.001624"/>
</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-19T00:24:38.172121" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.171997" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.171977" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:24:38.173399" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.173275" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.173258" elapsed="0.000208"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:24:38.173924" 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-19T00:24:38.173609" elapsed="0.000341"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:24:38.174382" 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-19T00:24:38.174123" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:24:38.229282" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:24:38.174890" elapsed="0.054601"/>
</kw>
<msg time="2026-04-19T00:24:38.229741" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:24:38.229791" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:24:38.174562" elapsed="0.055267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:24:38.279861" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:24:38.231542" elapsed="0.048503"/>
</kw>
<msg time="2026-04-19T00:24:38.280249" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:24:38.280296" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:24:38.230343" elapsed="0.049990"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.280790" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.280515" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.280404" elapsed="0.000471"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.281353" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:38.281017" elapsed="0.000414"/>
</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-19T00:24:38.281711" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.281498" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.281480" elapsed="0.000308"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:24:38.281827" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:38.283480" elapsed="0.000887"/>
</kw>
<kw name="Open 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-19T00:24:38.284676" elapsed="0.000550"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:24:38.285511" elapsed="0.000418"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:24:38.282764" elapsed="0.003289"/>
</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-19T00:24:38.282167" elapsed="0.003956"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:24:38.172938" elapsed="0.113331"/>
</kw>
<msg time="2026-04-19T00:24:38.286376" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:24:38.286422" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:24:38.172340" elapsed="0.114119"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:24:38.286646" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:24:38.286537" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.286518" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.287159" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.287502" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:24:38.287574" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:24:38.171654" elapsed="0.116031"/>
</kw>
<msg time="2026-04-19T00:24:38.287781" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:24:38.287826" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:24:38.167008" elapsed="0.120855"/>
</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-19T00:24:38.288204" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.287940" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.287922" elapsed="0.000364"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:24:38.166870" elapsed="0.121441"/>
</iter>
<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-19T00:24:38.293953" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.293845" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.293826" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:24:38.295211" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.295104" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.295085" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:24:38.295731" level="INFO">${karaf_connection_index} = 12</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-19T00:24:38.295418" elapsed="0.000340"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:24:38.296189" 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-19T00:24:38.295948" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:24:38.363514" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:24:38.296704" elapsed="0.067063"/>
</kw>
<msg time="2026-04-19T00:24:38.364017" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:24:38.364094" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:24:38.296371" elapsed="0.067763"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:24:38.423007" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:24:38.364863" elapsed="0.058424"/>
</kw>
<msg time="2026-04-19T00:24:38.423558" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:24:38.423617" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:24:38.364396" elapsed="0.059261"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.424170" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.423781" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.423744" elapsed="0.000529"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:38.424856" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:38.424427" elapsed="0.000510"/>
</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-19T00:24:38.425246" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.425005" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.424986" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:24:38.425364" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:38.427168" elapsed="0.000953"/>
</kw>
<kw name="Open 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-19T00:24:38.428432" elapsed="0.000578"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:24:38.429338" elapsed="0.000439"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:24:38.426386" elapsed="0.003521"/>
</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-19T00:24:38.425699" elapsed="0.004279"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:24:38.294785" elapsed="0.135317"/>
</kw>
<msg time="2026-04-19T00:24:38.430204" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:24:38.430251" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:24:38.294184" elapsed="0.136106"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:24:38.430500" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:24:38.430388" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.430369" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.431040" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:24:38.431402" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:24:38.431478" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:24:38.293495" elapsed="0.138099"/>
</kw>
<msg time="2026-04-19T00:24:38.431765" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:24:38.431819" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:24:38.288582" elapsed="0.143278"/>
</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-19T00:24:38.432212" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:38.431940" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.431922" elapsed="0.000370"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:24:38.288445" elapsed="0.143872"/>
</iter>
<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-19T00:24:38.438195" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.438063" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.438023" elapsed="0.000256"/>
</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-19T00:24:38.439567" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:38.439454" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:38.439431" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:24:38.440146" level="INFO">${karaf_connection_index} = 24</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-19T00:24:38.439785" elapsed="0.000388"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:24:38.440559" 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-19T00:24:38.440331" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:24:48.441963" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:24:38.441112" elapsed="10.001964">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:24:48.443376" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:24:48.443439" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:24:38.440743" elapsed="10.002722"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:24:58.445384" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:24:48.444448" elapsed="10.002867">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:24:58.447881" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:24:58.447989" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:24:48.443910" elapsed="10.004141"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:24:58.450721" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</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-19T00:24:58.449051" elapsed="0.001807">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:24:58.448399" elapsed="0.002612">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:24:58.448330" elapsed="0.002816">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</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-19T00:24:58.451508" elapsed="0.000049"/>
</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-19T00:24:58.452005" elapsed="0.000125"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:24:58.451696" elapsed="0.000514"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:24:58.451659" elapsed="0.000659"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:24:58.452407" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:24:58.454296" elapsed="0.000901"/>
</kw>
<kw name="Open 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-19T00:24:58.455498" elapsed="0.000538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:24:58.456409" elapsed="0.000408"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:24:58.453573" elapsed="0.003357"/>
</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-19T00:24:58.452950" elapsed="0.004138"/>
</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-19T00:24:38.439123" elapsed="20.018057">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T00:24:58.457288" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:24:58.457334" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</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-19T00:24:38.438484" elapsed="20.018875"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:24:58.457547" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:58.457437" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:58.457419" elapsed="0.000195"/>
</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-19T00:24:58.458438" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:24:58.458332" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:58.458314" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:24:58.458982" 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-19T00:24:58.459120" 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-19T00:24:58.458656" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:58.459570" level="INFO">{1: 10, 2: 12, 3: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:58.459302" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:24:58.460012" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:24:58.459768" elapsed="0.000385"/>
</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-19T00:24:58.460724" elapsed="0.000292"/>
</kw>
<msg time="2026-04-19T00:24:58.461137" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:24:58.461186" level="INFO">${old_connection_index} = 24</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-19T00:24:58.460314" elapsed="0.000895"/>
</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-19T00:24:58.462050" elapsed="0.000233"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:25:08.463988" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:24:58.462960" elapsed="10.002135">No match found for '
' in 10 seconds
Output:
.</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-19T00:24:58.462450" elapsed="10.002787"/>
</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-19T00:25:08.466184" elapsed="0.000475"/>
</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-19T00:25:08.465529" elapsed="0.001220"/>
</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-19T00:24:58.461508" elapsed="10.005291"/>
</kw>
<status status="PASS" start="2026-04-19T00:24:58.461286" elapsed="10.005566"/>
</branch>
<status status="PASS" start="2026-04-19T00:24:58.461268" elapsed="10.005618"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:25:08.468084" level="INFO">${ip_address} = 10.30.171.206</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-19T00:25:08.467736" elapsed="0.000376"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:25:08.468166" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:25:08.468328" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:25:08.467356" elapsed="0.000997"/>
</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-19T00:25:08.468509" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:25:08.469278" level="INFO">index=29
host=10.30.171.206
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-19T00:25:08.469381" level="INFO">${karaf_connection_object} = index=29
host=10.30.171.206
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-19T00:25:08.469158" 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-19T00:25:08.469627" elapsed="0.002457"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:25:08.472510" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:25:18.537704" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:25:08.472247" elapsed="10.066360">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:25:18.551619" elapsed="0.000688"/>
</kw>
<kw name="Open 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-19T00:25:18.552475" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:25:18.552792" 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-19T00:25:18.540165" elapsed="0.012782"/>
</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-19T00:25:18.539171" elapsed="0.013824"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:24:58.458019" elapsed="20.095081">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:25:18.553666" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.553746" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:24:38.437684" elapsed="40.116177">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:25:18.553984" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:25:18.554046" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:24:38.432597" elapsed="40.121474"/>
</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-19T00:25:18.554421" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.554162" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.554141" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:24:38.432457" elapsed="40.122072"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:24:38.166695" elapsed="40.387870"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:24:38.164262" elapsed="40.390361"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:24:38.159362" elapsed="40.395318"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:24:38.158901" elapsed="40.395826"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:24:38.155991" elapsed="40.398792"/>
</kw>
<kw name="Verify_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:18.557030" elapsed="0.000341"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.563552" 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-19T00:25:18.563223" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:25:18.563628" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:25:18.563781" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:25:18.562856" elapsed="0.000950"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.635724" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:18.635328" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:18.636558" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.636279" elapsed="0.000352">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:18.636725" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:18.635923" elapsed="0.000827"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.637312" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:18.636911" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:25:18.637658" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:25:18.637828" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:25:18.637515" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.638267" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.638007" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.639289" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.639016" elapsed="0.000317"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.639754" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:25:18.639486" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.640118" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.640322" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.640493" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:25:18.639970" elapsed="0.000579"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.639830" elapsed="0.000749"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:25:18.640626" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:25:18.640788" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:25:18.638699" elapsed="0.002115"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.638387" elapsed="0.002458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.641012" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.640870" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.638364" elapsed="0.002742"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.641714" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:18.641247" elapsed="0.000494"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:25:18.641791" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:25:18.634532" elapsed="0.007383"/>
</kw>
<msg time="2026-04-19T00:25:18.642009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:18.621786" elapsed="0.020322"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.656794" elapsed="0.000056"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.670207" elapsed="0.000054"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.683588" elapsed="0.000054"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.683879" elapsed="0.000045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.684188" elapsed="0.000046"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.684905" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.684719" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:25:18.684681" elapsed="0.000330"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.685305" elapsed="0.000073"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.685699" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.686090" elapsed="0.000073"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:25:18.684549" elapsed="0.001682"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.684316" elapsed="0.001985"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.686538" elapsed="0.000044"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.686664" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T00:25:18.686842" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:25:18.616647" elapsed="0.070222"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.748993" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:18.748603" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:18.749823" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.749540" elapsed="0.000361">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:18.749996" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:18.749208" elapsed="0.000814"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.750586" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:18.750201" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:25:18.750913" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:25:18.751142" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:25:18.750770" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.751573" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.751323" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:25:18.752011" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.751696" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.752559" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:18.752265" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.752122" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.751670" elapsed="0.000973"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.753237" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:18.752786" elapsed="0.000479"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:25:18.753318" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:25:18.747970" elapsed="0.005478"/>
</kw>
<msg time="2026-04-19T00:25:18.753533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:18.734784" elapsed="0.018821"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.767395" elapsed="0.000059"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.780795" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.794235" elapsed="0.000056"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.794549" elapsed="0.000046"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.794864" elapsed="0.000048"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.795710" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.795448" elapsed="0.000337"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:25:18.795407" elapsed="0.000413"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.796113" elapsed="0.000075"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.796492" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.796866" elapsed="0.000073"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:25:18.795271" elapsed="0.001737"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.794998" elapsed="0.002098"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.797337" elapsed="0.000045"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.797511" elapsed="0.000020"/>
</return>
<msg time="2026-04-19T00:25:18.797711" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:25:18.732966" elapsed="0.064772"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:18.799630" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.799346" elapsed="0.000357">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:18.799897" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:18.798649" elapsed="0.001345"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.800666" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.800125" elapsed="0.000627"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.801649" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:18.801183" elapsed="0.000504"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.800841" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.800092" elapsed="0.001729"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.804691" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:18.802101" elapsed="0.002689"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:25:18.804869" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:25:18.805176" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:25:18.798155" elapsed="0.007048"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.807924" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.807381" elapsed="0.000706"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.808840" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.808311" elapsed="0.000667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.809749" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.809218" elapsed="0.000672"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.810830" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.810159" elapsed="0.000811"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:25:18.812720" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:25:18.812464" elapsed="0.000307"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:25:18.813266" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:25:18.813016" elapsed="0.000301"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:25:18.813558" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.814416" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.814128" elapsed="0.000372"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:25:18.814574" elapsed="0.000065"/>
</return>
<msg time="2026-04-19T00:25:18.814919" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:25:18.811608" elapsed="0.003382"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:25:18.846775" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0xtkt3ytftmvjpfsi1vtndb7q0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:25:18.847227" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:25:18.847813" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:25:18.817720" elapsed="0.030175"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.815194" elapsed="0.032874"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.848933" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.848274" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.815161" elapsed="0.034211"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.856215" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.852906" elapsed="0.003377"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.852505" elapsed="0.003853"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.852435" elapsed="0.003986"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.859836" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.857104" elapsed="0.002780"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.856631" elapsed="0.003307"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.856563" elapsed="0.003420"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.860721" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:18.860275" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.861311" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.860915" elapsed="0.000470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.861961" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:18.861650" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.861428" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.860864" elapsed="0.001247"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.862802" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:18.862380" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.863311" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.862996" elapsed="0.000389"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.863948" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:18.863644" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.863429" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.862946" elapsed="0.001140"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:18.864354" elapsed="0.000428"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:25:18.865410" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:18.865066" elapsed="0.000395"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:25:18.865707" elapsed="0.002409"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:25:18.851132" elapsed="0.017074"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:25:18.868553" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T00:25:18.868319" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.868285" elapsed="0.000511"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.869008" elapsed="0.000084"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.869167" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:25:18.871880" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:25:18.805564" elapsed="0.066347"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:25:18.872019" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T00:25:18.872197" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:25:18.570227" elapsed="0.301998"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.872568" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.872330" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.872313" elapsed="0.000348"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:25:18.872694" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:25:18.872845" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:25:18.564079" elapsed="0.308793"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:25:18.873177" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:25:18.872945" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.872928" elapsed="0.000312"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:25:18.873725" level="INFO">${xml} = &lt;Element 'output' at 0x7827067e1c10&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:25:18.873384" elapsed="0.000369"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:25:18.874254" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:25:18.873908" elapsed="0.000373"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:25:18.874330" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:25:18.874485" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:25:18.562416" elapsed="0.312096"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:25:18.874664" elapsed="0.000355"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:25:18.875085" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:25:18.557954" elapsed="0.317254"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.557668" elapsed="0.317573"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.875454" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.875266" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.557653" elapsed="0.317881"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:25:18.557622" elapsed="0.317937"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.881801" level="INFO">${session} = ClusterManagement__session_2</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-19T00:25:18.881469" elapsed="0.000358"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:25:18.881874" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:25:18.882024" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:25:18.881119" elapsed="0.000953"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.953710" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:18.953339" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:18.954499" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.954242" elapsed="0.000367">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:18.954704" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:18.953896" elapsed="0.000832"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.955292" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:18.954888" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:25:18.955613" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:25:18.955759" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:25:18.955475" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.956204" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.955937" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.957206" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:18.956932" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.957676" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:25:18.957406" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.958017" elapsed="0.000183"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.958404" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.958578" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:25:18.957887" elapsed="0.000750"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:25:18.957751" elapsed="0.000915"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:25:18.958712" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:25:18.958879" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:25:18.956606" elapsed="0.002298"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.956316" elapsed="0.002621"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.959119" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:18.958961" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.956297" elapsed="0.002900"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:18.959770" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:18.959334" elapsed="0.000463"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:25:18.959847" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:25:18.952712" elapsed="0.007258"/>
</kw>
<msg time="2026-04-19T00:25:18.960078" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:18.939916" elapsed="0.020235"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.973261" elapsed="0.000054"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.986547" elapsed="0.000054"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:18.999918" elapsed="0.000055"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.000229" elapsed="0.000045"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.000521" elapsed="0.000046"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.001255" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.001070" elapsed="0.000259"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:25:19.001014" elapsed="0.000349"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.001643" elapsed="0.000074"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.002022" elapsed="0.000091"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.002422" elapsed="0.000101"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:25:19.000882" elapsed="0.001711"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.000647" elapsed="0.002017"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.002904" elapsed="0.000045"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.003058" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T00:25:19.003245" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:25:18.934830" elapsed="0.068441"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.067386" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.066990" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.068139" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.067900" elapsed="0.000307">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:19.068300" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:19.067574" elapsed="0.000750"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.068864" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:19.068483" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.069199" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:25:19.069326" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:25:19.069061" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.069786" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.069540" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:25:19.070205" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.069896" elapsed="0.000369"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.070739" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.070431" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.070291" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.069877" elapsed="0.000945"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.071401" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:19.070961" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:25:19.071478" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:25:19.066352" elapsed="0.005253"/>
</kw>
<msg time="2026-04-19T00:25:19.071686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:19.053560" elapsed="0.018197"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.085254" elapsed="0.000054"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.098439" elapsed="0.000056"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.111716" elapsed="0.000055"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.112007" elapsed="0.000063"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.112320" elapsed="0.000046"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.113066" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.112850" elapsed="0.000292"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:25:19.112811" elapsed="0.000370"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.113472" elapsed="0.000078"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.113855" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.114247" elapsed="0.000073"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:25:19.112682" elapsed="0.001706"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.112446" elapsed="0.002013"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.114696" elapsed="0.000045"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.114909" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T00:25:19.115108" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:25:19.051949" elapsed="0.063186"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.116877" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.116635" elapsed="0.000305">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:19.117158" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:19.115989" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.117889" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.117367" elapsed="0.000608"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.118880" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.118387" elapsed="0.000529"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.118079" elapsed="0.000887"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.117335" elapsed="0.001732"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.121908" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:19.119302" elapsed="0.002704"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:25:19.122101" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:25:19.122391" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:25:19.115522" elapsed="0.006895"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.125026" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.124498" elapsed="0.000758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.126003" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.125479" elapsed="0.000680"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.126931" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.126379" elapsed="0.000709"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.127842" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.127310" elapsed="0.000671"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:25:19.129697" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:25:19.129444" elapsed="0.000303"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:25:19.130236" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:25:19.129988" elapsed="0.000297"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:25:19.130521" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.131387" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.131103" elapsed="0.000367"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:25:19.131545" elapsed="0.000063"/>
</return>
<msg time="2026-04-19T00:25:19.131881" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:25:19.128532" elapsed="0.003418"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:25:19.165959" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01revv2toir9ik1kxh50zkqtdgm0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:25:19.166259" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:25:19.166742" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:25:19.134644" elapsed="0.032178"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.132078" elapsed="0.034906"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.167886" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.167236" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.132044" elapsed="0.036276"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.176909" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.173339" elapsed="0.003618"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.172667" elapsed="0.004344"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.172554" elapsed="0.004518"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.179785" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.177510" elapsed="0.002359"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.177224" elapsed="0.002699"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.177176" elapsed="0.002791"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.180764" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:19.180327" elapsed="0.000490"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.181284" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.180961" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.181924" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.181619" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.181403" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.180911" elapsed="0.001153"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.182763" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:19.182336" elapsed="0.000478"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.183308" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.182990" elapsed="0.000391"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.183945" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.183641" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.183425" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.182908" elapsed="0.001176"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:19.184346" elapsed="0.000425"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:25:19.185401" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:19.185025" elapsed="0.000426"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:25:19.185695" elapsed="0.002449"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:25:19.170417" elapsed="0.017813"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:25:19.188575" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T00:25:19.188343" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.188310" elapsed="0.000503"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.189022" elapsed="0.000062"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.189157" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:25:19.191788" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:25:19.122771" elapsed="0.069046"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:25:19.191922" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:25:19.192110" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:25:18.888303" elapsed="0.303835"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.192479" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.192245" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.192227" elapsed="0.000344"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:25:19.192605" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:25:19.192753" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:25:18.882346" elapsed="0.310434"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:25:19.192993" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:25:19.192854" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.192836" elapsed="0.000235"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:25:19.193547" level="INFO">${xml} = &lt;Element 'output' at 0x7826f6d4df30&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:25:19.193215" elapsed="0.000360"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:25:19.194019" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:25:19.193728" elapsed="0.000350"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:25:19.194128" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:25:19.194280" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:25:18.880653" elapsed="0.313653"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:25:19.194457" elapsed="0.000355"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:25:19.194860" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:25:18.876022" elapsed="0.318959"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:18.875739" elapsed="0.319288"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.195254" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.195069" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:18.875725" elapsed="0.319606"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:25:18.875694" elapsed="0.319662"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.195824" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.195541" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.201873" level="INFO">${session} = ClusterManagement__session_3</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-19T00:25:19.201547" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:25:19.201947" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:25:19.202131" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:25:19.201201" elapsed="0.000956"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.273440" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.273067" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.274193" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.273952" elapsed="0.000343">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:19.274391" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:19.273626" elapsed="0.000789"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.274971" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:19.274581" elapsed="0.000417"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.275372" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:25:19.275506" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:25:19.275229" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.275928" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.275685" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.276919" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.276666" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.277403" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:25:19.277137" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.277884" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.278121" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.278291" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:25:19.277615" elapsed="0.000733"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.277479" elapsed="0.000898"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:25:19.278421" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:25:19.278580" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:25:19.276347" elapsed="0.002258"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.276055" elapsed="0.002581"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.278803" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.278661" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.276019" elapsed="0.002858"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.279492" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:19.279014" elapsed="0.000506"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:25:19.279569" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:25:19.272444" elapsed="0.007248"/>
</kw>
<msg time="2026-04-19T00:25:19.279776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:19.259729" elapsed="0.020117"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.293065" elapsed="0.000055"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.306356" elapsed="0.000056"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.319613" elapsed="0.000054"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.319904" elapsed="0.000046"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.320209" elapsed="0.000045"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.320925" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.320742" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:25:19.320702" elapsed="0.000360"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.321341" elapsed="0.000072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.321715" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.322106" elapsed="0.000073"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:25:19.320571" elapsed="0.001675"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.320332" elapsed="0.001984"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.322552" elapsed="0.000045"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.322685" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T00:25:19.322865" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:25:19.254701" elapsed="0.068190"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.383001" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.382630" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.383763" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.383553" elapsed="0.000273">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:19.383919" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:19.383204" elapsed="0.000739"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.384502" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:19.384116" elapsed="0.000412"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.384816" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:25:19.384937" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:25:19.384682" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.385369" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.385127" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:25:19.385754" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.385475" elapsed="0.000337"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.386317" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.385975" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.385836" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.385457" elapsed="0.000943"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.386957" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:25:19.386541" elapsed="0.000443"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:25:19.387048" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:25:19.382011" elapsed="0.005164"/>
</kw>
<msg time="2026-04-19T00:25:19.387257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:25:19.369364" elapsed="0.017964"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.400808" elapsed="0.000055"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.413996" elapsed="0.000066"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.427176" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.427464" elapsed="0.000044"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.427762" elapsed="0.000044"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.428473" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.428292" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:25:19.428255" elapsed="0.000321"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.428845" elapsed="0.000071"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.429230" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.429604" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:25:19.428128" elapsed="0.001614"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.427883" elapsed="0.001927"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.430066" elapsed="0.000046"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:25:19.430195" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:25:19.430371" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:25:19.367811" elapsed="0.062586"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:25:19.432196" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.431939" elapsed="0.000320">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:25:19.432447" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:25:19.431291" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:25:19.433189" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:25:19.432658" elapsed="0.000617"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.434143" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:25:19.433656" elapsed="0.000524"/>
</kw>
<status status="PASS" start="2026-04-19T00:25:19.433360" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-19T00:25:19.432625" elapsed="0.001685"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.437074" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:25:19.434540" elapsed="0.002633"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:25:19.437251" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:25:19.437543" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:25:19.430808" elapsed="0.006762"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.440254" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.439707" elapsed="0.000685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.441147" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.440612" elapsed="0.000670"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.442026" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.441502" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.443047" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.442512" elapsed="0.000673"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:25:19.444828" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:25:19.444573" elapsed="0.000304"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:25:19.445365" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:25:19.445131" elapsed="0.000284"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:25:19.445648" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:25:19.446496" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:25:19.446211" elapsed="0.000365"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:25:19.446649" elapsed="0.000061"/>
</return>
<msg time="2026-04-19T00:25:19.446976" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:25:19.443720" elapsed="0.003342"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:27:24.494527" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.449686" elapsed="125.049194">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:25:19.447171" elapsed="125.052048">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.500301" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.499466" elapsed="0.001057"/>
</branch>
<status status="FAIL" start="2026-04-19T00:25:19.447140" elapsed="125.053577">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.502703" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.503093" elapsed="0.000058"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.502978" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:27:24.502942" elapsed="0.000356"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.503510" elapsed="0.000045"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.503628" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.437918" elapsed="125.065895">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.503898" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.208549" elapsed="125.295451">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.504325" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.504135" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:27:24.504117" elapsed="0.000300"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.504450" elapsed="0.000014"/>
</return>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.202405" elapsed="125.302145">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:27:24.504679" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.504641" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:27:24.504624" elapsed="0.000113"/>
</if>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.504879" elapsed="0.000021"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.505061" elapsed="0.000021"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.505127" elapsed="0.000015"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.200744" elapsed="125.304492">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.505405" elapsed="0.000022"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.505473" elapsed="0.000015"/>
</return>
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T00:25:19.196097" elapsed="125.309471">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:25:19.195906" elapsed="125.309721">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:25:19.195526" elapsed="125.310131">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:25:19.195495" elapsed="125.310215">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="FAIL" start="2026-04-19T00:25:18.557440" elapsed="125.948329">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>tolerance=0</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.556701" elapsed="125.949162">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:27:24.505967" level="FAIL">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.555880" elapsed="125.950219">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:27:24.506202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.555426" elapsed="125.950830"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.506658" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.506471" elapsed="0.000243"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.506910" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.506738" elapsed="0.000227"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:27:24.506457" elapsed="0.000529"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T00:27:24.506430" elapsed="0.000580"/>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.506323" elapsed="0.000780"/>
</for>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T00:25:18.555096" elapsed="125.952098">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.508531" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.508134" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.508117" elapsed="0.000497"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:27:24.508768" elapsed="0.000395"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.514565" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:27:24.513865" elapsed="0.000729"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:27:24.514826" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.514681" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.514662" elapsed="0.000225"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.515420" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:27:24.515051" elapsed="0.000404"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:27:24.516003" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Partition_And_Heal_Invoke_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:27:24.515660" elapsed="0.000392"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:27:24.516448" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:27:24.516244" elapsed="0.000235"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.516972" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:27:24.516629" elapsed="0.000370"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.517476" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:27:24.517165" elapsed="0.000339"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.518170" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"

Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:27:24.517651" elapsed="0.000574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.518693" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:27:24.518399" elapsed="0.000381"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:27:24.513557" elapsed="0.005278"/>
</kw>
<status status="PASS" start="2026-04-19T00:27:24.507910" elapsed="0.010974"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:27:24.507510" elapsed="0.011415"/>
</kw>
<doc>Invoke get-constant rpc on every node of the cluster. When requested on the node with
local instance the local value is expected. If invoked on the node with no local instance, any remote
value is expected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:24:38.155210" elapsed="166.363754">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"

Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s4-t3" name="Isolate_One_Node" line="43">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:27:24.522487" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:27:24.522223" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.523722" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.523613" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.523594" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.528642" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.528536" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.528519" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.529696" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:27:24.529315" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.530221" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:27:24.529877" elapsed="0.000371"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:27:24.530293" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:27:24.530446" level="INFO">${index_list} = [1, 2, 3]</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-19T00:27:24.528929" elapsed="0.001542"/>
</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-19T00:27:24.537323" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.537214" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.537194" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.538591" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.538485" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.538467" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:27:24.539154" 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-19T00:27:24.538798" elapsed="0.000384"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:27:24.539567" 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-19T00:27:24.539341" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:27:24.587449" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:27:24.540095" elapsed="0.047655"/>
</kw>
<msg time="2026-04-19T00:27:24.588006" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:27:24.588082" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:27:24.539749" elapsed="0.048373"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:27:24.632687" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:27:24.588928" elapsed="0.043980"/>
</kw>
<msg time="2026-04-19T00:27:24.633092" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:27:24.633169" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:27:24.588425" elapsed="0.044788"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.633622" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.633322" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.633286" elapsed="0.000427"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.634223" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:27:24.633856" elapsed="0.000442"/>
</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-19T00:27:24.634586" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.634366" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.634347" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:27:24.634715" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:27:24.636576" elapsed="0.000847"/>
</kw>
<kw name="Open 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-19T00:27:24.637714" elapsed="0.000566"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:27:24.638552" elapsed="0.000372"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:27:24.635808" elapsed="0.003243"/>
</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-19T00:27:24.635096" elapsed="0.004023"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:27:24.538183" elapsed="0.101042"/>
</kw>
<msg time="2026-04-19T00:27:24.639325" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:27:24.639371" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:27:24.537543" elapsed="0.101866"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:27:24.639608" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T00:27:24.639493" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.639474" elapsed="0.000225"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.640146" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.640544" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.640626" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:27:24.536853" elapsed="0.103893"/>
</kw>
<msg time="2026-04-19T00:27:24.640849" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:27:24.640896" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:27:24.530829" elapsed="0.110108"/>
</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-19T00:27:24.641306" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.641021" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.641002" elapsed="0.000385"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:27:24.530691" elapsed="0.110721"/>
</iter>
<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-19T00:27:24.647437" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.647328" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.647308" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.648731" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.648620" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.648601" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:27:24.649338" level="INFO">${karaf_connection_index} = 12</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-19T00:27:24.648943" elapsed="0.000423"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:27:24.649747" 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-19T00:27:24.649527" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:27:24.692584" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:27:24.650299" elapsed="0.042407"/>
</kw>
<msg time="2026-04-19T00:27:24.692890" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:27:24.692938" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:27:24.649929" elapsed="0.043046"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:27:24.737237" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:27:24.693545" elapsed="0.044090"/>
</kw>
<msg time="2026-04-19T00:27:24.738146" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:27:24.738288" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:27:24.693191" elapsed="0.045192"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.739318" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.738620" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.738553" elapsed="0.000970"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:27:24.740685" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:27:24.739852" elapsed="0.001006"/>
</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-19T00:27:24.741539" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.741011" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.740970" elapsed="0.000749"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:27:24.741803" elapsed="0.000079"/>
</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-19T00:27:24.744617" elapsed="0.001132"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:27:24.746157" elapsed="0.000775"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:27:24.747327" elapsed="0.000496"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:27:24.743686" elapsed="0.004278"/>
</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-19T00:27:24.742538" elapsed="0.005548"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:27:24.648243" elapsed="0.099989"/>
</kw>
<msg time="2026-04-19T00:27:24.748371" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:27:24.748435" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:27:24.647657" elapsed="0.100832"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:27:24.748755" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T00:27:24.748600" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.748574" elapsed="0.000302"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:27:24.749483" elapsed="0.000037"/>
</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-19T00:27:24.750070" elapsed="0.000037"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:27:24.750176" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:27:24.646890" elapsed="0.103477"/>
</kw>
<msg time="2026-04-19T00:27:24.750506" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:27:24.750568" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:27:24.641701" elapsed="0.108922"/>
</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-19T00:27:24.751126" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:24.750733" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.750708" elapsed="0.000528"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:27:24.641555" elapsed="0.109715"/>
</iter>
<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-19T00:27:24.757146" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.757021" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.757001" elapsed="0.000213"/>
</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-19T00:27:24.758417" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:24.758302" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:24.758280" elapsed="0.000204"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:27:24.758932" level="INFO">${karaf_connection_index} = 29</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-19T00:27:24.758627" elapsed="0.000331"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:27:24.759349" 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-19T00:27:24.759133" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:27:34.760719" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:27:24.759867" elapsed="10.001914">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:27:34.762076" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:27:34.762128" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:27:24.759532" elapsed="10.002620"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:27:44.763700" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:27:34.762899" elapsed="10.002067">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:27:44.765398" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:27:44.765547" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:27:34.762442" elapsed="10.003149"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:27:44.766944" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Isolate_One_Node"</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-19T00:27:44.766192" elapsed="0.000819">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Isolate_One_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:27:44.765767" elapsed="0.001333">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Isolate_One_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:27:44.765719" elapsed="0.001419">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Isolate_One_Node"</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-19T00:27:44.767306" 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-19T00:27:44.767548" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:27:44.767396" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:27:44.767377" elapsed="0.000251"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:27:44.767666" 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-19T00:27:44.769384" 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-19T00:27:44.770606" elapsed="0.000502"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:27:44.771375" elapsed="0.000392"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:27:44.768656" elapsed="0.003216"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T00:27:44.767976" elapsed="0.003962"/>
</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-19T00:27:24.757935" elapsed="20.014114">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Isolate_One_Node"</status>
</kw>
<msg time="2026-04-19T00:27:44.772184" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:27:44.772230" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Isolate_One_Node"</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-19T00:27:24.757364" elapsed="20.014890"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:27:44.772449" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:44.772335" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:44.772316" elapsed="0.000199"/>
</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-19T00:27:44.773387" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:27:44.773279" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:44.773260" elapsed="0.000222"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:27:44.774012" 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-19T00:27:44.774144" 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-19T00:27:44.773645" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:27:44.774598" level="INFO">{1: 10, 2: 12, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:27:44.774325" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:27:44.775078" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:27:44.774805" elapsed="0.000317"/>
</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-19T00:27:44.775648" elapsed="0.000270"/>
</kw>
<msg time="2026-04-19T00:27:44.776019" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:27:44.776110" level="INFO">${old_connection_index} = 29</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-19T00:27:44.775280" elapsed="0.000856"/>
</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-19T00:27:44.776980" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:27:54.778816" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:27:44.777945" elapsed="10.001874">No match found for '
' in 10 seconds
Output:
.</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-19T00:27:44.777435" elapsed="10.002522"/>
</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-19T00:27:54.780845" elapsed="0.000511"/>
</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-19T00:27:54.780278" elapsed="0.001163"/>
</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-19T00:27:44.776442" elapsed="10.005051"/>
</kw>
<status status="PASS" start="2026-04-19T00:27:44.776217" elapsed="10.005328"/>
</branch>
<status status="PASS" start="2026-04-19T00:27:44.776197" elapsed="10.005384"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:27:54.782642" level="INFO">${ip_address} = 10.30.171.206</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-19T00:27:54.782316" elapsed="0.000354"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:27:54.782724" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:27:54.782887" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:27:54.781833" elapsed="0.001080"/>
</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-19T00:27:54.783087" elapsed="0.000458"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:27:54.783877" level="INFO">index=34
host=10.30.171.206
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-19T00:27:54.784096" level="INFO">${karaf_connection_object} = index=34
host=10.30.171.206
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-19T00:27:54.783750" elapsed="0.000375"/>
</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-19T00:27:54.784275" elapsed="0.002470"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:27:54.787214" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:28:04.854408" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:27:54.786923" elapsed="10.068290">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:28:04.870375" elapsed="0.000546"/>
</kw>
<kw name="Open 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-19T00:28:04.871117" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:28:04.871443" 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-19T00:28:04.856716" elapsed="0.014885"/>
</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-19T00:28:04.855665" elapsed="0.015985"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:27:44.772941" elapsed="20.098799">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:28:04.872141" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:28:04.872222" elapsed="0.000049"/>
</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-19T00:27:24.756661" elapsed="40.115723">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:28:04.872515" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:28:04.872560" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:27:24.751620" elapsed="40.120963"/>
</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-19T00:28:04.872936" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:28:04.872676" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T00:28:04.872654" elapsed="0.000361"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:27:24.751472" elapsed="40.121591"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:27:24.530521" elapsed="40.342577"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:27:24.528179" elapsed="40.344980"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:27:24.523326" elapsed="40.349890"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:27:24.522892" elapsed="40.350369"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:27:24.520052" elapsed="40.353263"/>
</kw>
<kw name="Get_Constant_Index_From_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.879822" level="INFO">${session} = ClusterManagement__session_3</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-19T00:28:04.879462" elapsed="0.000389"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:28:04.879898" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:28:04.880066" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:28:04.879102" elapsed="0.000990"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.914844" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:28:04.914457" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:28:04.915730" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:28:04.915482" elapsed="0.000316">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:28:04.915892" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:28:04.915137" elapsed="0.000779"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.916532" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:28:04.916093" elapsed="0.000467"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:28:04.916887" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:28:04.917066" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:28:04.916739" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.917511" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:04.917260" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.918576" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:04.918282" elapsed="0.000344"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.919241" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:28:04.918925" elapsed="0.000347"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.919602" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.919803" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.919968" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:28:04.919470" elapsed="0.000570"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:28:04.919329" elapsed="0.000743"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:28:04.920116" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:28:04.920302" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:28:04.917920" elapsed="0.002409"/>
</kw>
<status status="PASS" start="2026-04-19T00:28:04.917625" elapsed="0.002738"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.920529" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:28:04.920388" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:28:04.917606" elapsed="0.003003"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.921204" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:28:04.920749" elapsed="0.000483"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:28:04.921280" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:28:04.913821" elapsed="0.007582"/>
</kw>
<msg time="2026-04-19T00:28:04.921455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:28:04.901418" elapsed="0.020100"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.933368" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.945248" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.957281" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.957478" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.957660" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.958041" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:28:04.957885" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:28:04.957871" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.958261" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.958425" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.958586" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:28:04.957842" elapsed="0.000797"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:28:04.957738" elapsed="0.000926"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.958806" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:28:04.958883" elapsed="0.000021"/>
</return>
<msg time="2026-04-19T00:28:04.959011" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:28:04.897252" elapsed="0.061801"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.982887" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:28:04.982369" elapsed="0.000548"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:28:04.983652" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:28:04.983424" elapsed="0.000293">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:28:04.983808" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:28:04.983092" elapsed="0.000742"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.984421" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:28:04.983993" elapsed="0.000455"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:28:04.984742" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:28:04.984915" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:28:04.984607" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.985361" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:04.985114" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:28:04.985772" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:28:04.985471" elapsed="0.000359"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.986307" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:28:04.985998" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-19T00:28:04.985855" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-19T00:28:04.985453" elapsed="0.000937"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:28:04.986954" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:28:04.986532" elapsed="0.000448"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:28:04.987044" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:28:04.981740" elapsed="0.005432"/>
</kw>
<msg time="2026-04-19T00:28:04.987223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:28:04.969697" elapsed="0.017573"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:04.999404" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.011247" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.023020" elapsed="0.000039"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.023225" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.023394" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.023753" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:28:05.023613" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:28:05.023599" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.023967" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.024144" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.024305" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:28:05.023569" elapsed="0.000814"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:28:05.023467" elapsed="0.000944"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.024557" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:28:05.024668" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:28:05.024784" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:28:04.968839" elapsed="0.055977"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:28:05.026101" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:28:05.025850" elapsed="0.000315">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:28:05.026256" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:28:05.025514" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:28:05.026591" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:28:05.026349" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:28:05.027166" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:28:05.026856" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-19T00:28:05.026670" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:28:05.026332" elapsed="0.000916"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:28:05.029527" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:28:05.027394" elapsed="0.002159"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:28:05.029604" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:28:05.029755" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:28:05.025187" elapsed="0.004594"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:05.031303" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:05.031057" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:05.031729" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:05.031495" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:05.032181" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:05.031923" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:05.032634" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:05.032392" elapsed="0.000284"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:28:05.033475" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:28:05.033280" elapsed="0.000221"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:28:05.033827" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:28:05.033655" elapsed="0.000197"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:28:05.033997" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:28:05.034623" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:28:05.034380" elapsed="0.000286"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:28:05.034709" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:28:05.034860" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:28:05.032869" elapsed="0.002016"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:30:10.111263" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:28:05.037167" elapsed="125.078250">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:28:05.034953" elapsed="125.080810">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.116369" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.115853" elapsed="0.000680"/>
</branch>
<status status="FAIL" start="2026-04-19T00:28:05.034937" elapsed="125.081653">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.117537" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.117878" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.117789" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:10.117747" elapsed="0.000312"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.118406" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.118556" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:28:05.030115" elapsed="125.088679">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.118975" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:28:04.886439" elapsed="125.232784">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.119889" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.119495" elapsed="0.000569"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:10.119457" elapsed="0.000664"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.120194" elapsed="0.000032"/>
</return>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:28:04.880377" elapsed="125.240031">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:30:10.120678" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.120591" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:10.120554" elapsed="0.000254"/>
</if>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.121165" elapsed="0.000049"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.121542" elapsed="0.000046"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.121690" elapsed="0.000032"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:28:04.878645" elapsed="125.243258">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Replace String" owner="String">
<var>${index}</var>
<arg>${constant}</arg>
<arg>${CONSTANT_PREFIX}</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.122293" elapsed="0.000065"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${index}</var>
<arg>${index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.122704" elapsed="0.000045"/>
</kw>
<return>
<value>${index}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.122842" elapsed="0.000033"/>
</return>
<var>${isolated_idx}</var>
<arg>${TESTED_MEMBER_WITHOUT_RPC_IDX}</arg>
<doc>Ivoke get-constant rpc on given member index. Returns the index of
the node where the constant came from.</doc>
<status status="FAIL" start="2026-04-19T00:28:04.873552" elapsed="125.249525">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${isolated_idx}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.123557" elapsed="0.000049"/>
</kw>
<kw name="Isolate_Node" owner="DrbCommons">
<arg>${isolated_idx}</arg>
<doc>Isolate a member and update appropriate suite variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.124198" elapsed="0.000054"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.127195" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.126251" elapsed="0.001091"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.126212" elapsed="0.001192"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:10.127575" elapsed="0.000372"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.133012" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:10.132570" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:30:10.133276" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.133133" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.133114" elapsed="0.000225"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.133803" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:10.133484" elapsed="0.000347"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:30:10.134271" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Partition_And_Heal_Isolate_One_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:30:10.133988" elapsed="0.000310"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:30:10.134662" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:30:10.134485" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.135201" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:10.134838" elapsed="0.000391"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.135691" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:10.135383" elapsed="0.000337"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.136324" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:30:10.135869" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.136820" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:10.136527" elapsed="0.000342"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:30:10.132259" elapsed="0.004666"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:10.125756" elapsed="0.011221"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:30:10.124894" elapsed="0.012125"/>
</kw>
<doc>Isolate one node with registered rpc.
From the constant returned from the 3 node (with no rpc instance) an index of
the node to be isolated is derived. And in the tc Invoke_Rpc_On_Remaining_Nodes a different constant
is expected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:27:24.519275" elapsed="165.617799">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s4-t4" name="Invoke_Rpc_On_Nonisolated_Nodes" line="52">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:30:10.140649" elapsed="0.000595"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:30:10.140383" elapsed="0.000922"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.142333" elapsed="0.000055"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.142213" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.142192" elapsed="0.000252"/>
</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-19T00:30:10.147245" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.147138" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.147120" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.148313" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:30:10.147911" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.148797" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:30:10.148496" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:30:10.148869" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:30:10.149042" level="INFO">${index_list} = [1, 2, 3]</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-19T00:30:10.147539" elapsed="0.001529"/>
</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-19T00:30:10.154539" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.154430" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.154411" 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-19T00:30:10.155804" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.155697" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.155679" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:30:10.156352" 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-19T00:30:10.156013" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:30:10.156756" 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-19T00:30:10.156534" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:30:10.197535" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:30:10.157290" elapsed="0.040355"/>
</kw>
<msg time="2026-04-19T00:30:10.197843" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:30:10.197893" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:30:10.156937" elapsed="0.040994"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:30:10.242714" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "n "i "s "o "l "a "t "e "d "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:30:10.198565" elapsed="0.044289"/>
</kw>
<msg time="2026-04-19T00:30:10.243090" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:30:10.243141" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:30:10.198158" elapsed="0.045021"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.243535" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.243275" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.243250" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.244141" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "n "i "s "o "l "a "t "e "d "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:10.243760" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.244592" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.244298" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.244280" elapsed="0.000393"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:30:10.244711" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:10.246372" elapsed="0.000951"/>
</kw>
<kw name="Open 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-19T00:30:10.247630" elapsed="0.000574"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:30:10.248500" elapsed="0.000428"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:30:10.245639" elapsed="0.003440"/>
</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-19T00:30:10.245059" elapsed="0.004100"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:30:10.155396" elapsed="0.093868"/>
</kw>
<msg time="2026-04-19T00:30:10.249361" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:30:10.249409" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:30:10.154755" elapsed="0.094692"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:30:10.249642" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:30:10.249528" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.249509" elapsed="0.000221"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.250183" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.250563" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.250638" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:30:10.154062" elapsed="0.096690"/>
</kw>
<msg time="2026-04-19T00:30:10.250850" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:30:10.250895" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:30:10.149444" elapsed="0.101488"/>
</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-19T00:30:10.251289" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.251009" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.250992" elapsed="0.000375"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:30:10.149305" elapsed="0.102088"/>
</iter>
<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-19T00:30:10.257158" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.256912" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.256892" elapsed="0.000347"/>
</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-19T00:30:10.258455" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.258314" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.258296" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:30:10.259063" level="INFO">${karaf_connection_index} = 12</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-19T00:30:10.258716" elapsed="0.000375"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:30:10.259492" 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-19T00:30:10.259260" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:30:10.307495" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:30:10.260019" elapsed="0.047596"/>
</kw>
<msg time="2026-04-19T00:30:10.307800" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:30:10.307848" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:30:10.259676" elapsed="0.048322"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:30:10.355823" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "n "i "s "o "l "a "t "e "d "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:30:10.308582" elapsed="0.047374"/>
</kw>
<msg time="2026-04-19T00:30:10.356161" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:30:10.356208" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:30:10.308213" elapsed="0.048032"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.356600" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.356341" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.356314" elapsed="0.000368"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:10.357188" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "n "i "s "o "l "a "t "e "d "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:10.356834" elapsed="0.000434"/>
</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-19T00:30:10.357550" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.357335" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.357317" elapsed="0.000310"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:30:10.357664" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:10.359329" elapsed="0.000903"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:30:10.360532" elapsed="0.000595"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:30:10.361421" elapsed="0.000416"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:30:10.358605" elapsed="0.003357"/>
</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-19T00:30:10.357994" elapsed="0.004053"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:30:10.257968" elapsed="0.104184"/>
</kw>
<msg time="2026-04-19T00:30:10.362247" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:30:10.362294" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:30:10.257393" elapsed="0.104939"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:30:10.362552" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:30:10.362411" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.362393" elapsed="0.000244"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.363077" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:10.363414" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.363485" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:30:10.256553" elapsed="0.107042"/>
</kw>
<msg time="2026-04-19T00:30:10.363690" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:30:10.363735" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:30:10.251670" elapsed="0.112103"/>
</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-19T00:30:10.364131" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:10.363849" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.363832" elapsed="0.000425"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:30:10.251530" elapsed="0.112755"/>
</iter>
<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-19T00:30:10.371594" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.371480" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.371460" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:30:10.372849" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:10.372740" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:10.372722" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:30:10.373416" level="INFO">${karaf_connection_index} = 34</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-19T00:30:10.373085" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:30:10.373824" 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-19T00:30:10.373600" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:30:20.375237" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:30:10.374375" elapsed="10.001919">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:30:20.376583" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:30:20.376634" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:30:10.374007" elapsed="10.002651"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:30:30.378165" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:30:20.377430" elapsed="10.001664">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:30:30.379384" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:30:30.379433" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:30:20.376944" elapsed="10.002518"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:30:30.380722" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Nonisolated_Nodes"</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-19T00:30:30.379920" elapsed="0.000868">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Nonisolated_Nodes"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:30:30.379585" elapsed="0.001283">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Nonisolated_Nodes"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:30:30.379553" elapsed="0.001350">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Nonisolated_Nodes"</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-19T00:30:30.381085" elapsed="0.000024"/>
</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-19T00:30:30.381320" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:30.381180" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:30.381162" elapsed="0.000233"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:30:30.381432" elapsed="0.000016"/>
</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-19T00:30:30.383050" elapsed="0.000854"/>
</kw>
<kw name="Open 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-19T00:30:30.384227" elapsed="0.000533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:30:30.385142" elapsed="0.000413"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:30:30.382339" elapsed="0.003327"/>
</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-19T00:30:30.381737" elapsed="0.003994"/>
</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-19T00:30:10.372435" elapsed="20.013381">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Nonisolated_Nodes"</status>
</kw>
<msg time="2026-04-19T00:30:30.385930" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:30:30.385974" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Nonisolated_Nodes"</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-19T00:30:10.371814" elapsed="20.014184"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:30:30.386313" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:30.386201" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:30.386181" elapsed="0.000197"/>
</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-19T00:30:30.387199" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:30.387094" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:30.387076" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:30:30.387563" 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-19T00:30:30.387667" 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-19T00:30:30.387415" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:30.388338" level="INFO">{1: 10, 2: 12, 3: 34}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:30.387841" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:30.388783" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:30.388535" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:30:30.389497" elapsed="0.000275"/>
</kw>
<msg time="2026-04-19T00:30:30.389870" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:30:30.389915" 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-19T00:30:30.388998" elapsed="0.000940"/>
</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-19T00:30:30.390774" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:30:40.392659" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:30:30.391664" elapsed="10.002048">No match found for '
' in 10 seconds
Output:
.</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-19T00:30:30.391164" elapsed="10.002677"/>
</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-19T00:30:40.394807" elapsed="0.000499"/>
</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-19T00:30:40.394237" elapsed="0.001161"/>
</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-19T00:30:30.390251" elapsed="10.005196"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:30.390014" elapsed="10.005487"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:30.389996" elapsed="10.005538"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:30:40.396587" level="INFO">${ip_address} = 10.30.171.206</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-19T00:30:40.396245" elapsed="0.000369"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:30:40.396669" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:30:40.396832" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:30:40.395776" elapsed="0.001083"/>
</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-19T00:30:40.397014" elapsed="0.000550"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:30:40.397858" level="INFO">index=39
host=10.30.171.206
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-19T00:30:40.397960" level="INFO">${karaf_connection_object} = index=39
host=10.30.171.206
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-19T00:30:40.397740" elapsed="0.000247"/>
</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-19T00:30:40.398166" elapsed="0.002383"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:30:40.400975" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:30:50.514312" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:30:40.400712" elapsed="10.114365">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:30:50.528069" 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-19T00:30:50.528737" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:30:50.529067" 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-19T00:30:50.516260" elapsed="0.012965"/>
</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-19T00:30:50.515576" elapsed="0.013696"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:30:30.386782" elapsed="20.142579">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:30:50.529732" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.529808" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:30:10.371107" elapsed="40.158816">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:30:50.530267" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:30:50.530316" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:30:10.364568" elapsed="40.165773"/>
</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-19T00:30:50.530682" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.530427" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.530406" elapsed="0.000354"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:30:10.364427" elapsed="40.166367"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:30:10.149125" elapsed="40.381703"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:30:10.146765" elapsed="40.384123"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:30:10.141900" elapsed="40.389046"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:30:10.141463" elapsed="40.389530"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:30:10.138215" elapsed="40.392851"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.533529" elapsed="0.000314"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.540836" 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-19T00:30:50.540263" elapsed="0.000601"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:30:50.540971" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:30:50.541151" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:30:50.539869" elapsed="0.001307"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.579891" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.579510" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.580663" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.580428" elapsed="0.000301">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:50.580866" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:50.580096" elapsed="0.000796"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.581457" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:50.581070" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.581786" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:30:50.581945" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:30:50.581643" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.582390" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.582143" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.583433" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.583147" elapsed="0.000335"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.583910" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:30:50.583641" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.584262" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.584463" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.584636" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:30:50.584133" elapsed="0.000560"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.583982" elapsed="0.000740"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:30:50.584764" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:30:50.584923" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:30:50.582799" elapsed="0.002149"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.582502" elapsed="0.002478"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.585162" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.585004" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.582483" elapsed="0.002755"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.585816" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.585375" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.585893" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:30:50.578836" elapsed="0.007179"/>
</kw>
<msg time="2026-04-19T00:30:50.586085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.566562" elapsed="0.019574"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.598397" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.610385" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.622358" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.622598" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.622812" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.623240" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.623097" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:50.623082" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.623479" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.623650" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.623813" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:30:50.623051" elapsed="0.000815"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.622923" elapsed="0.000969"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.624097" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.624207" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T00:30:50.624472" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:30:50.561765" elapsed="0.062805"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.650063" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.649675" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.650785" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.650578" elapsed="0.000269">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:50.650939" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:50.650250" elapsed="0.000714"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.651543" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:50.651141" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.651864" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:30:50.651985" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:30:50.651728" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.652428" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.652181" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:30:50.652828" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.652536" elapsed="0.000351"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.653407" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.653074" elapsed="0.000359"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.652911" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.652518" elapsed="0.000973"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.654073" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.653634" elapsed="0.000469"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.654157" elapsed="0.000038"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:30:50.649065" elapsed="0.005247"/>
</kw>
<msg time="2026-04-19T00:30:50.654366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.636675" elapsed="0.017741"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.666549" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.678497" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.690433" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.690673" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.690890" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.691318" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.691177" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:50.691162" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.691550" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.691714" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.691876" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:30:50.691132" elapsed="0.000797"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.691003" elapsed="0.000951"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.692161" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.692271" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T00:30:50.692533" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:30:50.635192" elapsed="0.057438"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.694788" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.694543" elapsed="0.000308">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:50.694943" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:50.694203" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.695394" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.695147" elapsed="0.000333"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.695999" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.695699" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.695529" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.695095" elapsed="0.001032"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.698435" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:50.696324" elapsed="0.002138"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:30:50.698550" elapsed="0.000081"/>
</return>
<msg time="2026-04-19T00:30:50.698892" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:30:50.693481" elapsed="0.005509"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.701631" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.701380" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.702192" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.701928" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.702669" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.702425" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.703163" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.702904" elapsed="0.000303"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:30:50.704164" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:30:50.703885" elapsed="0.000306"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:30:50.704514" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:30:50.704339" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:30:50.704681" elapsed="0.000220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.705313" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.705067" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:30:50.705399" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:30:50.705551" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:30:50.703472" elapsed="0.002104"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:30:50.718334" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0xtkt3ytftmvjpfsi1vtndb7q0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:30:50.718500" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:30:50.718642" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:30:50.707942" elapsed="0.010733"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.705738" elapsed="0.012989"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.718932" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.718777" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.705688" elapsed="0.013411"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.722553" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.720259" elapsed="0.002348"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.720013" elapsed="0.002630"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.719994" elapsed="0.002675"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.725538" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.722944" elapsed="0.002659"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.722725" elapsed="0.002926"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.722708" elapsed="0.002979"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.726464" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.725908" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.726929" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.726602" elapsed="0.000409"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.727728" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.727288" elapsed="0.000477"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.727066" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.726577" elapsed="0.001270"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.728593" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.728084" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.729071" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.728728" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.729864" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.729445" elapsed="0.000457"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.729184" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.728703" elapsed="0.001277"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.730202" elapsed="0.000484"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:30:50.731319" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.730911" elapsed="0.000445"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:30:50.731600" elapsed="0.002567"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:30:50.719571" elapsed="0.014659"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:30:50.734509" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:30:50.734396" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.734345" elapsed="0.000274"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.734815" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.734916" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T00:30:50.737367" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:30:50.699806" elapsed="0.037663"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.737590" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:30:50.737873" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:30:50.548158" elapsed="0.189744"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.738730" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.738260" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.738240" elapsed="0.000730"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.739005" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T00:30:50.739175" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:30:50.541458" elapsed="0.197744"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:30:50.739415" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:50.739275" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.739259" elapsed="0.000242"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:30:50.740065" level="INFO">${xml} = &lt;Element 'output' at 0x7826f6ebac50&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:30:50.739641" elapsed="0.000453"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:30:50.740590" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:30:50.740247" elapsed="0.000370"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:30:50.740666" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:30:50.740815" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:30:50.539431" elapsed="0.201409"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:30:50.740991" elapsed="0.000369"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:30:50.741409" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:30:50.534637" elapsed="0.206892"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.534348" elapsed="0.207218"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.741775" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.741593" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.534332" elapsed="0.207520"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:30:50.534300" elapsed="0.207576"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.748428" level="INFO">${session} = ClusterManagement__session_2</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-19T00:30:50.747775" elapsed="0.000680"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:30:50.748560" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:30:50.748712" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:30:50.747378" elapsed="0.001359"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.786810" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.786440" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.787584" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.787338" elapsed="0.000312">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:50.787743" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:50.786995" elapsed="0.000771"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.788325" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:50.787926" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.788699" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:30:50.788829" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:30:50.788555" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.789268" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.789007" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.790264" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.789984" elapsed="0.000324"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.790725" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:30:50.790462" elapsed="0.000288"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.791071" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.791415" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.791724" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:30:50.790930" elapsed="0.000854"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.790796" elapsed="0.001017"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:30:50.791857" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:30:50.792017" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:30:50.789668" elapsed="0.002388"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.789379" elapsed="0.002711"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.792256" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.792114" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.789360" elapsed="0.002971"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.792893" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.792467" elapsed="0.000453"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.792969" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:30:50.785821" elapsed="0.007287"/>
</kw>
<msg time="2026-04-19T00:30:50.793160" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.773703" elapsed="0.019505"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.805118" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.817061" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.828921" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.829203" elapsed="0.000027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.829453" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.829867" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.829725" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:50.829711" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.830102" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.830267" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.830432" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:30:50.829682" elapsed="0.000802"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.829571" elapsed="0.000938"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.830694" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.830802" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T00:30:50.831084" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:30:50.768927" elapsed="0.062255"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.857084" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.856692" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.857809" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.857596" elapsed="0.000277">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:50.857965" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:50.857271" elapsed="0.000718"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.858545" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:50.858162" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.858865" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:30:50.858993" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:30:50.858725" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.859424" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.859182" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:30:50.859881" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.859578" elapsed="0.000363"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.860412" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.860123" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.859965" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.859549" elapsed="0.000944"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.861061" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.860631" elapsed="0.000457"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.861137" elapsed="0.000064"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:30:50.856074" elapsed="0.005227"/>
</kw>
<msg time="2026-04-19T00:30:50.861352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.843249" elapsed="0.018152"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.873512" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.885356" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.897197" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.897430" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.897642" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.898064" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.897903" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:50.897888" elapsed="0.000256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.898281" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.898444" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.898603" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:30:50.897860" elapsed="0.000795"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.897752" elapsed="0.000928"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.898863" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.898969" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T00:30:50.899248" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:30:50.841761" elapsed="0.057583"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:50.901457" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.901216" elapsed="0.000337">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:50.901647" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:50.900862" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.902097" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.901834" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.902665" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.902363" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.902197" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.901783" elapsed="0.000982"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.905125" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:50.902961" elapsed="0.002191"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:30:50.905239" elapsed="0.000080"/>
</return>
<msg time="2026-04-19T00:30:50.905580" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:30:50.900160" elapsed="0.005517"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.908314" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.908064" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.908804" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.908561" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.909298" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.909052" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.909782" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.909529" elapsed="0.000295"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:30:50.910676" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:30:50.910478" elapsed="0.000224"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:30:50.911021" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:30:50.910849" elapsed="0.000262"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:30:50.911259" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.911897" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.911651" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:30:50.911984" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:30:50.912154" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:30:50.910077" elapsed="0.002101"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:30:50.928202" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01revv2toir9ik1kxh50zkqtdgm0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:30:50.928371" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:30:50.928507" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:30:50.914559" elapsed="0.013983"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.912392" elapsed="0.016217"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.929099" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.928711" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.912288" elapsed="0.017052"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.937101" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.931873" elapsed="0.005414"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.931340" elapsed="0.006027"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.931298" elapsed="0.006125"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.941749" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:50.938073" elapsed="0.003721"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.937547" elapsed="0.004281"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.937509" elapsed="0.004344"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.942406" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.942011" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.942730" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.942501" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.943278" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.942962" elapsed="0.000341"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.942810" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.942483" elapsed="0.000877"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.943882" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.943512" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.944228" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.943977" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.944794" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:50.944499" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.944307" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.943959" elapsed="0.000921"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.945024" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:30:50.945821" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:50.945545" elapsed="0.000301"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:30:50.945995" elapsed="0.002309"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:30:50.930330" elapsed="0.018037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:30:50.948639" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:30:50.948529" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.948479" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.948932" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:30:50.949052" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T00:30:50.951451" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:30:50.906466" elapsed="0.045114"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.951697" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:30:50.951976" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:30:50.755568" elapsed="0.196435"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.952794" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.952325" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.952305" elapsed="0.000799"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:30:50.953139" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:30:50.953291" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:30:50.749015" elapsed="0.204303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:30:50.953532" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:30:50.953391" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.953374" elapsed="0.000218"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:30:50.954119" level="INFO">${xml} = &lt;Element 'output' at 0x7826f6e4c4f0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:30:50.953733" elapsed="0.000414"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:30:50.954631" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:30:50.954300" elapsed="0.000358"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:30:50.954706" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:30:50.954854" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:30:50.746926" elapsed="0.207954"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:30:50.955046" elapsed="0.000352"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:30:50.955446" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:30:50.742389" elapsed="0.213190"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:50.742076" elapsed="0.213537"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.955825" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.955638" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:50.742061" elapsed="0.213841"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:30:50.742015" elapsed="0.213912"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:50.956401" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:50.956123" elapsed="0.000336"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:50.962804" level="INFO">${session} = ClusterManagement__session_3</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-19T00:30:50.962234" elapsed="0.000597"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:30:50.962936" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:30:50.963103" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:30:50.961852" elapsed="0.001277"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.001715" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:51.001336" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:51.002464" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:51.002245" elapsed="0.000287">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:51.002624" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:51.001900" elapsed="0.000748"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.003204" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:51.002808" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:30:51.003558" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:30:51.003719" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:30:51.003384" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.004163" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.003898" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.005165" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.004887" elapsed="0.000323"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.007071" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:30:51.005365" elapsed="0.001734"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.007423" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.007670" elapsed="0.000026"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.007843" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:30:51.007289" elapsed="0.000613"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:30:51.007151" elapsed="0.000781"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:30:51.007976" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:30:51.008155" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:30:51.004565" elapsed="0.003616"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:51.004275" elapsed="0.003938"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.008383" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:51.008238" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:51.004256" elapsed="0.004204"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.009048" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:51.008598" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:30:51.009127" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:30:51.000713" elapsed="0.008538"/>
</kw>
<msg time="2026-04-19T00:30:51.009304" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:50.988544" elapsed="0.020810"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.022351" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.035847" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.047822" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.048142" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.048361" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.048779" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:51.048638" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:51.048622" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.048994" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.049174" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.049335" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:30:51.048590" elapsed="0.000799"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:30:51.048474" elapsed="0.000941"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.049600" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:51.049710" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T00:30:51.049984" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:30:50.983763" elapsed="0.066336"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.076383" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:51.075977" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:51.077163" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:51.076902" elapsed="0.000333">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:51.077328" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:51.076571" elapsed="0.000782"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.077896" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:51.077513" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:30:51.078237" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:30:51.078387" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:30:51.078094" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.078808" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.078564" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:30:51.079228" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:51.078918" elapsed="0.000371"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.079823" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:51.079456" elapsed="0.000395"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:51.079314" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:51.078898" elapsed="0.001010"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.080498" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:30:51.080066" elapsed="0.000459"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:30:51.080576" elapsed="0.000070"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:30:51.075305" elapsed="0.005443"/>
</kw>
<msg time="2026-04-19T00:30:51.080801" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:30:51.062765" elapsed="0.018087"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.093098" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.105095" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.117060" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.117297" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.117508" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.117916" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:51.117775" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:30:51.117759" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.118153" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.118318" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.118480" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:30:51.117729" elapsed="0.000803"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:30:51.117619" elapsed="0.000939"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.118745" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:30:51.118854" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T00:30:51.119139" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:30:51.060821" elapsed="0.058419"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:30:51.121407" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:30:51.121156" elapsed="0.000392">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:30:51.121648" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:30:51.120803" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:30:51.122106" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:30:51.121839" elapsed="0.000325"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.122683" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:30:51.122380" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-19T00:30:51.122206" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-19T00:30:51.121788" elapsed="0.000997"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.125163" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:30:51.122984" elapsed="0.002206"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:30:51.125277" elapsed="0.000083"/>
</return>
<msg time="2026-04-19T00:30:51.125626" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:30:51.120088" elapsed="0.005638"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.128438" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.128185" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.128921" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.128679" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.129416" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.129170" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.129928" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.129650" elapsed="0.000322"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:30:51.130832" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:30:51.130630" elapsed="0.000228"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:30:51.131244" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:30:51.131006" elapsed="0.000264"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:30:51.131417" elapsed="0.000207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:30:51.132048" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:30:51.131789" elapsed="0.000304"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:30:51.132136" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:30:51.132289" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:30:51.130229" elapsed="0.002085"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:32:56.211496" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:30:51.134681" elapsed="125.080658">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:30:51.132476" elapsed="125.083069">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.216190" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.215695" elapsed="0.000657"/>
</branch>
<status status="FAIL" start="2026-04-19T00:30:51.132426" elapsed="125.084019">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.218117" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.218655" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.218560" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:32:56.218445" elapsed="0.000385"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.219414" elapsed="0.000052"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.219642" elapsed="0.000106"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:30:51.126551" elapsed="125.093893">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.220581" elapsed="0.000031"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.969956" elapsed="125.250773">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.221489" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.221083" elapsed="0.000624"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:32:56.221064" elapsed="0.000671"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.221769" elapsed="0.000015"/>
</return>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.963408" elapsed="125.258463">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:32:56.221996" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.221959" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:32:56.221942" elapsed="0.000152"/>
</if>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.222238" elapsed="0.000021"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.222409" elapsed="0.000020"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.222474" elapsed="0.000015"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.961414" elapsed="125.261160">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.222734" elapsed="0.000021"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.222798" elapsed="0.000014"/>
</return>
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.956656" elapsed="125.266237">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:30:50.956481" elapsed="125.266471">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:30:50.956109" elapsed="125.266872">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:30:50.956078" elapsed="125.266969">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="FAIL" start="2026-04-19T00:30:50.533912" elapsed="125.689198">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>tolerance=0</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.533202" elapsed="125.690004">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:32:56.223310" level="FAIL">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.532635" elapsed="125.690771">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:32:56.223466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.532196" elapsed="125.691320"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.223977" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.223778" elapsed="0.000275"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.224255" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.224079" elapsed="0.000231"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:32:56.223764" elapsed="0.000567"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T00:32:56.223735" elapsed="0.000619"/>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.223622" elapsed="0.000756"/>
</for>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.531851" elapsed="125.692615">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:32:56.224550" level="FAIL">Keyword 'DrbCommons.Verify_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>60s</arg>
<arg>5s</arg>
<arg>DrbCommons.Verify_Constant_On_Active_Nodes</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:30:50.531238" elapsed="125.693402">Keyword 'DrbCommons.Verify_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.225988" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.225596" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.225578" elapsed="0.000533"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:32:56.226265" elapsed="0.000371"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.231825" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:32:56.231381" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:32:56.232115" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.231926" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.231908" elapsed="0.000271"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.232630" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:32:56.232323" elapsed="0.000334"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:32:56.233099" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Partition_And_Heal_Invoke_Rpc_On_Nonisolated_Nodes</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:32:56.232818" elapsed="0.000308"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:32:56.233455" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:32:56.233281" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.233967" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:32:56.233628" elapsed="0.000367"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.234470" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:32:56.234162" elapsed="0.000336"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.235109" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes&amp;order=bug_status"

Keyword 'DrbCommons.Verify_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:32:56.234647" elapsed="0.000552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.235656" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:32:56.235358" elapsed="0.000347"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:32:56.231077" elapsed="0.004683"/>
</kw>
<status status="PASS" start="2026-04-19T00:32:56.225384" elapsed="0.010426"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:32:56.224973" elapsed="0.010878"/>
</kw>
<doc>Invoke rpc on non-islolated nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:30:10.137615" elapsed="166.098276">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_nonisolated_nodes&amp;order=bug_status"

Keyword 'DrbCommons.Verify_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s4-t5" name="Rejoin_Isolated_Member" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:32:56.239155" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:32:56.238878" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.240435" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.240325" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.240306" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.245312" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.245207" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.245189" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.246374" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:32:56.245976" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.246859" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:32:56.246557" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:32:56.246930" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:32:56.247105" level="INFO">${index_list} = [1, 2, 3]</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-19T00:32:56.245601" elapsed="0.001544"/>
</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-19T00:32:56.252863" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.252753" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.252733" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.254141" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.254011" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.253992" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:32:56.254657" 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-19T00:32:56.254356" elapsed="0.000327"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:32:56.255076" 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-19T00:32:56.254840" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:32:56.297796" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:32:56.255629" elapsed="0.042272"/>
</kw>
<msg time="2026-04-19T00:32:56.298101" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:32:56.298149" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:32:56.255293" elapsed="0.042943"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:32:56.341388" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:32:56.298769" elapsed="0.042741"/>
</kw>
<msg time="2026-04-19T00:32:56.341678" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:32:56.341755" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:32:56.298420" elapsed="0.043378"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.342130" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.341880" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.341859" elapsed="0.000354"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.342660" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:32:56.342354" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.343017" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.342802" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.342784" elapsed="0.000345"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:32:56.343165" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:32:56.344667" elapsed="0.000804"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:32:56.345748" elapsed="0.000493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:32:56.346507" elapsed="0.000360"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:32:56.344009" elapsed="0.002962"/>
</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-19T00:32:56.343462" elapsed="0.003595"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:32:56.253691" elapsed="0.093482"/>
</kw>
<msg time="2026-04-19T00:32:56.347268" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:32:56.347313" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:32:56.253101" elapsed="0.094250"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:32:56.347540" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:32:56.347429" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.347409" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.348077" elapsed="0.000031"/>
</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-19T00:32:56.348431" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.348502" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:32:56.252376" elapsed="0.096235"/>
</kw>
<msg time="2026-04-19T00:32:56.348707" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:32:56.348750" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:32:56.247536" elapsed="0.101250"/>
</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-19T00:32:56.349129" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.348863" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.348845" elapsed="0.000362"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:32:56.247396" elapsed="0.101872"/>
</iter>
<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-19T00:32:56.355089" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.354948" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.354930" elapsed="0.000232"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.356425" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.356319" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.356300" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:32:56.356927" level="INFO">${karaf_connection_index} = 12</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-19T00:32:56.356631" elapsed="0.000323"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:32:56.357353" 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-19T00:32:56.357130" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:32:56.399123" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:32:56.357862" elapsed="0.041368"/>
</kw>
<msg time="2026-04-19T00:32:56.399397" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:32:56.399446" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:32:56.357532" elapsed="0.041952"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:32:56.442721" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:32:56.400007" elapsed="0.042874"/>
</kw>
<msg time="2026-04-19T00:32:56.443084" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:32:56.443132" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:32:56.399656" elapsed="0.043514"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.443549" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.443268" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.443240" elapsed="0.000392"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:32:56.444134" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:32:56.443772" elapsed="0.000439"/>
</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-19T00:32:56.444493" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.444279" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.444260" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:32:56.444608" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:32:56.446117" 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-19T00:32:56.447165" elapsed="0.000458"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:32:56.447906" elapsed="0.000422"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:32:56.445475" elapsed="0.002957"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T00:32:56.444904" elapsed="0.003595"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:32:56.355886" elapsed="0.092717"/>
</kw>
<msg time="2026-04-19T00:32:56.448701" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:32:56.448747" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:32:56.355319" elapsed="0.093467"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:32:56.449052" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:32:56.448923" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.448903" elapsed="0.000238"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.449558" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:32:56.449900" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.449973" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:32:56.354598" elapsed="0.095503"/>
</kw>
<msg time="2026-04-19T00:32:56.450199" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:32:56.450244" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:32:56.349544" elapsed="0.100738"/>
</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-19T00:32:56.450614" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:32:56.450361" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.450343" elapsed="0.000349"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:32:56.349404" elapsed="0.101313"/>
</iter>
<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-19T00:32:56.456426" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.456312" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.456291" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:32:56.457676" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:32:56.457566" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:32:56.457547" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:32:56.458220" level="INFO">${karaf_connection_index} = 39</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-19T00:32:56.457889" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:32:56.458624" 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-19T00:32:56.458406" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:33:06.459894" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:32:56.459171" elapsed="10.001700">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:33:06.461174" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:33:06.461224" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:32:56.458808" elapsed="10.002440"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:33:16.462395" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:33:06.461983" elapsed="10.001207">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:33:16.463456" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:33:16.463504" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:33:06.461539" elapsed="10.001989"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:33:16.464691" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Rejoin_Isolated_Member"</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-19T00:33:16.463964" elapsed="0.000790">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Rejoin_Isolated_Member"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:33:16.463648" elapsed="0.001176">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Rejoin_Isolated_Member"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:33:16.463615" elapsed="0.001243">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Rejoin_Isolated_Member"</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-19T00:33:16.465022" elapsed="0.000039"/>
</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-19T00:33:16.465263" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:16.465126" elapsed="0.000269"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:33:16.465109" elapsed="0.000310"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:33:16.465460" 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-19T00:33:16.467057" elapsed="0.000778"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:33:16.468145" elapsed="0.000468"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:33:16.468874" elapsed="0.000378"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:33:16.466363" elapsed="0.002989"/>
</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-19T00:33:16.465769" elapsed="0.003648"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T00:32:56.457254" elapsed="20.012250">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Rejoin_Isolated_Member"</status>
</kw>
<msg time="2026-04-19T00:33:16.469610" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:33:16.469656" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Rejoin_Isolated_Member"</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-19T00:32:56.456652" elapsed="20.013062"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:33:16.469908" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:16.469795" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:16.469777" elapsed="0.000197"/>
</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-19T00:33:16.470889" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:16.470694" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:16.470677" elapsed="0.000279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:33:16.471459" 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-19T00:33:16.471566" 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-19T00:33:16.471122" elapsed="0.000470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:33:16.472007" level="INFO">{1: 10, 2: 12, 3: 39}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:33:16.471742" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:33:16.472486" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:33:16.472244" 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-19T00:33:16.473051" elapsed="0.000263"/>
</kw>
<msg time="2026-04-19T00:33:16.473413" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:33:16.473459" level="INFO">${old_connection_index} = 39</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-19T00:33:16.472682" elapsed="0.000799"/>
</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-19T00:33:16.474294" elapsed="0.000214"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:33:26.476176" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:33:16.475170" elapsed="10.002070">No match found for '
' in 10 seconds
Output:
.</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-19T00:33:16.474675" elapsed="10.002708"/>
</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-19T00:33:26.478284" elapsed="0.000450"/>
</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-19T00:33:26.477698" elapsed="0.001122"/>
</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-19T00:33:16.473772" elapsed="10.005097"/>
</kw>
<status status="PASS" start="2026-04-19T00:33:16.473556" elapsed="10.005365"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:16.473538" elapsed="10.005415"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:33:26.479990" level="INFO">${ip_address} = 10.30.171.206</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-19T00:33:26.479637" elapsed="0.000380"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:33:26.480264" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:33:26.480438" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:33:26.479247" elapsed="0.001217"/>
</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-19T00:33:26.480621" elapsed="0.000444"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:33:26.481357" level="INFO">index=44
host=10.30.171.206
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-19T00:33:26.481460" level="INFO">${karaf_connection_object} = index=44
host=10.30.171.206
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-19T00:33:26.481234" 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-19T00:33:26.481634" elapsed="0.002424"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:33:26.484493" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:33:36.552465" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:33:26.484226" elapsed="10.069124">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:33:36.567937" elapsed="0.000981"/>
</kw>
<kw name="Open 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-19T00:33:36.569113" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:33:36.569433" 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-19T00:33:36.554907" elapsed="0.014682"/>
</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-19T00:33:36.553874" elapsed="0.015761"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:33:16.470390" elapsed="20.099334">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:33:36.570114" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.570194" elapsed="0.000022"/>
</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-19T00:32:56.455797" elapsed="40.114514">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:33:36.570431" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:33:36.570476" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:32:56.451041" elapsed="40.119459"/>
</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-19T00:33:36.570855" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.570597" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.570575" elapsed="0.000359"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:32:56.450875" elapsed="40.120090"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:32:56.247216" elapsed="40.323784"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:32:56.244833" elapsed="40.326244"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:32:56.240015" elapsed="40.331121"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:32:56.239568" elapsed="40.331614"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:32:56.236782" elapsed="40.334457"/>
</kw>
<kw name="Rejoin_Node" owner="DrbCommons">
<msg time="2026-04-19T00:33:36.575612" level="FAIL">Variable '${isolated_idx}' not found.</msg>
<arg>${isolated_idx}</arg>
<doc>Rejoin a member and update appropriate suite variables.</doc>
<status status="FAIL" start="2026-04-19T00:33:36.571508" elapsed="0.004144">Variable '${isolated_idx}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.577452" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.576864" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.576847" elapsed="0.000698"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:33:36.577689" elapsed="0.000319"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.583164" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:33:36.582421" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:33:36.583411" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.583267" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.583249" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.583914" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:33:36.583614" elapsed="0.000327"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:33:36.584387" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Partition_And_Heal_Rejoin_Isolated_Member</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:33:36.584126" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:33:36.584742" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:33:36.584570" elapsed="0.000198"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.585276" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:33:36.584917" elapsed="0.000386"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.585761" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:33:36.585451" elapsed="0.000338"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.586389" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"

Variable '${isolated_idx}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:33:36.585938" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.586878" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:33:36.586587" elapsed="0.000339"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:33:36.582119" elapsed="0.004861"/>
</kw>
<status status="PASS" start="2026-04-19T00:33:36.576654" elapsed="0.010389"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:33:36.575950" elapsed="0.011136"/>
</kw>
<doc>Rejoin isolated node</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:32:56.236290" elapsed="40.350834">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"

Variable '${isolated_idx}' not found.</status>
</test>
<test id="s1-s4-t6" name="Invoke_Rpc_On_Each_Node_Again" line="60">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:33:36.591540" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:33:36.591275" elapsed="0.000544"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.592812" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.592701" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.592681" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.597679" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.597570" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.597550" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.598729" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:33:36.598353" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.599227" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:33:36.598909" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:33:36.599297" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:33:36.599452" level="INFO">${index_list} = [1, 2, 3]</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-19T00:33:36.597968" elapsed="0.001508"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.604768" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.604659" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.604641" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.605961" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.605855" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.605837" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:33:36.606502" 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-19T00:33:36.606193" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:33:36.606902" 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-19T00:33:36.606683" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:33:36.643210" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:33:36.607443" elapsed="0.035889"/>
</kw>
<msg time="2026-04-19T00:33:36.643537" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:33:36.643585" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:33:36.607100" elapsed="0.036522"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:33:36.685776" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:33:36.644182" elapsed="0.041712"/>
</kw>
<msg time="2026-04-19T00:33:36.686084" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:33:36.686130" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:33:36.643802" elapsed="0.042366"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.686472" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.686249" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.686229" elapsed="0.000321"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.686985" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:33:36.686685" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.687358" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.687148" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.687130" elapsed="0.000304"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:33:36.687467" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:33:36.688977" elapsed="0.000873"/>
</kw>
<kw name="Open 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-19T00:33:36.690209" elapsed="0.000514"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:33:36.691007" elapsed="0.000429"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:33:36.688300" elapsed="0.003244"/>
</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-19T00:33:36.687748" elapsed="0.003862"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:33:36.605556" elapsed="0.086152"/>
</kw>
<msg time="2026-04-19T00:33:36.691799" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:33:36.691844" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:33:36.604982" elapsed="0.086899"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:33:36.692079" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:33:36.691956" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.691938" elapsed="0.000223"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.692557" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.692917" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.692989" elapsed="0.000028"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:33:36.604321" elapsed="0.088803"/>
</kw>
<msg time="2026-04-19T00:33:36.693215" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:33:36.693258" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:33:36.599873" elapsed="0.093420"/>
</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-19T00:33:36.693611" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.693367" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.693350" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:33:36.599733" elapsed="0.093975"/>
</iter>
<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-19T00:33:36.698934" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.698829" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.698810" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.700327" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.700220" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.700202" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:33:36.700871" level="INFO">${karaf_connection_index} = 12</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-19T00:33:36.700549" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:33:36.701313" 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-19T00:33:36.701077" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:33:36.742203" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:33:36.701820" elapsed="0.040480"/>
</kw>
<msg time="2026-04-19T00:33:36.742483" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:33:36.742530" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:33:36.701494" elapsed="0.041071"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:33:36.783733" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:33:36.743090" elapsed="0.040761"/>
</kw>
<msg time="2026-04-19T00:33:36.784088" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:33:36.784135" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:33:36.742731" elapsed="0.041442"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.784467" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.784249" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.784229" elapsed="0.000315"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:33:36.784977" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:33:36.784678" elapsed="0.000395"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.785349" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.785139" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.785121" elapsed="0.000304"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:33:36.785457" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:33:36.787112" elapsed="0.000849"/>
</kw>
<kw name="Open 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-19T00:33:36.788273" elapsed="0.000504"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:33:36.789084" elapsed="0.000399"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:33:36.786441" elapsed="0.003153"/>
</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-19T00:33:36.785716" elapsed="0.003944"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:33:36.699899" elapsed="0.089860"/>
</kw>
<msg time="2026-04-19T00:33:36.789965" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:33:36.790013" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:33:36.699340" elapsed="0.090740"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:33:36.790266" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:33:36.790158" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.790139" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.790730" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:33:36.791069" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:33:36.791141" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:33:36.698491" elapsed="0.092757"/>
</kw>
<msg time="2026-04-19T00:33:36.791338" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:33:36.791382" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:33:36.693970" elapsed="0.097450"/>
</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-19T00:33:36.791737" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:36.791494" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.791477" elapsed="0.000335"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:33:36.693832" elapsed="0.098003"/>
</iter>
<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-19T00:33:36.797014" elapsed="0.000058"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.796907" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.796889" elapsed="0.000238"/>
</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-19T00:33:36.798486" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:36.798340" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:36.798322" elapsed="0.000235"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:33:36.799012" level="INFO">${karaf_connection_index} = 44</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-19T00:33:36.798699" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:33:36.799431" 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-19T00:33:36.799213" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:33:46.800717" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:33:36.799942" elapsed="10.001836">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:33:46.802102" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:33:46.802154" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:33:36.799612" elapsed="10.002566"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:33:56.803519" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:33:46.802942" elapsed="10.001496">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:33:56.804724" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:33:56.804774" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:33:46.802466" elapsed="10.002334"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:33:56.806066" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</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-19T00:33:56.805284" elapsed="0.000848">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:33:56.804923" elapsed="0.001281">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:33:56.804890" elapsed="0.001349">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</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-19T00:33:56.806403" 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-19T00:33:56.808526" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:33:56.808371" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:33:56.806473" elapsed="0.002133"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:33:56.808643" 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-19T00:33:56.810250" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:33:56.811489" elapsed="0.000533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:33:56.812334" elapsed="0.000416"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:33:56.809558" elapsed="0.003309"/>
</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-19T00:33:56.808937" elapsed="0.004000"/>
</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-19T00:33:36.797851" elapsed="20.015172">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<msg time="2026-04-19T00:33:56.813208" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:33:56.813254" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</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-19T00:33:36.797275" elapsed="20.016005"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:33:56.813478" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:56.813358" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:56.813339" elapsed="0.000209"/>
</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-19T00:33:56.814369" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:33:56.814262" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:56.814244" elapsed="0.000272"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:33:56.814862" 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-19T00:33:56.814981" 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-19T00:33:56.814677" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:33:56.815445" level="INFO">{1: 10, 2: 12, 3: 44}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:33:56.815179" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:33:56.815892" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:33:56.815649" elapsed="0.000287"/>
</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-19T00:33:56.816527" elapsed="0.000281"/>
</kw>
<msg time="2026-04-19T00:33:56.816907" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:33:56.816955" level="INFO">${old_connection_index} = 44</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-19T00:33:56.816111" elapsed="0.000867"/>
</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-19T00:33:56.817814" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:34:06.819866" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:33:56.818705" elapsed="10.002286">No match found for '
' in 10 seconds
Output:
.</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-19T00:33:56.818201" elapsed="10.002947"/>
</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-19T00:34:06.822087" elapsed="0.000481"/>
</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-19T00:34:06.821459" elapsed="0.001201"/>
</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-19T00:33:56.817312" elapsed="10.005398"/>
</kw>
<status status="PASS" start="2026-04-19T00:33:56.817091" elapsed="10.005672"/>
</branch>
<status status="PASS" start="2026-04-19T00:33:56.817071" elapsed="10.005726"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:34:06.823833" level="INFO">${ip_address} = 10.30.171.206</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-19T00:34:06.823504" elapsed="0.000357"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:34:06.823923" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:34:06.824134" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:34:06.823115" elapsed="0.001045"/>
</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-19T00:34:06.824319" elapsed="0.000433"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:34:06.825326" level="INFO">index=49
host=10.30.171.206
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-19T00:34:06.825438" level="INFO">${karaf_connection_object} = index=49
host=10.30.171.206
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-19T00:34:06.824922" elapsed="0.000542"/>
</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-19T00:34:06.825612" elapsed="0.002637"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:34:06.828678" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:34:16.852435" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:34:06.828413" elapsed="10.024864">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:34:16.865785" elapsed="0.000517"/>
</kw>
<kw name="Open 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-19T00:34:16.866469" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:34:16.866790" 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-19T00:34:16.854484" elapsed="0.012464"/>
</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-19T00:34:16.853772" elapsed="0.013328"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:33:56.813947" elapsed="20.053249">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:34:16.867568" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:34:16.867646" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:33:36.796568" elapsed="40.071194">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:34:16.867881" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:34:16.867926" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:33:36.792103" elapsed="40.075847"/>
</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-19T00:34:16.868512" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:16.868246" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:16.868018" elapsed="0.000573"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:33:36.791954" elapsed="40.076662"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:33:36.599556" elapsed="40.269094"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:33:36.597172" elapsed="40.271536"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:33:36.592413" elapsed="40.276353"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:33:36.591968" elapsed="40.276844"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:33:36.588619" elapsed="40.280249"/>
</kw>
<kw name="Verify_Keyword_Does_Not_Fail_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Confirm_Keyword_Fails_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Verify_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:16.875859" elapsed="0.000442"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.882516" 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-19T00:34:16.882212" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:34:16.882591" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:34:16.882744" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:34:16.881852" elapsed="0.000917"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.917570" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:16.917167" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:16.918497" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.918121" elapsed="0.000448">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:16.918665" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:16.917766" elapsed="0.000924"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.919326" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:16.918905" elapsed="0.000448"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:34:16.919674" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:34:16.919841" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:34:16.919524" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.920308" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:16.920020" elapsed="0.000334"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.921556" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:16.921098" elapsed="0.000521"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.922160" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:34:16.921781" elapsed="0.000405"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.922584" elapsed="0.000046"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.923258" elapsed="0.000051"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.923596" elapsed="0.000048"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:34:16.922390" elapsed="0.001372"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:34:16.922235" elapsed="0.001591"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:34:16.923874" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:34:16.924063" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:34:16.920732" elapsed="0.003382"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:16.920433" elapsed="0.003716"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.924321" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:16.924175" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:16.920412" elapsed="0.003986"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.924990" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:16.924545" elapsed="0.000473"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:34:16.925085" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:34:16.916513" elapsed="0.008698"/>
</kw>
<msg time="2026-04-19T00:34:16.925263" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:16.904167" elapsed="0.021149"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.937528" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.949463" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.961458" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.961694" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.961870" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.962275" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:16.962129" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:34:16.962113" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.962493" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.962659" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.962824" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:34:16.962081" elapsed="0.000798"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:34:16.961949" elapsed="0.000955"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:16.963077" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:34:16.963158" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:34:16.963270" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:34:16.899966" elapsed="0.063330"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.987485" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:16.987085" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:16.988398" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.988010" elapsed="0.000457">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:16.988562" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:16.987673" elapsed="0.000914"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.989162" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:16.988748" elapsed="0.000442"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:34:16.989496" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:34:16.989628" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:34:16.989354" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.990076" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:16.989805" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:34:16.990489" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:16.990188" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.991058" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:16.990716" elapsed="0.000370"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:16.990574" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:16.990169" elapsed="0.001009"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:16.991771" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:16.991324" elapsed="0.000475"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:34:16.991848" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:34:16.986453" elapsed="0.005523"/>
</kw>
<msg time="2026-04-19T00:34:16.992042" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:16.974020" elapsed="0.018079"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.004230" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.016127" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.027970" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.028201" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.028376" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.028734" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.028595" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:34:17.028579" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.028956" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.029139" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.029303" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:34:17.028550" elapsed="0.000806"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.028449" elapsed="0.000933"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.029522" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.029598" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:34:17.029707" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:34:16.973172" elapsed="0.056561"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.031075" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.030806" elapsed="0.000334">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:17.031233" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:17.030464" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.031576" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.031330" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.032179" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.031836" elapsed="0.000370"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.031657" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.031310" elapsed="0.000953"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.034546" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:17.032413" elapsed="0.002160"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:34:17.034624" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:34:17.034784" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:34:17.030135" elapsed="0.004674"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.036407" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.036123" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.036850" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.036603" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.037314" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.037061" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.037750" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.037504" elapsed="0.000289"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:34:17.038630" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:34:17.038430" elapsed="0.000226"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:34:17.038982" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:34:17.038805" elapsed="0.000204"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:34:17.039178" elapsed="0.000227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.039809" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.039559" elapsed="0.000293"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:34:17.039894" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:34:17.040071" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:34:17.037994" elapsed="0.002104"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:34:17.054558" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0xtkt3ytftmvjpfsi1vtndb7q0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:34:17.054833" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:34:17.055115" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:34:17.042381" elapsed="0.012795"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.040184" elapsed="0.015118"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.055712" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.055366" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.040164" elapsed="0.015832"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.062698" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.058536" elapsed="0.004259"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.057938" elapsed="0.004907"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.057893" elapsed="0.004988"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.066610" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.063300" elapsed="0.003376"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.062961" elapsed="0.003763"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.062936" elapsed="0.003823"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.067573" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.066981" elapsed="0.000632"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.068064" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.067713" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.068844" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.068443" elapsed="0.000426"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.068217" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.067686" elapsed="0.001239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.069463" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.069095" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.069804" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.069563" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.070353" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.070052" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.069884" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.069539" elapsed="0.000896"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:17.070588" elapsed="0.000353"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:34:17.071408" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.071119" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:34:17.071589" elapsed="0.002543"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:34:17.056887" elapsed="0.017314"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:34:17.074395" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:34:17.074284" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.074264" elapsed="0.000218"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.074632" elapsed="0.000026"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.074705" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:34:17.076985" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:34:17.035173" elapsed="0.041841"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.077101" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:34:17.077256" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:34:16.889157" elapsed="0.188126"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.077696" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.077439" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.077419" elapsed="0.000374"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.077825" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:34:17.077977" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:34:16.883016" elapsed="0.194989"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:34:17.078241" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:34:17.078098" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.078080" elapsed="0.000224"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:34:17.078829" level="INFO">${xml} = &lt;Element 'output' at 0x7826f741d5d0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:34:17.078462" elapsed="0.000395"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:34:17.079330" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:34:17.079013" elapsed="0.000342"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:34:17.079403" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:34:17.079555" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:34:16.881420" elapsed="0.198160"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:34:17.079741" elapsed="0.000379"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:34:17.080181" elapsed="0.000030"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:34:16.876901" elapsed="0.203406"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:16.876613" elapsed="0.203729"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.080556" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.080368" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:16.876596" elapsed="0.204039"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:34:16.876562" elapsed="0.204098"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.086963" level="INFO">${session} = ClusterManagement__session_2</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-19T00:34:17.086617" elapsed="0.000374"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:34:17.087057" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:34:17.087211" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:34:17.086266" elapsed="0.000970"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.122732" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.122251" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.123699" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.123283" elapsed="0.000496">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:17.123874" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:17.122928" elapsed="0.000970"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.124525" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:17.124087" elapsed="0.000466"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.124919" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:34:17.125085" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:34:17.124771" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.125531" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.125266" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.126780" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.126305" elapsed="0.000538"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.127397" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:34:17.127003" elapsed="0.000427"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.127986" elapsed="0.000064"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.128729" elapsed="0.000053"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.129104" elapsed="0.000048"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:34:17.127647" elapsed="0.001627"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.127481" elapsed="0.001860"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:34:17.129390" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:34:17.129567" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:34:17.125938" elapsed="0.003655"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.125646" elapsed="0.003980"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.129793" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.129650" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.125625" elapsed="0.004245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.130478" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.130010" elapsed="0.000496"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.130555" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:34:17.121615" elapsed="0.009067"/>
</kw>
<msg time="2026-04-19T00:34:17.130734" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:17.109322" elapsed="0.021465"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.142829" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.154790" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.166865" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.167166" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.167343" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.167734" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.167586" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:34:17.167565" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.167953" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.168184" elapsed="0.000051"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.168389" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:34:17.167518" elapsed="0.000926"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.167417" elapsed="0.001052"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.168611" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.168687" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:34:17.168797" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:34:17.105141" elapsed="0.063682"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.193051" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.192653" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.193934" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.193594" elapsed="0.000407">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:17.194144" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:17.193241" elapsed="0.000934"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.194804" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:17.194373" elapsed="0.000459"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.195158" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:34:17.195314" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:34:17.194989" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.195811" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.195525" elapsed="0.000338"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:34:17.196375" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.195947" elapsed="0.000509"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.196987" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.196666" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.196489" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.195923" elapsed="0.001163"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.197720" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.197227" elapsed="0.000522"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.197800" elapsed="0.000086"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:34:17.191987" elapsed="0.006021"/>
</kw>
<msg time="2026-04-19T00:34:17.198084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:17.179587" elapsed="0.018553"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.210661" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.222625" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.234595" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.234790" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.234961" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.235337" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.235199" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:34:17.235184" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.235551" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.235714" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.235874" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:34:17.235154" elapsed="0.000773"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.235050" elapsed="0.000902"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.236107" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.236184" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:34:17.236315" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:34:17.178718" elapsed="0.057623"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.237613" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.237357" elapsed="0.000362">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:17.237814" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:17.236995" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.238170" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.237910" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.238712" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.238422" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.238252" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.237891" elapsed="0.000904"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.241069" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:17.238939" elapsed="0.002157"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:34:17.241149" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:34:17.241303" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:34:17.236668" elapsed="0.004660"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.242837" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.242590" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.243287" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.243047" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.243713" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.243473" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.244156" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.243901" elapsed="0.000298"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:34:17.245080" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:34:17.244863" elapsed="0.000243"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:34:17.245431" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:34:17.245256" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:34:17.245602" elapsed="0.000217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.246232" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.245970" elapsed="0.000305"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:34:17.246317" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:34:17.246470" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:34:17.244463" elapsed="0.002032"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:34:17.258548" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01revv2toir9ik1kxh50zkqtdgm0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:34:17.258719" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:34:17.258864" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:34:17.248730" elapsed="0.010170"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.246564" elapsed="0.012400"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.259240" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.259000" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.246546" elapsed="0.012819"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.266221" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.260996" elapsed="0.005412"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.260578" elapsed="0.005910"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.260547" elapsed="0.005995"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.272477" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.267217" elapsed="0.005363"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.266665" elapsed="0.005993"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.266627" elapsed="0.006086"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.273286" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.272885" elapsed="0.000428"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.273613" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.273383" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.274165" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.273852" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.273693" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.273364" elapsed="0.000883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.274753" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.274397" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.275089" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.274847" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.275614" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.275322" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.275170" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.274829" elapsed="0.000866"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:17.275839" elapsed="0.000359"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:34:17.276649" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.276368" elapsed="0.000306"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:34:17.276822" elapsed="0.002268"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:34:17.259854" elapsed="0.019297"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:34:17.279329" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:34:17.279223" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.279204" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.279556" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.279623" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:34:17.281867" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:34:17.241649" elapsed="0.040246"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.281965" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:34:17.282132" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:34:17.093532" elapsed="0.188626"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.282493" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.282262" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.282245" elapsed="0.000374"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.282652" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:34:17.282803" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:34:17.087482" elapsed="0.195347"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:34:17.283058" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:34:17.282903" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.282886" elapsed="0.000233"/>
</if>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:34:17.283592" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7256b10&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:34:17.283259" elapsed="0.000361"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:34:17.284078" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:34:17.283772" elapsed="0.000332"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:34:17.284152" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:34:17.284326" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:34:17.085798" elapsed="0.198558"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:34:17.284509" elapsed="0.000349"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:34:17.284906" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:34:17.081156" elapsed="0.203885"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.080852" elapsed="0.204225"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.285288" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.285103" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.080838" elapsed="0.204527"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:34:17.080805" elapsed="0.204585"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.285846" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.285570" elapsed="0.000333"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.291688" level="INFO">${session} = ClusterManagement__session_3</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-19T00:34:17.291390" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:34:17.291761" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:34:17.291906" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:34:17.291046" elapsed="0.000886"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.326311" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.325922" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.327218" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.326827" elapsed="0.000459">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:17.327378" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:17.326497" elapsed="0.000905"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.327946" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:17.327564" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.328372" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:34:17.328520" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:34:17.328160" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.328941" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.328698" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.330155" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.329703" elapsed="0.000513"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.332216" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:34:17.330373" elapsed="0.001871"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.332666" elapsed="0.000047"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.333360" elapsed="0.000052"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.333694" elapsed="0.000046"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:34:17.332480" elapsed="0.001378"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.332308" elapsed="0.001615"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:34:17.333971" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:34:17.334152" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:34:17.329361" elapsed="0.004817"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.329071" elapsed="0.005139"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.334378" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.334235" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.329050" elapsed="0.005405"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.335054" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.334592" elapsed="0.000492"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.335133" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:34:17.325316" elapsed="0.009941"/>
</kw>
<msg time="2026-04-19T00:34:17.335310" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:17.313226" elapsed="0.022138"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.347351" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.360732" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.372624" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.372891" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.373085" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.373447" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.373308" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:34:17.373293" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.373662" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.373823" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.373984" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:34:17.373264" elapsed="0.000787"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.373162" elapsed="0.000916"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.374219" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.374295" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:34:17.374405" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:34:17.309114" elapsed="0.065316"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.398271" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.397877" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.399146" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.398783" elapsed="0.000430">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:17.399306" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:17.398456" elapsed="0.000874"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.399872" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:17.399490" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.400209" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:34:17.400372" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:34:17.400070" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.400792" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.400549" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:34:17.401201" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.400898" elapsed="0.000363"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.401742" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.401426" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.401285" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.400880" elapsed="0.000947"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.402408" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:34:17.401967" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:34:17.402484" elapsed="0.000072"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:34:17.397269" elapsed="0.005389"/>
</kw>
<msg time="2026-04-19T00:34:17.402709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:17.385114" elapsed="0.017646"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.415024" elapsed="0.000041"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.426850" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.438602" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.438794" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.438966" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.439339" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.439199" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:34:17.439184" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.439551" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.439712" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.439874" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:34:17.439155" elapsed="0.000772"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.439053" elapsed="0.000899"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.440106" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:34:17.440182" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:34:17.440291" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:34:17.384218" elapsed="0.056098"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:34:17.441580" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.441340" elapsed="0.000346">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:34:17.441780" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:34:17.440986" elapsed="0.000818"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:34:17.442137" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:34:17.441876" elapsed="0.000319"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.442679" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:34:17.442388" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T00:34:17.442219" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T00:34:17.441856" elapsed="0.000911"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.445042" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:34:17.442915" elapsed="0.002155"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:34:17.445122" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:34:17.445276" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:34:17.440665" elapsed="0.004635"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.446802" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.446553" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.447260" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.447005" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.447690" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.447448" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.448135" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.447880" elapsed="0.000298"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:34:17.448994" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:34:17.448800" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:34:17.449356" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:34:17.449183" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:34:17.449523" elapsed="0.000206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:34:17.450139" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:34:17.449878" elapsed="0.000303"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:34:17.450223" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:34:17.450376" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:34:17.448400" elapsed="0.002000"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:36:22.546407" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.452666" elapsed="125.097629">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:34:17.450469" elapsed="125.100046">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.551110" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.550609" elapsed="0.000664"/>
</branch>
<status status="FAIL" start="2026-04-19T00:34:17.450451" elapsed="125.100876">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.552284" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.552628" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.552539" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:36:22.552496" elapsed="0.000274"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.553307" elapsed="0.000053"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.553466" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.445617" elapsed="125.108113">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.553920" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.298294" elapsed="125.255894">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.554847" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.554454" elapsed="0.000543"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:36:22.554415" elapsed="0.000664"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.555154" elapsed="0.000034"/>
</return>
<var>${text}</var>
<arg>${GET_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.292197" elapsed="125.263191">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${explicit_status_codes}&quot;&quot;&quot; != &quot;&quot;&quot;${NO_STATUS_CODES}&quot;&quot;&quot;">
<return>
<status status="NOT RUN" start="2026-04-19T00:36:22.555720" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.555629" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:36:22.555549" elapsed="0.000301"/>
</if>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.556198" elapsed="0.000049"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.556501" elapsed="0.000021"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.556566" elapsed="0.000015"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<doc>Invoke get-constant rpc on the requested member and return the registered constant unless explicit status code is expected.
The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for calls with
expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.290598" elapsed="125.266072">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.556833" elapsed="0.000022"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.556898" elapsed="0.000015"/>
</return>
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T00:34:17.286110" elapsed="125.270889">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:34:17.285926" elapsed="125.271149">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:34:17.285555" elapsed="125.271550">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:34:17.285525" elapsed="125.271633">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="FAIL" start="2026-04-19T00:34:16.876373" elapsed="125.680846">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>tolerance=0</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.875534" elapsed="125.681786">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:36:22.557504" level="FAIL">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.874900" elapsed="125.682710">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:36:22.557696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.873752" elapsed="125.684098"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.558635" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.558375" elapsed="0.000329"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.558986" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.558744" elapsed="0.000325"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:36:22.558316" elapsed="0.000791"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T00:36:22.558260" elapsed="0.000907"/>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.558095" elapsed="0.001122"/>
</for>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.873408" elapsed="125.685974">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:36:22.559504" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:36:22.559560" level="INFO">${output} = Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125....</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:34:16.872836" elapsed="125.686750"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:36:22.559791" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T00:36:22.559659" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.559641" elapsed="0.000232"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.560018" elapsed="0.000040"/>
</kw>
<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-19T00:36:22.560205" elapsed="0.000020"/>
</kw>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="PASS" start="2026-04-19T00:34:16.872496" elapsed="125.687831"/>
</kw>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:34:16.871394" elapsed="125.688986"/>
</kw>
<msg time="2026-04-19T00:36:22.560428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:34:16.871016" elapsed="125.689460"/>
</kw>
<arg>20s</arg>
<arg>3s</arg>
<arg>DrbCommons.Verify_Constant_On_Active_Nodes</arg>
<doc>Some Keywords need several tries to finally fail, this keyword passes if and only if the failure ultimately happens.</doc>
<status status="PASS" start="2026-04-19T00:34:16.870691" elapsed="125.689874"/>
</kw>
<msg time="2026-04-19T00:36:22.560664" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:36:22.560708" level="INFO">${output} = Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125....</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:34:16.870290" elapsed="125.690443"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.560918" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.560804" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.560787" elapsed="0.000196"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.561516" level="INFO">${output} = Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125....</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:36:22.561142" elapsed="0.000402"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.561993" level="FAIL">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-19T00:36:22.561692" elapsed="0.000379">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.869880" elapsed="125.692292">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:36:22.562227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Invert_Failure</arg>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.869435" elapsed="125.692837"/>
</kw>
<arg>20s</arg>
<arg>3s</arg>
<arg>DrbCommons.Verify_Constant_On_Active_Nodes</arg>
<doc>Some positive checks report false success for a short time. This keyword verifies no failure does happen within timeout period.
This implementation needs more complicated logic than, Verify_Keyword_Never_Passes_Within_Timeout,
so use that keyword in case you have a negative check handy.</doc>
<status status="FAIL" start="2026-04-19T00:34:16.869094" elapsed="125.693272">Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.563746" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.563350" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.563333" elapsed="0.000499"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:36:22.563984" elapsed="0.000356"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.569537" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:36:22.569119" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:36:22.569780" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.569637" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.569620" elapsed="0.000221"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.570295" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:36:22.569982" elapsed="0.000340"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:36:22.570736" level="INFO">${reference} = controller_clustering_ask_txt_Rpc_Provider_Partition_And_Heal_Invoke_Rpc_On_Each_Node_Again</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:36:22.570475" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:36:22.571108" level="INFO">${reference} = controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:36:22.570917" elapsed="0.000216"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.571642" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:36:22.571284" elapsed="0.000385"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.572146" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:36:22.571819" elapsed="0.000355"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.572769" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"

Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:36:22.572324" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.573313" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:36:22.572971" elapsed="0.000390"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:36:22.568786" elapsed="0.004630"/>
</kw>
<status status="PASS" start="2026-04-19T00:36:22.563141" elapsed="0.010324"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:36:22.562722" elapsed="0.010784"/>
</kw>
<doc>Invoke rpc get-constant on every node. When requested on the node with
local instance the local value is expected. If invoked on the node with no local instance, any remote
value is expected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:33:36.587769" elapsed="165.985775">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_rpc_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"

Keyword 'Verify_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s4-t7" name="Unregister_Rpc_On_Each_Node" line="69">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:36:22.576911" elapsed="0.000228"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:36:22.576649" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.578377" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.578265" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.578245" elapsed="0.000201"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.583261" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.583155" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.583137" elapsed="0.000203"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.584343" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:36:22.583941" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.584830" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:36:22.584526" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:36:22.584900" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:36:22.585070" level="INFO">${index_list} = [1, 2, 3]</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-19T00:36:22.583568" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.590516" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.590409" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.590390" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.591781" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.591674" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.591656" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:36:22.592310" 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-19T00:36:22.591990" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:36:22.592709" 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-19T00:36:22.592492" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:36:22.634291" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:36:22.593239" elapsed="0.041153"/>
</kw>
<msg time="2026-04-19T00:36:22.634554" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:36:22.634601" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:36:22.592889" elapsed="0.041748"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:36:22.680374" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:36:22.635206" elapsed="0.045282"/>
</kw>
<msg time="2026-04-19T00:36:22.680645" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:36:22.680690" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:36:22.634835" elapsed="0.045892"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.681022" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.680803" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.680784" elapsed="0.000337"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.681554" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:36:22.681260" elapsed="0.000370"/>
</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-19T00:36:22.681950" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.681736" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.681717" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:36:22.682078" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:36:22.683575" elapsed="0.000783"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:36:22.684632" elapsed="0.000484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:36:22.685375" elapsed="0.000358"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:36:22.682946" elapsed="0.002886"/>
</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-19T00:36:22.682377" elapsed="0.003518"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:36:22.591370" elapsed="0.094623"/>
</kw>
<msg time="2026-04-19T00:36:22.686108" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:36:22.686153" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:36:22.590732" elapsed="0.095458"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:36:22.686388" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:36:22.686279" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.686261" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.686867" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.687215" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.687287" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:36:22.590069" elapsed="0.097324"/>
</kw>
<msg time="2026-04-19T00:36:22.687484" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:36:22.687527" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:36:22.585461" elapsed="0.102103"/>
</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-19T00:36:22.687880" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.687637" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.687619" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:36:22.585320" elapsed="0.102657"/>
</iter>
<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-19T00:36:22.693360" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.693253" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.693234" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.694704" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.694598" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.694580" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:36:22.695230" level="INFO">${karaf_connection_index} = 12</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-19T00:36:22.694918" elapsed="0.000338"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:36:22.695627" 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-19T00:36:22.695411" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:36:22.747332" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:36:22.696171" elapsed="0.051263"/>
</kw>
<msg time="2026-04-19T00:36:22.747593" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:36:22.747681" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:36:22.695822" elapsed="0.051899"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:36:22.804698" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:36:22.748247" elapsed="0.056746"/>
</kw>
<msg time="2026-04-19T00:36:22.805292" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:36:22.805342" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:36:22.747887" elapsed="0.057497"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.805944" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.805544" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.805494" elapsed="0.000567"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:36:22.806688" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:36:22.806218" elapsed="0.000554"/>
</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-19T00:36:22.807090" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.806840" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.806821" elapsed="0.000377"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:36:22.807252" elapsed="0.000059"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:36:22.809133" elapsed="0.000832"/>
</kw>
<kw name="Open 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-19T00:36:22.810265" elapsed="0.000548"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:36:22.811177" elapsed="0.000492"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:36:22.808394" elapsed="0.003399"/>
</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-19T00:36:22.807650" elapsed="0.004223"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:36:22.694291" elapsed="0.117687"/>
</kw>
<msg time="2026-04-19T00:36:22.812106" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:36:22.812157" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:36:22.693573" elapsed="0.118634"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:36:22.812448" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T00:36:22.812306" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.812282" elapsed="0.000278"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.813078" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:36:22.813446" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:36:22.813529" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:36:22.692897" elapsed="0.120746"/>
</kw>
<msg time="2026-04-19T00:36:22.813742" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:36:22.813788" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "R "p "c "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:36:22.688251" elapsed="0.125576"/>
</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-19T00:36:22.814182" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:22.813907" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.813890" elapsed="0.000437"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:36:22.688116" elapsed="0.126236"/>
</iter>
<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-19T00:36:22.821155" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.820990" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.820963" elapsed="0.000282"/>
</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-19T00:36:22.822777" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:22.822636" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:22.822612" elapsed="0.000254"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:36:22.823477" level="INFO">${karaf_connection_index} = 49</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-19T00:36:22.823084" elapsed="0.000428"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:36:22.824048" 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-19T00:36:22.823732" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:36:32.825582" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:36:22.824799" elapsed="10.001762">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:36:32.826824" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:36:32.826875" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:36:22.824312" elapsed="10.002587"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:36:42.828336" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:36:32.827699" elapsed="10.001546">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:36:42.829564" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:36:42.829618" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:36:32.827201" elapsed="10.002442"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:36:42.830917" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</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-19T00:36:42.830191" elapsed="0.000792">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:36:42.829776" elapsed="0.001294">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:36:42.829740" elapsed="0.001368">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</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-19T00:36:42.831276" 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-19T00:36:42.831507" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:36:42.831365" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:36:42.831347" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:36:42.831622" elapsed="0.000016"/>
</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-19T00:36:42.833295" elapsed="0.000832"/>
</kw>
<kw name="Open 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-19T00:36:42.834426" elapsed="0.000470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:36:42.835197" elapsed="0.000359"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:36:42.832593" elapsed="0.003065"/>
</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-19T00:36:42.831956" elapsed="0.003766"/>
</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-19T00:36:22.822239" elapsed="20.013569">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T00:36:42.835917" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:36:42.835964" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Rpc Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</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-19T00:36:22.821448" elapsed="20.014631"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:36:42.836279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:42.836164" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:42.836145" elapsed="0.000199"/>
</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-19T00:36:42.837178" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:36:42.837070" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:42.837051" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:36:42.837756" 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-19T00:36:42.837866" 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-19T00:36:42.837414" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:36:42.838359" level="INFO">{1: 10, 2: 12, 3: 49}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:36:42.838083" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:36:42.838812" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:36:42.838561" elapsed="0.000296"/>
</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-19T00:36:42.839426" elapsed="0.000296"/>
</kw>
<msg time="2026-04-19T00:36:42.839829" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:36:42.839877" level="INFO">${old_connection_index} = 49</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-19T00:36:42.839016" elapsed="0.000884"/>
</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-19T00:36:42.840788" elapsed="0.000208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:36:52.842694" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:36:42.841764" elapsed="10.002026">No match found for '
' in 10 seconds
Output:
.</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-19T00:36:42.841186" elapsed="10.002738"/>
</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-19T00:36:52.844805" elapsed="0.000462"/>
</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-19T00:36:52.844228" elapsed="0.001128"/>
</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-19T00:36:42.840273" elapsed="10.005131"/>
</kw>
<status status="PASS" start="2026-04-19T00:36:42.839979" elapsed="10.005480"/>
</branch>
<status status="PASS" start="2026-04-19T00:36:42.839960" elapsed="10.005534"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:36:52.846479" level="INFO">${ip_address} = 10.30.171.206</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-19T00:36:52.846147" elapsed="0.000360"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:36:52.846561" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:36:52.846725" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:36:52.845741" elapsed="0.001010"/>
</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-19T00:36:52.846907" elapsed="0.000450"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:36:52.847654" level="INFO">index=54
host=10.30.171.206
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-19T00:36:52.847800" level="INFO">${karaf_connection_object} = index=54
host=10.30.171.206
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-19T00:36:52.847532" elapsed="0.000297"/>
</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-19T00:36:52.847992" elapsed="0.002494"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:36:52.850915" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:37:02.912395" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:36:52.850650" elapsed="10.062556">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:02.928281" elapsed="0.000542"/>
</kw>
<kw name="Open 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-19T00:37:02.928993" elapsed="0.000519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:02.929660" elapsed="0.000134"/>
</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-19T00:37:02.914776" elapsed="0.015072"/>
</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-19T00:37:02.913800" elapsed="0.016097"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:36:42.836755" elapsed="20.093235">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:02.930384" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:37:02.930462" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:36:22.820502" elapsed="40.110073">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:37:02.930699" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:37:02.930744" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:36:22.814693" elapsed="40.116075"/>
</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-19T00:37:02.931132" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:02.930859" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:02.930838" elapsed="0.000373"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:36:22.814508" elapsed="40.116728"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:36:22.585148" elapsed="40.346122"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:36:22.582780" elapsed="40.348549"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:36:22.577810" elapsed="40.353577"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:36:22.577381" elapsed="40.354053"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:36:22.574384" elapsed="40.357107"/>
</kw>
<kw name="Unregister_Rpc_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Unregister_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:02.934076" 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-19T00:37:02.933751" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:37:02.934151" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:37:02.934303" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:37:02.933031" elapsed="0.001297"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:02.969256" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:02.968770" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:37:02.970169" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:37:02.969782" elapsed="0.000566">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:37:02.970617" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:37:02.969450" elapsed="0.001193"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:02.971343" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:37:02.970805" elapsed="0.000567"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:37:02.971708" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:37:02.971871" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:37:02.971533" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:02.972342" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:02.972067" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:02.973984" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:02.973271" elapsed="0.000883"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:37:02.975163" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:37:02.974446" elapsed="0.000760"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:02.976053" elapsed="0.000051"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:02.976647" elapsed="0.000053"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:02.976995" elapsed="0.000078"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:37:02.975725" elapsed="0.001403"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:37:02.975355" elapsed="0.001869"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:37:02.977439" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:37:02.977728" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:37:02.972811" elapsed="0.004944"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:02.972461" elapsed="0.005326"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:02.977991" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:02.977812" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:02.972441" elapsed="0.005714"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:02.978785" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:02.978301" elapsed="0.000512"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:37:02.978862" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:37:02.968160" elapsed="0.010825"/>
</kw>
<msg time="2026-04-19T00:37:02.979055" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:02.955848" elapsed="0.023259"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:02.991446" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.003288" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.015029" elapsed="0.000069"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.015264" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.015435" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.015790" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.015651" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:37:03.015636" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.016002" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.016184" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.016347" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:37:03.015608" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.015508" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.016566" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.016641" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:37:03.016754" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:37:02.951709" elapsed="0.065070"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.040499" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.040057" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.041333" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:37:03.041009" elapsed="0.000488">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:37:03.041762" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:37:03.040683" elapsed="0.001105"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.042426" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:37:03.041945" elapsed="0.000509"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.042773" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:37:03.042895" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:37:03.042610" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.043354" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.043088" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:37:03.043799" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.043463" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.044560" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.044022" elapsed="0.000564"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.043882" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.043445" elapsed="0.001259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.045438" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.044893" elapsed="0.000573"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:37:03.045516" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:37:03.039435" elapsed="0.006208"/>
</kw>
<msg time="2026-04-19T00:37:03.045694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.027332" elapsed="0.018410"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.057912" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.069631" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.081498" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.081688" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.081856" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.082226" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.082088" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:37:03.082072" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.082438" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.082618" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.082784" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:37:03.082042" elapsed="0.000794"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.081928" elapsed="0.000933"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.082999" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.083090" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:37:03.083200" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:37:03.026481" elapsed="0.056744"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.084503" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:37:03.084269" elapsed="0.000297">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:37:03.084656" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:37:03.083911" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.084989" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.084749" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.085548" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.085258" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.085086" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.084731" elapsed="0.000898"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.087930" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:37:03.085773" elapsed="0.002183"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:37:03.088007" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T00:37:03.088177" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:37:03.083592" elapsed="0.004610"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.089708" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.089462" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.090156" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.089901" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.090595" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.090340" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.091023" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.090787" elapsed="0.000296"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:03.091875" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:37:03.091681" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:37:03.092240" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:37:03.092064" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.092408" elapsed="0.000209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.093009" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.092766" elapsed="0.000303"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:37:03.093111" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:37:03.093264" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:37:03.091279" elapsed="0.002010"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:37:03.127845" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0xtkt3ytftmvjpfsi1vtndb7q0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:37:03.127893" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T00:37:03.127996" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:37:03.096929" elapsed="0.031093"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.093357" elapsed="0.034738"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.128271" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.128121" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.093340" elapsed="0.035018"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.131752" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.129424" elapsed="0.002371"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.129204" elapsed="0.002626"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.129185" elapsed="0.002670"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.134447" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.132159" elapsed="0.002334"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.131912" elapsed="0.002615"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.131895" elapsed="0.002658"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.135158" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.134715" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.135489" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.135256" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.136204" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.135728" elapsed="0.000503"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.135571" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.135238" elapsed="0.001051"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.136807" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.136442" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.137153" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.136903" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.137687" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.137391" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.137235" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.136886" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.137917" elapsed="0.000368"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:37:03.138731" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.138448" elapsed="0.000309"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.138946" elapsed="0.002391"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:37:03.128708" elapsed="0.012692"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:37:03.141580" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:37:03.141473" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.141455" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.141810" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.141879" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T00:37:03.144121" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:37:03.088526" elapsed="0.055622"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:37:03.144218" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:37:03.144371" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:37:02.940576" elapsed="0.203819"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.144730" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.144498" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.144480" elapsed="0.000379"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:37:03.144893" elapsed="0.000026"/>
</return>
<arg>${UNREGISTER_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:37:02.934573" elapsed="0.210442"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister the get-constant rpc on the given node.</doc>
<status status="PASS" start="2026-04-19T00:37:02.932659" elapsed="0.212432"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.145617" elapsed="0.000235"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:37:03.145301" elapsed="0.000612"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.146428" elapsed="0.000189"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.146767" elapsed="0.000219"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:37:03.147153" elapsed="0.000152"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:37:03.147451" elapsed="0.000149"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:37:03.146115" elapsed="0.001540"/>
</kw>
<arg>${index}</arg>
<doc>Unregister global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:37:02.932300" elapsed="0.215406"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:37:02.932136" elapsed="0.215601"/>
</iter>
<iter>
<kw name="Unregister_Rpc_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.149378" level="INFO">${session} = ClusterManagement__session_2</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-19T00:37:03.149078" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:37:03.149451" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:37:03.149598" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:37:03.148723" elapsed="0.000900"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.184323" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.183862" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.185180" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:37:03.184838" elapsed="0.000519">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:37:03.185625" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:37:03.184510" elapsed="0.001140"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.186287" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:37:03.185812" elapsed="0.000502"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.186632" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:37:03.186771" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:37:03.186473" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.187272" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.186951" elapsed="0.000368"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.188868" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.188183" elapsed="0.000835"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.190074" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.189340" elapsed="0.000814"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.190983" elapsed="0.000068"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.191610" elapsed="0.000053"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.191955" elapsed="0.000048"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T00:37:03.190672" elapsed="0.001403"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.190303" elapsed="0.001867"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:37:03.192383" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:37:03.192668" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:37:03.187726" elapsed="0.004968"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.187387" elapsed="0.005340"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.192897" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.192752" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.187368" elapsed="0.005604"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.193627" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.193153" elapsed="0.000501"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:37:03.193704" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:37:03.183249" elapsed="0.010576"/>
</kw>
<msg time="2026-04-19T00:37:03.193877" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.171086" elapsed="0.022843"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.206474" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.218364" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.230225" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.230440" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.230618" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.231015" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.230869" elapsed="0.000222"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:37:03.230851" elapsed="0.000265"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.231259" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.231529" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.231697" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:37:03.230815" elapsed="0.000937"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.230702" elapsed="0.001077"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.231923" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.232002" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:37:03.232153" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:37:03.166877" elapsed="0.065303"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.256431" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.255958" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.257329" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:37:03.256953" elapsed="0.000555">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:37:03.257779" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:37:03.256620" elapsed="0.001185"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.258439" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:37:03.257968" elapsed="0.000499"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.258793" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:37:03.258941" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:37:03.258628" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.259413" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.259140" elapsed="0.000945"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:37:03.260527" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.260158" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.261323" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.260755" elapsed="0.000595"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.260612" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.260139" elapsed="0.001269"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.262022" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.261552" elapsed="0.000523"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:37:03.262127" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:37:03.255329" elapsed="0.006926"/>
</kw>
<msg time="2026-04-19T00:37:03.262309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.242971" elapsed="0.019386"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.274648" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.286706" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.298617" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.298812" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.298984" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.299362" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.299221" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:37:03.299206" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.299578" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.299775" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.299941" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:37:03.299177" elapsed="0.000817"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.299075" elapsed="0.000945"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.300180" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.300255" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:37:03.300364" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:37:03.242080" elapsed="0.058310"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:37:03.301651" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:37:03.301398" elapsed="0.000317">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:37:03.301808" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:37:03.301058" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.302169" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.301905" elapsed="0.000361"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.302771" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.302468" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.302292" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.301887" elapsed="0.000969"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.305154" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:37:03.303004" elapsed="0.002176"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:37:03.305233" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:37:03.305387" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:37:03.300719" elapsed="0.004694"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.307149" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.306727" elapsed="0.000471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.307590" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.307350" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.308074" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.307810" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.308507" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.308267" elapsed="0.000284"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:03.309363" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:37:03.309165" elapsed="0.000225"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:37:03.309712" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:37:03.309538" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.309883" elapsed="0.000225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.310510" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.310262" elapsed="0.000293"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:37:03.310598" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:37:03.310752" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:37:03.308748" elapsed="0.002030"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:37:03.340122" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01revv2toir9ik1kxh50zkqtdgm0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:37:03.340168" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T00:37:03.340259" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:37:03.313079" elapsed="0.027206"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.310847" elapsed="0.029484"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.340508" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.340358" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.310830" elapsed="0.029767"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.343934" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.341631" elapsed="0.002349"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.341411" elapsed="0.002605"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.341393" elapsed="0.002674"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.346625" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.344343" elapsed="0.002329"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.344125" elapsed="0.002581"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.344108" elapsed="0.002623"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.347285" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.346889" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.347653" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.347383" elapsed="0.000330"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.348390" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.348086" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.347737" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.347365" elapsed="0.001111"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.348992" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.348630" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.349339" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.349110" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.349871" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:03.349574" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.349420" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.349092" elapsed="0.000861"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.350114" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:37:03.350894" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.350620" elapsed="0.000300"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.351088" elapsed="0.002284"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:37:03.340952" elapsed="0.012481"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:37:03.353610" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:37:03.353505" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.353486" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.353836" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.353903" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:37:03.356157" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:37:03.305737" elapsed="0.050446"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:37:03.356252" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:37:03.356404" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:37:03.156072" elapsed="0.200357"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.356760" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.356532" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.356515" elapsed="0.000335"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:37:03.356883" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:37:03.150101" elapsed="0.206903"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister the get-constant rpc on the given node.</doc>
<status status="PASS" start="2026-04-19T00:37:03.148360" elapsed="0.208728"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.357613" elapsed="0.000266"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:37:03.357299" elapsed="0.000640"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.358492" elapsed="0.000189"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:03.358828" elapsed="0.000185"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:37:03.359180" elapsed="0.000150"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:37:03.359472" elapsed="0.000148"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:37:03.358178" elapsed="0.001497"/>
</kw>
<arg>${index}</arg>
<doc>Unregister global rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:37:03.147983" elapsed="0.211742"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:37:03.147823" elapsed="0.211933"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:37:02.931973" elapsed="0.427814"/>
</for>
<arg>${INSTALLED_RPC_MEMEBER_IDX_LIST}</arg>
<doc>Unregister global rpc on given nodes of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:37:02.931735" elapsed="0.428105"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.361128" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.360736" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.360718" elapsed="0.000495"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.361353" elapsed="0.000494"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.366666" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:37:03.366243" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T00:37:03.366910" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:37:03.366767" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.366749" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.367150" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.367319" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.367487" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.367647" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.367807" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.367966" elapsed="0.000045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:03.368175" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:37:03.365925" elapsed="0.002325"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:03.360524" elapsed="0.007776"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:37:03.360169" elapsed="0.008172"/>
</kw>
<doc>Inregister rpc on both nodes.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:36:22.573899" elapsed="40.794480"/>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T00:37:03.369133" elapsed="0.000306"/>
</kw>
<doc>DOMRpcBroker testing: RPC Provider Partition And Heal

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

This tests establishes that the RPC service operates correctly when faced
with node failures.
This suite supports more than three node cluster setup too.</doc>
<status status="FAIL" start="2026-04-19T00:23:02.528666" elapsed="840.840810"/>
</suite>
<suite id="s1-s5" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.475603" 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-19T00:37:03.471139" elapsed="0.004569"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T00:37:03.470863" elapsed="0.004910"/>
</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-19T00:37:03.481021" 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-19T00:37:03.476897" elapsed="0.004165"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T00:37:03.481249" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:03.481145" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.481123" elapsed="0.000191"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.481804" 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-19T00:37:03.481466" elapsed="0.000381"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.482339" level="INFO">${cluster_size} = 3</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-19T00:37:03.482009" elapsed="0.000356"/>
</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-19T00:37:03.482868" elapsed="0.000300"/>
</kw>
<msg time="2026-04-19T00:37:03.483264" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:37:03.483312" level="INFO">${possibly_int_of_members} = 3</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-19T00:37:03.482532" elapsed="0.000803"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.483871" level="INFO">${int_of_members} = 3</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-19T00:37:03.483505" elapsed="0.000392"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.484897" 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-19T00:37:03.484630" elapsed="0.000294"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.485343" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:37:03.485089" elapsed="0.000281"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.485822" 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-19T00:37:03.485527" elapsed="0.000322"/>
</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-19T00:37:03.489027" elapsed="0.000224"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.489734" level="INFO">${member_ip} = 10.30.171.9</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-19T00:37:03.489410" elapsed="0.000351"/>
</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-19T00:37:03.489913" elapsed="0.000247"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.490947" 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-19T00:37:03.490653" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:37:03.491020" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T00:37:03.491197" 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-19T00:37:03.490356" elapsed="0.000866"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:37:03.491802" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7565950&gt;, timeout=125, 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-19T00:37:03.491378" elapsed="0.000556"/>
</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-19T00:37:03.492113" elapsed="0.000424"/>
</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-19T00:37:03.488436" elapsed="0.004189"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:37:03.488249" elapsed="0.004430"/>
</iter>
<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-19T00:37:03.493525" elapsed="0.000194"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.494364" level="INFO">${member_ip} = 10.30.171.128</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-19T00:37:03.493876" elapsed="0.000520"/>
</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-19T00:37:03.494550" elapsed="0.000244"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.495654" level="INFO">${session} = ClusterManagement__session_2</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-19T00:37:03.495358" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:37:03.495726" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:37:03.495878" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T00:37:03.495063" elapsed="0.000840"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:37:03.496481" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f753c650&gt;, timeout=125, 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-19T00:37:03.496074" elapsed="0.000512"/>
</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-19T00:37:03.496779" elapsed="0.000189"/>
</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-19T00:37:03.492950" elapsed="0.004077"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:37:03.492768" elapsed="0.004320"/>
</iter>
<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-19T00:37:03.497907" elapsed="0.000204"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.498594" level="INFO">${member_ip} = 10.30.171.206</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-19T00:37:03.498268" elapsed="0.000352"/>
</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-19T00:37:03.498771" elapsed="0.000219"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.499789" level="INFO">${session} = ClusterManagement__session_3</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-19T00:37:03.499491" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:37:03.499860" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:37:03.500010" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T00:37:03.499198" elapsed="0.000854"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:37:03.500627" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f724d310&gt;, timeout=125, 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-19T00:37:03.500207" elapsed="0.000524"/>
</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-19T00:37:03.500891" elapsed="0.000205"/>
</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-19T00:37:03.497352" elapsed="0.003803"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:37:03.497174" elapsed="0.004026"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T00:37:03.485903" elapsed="0.015327"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.501782" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T00:37:03.501390" elapsed="0.000434"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.502386" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T00:37:03.501985" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.502956" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T00:37:03.502587" elapsed="0.000412"/>
</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-19T00:37:03.484159" elapsed="0.018920"/>
</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-19T00:37:03.476543" elapsed="0.026594"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:37:03.503334" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:03.503206" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.503186" elapsed="0.000250"/>
</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-19T00:37:03.506782" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:37:03.506407" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.507289" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:37:03.506967" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:37:03.507358" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:37:03.507511" level="INFO">${index_list} = [1, 2, 3]</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-19T00:37:03.506080" elapsed="0.001455"/>
</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-19T00:37:03.508518" level="INFO">${member_ip} = 10.30.171.9</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-19T00:37:03.508255" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:03.509328" 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-19T00:37:03.509427" 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-19T00:37:03.509162" elapsed="0.000290"/>
</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-19T00:37:03.512182" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:03.511835" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:03.511816" elapsed="0.000556"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:03.512649" 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-19T00:37:03.512800" 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-19T00:37:03.512521" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.513887" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:03.512979" elapsed="0.000956"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:03.514738" 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-19T00:37:03.514109" elapsed="0.000656"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:37:03.516072" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:37:03.516279" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:37:03.515511" elapsed="0.000818"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.516606" elapsed="0.000639"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:37:03.518833" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:37:04.120856" 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 Sun Apr 19 00:37:03 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:23:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:37:03.518437" elapsed="0.602669"/>
</kw>
<msg time="2026-04-19T00:37:04.121218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.517564" elapsed="0.603834"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:37:03.514979" elapsed="0.606748"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.122328" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:37:04.134962" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:37:04.135223" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:37:04.135288" 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-19T00:37:04.121982" elapsed="0.013340"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:04.135581" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.137178" 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-19T00:37:04.136274" elapsed="0.001012"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:04.137789" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:04.137458" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:04.137408" elapsed="0.000539"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:37:04.138388" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T00:37:04.138102" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:04.138064" elapsed="0.000519"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:04.138658" 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-19T00:37:04.145021" elapsed="0.000750"/>
</kw>
<kw name="Open 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-19T00:37:04.145997" elapsed="0.000424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:04.146609" elapsed="0.000189"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:04.139380" elapsed="0.007501"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:37:03.511351" elapsed="0.635623"/>
</kw>
<msg time="2026-04-19T00:37:04.147043" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:03.510670" elapsed="0.636429"/>
</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-19T00:37:03.510122" elapsed="0.637057"/>
</kw>
<msg time="2026-04-19T00:37:04.147220" 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-19T00:37:03.509607" elapsed="0.637657"/>
</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-19T00:37:04.150162" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:37:04.150631" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:04.150921" 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-19T00:37:04.147553" elapsed="0.003532"/>
</kw>
<msg time="2026-04-19T00:37:04.151175" 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-19T00:37:03.508790" elapsed="0.642411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.151623" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:04.151378" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:37:04.151753" elapsed="0.000036"/>
</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-19T00:37:03.507887" elapsed="0.644000"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:37:03.507714" elapsed="0.644211"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:04.152851" level="INFO">${member_ip} = 10.30.171.128</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-19T00:37:04.152579" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.153714" 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-19T00:37:04.153813" 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-19T00:37:04.153578" elapsed="0.000261"/>
</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-19T00:37:04.156672" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:04.156368" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:04.156348" elapsed="0.000513"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.157201" 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-19T00:37:04.157323" 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-19T00:37:04.157012" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.158413" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:04.157501" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.159271" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:37:04.158617" elapsed="0.000681"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.160617" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:37:04.160814" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:37:04.160077" elapsed="0.000786"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:04.161154" elapsed="0.000591"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.163207" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:37:04.790099" 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 Sun Apr 19 00:37:04 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:23:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:37:04.162803" elapsed="0.627510"/>
</kw>
<msg time="2026-04-19T00:37:04.790417" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:04.162090" elapsed="0.628542"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:37:04.159513" elapsed="0.631382"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.791533" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:37:04.803954" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:37:04.804366" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:37:04.804468" 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-19T00:37:04.791182" elapsed="0.013339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:04.804951" elapsed="0.000539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.807303" 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-19T00:37:04.805986" elapsed="0.001428"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:04.807946" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:04.807595" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:04.807543" elapsed="0.000722"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:37:04.808697" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T00:37:04.808398" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:04.808362" elapsed="0.000526"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:04.808962" 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-19T00:37:04.815144" elapsed="0.000746"/>
</kw>
<kw name="Open 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-19T00:37:04.816157" elapsed="0.000417"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:04.816765" elapsed="0.000193"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:04.809701" elapsed="0.007377"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:37:04.155868" elapsed="0.661308"/>
</kw>
<msg time="2026-04-19T00:37:04.817232" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:04.155212" elapsed="0.662071"/>
</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-19T00:37:04.154705" elapsed="0.662658"/>
</kw>
<msg time="2026-04-19T00:37:04.817403" 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-19T00:37:04.153993" elapsed="0.663455"/>
</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-19T00:37:04.820439" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:37:04.820924" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:04.821248" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:04.817739" elapsed="0.003661"/>
</kw>
<msg time="2026-04-19T00:37:04.821499" 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-19T00:37:04.153215" elapsed="0.668314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.821985" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:04.821730" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:37:04.822090" 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-19T00:37:04.152219" elapsed="0.669996"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:37:04.152019" elapsed="0.670233"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:04.824538" level="INFO">${member_ip} = 10.30.171.206</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-19T00:37:04.823781" elapsed="0.000832"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.826674" 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-19T00:37:04.826907" 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-19T00:37:04.826299" elapsed="0.000668"/>
</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-19T00:37:04.832481" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:04.832116" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:04.832087" elapsed="0.000591"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.832972" 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-19T00:37:04.833114" 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-19T00:37:04.832835" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.834368" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:04.833391" elapsed="0.001027"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.835269" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:37:04.834581" elapsed="0.000715"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:37:04.836648" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:37:04.836846" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:37:04.836090" elapsed="0.000805"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:04.837196" elapsed="0.000611"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:37:04.839580" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:37:05.434761" 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 Sun Apr 19 00:37:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:23:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:37:04.839182" elapsed="0.595809"/>
</kw>
<msg time="2026-04-19T00:37:05.435131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:04.838148" elapsed="0.597158"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:37:04.835537" elapsed="0.600014"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.436166" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:37:05.448851" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:37:05.449258" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:37:05.449363" 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-19T00:37:05.435818" elapsed="0.013600"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.449791" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.451844" 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-19T00:37:05.450725" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:05.452508" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:05.452161" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.452107" elapsed="0.000560"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:37:05.453099" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T00:37:05.452786" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.452752" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:05.453415" 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-19T00:37:05.457900" elapsed="0.001022"/>
</kw>
<kw name="Open 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-19T00:37:05.459285" elapsed="0.000557"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.460131" elapsed="0.000269"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:05.453969" elapsed="0.006546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:37:04.831391" elapsed="0.629256"/>
</kw>
<msg time="2026-04-19T00:37:05.460796" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:04.829752" elapsed="0.631117"/>
</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-19T00:37:04.828625" elapsed="0.632357"/>
</kw>
<msg time="2026-04-19T00:37:05.461063" 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-19T00:37:04.827358" elapsed="0.633770"/>
</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-19T00:37:05.464259" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:37:05.464738" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.465051" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:05.461590" elapsed="0.003614"/>
</kw>
<msg time="2026-04-19T00:37:05.465306" 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-19T00:37:04.825417" elapsed="0.639915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.465763" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:05.465509" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:37:05.465848" 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-19T00:37:04.822524" elapsed="0.643448"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:37:04.822342" elapsed="0.643668"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:37:03.507586" elapsed="1.958475"/>
</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-19T00:37:03.503660" elapsed="1.962461"/>
</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-19T00:37:05.466277" elapsed="0.000211"/>
</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-19T00:37:05.480818" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:05.480706" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.480686" elapsed="0.000203"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.481197" 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-19T00:37:05.481300" 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-19T00:37:05.481060" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.481756" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:05.481491" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.482217" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:05.481953" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:05.483005" 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-19T00:37:05.482783" elapsed="0.000350">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T00:37:05.483239" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:37:05.483285" 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-19T00:37:05.482419" elapsed="0.000890"/>
</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-19T00:37:05.483607" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:05.483384" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.483366" elapsed="0.000339"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:05.484462" level="INFO">${ip_address} = 10.30.171.9</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-19T00:37:05.484195" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:37:05.484537" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:37:05.484689" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:37:05.483903" elapsed="0.000849"/>
</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-19T00:37:05.484911" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.485629" level="INFO">index=10
host=10.30.171.9
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-19T00:37:05.485729" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.485523" 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-19T00:37:05.485904" elapsed="0.002375"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.488700" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:37:05.675859" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:37:05.488442" elapsed="0.187577"/>
</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-19T00:37:05.680085" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:37:05.680569" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.680889" 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-19T00:37:05.677220" elapsed="0.003842"/>
</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-19T00:37:05.676471" elapsed="0.004638"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.480422" elapsed="0.200738"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:37:05.467278" elapsed="0.213933"/>
</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-19T00:37:05.466827" elapsed="0.214439"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:37:05.466688" elapsed="0.214620"/>
</iter>
<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-19T00:37:05.695237" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:05.695115" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.695089" elapsed="0.000227"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.695613" 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-19T00:37:05.695723" 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-19T00:37:05.695474" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.696186" 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-19T00:37:05.695902" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.696622" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:05.696381" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:05.697432" level="FAIL">Dictionary does not contain key '2'.</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-19T00:37:05.697197" elapsed="0.000346">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T00:37:05.697650" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:37:05.697769" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T00:37:05.696821" elapsed="0.000974"/>
</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-19T00:37:05.698113" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:05.697873" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.697854" elapsed="0.000386"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:05.698982" level="INFO">${ip_address} = 10.30.171.128</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-19T00:37:05.698716" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:37:05.699074" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:37:05.699233" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:37:05.698443" elapsed="0.000815"/>
</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-19T00:37:05.699411" elapsed="0.000401"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.700103" level="INFO">index=12
host=10.30.171.128
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-19T00:37:05.700202" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T00:37:05.699979" 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-19T00:37:05.700374" elapsed="0.002513"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.703325" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:37:05.911163" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:37:05.703065" elapsed="0.208280"/>
</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-19T00:37:05.918469" 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-19T00:37:05.919594" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.919950" 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-19T00:37:05.913145" elapsed="0.006974"/>
</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-19T00:37:05.911912" elapsed="0.008253"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:37:05.694803" elapsed="0.225413"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:37:05.681928" elapsed="0.238332"/>
</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-19T00:37:05.681557" elapsed="0.238753"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:37:05.681415" elapsed="0.238934"/>
</iter>
<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-19T00:37:05.934087" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:05.933958" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.933940" elapsed="0.000217"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.934487" 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-19T00:37:05.934590" 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-19T00:37:05.934352" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.935066" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:05.934770" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:05.935514" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:05.935269" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:05.936305" level="FAIL">Dictionary does not contain key '3'.</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-19T00:37:05.936088" elapsed="0.000309">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T00:37:05.936501" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:37:05.936546" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T00:37:05.935714" elapsed="0.000856"/>
</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-19T00:37:05.936866" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:05.936645" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:05.936626" elapsed="0.000337"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:05.937904" level="INFO">${ip_address} = 10.30.171.206</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-19T00:37:05.937631" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:37:05.937979" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:37:05.938154" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:37:05.937178" elapsed="0.001001"/>
</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-19T00:37:05.938333" elapsed="0.000392"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.938997" level="INFO">index=14
host=10.30.171.206
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-19T00:37:05.939143" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T00:37:05.938892" elapsed="0.000279"/>
</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-19T00:37:05.939320" elapsed="0.002353"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:37:05.942108" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:37:16.005227" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:05.941835" elapsed="10.064297">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:16.009996" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:37:16.010515" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:16.010830" 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-19T00:37:16.007389" elapsed="0.003596"/>
</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-19T00:37:16.006667" elapsed="0.004380"/>
</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-19T00:37:05.933683" elapsed="10.077450">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:37:16.011233" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:05.920949" elapsed="10.090377">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:05.920581" elapsed="10.090894"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:37:05.920441" elapsed="10.091084"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T00:37:05.466544" elapsed="10.545019"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T00:37:03.476080" elapsed="12.535544"/>
</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-19T00:37:16.014409" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.014291" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.014268" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:37:16.019484" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.019376" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.019358" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:16.020539" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:37:16.020147" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:16.021043" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:37:16.020725" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:37:16.021116" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:37:16.021273" level="INFO">${index_list} = [1, 2, 3]</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-19T00:37:16.019795" elapsed="0.001503"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:37:16.026793" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.026686" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.026667" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:37:16.027898" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.027792" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.027774" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:16.028414" 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-19T00:37:16.028122" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:16.028789" 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-19T00:37:16.028598" elapsed="0.000217"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:37:16.069936" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:37:16.029338" elapsed="0.040771"/>
</kw>
<msg time="2026-04-19T00:37:16.070220" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:37:16.070267" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.028971" elapsed="0.041332"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:37:16.127409" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:37:16.070839" elapsed="0.056744"/>
</kw>
<msg time="2026-04-19T00:37:16.127685" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:37:16.127729" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.070478" elapsed="0.057287"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:16.128093" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:16.127841" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.127821" elapsed="0.000402"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:16.128660" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:16.128370" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:16.129231" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:16.128820" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.128801" elapsed="0.000509"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:37:16.129344" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:16.130607" elapsed="0.000583"/>
</kw>
<kw name="Open 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-19T00:37:16.131488" elapsed="0.000445"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:16.132213" elapsed="0.000190"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:16.130187" elapsed="0.002347"/>
</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-19T00:37:16.129614" elapsed="0.002969"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:37:16.027543" elapsed="0.105137"/>
</kw>
<msg time="2026-04-19T00:37:16.132770" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:37:16.132814" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.027011" elapsed="0.105841"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:37:16.133055" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:37:16.132926" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.132908" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:16.133535" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:16.133869" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:37:16.133940" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:37:16.026397" elapsed="0.107665"/>
</kw>
<msg time="2026-04-19T00:37:16.134155" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:37:16.134211" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.021665" elapsed="0.112583"/>
</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-19T00:37:16.134578" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:16.134323" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.134305" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:37:16.021524" elapsed="0.113153"/>
</iter>
<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-19T00:37:16.140335" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.140217" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.140195" elapsed="0.000213"/>
</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-19T00:37:16.141593" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.141486" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.141468" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:16.142099" level="INFO">${karaf_connection_index} = 12</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-19T00:37:16.141804" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:16.142546" 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-19T00:37:16.142347" elapsed="0.000226"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:37:16.183295" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:37:16.143094" elapsed="0.040333"/>
</kw>
<msg time="2026-04-19T00:37:16.183526" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:37:16.183572" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.142733" elapsed="0.040877"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:37:16.254328" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:37:16.184166" elapsed="0.070371"/>
</kw>
<msg time="2026-04-19T00:37:16.254644" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:37:16.254688" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.183802" elapsed="0.070923"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:16.255049" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:16.254801" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.254782" elapsed="0.000347"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:16.255551" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:16.255274" elapsed="0.000369"/>
</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-19T00:37:16.255922" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:16.255709" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.255691" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:37:16.256046" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:16.257513" elapsed="0.000597"/>
</kw>
<kw name="Open 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-19T00:37:16.258442" elapsed="0.000445"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:16.259168" elapsed="0.000192"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:16.256876" elapsed="0.002615"/>
</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-19T00:37:16.256329" elapsed="0.003211"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:37:16.141232" elapsed="0.118407"/>
</kw>
<msg time="2026-04-19T00:37:16.259731" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:37:16.259776" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.140572" elapsed="0.119241"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:37:16.259998" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:37:16.259889" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.259871" elapsed="0.000234"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:16.260502" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:37:16.260843" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:37:16.260951" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:37:16.139859" elapsed="0.121224"/>
</kw>
<msg time="2026-04-19T00:37:16.261177" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:37:16.261220" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:37:16.134940" elapsed="0.126317"/>
</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-19T00:37:16.261580" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:16.261332" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.261314" elapsed="0.000342"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:37:16.134796" elapsed="0.126882"/>
</iter>
<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-19T00:37:16.267067" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.266941" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.266922" elapsed="0.000213"/>
</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-19T00:37:16.268229" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:16.268121" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:16.268020" elapsed="0.000275"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:16.268689" level="INFO">${karaf_connection_index} = 14</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-19T00:37:16.268438" elapsed="0.000277"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:16.269080" 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-19T00:37:16.268870" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:37:26.270352" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:37:16.269598" elapsed="10.001488">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:37:26.271289" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:37:26.271339" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:37:16.269265" elapsed="10.002099"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:37:36.272823" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:37:26.272164" elapsed="10.001298">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:37:36.273664" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:37:36.273713" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:37:26.271666" elapsed="10.002072"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:37:36.274926" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T00:37:36.274258" elapsed="0.000738">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:37:36.273865" elapsed="0.001226">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:37:36.273832" elapsed="0.001303">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T00:37:36.275303" 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-19T00:37:36.275792" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:36.275391" elapsed="0.000455"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:37:36.275374" elapsed="0.000496"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:37:36.275905" 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-19T00:37:36.277265" elapsed="0.000580"/>
</kw>
<kw name="Open 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-19T00:37:36.278255" elapsed="0.000466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:36.278992" elapsed="0.000218"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:36.276807" elapsed="0.002538"/>
</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-19T00:37:36.276226" elapsed="0.003168"/>
</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-19T00:37:16.267790" elapsed="20.011687">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T00:37:36.279581" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:37:36.279627" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T00:37:16.267284" elapsed="20.012367"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:37:36.279837" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:36.279728" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:36.279710" elapsed="0.000193"/>
</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-19T00:37:36.280676" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:36.280571" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:36.280554" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:36.281052" 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-19T00:37:36.281157" 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-19T00:37:36.280894" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:36.281603" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:36.281336" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:36.282083" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:36.281797" elapsed="0.000330"/>
</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-19T00:37:36.282648" elapsed="0.000222"/>
</kw>
<msg time="2026-04-19T00:37:36.282966" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:37:36.283012" level="INFO">${old_connection_index} = 14</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-19T00:37:36.282285" elapsed="0.000765"/>
</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-19T00:37:36.283856" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:37:46.285668" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:37:36.284852" elapsed="10.002476">No match found for '
' in 10 seconds
Output:
.</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-19T00:37:36.284277" elapsed="10.003248"/>
</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-19T00:37:46.288483" elapsed="0.000418"/>
</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-19T00:37:46.287830" elapsed="0.001217"/>
</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-19T00:37:36.283345" elapsed="10.005756"/>
</kw>
<status status="PASS" start="2026-04-19T00:37:36.283125" elapsed="10.006028"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:36.283107" elapsed="10.006083"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:46.290096" level="INFO">${ip_address} = 10.30.171.206</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-19T00:37:46.289785" elapsed="0.000338"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:37:46.290177" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:37:46.290340" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:37:46.289440" elapsed="0.000925"/>
</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-19T00:37:46.290531" elapsed="0.000436"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:46.291426" level="INFO">index=19
host=10.30.171.206
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-19T00:37:46.291530" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T00:37:46.291298" elapsed="0.000258"/>
</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-19T00:37:46.291712" elapsed="0.002934"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:37:46.295100" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:37:56.364073" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:46.294817" elapsed="10.070093">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:56.368754" elapsed="0.000643"/>
</kw>
<kw name="Open 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-19T00:37:56.369567" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:56.369887" 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-19T00:37:56.366150" elapsed="0.003911"/>
</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-19T00:37:56.365431" elapsed="0.004679"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:37:36.280327" elapsed="20.089867">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:56.370564" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:37:56.370642" elapsed="0.000020"/>
</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-19T00:37:16.266651" elapsed="40.104101">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:37:56.370873" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:37:56.370918" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:37:16.261940" elapsed="40.109001"/>
</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-19T00:37:56.371319" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:56.371029" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:56.371005" elapsed="0.000392"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:37:16.261801" elapsed="40.109625"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:37:16.021353" elapsed="40.350107"/>
</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-19T00:37:16.019082" elapsed="40.352440"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T00:37:16.012264" elapsed="40.359317"/>
</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-19T00:37:16.011792" elapsed="40.359833"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T00:37:03.470529" elapsed="52.901148"/>
</kw>
<test id="s1-s5-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:56.377714" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:37:56.377322" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:56.378223" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:37:56.377901" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:37:56.378293" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:37:56.378452" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T00:37:56.376870" elapsed="0.001607"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:37:56.379623" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:37:56.379227" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:56.380133" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:37:56.379808" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:37:56.380210" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:37:56.380364" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T00:37:56.378825" elapsed="0.001563"/>
</kw>
<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-19T00:37:56.381827" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:37:56.381455" elapsed="0.000398"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:56.382328" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:37:56.382010" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:37:56.382399" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:37:56.382550" level="INFO">${index_list} = [1, 2, 3]</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-19T00:37:56.381088" elapsed="0.001486"/>
</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-19T00:37:56.383667" level="INFO">${member_ip} = 10.30.171.9</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-19T00:37:56.383392" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:56.384482" 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-19T00:37:56.384582" 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-19T00:37:56.384335" elapsed="0.000273"/>
</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-19T00:37:56.388738" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:56.388417" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:56.388390" elapsed="0.000432"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:56.389125" 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-19T00:37:56.389227" 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-19T00:37:56.388973" elapsed="0.000280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:56.389891" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:56.389405" elapsed="0.000533"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:56.390538" 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-19T00:37:56.390112" elapsed="0.000453"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:37:56.391850" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:37:56.391985" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:37:56.391234" elapsed="0.000776"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:56.392230" elapsed="0.000732"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:37:56.395329" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:37:56.713983" 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 Sun Apr 19 00:37:03 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:37:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:37:56.394709" elapsed="0.319626"/>
</kw>
<msg time="2026-04-19T00:37:56.714477" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:56.393227" elapsed="0.321438"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:37:56.390780" elapsed="0.324068"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:37:56.715386" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T00:37:57.096510" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:37:57.096843" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:37:57.096948" 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-19T00:37:56.715120" elapsed="0.382044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:57.097646" elapsed="0.000594"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.099411" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:57.098669" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:57.099980" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:57.099684" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:57.099630" 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-19T00:37:57.100546" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T00:37:57.100308" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:57.100274" elapsed="0.000467"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:57.100818" 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-19T00:37:57.119369" elapsed="0.000554"/>
</kw>
<kw name="Open 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-19T00:37:57.120109" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:57.120431" 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-19T00:37:57.101575" elapsed="0.019010"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:37:56.386405" elapsed="0.734273"/>
</kw>
<msg time="2026-04-19T00:37:57.120735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:56.385812" elapsed="0.734978"/>
</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-19T00:37:56.385284" elapsed="0.735585"/>
</kw>
<msg time="2026-04-19T00:37:57.120910" 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-19T00:37:56.384764" elapsed="0.736191"/>
</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-19T00:37:57.124263" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T00:37:57.124753" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:57.125429" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:57.121600" elapsed="0.003983"/>
</kw>
<msg time="2026-04-19T00:37:57.125676" 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-19T00:37:56.383909" elapsed="0.741793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.126156" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:57.125888" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:37:57.126241" 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-19T00:37:56.382934" elapsed="0.743432"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:37:56.382760" elapsed="0.743642"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:57.127376" level="INFO">${member_ip} = 10.30.171.128</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-19T00:37:57.127104" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.128255" 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-19T00:37:57.128355" 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-19T00:37:57.128119" elapsed="0.000262"/>
</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-19T00:37:57.131234" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:57.130940" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:57.130921" elapsed="0.000397"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.131592" 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-19T00:37:57.131692" 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-19T00:37:57.131466" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.132369" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:57.131868" elapsed="0.000548"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.132988" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:37:57.132571" elapsed="0.000444"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.134288" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:37:57.134422" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:37:57.133705" elapsed="0.000742"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:57.134637" elapsed="0.000738"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.137899" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:37:57.463810" 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 Sun Apr 19 00:37:04 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:37:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:37:57.137268" elapsed="0.326812"/>
</kw>
<msg time="2026-04-19T00:37:57.464222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:57.135613" elapsed="0.328795"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:37:57.133250" elapsed="0.331345"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.465149" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T00:37:57.825935" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:37:57.826361" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:37:57.826463" 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-19T00:37:57.464849" elapsed="0.361669"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:57.826986" elapsed="0.000615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.828779" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:57.828020" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:57.829399" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:57.829097" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:57.829002" elapsed="0.000556"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:37:57.829949" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T00:37:57.829678" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:57.829644" elapsed="0.000669"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:57.830397" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:57.848217" elapsed="0.000553"/>
</kw>
<kw name="Open 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-19T00:37:57.848938" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:57.849271" 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-19T00:37:57.831154" elapsed="0.018314"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:37:57.130411" elapsed="0.719152"/>
</kw>
<msg time="2026-04-19T00:37:57.849619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:57.129804" elapsed="0.719872"/>
</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-19T00:37:57.129235" elapsed="0.720520"/>
</kw>
<msg time="2026-04-19T00:37:57.849796" 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-19T00:37:57.128535" elapsed="0.721306"/>
</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-19T00:37:57.853240" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:37:57.853713" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:57.854001" elapsed="0.000159"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:57.850205" elapsed="0.004009"/>
</kw>
<msg time="2026-04-19T00:37:57.854313" 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-19T00:37:57.127685" elapsed="0.726653"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.854773" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:57.854526" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:37:57.854856" 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-19T00:37:57.126678" elapsed="0.728304"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:37:57.126497" elapsed="0.728523"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:57.856221" level="INFO">${member_ip} = 10.30.171.206</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-19T00:37:57.855880" elapsed="0.000371"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.857145" 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-19T00:37:57.857263" 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-19T00:37:57.856968" elapsed="0.000331"/>
</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-19T00:37:57.860290" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:57.859987" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:57.859968" elapsed="0.000403"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.860643" 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-19T00:37:57.860742" 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-19T00:37:57.860516" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.861408" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:57.860917" elapsed="0.000581"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.862100" 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-19T00:37:57.861658" elapsed="0.000470"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:37:57.863422" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:37:57.863554" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:37:57.862802" elapsed="0.000777"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:57.863768" elapsed="0.000736"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:37:57.866837" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:37:58.186472" 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 Sun Apr 19 00:37:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:37:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:37:57.866217" elapsed="0.320479"/>
</kw>
<msg time="2026-04-19T00:37:58.186829" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:57.864738" elapsed="0.322274"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:37:57.862363" elapsed="0.324875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:37:58.187730" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T00:37:58.537194" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T00:37:58.537560" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:37:58.537694" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:37:58.187474" elapsed="0.350278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:58.538253" elapsed="0.000563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.539991" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:58.539274" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:58.540611" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:58.540314" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:58.540264" 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-19T00:37:58.541190" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:37:58.540887" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:58.540852" elapsed="0.000541"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:58.541470" 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-19T00:37:58.559972" elapsed="0.000569"/>
</kw>
<kw name="Open 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-19T00:37:58.560708" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:58.561022" elapsed="0.000131"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:58.542261" elapsed="0.018947"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:37:57.859457" elapsed="0.701842"/>
</kw>
<msg time="2026-04-19T00:37:58.561354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:57.858844" elapsed="0.702565"/>
</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-19T00:37:57.857973" elapsed="0.703515"/>
</kw>
<msg time="2026-04-19T00:37:58.561628" 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-19T00:37:57.857461" elapsed="0.704215"/>
</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-19T00:37:58.565007" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:37:58.565510" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:58.565801" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:37:58.562000" elapsed="0.003962"/>
</kw>
<msg time="2026-04-19T00:37:58.566278" 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-19T00:37:57.856502" elapsed="0.709805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.566743" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:58.566495" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:37:58.566827" 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-19T00:37:57.855468" elapsed="0.711484"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:37:57.855285" elapsed="0.711703"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:37:56.382629" elapsed="2.184394"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T00:37:56.380593" elapsed="2.186506"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.567566" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:37:58.567257" elapsed="0.000334"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:37:58.567753" elapsed="0.000225"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T00:37:58.568171" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:58.568065" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:58.568034" elapsed="0.000202"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.570174" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:37:58.569836" elapsed="0.000365"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:37:58.571086" level="INFO">${member_ip} = 10.30.171.9</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-19T00:37:58.570799" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:58.571863" 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-19T00:37:58.571962" 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-19T00:37:58.571731" elapsed="0.000258"/>
</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-19T00:37:58.576030" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:37:58.575394" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:58.575338" elapsed="0.000855"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:58.577912" 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-19T00:37:58.578256" 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-19T00:37:58.577426" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.580109" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:58.579532" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:37:58.582415" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:37:58.581361" elapsed="0.001168"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.585371" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:37:58.585449" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:37:58.585096" 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-19T00:37:58.585691" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:37:58.586984" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:37:58.893278" 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 Sun Apr 19 00:37:03 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:37:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:37:58.586663" elapsed="0.306787"/>
</kw>
<msg time="2026-04-19T00:37:58.893536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:58.586304" elapsed="0.307319"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:37:58.584251" elapsed="0.309688"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:37:58.895674" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:37:58.918232" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:37:58.918780" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:37:58.919215" 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-19T00:37:58.895251" elapsed="0.024212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:58.922181" elapsed="0.000637"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.924418" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:58.923725" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:58.925248" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:37:58.924835" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:58.924741" elapsed="0.000709"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:37:58.926022" elapsed="0.000161"/>
</return>
<status status="PASS" start="2026-04-19T00:37:58.925677" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T00:37:58.925599" elapsed="0.000747"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:37:58.926470" elapsed="0.000059"/>
</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-19T00:37:58.932679" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:37:58.933423" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:58.933792" 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-19T00:37:58.928639" elapsed="0.005385"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:37:58.573862" elapsed="0.360427"/>
</kw>
<msg time="2026-04-19T00:37:58.934650" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:37:58.573211" elapsed="0.361495"/>
</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-19T00:37:58.572665" elapsed="0.362120"/>
</kw>
<msg time="2026-04-19T00:37:58.934827" 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-19T00:37:58.572160" elapsed="0.362712"/>
</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-19T00:37:58.937909" 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-19T00:37:58.938465" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:37:58.938762" 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-19T00:37:58.935182" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:37:58.938998" level="INFO">${output} = 1</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-19T00:37:58.571329" elapsed="0.367694"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.939472" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:37:58.939222" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:37:58.939557" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:37:58.939708" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:37:58.570399" elapsed="0.369334"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:37:58.939780" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:37:58.939924" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:37:58.569498" elapsed="0.370450"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:37:58.940529" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:37:58.940132" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:37:58.569108" elapsed="0.371608">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:00.944306" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:00.943456" elapsed="0.000923"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:00.946456" level="INFO">${member_ip} = 10.30.171.9</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-19T00:38:00.945805" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:00.948415" 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-19T00:38:00.948527" 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-19T00:38:00.948064" elapsed="0.000491"/>
</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-19T00:38:00.952968" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:00.952440" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:00.952143" elapsed="0.001012"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:00.954840" 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-19T00:38:00.955137" 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-19T00:38:00.954324" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:00.957375" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:00.956766" elapsed="0.000735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:00.959463" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:00.958669" elapsed="0.000908"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:00.962268" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:00.962346" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:00.961960" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:00.962589" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:00.964015" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:01.268710" 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 Sun Apr 19 00:37:03 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:37:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:38:00.963651" elapsed="0.305215"/>
</kw>
<msg time="2026-04-19T00:38:01.268955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:00.963269" elapsed="0.305796"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:00.961109" elapsed="0.308279"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:01.271152" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:01.293936" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:01.294563" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:01.294949" 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-19T00:38:01.270701" elapsed="0.024538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:01.297849" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:01.300634" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:01.299967" elapsed="0.000834"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:01.301427" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:01.301073" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:01.300960" 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-19T00:38:01.302189" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T00:38:01.301860" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:01.301782" elapsed="0.000647"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:01.302601" elapsed="0.000065"/>
</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-19T00:38:01.309126" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:38:01.309677" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:01.310056" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:01.304856" elapsed="0.005421"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:00.950528" elapsed="0.360001"/>
</kw>
<msg time="2026-04-19T00:38:01.310898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:00.949802" elapsed="0.361152"/>
</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-19T00:38:00.949260" elapsed="0.361953"/>
</kw>
<msg time="2026-04-19T00:38:01.311258" 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-19T00:38:00.948717" elapsed="0.362588"/>
</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-19T00:38:01.314242" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:38:01.314744" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:01.315110" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:01.311591" elapsed="0.003671"/>
</kw>
<msg time="2026-04-19T00:38:01.315350" level="INFO">${output} = 1</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-19T00:38:00.947007" elapsed="0.368368"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:01.315857" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:01.315608" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:01.315944" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:01.316113" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:00.944837" elapsed="0.371301"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:01.316186" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:01.316333" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:00.942540" elapsed="0.373823"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:01.316913" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:01.316520" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:00.941502" elapsed="0.375614">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:03.320648" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:03.319824" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:03.322807" level="INFO">${member_ip} = 10.30.171.9</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-19T00:38:03.322176" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:03.324636" 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-19T00:38:03.324778" 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-19T00:38:03.324415" elapsed="0.000400"/>
</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-19T00:38:03.330484" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:03.329818" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:03.329457" elapsed="0.001225"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:03.332635" 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-19T00:38:03.332878" 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-19T00:38:03.332112" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:03.334538" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:03.333983" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:03.336358" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:03.335633" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:03.338783" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:03.338861" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:03.338505" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:03.339113" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:03.340405" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:03.654014" 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 Sun Apr 19 00:37:03 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:38:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:38:03.340046" elapsed="0.314201"/>
</kw>
<msg time="2026-04-19T00:38:03.654327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:03.339674" elapsed="0.314737"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:03.337723" elapsed="0.316984"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:03.656408" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:03.678954" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:03.679552" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:03.679923" 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-19T00:38:03.655969" elapsed="0.024243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:03.682692" elapsed="0.000669"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:03.684927" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:03.684277" elapsed="0.000893"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:03.685759" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:03.685417" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:03.685328" elapsed="0.000631"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:03.686563" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T00:38:03.686240" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:03.686164" elapsed="0.000656"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:03.686949" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:03.692932" 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-19T00:38:03.693630" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:03.693988" 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-19T00:38:03.689310" elapsed="0.004934"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:03.327504" elapsed="0.367011"/>
</kw>
<msg time="2026-04-19T00:38:03.694879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:03.326538" elapsed="0.368400"/>
</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-19T00:38:03.325769" elapsed="0.369248"/>
</kw>
<msg time="2026-04-19T00:38:03.695110" 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-19T00:38:03.325059" elapsed="0.370099"/>
</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-19T00:38:03.698302" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:03.698771" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:03.699080" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:03.695444" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T00:38:03.699316" level="INFO">${output} = 1</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-19T00:38:03.323422" elapsed="0.375918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:03.699761" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:03.699517" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:03.699847" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:03.699996" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:03.321205" elapsed="0.378815"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:03.700083" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:03.700351" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:03.318982" elapsed="0.381394"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:03.700981" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:03.700587" elapsed="0.000547">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:03.317927" elapsed="0.383318">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:05.704766" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:05.703968" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:05.706921" level="INFO">${member_ip} = 10.30.171.9</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-19T00:38:05.706281" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:05.708810" 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-19T00:38:05.709071" 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-19T00:38:05.708484" elapsed="0.000650"/>
</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-19T00:38:05.715102" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:05.714611" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:05.714343" elapsed="0.000899"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:05.716707" 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-19T00:38:05.716969" 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-19T00:38:05.716263" elapsed="0.000826"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:05.718605" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:05.718070" elapsed="0.000641"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:05.720416" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:05.719680" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:05.722886" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:05.722965" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:05.722582" 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-19T00:38:05.723216" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:05.724596" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:06.301684" 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 Sun Apr 19 00:38:05 UTC 2026

  System load:  0.0                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:38:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:38:05.724190" elapsed="0.577649"/>
</kw>
<msg time="2026-04-19T00:38:06.301926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:05.723787" elapsed="0.578229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:05.721718" elapsed="0.580617"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:06.303902" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:06.326606" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:06.327229" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T00:38:06.327569" 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-19T00:38:06.303503" elapsed="0.024297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:06.330107" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:06.333424" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:06.332388" elapsed="0.001269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:06.334591" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:06.334068" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:06.333903" elapsed="0.001063"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:06.335641" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T00:38:06.335349" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:06.335238" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:06.335891" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:06.342284" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:38:06.342836" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:06.343244" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:06.337332" elapsed="0.006123"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:05.712975" elapsed="0.630710"/>
</kw>
<msg time="2026-04-19T00:38:06.343993" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:05.711991" elapsed="0.632132"/>
</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-19T00:38:05.710644" elapsed="0.633561"/>
</kw>
<msg time="2026-04-19T00:38:06.344245" 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-19T00:38:05.709483" elapsed="0.634807"/>
</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-19T00:38:06.347289" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:38:06.347781" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:06.348139" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:06.344588" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T00:38:06.348381" level="INFO">${output} = 0</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-19T00:38:05.707500" elapsed="0.640906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:06.348852" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:06.348605" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:06.348940" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:38:06.349155" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:05.705318" elapsed="0.643861"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:06.349225" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:06.349365" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:05.703160" elapsed="0.646229"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T00:38:06.349540" elapsed="0.000346"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T00:38:05.702125" elapsed="0.647823"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:37:58.568558" elapsed="7.781435"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:37:58.568415" elapsed="7.781670"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:06.351978" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:06.351686" elapsed="0.000319"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:06.352974" level="INFO">${member_ip} = 10.30.171.128</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-19T00:38:06.352705" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:06.353768" 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-19T00:38:06.353867" 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-19T00:38:06.353634" elapsed="0.000259"/>
</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-19T00:38:06.357596" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:06.357170" elapsed="0.000504"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:06.357117" elapsed="0.000613"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:06.404864" 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-19T00:38:06.405230" 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-19T00:38:06.358711" elapsed="0.046624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:06.407015" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:06.406391" elapsed="0.000788"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:06.408976" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:06.408259" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:06.411463" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:06.411543" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:06.411149" 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-19T00:38:06.411790" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:06.413161" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:07.018942" 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 Sun Apr 19 00:38:06 UTC 2026

  System load:  0.08               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:37:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:38:06.412783" elapsed="0.606334"/>
</kw>
<msg time="2026-04-19T00:38:07.019213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:06.412421" elapsed="0.606880"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:06.410345" elapsed="0.609246"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:07.021118" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:07.043862" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:07.044429" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T00:38:07.044767" 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-19T00:38:07.020705" elapsed="0.024276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:07.047352" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.050579" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:07.049564" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:07.051404" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:07.051062" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:07.050959" elapsed="0.000636"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:07.052230" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T00:38:07.051802" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:07.051733" elapsed="0.000725"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:07.052579" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:07.059074" 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-19T00:38:07.059629" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:07.059989" elapsed="0.000178"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:07.054496" elapsed="0.005782"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:06.355815" elapsed="0.704690"/>
</kw>
<msg time="2026-04-19T00:38:07.060813" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:06.355175" elapsed="0.705696"/>
</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-19T00:38:06.354563" elapsed="0.706390"/>
</kw>
<msg time="2026-04-19T00:38:07.060996" 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-19T00:38:06.354062" elapsed="0.706996"/>
</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-19T00:38:07.064020" elapsed="0.000423"/>
</kw>
<kw name="Open 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-19T00:38:07.064608" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:07.064903" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:07.061353" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T00:38:07.065159" level="INFO">${output} = 0</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-19T00:38:06.353232" elapsed="0.711953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.065614" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:07.065369" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:07.065700" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:38:07.065875" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:06.352299" elapsed="0.713602"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:07.065948" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:07.066109" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:06.351344" elapsed="0.714790"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T00:38:07.066291" elapsed="0.000351"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T00:38:06.350847" elapsed="0.715858"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:38:06.350329" elapsed="0.716421"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:38:06.350185" elapsed="0.716612"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.068632" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:07.068345" elapsed="0.000314"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:07.069546" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:07.069275" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:07.070404" 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-19T00:38:07.070515" 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-19T00:38:07.070271" elapsed="0.000276"/>
</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-19T00:38:07.074515" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:07.074078" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:07.073776" elapsed="0.000874"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:07.076077" 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-19T00:38:07.076319" 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-19T00:38:07.075610" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.077972" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:07.077416" elapsed="0.000883"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:07.080054" 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-19T00:38:07.079307" elapsed="0.000888"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.082626" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:07.082703" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:07.082341" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:07.082936" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:07.084382" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:07.647582" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:37:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:07.083861" elapsed="0.563872"/>
</kw>
<msg time="2026-04-19T00:38:07.647821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:07.083503" elapsed="0.564429"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:07.081435" elapsed="0.566804"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:07.649726" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:07.672748" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:07.673301" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:07.673637" 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-19T00:38:07.649334" elapsed="0.024516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:07.676170" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.678497" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:07.677865" elapsed="0.000777"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:07.679213" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:07.678864" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:07.678785" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:07.679879" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:38:07.679598" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:07.679529" elapsed="0.000693"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:07.680334" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:07.686240" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:38:07.686784" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:07.687153" 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-19T00:38:07.682249" elapsed="0.005112"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:07.072459" elapsed="0.615126"/>
</kw>
<msg time="2026-04-19T00:38:07.687890" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:07.071770" elapsed="0.616176"/>
</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-19T00:38:07.071243" elapsed="0.616814"/>
</kw>
<msg time="2026-04-19T00:38:07.688099" 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-19T00:38:07.070724" elapsed="0.617421"/>
</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-19T00:38:07.691211" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:38:07.691685" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:07.691978" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:07.688435" elapsed="0.003739"/>
</kw>
<msg time="2026-04-19T00:38:07.692263" level="INFO">${output} = 1</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-19T00:38:07.069846" elapsed="0.622443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.692723" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:07.692477" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:07.692811" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:38:07.692960" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:07.068855" elapsed="0.624131"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:07.693049" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:38:07.693197" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:07.067947" elapsed="0.625275"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:07.693767" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:07.693379" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:07.067564" elapsed="0.626381">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:09.697434" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:09.696669" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:09.699583" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:09.698954" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:09.701393" 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-19T00:38:09.701614" 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-19T00:38:09.701077" elapsed="0.000595"/>
</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-19T00:38:09.708424" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:09.707938" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:09.707884" elapsed="0.000678"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:09.709993" 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-19T00:38:09.710251" 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-19T00:38:09.709561" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:09.711894" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:09.711355" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:09.713670" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:09.712969" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:09.716102" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:09.716180" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:09.715802" 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-19T00:38:09.716413" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:09.717662" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:10.035182" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:09.717334" elapsed="0.318005"/>
</kw>
<msg time="2026-04-19T00:38:10.035419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:09.716960" elapsed="0.318541"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:09.714975" elapsed="0.320780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:10.037210" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:10.060322" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:10.060815" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:10.061200" 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-19T00:38:10.036819" elapsed="0.024591"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:10.063664" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:10.065633" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:10.065016" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:10.066371" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:10.066003" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:10.065922" elapsed="0.000635"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:10.067115" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:38:10.066757" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:10.066690" elapsed="0.000652"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:10.067468" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:10.073340" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:38:10.073886" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:10.074271" elapsed="0.000168"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:10.069288" elapsed="0.005261"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:09.706003" elapsed="0.368770"/>
</kw>
<msg time="2026-04-19T00:38:10.075207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:09.704565" elapsed="0.370700"/>
</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-19T00:38:09.703363" elapsed="0.371985"/>
</kw>
<msg time="2026-04-19T00:38:10.075389" 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-19T00:38:09.702170" elapsed="0.373277"/>
</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-19T00:38:10.078408" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T00:38:10.078878" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:10.079221" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:10.075738" elapsed="0.003632"/>
</kw>
<msg time="2026-04-19T00:38:10.079484" level="INFO">${output} = 1</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-19T00:38:09.700149" elapsed="0.379360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:10.080047" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:10.079783" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:10.080136" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:38:10.080286" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:09.697954" elapsed="0.382356"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:10.080357" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:38:10.080500" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:09.695831" elapsed="0.384693"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:10.081083" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:10.080677" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:09.694783" elapsed="0.386488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:12.084824" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:12.083989" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:12.086950" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:12.086344" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:12.088910" 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-19T00:38:12.089082" 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-19T00:38:12.088597" elapsed="0.000525"/>
</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-19T00:38:12.095003" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:12.094358" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:12.094279" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:12.097127" 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-19T00:38:12.097438" 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-19T00:38:12.096659" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:12.099171" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:12.098582" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:12.101023" 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-19T00:38:12.100304" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:12.103494" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:12.103571" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:12.103203" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:12.103812" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:12.105193" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:12.419412" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:12.104850" elapsed="0.314715"/>
</kw>
<msg time="2026-04-19T00:38:12.419652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:12.104438" elapsed="0.315305"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:12.102399" elapsed="0.317647"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:12.421595" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:12.445173" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:12.445689" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:12.446059" 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-19T00:38:12.421196" elapsed="0.025082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:12.448759" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:12.451206" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:12.450548" 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-19T00:38:12.451930" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:12.451593" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:12.451510" elapsed="0.000697"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:12.452711" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T00:38:12.452411" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:12.452343" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:12.453099" elapsed="0.000058"/>
</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-19T00:38:12.459177" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:38:12.459722" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:12.460206" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:12.455003" elapsed="0.005412"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:12.091928" elapsed="0.368710"/>
</kw>
<msg time="2026-04-19T00:38:12.461010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:12.090964" elapsed="0.370134"/>
</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-19T00:38:12.090221" elapsed="0.370963"/>
</kw>
<msg time="2026-04-19T00:38:12.461227" 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-19T00:38:12.089347" elapsed="0.371926"/>
</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-19T00:38:12.464322" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:38:12.464804" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:12.465141" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:12.461567" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T00:38:12.465404" level="INFO">${output} = 1</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-19T00:38:12.087520" elapsed="0.377908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:12.465856" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:12.465609" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:12.465944" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:38:12.466114" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:12.085390" elapsed="0.380750"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:12.466187" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:38:12.466330" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:12.083161" elapsed="0.383194"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:12.466954" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:12.466510" elapsed="0.000547">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:12.082100" elapsed="0.385074">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:14.470563" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:14.469819" elapsed="0.000812"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:14.472636" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:14.472011" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:14.474236" 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-19T00:38:14.474385" 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-19T00:38:14.473990" elapsed="0.000435"/>
</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-19T00:38:14.480524" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:14.479823" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:14.479431" elapsed="0.001302"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:14.482541" 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-19T00:38:14.482789" 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-19T00:38:14.482077" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:14.484469" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:14.483899" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:14.486387" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:14.485664" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:14.488872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:14.488951" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:14.488585" 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-19T00:38:14.489239" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:14.490535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:14.808066" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:14.490204" elapsed="0.318021"/>
</kw>
<msg time="2026-04-19T00:38:14.808311" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:14.489822" elapsed="0.318584"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:14.487785" elapsed="0.320909"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:14.810238" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:14.833645" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:14.834268" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:14.834598" 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-19T00:38:14.809827" elapsed="0.024981"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:14.837191" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:14.840060" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:14.839395" 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-19T00:38:14.840789" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:14.840449" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:14.840365" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:14.841507" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:38:14.841212" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:14.841140" elapsed="0.000649"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:14.841906" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:14.848255" 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-19T00:38:14.848811" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:14.849187" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:14.843981" elapsed="0.005419"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:14.477372" elapsed="0.372277"/>
</kw>
<msg time="2026-04-19T00:38:14.849969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:14.476238" elapsed="0.373808"/>
</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-19T00:38:14.475433" elapsed="0.374697"/>
</kw>
<msg time="2026-04-19T00:38:14.850171" 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-19T00:38:14.474655" elapsed="0.375563"/>
</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-19T00:38:14.853451" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T00:38:14.853972" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:14.854287" 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-19T00:38:14.850509" elapsed="0.003925"/>
</kw>
<msg time="2026-04-19T00:38:14.854525" level="INFO">${output} = 1</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-19T00:38:14.473246" elapsed="0.381304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:14.854992" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:14.854747" elapsed="0.000353"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:14.855146" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:14.855300" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:14.471105" elapsed="0.384220"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:14.855373" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:38:14.855526" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:14.468988" elapsed="0.386563"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:14.856114" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:14.855706" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:14.467943" elapsed="0.388355">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:16.860294" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:16.859493" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:16.862370" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:16.861917" elapsed="0.000494"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:16.863655" 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-19T00:38:16.863819" 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-19T00:38:16.863410" elapsed="0.000474"/>
</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-19T00:38:16.870305" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:16.869552" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:16.869085" elapsed="0.001448"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:16.872870" 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-19T00:38:16.873279" 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-19T00:38:16.872092" elapsed="0.001356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:16.875240" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:16.874615" elapsed="0.000743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:16.877330" 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-19T00:38:16.876526" elapsed="0.000913"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:16.879915" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:16.880002" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:16.879573" elapsed="0.000642"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:16.880447" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:16.881923" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:17.191920" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:16.881581" elapsed="0.310506"/>
</kw>
<msg time="2026-04-19T00:38:17.192173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:16.881193" elapsed="0.311072"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:16.878717" elapsed="0.313828"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:17.194049" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:17.217108" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:17.217672" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:17.218101" 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-19T00:38:17.193645" elapsed="0.024676"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:17.220602" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:17.223919" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:17.222894" elapsed="0.001294"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:17.225121" elapsed="0.000138"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:17.224543" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:17.224419" elapsed="0.001098"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:17.226124" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T00:38:17.225876" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:17.225739" elapsed="0.000554"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:17.226374" 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-19T00:38:17.231168" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:17.231770" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:17.232167" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:17.227759" elapsed="0.004627"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:16.866966" elapsed="0.365649"/>
</kw>
<msg time="2026-04-19T00:38:17.232927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:16.865895" elapsed="0.367094"/>
</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-19T00:38:16.865066" elapsed="0.368029"/>
</kw>
<msg time="2026-04-19T00:38:17.233143" 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-19T00:38:16.864182" elapsed="0.369036"/>
</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-19T00:38:17.236255" 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-19T00:38:17.236779" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:17.237137" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:17.233518" elapsed="0.003798"/>
</kw>
<msg time="2026-04-19T00:38:17.237409" level="INFO">${output} = 1</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-19T00:38:16.862746" elapsed="0.374755"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:17.238006" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:17.237695" elapsed="0.000377"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:17.238118" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:38:17.238274" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:16.860974" elapsed="0.377326"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:17.238348" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:38:17.238494" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:16.858459" elapsed="0.380061"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:17.239187" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:17.238694" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:16.857234" elapsed="0.382147">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:19.242869" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:19.242140" elapsed="0.000797"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:19.245005" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:19.244464" elapsed="0.000599"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:19.246184" 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-19T00:38:19.246325" 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-19T00:38:19.245936" elapsed="0.000426"/>
</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-19T00:38:19.253748" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:19.253255" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:19.250947" elapsed="0.002942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:19.255371" 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-19T00:38:19.255619" 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-19T00:38:19.254905" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:19.257340" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:19.256748" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:19.259210" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:19.258495" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:19.261663" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:19.261739" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:19.261377" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:19.261977" elapsed="0.000567"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:19.263502" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:19.579965" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:19.263171" elapsed="0.317054"/>
</kw>
<msg time="2026-04-19T00:38:19.580309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:19.262764" elapsed="0.317631"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:19.260575" elapsed="0.320119"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:19.582211" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:19.604911" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:19.605479" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:19.605813" 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-19T00:38:19.581792" elapsed="0.024269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:19.608388" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:19.611527" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:19.610526" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:19.612648" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:19.612148" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:19.611974" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:19.613726" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T00:38:19.613286" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:19.613176" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:19.614338" elapsed="0.000084"/>
</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-19T00:38:19.620620" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:19.621180" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:19.621540" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:19.617179" elapsed="0.004572"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:19.249121" elapsed="0.372857"/>
</kw>
<msg time="2026-04-19T00:38:19.622361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:19.248107" elapsed="0.374318"/>
</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-19T00:38:19.247317" elapsed="0.375194"/>
</kw>
<msg time="2026-04-19T00:38:19.622554" 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-19T00:38:19.246585" elapsed="0.376019"/>
</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-19T00:38:19.625787" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T00:38:19.626383" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:19.626696" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:19.622979" elapsed="0.003866"/>
</kw>
<msg time="2026-04-19T00:38:19.626936" level="INFO">${output} = 1</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-19T00:38:19.245368" elapsed="0.381593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:19.627526" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:19.627271" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:19.627618" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:38:19.627773" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:19.243440" elapsed="0.384358"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:19.627843" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:38:19.627999" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:19.241275" elapsed="0.386761"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:19.628787" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:19.628292" elapsed="0.000588">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:19.240230" elapsed="0.388825">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:21.632968" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:21.632099" elapsed="0.000978"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:21.635485" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:21.634797" elapsed="0.000752"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:21.637632" 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-19T00:38:21.637938" 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-19T00:38:21.637275" elapsed="0.000746"/>
</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-19T00:38:21.644122" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:21.643629" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:21.643570" elapsed="0.000696"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:21.646005" 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-19T00:38:21.646295" 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-19T00:38:21.645283" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:21.647994" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:21.647428" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:21.649864" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:21.649134" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:21.652524" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:21.652603" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:21.652221" 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-19T00:38:21.652856" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:21.654193" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:21.984702" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:21.653830" elapsed="0.331023"/>
</kw>
<msg time="2026-04-19T00:38:21.984939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:21.653460" elapsed="0.331584"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:21.651412" elapsed="0.333918"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:21.986888" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:22.009766" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:22.010356" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:22.010750" 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-19T00:38:21.986454" elapsed="0.024531"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:22.013450" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:22.016096" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:22.015458" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:22.016803" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:22.016471" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:22.016391" elapsed="0.000604"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:22.017509" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T00:38:22.017224" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:22.017156" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:22.017841" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:22.024182" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:38:22.024738" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:22.025118" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:22.019800" elapsed="0.005528"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:21.641786" elapsed="0.383766"/>
</kw>
<msg time="2026-04-19T00:38:22.025898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:21.640716" elapsed="0.385245"/>
</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-19T00:38:21.639640" elapsed="0.386422"/>
</kw>
<msg time="2026-04-19T00:38:22.026105" 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-19T00:38:21.638493" elapsed="0.387659"/>
</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-19T00:38:22.029265" 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-19T00:38:22.029743" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:22.030066" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:22.026445" elapsed="0.003776"/>
</kw>
<msg time="2026-04-19T00:38:22.030312" level="INFO">${output} = 1</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-19T00:38:21.636185" elapsed="0.394152"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:22.030798" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:22.030522" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:22.030886" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:38:22.031094" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:21.633656" elapsed="0.397466"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:22.031171" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:38:22.031318" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:21.631157" elapsed="0.400186"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:22.031903" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:22.031500" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:21.629885" elapsed="0.402229">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:24.035549" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:24.034776" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:24.038065" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:24.037351" elapsed="0.000781"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:24.039583" 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-19T00:38:24.039726" 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-19T00:38:24.039365" elapsed="0.000400"/>
</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-19T00:38:24.045043" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:24.044397" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:24.044321" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:24.047202" 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-19T00:38:24.047449" 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-19T00:38:24.046507" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:24.049140" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:24.048540" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:24.051021" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:24.050304" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:24.053510" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:24.053588" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:24.053224" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:24.053844" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:24.055269" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:24.369475" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:24.054788" elapsed="0.314879"/>
</kw>
<msg time="2026-04-19T00:38:24.369772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:24.054429" elapsed="0.315456"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:24.052414" elapsed="0.317790"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:24.371734" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:24.394470" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:24.394959" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:24.395331" 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-19T00:38:24.371330" elapsed="0.024209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:24.397743" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:24.400845" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:24.399868" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:24.402150" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:24.401482" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:24.401361" elapsed="0.001083"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:24.403239" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:38:24.402763" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:24.402657" elapsed="0.000926"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:24.403757" elapsed="0.000080"/>
</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-19T00:38:24.409867" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:38:24.410433" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:24.410789" 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-19T00:38:24.406428" elapsed="0.004570"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:24.042462" elapsed="0.368832"/>
</kw>
<msg time="2026-04-19T00:38:24.411603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:24.041490" elapsed="0.370173"/>
</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-19T00:38:24.040726" elapsed="0.371020"/>
</kw>
<msg time="2026-04-19T00:38:24.411787" 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-19T00:38:24.039986" elapsed="0.371847"/>
</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-19T00:38:24.414878" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T00:38:24.415447" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:24.415739" 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-19T00:38:24.412208" elapsed="0.003677"/>
</kw>
<msg time="2026-04-19T00:38:24.415977" level="INFO">${output} = 1</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-19T00:38:24.038621" elapsed="0.377381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:24.416446" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:24.416200" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:24.416533" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:38:24.416684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:24.036314" elapsed="0.380394"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:24.416777" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:38:24.416932" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:24.033895" elapsed="0.383062"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:24.417530" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:24.417137" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:24.032844" elapsed="0.384883">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:26.421254" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:26.420384" elapsed="0.000972"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:26.423408" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:26.422768" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:26.425408" 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-19T00:38:26.425765" 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-19T00:38:26.425058" elapsed="0.000766"/>
</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-19T00:38:26.429789" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:26.429324" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:26.429269" elapsed="0.000657"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:26.431675" 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-19T00:38:26.431921" 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-19T00:38:26.430958" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:26.433660" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:26.433093" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:26.435470" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:26.434751" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:26.437988" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:26.438087" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:26.437685" 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-19T00:38:26.438327" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:26.439607" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:26.768126" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:26.439279" elapsed="0.329004"/>
</kw>
<msg time="2026-04-19T00:38:26.768372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:26.438891" elapsed="0.329570"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:26.436780" elapsed="0.331971"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:26.770312" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:26.793469" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:26.793978" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:26.794363" 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-19T00:38:26.769881" elapsed="0.024691"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:26.796835" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:26.800135" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:26.799118" elapsed="0.001249"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:26.801376" elapsed="0.000081"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:26.800716" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:26.800594" elapsed="0.001099"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:26.802354" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T00:38:26.802014" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:26.801907" elapsed="0.000674"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:26.802693" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:26.809433" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T00:38:26.810231" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:26.810592" 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-19T00:38:26.804653" elapsed="0.006147"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:26.427881" elapsed="0.383139"/>
</kw>
<msg time="2026-04-19T00:38:26.811396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:26.427206" elapsed="0.384252"/>
</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-19T00:38:26.426653" elapsed="0.384888"/>
</kw>
<msg time="2026-04-19T00:38:26.811582" 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-19T00:38:26.426127" elapsed="0.385502"/>
</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-19T00:38:26.814618" 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-19T00:38:26.815207" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:26.815515" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:26.811940" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T00:38:26.815760" level="INFO">${output} = 1</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-19T00:38:26.424024" elapsed="0.391761"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:26.816270" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:26.815998" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:26.816358" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:38:26.816513" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:26.421827" elapsed="0.394711"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:26.816585" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:26.816729" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:26.419562" elapsed="0.397191"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:26.817350" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:26.816909" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:26.418519" elapsed="0.399023">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:28.820847" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:28.820129" elapsed="0.000785"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:28.822946" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:28.822351" elapsed="0.000654"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:28.824770" 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-19T00:38:28.824989" 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-19T00:38:28.824457" elapsed="0.000618"/>
</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-19T00:38:28.831958" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:28.831275" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:28.830871" elapsed="0.001385"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:28.834384" 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-19T00:38:28.834734" 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-19T00:38:28.833717" elapsed="0.001164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:28.837179" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:28.836353" elapsed="0.000985"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:28.839980" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:28.838917" elapsed="0.001220"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:28.842522" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:28.842599" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:28.842232" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:28.842834" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:28.844123" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:29.186178" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:28.843779" elapsed="0.342552"/>
</kw>
<msg time="2026-04-19T00:38:29.186417" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:28.843418" elapsed="0.343089"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:28.841334" elapsed="0.345458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:29.188369" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:29.211248" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:29.211826" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:29.212198" 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-19T00:38:29.187931" elapsed="0.024481"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:29.214766" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:29.218006" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:29.216984" elapsed="0.001380"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:29.219290" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:29.218752" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:29.218619" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:29.220366" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:38:29.219895" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:29.219790" elapsed="0.000980"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:29.220943" elapsed="0.000133"/>
</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-19T00:38:29.225901" elapsed="0.000438"/>
</kw>
<kw name="Open 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-19T00:38:29.226556" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:29.226930" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:29.222513" elapsed="0.004647"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:28.828928" elapsed="0.398453"/>
</kw>
<msg time="2026-04-19T00:38:29.227759" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:28.827849" elapsed="0.399979"/>
</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-19T00:38:28.826601" elapsed="0.401310"/>
</kw>
<msg time="2026-04-19T00:38:29.227952" 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-19T00:38:28.825425" elapsed="0.402574"/>
</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-19T00:38:29.231131" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:38:29.231637" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:29.231948" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:29.228313" elapsed="0.003804"/>
</kw>
<msg time="2026-04-19T00:38:29.232212" level="INFO">${output} = 1</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-19T00:38:28.823512" elapsed="0.408725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:29.232735" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:29.232448" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:29.232828" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:38:29.232990" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:28.821396" elapsed="0.411619"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:29.233097" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:38:29.233251" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:28.819287" elapsed="0.413990"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:29.233849" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:29.233438" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:28.818284" elapsed="0.415854">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:31.237965" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:31.237188" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:31.240279" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:31.239536" elapsed="0.000785"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:31.241572" 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-19T00:38:31.241725" 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-19T00:38:31.241311" elapsed="0.000452"/>
</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-19T00:38:31.247440" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:31.246780" elapsed="0.000805"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:31.246406" elapsed="0.001272"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:31.249288" 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-19T00:38:31.249542" 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-19T00:38:31.248824" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:31.251288" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:31.250648" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:31.253209" 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-19T00:38:31.252473" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:31.255804" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:31.255883" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:31.255491" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:31.256144" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:31.257515" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:31.584877" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:31.257177" elapsed="0.327870"/>
</kw>
<msg time="2026-04-19T00:38:31.585138" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:31.256768" elapsed="0.328466"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:31.254539" elapsed="0.330982"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:31.587055" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:31.610165" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:31.610673" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:31.611004" 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-19T00:38:31.586640" elapsed="0.024647"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:31.613621" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:31.616934" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:31.615858" elapsed="0.001338"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:31.618105" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:31.617566" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:31.617421" elapsed="0.000979"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:31.619200" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:38:31.618723" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:31.618615" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:31.619729" elapsed="0.000081"/>
</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-19T00:38:31.626139" 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-19T00:38:31.626700" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:31.627080" 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-19T00:38:31.622669" elapsed="0.004629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:31.244548" elapsed="0.382989"/>
</kw>
<msg time="2026-04-19T00:38:31.627853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:31.243584" elapsed="0.384340"/>
</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-19T00:38:31.242758" elapsed="0.385254"/>
</kw>
<msg time="2026-04-19T00:38:31.628162" 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-19T00:38:31.241990" elapsed="0.386221"/>
</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-19T00:38:31.631337" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:31.631819" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:31.632204" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:31.628616" elapsed="0.003746"/>
</kw>
<msg time="2026-04-19T00:38:31.632455" level="INFO">${output} = 1</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-19T00:38:31.240684" elapsed="0.391797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:31.632914" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:31.632662" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:31.633003" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:38:31.633174" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:31.238559" elapsed="0.394640"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:31.633246" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:31.633390" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:31.236277" elapsed="0.397137"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:31.634003" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:31.633604" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:31.235110" elapsed="0.399102">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:33.637927" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:33.637166" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:33.640885" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:33.640308" elapsed="0.000634"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:33.642647" 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-19T00:38:33.642850" 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-19T00:38:33.642335" elapsed="0.000569"/>
</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-19T00:38:33.651520" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:33.650771" elapsed="0.000879"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:33.648285" elapsed="0.003460"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:33.653870" 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-19T00:38:33.654249" 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-19T00:38:33.653236" elapsed="0.001156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:33.656724" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:33.655908" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:33.659479" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:33.658278" elapsed="0.001338"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:33.662872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:33.662983" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:33.662452" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:33.663417" elapsed="0.000639"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:33.665428" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:33.976842" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:33.664922" elapsed="0.312060"/>
</kw>
<msg time="2026-04-19T00:38:33.977079" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:33.664382" elapsed="0.312782"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:33.661305" elapsed="0.316133"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:33.978925" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:34.001571" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:34.002113" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:34.002470" 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-19T00:38:33.978538" elapsed="0.024143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:34.004880" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:34.008174" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:34.007121" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:34.009282" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:34.008751" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:34.008631" elapsed="0.000939"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:34.010407" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:38:34.009884" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:34.009779" elapsed="0.000980"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:34.010934" elapsed="0.000080"/>
</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-19T00:38:34.015837" 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-19T00:38:34.016462" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:34.016819" 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-19T00:38:34.012554" elapsed="0.004487"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:33.646253" elapsed="0.371014"/>
</kw>
<msg time="2026-04-19T00:38:34.017574" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:33.645203" elapsed="0.372427"/>
</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-19T00:38:33.644369" elapsed="0.373343"/>
</kw>
<msg time="2026-04-19T00:38:34.017753" 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-19T00:38:33.643262" elapsed="0.374536"/>
</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-19T00:38:34.020862" 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-19T00:38:34.021361" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:34.021657" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:34.018107" elapsed="0.003699"/>
</kw>
<msg time="2026-04-19T00:38:34.021959" level="INFO">${output} = 1</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-19T00:38:33.641441" elapsed="0.380544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:34.022459" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:34.022182" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:34.022547" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:38:34.022700" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:33.638762" elapsed="0.383964"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:34.022773" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:38:34.022921" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:33.636266" elapsed="0.386679"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:34.023530" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:34.023130" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:33.635024" elapsed="0.388687">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:36.027197" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:36.026382" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:36.028713" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:36.028296" elapsed="0.000458"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:36.030024" 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-19T00:38:36.030202" 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-19T00:38:36.029778" elapsed="0.000463"/>
</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-19T00:38:36.036450" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:36.035711" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:36.035622" elapsed="0.001044"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:36.039368" 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-19T00:38:36.039638" 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-19T00:38:36.038160" elapsed="0.001581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:36.041411" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:36.040803" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:36.043303" 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-19T00:38:36.042515" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:36.045864" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:36.045944" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:36.045572" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:36.046202" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:36.047530" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:36.359339" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:36.047200" elapsed="0.312396"/>
</kw>
<msg time="2026-04-19T00:38:36.359682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:36.046789" elapsed="0.312982"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:36.044763" elapsed="0.315322"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:36.361862" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:36.385319" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:36.386175" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:36.386603" 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-19T00:38:36.361368" elapsed="0.025498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:36.389740" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:36.392428" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:36.391743" elapsed="0.000832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:36.393155" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:36.392798" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:36.392719" 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-19T00:38:36.393816" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T00:38:36.393537" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:36.393469" elapsed="0.000641"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:36.394224" elapsed="0.000062"/>
</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-19T00:38:36.402477" elapsed="0.000485"/>
</kw>
<kw name="Open 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-19T00:38:36.403326" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:36.403864" 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-19T00:38:36.396342" elapsed="0.007846"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:36.033472" elapsed="0.371088"/>
</kw>
<msg time="2026-04-19T00:38:36.405047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:36.032225" elapsed="0.372916"/>
</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-19T00:38:36.031344" elapsed="0.373921"/>
</kw>
<msg time="2026-04-19T00:38:36.405326" 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-19T00:38:36.030485" elapsed="0.374914"/>
</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-19T00:38:36.408828" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:38:36.409331" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:36.409651" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:36.405884" elapsed="0.003919"/>
</kw>
<msg time="2026-04-19T00:38:36.409909" level="INFO">${output} = 1</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-19T00:38:36.029145" elapsed="0.380790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:36.410423" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:36.410143" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:36.410527" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:38:36.410728" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:36.027605" elapsed="0.383159"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:36.410825" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:38:36.411060" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:36.025549" elapsed="0.385549"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:36.411805" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:36.411370" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:36.024493" elapsed="0.387502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:38.415904" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:38.415083" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:38.418367" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:38.417643" elapsed="0.000792"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:38.420619" 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-19T00:38:38.420869" 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-19T00:38:38.420199" elapsed="0.000733"/>
</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-19T00:38:38.425254" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:38.424742" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:38.424683" elapsed="0.000715"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:38.427122" 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-19T00:38:38.427380" 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-19T00:38:38.426412" elapsed="0.001073"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:38.429155" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:38.428530" elapsed="0.000740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:38.430995" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:38.430275" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:38.433676" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:38.433755" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:38.433387" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:38.433990" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:38.435266" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:38.745025" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:38.434926" elapsed="0.310274"/>
</kw>
<msg time="2026-04-19T00:38:38.745303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:38.434567" elapsed="0.310847"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:38.432434" elapsed="0.313327"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:38.747678" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:38.770883" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:38.771515" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:38.771852" 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-19T00:38:38.747181" elapsed="0.024927"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:38.774396" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:38.777673" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:38.776634" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:38.778804" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:38.778296" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:38.778169" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:38.779983" elapsed="0.000158"/>
</return>
<status status="PASS" start="2026-04-19T00:38:38.779523" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:38.779356" elapsed="0.001027"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:38.780493" 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-19T00:38:38.785312" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:38:38.785872" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:38.786248" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:38.781887" elapsed="0.004575"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:38.423226" elapsed="0.363461"/>
</kw>
<msg time="2026-04-19T00:38:38.787011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:38.422490" elapsed="0.364602"/>
</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-19T00:38:38.421920" elapsed="0.365257"/>
</kw>
<msg time="2026-04-19T00:38:38.787219" 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-19T00:38:38.421364" elapsed="0.365902"/>
</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-19T00:38:38.790312" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:38:38.790785" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:38.791095" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:38.787579" elapsed="0.003664"/>
</kw>
<msg time="2026-04-19T00:38:38.791335" level="INFO">${output} = 1</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-19T00:38:38.419115" elapsed="0.372246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:38.791836" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:38.791587" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:38.791922" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:38:38.792096" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:38.416576" elapsed="0.375546"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:38.792170" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:38.792314" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:38.414135" elapsed="0.378203"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:38.792894" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:38.792500" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:38.412947" elapsed="0.380232">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:40.796585" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:40.795825" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:40.798841" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:40.798242" elapsed="0.000658"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:40.800730" 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-19T00:38:40.800956" 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-19T00:38:40.800411" elapsed="0.000603"/>
</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-19T00:38:40.810457" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:40.809418" elapsed="0.001221"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:40.809294" elapsed="0.001479"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:40.812966" 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-19T00:38:40.813251" 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-19T00:38:40.812230" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:40.815085" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:40.814435" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:40.816974" 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-19T00:38:40.816226" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:40.819611" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:40.819690" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:40.819307" 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-19T00:38:40.819929" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:40.821315" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:41.138919" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:40.820956" elapsed="0.318145"/>
</kw>
<msg time="2026-04-19T00:38:41.139185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:40.820560" elapsed="0.318717"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:40.818357" elapsed="0.321213"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:41.141135" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:41.164126" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:41.164671" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:41.164995" 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-19T00:38:41.140725" elapsed="0.024525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:41.167511" elapsed="0.000943"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:41.170673" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:41.169685" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:41.171878" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:41.171270" elapsed="0.000805"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:41.171151" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:41.172969" elapsed="0.000264"/>
</return>
<status status="PASS" start="2026-04-19T00:38:41.172512" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:41.172406" elapsed="0.001059"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:41.173636" elapsed="0.000082"/>
</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-19T00:38:41.179654" elapsed="0.000410"/>
</kw>
<kw name="Open 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-19T00:38:41.180288" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:41.180706" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:41.176023" elapsed="0.004898"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:40.805837" elapsed="0.375394"/>
</kw>
<msg time="2026-04-19T00:38:41.181549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:40.804264" elapsed="0.377353"/>
</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-19T00:38:40.802847" elapsed="0.378853"/>
</kw>
<msg time="2026-04-19T00:38:41.181740" 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-19T00:38:40.801393" elapsed="0.380394"/>
</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-19T00:38:41.184890" elapsed="0.000473"/>
</kw>
<kw name="Open 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-19T00:38:41.185531" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:41.185834" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:41.182107" elapsed="0.003878"/>
</kw>
<msg time="2026-04-19T00:38:41.186097" level="INFO">${output} = 1</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-19T00:38:40.799450" elapsed="0.386673"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:41.186617" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:41.186332" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:41.186709" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:38:41.186873" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:40.797274" elapsed="0.389625"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:41.186947" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:41.187110" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:40.794943" elapsed="0.392192"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:41.187692" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:41.187292" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:40.793908" elapsed="0.393974">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:43.191260" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:43.190498" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:43.193340" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:43.192703" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:43.195207" 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-19T00:38:43.195569" 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-19T00:38:43.194804" elapsed="0.000812"/>
</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-19T00:38:43.201476" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:43.200784" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:43.200413" elapsed="0.001262"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:43.203711" 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-19T00:38:43.204090" 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-19T00:38:43.203111" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:43.206331" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:43.205562" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:43.208543" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:43.207770" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:43.210912" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:43.210991" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:43.210624" 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-19T00:38:43.211274" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:43.212709" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:43.565542" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:43.212381" elapsed="0.353330"/>
</kw>
<msg time="2026-04-19T00:38:43.565803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:43.211839" elapsed="0.354062"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:43.209829" elapsed="0.356408"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:43.567939" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:43.590967" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:43.591607" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:43.591936" 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-19T00:38:43.567522" elapsed="0.024660"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:43.594501" elapsed="0.000989"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:43.597694" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:43.596723" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:43.598911" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:43.598400" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:43.598278" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:43.599975" elapsed="0.000157"/>
</return>
<status status="PASS" start="2026-04-19T00:38:43.599541" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:43.599438" elapsed="0.000924"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:43.600534" elapsed="0.000079"/>
</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-19T00:38:43.606978" 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-19T00:38:43.607659" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:43.608043" 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-19T00:38:43.603597" elapsed="0.004660"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:43.198453" elapsed="0.410027"/>
</kw>
<msg time="2026-04-19T00:38:43.608788" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:43.197462" elapsed="0.411389"/>
</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-19T00:38:43.196647" elapsed="0.412287"/>
</kw>
<msg time="2026-04-19T00:38:43.608978" 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-19T00:38:43.195862" elapsed="0.413177"/>
</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-19T00:38:43.612145" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:43.612707" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:43.613009" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:43.609338" elapsed="0.003841"/>
</kw>
<msg time="2026-04-19T00:38:43.613271" level="INFO">${output} = 1</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-19T00:38:43.193877" elapsed="0.419419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:43.613744" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:43.613490" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:43.613833" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:38:43.613989" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:43.191773" elapsed="0.422241"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:43.614092" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:38:43.614236" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:43.189680" elapsed="0.424580"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:43.614830" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:43.614433" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:43.188661" elapsed="0.426356">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:45.618473" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:45.617727" elapsed="0.000814"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:45.620583" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:45.619961" elapsed="0.000677"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:45.621814" 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-19T00:38:45.621963" 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-19T00:38:45.621587" elapsed="0.000415"/>
</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-19T00:38:45.628288" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:45.627584" elapsed="0.000907"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:45.627203" elapsed="0.001378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:45.630683" 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-19T00:38:45.631059" 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-19T00:38:45.630021" elapsed="0.001186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:45.633388" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:45.632678" elapsed="0.000819"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:45.635227" 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-19T00:38:45.634520" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:45.637591" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:45.637669" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:45.637312" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:45.637904" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:45.639290" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:45.959811" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:45.638949" elapsed="0.321011"/>
</kw>
<msg time="2026-04-19T00:38:45.960064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:45.638585" elapsed="0.321572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:45.636538" elapsed="0.323897"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:45.961910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:45.984814" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:45.985363" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:45.985732" 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-19T00:38:45.961530" elapsed="0.024418"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:45.988227" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:45.991379" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:45.990373" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:45.992494" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:45.991960" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:45.991839" elapsed="0.000949"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:45.993714" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:38:45.993264" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:45.992999" elapsed="0.001102"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:45.994281" elapsed="0.000082"/>
</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-19T00:38:46.002048" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:38:46.002599" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:46.002958" elapsed="0.000205"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:45.997399" elapsed="0.005892"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:45.625267" elapsed="0.378259"/>
</kw>
<msg time="2026-04-19T00:38:46.003917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:45.624259" elapsed="0.379717"/>
</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-19T00:38:45.623409" elapsed="0.380665"/>
</kw>
<msg time="2026-04-19T00:38:46.004116" 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-19T00:38:45.622573" elapsed="0.381590"/>
</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-19T00:38:46.007127" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:38:46.007637" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:46.007932" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:46.004456" elapsed="0.003642"/>
</kw>
<msg time="2026-04-19T00:38:46.008190" level="INFO">${output} = 1</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-19T00:38:45.620961" elapsed="0.387254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:46.008643" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:46.008393" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:46.008731" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:46.008883" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:45.618988" elapsed="0.389922"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:46.008956" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:46.009118" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:45.616874" elapsed="0.392270"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:46.009688" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:46.009299" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:45.615842" elapsed="0.394026">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:48.013366" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:48.012559" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:48.014797" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:48.014414" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:48.015944" 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-19T00:38:48.016110" 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-19T00:38:48.015728" elapsed="0.000421"/>
</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-19T00:38:48.023703" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:48.023042" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:48.020673" elapsed="0.003225"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:48.025913" 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-19T00:38:48.026177" 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-19T00:38:48.025339" elapsed="0.000939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:48.027807" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:48.027259" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:48.029743" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:48.029043" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:48.032249" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:48.032329" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:48.031825" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:48.032565" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:48.033839" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:48.335632" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:48.033511" elapsed="0.302225"/>
</kw>
<msg time="2026-04-19T00:38:48.335808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:48.033149" elapsed="0.302735"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:48.031069" elapsed="0.305078"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:48.337599" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:48.360360" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:48.360921" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:48.361322" 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-19T00:38:48.337245" elapsed="0.024292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:48.363767" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:48.366962" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:48.365973" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:48.368242" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:48.367589" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:48.367467" elapsed="0.001072"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:48.369471" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:38:48.368970" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:48.368836" elapsed="0.000997"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:48.369916" 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-19T00:38:48.374663" 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-19T00:38:48.375232" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:48.375590" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:48.371254" elapsed="0.004549"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:48.018803" elapsed="0.357220"/>
</kw>
<msg time="2026-04-19T00:38:48.376342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:48.017860" elapsed="0.358540"/>
</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-19T00:38:48.017120" elapsed="0.359362"/>
</kw>
<msg time="2026-04-19T00:38:48.376522" 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-19T00:38:48.016370" elapsed="0.360198"/>
</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-19T00:38:48.379728" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:38:48.380218" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:48.380512" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:48.376966" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:38:48.380791" level="INFO">${output} = 1</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-19T00:38:48.015155" elapsed="0.365661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:48.381259" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:48.380994" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:48.381348" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:48.381498" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:48.013820" elapsed="0.367704"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:48.381570" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:38:48.381715" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:48.011725" elapsed="0.370018"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:48.382310" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:48.381899" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:48.010674" elapsed="0.371816">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:50.386372" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:50.385600" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:50.388533" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:50.387895" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:50.390397" 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-19T00:38:50.390624" 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-19T00:38:50.390069" elapsed="0.000614"/>
</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-19T00:38:50.397475" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:50.396989" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:50.396932" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:50.399348" 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-19T00:38:50.399594" 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-19T00:38:50.398624" elapsed="0.001071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:50.401651" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:50.400849" elapsed="0.000999"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:50.404344" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:50.403268" elapsed="0.001214"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:50.410639" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:50.410965" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:50.409751" elapsed="0.001408"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:50.411795" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:50.413285" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:50.706019" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:50.412938" elapsed="0.293207"/>
</kw>
<msg time="2026-04-19T00:38:50.706219" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:50.412569" elapsed="0.293730"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:50.407521" elapsed="0.299034"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:50.707976" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:50.720733" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:50.721273" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:50.721609" 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-19T00:38:50.707610" elapsed="0.014217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:50.724102" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:50.727108" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:50.726269" elapsed="0.000984"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:50.727803" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:50.727479" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:50.727399" 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-19T00:38:50.728544" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:38:50.728213" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:50.728144" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:50.728882" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:50.735658" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:50.736436" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:50.736932" elapsed="0.000168"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:50.730886" elapsed="0.006362"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:50.395231" elapsed="0.342319"/>
</kw>
<msg time="2026-04-19T00:38:50.737972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:50.393510" elapsed="0.344684"/>
</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-19T00:38:50.392277" elapsed="0.346035"/>
</kw>
<msg time="2026-04-19T00:38:50.738369" 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-19T00:38:50.391098" elapsed="0.347336"/>
</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-19T00:38:50.741583" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:38:50.742119" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:50.742419" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:50.738905" elapsed="0.003681"/>
</kw>
<msg time="2026-04-19T00:38:50.742743" level="INFO">${output} = 1</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-19T00:38:50.389113" elapsed="0.353656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:50.743217" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:50.742951" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:50.743304" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:50.743456" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:50.386944" elapsed="0.356537"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:50.743528" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:50.743674" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:50.384749" elapsed="0.358950"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:50.744265" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:50.743854" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:50.383642" elapsed="0.360811">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:52.747933" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:52.747216" elapsed="0.000785"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:52.749987" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:52.749461" elapsed="0.000584"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:52.751230" 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-19T00:38:52.751378" 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-19T00:38:52.750979" elapsed="0.000444"/>
</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-19T00:38:52.757021" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:52.756342" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:52.756262" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:52.759689" 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-19T00:38:52.760069" 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-19T00:38:52.758701" elapsed="0.001517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:52.762334" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:52.761697" elapsed="0.000747"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:52.764173" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:52.763468" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:52.766557" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:52.766635" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:52.766270" 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-19T00:38:52.766872" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:52.768267" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:53.074128" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:52.767926" elapsed="0.306401"/>
</kw>
<msg time="2026-04-19T00:38:53.074403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:52.767562" elapsed="0.306919"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:52.765484" elapsed="0.309254"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:53.076225" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:53.098900" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:53.099613" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:53.099960" 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-19T00:38:53.075829" elapsed="0.024387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:53.102646" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:53.106013" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:53.104989" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:53.107221" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:53.106642" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:53.106512" elapsed="0.001017"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:53.108503" elapsed="0.000150"/>
</return>
<status status="PASS" start="2026-04-19T00:38:53.107855" elapsed="0.000908"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:53.107747" elapsed="0.001149"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:53.109110" elapsed="0.000085"/>
</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-19T00:38:53.116094" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:53.116686" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:53.117073" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:53.112220" elapsed="0.005063"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:52.754316" elapsed="0.363191"/>
</kw>
<msg time="2026-04-19T00:38:53.117825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:52.753265" elapsed="0.364629"/>
</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-19T00:38:52.752440" elapsed="0.365540"/>
</kw>
<msg time="2026-04-19T00:38:53.118021" 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-19T00:38:52.751659" elapsed="0.366426"/>
</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-19T00:38:53.121128" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:38:53.121606" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:53.121901" 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-19T00:38:53.118377" elapsed="0.003688"/>
</kw>
<msg time="2026-04-19T00:38:53.122160" level="INFO">${output} = 1</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-19T00:38:52.750370" elapsed="0.371816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:53.122613" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:53.122366" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:53.122701" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:53.122855" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:52.748481" elapsed="0.374399"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:53.122928" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:38:53.123129" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:52.746359" elapsed="0.376795"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:53.123862" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:53.123444" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:52.745293" elapsed="0.378788">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:55.127624" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:55.126821" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:55.129771" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:55.129165" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:55.131633" 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-19T00:38:55.131860" 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-19T00:38:55.131304" elapsed="0.000615"/>
</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-19T00:38:55.138778" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:55.138137" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:55.138040" elapsed="0.000938"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:55.141009" 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-19T00:38:55.141282" 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-19T00:38:55.140330" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:55.142918" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:55.142377" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:55.144750" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:55.144032" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:55.147193" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:55.147270" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:55.146891" 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-19T00:38:55.147502" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:55.148813" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:55.467333" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:55.148463" elapsed="0.319022"/>
</kw>
<msg time="2026-04-19T00:38:55.467571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:55.148096" elapsed="0.319567"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:55.146131" elapsed="0.321814"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:55.469455" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:55.492960" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:55.493500" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:55.493828" 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-19T00:38:55.469041" elapsed="0.025001"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:55.496280" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:55.499472" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:55.498439" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:55.500364" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:55.500008" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:55.499925" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:55.501038" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T00:38:55.500751" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:55.500684" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:55.501389" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:55.508229" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:55.508780" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:55.509267" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:55.503311" elapsed="0.006165"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:55.136208" elapsed="0.373486"/>
</kw>
<msg time="2026-04-19T00:38:55.510000" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:55.134769" elapsed="0.375306"/>
</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-19T00:38:55.133466" elapsed="0.376694"/>
</kw>
<msg time="2026-04-19T00:38:55.510202" 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-19T00:38:55.132309" elapsed="0.377938"/>
</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-19T00:38:55.513317" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:38:55.513802" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:55.514115" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:55.510537" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:38:55.514353" level="INFO">${output} = 1</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-19T00:38:55.130345" elapsed="0.384033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:55.514804" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:55.514558" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:55.514890" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:38:55.515046" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:55.128207" elapsed="0.386878"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:55.515134" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:38:55.515279" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:55.125961" elapsed="0.389342"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:55.515907" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:55.515463" elapsed="0.000522">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:55.124850" elapsed="0.391309">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:57.520135" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:57.519272" elapsed="0.000943"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:57.522611" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:57.521926" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:57.524667" 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-19T00:38:57.524920" 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-19T00:38:57.524261" elapsed="0.000720"/>
</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-19T00:38:57.529158" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:57.528640" elapsed="0.000602"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:57.528366" elapsed="0.000935"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:57.530780" 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-19T00:38:57.531024" 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-19T00:38:57.530340" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:57.532703" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:57.532161" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:57.534657" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:57.533907" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:57.537264" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:57.537342" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:57.536934" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:57.537582" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:57.538893" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:38:57.863813" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:57.538567" elapsed="0.325380"/>
</kw>
<msg time="2026-04-19T00:38:57.864062" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:57.538203" elapsed="0.325957"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:57.536147" elapsed="0.328290"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:38:57.865954" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:38:57.889657" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:38:57.890311" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:38:57.890650" 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-19T00:38:57.865553" elapsed="0.025307"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:57.893192" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:57.896654" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:57.895572" elapsed="0.001313"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:57.898004" elapsed="0.000106"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:38:57.897275" elapsed="0.000947"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:57.897150" elapsed="0.001202"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:38:57.899089" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T00:38:57.898675" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:57.898567" elapsed="0.000691"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:38:57.899339" 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-19T00:38:57.904393" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T00:38:57.905009" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:57.905397" 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-19T00:38:57.900707" elapsed="0.004897"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:57.526990" elapsed="0.378835"/>
</kw>
<msg time="2026-04-19T00:38:57.906187" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:57.526309" elapsed="0.379940"/>
</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-19T00:38:57.525737" elapsed="0.380594"/>
</kw>
<msg time="2026-04-19T00:38:57.906373" 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-19T00:38:57.525191" elapsed="0.381227"/>
</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-19T00:38:57.909457" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:38:57.909930" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:38:57.910269" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:38:57.906705" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T00:38:57.910510" level="INFO">${output} = 1</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-19T00:38:57.523241" elapsed="0.387294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:57.910961" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:57.910714" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:38:57.911073" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:38:57.911231" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:57.520887" elapsed="0.390370"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:38:57.911304" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:38:57.911450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:57.518394" elapsed="0.393080"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:38:57.912036" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:38:57.911632" elapsed="0.000564">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:57.517195" elapsed="0.395116">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:38:59.915798" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:38:59.915075" elapsed="0.000792"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:38:59.917941" level="INFO">${member_ip} = 10.30.171.206</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-19T00:38:59.917345" elapsed="0.000655"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:59.919750" 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-19T00:38:59.920171" 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-19T00:38:59.919437" elapsed="0.000798"/>
</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-19T00:38:59.926921" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:38:59.926445" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T00:38:59.926173" elapsed="0.000911"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:59.928536" 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-19T00:38:59.928777" 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-19T00:38:59.928078" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:38:59.930451" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:38:59.929880" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:38:59.932263" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:38:59.931547" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:38:59.934858" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:38:59.934935" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:38:59.934575" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:59.935186" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:38:59.936457" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:00.250955" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:38:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:38:59.936117" elapsed="0.314985"/>
</kw>
<msg time="2026-04-19T00:39:00.251182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:59.935736" elapsed="0.315529"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:38:59.933648" elapsed="0.317894"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:00.253032" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:00.275746" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:00.276321" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:00.276673" 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-19T00:39:00.252641" elapsed="0.024245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:00.279182" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:00.282356" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:00.281324" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:00.283498" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:00.282959" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:00.282836" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:00.284602" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:39:00.284148" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:00.284001" elapsed="0.000951"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:00.285168" elapsed="0.000086"/>
</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-19T00:39:00.291697" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:39:00.292325" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:00.292685" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:00.287931" elapsed="0.004962"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:38:59.924525" elapsed="0.368612"/>
</kw>
<msg time="2026-04-19T00:39:00.293449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:38:59.922969" elapsed="0.370538"/>
</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-19T00:38:59.921760" elapsed="0.371829"/>
</kw>
<msg time="2026-04-19T00:39:00.293634" 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-19T00:38:59.920593" elapsed="0.373097"/>
</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-19T00:39:00.296860" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:39:00.297362" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:00.297669" 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-19T00:39:00.293986" elapsed="0.003837"/>
</kw>
<msg time="2026-04-19T00:39:00.297915" level="INFO">${output} = 1</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-19T00:38:59.918508" elapsed="0.379432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:00.298600" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:00.298338" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:00.298689" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:00.298845" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:38:59.916417" elapsed="0.382454"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:00.298918" elapsed="0.000049"/>
</return>
<msg time="2026-04-19T00:39:00.299112" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:38:59.914258" elapsed="0.384879"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:00.299697" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:00.299295" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:38:59.913245" elapsed="0.386636">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:02.303944" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:02.302885" elapsed="0.001220"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:02.306669" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:02.306167" elapsed="0.000541"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:02.307847" 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-19T00:39:02.307989" 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-19T00:39:02.307622" elapsed="0.000403"/>
</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-19T00:39:02.315760" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:02.315253" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:02.312814" elapsed="0.003150"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:02.317479" 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-19T00:39:02.317739" 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-19T00:39:02.316971" elapsed="0.000873"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:02.319455" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:02.318874" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:02.321350" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:02.320583" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:02.323824" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:02.323903" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:02.323522" 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-19T00:39:02.324171" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:02.325658" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:02.645062" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:02.325320" elapsed="0.319891"/>
</kw>
<msg time="2026-04-19T00:39:02.645294" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:02.324745" elapsed="0.320636"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:02.322713" elapsed="0.322951"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:02.647274" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:02.670203" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:02.670737" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:02.671123" 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-19T00:39:02.646833" elapsed="0.024505"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:02.673589" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:02.676371" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:02.675658" elapsed="0.000867"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:02.677150" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:02.676780" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:02.676686" elapsed="0.000660"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:02.677850" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:39:02.677556" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:02.677486" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:02.678235" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:02.684510" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:39:02.685270" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:02.685632" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:02.680274" elapsed="0.005566"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:02.310851" elapsed="0.375231"/>
</kw>
<msg time="2026-04-19T00:39:02.686448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:02.309833" elapsed="0.376673"/>
</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-19T00:39:02.308988" elapsed="0.377599"/>
</kw>
<msg time="2026-04-19T00:39:02.686628" 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-19T00:39:02.308276" elapsed="0.378399"/>
</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-19T00:39:02.689700" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:39:02.690199" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:02.690499" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:02.686985" elapsed="0.003663"/>
</kw>
<msg time="2026-04-19T00:39:02.690740" level="INFO">${output} = 1</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-19T00:39:02.307020" elapsed="0.383746"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:02.691252" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:02.690985" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:02.691342" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:02.691494" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:02.304751" elapsed="0.386769"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:02.691566" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:02.691711" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:02.301760" elapsed="0.389976"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:02.692316" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:02.691892" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:02.300661" elapsed="0.391834">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:04.696082" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:04.695322" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:04.698303" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:04.697646" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:04.700140" 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-19T00:39:04.700373" 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-19T00:39:04.699780" elapsed="0.000651"/>
</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-19T00:39:04.705284" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:04.704783" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:04.704727" elapsed="0.000698"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:04.707106" 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-19T00:39:04.707348" 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-19T00:39:04.706418" elapsed="0.001030"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:04.708954" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:04.708411" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:04.710910" 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-19T00:39:04.710218" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:04.713284" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:04.713363" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:04.712965" 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-19T00:39:04.713601" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:04.715130" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:05.017687" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:04.714783" elapsed="0.303075"/>
</kw>
<msg time="2026-04-19T00:39:05.017950" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:04.714421" elapsed="0.303641"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:04.712209" elapsed="0.306160"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:05.019937" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:05.042698" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:05.043255" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:05.043584" 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-19T00:39:05.019507" elapsed="0.024287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:05.046024" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:05.049217" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:05.048233" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:05.050337" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:05.049860" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:05.049730" elapsed="0.000797"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:05.051004" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T00:39:05.050726" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:05.050660" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:05.051365" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:05.058051" elapsed="0.000400"/>
</kw>
<kw name="Open 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-19T00:39:05.058664" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:05.059052" 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-19T00:39:05.053271" elapsed="0.006006"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:04.703415" elapsed="0.356087"/>
</kw>
<msg time="2026-04-19T00:39:05.059806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:04.702707" elapsed="0.357156"/>
</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-19T00:39:04.702004" elapsed="0.357943"/>
</kw>
<msg time="2026-04-19T00:39:05.059988" 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-19T00:39:04.700781" elapsed="0.359339"/>
</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-19T00:39:05.063179" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:39:05.063654" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:05.063948" elapsed="0.000142"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:05.060481" elapsed="0.003662"/>
</kw>
<msg time="2026-04-19T00:39:05.064236" level="INFO">${output} = 1</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-19T00:39:04.698838" elapsed="0.365423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:05.064691" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:05.064444" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:05.064778" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:39:05.064932" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:04.696642" elapsed="0.368314"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:05.065005" elapsed="0.000068"/>
</return>
<msg time="2026-04-19T00:39:05.065203" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:04.694488" elapsed="0.370739"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:05.065820" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:05.065387" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:04.693379" elapsed="0.372635">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:07.069590" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:07.068820" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:07.071588" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:07.071167" elapsed="0.000459"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:07.072747" 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-19T00:39:07.072889" 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-19T00:39:07.072523" elapsed="0.000404"/>
</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-19T00:39:07.078272" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:07.077615" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:07.077538" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:07.080559" 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-19T00:39:07.080810" 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-19T00:39:07.079854" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:07.082558" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:07.081923" elapsed="0.000751"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:07.084380" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:07.083667" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:07.086907" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:07.086986" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:07.086621" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:07.087240" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:07.088564" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:07.398560" 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 Sun Apr 19 00:38:07 UTC 2026

  System load:  0.15               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:07.088239" elapsed="0.310477"/>
</kw>
<msg time="2026-04-19T00:39:07.398805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:07.087858" elapsed="0.311042"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:07.085775" elapsed="0.313449"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:07.400784" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:07.423768" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:07.424316" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:07.424652" 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-19T00:39:07.400361" elapsed="0.024505"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:07.427210" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:07.430002" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:07.429377" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:07.430743" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:07.430408" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:07.430323" elapsed="0.000607"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:07.431442" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:39:07.431159" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:07.431090" elapsed="0.000579"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:07.431780" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:07.438203" 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-19T00:39:07.438756" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:07.439136" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:07.433721" elapsed="0.005624"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:07.075668" elapsed="0.363900"/>
</kw>
<msg time="2026-04-19T00:39:07.439873" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:07.074701" elapsed="0.365231"/>
</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-19T00:39:07.073881" elapsed="0.366137"/>
</kw>
<msg time="2026-04-19T00:39:07.440077" 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-19T00:39:07.073171" elapsed="0.366955"/>
</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-19T00:39:07.443248" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:39:07.443725" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:07.444021" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:07.440420" elapsed="0.003768"/>
</kw>
<msg time="2026-04-19T00:39:07.444356" level="INFO">${output} = 1</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-19T00:39:07.071926" elapsed="0.372457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:07.444812" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:07.444564" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:07.444897" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:07.445095" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:07.070154" elapsed="0.374989"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:07.445196" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:39:07.445348" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:07.067969" elapsed="0.377404"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:07.445934" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:07.445533" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:07.066884" elapsed="0.379268">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:09.449859" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:09.449067" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:09.452100" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:09.451413" elapsed="0.000754"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:09.454086" 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-19T00:39:09.454325" 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-19T00:39:09.453650" elapsed="0.000727"/>
</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-19T00:39:09.460024" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:09.459354" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:09.459273" elapsed="0.000981"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:09.462703" 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-19T00:39:09.462959" 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-19T00:39:09.461673" elapsed="0.001404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:09.464627" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:09.464080" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:09.466526" 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-19T00:39:09.465728" elapsed="0.000900"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:09.468918" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:09.468995" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:09.468638" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:09.469251" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:09.470660" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:10.087685" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:09.470328" elapsed="0.617607"/>
</kw>
<msg time="2026-04-19T00:39:10.088022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:09.469802" elapsed="0.618333"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:09.467843" elapsed="0.620570"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:10.089947" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:10.112537" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:10.112855" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:10.113103" 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-19T00:39:10.089548" elapsed="0.023690"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:10.114683" elapsed="0.000645"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:10.116747" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:10.116139" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:10.117502" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:10.117150" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:10.117068" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:10.118218" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T00:39:10.117889" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:10.117821" elapsed="0.000622"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:10.118553" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:10.124374" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:10.124919" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:10.125294" 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-19T00:39:10.120418" elapsed="0.005100"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:09.457177" elapsed="0.668567"/>
</kw>
<msg time="2026-04-19T00:39:10.126169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:09.456173" elapsed="0.670056"/>
</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-19T00:39:09.455366" elapsed="0.670947"/>
</kw>
<msg time="2026-04-19T00:39:10.126354" 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-19T00:39:09.454605" elapsed="0.671796"/>
</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-19T00:39:10.129348" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T00:39:10.129865" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:10.130253" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:10.126692" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T00:39:10.130501" level="INFO">${output} = 1</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-19T00:39:09.452667" elapsed="0.677860"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:10.130954" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:10.130707" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:10.131061" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:39:10.131215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:09.450440" elapsed="0.680801"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:10.131297" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:10.131444" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:09.448194" elapsed="0.683283"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:10.132137" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:10.131686" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:09.446992" elapsed="0.685333">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:12.135931" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:12.135192" elapsed="0.000810"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:12.138083" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:12.137448" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:12.139931" 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-19T00:39:12.140191" 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-19T00:39:12.139605" elapsed="0.000648"/>
</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-19T00:39:12.148597" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:12.147930" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:12.147558" elapsed="0.001235"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:12.150820" 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-19T00:39:12.151236" 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-19T00:39:12.150179" elapsed="0.001199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:12.152912" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:12.152374" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:12.154768" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:12.154002" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:12.157139" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:12.157218" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:12.156839" 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-19T00:39:12.157456" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:12.158860" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:12.477271" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:12.158505" elapsed="0.318902"/>
</kw>
<msg time="2026-04-19T00:39:12.477488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:12.158008" elapsed="0.319565"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:12.156070" elapsed="0.321760"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:12.479320" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:12.502214" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:12.502718" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:12.503091" 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-19T00:39:12.478922" elapsed="0.024386"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:12.505529" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:12.508624" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:12.507668" elapsed="0.001098"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:12.509335" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:12.508988" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:12.508909" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:12.509997" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T00:39:12.509719" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:12.509652" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:12.510354" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:12.516898" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:39:12.517564" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:12.517920" 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-19T00:39:12.512335" elapsed="0.005811"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:12.144658" elapsed="0.373711"/>
</kw>
<msg time="2026-04-19T00:39:12.518677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:12.143176" elapsed="0.375558"/>
</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-19T00:39:12.141889" elapsed="0.376927"/>
</kw>
<msg time="2026-04-19T00:39:12.518856" 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-19T00:39:12.140602" elapsed="0.378300"/>
</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-19T00:39:12.521971" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:39:12.522465" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:12.522758" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:12.519208" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T00:39:12.522994" level="INFO">${output} = 1</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-19T00:39:12.138653" elapsed="0.384367"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:12.523465" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:12.523215" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:12.523576" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:39:12.523732" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:12.136493" elapsed="0.387265"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:12.523804" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:39:12.523947" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:12.134272" elapsed="0.389700"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:12.524582" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:12.524183" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:12.133203" elapsed="0.391587">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:14.528527" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:14.527723" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:14.530898" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:14.530279" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:14.532863" 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-19T00:39:14.533141" 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-19T00:39:14.532523" elapsed="0.000685"/>
</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-19T00:39:14.538863" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:14.538372" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:14.538068" elapsed="0.000942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:14.540555" 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-19T00:39:14.540805" 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-19T00:39:14.540071" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:14.542507" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:14.541910" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:14.544453" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:14.543705" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:14.547049" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:14.547131" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:14.546744" 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-19T00:39:14.547407" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:14.548704" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:14.857245" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:14.548372" elapsed="0.309013"/>
</kw>
<msg time="2026-04-19T00:39:14.857466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:14.547973" elapsed="0.309581"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:14.545850" elapsed="0.311984"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:14.859322" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:14.881997" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:14.882518" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:14.882853" 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-19T00:39:14.858922" elapsed="0.024215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:14.885412" elapsed="0.000963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:14.888625" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:14.887621" elapsed="0.001149"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:14.889414" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:14.888994" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:14.888918" elapsed="0.000684"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:14.890215" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T00:39:14.889802" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:14.889735" elapsed="0.000707"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:14.890551" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:14.896924" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:39:14.897491" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:14.897853" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:14.892409" elapsed="0.005737"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:14.536673" elapsed="0.361705"/>
</kw>
<msg time="2026-04-19T00:39:14.898684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:14.535942" elapsed="0.362800"/>
</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-19T00:39:14.534779" elapsed="0.364044"/>
</kw>
<msg time="2026-04-19T00:39:14.898866" 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-19T00:39:14.533569" elapsed="0.365343"/>
</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-19T00:39:14.901970" elapsed="0.000431"/>
</kw>
<kw name="Open 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-19T00:39:14.902570" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:14.902867" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:14.899226" elapsed="0.003792"/>
</kw>
<msg time="2026-04-19T00:39:14.903131" level="INFO">${output} = 1</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-19T00:39:14.531528" elapsed="0.371635"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:14.903596" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:14.903341" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:14.903685" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:39:14.903857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:14.529253" elapsed="0.374632"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:14.903933" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:39:14.904102" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:14.526788" elapsed="0.377340"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:14.904719" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:14.904321" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:14.525684" elapsed="0.379219">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:16.908488" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:16.907692" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:16.910720" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:16.910077" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:16.912639" 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-19T00:39:16.913010" 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-19T00:39:16.912299" elapsed="0.000807"/>
</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-19T00:39:16.919639" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:16.919157" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:16.917284" elapsed="0.002495"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:16.921218" 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-19T00:39:16.921463" 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-19T00:39:16.920764" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:16.923168" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:16.922576" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:16.924943" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:16.924244" elapsed="0.000877"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:16.927371" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:16.927451" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:16.927089" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:16.927687" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:16.928956" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:17.227247" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:16.928634" elapsed="0.298757"/>
</kw>
<msg time="2026-04-19T00:39:17.227474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:16.928272" elapsed="0.299292"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:16.926312" elapsed="0.301533"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:17.229344" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:17.252216" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:17.252460" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:17.252613" 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-19T00:39:17.228940" elapsed="0.023768"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:17.253741" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:17.255282" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:17.254804" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:17.255809" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:17.255557" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:17.255496" elapsed="0.000447"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:17.256314" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:39:17.256110" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:17.256057" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:17.256560" 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-19T00:39:17.261277" 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-19T00:39:17.261875" elapsed="0.000278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:17.262348" 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-19T00:39:17.257904" elapsed="0.004685"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:16.915939" elapsed="0.346870"/>
</kw>
<msg time="2026-04-19T00:39:17.263128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:16.915268" elapsed="0.347921"/>
</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-19T00:39:16.914710" elapsed="0.348560"/>
</kw>
<msg time="2026-04-19T00:39:17.263312" 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-19T00:39:16.913488" elapsed="0.349870"/>
</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-19T00:39:17.266486" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:39:17.266959" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:17.267271" 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-19T00:39:17.263677" elapsed="0.003741"/>
</kw>
<msg time="2026-04-19T00:39:17.267509" level="INFO">${output} = 1</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-19T00:39:16.911323" elapsed="0.356211"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:17.267955" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:17.267709" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:17.268057" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:39:17.268210" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:16.909021" elapsed="0.359214"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:17.268280" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:17.268421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:16.906807" elapsed="0.361638"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:17.268995" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:17.268600" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:16.905715" elapsed="0.363480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:19.272892" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:19.272121" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:19.275270" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:19.274465" elapsed="0.000880"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:19.276626" 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-19T00:39:19.276768" 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-19T00:39:19.276398" elapsed="0.000406"/>
</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-19T00:39:19.282101" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:19.281442" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:19.281365" elapsed="0.001028"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:19.284536" 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-19T00:39:19.284787" 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-19T00:39:19.283843" elapsed="0.001044"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:19.286505" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:19.285889" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:19.288415" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:19.287681" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:19.290950" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:19.291041" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:19.290635" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:19.291279" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:19.292524" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:19.603868" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:19.292200" elapsed="0.311817"/>
</kw>
<msg time="2026-04-19T00:39:19.604121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:19.291828" elapsed="0.312383"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:19.289742" elapsed="0.314748"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:19.606001" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:19.628906" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:19.629475" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:19.629806" 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-19T00:39:19.605592" elapsed="0.024424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:19.632354" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:19.635574" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:19.634555" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:19.636731" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:19.636192" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:19.636062" elapsed="0.000994"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:19.637860" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:39:19.637388" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:19.637281" elapsed="0.001088"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:19.638556" elapsed="0.000096"/>
</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-19T00:39:19.644004" 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-19T00:39:19.644572" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:19.644951" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:19.640517" elapsed="0.004666"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:19.279493" elapsed="0.365923"/>
</kw>
<msg time="2026-04-19T00:39:19.645838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:19.278531" elapsed="0.367368"/>
</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-19T00:39:19.277767" elapsed="0.368216"/>
</kw>
<msg time="2026-04-19T00:39:19.646085" 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-19T00:39:19.277024" elapsed="0.369114"/>
</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-19T00:39:19.649187" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:39:19.649664" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:19.649971" elapsed="0.000203"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:19.646437" elapsed="0.003791"/>
</kw>
<msg time="2026-04-19T00:39:19.650321" level="INFO">${output} = 1</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-19T00:39:19.275796" elapsed="0.374551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:19.650779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:19.650525" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:19.650869" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:19.651023" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:19.273481" elapsed="0.377586"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:19.651115" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:19.651262" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:19.271250" elapsed="0.380038"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:19.651873" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:19.651465" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:19.270025" elapsed="0.382050">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:21.655645" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:21.654885" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:21.657744" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:21.657145" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:21.659635" 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-19T00:39:21.659808" 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-19T00:39:21.659305" elapsed="0.000540"/>
</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-19T00:39:21.665128" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:21.664473" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:21.664393" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:21.667704" 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-19T00:39:21.667990" 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-19T00:39:21.666726" elapsed="0.001402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:21.669660" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:21.669115" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:21.671562" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:21.670843" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:21.673987" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:21.674093" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:21.673697" 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-19T00:39:21.674331" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:21.675615" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:21.998616" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:21.675291" elapsed="0.323413"/>
</kw>
<msg time="2026-04-19T00:39:21.998768" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:21.674912" elapsed="0.323930"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:21.672898" elapsed="0.326193"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:22.000462" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:22.023790" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:22.024329" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:22.024668" 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-19T00:39:22.000126" elapsed="0.024754"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:22.027116" elapsed="0.000941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:22.030253" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:22.029306" elapsed="0.001179"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:22.031478" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:22.030817" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:22.030701" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:22.032558" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T00:39:22.032110" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:22.031970" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:22.033176" elapsed="0.000085"/>
</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-19T00:39:22.039342" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:39:22.039881" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:22.040255" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:22.036070" elapsed="0.004393"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:21.662508" elapsed="0.378176"/>
</kw>
<msg time="2026-04-19T00:39:22.040986" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:21.661558" elapsed="0.379583"/>
</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-19T00:39:21.660798" elapsed="0.380429"/>
</kw>
<msg time="2026-04-19T00:39:22.041269" 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-19T00:39:21.660084" elapsed="0.381232"/>
</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-19T00:39:22.044363" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:39:22.044837" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:22.045210" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:22.041668" elapsed="0.003695"/>
</kw>
<msg time="2026-04-19T00:39:22.045453" level="INFO">${output} = 1</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-19T00:39:21.658313" elapsed="0.387166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:22.045911" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:22.045656" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:22.045999" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:39:22.046169" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:21.656205" elapsed="0.389989"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:22.046242" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:39:22.046392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:21.654012" elapsed="0.392404"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:22.046962" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:22.046572" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:21.652909" elapsed="0.394250">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:24.049521" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:24.049017" elapsed="0.000550"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:24.050867" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:24.050483" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:24.052052" 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-19T00:39:24.052197" 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-19T00:39:24.051813" elapsed="0.000422"/>
</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-19T00:39:24.057561" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:24.056912" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:24.056822" elapsed="0.000936"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:24.059874" 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-19T00:39:24.060159" 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-19T00:39:24.059134" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:24.061812" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:24.061268" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:24.063661" 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-19T00:39:24.062958" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:24.066090" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:24.066169" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:24.065775" 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-19T00:39:24.066403" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:24.067735" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:24.361409" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:24.067409" elapsed="0.294146"/>
</kw>
<msg time="2026-04-19T00:39:24.361640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:24.067045" elapsed="0.294682"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:24.065002" elapsed="0.297009"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:24.363518" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:24.386209" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:24.386796" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:24.387182" 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-19T00:39:24.363131" elapsed="0.024263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:24.389579" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:24.392075" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:24.391437" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:24.392769" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:24.392444" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:24.392363" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:24.393461" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:39:24.393182" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:24.393114" elapsed="0.000567"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:24.393792" elapsed="0.000051"/>
</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-19T00:39:24.400061" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:39:24.400603" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:24.400955" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:24.395742" elapsed="0.005435"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:24.054917" elapsed="0.346481"/>
</kw>
<msg time="2026-04-19T00:39:24.401701" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:24.053963" elapsed="0.347796"/>
</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-19T00:39:24.053198" elapsed="0.348654"/>
</kw>
<msg time="2026-04-19T00:39:24.401896" 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-19T00:39:24.052458" elapsed="0.349484"/>
</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-19T00:39:24.405003" 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-19T00:39:24.405502" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:24.405800" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:24.402247" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T00:39:24.406157" level="INFO">${output} = 1</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-19T00:39:24.051230" elapsed="0.354959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:24.406666" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:24.406411" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:24.406754" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:24.406910" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:24.049861" elapsed="0.357074"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:24.406983" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:24.407190" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:24.048494" elapsed="0.358721"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:24.407777" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:24.407375" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:24.047758" elapsed="0.360212">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:26.411548" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:26.410781" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:26.413457" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:26.413074" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:26.414618" 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-19T00:39:26.414759" 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-19T00:39:26.414397" elapsed="0.000399"/>
</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-19T00:39:26.420444" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:26.419768" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:26.419395" elapsed="0.001241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:26.422438" 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-19T00:39:26.422675" 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-19T00:39:26.421988" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:26.424423" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:26.423754" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:26.426287" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:26.425565" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:26.428741" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:26.428819" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:26.428433" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:26.429078" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:26.430344" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:26.744262" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:26.430005" elapsed="0.314488"/>
</kw>
<msg time="2026-04-19T00:39:26.744575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:26.429640" elapsed="0.315023"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:26.427646" elapsed="0.317310"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:26.746488" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:26.769634" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:26.770198" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:26.770536" 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-19T00:39:26.746097" elapsed="0.024646"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:26.772931" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:26.776104" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:26.775137" elapsed="0.001201"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:26.777257" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:26.776680" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:26.776559" elapsed="0.000990"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:26.778083" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T00:39:26.777863" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:26.777756" elapsed="0.000485"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:26.778319" 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-19T00:39:26.783093" 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-19T00:39:26.783652" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:26.784012" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:26.779710" elapsed="0.004527"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:26.417479" elapsed="0.366978"/>
</kw>
<msg time="2026-04-19T00:39:26.784783" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:26.416519" elapsed="0.368327"/>
</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-19T00:39:26.415753" elapsed="0.369176"/>
</kw>
<msg time="2026-04-19T00:39:26.784970" 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-19T00:39:26.415020" elapsed="0.370039"/>
</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-19T00:39:26.788132" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:39:26.788606" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:26.788898" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:26.785379" elapsed="0.003692"/>
</kw>
<msg time="2026-04-19T00:39:26.789166" level="INFO">${output} = 1</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-19T00:39:26.413795" elapsed="0.375396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:26.789613" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:26.789366" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:26.789701" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:39:26.789939" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:26.412098" elapsed="0.377870"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:26.790017" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:39:26.790183" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:26.409939" elapsed="0.380268"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:26.790820" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:26.790421" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:26.408842" elapsed="0.382165">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:28.794829" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:28.793961" elapsed="0.000938"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:28.797166" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:28.796492" elapsed="0.000736"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:28.799146" 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-19T00:39:28.799377" 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-19T00:39:28.798777" elapsed="0.000659"/>
</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-19T00:39:28.806698" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:28.806224" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:28.805925" elapsed="0.000912"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:28.808303" 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-19T00:39:28.808543" 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-19T00:39:28.807826" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:28.810182" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:28.809620" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:28.811970" 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-19T00:39:28.811256" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:28.814406" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:28.814483" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:28.814118" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:28.814713" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:28.815991" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:29.126462" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:28.815664" elapsed="0.310984"/>
</kw>
<msg time="2026-04-19T00:39:29.126749" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:28.815299" elapsed="0.311547"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:28.813352" elapsed="0.313820"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:29.128714" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:29.140993" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:29.141392" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:29.141605" 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-19T00:39:29.128287" elapsed="0.013451"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:29.143150" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:29.145124" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:29.144502" 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-19T00:39:29.145843" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:29.145491" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:29.145411" elapsed="0.000661"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:29.146554" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:39:29.146273" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:29.146206" elapsed="0.000565"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:29.146878" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:29.153324" 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-19T00:39:29.154250" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:29.154742" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:29.148705" elapsed="0.006341"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:28.804174" elapsed="0.351181"/>
</kw>
<msg time="2026-04-19T00:39:29.155774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:28.802457" elapsed="0.353394"/>
</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-19T00:39:28.801179" elapsed="0.354785"/>
</kw>
<msg time="2026-04-19T00:39:29.156020" 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-19T00:39:28.799788" elapsed="0.356316"/>
</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-19T00:39:29.159670" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:39:29.160159" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:29.160454" 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-19T00:39:29.156509" elapsed="0.004093"/>
</kw>
<msg time="2026-04-19T00:39:29.160691" level="INFO">${output} = 1</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-19T00:39:28.797766" elapsed="0.362950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:29.161172" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:29.160894" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:29.161261" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:29.161414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:28.795464" elapsed="0.365976"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:29.161486" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:29.161630" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:28.793098" elapsed="0.368557"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:29.162259" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:29.161811" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:28.791904" elapsed="0.370536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:31.165940" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:31.165212" elapsed="0.000797"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:31.168261" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:31.167572" elapsed="0.000750"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:31.170106" 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-19T00:39:31.170336" 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-19T00:39:31.169749" elapsed="0.000646"/>
</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-19T00:39:31.179155" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:31.178442" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:31.175998" elapsed="0.003350"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:31.181345" 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-19T00:39:31.181680" 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-19T00:39:31.180716" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:31.184045" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:31.183251" elapsed="0.001014"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:31.186581" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:31.185600" elapsed="0.001117"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:31.189383" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:31.189460" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:31.189100" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:31.189691" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:31.190941" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:31.500563" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:31.190617" elapsed="0.310073"/>
</kw>
<msg time="2026-04-19T00:39:31.500770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:31.190259" elapsed="0.310596"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:31.188330" elapsed="0.312804"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:31.502608" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:31.525548" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:31.526148" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:31.526489" 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-19T00:39:31.502207" elapsed="0.024495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:31.529078" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:31.532331" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:31.531298" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:31.533614" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:31.532919" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:31.532792" elapsed="0.001125"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:31.534464" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:39:31.534180" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:31.534111" elapsed="0.000580"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:31.534803" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:31.541542" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T00:39:31.542323" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:31.542813" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:31.536766" elapsed="0.006440"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:31.174152" elapsed="0.369371"/>
</kw>
<msg time="2026-04-19T00:39:31.543949" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:31.173201" elapsed="0.370852"/>
</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-19T00:39:31.172091" elapsed="0.372080"/>
</kw>
<msg time="2026-04-19T00:39:31.544227" 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-19T00:39:31.170747" elapsed="0.373543"/>
</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-19T00:39:31.547935" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:31.548431" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:31.548722" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:31.544692" elapsed="0.004176"/>
</kw>
<msg time="2026-04-19T00:39:31.548959" level="INFO">${output} = 1</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-19T00:39:31.168807" elapsed="0.380206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:31.549475" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:31.549224" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:31.549562" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:31.549713" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:31.166622" elapsed="0.383116"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:31.549784" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:31.549925" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:31.164377" elapsed="0.385572"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:31.550561" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:31.550120" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:31.163257" elapsed="0.387493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:33.554266" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:33.553500" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:33.556403" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:33.555773" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:33.558227" 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-19T00:39:33.558725" 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-19T00:39:33.557873" elapsed="0.000916"/>
</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-19T00:39:33.567205" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:33.566202" elapsed="0.001082"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:33.566079" elapsed="0.001265"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:33.568986" 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-19T00:39:33.569252" 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-19T00:39:33.568324" elapsed="0.001028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:33.570892" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:33.570334" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:33.572733" 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-19T00:39:33.571984" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:33.575105" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:33.575184" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:33.574798" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:33.575416" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:33.576847" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:33.856206" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:33.576525" elapsed="0.279837"/>
</kw>
<msg time="2026-04-19T00:39:33.856448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:33.575971" elapsed="0.280571"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:33.574022" elapsed="0.282807"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:33.858337" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:33.881257" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:33.881816" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:33.882195" 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-19T00:39:33.857924" elapsed="0.024485"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:33.884723" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:33.887945" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:33.886923" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:33.889093" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:33.888559" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:33.888436" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:33.890265" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T00:39:33.889749" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:33.889634" elapsed="0.001011"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:33.890838" elapsed="0.000090"/>
</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-19T00:39:33.896586" elapsed="0.000401"/>
</kw>
<kw name="Open 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-19T00:39:33.897290" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:33.897656" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:33.893057" elapsed="0.004808"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:33.563136" elapsed="0.334971"/>
</kw>
<msg time="2026-04-19T00:39:33.898411" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:33.561601" elapsed="0.336873"/>
</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-19T00:39:33.560376" elapsed="0.338180"/>
</kw>
<msg time="2026-04-19T00:39:33.898597" 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-19T00:39:33.559195" elapsed="0.339448"/>
</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-19T00:39:33.901673" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:39:33.902165" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:33.902461" 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-19T00:39:33.898935" elapsed="0.003673"/>
</kw>
<msg time="2026-04-19T00:39:33.902700" level="INFO">${output} = 1</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-19T00:39:33.556938" elapsed="0.345786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:33.903317" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:33.902924" elapsed="0.000437"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:33.903405" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:39:33.903562" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:33.554829" elapsed="0.348758"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:33.903634" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:33.903779" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:33.552642" elapsed="0.351161"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:33.904374" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:33.903959" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:33.551601" elapsed="0.352960">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:35.908495" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:35.907678" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:35.910687" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:35.909996" elapsed="0.000754"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:35.912580" 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-19T00:39:35.912813" 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-19T00:39:35.912245" elapsed="0.000629"/>
</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-19T00:39:35.918329" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:35.917802" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:35.917746" elapsed="0.000806"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:35.920307" 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-19T00:39:35.920555" 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-19T00:39:35.919593" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:35.922241" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:35.921621" elapsed="0.000738"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:35.924685" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:35.923619" elapsed="0.001212"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:35.928342" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:35.928451" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:35.927918" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:35.928872" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:35.930373" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:36.237552" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:35.929904" elapsed="0.307811"/>
</kw>
<msg time="2026-04-19T00:39:36.237802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:35.929536" elapsed="0.308359"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:35.926779" elapsed="0.311430"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:36.239699" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:36.262722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:36.263279" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:36.263621" 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-19T00:39:36.239312" elapsed="0.024525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:36.266193" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:36.269480" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:36.268429" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:36.270589" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:36.270085" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:36.269933" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:36.271682" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:39:36.271236" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:36.271125" elapsed="0.000966"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:36.272279" elapsed="0.000081"/>
</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-19T00:39:36.277573" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:39:36.278131" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:36.278486" 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-19T00:39:36.274194" elapsed="0.004497"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:35.916414" elapsed="0.362500"/>
</kw>
<msg time="2026-04-19T00:39:36.279296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:35.915603" elapsed="0.363752"/>
</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-19T00:39:35.914679" elapsed="0.364758"/>
</kw>
<msg time="2026-04-19T00:39:36.279483" 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-19T00:39:35.913265" elapsed="0.366274"/>
</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-19T00:39:36.282624" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:36.283110" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:36.283404" 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-19T00:39:36.279833" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T00:39:36.283640" level="INFO">${output} = 1</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-19T00:39:35.911280" elapsed="0.372386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:36.284116" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:36.283842" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:36.284207" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:36.284357" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:35.909060" elapsed="0.375323"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:36.284429" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:36.284591" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:35.906669" elapsed="0.377950"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:36.285259" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:36.284776" elapsed="0.000558">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:35.905455" elapsed="0.379991">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:38.288736" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:38.287978" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:38.290882" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:38.290273" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:38.292731" 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-19T00:39:38.292955" 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-19T00:39:38.292398" elapsed="0.000615"/>
</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-19T00:39:38.297813" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:38.297271" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:38.297211" elapsed="0.000758"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:38.299921" 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-19T00:39:38.300212" 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-19T00:39:38.298998" elapsed="0.001314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:38.301960" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:38.301313" elapsed="0.000884"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:38.304021" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:38.303270" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:38.306765" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:38.306852" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:38.306429" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:38.307114" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:38.308464" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:38.644505" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:38.308104" elapsed="0.336548"/>
</kw>
<msg time="2026-04-19T00:39:38.644736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:38.307716" elapsed="0.337108"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:38.305394" elapsed="0.339735"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:38.646620" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:38.668864" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:38.669387" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:38.669728" 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-19T00:39:38.646235" elapsed="0.023699"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:38.672138" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:38.674855" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:38.674225" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:38.675602" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:38.675263" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:38.675181" elapsed="0.000614"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:38.676323" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:39:38.676007" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:38.675936" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:38.676665" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:38.683677" elapsed="0.000771"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:38.684764" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:38.685277" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:38.678715" 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-19T00:39:38.295830" elapsed="0.389877"/>
</kw>
<msg time="2026-04-19T00:39:38.686015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:38.295096" elapsed="0.390992"/>
</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-19T00:39:38.294508" elapsed="0.391664"/>
</kw>
<msg time="2026-04-19T00:39:38.686213" 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-19T00:39:38.293398" elapsed="0.392861"/>
</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-19T00:39:38.689314" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:39:38.689787" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:38.690097" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:38.686611" elapsed="0.003635"/>
</kw>
<msg time="2026-04-19T00:39:38.690335" level="INFO">${output} = 1</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-19T00:39:38.291461" elapsed="0.398900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:38.690783" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:38.690537" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:38.690870" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:38.691020" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:38.289290" elapsed="0.401772"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:38.691111" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:38.691259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:38.287180" elapsed="0.404104"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:38.691830" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:38.691441" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:38.286150" elapsed="0.405865">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:40.693980" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:40.693610" elapsed="0.000406"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:40.694931" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:40.694657" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:40.695784" 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-19T00:39:40.695884" 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-19T00:39:40.695604" elapsed="0.000305"/>
</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-19T00:39:40.699970" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:40.699493" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:40.699197" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:40.701600" 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-19T00:39:40.701846" 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-19T00:39:40.701128" elapsed="0.000819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:40.703508" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:40.702947" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:40.705311" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:40.704599" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:40.707783" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:40.707861" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:40.707503" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:40.708110" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:40.709442" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:41.019129" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:40.709107" elapsed="0.310152"/>
</kw>
<msg time="2026-04-19T00:39:41.019336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:40.708731" elapsed="0.310685"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:40.706651" elapsed="0.313040"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:41.021158" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:41.044133" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:41.044660" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:41.044997" 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-19T00:39:41.020770" elapsed="0.024490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:41.047517" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:41.050730" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:41.049679" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:41.051988" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:41.051481" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:41.051352" elapsed="0.000973"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:41.053145" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T00:39:41.052654" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:41.052543" elapsed="0.000970"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:41.053696" elapsed="0.000084"/>
</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-19T00:39:41.059368" 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-19T00:39:41.059993" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:41.060380" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:41.056041" elapsed="0.004551"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:40.697845" elapsed="0.362975"/>
</kw>
<msg time="2026-04-19T00:39:41.061152" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:40.697134" elapsed="0.364077"/>
</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-19T00:39:40.696593" elapsed="0.364701"/>
</kw>
<msg time="2026-04-19T00:39:41.061335" 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-19T00:39:40.696082" elapsed="0.365347"/>
</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-19T00:39:41.064509" 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-19T00:39:41.064995" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:41.065318" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:41.061739" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T00:39:41.065621" level="INFO">${output} = 1</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-19T00:39:40.695189" elapsed="0.370458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:41.066112" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:41.065829" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:41.066204" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:41.066385" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:40.694249" elapsed="0.372168"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:41.066469" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:39:41.066621" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:40.693214" elapsed="0.373432"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:41.067293" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:41.066806" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:40.692663" elapsed="0.374821">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:43.069909" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:43.069405" elapsed="0.000553"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:43.071317" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:43.070891" elapsed="0.000468"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:43.072579" 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-19T00:39:43.072728" 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-19T00:39:43.072350" elapsed="0.000418"/>
</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-19T00:39:43.078743" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:43.078057" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:43.077606" elapsed="0.001341"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:43.081111" 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-19T00:39:43.081465" 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-19T00:39:43.080448" elapsed="0.001164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:43.083950" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:43.083124" elapsed="0.001048"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:43.085905" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:43.085192" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:43.088339" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:43.088416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:43.088049" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:43.088650" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:43.089892" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:43.387415" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:43.089573" elapsed="0.298082"/>
</kw>
<msg time="2026-04-19T00:39:43.387738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:43.089214" elapsed="0.298611"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:43.087259" elapsed="0.300863"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:43.389590" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:43.402163" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:43.402661" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:43.402994" 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-19T00:39:43.389205" elapsed="0.014047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:43.405523" elapsed="0.000934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:43.408737" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:43.407730" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:43.409961" elapsed="0.000123"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:43.409342" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:43.409221" elapsed="0.001104"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:43.410818" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:39:43.410530" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:43.410463" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:43.411173" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:43.417681" 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-19T00:39:43.418467" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:43.418956" elapsed="0.000159"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:43.413057" elapsed="0.006208"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:43.075606" elapsed="0.343968"/>
</kw>
<msg time="2026-04-19T00:39:43.419993" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:43.074604" elapsed="0.345585"/>
</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-19T00:39:43.073785" elapsed="0.346520"/>
</kw>
<msg time="2026-04-19T00:39:43.420361" 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-19T00:39:43.073004" elapsed="0.347425"/>
</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-19T00:39:43.424659" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:43.425336" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:43.425781" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:43.420832" elapsed="0.005159"/>
</kw>
<msg time="2026-04-19T00:39:43.426143" level="INFO">${output} = 1</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-19T00:39:43.071679" elapsed="0.354499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:43.426659" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:43.426415" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:43.426747" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:43.426898" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:43.070287" elapsed="0.356636"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:43.426969" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:39:43.427126" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:43.068829" elapsed="0.358322"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:43.427749" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:43.427350" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:43.068116" elapsed="0.359818">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:45.431376" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:45.430557" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:45.433479" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:45.432846" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:45.435381" 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-19T00:39:45.435546" 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-19T00:39:45.435012" elapsed="0.000572"/>
</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-19T00:39:45.443320" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:45.442522" elapsed="0.000900"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:45.440142" elapsed="0.003341"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:45.444926" 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-19T00:39:45.445185" 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-19T00:39:45.444481" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:45.446849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:45.446271" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:45.448722" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:45.447981" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:45.451200" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:45.451278" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:45.450844" elapsed="0.000458"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:45.451521" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:45.452772" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:45.763883" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:45.452453" elapsed="0.311590"/>
</kw>
<msg time="2026-04-19T00:39:45.764127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:45.452095" elapsed="0.312119"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:45.450061" elapsed="0.314429"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:45.765966" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:45.788646" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:45.789213" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:45.789544" 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-19T00:39:45.765583" elapsed="0.024172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:45.791937" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:45.795064" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:45.794100" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:45.796307" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:45.795645" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:45.795523" elapsed="0.001078"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:45.797432" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T00:39:45.796914" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:45.796810" elapsed="0.000782"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:45.797670" 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-19T00:39:45.802734" 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-19T00:39:45.803311" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:45.803689" 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-19T00:39:45.798968" elapsed="0.004948"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:45.438271" elapsed="0.365908"/>
</kw>
<msg time="2026-04-19T00:39:45.804489" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:45.437299" elapsed="0.367258"/>
</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-19T00:39:45.436532" elapsed="0.368112"/>
</kw>
<msg time="2026-04-19T00:39:45.804687" 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-19T00:39:45.435803" elapsed="0.368940"/>
</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-19T00:39:45.807992" elapsed="0.000499"/>
</kw>
<kw name="Open 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-19T00:39:45.808657" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:45.808963" elapsed="0.000160"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:45.805153" elapsed="0.004023"/>
</kw>
<msg time="2026-04-19T00:39:45.809271" level="INFO">${output} = 1</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-19T00:39:45.434020" elapsed="0.375277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:45.809764" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:45.809506" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:45.809855" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:39:45.810014" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:45.431898" elapsed="0.378157"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:45.810103" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:45.810249" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:45.429723" elapsed="0.380551"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:45.810832" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:45.810431" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:45.428682" elapsed="0.382336">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:47.814766" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:47.813900" elapsed="0.000940"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:47.817496" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:47.816744" elapsed="0.000820"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:47.819718" 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-19T00:39:47.819966" 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-19T00:39:47.819323" elapsed="0.000740"/>
</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-19T00:39:47.824915" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:47.824416" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:47.824354" elapsed="0.000723"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:47.826820" 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-19T00:39:47.827094" 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-19T00:39:47.826098" elapsed="0.001103"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:47.828802" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:47.828216" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:47.830715" 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-19T00:39:47.829929" elapsed="0.000888"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:47.833293" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:47.833371" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:47.832978" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:47.833665" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:47.834949" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:48.156017" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:47.834615" elapsed="0.321572"/>
</kw>
<msg time="2026-04-19T00:39:48.156272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:47.834245" elapsed="0.322120"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:47.832172" elapsed="0.324481"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:48.158155" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:48.181117" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:48.181623" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:48.181963" 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-19T00:39:48.157747" elapsed="0.024471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:48.184464" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:48.187668" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:48.186633" elapsed="0.001278"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:48.188909" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:48.188300" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:48.188176" elapsed="0.001070"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:48.190172" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T00:39:48.189573" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:48.189464" elapsed="0.001074"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:48.190714" 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-19T00:39:48.196536" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:39:48.197109" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:48.197472" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:48.193087" elapsed="0.004599"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:47.822973" elapsed="0.374943"/>
</kw>
<msg time="2026-04-19T00:39:48.198242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:47.822243" elapsed="0.376058"/>
</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-19T00:39:47.821680" elapsed="0.376706"/>
</kw>
<msg time="2026-04-19T00:39:48.198428" 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-19T00:39:47.820482" elapsed="0.377993"/>
</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-19T00:39:48.201620" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:39:48.202116" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:48.202414" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:48.198769" elapsed="0.003795"/>
</kw>
<msg time="2026-04-19T00:39:48.202655" level="INFO">${output} = 1</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-19T00:39:47.818122" elapsed="0.384559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:48.203124" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:48.202857" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:48.203212" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:39:48.203364" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:47.815656" elapsed="0.387734"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:48.203443" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:39:48.203608" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:47.812963" elapsed="0.390670"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:48.204269" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:48.203790" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:47.811810" elapsed="0.392645">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:50.207967" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:50.207237" elapsed="0.000828"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:50.209903" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:50.209519" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:50.211073" 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-19T00:39:50.211329" 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-19T00:39:50.210835" elapsed="0.000532"/>
</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-19T00:39:50.216728" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:50.216096" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:50.215998" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:50.219300" 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-19T00:39:50.219644" 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-19T00:39:50.218360" elapsed="0.001427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:50.221837" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:50.221170" elapsed="0.000778"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:50.223713" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:50.222935" elapsed="0.000876"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:50.226116" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:50.226196" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:50.225821" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:50.226436" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:50.227823" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:50.552415" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:50.227498" elapsed="0.325055"/>
</kw>
<msg time="2026-04-19T00:39:50.552635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:50.226997" elapsed="0.325722"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:50.225022" elapsed="0.327963"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:50.554454" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:50.566986" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:50.567515" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:50.567843" 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-19T00:39:50.554074" elapsed="0.014015"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:50.570277" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:50.573382" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:50.572422" elapsed="0.001184"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:50.574485" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:50.573952" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:50.573830" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:50.575613" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:39:50.575161" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:50.574990" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:50.576296" elapsed="0.000129"/>
</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-19T00:39:50.582861" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T00:39:50.583776" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:50.584372" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:50.578220" elapsed="0.006451"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:50.214088" elapsed="0.370895"/>
</kw>
<msg time="2026-04-19T00:39:50.585435" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:50.213113" elapsed="0.372402"/>
</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-19T00:39:50.212344" elapsed="0.373285"/>
</kw>
<msg time="2026-04-19T00:39:50.585688" 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-19T00:39:50.211596" elapsed="0.374156"/>
</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-19T00:39:50.589624" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:39:50.590115" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:50.590413" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:50.586183" elapsed="0.004380"/>
</kw>
<msg time="2026-04-19T00:39:50.590654" level="INFO">${output} = 1</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-19T00:39:50.210262" elapsed="0.380417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:50.591122" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:50.590857" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:50.591211" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:39:50.591363" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:50.208526" elapsed="0.382863"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:50.591436" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:39:50.591580" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:50.206349" elapsed="0.385256"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:50.592204" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:50.591761" elapsed="0.000515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:50.205288" elapsed="0.387112">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:52.595882" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:52.595090" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:52.597499" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:52.597096" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:52.598715" 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-19T00:39:52.598864" 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-19T00:39:52.598478" elapsed="0.000425"/>
</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-19T00:39:52.604446" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:52.603762" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:52.603680" elapsed="0.001071"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:52.607272" 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-19T00:39:52.607682" 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-19T00:39:52.606216" elapsed="0.001614"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:52.609621" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:52.609054" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:52.611552" 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-19T00:39:52.610703" elapsed="0.000956"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:52.613947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:52.614024" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:52.613654" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:52.614282" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:52.615711" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:52.937080" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:52.615365" elapsed="0.321970"/>
</kw>
<msg time="2026-04-19T00:39:52.937493" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:52.614859" elapsed="0.322794"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:52.612858" elapsed="0.325385"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:52.941375" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:52.964662" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:52.965277" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:52.965614" 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-19T00:39:52.940581" elapsed="0.025244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:52.968181" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:52.971430" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:52.970416" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:52.972533" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:52.972006" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:52.971879" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:52.973617" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T00:39:52.973176" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:52.973064" elapsed="0.000911"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:52.974386" elapsed="0.000084"/>
</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-19T00:39:52.979981" 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-19T00:39:52.980580" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:52.980952" 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-19T00:39:52.976431" elapsed="0.004753"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:52.601737" elapsed="0.379676"/>
</kw>
<msg time="2026-04-19T00:39:52.981807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:52.600737" elapsed="0.381140"/>
</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-19T00:39:52.599928" elapsed="0.382034"/>
</kw>
<msg time="2026-04-19T00:39:52.982004" 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-19T00:39:52.599161" elapsed="0.382977"/>
</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-19T00:39:52.985246" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:39:52.985746" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:52.986192" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:52.982448" elapsed="0.003898"/>
</kw>
<msg time="2026-04-19T00:39:52.986441" level="INFO">${output} = 1</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-19T00:39:52.597855" elapsed="0.388611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:52.986963" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:52.986679" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:52.987078" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:39:52.987241" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:52.596429" elapsed="0.390837"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:52.987314" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:39:52.987458" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:52.594257" elapsed="0.393226"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:52.988051" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:52.987640" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:52.593231" elapsed="0.395010">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:54.992134" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:54.991267" elapsed="0.000947"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:54.994438" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:54.993765" elapsed="0.000734"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:54.996161" 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-19T00:39:54.996311" 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-19T00:39:54.995897" elapsed="0.000452"/>
</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-19T00:39:55.002228" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:55.001523" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:55.001104" elapsed="0.001334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:55.004526" 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-19T00:39:55.004886" 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-19T00:39:55.003821" elapsed="0.001226"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:55.007404" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:55.006502" elapsed="0.001064"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:55.009539" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:55.008767" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:55.012293" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:55.012384" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:55.011781" elapsed="0.000630"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:55.012632" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:55.013981" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:55.332758" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:55.013633" elapsed="0.319293"/>
</kw>
<msg time="2026-04-19T00:39:55.333014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:55.013250" elapsed="0.319872"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:55.010869" elapsed="0.322547"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:55.334936" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:55.358142" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:55.358672" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:55.358931" 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-19T00:39:55.334536" elapsed="0.024588"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:55.360867" elapsed="0.000835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:55.363300" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:55.362698" elapsed="0.000728"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:55.363935" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:55.363633" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:55.363557" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:55.364566" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:39:55.364322" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:55.364262" elapsed="0.000514"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:55.364874" 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-19T00:39:55.370976" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:55.371701" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:55.372319" 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-19T00:39:55.366523" elapsed="0.006068"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:54.999216" elapsed="0.373646"/>
</kw>
<msg time="2026-04-19T00:39:55.373252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:54.998154" elapsed="0.375179"/>
</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-19T00:39:54.997347" elapsed="0.376090"/>
</kw>
<msg time="2026-04-19T00:39:55.373488" 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-19T00:39:54.996574" elapsed="0.376972"/>
</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-19T00:39:55.377655" elapsed="0.000412"/>
</kw>
<kw name="Open 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-19T00:39:55.378281" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:55.378702" elapsed="0.000202"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:55.374010" elapsed="0.004963"/>
</kw>
<msg time="2026-04-19T00:39:55.379109" level="INFO">${output} = 1</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-19T00:39:54.994988" elapsed="0.384153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:55.379719" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:55.379405" elapsed="0.000370"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:55.379830" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:39:55.380089" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:54.992717" elapsed="0.387409"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:55.380188" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:39:55.380372" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:54.990287" elapsed="0.390115"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:55.381110" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:55.380604" elapsed="0.000600">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:54.989126" elapsed="0.392222">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:57.385002" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:57.384222" elapsed="0.000885"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:57.387271" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:57.386597" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:57.388756" 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-19T00:39:57.388898" 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-19T00:39:57.388533" elapsed="0.000402"/>
</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-19T00:39:57.394515" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:57.393855" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:57.393475" elapsed="0.001234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:57.396728" 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-19T00:39:57.397082" 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-19T00:39:57.396117" elapsed="0.001106"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:57.399453" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:57.398564" elapsed="0.001042"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:57.401324" 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-19T00:39:57.400619" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:57.403808" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:57.403884" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:57.403520" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:57.404132" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:57.405476" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:39:57.723635" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:57.405152" elapsed="0.318645"/>
</kw>
<msg time="2026-04-19T00:39:57.723885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:57.404774" elapsed="0.319205"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:57.402615" elapsed="0.321681"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:39:57.725800" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:39:57.748753" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:39:57.749390" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:39:57.749721" 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-19T00:39:57.725401" elapsed="0.024536"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:57.752322" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:57.755629" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:57.754583" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:57.756730" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:39:57.756230" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:57.756106" elapsed="0.000909"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:39:57.757810" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T00:39:57.757368" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:57.757262" elapsed="0.000964"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:39:57.758402" elapsed="0.000082"/>
</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-19T00:39:57.764007" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T00:39:57.764613" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:57.765074" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:39:57.760608" 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-19T00:39:57.391621" elapsed="0.373894"/>
</kw>
<msg time="2026-04-19T00:39:57.765830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:57.390652" elapsed="0.375244"/>
</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-19T00:39:57.389895" elapsed="0.376084"/>
</kw>
<msg time="2026-04-19T00:39:57.766021" 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-19T00:39:57.389185" elapsed="0.376912"/>
</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-19T00:39:57.769244" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T00:39:57.769731" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:39:57.770056" 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-19T00:39:57.766400" elapsed="0.003808"/>
</kw>
<msg time="2026-04-19T00:39:57.770371" level="INFO">${output} = 1</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-19T00:39:57.387926" elapsed="0.382472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:57.770858" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:57.770604" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:39:57.770981" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:39:57.771229" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:57.385593" elapsed="0.385662"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:39:57.771303" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:39:57.771449" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:57.383306" elapsed="0.388167"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:39:57.772041" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:39:57.771630" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:57.382215" elapsed="0.390012">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:39:59.774618" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:39:59.774140" elapsed="0.000524"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:39:59.775920" level="INFO">${member_ip} = 10.30.171.206</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-19T00:39:59.775543" elapsed="0.000415"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:59.777088" 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-19T00:39:59.777264" 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-19T00:39:59.776853" elapsed="0.000449"/>
</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-19T00:39:59.785168" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:39:59.784393" elapsed="0.000902"/>
</branch>
<status status="PASS" start="2026-04-19T00:39:59.781912" elapsed="0.003467"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:59.787006" 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-19T00:39:59.787274" 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-19T00:39:59.786513" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:39:59.789020" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:39:59.788451" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:39:59.790841" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:39:59.790134" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:39:59.793359" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:39:59.793437" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:39:59.793046" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:59.793679" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:39:59.794963" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:00.107487" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:39:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:39:59.794639" elapsed="0.313105"/>
</kw>
<msg time="2026-04-19T00:40:00.107827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:59.794276" elapsed="0.313642"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:39:59.792255" elapsed="0.315977"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:00.109711" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:00.134172" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:00.134803" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:00.135214" 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-19T00:40:00.109316" elapsed="0.026133"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:00.138014" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:00.141320" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:00.140572" elapsed="0.000896"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:00.142044" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:00.141693" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:00.141614" elapsed="0.000651"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:00.142771" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T00:40:00.142478" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:00.142407" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:00.143251" elapsed="0.000055"/>
</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-19T00:40:00.149933" 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-19T00:40:00.150513" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:00.150879" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:00.145251" elapsed="0.005857"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:39:59.779969" elapsed="0.371369"/>
</kw>
<msg time="2026-04-19T00:40:00.151652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:39:59.779006" elapsed="0.372709"/>
</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-19T00:39:59.778266" elapsed="0.373530"/>
</kw>
<msg time="2026-04-19T00:40:00.151837" 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-19T00:39:59.777524" elapsed="0.374359"/>
</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-19T00:40:00.154942" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:40:00.155442" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:00.155741" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:00.152250" elapsed="0.003639"/>
</kw>
<msg time="2026-04-19T00:40:00.155980" level="INFO">${output} = 1</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-19T00:39:59.776281" elapsed="0.379724"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:00.156584" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:00.156329" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:00.156675" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:40:00.156859" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:39:59.774953" elapsed="0.381933"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:00.156933" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:40:00.157095" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:39:59.773568" elapsed="0.383553"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:00.157741" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:00.157346" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:39:59.772838" elapsed="0.385086">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:02.161663" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:02.160886" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:02.163806" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:02.163203" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:02.165671" 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-19T00:40:02.165902" 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-19T00:40:02.165343" elapsed="0.000619"/>
</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-19T00:40:02.170468" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:02.169980" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:02.169922" elapsed="0.000688"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:02.172352" 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-19T00:40:02.172608" 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-19T00:40:02.171638" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:02.174272" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:02.173704" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:02.176228" 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-19T00:40:02.175412" elapsed="0.000914"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:02.178596" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:02.178674" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:02.178315" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:02.178916" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:02.180413" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:02.535160" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:02.179892" elapsed="0.355418"/>
</kw>
<msg time="2026-04-19T00:40:02.535396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:02.179518" elapsed="0.355968"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:02.177530" elapsed="0.358283"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:02.537345" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:02.560983" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:02.561538" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:02.561872" 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-19T00:40:02.536919" elapsed="0.025203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:02.564351" elapsed="0.000998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:02.566987" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:02.566375" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:02.567747" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:02.567419" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:02.567340" elapsed="0.000592"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:02.568446" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T00:40:02.568162" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:02.568091" elapsed="0.000581"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:02.568788" elapsed="0.000055"/>
</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-19T00:40:02.575022" elapsed="0.000435"/>
</kw>
<kw name="Open 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-19T00:40:02.575672" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:02.576036" 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-19T00:40:02.570717" 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-19T00:40:02.168587" elapsed="0.407902"/>
</kw>
<msg time="2026-04-19T00:40:02.576797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:02.167879" elapsed="0.408977"/>
</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-19T00:40:02.167337" elapsed="0.409602"/>
</kw>
<msg time="2026-04-19T00:40:02.576981" 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-19T00:40:02.166358" elapsed="0.410673"/>
</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-19T00:40:02.580172" 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-19T00:40:02.580661" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:02.580960" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:02.577378" elapsed="0.003755"/>
</kw>
<msg time="2026-04-19T00:40:02.581229" level="INFO">${output} = 1</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-19T00:40:02.164382" elapsed="0.416874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:02.581740" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:02.581482" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:02.581830" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:40:02.581990" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:02.162222" elapsed="0.419794"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:02.582220" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:40:02.582379" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:02.160019" elapsed="0.422387"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:02.583000" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:02.582569" elapsed="0.000569">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:02.158959" elapsed="0.424295">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:04.586786" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:04.586042" elapsed="0.000812"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:04.589098" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:04.588460" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:04.590897" 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-19T00:40:04.591157" 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-19T00:40:04.590581" elapsed="0.000638"/>
</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-19T00:40:04.596038" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:04.595573" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:04.595517" elapsed="0.000679"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:04.597869" 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-19T00:40:04.598133" 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-19T00:40:04.597192" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:04.599822" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:04.599283" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:04.601648" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:04.600933" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:04.604226" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:04.604304" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:04.603911" 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-19T00:40:04.604543" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:04.605849" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:04.952876" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:04.605521" elapsed="0.347507"/>
</kw>
<msg time="2026-04-19T00:40:04.953133" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:04.605157" elapsed="0.348069"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:04.602943" elapsed="0.350557"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:04.955007" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:04.978192" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:04.978680" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:04.979045" 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-19T00:40:04.954620" elapsed="0.024685"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:04.981522" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:04.984608" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:04.983755" elapsed="0.001004"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:04.985448" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:04.984994" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:04.984910" elapsed="0.000738"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:04.986184" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:40:04.985858" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:04.985787" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:04.986529" elapsed="0.000056"/>
</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-19T00:40:04.993090" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T00:40:04.993638" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:04.993996" elapsed="0.000127"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:04.988638" elapsed="0.005593"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:04.594216" elapsed="0.400236"/>
</kw>
<msg time="2026-04-19T00:40:04.994754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:04.593488" elapsed="0.401323"/>
</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-19T00:40:04.592785" elapsed="0.402109"/>
</kw>
<msg time="2026-04-19T00:40:04.994936" 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-19T00:40:04.591570" elapsed="0.403415"/>
</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-19T00:40:04.998149" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:40:04.998624" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:04.998918" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:04.995332" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T00:40:04.999199" level="INFO">${output} = 1</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-19T00:40:04.589644" elapsed="0.409581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:04.999676" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:04.999403" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:04.999764" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:04.999916" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:04.587480" elapsed="0.412461"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:04.999988" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:05.000157" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:04.585230" elapsed="0.414953"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:05.000730" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:05.000339" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:04.584206" elapsed="0.416708">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:07.004429" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:07.003679" elapsed="0.000819"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:07.006413" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:07.005969" elapsed="0.000484"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:07.007669" 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-19T00:40:07.007927" 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-19T00:40:07.007437" elapsed="0.000531"/>
</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-19T00:40:07.013628" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:07.012939" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:07.012861" elapsed="0.001013"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:07.015725" 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-19T00:40:07.015982" 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-19T00:40:07.014909" elapsed="0.001206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:07.017657" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:07.017110" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:07.019501" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:07.018781" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:07.021922" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:07.022038" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:07.021637" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:07.022289" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:07.023558" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:07.371009" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:07.023231" elapsed="0.347951"/>
</kw>
<msg time="2026-04-19T00:40:07.371269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:07.022849" elapsed="0.348532"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:07.020860" elapsed="0.350808"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:07.373211" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:07.396236" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:07.396743" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:07.397130" 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-19T00:40:07.372770" elapsed="0.024601"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:07.399594" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:07.402753" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:07.401757" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:07.403961" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:07.403453" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:07.403331" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:07.405037" elapsed="0.000143"/>
</return>
<status status="PASS" start="2026-04-19T00:40:07.404597" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:07.404495" elapsed="0.000968"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:07.405644" elapsed="0.000080"/>
</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-19T00:40:07.410650" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:07.411341" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:07.411700" 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-19T00:40:07.407303" elapsed="0.004604"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:07.010879" elapsed="0.401268"/>
</kw>
<msg time="2026-04-19T00:40:07.412450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:07.009830" elapsed="0.402679"/>
</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-19T00:40:07.008991" elapsed="0.403602"/>
</kw>
<msg time="2026-04-19T00:40:07.412634" 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-19T00:40:07.008235" elapsed="0.404446"/>
</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-19T00:40:07.415767" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:40:07.416268" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:07.416562" 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-19T00:40:07.412972" elapsed="0.003737"/>
</kw>
<msg time="2026-04-19T00:40:07.416798" level="INFO">${output} = 1</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-19T00:40:07.006796" elapsed="0.410027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:07.417269" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:07.416998" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:07.417356" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:07.417508" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:07.004948" elapsed="0.412584"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:07.417578" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:07.417739" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:07.002843" elapsed="0.414921"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:07.418346" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:07.417920" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:07.001788" elapsed="0.416744">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:09.422258" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:09.421494" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:09.424378" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:09.423738" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:09.426244" 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-19T00:40:09.426485" 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-19T00:40:09.425867" elapsed="0.000678"/>
</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-19T00:40:09.431539" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:09.431025" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:09.430731" elapsed="0.001036"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:09.433218" 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-19T00:40:09.433462" 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-19T00:40:09.432753" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:09.435158" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:09.434577" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:09.437096" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:09.436391" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:09.439607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:09.439687" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:09.439299" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:09.439946" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:09.441416" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:09.802879" 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 Sun Apr 19 00:39:09 UTC 2026

  System load:  0.1                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:09.441088" elapsed="0.362062"/>
</kw>
<msg time="2026-04-19T00:40:09.803308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:09.440708" elapsed="0.362759"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:09.438378" elapsed="0.365628"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:09.806715" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:09.829517" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:09.830013" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:09.830396" 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-19T00:40:09.806322" elapsed="0.024285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:09.832837" elapsed="0.000935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:09.835408" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:09.834734" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:09.836172" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:09.835797" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:09.835713" elapsed="0.000656"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:09.836934" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T00:40:09.836580" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:09.836509" elapsed="0.000789"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:09.837467" elapsed="0.000100"/>
</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-19T00:40:09.845761" elapsed="0.000536"/>
</kw>
<kw name="Open 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-19T00:40:09.846597" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:09.847211" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:09.840184" elapsed="0.007324"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:09.429413" elapsed="0.418397"/>
</kw>
<msg time="2026-04-19T00:40:09.848252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:09.428712" elapsed="0.419610"/>
</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-19T00:40:09.428162" elapsed="0.420245"/>
</kw>
<msg time="2026-04-19T00:40:09.848450" 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-19T00:40:09.426890" elapsed="0.421607"/>
</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-19T00:40:09.851590" 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-19T00:40:09.852104" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:09.852410" 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-19T00:40:09.848804" elapsed="0.003760"/>
</kw>
<msg time="2026-04-19T00:40:09.852659" level="INFO">${output} = 1</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-19T00:40:09.424920" elapsed="0.427766"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:09.853180" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:09.852894" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:09.853274" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:40:09.853448" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:09.422776" elapsed="0.430700"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:09.853525" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:40:09.853675" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:09.420646" elapsed="0.433056"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:09.854303" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:09.853878" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:09.419550" elapsed="0.434943">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:11.858106" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:11.857332" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:11.859859" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:11.859480" elapsed="0.000417"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:11.861020" 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-19T00:40:11.861187" 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-19T00:40:11.860793" elapsed="0.000431"/>
</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-19T00:40:11.866833" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:11.866157" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:11.865762" elapsed="0.001267"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:11.868602" 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-19T00:40:11.868841" 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-19T00:40:11.868141" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:11.870472" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:11.869911" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:11.872386" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:11.871669" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:11.874777" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:11.874882" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:11.874500" 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-19T00:40:11.875135" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:11.876389" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:12.453488" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:11.876064" elapsed="0.577591"/>
</kw>
<msg time="2026-04-19T00:40:12.453746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:11.875689" elapsed="0.578153"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:11.873729" elapsed="0.580429"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:12.455680" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:12.478747" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:12.479311" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:12.479648" 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-19T00:40:12.455260" elapsed="0.024600"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:12.482157" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:12.485403" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:12.484355" elapsed="0.001282"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:12.486545" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:12.485997" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:12.485868" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:12.487642" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:40:12.487198" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:12.487088" elapsed="0.000907"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:12.488335" elapsed="0.000084"/>
</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-19T00:40:12.494333" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:40:12.494882" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:12.495261" 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-19T00:40:12.490841" elapsed="0.004627"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:11.863926" elapsed="0.631765"/>
</kw>
<msg time="2026-04-19T00:40:12.495998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:11.862977" elapsed="0.633142"/>
</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-19T00:40:11.862187" elapsed="0.634019"/>
</kw>
<msg time="2026-04-19T00:40:12.496247" 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-19T00:40:11.861443" elapsed="0.634851"/>
</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-19T00:40:12.499355" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:12.499826" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:12.500223" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:12.496651" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T00:40:12.500470" level="INFO">${output} = 1</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-19T00:40:11.860221" elapsed="0.640274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:12.500913" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:12.500668" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:12.500999" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:40:12.501171" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:11.858707" elapsed="0.642489"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:12.501243" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:12.501386" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:11.856468" elapsed="0.644957"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:12.501985" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:12.501584" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:11.855391" elapsed="0.646806">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:14.505851" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:14.505120" elapsed="0.000801"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:14.507983" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:14.507377" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:14.509849" 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-19T00:40:14.510105" 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-19T00:40:14.509517" elapsed="0.000649"/>
</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-19T00:40:14.517134" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:14.516633" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:14.514699" elapsed="0.002576"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:14.518695" 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-19T00:40:14.518932" 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-19T00:40:14.518257" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:14.520627" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:14.520092" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:14.522402" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:14.521700" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:14.524790" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:14.524866" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:14.524507" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:14.525116" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:14.526434" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:14.878412" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:14.526103" elapsed="0.352428"/>
</kw>
<msg time="2026-04-19T00:40:14.878607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:14.525728" elapsed="0.352960"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:14.523738" elapsed="0.355201"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:14.880394" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:14.893142" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:14.893464" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:14.893614" 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-19T00:40:14.879993" elapsed="0.013717"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:14.894727" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:14.896653" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:14.896211" elapsed="0.000545"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:14.897193" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:14.896920" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:14.896861" elapsed="0.000466"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:14.897673" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-19T00:40:14.897471" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:14.897423" elapsed="0.000405"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:14.897908" 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-19T00:40:14.902783" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:40:14.903347" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:14.903699" 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-19T00:40:14.899341" elapsed="0.004567"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:14.513388" elapsed="0.390763"/>
</kw>
<msg time="2026-04-19T00:40:14.904462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:14.512680" elapsed="0.391838"/>
</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-19T00:40:14.511759" elapsed="0.392842"/>
</kw>
<msg time="2026-04-19T00:40:14.904642" 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-19T00:40:14.510515" elapsed="0.394172"/>
</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-19T00:40:14.907803" 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-19T00:40:14.908295" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:14.908587" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:14.904976" elapsed="0.003757"/>
</kw>
<msg time="2026-04-19T00:40:14.908880" level="INFO">${output} = 1</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-19T00:40:14.508567" elapsed="0.400339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:14.909363" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:14.909111" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:14.909449" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:40:14.909597" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:14.506410" elapsed="0.403212"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:14.909668" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:40:14.909809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:14.504265" elapsed="0.405568"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:14.910588" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:14.909990" elapsed="0.000674">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:14.503160" elapsed="0.407615">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:16.914527" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:16.913670" elapsed="0.000929"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:16.916606" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:16.916150" elapsed="0.000496"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:16.917795" 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-19T00:40:16.917941" 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-19T00:40:16.917560" elapsed="0.000419"/>
</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-19T00:40:16.923343" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:16.922687" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:16.922612" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:16.925488" 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-19T00:40:16.925731" 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-19T00:40:16.924806" elapsed="0.001024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:16.927428" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:16.926799" elapsed="0.000740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:16.929342" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:16.928612" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:16.931813" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:16.931893" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:16.931453" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:16.932382" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:16.933660" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:17.238128" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:16.933333" elapsed="0.305033"/>
</kw>
<msg time="2026-04-19T00:40:17.238449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:16.932947" elapsed="0.305588"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:16.930663" elapsed="0.308140"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:17.240298" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:17.262853" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:17.263458" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:17.263814" 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-19T00:40:17.239898" elapsed="0.024185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:17.266491" elapsed="0.000615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:17.268545" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:17.267910" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:17.269304" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:17.268924" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:17.268843" elapsed="0.000646"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:17.270000" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T00:40:17.269692" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:17.269624" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:17.270363" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:17.276248" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:17.276797" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:17.277270" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:17.272224" 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-19T00:40:16.920775" elapsed="0.356929"/>
</kw>
<msg time="2026-04-19T00:40:17.278048" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:16.919781" elapsed="0.358330"/>
</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-19T00:40:16.918951" elapsed="0.359245"/>
</kw>
<msg time="2026-04-19T00:40:17.278237" 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-19T00:40:16.918227" elapsed="0.360057"/>
</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-19T00:40:17.281359" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:40:17.281885" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:17.282207" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:17.278580" elapsed="0.003778"/>
</kw>
<msg time="2026-04-19T00:40:17.282448" level="INFO">${output} = 1</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-19T00:40:16.916956" elapsed="0.365517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:17.282901" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:17.282654" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:17.282989" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:17.283160" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:16.915110" elapsed="0.368075"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:17.283231" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:17.283377" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:16.912807" elapsed="0.370594"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:17.284010" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:17.283614" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:16.911706" elapsed="0.372512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:19.287853" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:19.287078" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:19.290002" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:19.289397" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:19.291875" 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-19T00:40:19.292136" 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-19T00:40:19.291528" elapsed="0.000670"/>
</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-19T00:40:19.300420" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:19.299707" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:19.299632" elapsed="0.000983"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:19.302943" 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-19T00:40:19.303307" 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-19T00:40:19.301987" elapsed="0.001463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:19.305467" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:19.304895" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:19.307249" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:19.306540" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:19.309670" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:19.309747" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:19.309383" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:19.309979" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:19.311254" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:19.622262" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:19.310911" elapsed="0.311503"/>
</kw>
<msg time="2026-04-19T00:40:19.622502" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:19.310552" elapsed="0.312044"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:19.308617" elapsed="0.314266"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:19.624424" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:19.647366" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:19.647959" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:19.648371" 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-19T00:40:19.623993" elapsed="0.024593"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:19.650900" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:19.654188" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:19.653106" elapsed="0.001314"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:19.655301" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:19.654767" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:19.654644" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:19.656393" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T00:40:19.655913" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:19.655806" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:19.656925" elapsed="0.000084"/>
</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-19T00:40:19.662745" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:40:19.663306" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:19.663661" 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-19T00:40:19.659329" elapsed="0.004539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:19.296555" elapsed="0.367552"/>
</kw>
<msg time="2026-04-19T00:40:19.664413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:19.294967" elapsed="0.369506"/>
</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-19T00:40:19.293733" elapsed="0.370823"/>
</kw>
<msg time="2026-04-19T00:40:19.664598" 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-19T00:40:19.292556" elapsed="0.372089"/>
</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-19T00:40:19.667736" 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-19T00:40:19.668256" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:19.668570" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:19.664937" elapsed="0.003782"/>
</kw>
<msg time="2026-04-19T00:40:19.668811" level="INFO">${output} = 1</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-19T00:40:19.290579" elapsed="0.378257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:19.669296" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:19.669016" elapsed="0.000346"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:19.669409" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:40:19.669590" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:19.288422" elapsed="0.381194"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:19.669665" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:19.669810" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:19.286229" elapsed="0.383606"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:19.670475" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:19.669994" elapsed="0.000556">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:19.285127" elapsed="0.385535">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:21.674284" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:21.673519" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:21.676657" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:21.675926" elapsed="0.000794"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:21.678558" 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-19T00:40:21.678788" 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-19T00:40:21.678227" elapsed="0.000622"/>
</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-19T00:40:21.684323" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:21.683833" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:21.683776" elapsed="0.000686"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:21.686170" 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-19T00:40:21.686416" 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-19T00:40:21.685475" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:21.688065" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:21.687504" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:21.690062" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:21.689279" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:21.692494" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:21.692572" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:21.692204" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:21.692810" elapsed="0.000466"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:21.694250" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:22.018018" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:21.693882" elapsed="0.324328"/>
</kw>
<msg time="2026-04-19T00:40:22.018300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:21.693500" elapsed="0.324897"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:21.691371" elapsed="0.327326"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:22.020235" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:22.042864" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:22.043477" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:22.043838" 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-19T00:40:22.019814" elapsed="0.024307"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:22.046629" elapsed="0.000617"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:22.048676" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:22.048031" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:22.049529" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:22.049101" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:22.048969" elapsed="0.000751"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:22.050282" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:40:22.049924" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:22.049855" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:22.050909" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:22.056956" 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-19T00:40:22.057632" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:22.057997" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:22.052844" elapsed="0.005414"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:21.682422" elapsed="0.376071"/>
</kw>
<msg time="2026-04-19T00:40:22.058802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:21.681723" elapsed="0.377139"/>
</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-19T00:40:21.680452" elapsed="0.378494"/>
</kw>
<msg time="2026-04-19T00:40:22.058987" 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-19T00:40:21.679233" elapsed="0.379818"/>
</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-19T00:40:22.062175" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:40:22.062692" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:22.062987" elapsed="0.000128"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:22.059350" elapsed="0.003819"/>
</kw>
<msg time="2026-04-19T00:40:22.063263" level="INFO">${output} = 1</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-19T00:40:21.677272" elapsed="0.386017"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:22.063727" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:22.063473" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:22.063814" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:40:22.063968" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:21.674963" elapsed="0.389030"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:22.064058" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:40:22.064209" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:21.672626" elapsed="0.391608"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:22.064804" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:22.064391" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:21.671557" elapsed="0.393439">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:24.068588" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:24.067757" elapsed="0.000912"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:24.070759" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:24.070154" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:24.072662" 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-19T00:40:24.073071" 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-19T00:40:24.072330" elapsed="0.000805"/>
</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-19T00:40:24.080206" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:24.079514" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:24.079140" elapsed="0.001262"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:24.082382" 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-19T00:40:24.082715" 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-19T00:40:24.081752" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:24.086281" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:24.084856" elapsed="0.001670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:24.089705" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:24.088715" elapsed="0.001126"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:24.093018" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:24.093152" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:24.092733" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:24.093388" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:24.094683" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:24.412280" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:24.094357" elapsed="0.318090"/>
</kw>
<msg time="2026-04-19T00:40:24.412537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:24.093939" elapsed="0.318695"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:24.091694" elapsed="0.321266"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:24.414499" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:24.437632" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:24.438212" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:24.438558" 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-19T00:40:24.414087" elapsed="0.024687"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:24.441241" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:24.444761" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:24.443659" elapsed="0.001434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:24.445869" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:24.445478" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:24.445345" elapsed="0.000665"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:24.446400" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T00:40:24.446182" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:24.446131" elapsed="0.000473"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:24.446699" 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-19T00:40:24.451811" 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-19T00:40:24.452507" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:24.452921" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:24.448176" elapsed="0.004983"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:24.077313" elapsed="0.376075"/>
</kw>
<msg time="2026-04-19T00:40:24.453721" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:24.076019" elapsed="0.377765"/>
</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-19T00:40:24.074688" elapsed="0.379184"/>
</kw>
<msg time="2026-04-19T00:40:24.453914" 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-19T00:40:24.073491" elapsed="0.380471"/>
</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-19T00:40:24.457082" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:24.457579" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:24.457879" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:24.454279" elapsed="0.003767"/>
</kw>
<msg time="2026-04-19T00:40:24.458146" level="INFO">${output} = 1</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-19T00:40:24.071358" elapsed="0.386814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:24.458611" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:24.458355" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:24.458700" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:24.458855" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:24.069168" elapsed="0.389712"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:24.458927" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:24.459170" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:24.066907" elapsed="0.392289"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:24.459814" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:24.459358" elapsed="0.000539">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:24.065829" elapsed="0.394185">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:26.463753" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:26.462958" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:26.465892" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:26.465258" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:26.467746" 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-19T00:40:26.467972" 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-19T00:40:26.467419" elapsed="0.000641"/>
</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-19T00:40:26.474486" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:26.473800" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:26.473391" elapsed="0.001383"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:26.476900" 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-19T00:40:26.477298" 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-19T00:40:26.476231" elapsed="0.001247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:26.479128" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:26.478548" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:26.480939" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:26.480223" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:26.483449" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:26.483527" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:26.483159" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:26.483778" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:26.485284" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:26.829748" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:26.484745" elapsed="0.345161"/>
</kw>
<msg time="2026-04-19T00:40:26.829994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:26.484364" elapsed="0.345749"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:26.482357" elapsed="0.348051"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:26.831903" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:26.855097" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:26.855607" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:26.855938" 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-19T00:40:26.831505" elapsed="0.024686"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:26.858546" elapsed="0.000639"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:26.860603" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:26.859968" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:26.861353" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:26.860976" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:26.860894" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:26.862018" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T00:40:26.861738" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:26.861670" elapsed="0.000613"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:26.862394" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:26.868378" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:40:26.868927" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:26.869302" 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-19T00:40:26.864315" elapsed="0.005193"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:26.471455" elapsed="0.398273"/>
</kw>
<msg time="2026-04-19T00:40:26.870108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:26.470465" elapsed="0.399728"/>
</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-19T00:40:26.469667" elapsed="0.400617"/>
</kw>
<msg time="2026-04-19T00:40:26.870326" 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-19T00:40:26.468415" elapsed="0.401957"/>
</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-19T00:40:26.873358" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:40:26.873834" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:26.874145" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:26.870666" elapsed="0.003656"/>
</kw>
<msg time="2026-04-19T00:40:26.874412" level="INFO">${output} = 1</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-19T00:40:26.466477" elapsed="0.407960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:26.874858" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:26.874612" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:26.874945" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:40:26.875176" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:26.464314" elapsed="0.410888"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:26.875249" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:26.875393" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:26.462144" elapsed="0.413274"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:26.875970" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:26.875574" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:26.460946" elapsed="0.415227">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:28.879631" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:28.878871" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:28.881775" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:28.881120" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:28.883367" 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-19T00:40:28.883511" 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-19T00:40:28.883142" elapsed="0.000406"/>
</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-19T00:40:28.891299" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:28.890739" elapsed="0.000641"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:28.888093" elapsed="0.003349"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:28.892894" 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-19T00:40:28.893154" 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-19T00:40:28.892444" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:28.894810" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:28.894264" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:28.896791" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:28.896085" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:28.899252" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:28.899329" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:28.898892" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:28.899561" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:28.900799" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:29.227410" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:28.900479" elapsed="0.327075"/>
</kw>
<msg time="2026-04-19T00:40:29.227638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:28.900122" elapsed="0.327606"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:28.898136" elapsed="0.329862"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:29.229500" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:29.252548" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:29.252862" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:29.253102" 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-19T00:40:29.229106" elapsed="0.024131"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:29.254670" elapsed="0.000674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:29.256768" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:29.256160" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:29.257488" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:29.257164" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:29.257080" elapsed="0.000596"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:29.258200" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:40:29.257877" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:29.257810" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:29.258554" elapsed="0.000051"/>
</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-19T00:40:29.264506" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:29.265065" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:29.265422" 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-19T00:40:29.260400" elapsed="0.005228"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:28.886234" elapsed="0.379620"/>
</kw>
<msg time="2026-04-19T00:40:29.266436" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:28.885261" elapsed="0.381232"/>
</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-19T00:40:28.884499" elapsed="0.382078"/>
</kw>
<msg time="2026-04-19T00:40:29.266618" 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-19T00:40:28.883766" elapsed="0.382898"/>
</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-19T00:40:29.269674" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T00:40:29.270231" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:29.270552" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:29.267015" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T00:40:29.270788" level="INFO">${output} = 1</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-19T00:40:28.882357" elapsed="0.388456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:29.271252" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:29.270991" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:29.271340" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:29.271490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:28.880191" elapsed="0.391324"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:29.271563" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:40:29.271705" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:28.878059" elapsed="0.393674"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:29.272300" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:29.271891" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:28.876953" elapsed="0.395538">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:31.275983" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:31.275254" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:31.278132" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:31.277499" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:31.279951" 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-19T00:40:31.280212" 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-19T00:40:31.279629" elapsed="0.000644"/>
</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-19T00:40:31.285089" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:31.284608" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:31.284552" elapsed="0.000702"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:31.286930" 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-19T00:40:31.287195" 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-19T00:40:31.286228" elapsed="0.001068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:31.288819" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:31.288276" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:31.290621" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:31.289912" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:31.293040" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:31.293121" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:31.292744" 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-19T00:40:31.293383" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:31.294717" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:31.589667" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:31.294391" elapsed="0.295366"/>
</kw>
<msg time="2026-04-19T00:40:31.589821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:31.294009" elapsed="0.295886"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:31.291967" elapsed="0.298182"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:31.591500" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:31.614318" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:31.614807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:31.615183" 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-19T00:40:31.591166" elapsed="0.024230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:31.617616" elapsed="0.000881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:31.620685" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:31.619724" elapsed="0.001183"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:31.621811" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:31.621281" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:31.621161" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:31.622803" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T00:40:31.622446" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:31.622341" elapsed="0.000619"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:31.623052" 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-19T00:40:31.627703" 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-19T00:40:31.628332" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:31.628686" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:31.624417" elapsed="0.004481"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:31.283235" elapsed="0.345900"/>
</kw>
<msg time="2026-04-19T00:40:31.629440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:31.282515" elapsed="0.346981"/>
</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-19T00:40:31.281944" elapsed="0.347635"/>
</kw>
<msg time="2026-04-19T00:40:31.629646" 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-19T00:40:31.280624" elapsed="0.349070"/>
</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-19T00:40:31.632768" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:40:31.633260" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:31.633554" 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-19T00:40:31.629993" elapsed="0.003725"/>
</kw>
<msg time="2026-04-19T00:40:31.633862" level="INFO">${output} = 1</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-19T00:40:31.278684" elapsed="0.355203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:31.634329" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:31.634079" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:31.634417" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:31.634569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:31.276541" elapsed="0.358053"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:31.634643" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:31.634790" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:31.274415" elapsed="0.360400"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:31.635382" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:31.634973" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:31.273376" elapsed="0.362192">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:33.639136" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:33.638358" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:33.641343" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:33.640697" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:33.643361" 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-19T00:40:33.643723" 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-19T00:40:33.642985" elapsed="0.000798"/>
</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-19T00:40:33.649248" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:33.648556" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:33.648476" elapsed="0.000971"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:33.652185" 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-19T00:40:33.652553" 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-19T00:40:33.651070" elapsed="0.001629"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:33.654990" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:33.654163" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:33.657770" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:33.656717" elapsed="0.001210"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:33.661644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:33.661760" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:33.661216" elapsed="0.000581"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:33.662137" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:33.663988" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:33.981235" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:33.663582" elapsed="0.317899"/>
</kw>
<msg time="2026-04-19T00:40:33.981566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:33.663042" elapsed="0.318613"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:33.659764" elapsed="0.322197"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:33.983478" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:34.006205" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:34.006699" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:34.007068" 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-19T00:40:33.983090" elapsed="0.024195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:34.009590" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:34.012752" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:34.011743" elapsed="0.001362"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:34.013965" elapsed="0.000152"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:34.013463" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:34.013340" elapsed="0.001015"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:34.015158" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:40:34.014672" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:34.014566" elapsed="0.000947"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:34.015686" elapsed="0.000082"/>
</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-19T00:40:34.023338" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:40:34.023887" elapsed="0.000278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:34.024368" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:34.018867" elapsed="0.005727"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:33.646552" elapsed="0.378273"/>
</kw>
<msg time="2026-04-19T00:40:34.025238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:33.645582" elapsed="0.379714"/>
</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-19T00:40:33.644810" elapsed="0.380571"/>
</kw>
<msg time="2026-04-19T00:40:34.025422" 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-19T00:40:33.644083" elapsed="0.381387"/>
</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-19T00:40:34.028451" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:40:34.028926" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:34.029281" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:34.025761" elapsed="0.003670"/>
</kw>
<msg time="2026-04-19T00:40:34.029522" level="INFO">${output} = 1</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-19T00:40:33.641931" elapsed="0.387616"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:34.029974" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:34.029721" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:34.030081" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:40:34.030235" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:33.639723" elapsed="0.390537"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:34.030307" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:40:34.030451" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:33.637500" elapsed="0.392976"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:34.031090" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:34.030675" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:33.636389" elapsed="0.394890">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:36.035224" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:36.034370" elapsed="0.000930"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:36.037556" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:36.036903" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:36.039480" 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-19T00:40:36.039826" 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-19T00:40:36.039144" elapsed="0.000749"/>
</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-19T00:40:36.043941" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:36.043435" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:36.043377" elapsed="0.000738"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:36.045812" 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-19T00:40:36.046083" 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-19T00:40:36.045097" elapsed="0.001089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:36.047778" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:36.047207" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:36.049645" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:36.048924" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:36.052319" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:36.052400" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:36.051829" elapsed="0.000595"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:36.052636" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:36.053919" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:36.376369" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:36.053589" elapsed="0.322938"/>
</kw>
<msg time="2026-04-19T00:40:36.376615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:36.053219" elapsed="0.323519"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:36.050960" elapsed="0.326097"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:36.378579" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:36.401751" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:36.402383" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:36.402720" 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-19T00:40:36.378174" elapsed="0.024757"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:36.405318" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:36.408675" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:36.407594" elapsed="0.001306"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:36.409765" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:36.409273" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:36.409149" elapsed="0.000933"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:36.410838" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:40:36.410401" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:36.410294" elapsed="0.000962"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:36.411431" 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-19T00:40:36.417157" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:40:36.417708" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:36.418086" 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-19T00:40:36.413742" elapsed="0.004553"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:36.041934" elapsed="0.376585"/>
</kw>
<msg time="2026-04-19T00:40:36.418831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:36.041208" elapsed="0.377685"/>
</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-19T00:40:36.040623" elapsed="0.378358"/>
</kw>
<msg time="2026-04-19T00:40:36.419022" 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-19T00:40:36.040087" elapsed="0.379011"/>
</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-19T00:40:36.422149" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:40:36.422624" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:36.422916" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:36.419389" elapsed="0.003701"/>
</kw>
<msg time="2026-04-19T00:40:36.423183" level="INFO">${output} = 1</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-19T00:40:36.038176" elapsed="0.385032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:36.423635" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:36.423390" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:36.423722" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:36.423900" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:36.035846" elapsed="0.388080"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:36.423973" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:36.424211" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:36.033390" elapsed="0.390846"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:36.424792" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:36.424394" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:36.032180" elapsed="0.392799">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:38.428631" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:38.427787" elapsed="0.000919"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:38.431092" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:38.430407" elapsed="0.000752"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:38.433090" 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-19T00:40:38.433337" 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-19T00:40:38.432716" elapsed="0.000685"/>
</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-19T00:40:38.439587" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:38.439111" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:38.438797" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:38.441242" 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-19T00:40:38.441485" 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-19T00:40:38.440744" elapsed="0.000845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:38.443140" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:38.442572" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:38.445045" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:38.444317" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:38.447487" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:38.447563" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:38.447200" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:38.447805" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:38.449275" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:38.752621" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:38.448928" elapsed="0.303853"/>
</kw>
<msg time="2026-04-19T00:40:38.752869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:38.448567" elapsed="0.304399"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:38.446412" elapsed="0.306868"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:38.754789" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:38.777309" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:38.777807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:38.778192" 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-19T00:40:38.754390" elapsed="0.024019"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:38.780682" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:38.783974" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:38.782881" elapsed="0.001459"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:38.785342" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:38.784691" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:38.784566" elapsed="0.001076"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:38.786448" elapsed="0.000138"/>
</return>
<status status="PASS" start="2026-04-19T00:40:38.785964" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:38.785856" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:38.787008" elapsed="0.000144"/>
</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-19T00:40:38.792359" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:38.792901" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:38.793308" 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-19T00:40:38.788988" elapsed="0.004527"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:38.437460" elapsed="0.356279"/>
</kw>
<msg time="2026-04-19T00:40:38.794064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:38.436380" elapsed="0.357742"/>
</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-19T00:40:38.435066" elapsed="0.359138"/>
</kw>
<msg time="2026-04-19T00:40:38.794245" 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-19T00:40:38.433777" elapsed="0.360514"/>
</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-19T00:40:38.797276" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:40:38.797796" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:38.798103" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:38.794578" elapsed="0.003679"/>
</kw>
<msg time="2026-04-19T00:40:38.798349" level="INFO">${output} = 1</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-19T00:40:38.431680" elapsed="0.366695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:38.798798" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:38.798552" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:38.798885" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:38.799094" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:38.429382" elapsed="0.369739"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:38.799171" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:40:38.799317" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:38.426897" elapsed="0.372445"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:38.799888" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:38.799499" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:38.425779" elapsed="0.374387">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:40.804536" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:40.803704" elapsed="0.000908"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:40.806884" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:40.806244" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:40.808789" 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-19T00:40:40.809310" 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-19T00:40:40.808464" elapsed="0.000914"/>
</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-19T00:40:40.814012" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:40.813525" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:40.813204" elapsed="0.000971"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:40.815656" 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-19T00:40:40.815941" 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-19T00:40:40.815191" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:40.817670" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:40.817115" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:40.819523" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:40.818802" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:40.821960" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:40.822133" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:40.821673" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:40.822371" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:40.823646" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:41.135244" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:40.823320" elapsed="0.312087"/>
</kw>
<msg time="2026-04-19T00:40:41.135496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:40.822938" elapsed="0.312658"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:40.820836" elapsed="0.315054"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:41.137455" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:41.160216" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:41.160749" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:41.161188" 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-19T00:40:41.137004" elapsed="0.024413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:41.163734" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:41.167218" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:41.166084" elapsed="0.001382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:41.168402" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:41.167833" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:41.167699" elapsed="0.001004"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:41.169663" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:40:41.169162" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:41.168922" elapsed="0.001162"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:41.170191" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:41.175108" 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-19T00:40:41.175764" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:41.176161" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:41.171610" elapsed="0.004762"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:40.811713" elapsed="0.364882"/>
</kw>
<msg time="2026-04-19T00:40:41.176898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:40.811020" elapsed="0.365961"/>
</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-19T00:40:40.810484" elapsed="0.366612"/>
</kw>
<msg time="2026-04-19T00:40:41.177141" 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-19T00:40:40.809741" elapsed="0.367449"/>
</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-19T00:40:41.182008" elapsed="0.000407"/>
</kw>
<kw name="Open 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-19T00:40:41.182581" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:41.182878" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:41.177486" elapsed="0.005625"/>
</kw>
<msg time="2026-04-19T00:40:41.183211" level="INFO">${output} = 1</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-19T00:40:40.807503" elapsed="0.375733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:41.183669" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:41.183415" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:41.183758" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:40:41.183913" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:40.805200" elapsed="0.378739"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:41.183988" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:41.184165" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:40.802249" elapsed="0.381941"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:41.184751" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:41.184348" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:40.800993" elapsed="0.383961">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:43.188459" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:43.187697" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:43.190581" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:43.189943" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:43.192416" 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-19T00:40:43.192641" 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-19T00:40:43.192093" elapsed="0.000606"/>
</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-19T00:40:43.199896" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:43.199412" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:43.197458" elapsed="0.002660"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:43.201548" 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-19T00:40:43.201788" 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-19T00:40:43.201111" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:43.203466" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:43.202914" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:43.205265" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:43.204543" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:43.207710" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:43.207786" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:43.207432" 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-19T00:40:43.208018" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:43.209286" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:43.512560" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:43.208935" elapsed="0.303774"/>
</kw>
<msg time="2026-04-19T00:40:43.512790" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:43.208579" elapsed="0.304304"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:43.206668" elapsed="0.306520"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:43.514653" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:43.537478" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:43.537970" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:43.538356" 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-19T00:40:43.514274" elapsed="0.024294"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:43.540808" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:43.543938" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:43.542932" elapsed="0.001359"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:43.545191" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:43.544658" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:43.544535" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:43.546294" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:40:43.545814" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:43.545705" elapsed="0.000941"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:43.546823" elapsed="0.000084"/>
</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-19T00:40:43.594319" elapsed="0.000433"/>
</kw>
<kw name="Open 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-19T00:40:43.594987" elapsed="0.000215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:43.595398" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:43.549346" elapsed="0.046261"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:43.196105" elapsed="0.399728"/>
</kw>
<msg time="2026-04-19T00:40:43.596247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:43.195387" elapsed="0.400926"/>
</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-19T00:40:43.194375" elapsed="0.402019"/>
</kw>
<msg time="2026-04-19T00:40:43.596434" 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-19T00:40:43.193078" elapsed="0.403402"/>
</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-19T00:40:43.599499" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:40:43.599973" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:43.600319" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:43.596789" elapsed="0.003679"/>
</kw>
<msg time="2026-04-19T00:40:43.600559" level="INFO">${output} = 1</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-19T00:40:43.191155" elapsed="0.409430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:43.601022" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:43.600774" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:43.601129" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:40:43.601294" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:43.188982" elapsed="0.412337"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:43.601365" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:40:43.601506" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:43.186856" elapsed="0.414675"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:43.602086" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:43.601684" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:43.185757" elapsed="0.416515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:45.605663" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:45.604918" elapsed="0.000813"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:45.607720" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:45.607127" elapsed="0.000651"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:45.609552" 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-19T00:40:45.609776" 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-19T00:40:45.609230" elapsed="0.000605"/>
</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-19T00:40:45.615719" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:45.615253" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:45.615197" elapsed="0.000659"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:45.617311" 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-19T00:40:45.617549" 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-19T00:40:45.616859" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:45.619172" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:45.618619" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:45.621012" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:45.620308" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:45.623374" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:45.623452" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:45.623088" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:45.623687" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:45.624999" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:45.950753" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:45.624672" elapsed="0.326241"/>
</kw>
<msg time="2026-04-19T00:40:45.950998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:45.624282" elapsed="0.326826"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:45.622312" elapsed="0.329088"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:45.952910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:45.975740" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:45.976300" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:45.976637" 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-19T00:40:45.952508" elapsed="0.024344"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:45.979128" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:45.982296" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:45.981310" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:45.983393" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:45.982936" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:45.982809" elapsed="0.000769"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:45.984089" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T00:40:45.983780" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:45.983713" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:45.984420" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:45.991169" elapsed="0.000472"/>
</kw>
<kw name="Open 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-19T00:40:45.991936" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:45.992454" 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-19T00:40:45.986356" elapsed="0.006393"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:45.613847" elapsed="0.379328"/>
</kw>
<msg time="2026-04-19T00:40:45.993607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:45.612582" elapsed="0.381106"/>
</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-19T00:40:45.611369" elapsed="0.382434"/>
</kw>
<msg time="2026-04-19T00:40:45.993860" 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-19T00:40:45.610214" elapsed="0.383711"/>
</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-19T00:40:45.997420" 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-19T00:40:45.997898" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:45.998217" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:45.994455" elapsed="0.003926"/>
</kw>
<msg time="2026-04-19T00:40:45.998472" level="INFO">${output} = 1</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-19T00:40:45.608280" elapsed="0.390223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:45.998940" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:45.998684" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:45.999049" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:40:45.999207" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:45.606208" elapsed="0.393026"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:45.999282" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:40:45.999431" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:45.604098" elapsed="0.395359"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:46.000097" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:45.999616" elapsed="0.000566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:45.603073" elapsed="0.397225">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:48.004921" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:48.003960" elapsed="0.001028"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:48.006871" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:48.006316" elapsed="0.000609"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:48.008630" 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-19T00:40:48.008840" 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-19T00:40:48.008318" elapsed="0.000583"/>
</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-19T00:40:48.015594" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:48.014942" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:48.014867" elapsed="0.000949"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:48.017712" 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-19T00:40:48.018070" 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-19T00:40:48.017135" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:48.020256" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:48.019473" elapsed="0.000930"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:48.022706" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:48.021690" elapsed="0.001143"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:48.025866" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:48.025971" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:48.025483" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:48.026491" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:48.028333" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:48.353302" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:48.027866" elapsed="0.325550"/>
</kw>
<msg time="2026-04-19T00:40:48.353491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:48.027333" elapsed="0.326243"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:48.024425" elapsed="0.329422"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:48.355317" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:48.378183" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:48.378710" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:48.379076" 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-19T00:40:48.354920" elapsed="0.024374"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:48.381602" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:48.384738" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:48.383753" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:48.385932" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:48.385442" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:48.385320" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:48.387093" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:40:48.386615" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:48.386507" elapsed="0.000824"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:48.387414" 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-19T00:40:48.392147" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T00:40:48.392689" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:48.393139" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:48.388741" elapsed="0.004611"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:48.012714" elapsed="0.380860"/>
</kw>
<msg time="2026-04-19T00:40:48.393883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:48.011508" elapsed="0.382433"/>
</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-19T00:40:48.010369" elapsed="0.383668"/>
</kw>
<msg time="2026-04-19T00:40:48.394081" 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-19T00:40:48.009260" elapsed="0.384869"/>
</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-19T00:40:48.397228" 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-19T00:40:48.397706" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:48.398004" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:48.394453" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T00:40:48.398354" level="INFO">${output} = 1</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-19T00:40:48.007411" elapsed="0.390970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:48.398812" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:48.398562" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:48.398901" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:40:48.399072" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:48.005447" elapsed="0.393652"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:48.399149" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:48.399296" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:48.002729" elapsed="0.396592"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:48.399873" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:48.399481" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:48.001302" elapsed="0.398778">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:50.403567" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:50.402805" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:50.405680" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:50.405069" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:50.407537" 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-19T00:40:50.407762" 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-19T00:40:50.407211" elapsed="0.000612"/>
</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-19T00:40:50.414135" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:50.413464" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:50.413389" elapsed="0.000970"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:50.416406" 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-19T00:40:50.416744" 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-19T00:40:50.415763" elapsed="0.001120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:50.419125" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:50.418343" elapsed="0.000935"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:50.421022" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:50.420322" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:50.423579" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:50.423655" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:50.423297" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:50.423887" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:50.425155" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:50.734173" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:50.424814" elapsed="0.309544"/>
</kw>
<msg time="2026-04-19T00:40:50.734437" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:50.424458" elapsed="0.310059"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:50.422406" elapsed="0.312356"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:50.736183" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:50.761391" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:50.761716" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:50.761924" 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-19T00:40:50.735807" elapsed="0.026279"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:50.763488" elapsed="0.000588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:50.765670" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:50.764857" elapsed="0.001042"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:50.766794" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:50.766289" elapsed="0.000674"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:50.766162" elapsed="0.001008"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:50.767943" elapsed="0.000152"/>
</return>
<status status="PASS" start="2026-04-19T00:40:50.767492" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:50.767385" elapsed="0.000950"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:50.768511" elapsed="0.000082"/>
</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-19T00:40:50.778525" elapsed="0.000458"/>
</kw>
<kw name="Open 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-19T00:40:50.779429" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:50.779924" 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-19T00:40:50.771768" elapsed="0.008476"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:50.411202" elapsed="0.369346"/>
</kw>
<msg time="2026-04-19T00:40:50.780966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:50.410214" elapsed="0.370864"/>
</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-19T00:40:50.409437" elapsed="0.371762"/>
</kw>
<msg time="2026-04-19T00:40:50.781255" 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-19T00:40:50.408205" elapsed="0.373114"/>
</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-19T00:40:50.785559" elapsed="0.000432"/>
</kw>
<kw name="Open 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-19T00:40:50.786244" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:50.786653" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:50.781724" elapsed="0.005133"/>
</kw>
<msg time="2026-04-19T00:40:50.786981" level="INFO">${output} = 1</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-19T00:40:50.406250" elapsed="0.380766"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:50.787664" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:50.787319" elapsed="0.000409"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:50.787787" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T00:40:50.787997" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:50.404126" elapsed="0.383926"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:50.788119" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:40:50.788320" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:50.401939" elapsed="0.386415"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:50.789235" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:50.788637" elapsed="0.000711">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:50.400877" elapsed="0.388616">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:52.793019" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:52.792282" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:52.795207" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:52.794519" elapsed="0.000753"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:52.796440" 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-19T00:40:52.796584" 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-19T00:40:52.796218" elapsed="0.000403"/>
</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-19T00:40:52.802215" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:52.801560" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:52.801483" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:52.804398" 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-19T00:40:52.804736" 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-19T00:40:52.803771" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:52.806987" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:52.806240" elapsed="0.000958"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:52.809010" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:52.808321" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:52.811392" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:52.811468" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:52.811103" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:52.811700" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:52.813147" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:53.139630" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:52.812807" elapsed="0.326980"/>
</kw>
<msg time="2026-04-19T00:40:53.139876" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:52.812442" elapsed="0.327530"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:52.810327" elapsed="0.329949"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:53.141762" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:53.164332" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:53.164841" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:53.165233" 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-19T00:40:53.141364" elapsed="0.024085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:53.167689" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:53.170890" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:53.169867" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:53.172017" elapsed="0.000108"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:53.171509" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:53.171384" elapsed="0.000975"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:53.173163" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:40:53.172680" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:53.172574" elapsed="0.000947"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:53.173697" elapsed="0.000084"/>
</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-19T00:40:53.178991" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T00:40:53.179633" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:53.179990" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:53.175541" elapsed="0.004676"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:52.799334" elapsed="0.381113"/>
</kw>
<msg time="2026-04-19T00:40:53.180753" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:52.798350" elapsed="0.382460"/>
</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-19T00:40:52.797581" elapsed="0.383313"/>
</kw>
<msg time="2026-04-19T00:40:53.180936" 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-19T00:40:52.796841" elapsed="0.384141"/>
</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-19T00:40:53.184008" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:40:53.184508" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:53.184801" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:53.181287" elapsed="0.003661"/>
</kw>
<msg time="2026-04-19T00:40:53.185054" level="INFO">${output} = 1</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-19T00:40:52.795614" elapsed="0.389466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:53.185504" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:53.185259" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:53.185590" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:40:53.185743" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:52.793574" elapsed="0.392194"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:53.185815" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:40:53.185960" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:52.791430" elapsed="0.394555"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:53.186663" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:53.186252" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:52.790346" elapsed="0.396505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:55.190435" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:55.189664" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:55.192695" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:55.192095" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:55.194566" 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-19T00:40:55.194708" 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-19T00:40:55.194283" elapsed="0.000463"/>
</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-19T00:40:55.200341" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:55.199676" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:55.199293" elapsed="0.001240"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:55.202545" 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-19T00:40:55.202892" 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-19T00:40:55.201898" elapsed="0.001167"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:55.205258" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:55.204489" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:55.208615" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:55.207598" elapsed="0.001116"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:55.211071" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:55.211151" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:55.210739" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:55.211384" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:55.212774" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:55.529593" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:55.212447" elapsed="0.317279"/>
</kw>
<msg time="2026-04-19T00:40:55.529806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:55.211950" elapsed="0.317944"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:55.209950" elapsed="0.320235"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:55.531653" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:55.554271" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:55.554765" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:55.555137" 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-19T00:40:55.531262" elapsed="0.024093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:55.557645" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:55.560811" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:55.559786" elapsed="0.001407"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:55.562223" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:55.561566" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:55.561440" elapsed="0.001086"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:55.563350" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:40:55.562862" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:55.562752" elapsed="0.000956"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:55.563882" elapsed="0.000084"/>
</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-19T00:40:55.571786" 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-19T00:40:55.572363" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:55.572719" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:55.567084" elapsed="0.005864"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:55.197421" elapsed="0.375791"/>
</kw>
<msg time="2026-04-19T00:40:55.573517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:55.196479" elapsed="0.377095"/>
</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-19T00:40:55.195705" elapsed="0.377952"/>
</kw>
<msg time="2026-04-19T00:40:55.573698" 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-19T00:40:55.194968" elapsed="0.378776"/>
</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-19T00:40:55.576869" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:40:55.577388" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:55.577687" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:55.574109" elapsed="0.003724"/>
</kw>
<msg time="2026-04-19T00:40:55.577925" level="INFO">${output} = 1</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-19T00:40:55.193265" elapsed="0.384686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:55.578393" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:55.578144" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:55.578480" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:55.578633" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:55.191144" elapsed="0.387515"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:55.578708" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:40:55.578853" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:55.188774" elapsed="0.390104"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:55.579443" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:55.579050" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:55.187699" elapsed="0.391943">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:57.582114" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:57.581587" elapsed="0.000574"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:57.583398" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:57.583013" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:57.584574" 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-19T00:40:57.584824" 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-19T00:40:57.584339" elapsed="0.000525"/>
</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-19T00:40:57.590481" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:57.589828" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:57.589455" elapsed="0.001220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:57.592583" 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-19T00:40:57.592915" 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-19T00:40:57.591968" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:57.595132" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:57.594381" elapsed="0.000903"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:57.597606" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:40:57.596630" elapsed="0.001107"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:40:57.600958" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:40:57.601091" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:40:57.600571" elapsed="0.000579"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:57.601438" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:40:57.603173" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:40:57.934591" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:40:57.602716" elapsed="0.332044"/>
</kw>
<msg time="2026-04-19T00:40:57.934853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:57.602212" elapsed="0.332741"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:40:57.599308" elapsed="0.335983"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:40:57.936856" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:40:57.960171" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:40:57.960700" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:40:57.961067" 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-19T00:40:57.936415" elapsed="0.024870"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:57.963531" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:57.966776" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:57.965749" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:57.968022" elapsed="0.000102"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:40:57.967511" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:57.967381" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:40:57.969212" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:40:57.968723" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:57.968610" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:40:57.969620" 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-19T00:40:57.976623" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:40:57.977252" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:57.977612" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:57.970995" elapsed="0.006825"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:57.587590" elapsed="0.390478"/>
</kw>
<msg time="2026-04-19T00:40:57.978383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:57.586633" elapsed="0.391807"/>
</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-19T00:40:57.585866" elapsed="0.392656"/>
</kw>
<msg time="2026-04-19T00:40:57.978563" 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-19T00:40:57.585112" elapsed="0.393497"/>
</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-19T00:40:57.981658" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:40:57.982159" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:40:57.982453" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:40:57.978903" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:40:57.982720" level="INFO">${output} = 1</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-19T00:40:57.583740" elapsed="0.399004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:40:57.983244" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:40:57.982924" elapsed="0.000365"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:40:57.983332" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:40:57.983484" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:57.582452" elapsed="0.401056"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:40:57.983553" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:40:57.983695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:57.581015" elapsed="0.402704"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:40:57.984280" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:40:57.983873" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:57.580302" elapsed="0.404162">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:40:59.987957" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:40:59.987217" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:40:59.990120" level="INFO">${member_ip} = 10.30.171.206</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-19T00:40:59.989462" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:40:59.991988" 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-19T00:40:59.992248" 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-19T00:40:59.991663" elapsed="0.000645"/>
</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-19T00:40:59.998500" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:40:59.997838" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T00:40:59.997761" elapsed="0.001039"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:00.001116" 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-19T00:41:00.001458" 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-19T00:41:00.000168" elapsed="0.001432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:00.003791" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:00.003018" elapsed="0.000927"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:00.006518" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:00.005335" elapsed="0.001301"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:00.008876" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:00.008955" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:00.008595" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:00.009220" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:00.010635" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:00.306230" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:40:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:00.010308" elapsed="0.296016"/>
</kw>
<msg time="2026-04-19T00:41:00.306390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:00.009792" elapsed="0.296673"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:00.007825" elapsed="0.298873"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:00.308089" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:00.330482" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:00.330975" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:00.331362" 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-19T00:41:00.307716" elapsed="0.023856"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:00.333814" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:00.336887" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:00.335918" 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-19T00:41:00.338104" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:00.337590" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:00.337471" elapsed="0.000924"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:00.339188" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:41:00.338712" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:00.338605" elapsed="0.000930"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:00.339709" elapsed="0.000082"/>
</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-19T00:41:00.347711" 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-19T00:41:00.348284" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:00.348637" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:00.342829" elapsed="0.006015"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:40:59.995880" elapsed="0.353228"/>
</kw>
<msg time="2026-04-19T00:41:00.349478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:40:59.994914" elapsed="0.354621"/>
</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-19T00:40:59.993875" elapsed="0.355743"/>
</kw>
<msg time="2026-04-19T00:41:00.349658" 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-19T00:40:59.992663" elapsed="0.357041"/>
</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-19T00:41:00.352715" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T00:41:00.353238" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:00.353534" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:00.349994" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T00:41:00.353774" level="INFO">${output} = 1</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-19T00:40:59.990704" elapsed="0.363095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:00.354246" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:00.353978" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:00.354332" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:00.354483" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:40:59.988518" elapsed="0.365990"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:00.354554" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:41:00.354702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:40:59.986379" elapsed="0.368347"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:00.355292" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:00.354882" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:40:59.985318" elapsed="0.370162">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:02.359009" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:02.358231" elapsed="0.000877"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:02.361159" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:02.360512" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:02.363138" 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-19T00:41:02.363369" 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-19T00:41:02.362751" elapsed="0.000676"/>
</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-19T00:41:02.369597" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:02.369125" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:02.369064" elapsed="0.000677"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:02.371816" 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-19T00:41:02.372079" 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-19T00:41:02.371055" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:02.373717" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:02.373165" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:02.375661" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:02.374941" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:02.378010" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:02.378188" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:02.377727" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:02.378426" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:02.379713" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:02.739655" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:02.379384" elapsed="0.360427"/>
</kw>
<msg time="2026-04-19T00:41:02.739898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:02.379004" elapsed="0.360989"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:02.376952" elapsed="0.363344"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:02.741792" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:02.764910" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:02.765442" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:02.765767" 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-19T00:41:02.741396" elapsed="0.024580"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:02.768194" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:02.771310" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:02.770327" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:02.772409" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:02.771877" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:02.771756" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:02.773482" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T00:41:02.773010" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:02.772907" elapsed="0.000915"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:02.773995" elapsed="0.000231"/>
</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-19T00:41:02.779252" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:41:02.779804" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:02.780179" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:02.775767" elapsed="0.004621"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:02.367711" elapsed="0.412902"/>
</kw>
<msg time="2026-04-19T00:41:02.780923" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:02.366212" elapsed="0.414770"/>
</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-19T00:41:02.364948" elapsed="0.416133"/>
</kw>
<msg time="2026-04-19T00:41:02.781124" 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-19T00:41:02.363778" elapsed="0.417394"/>
</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-19T00:41:02.784298" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:41:02.784773" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:02.785084" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:02.781576" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T00:41:02.785325" level="INFO">${output} = 1</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-19T00:41:02.361738" elapsed="0.423613"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:02.785784" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:02.785531" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:02.785872" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:02.786122" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:02.359569" elapsed="0.426582"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:02.786200" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:41:02.786349" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:02.357390" elapsed="0.428984"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:02.786952" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:02.786555" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:02.356318" elapsed="0.430847">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:04.790693" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:04.789921" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:04.792809" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:04.792198" elapsed="0.000672"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:04.794368" 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-19T00:41:04.794510" 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-19T00:41:04.794143" elapsed="0.000405"/>
</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-19T00:41:04.799887" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:04.799257" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:04.799181" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:04.802419" 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-19T00:41:04.802763" 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-19T00:41:04.801462" elapsed="0.001441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:04.805078" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:04.804267" elapsed="0.000964"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:04.807104" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:04.806397" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:04.809466" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:04.809545" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:04.809184" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:04.809779" elapsed="0.000575"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:04.811295" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:05.126023" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:04.810949" elapsed="0.315188"/>
</kw>
<msg time="2026-04-19T00:41:05.126201" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:04.810580" elapsed="0.315698"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:04.808392" elapsed="0.318120"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:05.127869" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:05.150569" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:05.151113" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:05.151446" 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-19T00:41:05.127532" elapsed="0.024124"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:05.153881" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:05.156994" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:05.155998" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:05.158098" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:05.157589" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:05.157472" elapsed="0.000918"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:05.159186" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T00:41:05.158707" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:05.158599" elapsed="0.000935"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:05.159707" elapsed="0.000081"/>
</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-19T00:41:05.165690" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:41:05.166244" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:05.166592" 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-19T00:41:05.162294" elapsed="0.004505"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:04.797332" elapsed="0.369688"/>
</kw>
<msg time="2026-04-19T00:41:05.167342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:04.796347" elapsed="0.371051"/>
</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-19T00:41:04.795540" elapsed="0.371939"/>
</kw>
<msg time="2026-04-19T00:41:05.167520" 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-19T00:41:04.794789" elapsed="0.372776"/>
</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-19T00:41:05.170588" 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-19T00:41:05.171079" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:05.171374" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:05.167858" elapsed="0.003662"/>
</kw>
<msg time="2026-04-19T00:41:05.171659" level="INFO">${output} = 1</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-19T00:41:04.793440" elapsed="0.378246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:05.172197" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:05.171860" elapsed="0.000382"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:05.172286" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:05.172436" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:04.791254" elapsed="0.381207"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:05.172507" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:05.172651" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:04.789097" elapsed="0.383579"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:05.173275" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:05.172863" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:04.787974" elapsed="0.385487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:07.176955" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:07.176220" elapsed="0.000805"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:07.179095" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:07.178462" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:07.180938" 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-19T00:41:07.181098" 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-19T00:41:07.180661" elapsed="0.000476"/>
</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-19T00:41:07.186722" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:07.185746" elapsed="0.001088"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:07.185667" elapsed="0.001250"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:07.188938" 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-19T00:41:07.189312" 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-19T00:41:07.188325" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:07.191593" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:07.190816" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:07.193840" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:07.193154" elapsed="0.000782"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:07.196358" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:07.196436" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:07.195921" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:07.196674" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:07.197933" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:07.505129" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:07.197608" elapsed="0.307760"/>
</kw>
<msg time="2026-04-19T00:41:07.505449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:07.197245" elapsed="0.308291"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:07.195135" elapsed="0.310678"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:07.507299" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:07.530350" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:07.530847" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:07.531228" 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-19T00:41:07.506895" elapsed="0.024551"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:07.533708" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:07.536895" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:07.535881" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:07.538021" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:07.537515" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:07.537389" elapsed="0.000964"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:07.539155" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:41:07.538675" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:07.538566" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:07.539749" elapsed="0.000092"/>
</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-19T00:41:07.544639" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:41:07.545204" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:07.545560" 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-19T00:41:07.541226" elapsed="0.004540"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:07.183815" elapsed="0.362176"/>
</kw>
<msg time="2026-04-19T00:41:07.546316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:07.182845" elapsed="0.363529"/>
</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-19T00:41:07.182096" elapsed="0.364361"/>
</kw>
<msg time="2026-04-19T00:41:07.546498" 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-19T00:41:07.181359" elapsed="0.365185"/>
</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-19T00:41:07.549568" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:41:07.550067" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:07.550365" 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-19T00:41:07.546837" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T00:41:07.550602" level="INFO">${output} = 1</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-19T00:41:07.179643" elapsed="0.370984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:07.551067" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:07.550804" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:07.551155" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:07.551307" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:07.177511" elapsed="0.373821"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:07.551378" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:41:07.551523" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:07.175357" elapsed="0.376190"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:07.552284" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:07.551789" elapsed="0.000573">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:07.174313" elapsed="0.378162">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:09.555984" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:09.555252" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:09.558115" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:09.557487" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:09.559614" 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-19T00:41:09.559757" 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-19T00:41:09.559392" elapsed="0.000402"/>
</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-19T00:41:09.565501" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:09.564837" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:09.564456" elapsed="0.001240"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:09.567684" 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-19T00:41:09.568019" 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-19T00:41:09.567080" elapsed="0.001121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:09.570302" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:09.569533" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:09.572298" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:09.571563" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:09.574706" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:09.574783" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:09.574414" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:09.575019" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:09.576435" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:09.929256" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:09.575954" elapsed="0.353454"/>
</kw>
<msg time="2026-04-19T00:41:09.929496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:09.575588" elapsed="0.354004"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:09.573624" elapsed="0.356263"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:09.931447" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:09.954136" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:09.954659" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:09.954993" 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-19T00:41:09.931005" elapsed="0.024240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:09.957478" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:09.960015" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:09.959412" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:09.960758" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:09.960431" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:09.960349" elapsed="0.000597"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:09.961524" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:41:09.961242" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:09.961172" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:09.961861" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:09.968458" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:09.969394" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:09.969896" elapsed="0.000161"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:09.963729" elapsed="0.006479"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:09.562576" elapsed="0.407974"/>
</kw>
<msg time="2026-04-19T00:41:09.970953" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:09.561607" elapsed="0.409402"/>
</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-19T00:41:09.560755" elapsed="0.410354"/>
</kw>
<msg time="2026-04-19T00:41:09.971149" 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-19T00:41:09.560018" elapsed="0.411178"/>
</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-19T00:41:09.974198" 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-19T00:41:09.974688" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:09.975090" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:09.971484" elapsed="0.003759"/>
</kw>
<msg time="2026-04-19T00:41:09.975337" level="INFO">${output} = 1</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-19T00:41:09.558752" elapsed="0.416611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:09.975811" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:09.975559" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:09.975905" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:41:09.976089" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:09.556547" elapsed="0.419569"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:09.976164" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:09.976330" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:09.554391" elapsed="0.421965"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:09.976917" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:09.976521" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:09.553327" elapsed="0.423857">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:11.980706" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:11.979938" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:11.983079" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:11.982443" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:11.984905" 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-19T00:41:11.985162" 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-19T00:41:11.984567" elapsed="0.000656"/>
</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-19T00:41:11.989782" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:11.989289" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:11.988986" elapsed="0.000937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:11.991402" 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-19T00:41:11.991648" 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-19T00:41:11.990947" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:11.993294" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:11.992739" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:11.995163" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:11.994459" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:11.997607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:11.997685" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:11.997300" 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-19T00:41:11.997917" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:11.999179" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:12.300048" 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 Sun Apr 19 00:40:12 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:11.998841" elapsed="0.301369"/>
</kw>
<msg time="2026-04-19T00:41:12.300297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:11.998483" elapsed="0.301910"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:11.996528" elapsed="0.304152"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:12.302221" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:12.325212" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:12.325757" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:12.326128" 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-19T00:41:12.301800" elapsed="0.024539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:12.328518" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:12.331679" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:12.330681" elapsed="0.001221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:12.332886" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:12.332282" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:12.332158" elapsed="0.001060"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:12.334002" elapsed="0.000149"/>
</return>
<status status="PASS" start="2026-04-19T00:41:12.333556" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:12.333450" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:12.334557" elapsed="0.000082"/>
</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-19T00:41:12.343138" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T00:41:12.343690" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:12.344068" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:12.337681" 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-19T00:41:11.987662" elapsed="0.356834"/>
</kw>
<msg time="2026-04-19T00:41:12.344797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:11.986961" elapsed="0.357894"/>
</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-19T00:41:11.986426" elapsed="0.358510"/>
</kw>
<msg time="2026-04-19T00:41:12.344976" 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-19T00:41:11.985619" elapsed="0.359402"/>
</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-19T00:41:12.348095" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:41:12.348571" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:12.348865" 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-19T00:41:12.345341" elapsed="0.003671"/>
</kw>
<msg time="2026-04-19T00:41:12.349120" level="INFO">${output} = 1</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-19T00:41:11.983625" elapsed="0.365520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:12.349603" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:12.349354" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:12.349689" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:12.349838" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:11.981465" elapsed="0.368397"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:12.349907" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:41:12.350063" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:11.979125" elapsed="0.370963"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:12.350633" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:12.350244" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:11.978022" elapsed="0.372792">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:14.354243" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:14.353491" elapsed="0.000822"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:14.356321" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:14.355688" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:14.357787" 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-19T00:41:14.358368" 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-19T00:41:14.357570" elapsed="0.000838"/>
</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-19T00:41:14.363734" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:14.363106" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:14.363008" elapsed="0.000918"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:14.366285" 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-19T00:41:14.366630" 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-19T00:41:14.365345" elapsed="0.001447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:14.369135" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:14.368278" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:14.370985" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:14.370291" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:14.373529" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:14.373605" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:14.373248" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:14.373838" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:14.375231" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:14.958766" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:14.374890" elapsed="0.584035"/>
</kw>
<msg time="2026-04-19T00:41:14.959010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:14.374531" elapsed="0.584591"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:14.372304" elapsed="0.587101"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:14.960936" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:14.983702" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:14.984268" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:14.984599" 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-19T00:41:14.960541" elapsed="0.024266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:14.986990" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:14.989806" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:14.989204" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:14.990525" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:14.990201" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:14.990120" elapsed="0.000588"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:14.991211" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:41:14.990907" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:14.990840" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:14.991542" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:14.998173" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T00:41:14.999005" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:14.999527" 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-19T00:41:14.993464" elapsed="0.006351"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:14.361177" elapsed="0.639137"/>
</kw>
<msg time="2026-04-19T00:41:15.000737" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:14.360185" elapsed="0.640632"/>
</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-19T00:41:14.359424" elapsed="0.641507"/>
</kw>
<msg time="2026-04-19T00:41:15.000989" 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-19T00:41:14.358640" elapsed="0.642433"/>
</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-19T00:41:15.004072" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:15.004570" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:15.004867" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:15.001384" elapsed="0.003632"/>
</kw>
<msg time="2026-04-19T00:41:15.005131" level="INFO">${output} = 1</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-19T00:41:14.356907" elapsed="0.648250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:15.005589" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:15.005340" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:15.005677" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:15.005831" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:14.354756" elapsed="0.651101"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:15.005905" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:41:15.006068" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:14.352658" elapsed="0.653436"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:15.006645" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:15.006254" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:14.351612" elapsed="0.655213">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:17.010349" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:17.009585" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:17.012411" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:17.011874" elapsed="0.000575"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:17.013577" 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-19T00:41:17.013719" 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-19T00:41:17.013350" elapsed="0.000406"/>
</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-19T00:41:17.018980" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:17.018348" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:17.018272" elapsed="0.001043"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:17.021673" 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-19T00:41:17.022014" 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-19T00:41:17.020733" elapsed="0.001466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:17.024513" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:17.023580" elapsed="0.001041"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:17.026296" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:17.025588" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:17.028648" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:17.028725" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:17.028366" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:17.028963" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:17.030285" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:17.332377" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:17.029941" elapsed="0.302626"/>
</kw>
<msg time="2026-04-19T00:41:17.332682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:17.029580" elapsed="0.303220"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:17.027591" elapsed="0.305635"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:17.335651" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:17.358838" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:17.359640" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:17.360004" 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-19T00:41:17.334873" elapsed="0.025407"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:17.362867" elapsed="0.001200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:17.366469" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:17.365419" elapsed="0.001298"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:17.367728" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:17.367187" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:17.366956" elapsed="0.001225"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:17.368596" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T00:41:17.368391" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:17.368340" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:17.368845" 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-19T00:41:17.373616" 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-19T00:41:17.374193" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:17.374557" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:17.370175" elapsed="0.004592"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:17.016443" elapsed="0.358565"/>
</kw>
<msg time="2026-04-19T00:41:17.375418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:17.015481" elapsed="0.360002"/>
</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-19T00:41:17.014709" elapsed="0.360860"/>
</kw>
<msg time="2026-04-19T00:41:17.375610" 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-19T00:41:17.013976" elapsed="0.361681"/>
</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-19T00:41:17.378692" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T00:41:17.379231" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:17.379532" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:17.375958" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T00:41:17.379778" level="INFO">${output} = 1</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-19T00:41:17.012752" elapsed="0.367053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:17.380409" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:17.380006" elapsed="0.000449"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:17.380499" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:41:17.380654" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:17.010875" elapsed="0.369804"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:17.380726" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:17.380871" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:17.008735" elapsed="0.372161"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:17.381458" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:17.381067" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:17.007686" elapsed="0.373956">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:19.385236" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:19.384475" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:19.387004" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:19.386620" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:19.388193" 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-19T00:41:19.388339" 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-19T00:41:19.387951" elapsed="0.000427"/>
</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-19T00:41:19.393823" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:19.393192" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:19.393115" elapsed="0.000901"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:19.395818" 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-19T00:41:19.396091" 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-19T00:41:19.395133" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:19.397700" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:19.397164" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:19.399588" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:19.398870" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:19.401983" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:19.402087" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:19.401698" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:19.402329" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:19.403585" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:19.710196" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:19.403260" elapsed="0.307113"/>
</kw>
<msg time="2026-04-19T00:41:19.710465" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:19.402883" elapsed="0.307685"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:19.400930" elapsed="0.309951"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:19.712482" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:19.735243" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:19.735815" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:19.736203" 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-19T00:41:19.712054" elapsed="0.024386"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:19.738802" elapsed="0.000985"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:19.742405" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:19.741122" elapsed="0.001531"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:19.743593" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:19.743011" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:19.742884" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:19.744688" elapsed="0.000143"/>
</return>
<status status="PASS" start="2026-04-19T00:41:19.744240" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:19.744131" elapsed="0.001094"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:19.745419" elapsed="0.000085"/>
</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-19T00:41:19.751154" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:19.751708" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:19.752080" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:19.747512" elapsed="0.004780"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:19.391105" elapsed="0.361415"/>
</kw>
<msg time="2026-04-19T00:41:19.752824" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:19.390127" elapsed="0.362759"/>
</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-19T00:41:19.389341" elapsed="0.363628"/>
</kw>
<msg time="2026-04-19T00:41:19.753010" 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-19T00:41:19.388600" elapsed="0.364520"/>
</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-19T00:41:19.756160" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:41:19.756637" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:19.756932" elapsed="0.000196"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:19.753478" elapsed="0.003705"/>
</kw>
<msg time="2026-04-19T00:41:19.757275" level="INFO">${output} = 1</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-19T00:41:19.387371" elapsed="0.369930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:19.757728" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:19.757481" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:19.757815" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:19.757991" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:19.385754" elapsed="0.372263"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:19.758079" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:41:19.758226" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:19.383628" elapsed="0.374622"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:19.758805" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:19.758411" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:19.382527" elapsed="0.376464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:21.762725" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:21.761891" elapsed="0.000907"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:21.764996" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:21.764324" elapsed="0.000771"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:21.767024" 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-19T00:41:21.767301" 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-19T00:41:21.766646" elapsed="0.000718"/>
</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-19T00:41:21.772784" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:21.772004" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:21.771946" elapsed="0.001047"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:21.774525" 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-19T00:41:21.774769" 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-19T00:41:21.774079" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:21.776424" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:21.775852" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:21.778238" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:21.777523" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:21.780670" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:21.780746" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:21.780388" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:21.781070" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:21.782415" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:22.099006" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:21.782087" elapsed="0.317091"/>
</kw>
<msg time="2026-04-19T00:41:22.099265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:21.781707" elapsed="0.317653"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:21.779543" elapsed="0.320104"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:22.101204" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:22.124019" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:22.124571" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:22.124969" 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-19T00:41:22.100739" elapsed="0.024491"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:22.127452" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:22.130694" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:22.129662" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:22.131896" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:22.131319" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:22.131193" elapsed="0.001040"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:22.133123" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T00:41:22.132559" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:22.132449" elapsed="0.001020"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:22.133549" 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-19T00:41:22.138418" 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-19T00:41:22.139010" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:22.139390" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:22.134940" elapsed="0.004659"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:21.770618" elapsed="0.369206"/>
</kw>
<msg time="2026-04-19T00:41:22.140152" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:21.769902" elapsed="0.370311"/>
</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-19T00:41:21.769023" elapsed="0.371272"/>
</kw>
<msg time="2026-04-19T00:41:22.140337" 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-19T00:41:21.767744" elapsed="0.372641"/>
</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-19T00:41:22.143455" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:41:22.143935" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:22.144250" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:22.140678" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T00:41:22.144568" level="INFO">${output} = 1</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-19T00:41:21.765622" elapsed="0.378974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:22.145141" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:22.144850" elapsed="0.000338"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:22.145233" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:41:22.145388" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:21.763314" elapsed="0.382099"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:22.145463" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:22.145610" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:21.760858" elapsed="0.384777"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:22.146295" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:22.145796" elapsed="0.000577">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:21.759761" elapsed="0.386727">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:24.150165" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:24.149366" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:24.152591" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:24.151756" elapsed="0.000875"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:24.153801" 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-19T00:41:24.153944" 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-19T00:41:24.153575" elapsed="0.000407"/>
</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-19T00:41:24.159887" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:24.159194" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:24.158774" elapsed="0.001346"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:24.162199" 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-19T00:41:24.162550" 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-19T00:41:24.161508" elapsed="0.001182"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:24.164803" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:24.164119" elapsed="0.000796"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:24.166657" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:24.165911" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:24.169122" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:24.169201" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:24.168816" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:24.169444" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:24.170863" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:24.480840" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:24.170526" elapsed="0.310619"/>
</kw>
<msg time="2026-04-19T00:41:24.481254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:24.170010" elapsed="0.311355"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:24.168018" elapsed="0.313719"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:24.483863" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:24.506216" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:24.506862" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:24.514541" 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-19T00:41:24.483285" elapsed="0.031435"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:24.516537" elapsed="0.001016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:24.519228" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:24.518471" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:24.520196" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:24.519658" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:24.519565" elapsed="0.000835"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:24.520800" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:41:24.520590" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:24.520540" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:24.521067" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:24.525990" elapsed="0.000377"/>
</kw>
<kw name="Open 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-19T00:41:24.526584" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:24.526954" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:24.522425" elapsed="0.004793"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:24.156820" elapsed="0.370627"/>
</kw>
<msg time="2026-04-19T00:41:24.527780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:24.155727" elapsed="0.372118"/>
</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-19T00:41:24.154953" elapsed="0.372975"/>
</kw>
<msg time="2026-04-19T00:41:24.527969" 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-19T00:41:24.154231" elapsed="0.373787"/>
</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-19T00:41:24.531108" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:41:24.531602" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:24.531958" elapsed="0.000206"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:24.528404" elapsed="0.003816"/>
</kw>
<msg time="2026-04-19T00:41:24.532315" level="INFO">${output} = 1</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-19T00:41:24.152945" elapsed="0.379396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:24.532794" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:24.532535" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:24.532883" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:41:24.533054" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:24.150706" elapsed="0.382375"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:24.533129" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:41:24.533277" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:24.148493" elapsed="0.384810"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:24.533941" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:24.533531" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:24.147378" elapsed="0.386925">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:26.537901" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:26.537124" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:26.540270" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:26.539619" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:26.542226" 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-19T00:41:26.542461" 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-19T00:41:26.541858" elapsed="0.000664"/>
</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-19T00:41:26.549141" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:26.548437" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:26.547994" elapsed="0.001354"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:26.551525" 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-19T00:41:26.551885" 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-19T00:41:26.550841" elapsed="0.001209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:26.554330" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:26.553506" elapsed="0.000988"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:26.557124" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:26.556066" elapsed="0.001204"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:26.560657" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:26.560737" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:26.560356" 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-19T00:41:26.560978" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:26.562280" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:26.875990" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:26.561939" elapsed="0.314224"/>
</kw>
<msg time="2026-04-19T00:41:26.876248" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:26.561576" elapsed="0.314759"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:26.559490" elapsed="0.317130"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:26.878127" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:26.901547" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:26.902217" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:26.902674" 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-19T00:41:26.877718" elapsed="0.025184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:26.905416" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:26.908852" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:26.907783" elapsed="0.001345"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:26.910098" elapsed="0.000116"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:26.909498" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:26.909368" elapsed="0.001106"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:26.911481" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T00:41:26.910937" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:26.910816" elapsed="0.000966"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:26.911873" 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-19T00:41:26.918688" elapsed="0.000379"/>
</kw>
<kw name="Open 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-19T00:41:26.919293" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:26.919692" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:26.913327" elapsed="0.006580"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:26.545968" elapsed="0.374284"/>
</kw>
<msg time="2026-04-19T00:41:26.920561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:26.544965" elapsed="0.375659"/>
</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-19T00:41:26.544171" elapsed="0.376534"/>
</kw>
<msg time="2026-04-19T00:41:26.920746" 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-19T00:41:26.543071" elapsed="0.377720"/>
</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-19T00:41:26.923900" 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-19T00:41:26.924429" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:26.924726" 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-19T00:41:26.921102" elapsed="0.003771"/>
</kw>
<msg time="2026-04-19T00:41:26.924965" level="INFO">${output} = 1</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-19T00:41:26.540836" elapsed="0.384154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:26.925448" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:26.925195" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:26.925537" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:41:26.925691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:26.538532" elapsed="0.387183"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:26.925761" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:41:26.925905" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:26.536249" elapsed="0.389680"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:26.926497" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:26.926100" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:26.535159" elapsed="0.391553">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:28.930292" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:28.929472" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:28.932687" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:28.932069" elapsed="0.000680"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:28.934618" 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-19T00:41:28.934850" 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-19T00:41:28.934284" elapsed="0.000627"/>
</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-19T00:41:28.940879" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:28.940414" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:28.940358" elapsed="0.000658"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:28.942712" 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-19T00:41:28.942962" 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-19T00:41:28.942043" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:28.944628" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:28.944076" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:28.946509" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:28.945792" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:28.948927" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:28.949006" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:28.948644" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:28.949346" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:28.950662" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:29.278428" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:28.950332" elapsed="0.328273"/>
</kw>
<msg time="2026-04-19T00:41:29.278698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:28.949948" elapsed="0.328855"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:28.947825" elapsed="0.331308"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:29.280676" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:29.303940" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:29.304551" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:29.304913" 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-19T00:41:29.280261" elapsed="0.024911"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:29.307546" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:29.310957" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:29.309909" elapsed="0.001425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:29.312417" elapsed="0.000088"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:29.311725" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:29.311594" elapsed="0.001154"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:29.313780" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T00:41:29.313228" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:29.312972" elapsed="0.000977"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:29.314046" 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-19T00:41:29.318927" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T00:41:29.319517" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:29.319901" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:29.315405" elapsed="0.004860"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:28.938987" elapsed="0.381505"/>
</kw>
<msg time="2026-04-19T00:41:29.320831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:28.937758" elapsed="0.383136"/>
</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-19T00:41:28.936475" elapsed="0.384506"/>
</kw>
<msg time="2026-04-19T00:41:29.321024" 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-19T00:41:28.935297" elapsed="0.385832"/>
</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-19T00:41:29.324287" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:41:29.324784" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:29.325202" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:29.321434" elapsed="0.003925"/>
</kw>
<msg time="2026-04-19T00:41:29.325492" level="INFO">${output} = 1</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-19T00:41:28.933280" elapsed="0.392240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:29.325976" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:29.325713" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:29.326082" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:41:29.326239" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:28.931099" elapsed="0.395165"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:29.326312" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:29.326459" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:28.928619" elapsed="0.397864"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:29.327072" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:29.326641" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:28.927562" elapsed="0.399732">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:31.330925" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:31.330186" elapsed="0.000809"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:31.333062" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:31.332447" elapsed="0.000655"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:31.334234" 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-19T00:41:31.334486" 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-19T00:41:31.333994" elapsed="0.000531"/>
</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-19T00:41:31.339853" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:31.339209" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:31.339128" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:31.342386" 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-19T00:41:31.342728" 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-19T00:41:31.341449" elapsed="0.001418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:31.345103" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:31.344236" elapsed="0.000978"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:31.346937" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:31.346252" elapsed="0.000796"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:31.349319" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:31.349397" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:31.349020" 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-19T00:41:31.349632" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:31.351084" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:31.674622" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:31.350738" elapsed="0.324036"/>
</kw>
<msg time="2026-04-19T00:41:31.674859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:31.350336" elapsed="0.324614"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:31.348243" elapsed="0.327014"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:31.676800" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:31.699871" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:31.700450" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:31.700789" 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-19T00:41:31.676343" elapsed="0.024658"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:31.703320" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:31.706493" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:31.705533" elapsed="0.001187"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:31.707592" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:31.707095" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:31.706942" elapsed="0.000935"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:31.708744" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:41:31.708227" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:31.708120" elapsed="0.000894"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:31.709170" 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-19T00:41:31.714107" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:31.714730" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:31.715108" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:31.710599" elapsed="0.004720"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:31.337260" elapsed="0.378287"/>
</kw>
<msg time="2026-04-19T00:41:31.715858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:31.336263" elapsed="0.379653"/>
</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-19T00:41:31.335491" elapsed="0.380510"/>
</kw>
<msg time="2026-04-19T00:41:31.716060" 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-19T00:41:31.334749" elapsed="0.381360"/>
</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-19T00:41:31.719216" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:41:31.719707" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:31.720001" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:31.716430" elapsed="0.003737"/>
</kw>
<msg time="2026-04-19T00:41:31.720259" level="INFO">${output} = 1</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-19T00:41:31.333413" elapsed="0.386871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:31.720791" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:31.720511" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:31.720880" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:31.721138" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:31.331486" elapsed="0.389679"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:31.721214" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:31.721361" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:31.329304" elapsed="0.392082"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:31.721939" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:31.721542" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:31.328170" elapsed="0.393974">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:33.724536" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:33.724003" elapsed="0.000583"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:33.725831" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:33.725462" elapsed="0.000406"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:33.726973" 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-19T00:41:33.727129" 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-19T00:41:33.726751" elapsed="0.000417"/>
</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-19T00:41:33.732326" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:33.731677" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:33.731601" elapsed="0.001017"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:33.734879" 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-19T00:41:33.735247" 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-19T00:41:33.733916" elapsed="0.001459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:33.737514" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:33.736704" elapsed="0.000956"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:33.740094" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:33.738916" elapsed="0.001321"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:33.743573" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:33.743695" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:33.742919" elapsed="0.000815"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:33.744068" elapsed="0.000506"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:33.745825" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:34.071836" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:33.745395" elapsed="0.326598"/>
</kw>
<msg time="2026-04-19T00:41:34.072101" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:33.744875" elapsed="0.327320"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:33.741784" elapsed="0.330692"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:34.073961" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:34.097629" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:34.098182" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:34.098514" 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-19T00:41:34.073563" elapsed="0.025179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:34.101149" elapsed="0.000952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:34.104703" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:34.103535" elapsed="0.001430"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:34.105986" elapsed="0.000112"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:34.105405" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:34.105266" elapsed="0.001275"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:34.107993" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T00:41:34.106904" elapsed="0.001245"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:34.106786" elapsed="0.001427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:34.108308" 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-19T00:41:34.113693" 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-19T00:41:34.114266" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:34.114770" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:34.109855" elapsed="0.005145"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:33.729788" elapsed="0.385514"/>
</kw>
<msg time="2026-04-19T00:41:34.115690" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:33.728848" elapsed="0.386907"/>
</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-19T00:41:33.728155" elapsed="0.387686"/>
</kw>
<msg time="2026-04-19T00:41:34.115884" 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-19T00:41:33.727426" elapsed="0.388507"/>
</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-19T00:41:34.119052" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T00:41:34.119582" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:34.119881" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:34.116253" elapsed="0.003795"/>
</kw>
<msg time="2026-04-19T00:41:34.120145" level="INFO">${output} = 1</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-19T00:41:33.726193" elapsed="0.393977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:34.120618" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:34.120365" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:34.120706" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:41:34.120864" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:33.724877" elapsed="0.396012"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:34.120937" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:34.121107" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:33.723534" elapsed="0.397599"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:34.121693" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:34.121293" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:33.722788" elapsed="0.399094">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:36.125465" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:36.124698" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:36.127668" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:36.127002" elapsed="0.000728"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:36.129561" 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-19T00:41:36.129790" 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-19T00:41:36.129229" elapsed="0.000621"/>
</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-19T00:41:36.134669" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:36.133909" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:36.133853" elapsed="0.000957"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:36.136240" 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-19T00:41:36.136481" 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-19T00:41:36.135789" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:36.138138" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:36.137557" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:36.139989" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:36.139288" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:36.142494" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:36.142572" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:36.142171" 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-19T00:41:36.142809" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:36.144111" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:36.458617" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:36.143765" elapsed="0.315007"/>
</kw>
<msg time="2026-04-19T00:41:36.458858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:36.143401" elapsed="0.315549"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:36.141304" elapsed="0.317977"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:36.460900" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:36.483521" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:36.484101" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:36.484452" 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-19T00:41:36.460466" elapsed="0.024204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:36.486949" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:36.490264" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:36.489182" elapsed="0.001317"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:36.491314" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:36.490876" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:36.490750" elapsed="0.000758"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:36.492092" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T00:41:36.491742" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:36.491670" elapsed="0.000687"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:36.492475" elapsed="0.000063"/>
</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-19T00:41:36.499787" elapsed="0.000558"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:36.500695" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:36.501292" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:36.494625" elapsed="0.006986"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:36.132540" elapsed="0.369530"/>
</kw>
<msg time="2026-04-19T00:41:36.502569" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:36.131837" elapsed="0.370829"/>
</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-19T00:41:36.131302" elapsed="0.371482"/>
</kw>
<msg time="2026-04-19T00:41:36.502842" 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-19T00:41:36.130236" elapsed="0.372671"/>
</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-19T00:41:36.506488" 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-19T00:41:36.507056" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:36.507386" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:36.503378" elapsed="0.004167"/>
</kw>
<msg time="2026-04-19T00:41:36.507643" level="INFO">${output} = 1</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-19T00:41:36.128265" elapsed="0.379405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:36.508196" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:36.507887" elapsed="0.000357"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:36.508294" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:41:36.508462" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:36.125989" elapsed="0.382498"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:36.508536" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:36.508683" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:36.123825" elapsed="0.384883"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:36.509375" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:36.508867" elapsed="0.000584">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:36.122753" elapsed="0.386811">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:38.513907" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:38.512919" elapsed="0.001061"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:38.516532" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:38.515839" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:38.518081" 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-19T00:41:38.518234" 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-19T00:41:38.517821" elapsed="0.000451"/>
</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-19T00:41:38.524623" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:38.523773" elapsed="0.000971"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:38.523242" elapsed="0.001596"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:38.526776" 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-19T00:41:38.527123" 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-19T00:41:38.526201" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:38.529254" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:38.528587" elapsed="0.000821"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:38.531848" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:38.530768" elapsed="0.001233"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:38.535306" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:38.535417" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:38.534888" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:38.535752" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:38.537659" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:38.849885" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:38.537218" elapsed="0.312849"/>
</kw>
<msg time="2026-04-19T00:41:38.850156" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:38.536663" elapsed="0.313589"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:38.533666" elapsed="0.316890"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:38.852047" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:38.875847" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:38.876407" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:38.876736" 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-19T00:41:38.851649" elapsed="0.025294"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:38.879252" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:38.882439" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:38.881411" elapsed="0.001254"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:38.883581" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:38.883086" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:38.882922" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:38.884672" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:41:38.884229" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:38.884122" elapsed="0.000907"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:38.885371" elapsed="0.000081"/>
</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-19T00:41:38.891468" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T00:41:38.892077" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:38.892453" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:38.888001" elapsed="0.004666"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:38.521123" elapsed="0.371767"/>
</kw>
<msg time="2026-04-19T00:41:38.893221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:38.520098" elapsed="0.373187"/>
</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-19T00:41:38.519250" elapsed="0.374118"/>
</kw>
<msg time="2026-04-19T00:41:38.893409" 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-19T00:41:38.518498" elapsed="0.374958"/>
</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-19T00:41:38.896523" 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-19T00:41:38.897007" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:38.897352" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:38.893754" elapsed="0.003748"/>
</kw>
<msg time="2026-04-19T00:41:38.897746" level="INFO">${output} = 1</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-19T00:41:38.517033" elapsed="0.380741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:38.898340" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:38.897985" elapsed="0.000402"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:38.898434" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:41:38.898633" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:38.514493" elapsed="0.384172"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:38.898715" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:41:38.898867" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:38.511967" elapsed="0.386925"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:38.899586" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:38.899078" elapsed="0.000603">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:38.510602" elapsed="0.389224">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:40.903543" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:40.902747" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:40.905737" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:40.905116" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:40.907515" 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-19T00:41:40.907621" 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-19T00:41:40.907344" elapsed="0.000305"/>
</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-19T00:41:40.911854" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:40.911371" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:40.911083" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:40.913515" 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-19T00:41:40.913763" 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-19T00:41:40.913032" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:40.915571" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:40.914943" elapsed="0.000741"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:40.917410" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:40.916677" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:40.920020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:40.920120" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:40.919726" 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-19T00:41:40.920360" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:40.921665" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:41.252182" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:40.921331" elapsed="0.331142"/>
</kw>
<msg time="2026-04-19T00:41:41.252595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:40.920937" elapsed="0.331760"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:40.918728" elapsed="0.334275"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:41.254524" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:41.278021" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:41.278562" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:41.278897" 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-19T00:41:41.254133" elapsed="0.025018"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:41.281587" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:41.285135" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:41.284034" elapsed="0.001350"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:41.286382" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:41.285812" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:41.285682" elapsed="0.001008"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:41.287711" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T00:41:41.287049" elapsed="0.000897"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:41.286924" elapsed="0.001197"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:41.288310" elapsed="0.000087"/>
</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-19T00:41:41.296253" 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-19T00:41:41.296848" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:41.297242" 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-19T00:41:41.290911" elapsed="0.006554"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:40.909653" elapsed="0.388044"/>
</kw>
<msg time="2026-04-19T00:41:41.298073" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:40.908922" elapsed="0.389213"/>
</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-19T00:41:40.908359" elapsed="0.389859"/>
</kw>
<msg time="2026-04-19T00:41:41.298260" 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-19T00:41:40.907812" elapsed="0.390495"/>
</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-19T00:41:41.301409" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T00:41:41.301889" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:41.302240" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:41.298605" elapsed="0.003784"/>
</kw>
<msg time="2026-04-19T00:41:41.302478" level="INFO">${output} = 1</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-19T00:41:40.906329" elapsed="0.396175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:41.302935" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:41.302687" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:41.303026" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:41:41.303195" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:40.904119" elapsed="0.399101"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:41.303265" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:41.303408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:40.901835" elapsed="0.401598"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:41.304035" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:41.303636" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:40.900707" elapsed="0.403609">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:43.308216" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:43.307345" elapsed="0.000943"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:43.309589" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:43.309209" elapsed="0.000416"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:43.310762" 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-19T00:41:43.310907" 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-19T00:41:43.310522" elapsed="0.000422"/>
</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-19T00:41:43.316449" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:43.315701" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:43.315619" elapsed="0.000972"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:43.318274" 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-19T00:41:43.318528" 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-19T00:41:43.317585" elapsed="0.001050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:43.320248" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:43.319635" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:43.322167" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:43.321413" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:43.324750" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:43.324833" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:43.324428" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:43.325095" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:43.326423" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:43.657111" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:43.326081" elapsed="0.331184"/>
</kw>
<msg time="2026-04-19T00:41:43.657350" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:43.325686" elapsed="0.331755"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:43.323521" elapsed="0.334207"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:43.659320" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:43.682695" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:43.683244" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:43.683584" 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-19T00:41:43.658871" elapsed="0.024974"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:43.686040" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:43.688989" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:43.688333" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:43.689739" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:43.689399" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:43.689314" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:43.690477" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:41:43.690173" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:43.690099" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:43.690832" elapsed="0.000069"/>
</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-19T00:41:43.697439" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:41:43.697986" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:43.698368" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:43.692996" elapsed="0.005583"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:43.313781" elapsed="0.385027"/>
</kw>
<msg time="2026-04-19T00:41:43.699135" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:43.312747" elapsed="0.386447"/>
</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-19T00:41:43.311966" elapsed="0.387312"/>
</kw>
<msg time="2026-04-19T00:41:43.699320" 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-19T00:41:43.311192" elapsed="0.388174"/>
</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-19T00:41:43.702441" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:41:43.702917" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:43.703230" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:43.699660" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T00:41:43.703474" level="INFO">${output} = 1</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-19T00:41:43.309927" elapsed="0.393572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:43.703924" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:43.703678" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:43.704011" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:41:43.704255" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:43.308618" elapsed="0.395662"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:43.704327" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:43.704472" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:43.306435" elapsed="0.398062"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:43.705060" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:43.704653" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:43.305334" elapsed="0.399909">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:45.709125" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:45.708282" elapsed="0.000919"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:45.711561" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:45.710872" elapsed="0.000753"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:45.713503" 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-19T00:41:45.713727" 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-19T00:41:45.713182" elapsed="0.000604"/>
</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-19T00:41:45.719148" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:45.718664" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:45.718607" elapsed="0.000681"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:45.720973" 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-19T00:41:45.721234" 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-19T00:41:45.720296" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:45.722912" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:45.722346" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:45.724793" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:45.723995" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:45.727298" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:45.727377" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:45.726996" 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-19T00:41:45.727612" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:45.728916" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:46.052467" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:45.728588" elapsed="0.324044"/>
</kw>
<msg time="2026-04-19T00:41:46.052722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:45.728199" elapsed="0.324620"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:45.726244" elapsed="0.326890"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:46.054677" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:46.077839" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:46.078447" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:46.078806" 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-19T00:41:46.054275" elapsed="0.024750"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:46.081262" elapsed="0.000985"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:46.083910" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:46.083225" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:46.084833" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:46.084334" elapsed="0.000625"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:46.084249" elapsed="0.000822"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:46.085720" elapsed="0.000280"/>
</return>
<status status="PASS" start="2026-04-19T00:41:46.085298" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:46.085223" elapsed="0.000990"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:46.086337" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:46.092794" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T00:41:46.093412" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:46.093818" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:46.088529" elapsed="0.005529"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:45.717296" elapsed="0.377009"/>
</kw>
<msg time="2026-04-19T00:41:46.094630" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:45.716581" elapsed="0.378114"/>
</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-19T00:41:45.715329" elapsed="0.379452"/>
</kw>
<msg time="2026-04-19T00:41:46.094824" 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-19T00:41:45.714167" elapsed="0.380705"/>
</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-19T00:41:46.098000" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:41:46.098519" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:46.098825" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:46.095265" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T00:41:46.099157" level="INFO">${output} = 1</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-19T00:41:45.712195" elapsed="0.386990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:46.099655" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:46.099396" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:46.099747" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:41:46.099907" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:45.709840" elapsed="0.390093"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:46.099982" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:46.100150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:45.707312" elapsed="0.392863"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:46.100750" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:46.100343" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:45.706182" elapsed="0.394760">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:48.104511" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:48.103683" elapsed="0.000896"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:48.106319" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:48.105898" elapsed="0.000459"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:48.107519" 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-19T00:41:48.107785" 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-19T00:41:48.107290" elapsed="0.000534"/>
</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-19T00:41:48.113138" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:48.112635" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:48.112557" elapsed="0.000724"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:48.114953" 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-19T00:41:48.115218" 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-19T00:41:48.114266" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:48.116887" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:48.116340" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:48.118720" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:48.117990" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:48.121205" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:48.121286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:48.120896" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:48.121526" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:48.122835" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:48.442800" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:48.122481" elapsed="0.320478"/>
</kw>
<msg time="2026-04-19T00:41:48.443070" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:48.122111" elapsed="0.321055"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:48.120128" elapsed="0.323333"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:48.445013" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:48.468103" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:48.468639" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:48.469091" 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-19T00:41:48.444609" elapsed="0.024705"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:48.471535" elapsed="0.000998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:48.474864" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:48.473832" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:48.476152" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:48.475520" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:48.475393" elapsed="0.001069"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:48.476924" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T00:41:48.476713" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:48.476663" elapsed="0.000503"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:48.477247" 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-19T00:41:48.482155" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:41:48.482850" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:48.483294" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:48.478601" elapsed="0.004909"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:48.110603" elapsed="0.373136"/>
</kw>
<msg time="2026-04-19T00:41:48.484104" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:48.109635" elapsed="0.374540"/>
</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-19T00:41:48.108843" elapsed="0.375425"/>
</kw>
<msg time="2026-04-19T00:41:48.484312" 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-19T00:41:48.108096" elapsed="0.376266"/>
</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-19T00:41:48.487461" 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-19T00:41:48.487954" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:48.488310" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:48.484661" elapsed="0.003807"/>
</kw>
<msg time="2026-04-19T00:41:48.488563" level="INFO">${output} = 1</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-19T00:41:48.106666" elapsed="0.381923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:48.489029" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:48.488771" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:48.489136" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:48.489305" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:48.105119" elapsed="0.384214"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:48.489382" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:41:48.489533" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:48.102832" elapsed="0.386726"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:48.490146" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:48.489719" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:48.101758" elapsed="0.388588">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:50.493976" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:50.493235" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:50.496141" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:50.495501" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:50.497969" 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-19T00:41:50.498233" 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-19T00:41:50.497630" elapsed="0.000662"/>
</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-19T00:41:50.503376" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:50.502607" elapsed="0.000919"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:50.502549" elapsed="0.001040"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:50.505054" 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-19T00:41:50.505301" 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-19T00:41:50.504597" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:50.506965" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:50.506398" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:50.508766" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:50.508074" elapsed="0.000790"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:50.511226" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:50.511304" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:50.510921" 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-19T00:41:50.511541" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:50.512819" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:50.834170" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:50.512490" elapsed="0.321824"/>
</kw>
<msg time="2026-04-19T00:41:50.834399" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:50.512123" elapsed="0.322369"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:50.510153" elapsed="0.324628"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:50.836288" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:50.859622" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:50.860177" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:50.860515" 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-19T00:41:50.835876" elapsed="0.024855"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:50.862973" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:50.866219" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:50.865223" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:50.867346" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:50.866814" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:50.866690" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:50.868438" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:41:50.867957" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:50.867852" elapsed="0.001101"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:50.869280" elapsed="0.000091"/>
</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-19T00:41:50.879589" elapsed="0.000525"/>
</kw>
<kw name="Open 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-19T00:41:50.880443" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:50.880966" elapsed="0.000290"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:50.872413" elapsed="0.009004"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:50.501086" elapsed="0.380655"/>
</kw>
<msg time="2026-04-19T00:41:50.882317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:50.500373" elapsed="0.382033"/>
</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-19T00:41:50.499821" elapsed="0.382708"/>
</kw>
<msg time="2026-04-19T00:41:50.882589" 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-19T00:41:50.498642" elapsed="0.384016"/>
</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-19T00:41:50.887065" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:41:50.887549" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:50.887847" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:50.883116" elapsed="0.004882"/>
</kw>
<msg time="2026-04-19T00:41:50.888109" level="INFO">${output} = 1</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-19T00:41:50.496684" elapsed="0.391451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:50.888564" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:50.888313" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:50.888653" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:41:50.888809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:50.494538" elapsed="0.394297"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:50.888881" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:50.889026" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:50.492385" elapsed="0.396683"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:50.889616" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:50.889224" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:50.491309" elapsed="0.398490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:52.893349" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:52.892576" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:52.895539" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:52.894818" elapsed="0.000783"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:52.897424" 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-19T00:41:52.897649" 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-19T00:41:52.897100" elapsed="0.000608"/>
</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-19T00:41:52.902958" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:52.902489" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:52.902199" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:52.904565" 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-19T00:41:52.904806" 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-19T00:41:52.904127" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:52.906446" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:52.905878" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:52.908381" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:52.907631" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:52.910809" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:52.910888" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:52.910513" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:52.911146" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:52.912439" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:53.241244" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:52.912111" elapsed="0.329288"/>
</kw>
<msg time="2026-04-19T00:41:53.241483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:52.911719" elapsed="0.329850"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:52.909672" elapsed="0.332178"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:53.243382" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:53.266585" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:53.267126" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:53.267459" 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-19T00:41:53.242949" elapsed="0.024721"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:53.269936" elapsed="0.000587"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:53.271936" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:53.271333" 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-19T00:41:53.272678" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:53.272349" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:53.272270" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:53.273431" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:41:53.273133" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:53.272994" elapsed="0.000657"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:53.273773" elapsed="0.000090"/>
</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-19T00:41:53.279824" elapsed="0.000379"/>
</kw>
<kw name="Open 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-19T00:41:53.280416" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:53.280778" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:53.275790" elapsed="0.005199"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:52.900869" elapsed="0.380478"/>
</kw>
<msg time="2026-04-19T00:41:53.281672" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:52.900180" elapsed="0.381553"/>
</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-19T00:41:52.899248" elapsed="0.382566"/>
</kw>
<msg time="2026-04-19T00:41:53.281855" 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-19T00:41:52.898087" elapsed="0.383813"/>
</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-19T00:41:53.284926" 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-19T00:41:53.285474" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:53.285773" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:53.282270" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T00:41:53.286019" level="INFO">${output} = 1</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-19T00:41:52.896145" elapsed="0.389916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:53.286509" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:53.286262" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:53.286597" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:41:53.286750" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:52.893874" elapsed="0.392900"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:53.286821" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:41:53.286965" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:52.891697" elapsed="0.395293"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:53.287559" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:53.287164" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:52.890627" elapsed="0.397119">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:55.291320" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:55.290502" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:55.293527" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:55.292883" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:55.295464" 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-19T00:41:55.295690" 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-19T00:41:55.295116" elapsed="0.000634"/>
</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-19T00:41:55.301447" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:55.300777" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:55.300400" elapsed="0.001241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:55.303668" 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-19T00:41:55.303997" 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-19T00:41:55.303060" elapsed="0.001068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:55.305696" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:55.305156" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:55.307513" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:55.306772" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:55.310059" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:55.310140" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:55.309754" 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-19T00:41:55.310374" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:55.311761" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:55.637071" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:55.311432" elapsed="0.325785"/>
</kw>
<msg time="2026-04-19T00:41:55.637300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:55.311064" elapsed="0.326323"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:55.308820" elapsed="0.328842"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:55.639144" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:55.662139" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:55.662720" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:55.663234" 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-19T00:41:55.638738" elapsed="0.024769"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:55.666306" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:55.669808" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:55.668750" elapsed="0.001347"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:55.671085" elapsed="0.000080"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:55.670480" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:55.670345" elapsed="0.001074"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:55.672625" elapsed="0.000135"/>
</return>
<status status="PASS" start="2026-04-19T00:41:55.671772" elapsed="0.001108"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:55.671653" elapsed="0.001338"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:55.673095" 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-19T00:41:55.679797" elapsed="0.000418"/>
</kw>
<kw name="Open 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-19T00:41:55.680477" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:55.680857" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:55.674422" elapsed="0.006807"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:55.298518" elapsed="0.382940"/>
</kw>
<msg time="2026-04-19T00:41:55.681770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:55.297569" elapsed="0.384268"/>
</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-19T00:41:55.296797" elapsed="0.385123"/>
</kw>
<msg time="2026-04-19T00:41:55.681962" 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-19T00:41:55.296073" elapsed="0.385937"/>
</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-19T00:41:55.685282" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:41:55.685839" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:55.686197" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:55.682338" elapsed="0.004013"/>
</kw>
<msg time="2026-04-19T00:41:55.686521" level="INFO">${output} = 1</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-19T00:41:55.294103" elapsed="0.392445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:55.687047" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:55.686765" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:55.687144" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:41:55.687308" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:55.291911" elapsed="0.395423"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:55.687382" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:41:55.687529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:55.289649" elapsed="0.397905"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:55.688198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:55.687756" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:55.288608" elapsed="0.399780">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:41:57.692009" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:41:57.691262" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:41:57.694233" level="INFO">${member_ip} = 10.30.171.206</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-19T00:41:57.693572" elapsed="0.000723"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:57.696187" 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-19T00:41:57.696349" 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-19T00:41:57.695858" elapsed="0.000531"/>
</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-19T00:41:57.702214" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:41:57.701523" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:57.701440" elapsed="0.000981"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:57.704780" 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-19T00:41:57.705083" 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-19T00:41:57.703947" elapsed="0.001242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:57.706767" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:57.706198" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:41:57.708671" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:41:57.707916" elapsed="0.000855"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:41:57.711190" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:41:57.711273" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:41:57.710843" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:57.711516" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:41:57.712854" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:41:58.039440" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:41:57.712518" elapsed="0.327148"/>
</kw>
<msg time="2026-04-19T00:41:58.039746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:57.712140" elapsed="0.327689"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:41:57.710056" elapsed="0.330097"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:41:58.041632" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:41:58.064611" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:41:58.064840" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:41:58.064990" 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-19T00:41:58.041244" elapsed="0.023865"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:58.066101" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:58.067521" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:58.067080" elapsed="0.000545"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:58.068044" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:41:58.067789" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:58.067731" elapsed="0.000470"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:41:58.068550" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T00:41:58.068347" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T00:41:58.068298" elapsed="0.000422"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:41:58.068800" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:58.073569" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T00:41:58.074209" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:58.074570" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:58.070150" elapsed="0.004629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:41:57.699396" elapsed="0.375605"/>
</kw>
<msg time="2026-04-19T00:41:58.075419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:41:57.698266" elapsed="0.377212"/>
</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-19T00:41:57.697431" elapsed="0.378130"/>
</kw>
<msg time="2026-04-19T00:41:58.075601" 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-19T00:41:57.696630" elapsed="0.379017"/>
</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-19T00:41:58.078637" 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-19T00:41:58.079205" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:41:58.079505" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:41:58.075940" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T00:41:58.079751" level="INFO">${output} = 1</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-19T00:41:57.694793" elapsed="0.384984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:41:58.080258" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:41:58.079958" elapsed="0.000346"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:41:58.080348" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:41:58.080501" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:41:57.692603" elapsed="0.387924"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:41:58.080574" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:41:58.080719" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:41:57.690356" elapsed="0.390388"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:41:58.081365" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:41:58.080947" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:41:57.689236" elapsed="0.392313">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:00.085189" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:00.084362" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:00.087359" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:00.086716" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:00.089337" 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-19T00:42:00.089500" 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-19T00:42:00.089015" elapsed="0.000525"/>
</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-19T00:42:00.095215" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:00.094529" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:00.094449" elapsed="0.000970"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:00.097851" 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-19T00:42:00.098261" 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-19T00:42:00.096867" elapsed="0.001539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:00.100670" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:00.099839" elapsed="0.001031"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:00.102727" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:00.101957" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:00.105274" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:00.105352" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:00.104966" 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-19T00:42:00.105590" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:00.106852" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:00.419728" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:41:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:00.106528" elapsed="0.313360"/>
</kw>
<msg time="2026-04-19T00:42:00.419975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:00.106166" elapsed="0.313925"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:00.104178" elapsed="0.316201"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:00.421932" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:00.445272" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:00.445853" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:00.446244" 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-19T00:42:00.421518" elapsed="0.024939"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:00.448765" elapsed="0.000970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:00.452119" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:00.450992" elapsed="0.001368"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:00.453302" elapsed="0.000175"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:00.452714" elapsed="0.000904"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:00.452587" elapsed="0.001159"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:00.454398" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T00:42:00.454108" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:00.453960" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:00.454653" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:00.459610" 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-19T00:42:00.460269" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:00.460660" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:00.456023" elapsed="0.004853"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:00.092435" elapsed="0.368690"/>
</kw>
<msg time="2026-04-19T00:42:00.461478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:00.091433" elapsed="0.370110"/>
</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-19T00:42:00.090582" elapsed="0.371054"/>
</kw>
<msg time="2026-04-19T00:42:00.461679" 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-19T00:42:00.089780" elapsed="0.371948"/>
</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-19T00:42:00.464950" 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-19T00:42:00.465479" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:00.465787" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:00.462021" elapsed="0.003919"/>
</kw>
<msg time="2026-04-19T00:42:00.466073" level="INFO">${output} = 1</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-19T00:42:00.087933" elapsed="0.378167"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:00.466539" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:00.466286" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:00.466626" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:42:00.466792" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:00.085742" elapsed="0.381076"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:00.466866" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:42:00.467056" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:00.083491" elapsed="0.383594"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:00.467651" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:00.467246" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:00.082410" elapsed="0.385465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:02.470942" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:02.470433" elapsed="0.000558"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:02.472525" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:02.472088" elapsed="0.000479"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:02.473767" 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-19T00:42:02.473920" 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-19T00:42:02.473518" elapsed="0.000441"/>
</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-19T00:42:02.479734" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:02.479018" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:02.478933" elapsed="0.001027"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:02.482427" 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-19T00:42:02.482794" 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-19T00:42:02.481412" elapsed="0.001530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:02.485202" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:02.484357" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:02.487847" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:02.486731" elapsed="0.001217"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:02.490521" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:02.490601" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:02.490218" 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-19T00:42:02.490840" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:02.492353" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:02.815871" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:02.491964" elapsed="0.324088"/>
</kw>
<msg time="2026-04-19T00:42:02.816141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:02.491587" elapsed="0.324647"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:02.489415" elapsed="0.327102"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:02.818086" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:02.840899" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:02.841546" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:02.841891" 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-19T00:42:02.817666" elapsed="0.024480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:02.844321" elapsed="0.001027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:02.846777" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:02.846167" 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-19T00:42:02.847580" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:02.847171" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:02.847089" 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-19T00:42:02.848276" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T00:42:02.847969" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:02.847902" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:02.848634" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:02.854984" 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-19T00:42:02.855555" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:02.855914" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:02.850637" elapsed="0.005503"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:02.476907" elapsed="0.379461"/>
</kw>
<msg time="2026-04-19T00:42:02.856683" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:02.475818" elapsed="0.380923"/>
</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-19T00:42:02.474973" elapsed="0.381851"/>
</kw>
<msg time="2026-04-19T00:42:02.856865" 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-19T00:42:02.474215" elapsed="0.382696"/>
</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-19T00:42:02.860014" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:42:02.860504" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:02.860799" 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-19T00:42:02.857265" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T00:42:02.861098" level="INFO">${output} = 1</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-19T00:42:02.472879" elapsed="0.388246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:02.861560" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:02.861309" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:02.861648" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:02.861802" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:02.471464" elapsed="0.390364"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:02.861875" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:42:02.862021" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:02.469839" elapsed="0.392247"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:02.862643" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:02.862246" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:02.468926" elapsed="0.393900">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:04.866406" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:04.865632" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:04.868621" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:04.867971" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:04.870482" 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-19T00:42:04.870855" 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-19T00:42:04.870150" elapsed="0.000790"/>
</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-19T00:42:04.877502" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:04.876748" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:04.876692" elapsed="0.000948"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:04.879086" 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-19T00:42:04.879328" 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-19T00:42:04.878627" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:04.880937" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:04.880395" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:04.882724" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:04.882019" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:04.885182" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:04.885261" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:04.884873" 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-19T00:42:04.885501" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:04.886766" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:05.208976" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:04.886443" elapsed="0.322705"/>
</kw>
<msg time="2026-04-19T00:42:05.209236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:04.886080" elapsed="0.323246"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:04.884123" elapsed="0.325488"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:05.211091" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:05.234125" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:05.234621" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:05.234950" 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-19T00:42:05.210685" elapsed="0.024539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:05.237454" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:05.240627" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:05.239610" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:05.241841" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:05.241341" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:05.241216" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:05.242918" elapsed="0.000140"/>
</return>
<status status="PASS" start="2026-04-19T00:42:05.242480" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:05.242376" elapsed="0.000973"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:05.243485" 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-19T00:42:05.248206" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:42:05.248825" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:05.249283" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:05.244808" elapsed="0.004686"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:04.875385" elapsed="0.374333"/>
</kw>
<msg time="2026-04-19T00:42:05.250042" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:04.873792" elapsed="0.376308"/>
</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-19T00:42:04.872524" elapsed="0.377661"/>
</kw>
<msg time="2026-04-19T00:42:05.250228" 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-19T00:42:04.871328" elapsed="0.378946"/>
</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-19T00:42:05.253350" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T00:42:05.253824" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:05.254200" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:05.250565" elapsed="0.003785"/>
</kw>
<msg time="2026-04-19T00:42:05.254446" level="INFO">${output} = 1</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-19T00:42:04.869196" elapsed="0.385275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:05.254895" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:05.254649" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:05.254983" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:05.255159" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:04.866958" elapsed="0.388226"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:05.255247" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:05.255392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:04.864776" elapsed="0.390641"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:05.255966" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:05.255574" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:04.863713" elapsed="0.392472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:07.259745" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:07.258973" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:07.261905" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:07.261294" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:07.263761" 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-19T00:42:07.264174" 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-19T00:42:07.263439" elapsed="0.000798"/>
</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-19T00:42:07.270070" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:07.269388" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:07.268984" elapsed="0.001363"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:07.272415" 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-19T00:42:07.272773" 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-19T00:42:07.271727" elapsed="0.001188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:07.274663" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:07.274111" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:07.276507" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:07.275761" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:07.278983" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:07.279076" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:07.278699" 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-19T00:42:07.279313" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:07.280691" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:07.595591" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:07.280278" elapsed="0.315468"/>
</kw>
<msg time="2026-04-19T00:42:07.595835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:07.279884" elapsed="0.316041"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:07.277925" elapsed="0.318314"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:07.597779" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:07.620697" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:07.621259" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:07.621601" 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-19T00:42:07.597379" elapsed="0.024433"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:07.624183" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:07.626827" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:07.626215" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:07.627585" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:07.627256" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:07.627175" elapsed="0.000597"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:07.628276" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:42:07.627971" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:07.627903" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:07.628630" elapsed="0.000055"/>
</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-19T00:42:07.635480" elapsed="0.000468"/>
</kw>
<kw name="Open 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-19T00:42:07.636372" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:07.636814" 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-19T00:42:07.630497" elapsed="0.006524"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:07.267095" elapsed="0.370172"/>
</kw>
<msg time="2026-04-19T00:42:07.637636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:07.266142" elapsed="0.371555"/>
</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-19T00:42:07.265372" elapsed="0.372417"/>
</kw>
<msg time="2026-04-19T00:42:07.637832" 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-19T00:42:07.264600" elapsed="0.373282"/>
</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-19T00:42:07.640895" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T00:42:07.641424" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:07.641735" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:07.638210" elapsed="0.003685"/>
</kw>
<msg time="2026-04-19T00:42:07.641987" level="INFO">${output} = 1</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-19T00:42:07.262485" elapsed="0.379527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:07.642476" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:07.642222" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:07.642563" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:42:07.642717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:07.260301" elapsed="0.382442"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:07.642791" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:07.642936" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:07.258158" elapsed="0.384804"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:07.643568" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:07.643165" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:07.257074" elapsed="0.386681">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:09.647565" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:09.646783" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:09.649393" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:09.648965" elapsed="0.000468"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:09.650618" 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-19T00:42:09.650762" 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-19T00:42:09.650399" elapsed="0.000400"/>
</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-19T00:42:09.656667" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:09.655962" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:09.655567" elapsed="0.001336"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:09.658973" 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-19T00:42:09.659341" 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-19T00:42:09.658343" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:09.661470" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:09.660850" elapsed="0.000757"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:09.663506" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:09.662716" elapsed="0.000909"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:09.666173" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:09.666251" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:09.665842" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:09.666491" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:09.667795" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:09.980217" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:09.667465" elapsed="0.312906"/>
</kw>
<msg time="2026-04-19T00:42:09.980456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:09.667085" elapsed="0.313462"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:09.664888" elapsed="0.315969"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:09.982382" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:10.005302" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:10.005796" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:10.006180" 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-19T00:42:09.981960" elapsed="0.024432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:10.008658" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:10.011822" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:10.010801" elapsed="0.001397"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:10.013117" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:10.012550" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:10.012429" elapsed="0.000976"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:10.014201" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T00:42:10.013723" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:10.013614" elapsed="0.000932"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:10.014718" elapsed="0.000082"/>
</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-19T00:42:10.024784" 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-19T00:42:10.025359" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:10.025720" 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-19T00:42:10.017930" elapsed="0.007997"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:09.653599" elapsed="0.372569"/>
</kw>
<msg time="2026-04-19T00:42:10.026578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:09.652563" elapsed="0.374074"/>
</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-19T00:42:09.651765" elapsed="0.374952"/>
</kw>
<msg time="2026-04-19T00:42:10.026757" 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-19T00:42:09.651021" elapsed="0.375781"/>
</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-19T00:42:10.029863" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:42:10.030381" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:10.030679" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:10.027169" elapsed="0.003659"/>
</kw>
<msg time="2026-04-19T00:42:10.030918" level="INFO">${output} = 1</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-19T00:42:09.649782" elapsed="0.381161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:10.031410" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:10.031161" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:10.031498" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:10.031649" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:09.648184" elapsed="0.383495"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:10.031733" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:10.031876" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:09.645904" elapsed="0.385996"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:10.032464" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:10.032074" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:09.644648" elapsed="0.388002">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:12.036058" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:12.035304" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:12.038114" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:12.037497" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:12.039562" 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-19T00:42:12.039716" 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-19T00:42:12.039335" elapsed="0.000426"/>
</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-19T00:42:12.045374" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:12.044655" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:12.044574" elapsed="0.001005"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:12.048057" 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-19T00:42:12.048423" 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-19T00:42:12.047093" elapsed="0.001476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:12.050828" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:12.050060" elapsed="0.000878"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:12.052609" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:12.051903" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:12.054970" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:12.055062" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:12.054687" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:12.055295" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:12.056604" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:12.365512" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:12.056282" elapsed="0.309485"/>
</kw>
<msg time="2026-04-19T00:42:12.365925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:12.055909" elapsed="0.310210"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:12.053910" elapsed="0.312823"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:12.368342" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:12.390825" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:12.391396" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:12.391733" 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-19T00:42:12.367902" elapsed="0.024046"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:12.394300" elapsed="0.000713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:12.396502" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:12.395853" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:12.397282" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:12.396885" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:12.396803" elapsed="0.000668"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:12.397990" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T00:42:12.397698" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:12.397608" elapsed="0.000660"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:12.398387" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:12.405143" elapsed="0.000523"/>
</kw>
<kw name="Open 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-19T00:42:12.405905" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:12.406305" 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-19T00:42:12.400269" elapsed="0.006257"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:12.042584" elapsed="0.364172"/>
</kw>
<msg time="2026-04-19T00:42:12.407085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:12.041577" elapsed="0.365567"/>
</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-19T00:42:12.040774" elapsed="0.366456"/>
</kw>
<msg time="2026-04-19T00:42:12.407272" 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-19T00:42:12.040003" elapsed="0.367324"/>
</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-19T00:42:12.410460" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:42:12.410944" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:12.411263" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:12.407626" elapsed="0.003799"/>
</kw>
<msg time="2026-04-19T00:42:12.411579" level="INFO">${output} = 1</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-19T00:42:12.038696" elapsed="0.372908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:12.412055" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:12.411787" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:12.412146" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:12.412300" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:12.036572" elapsed="0.375753"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:12.412375" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:42:12.412530" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:12.034484" elapsed="0.378071"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:12.413198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:12.412714" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:12.033456" elapsed="0.379955">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:14.417159" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:14.416359" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:14.419364" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:14.418664" elapsed="0.000764"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:14.421349" 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-19T00:42:14.421588" 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-19T00:42:14.420975" elapsed="0.000673"/>
</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-19T00:42:14.426383" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:14.425884" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:14.425825" elapsed="0.000698"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:14.428266" 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-19T00:42:14.428530" 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-19T00:42:14.427526" elapsed="0.001104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:14.430241" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:14.429625" elapsed="0.000743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:14.432188" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:14.431403" elapsed="0.000906"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:14.434753" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:14.434832" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:14.434462" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:14.435103" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:14.436471" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:14.771913" 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 Sun Apr 19 00:41:14 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:14.436119" elapsed="0.336128"/>
</kw>
<msg time="2026-04-19T00:42:14.772342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:14.435728" elapsed="0.336712"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:14.433533" elapsed="0.339197"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:14.774362" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:14.797635" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:14.798204" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:14.798540" 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-19T00:42:14.773888" elapsed="0.024866"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:14.801124" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:14.803455" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:14.802794" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:14.804199" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:14.803833" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:14.803745" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:14.804879" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:42:14.804588" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:14.804520" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:14.805244" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:14.811810" elapsed="0.000804"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:14.812958" elapsed="0.000264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:14.813500" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:14.807100" elapsed="0.006696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:14.424478" elapsed="0.389573"/>
</kw>
<msg time="2026-04-19T00:42:14.814359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:14.423679" elapsed="0.390739"/>
</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-19T00:42:14.423111" elapsed="0.391394"/>
</kw>
<msg time="2026-04-19T00:42:14.814548" 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-19T00:42:14.422010" elapsed="0.392587"/>
</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-19T00:42:14.817618" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:42:14.818117" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:14.818421" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:14.814891" elapsed="0.003681"/>
</kw>
<msg time="2026-04-19T00:42:14.818666" level="INFO">${output} = 1</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-19T00:42:14.419942" elapsed="0.398750"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:14.819162" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:14.818879" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:14.819254" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:14.819408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:14.417698" elapsed="0.401735"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:14.819484" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:14.819630" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:14.415396" elapsed="0.404260"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:14.820315" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:14.819862" elapsed="0.000531">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:14.414272" elapsed="0.406236">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:16.824092" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:16.823326" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:16.826225" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:16.825569" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:16.827690" 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-19T00:42:16.827832" 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-19T00:42:16.827467" elapsed="0.000402"/>
</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-19T00:42:16.833114" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:16.832473" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:16.832397" elapsed="0.000905"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:16.835606" 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-19T00:42:16.835947" 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-19T00:42:16.834652" elapsed="0.001460"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:16.838230" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:16.837460" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:16.840256" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:16.839544" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:16.842621" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:16.842698" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:16.842336" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:16.842930" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:16.844246" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:17.425824" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:16.843902" elapsed="0.582082"/>
</kw>
<msg time="2026-04-19T00:42:17.426091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:16.843535" elapsed="0.582654"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:16.841550" elapsed="0.584938"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:17.428018" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:17.450719" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:17.451296" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:17.451628" 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-19T00:42:17.427614" elapsed="0.024222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:17.454021" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:17.457203" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:17.456230" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:17.458340" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:17.457778" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:17.457655" elapsed="0.001028"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:17.459248" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T00:42:17.458993" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:17.458931" elapsed="0.000479"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:17.459488" 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-19T00:42:17.464278" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:42:17.464824" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:17.465199" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:17.460814" elapsed="0.004593"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:16.830545" elapsed="0.635082"/>
</kw>
<msg time="2026-04-19T00:42:17.465928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:16.829580" elapsed="0.636406"/>
</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-19T00:42:16.828819" elapsed="0.637265"/>
</kw>
<msg time="2026-04-19T00:42:17.466126" 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-19T00:42:16.828111" elapsed="0.638062"/>
</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-19T00:42:17.469278" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:42:17.469754" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:17.470068" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:17.466465" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T00:42:17.470310" level="INFO">${output} = 1</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-19T00:42:16.826815" elapsed="0.643521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:17.470790" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:17.470541" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:17.470884" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:42:17.471074" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:16.824625" elapsed="0.646476"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:17.471149" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:17.471295" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:16.822444" elapsed="0.648876"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:17.471869" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:17.471476" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:16.821370" elapsed="0.650724">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:19.475575" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:19.474808" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:19.477984" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:19.477370" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:19.479821" 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-19T00:42:19.480076" 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-19T00:42:19.479498" elapsed="0.000639"/>
</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-19T00:42:19.485247" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:19.484500" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:19.484443" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:19.486804" 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-19T00:42:19.487061" 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-19T00:42:19.486367" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:19.488673" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:19.488131" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:19.490566" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:19.489828" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:19.493094" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:19.493178" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:19.492746" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:19.493419" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:19.494713" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:19.801885" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:19.494382" elapsed="0.307642"/>
</kw>
<msg time="2026-04-19T00:42:19.802148" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:19.493992" elapsed="0.308247"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:19.491878" elapsed="0.310624"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:19.803947" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:19.826547" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:19.827091" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:19.827429" 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-19T00:42:19.803563" elapsed="0.024080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:19.829902" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:19.833077" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:19.832110" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:19.834333" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:19.833663" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:19.833540" elapsed="0.001093"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:19.835441" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T00:42:19.834952" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:19.834845" elapsed="0.000955"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:19.835978" elapsed="0.000241"/>
</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-19T00:42:19.844218" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:42:19.844766" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:19.845139" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:19.839188" elapsed="0.006162"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:19.483126" elapsed="0.362449"/>
</kw>
<msg time="2026-04-19T00:42:19.845900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:19.482422" elapsed="0.363536"/>
</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-19T00:42:19.481693" elapsed="0.364367"/>
</kw>
<msg time="2026-04-19T00:42:19.846103" 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-19T00:42:19.480485" elapsed="0.365664"/>
</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-19T00:42:19.849251" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:42:19.849886" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:19.850216" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:19.846440" elapsed="0.003942"/>
</kw>
<msg time="2026-04-19T00:42:19.850476" level="INFO">${output} = 1</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-19T00:42:19.478558" elapsed="0.371943"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:19.850930" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:19.850682" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:19.851016" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:42:19.851197" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:19.476290" elapsed="0.374932"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:19.851270" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:42:19.851414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:19.473968" elapsed="0.377470"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:19.851987" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:19.851595" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:19.472895" elapsed="0.379297">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:21.855632" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:21.854846" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:21.857809" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:21.857195" elapsed="0.000674"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:21.859521" 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-19T00:42:21.859791" 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-19T00:42:21.859300" elapsed="0.000529"/>
</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-19T00:42:21.866179" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:21.865406" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:21.864798" elapsed="0.001581"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:21.868396" 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-19T00:42:21.868734" 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-19T00:42:21.867736" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:21.870978" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:21.870276" elapsed="0.000913"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:21.872904" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:21.872185" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:21.875522" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:21.875604" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:21.875223" 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-19T00:42:21.875847" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:21.877184" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:22.231920" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:21.876832" elapsed="0.355258"/>
</kw>
<msg time="2026-04-19T00:42:22.232178" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:21.876467" elapsed="0.355803"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:21.874275" elapsed="0.358287"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:22.234077" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:22.256527" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:22.257069" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:22.257414" 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-19T00:42:22.233659" elapsed="0.023968"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:22.259891" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:22.263374" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:22.262335" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:22.264512" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:22.263971" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:22.263846" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:22.265612" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T00:42:22.265156" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:22.265018" elapsed="0.000958"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:22.266337" elapsed="0.000085"/>
</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-19T00:42:22.272226" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T00:42:22.272840" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:22.273220" 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-19T00:42:22.268750" elapsed="0.004692"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:21.862553" elapsed="0.411113"/>
</kw>
<msg time="2026-04-19T00:42:22.273970" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:21.861565" elapsed="0.412527"/>
</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-19T00:42:21.860800" elapsed="0.413383"/>
</kw>
<msg time="2026-04-19T00:42:22.274226" 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-19T00:42:21.860075" elapsed="0.414198"/>
</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-19T00:42:22.277238" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:42:22.277719" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:22.278009" elapsed="0.000197"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:22.274564" elapsed="0.003694"/>
</kw>
<msg time="2026-04-19T00:42:22.278351" level="INFO">${output} = 1</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-19T00:42:21.858446" elapsed="0.419930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:22.278811" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:22.278560" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:22.278896" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:42:22.279063" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:21.856190" elapsed="0.422899"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:22.279137" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:22.279307" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:21.854006" elapsed="0.425326"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:22.279937" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:22.279487" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:21.852929" elapsed="0.427213">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:24.283625" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:24.282836" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:24.285731" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:24.285127" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:24.287677" 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-19T00:42:24.287910" 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-19T00:42:24.287312" elapsed="0.000658"/>
</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-19T00:42:24.293813" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:24.293172" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:24.292775" elapsed="0.001340"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:24.296169" 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-19T00:42:24.296552" 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-19T00:42:24.295509" elapsed="0.001184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:24.298849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:24.298085" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:24.301157" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:24.300445" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:24.303731" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:24.303809" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:24.303435" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:24.304061" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:24.305310" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:24.657996" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:24.304972" elapsed="0.353168"/>
</kw>
<msg time="2026-04-19T00:42:24.658218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:24.304614" elapsed="0.353685"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:24.302474" elapsed="0.356086"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:24.659992" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:24.682612" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:24.682845" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:24.682997" 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-19T00:42:24.659618" elapsed="0.023500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:24.684126" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:24.685596" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:24.685136" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:24.686125" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:24.685866" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:24.685807" elapsed="0.000451"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:24.686608" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T00:42:24.686406" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:24.686355" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:24.686846" 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-19T00:42:24.693329" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T00:42:24.693903" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:24.694286" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:24.688210" elapsed="0.006366"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:24.290892" elapsed="0.403989"/>
</kw>
<msg time="2026-04-19T00:42:24.695398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:24.289940" elapsed="0.405539"/>
</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-19T00:42:24.289197" elapsed="0.406393"/>
</kw>
<msg time="2026-04-19T00:42:24.695646" 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-19T00:42:24.288451" elapsed="0.407256"/>
</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-19T00:42:24.700059" 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-19T00:42:24.700721" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:24.701241" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:24.696325" elapsed="0.005164"/>
</kw>
<msg time="2026-04-19T00:42:24.701616" level="INFO">${output} = 1</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-19T00:42:24.286364" elapsed="0.415287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:24.702271" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:24.701902" elapsed="0.000416"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:24.702359" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:42:24.702508" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:24.284183" elapsed="0.418350"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:24.702577" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:42:24.702715" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:24.282002" elapsed="0.420737"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:24.703299" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:24.702891" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:24.280924" elapsed="0.422560">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:26.706990" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:26.706252" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:26.709252" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:26.708513" elapsed="0.000801"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:26.711115" 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-19T00:42:26.711345" 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-19T00:42:26.710758" elapsed="0.000646"/>
</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-19T00:42:26.716428" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:26.715938" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:26.715880" elapsed="0.000686"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:26.718283" 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-19T00:42:26.718531" 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-19T00:42:26.717584" elapsed="0.001049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:26.720204" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:26.719626" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:26.722088" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:26.721374" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:26.724538" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:26.724616" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:26.724252" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:26.724877" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:26.726151" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:27.041432" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:26.725809" elapsed="0.315761"/>
</kw>
<msg time="2026-04-19T00:42:27.041656" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:26.725448" elapsed="0.316301"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:26.723395" elapsed="0.318655"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:27.043502" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:27.066274" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:27.066824" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:27.067255" 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-19T00:42:27.043125" elapsed="0.024378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:27.069819" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:27.073009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:27.072015" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:27.074206" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:27.073646" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:27.073519" elapsed="0.000984"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:27.075325" elapsed="0.000166"/>
</return>
<status status="PASS" start="2026-04-19T00:42:27.074840" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:27.074730" elapsed="0.001012"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:27.075919" elapsed="0.000084"/>
</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-19T00:42:27.082861" elapsed="0.000485"/>
</kw>
<kw name="Open 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-19T00:42:27.083672" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:27.084300" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:27.078114" elapsed="0.006481"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:26.714553" elapsed="0.370354"/>
</kw>
<msg time="2026-04-19T00:42:27.085355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:26.713841" elapsed="0.371594"/>
</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-19T00:42:26.713156" elapsed="0.372395"/>
</kw>
<msg time="2026-04-19T00:42:27.085609" 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-19T00:42:26.711754" elapsed="0.373920"/>
</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-19T00:42:27.089581" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:42:27.090072" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:27.090370" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:27.086204" elapsed="0.004318"/>
</kw>
<msg time="2026-04-19T00:42:27.090614" level="INFO">${output} = 1</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-19T00:42:26.709805" elapsed="0.380842"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:27.091100" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:27.090836" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:27.091190" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:27.091341" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:26.707568" elapsed="0.383798"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:27.091430" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:42:27.091584" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:26.705407" elapsed="0.386202"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:27.092222" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:27.091773" elapsed="0.000534">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:26.704309" elapsed="0.388116">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:29.095877" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:29.095136" elapsed="0.000810"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:29.098021" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:29.097409" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:29.099893" 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-19T00:42:29.100223" 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-19T00:42:29.099555" elapsed="0.000730"/>
</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-19T00:42:29.104853" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:29.104353" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:29.104294" elapsed="0.000703"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:29.106752" 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-19T00:42:29.107006" 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-19T00:42:29.105999" elapsed="0.001144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:29.109056" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:29.108195" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:29.111195" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:29.110442" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:29.113741" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:29.113822" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:29.113415" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:29.114079" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:29.115471" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:29.428327" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:29.115129" elapsed="0.313342"/>
</kw>
<msg time="2026-04-19T00:42:29.428556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:29.114736" elapsed="0.313908"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:29.112575" elapsed="0.316354"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:29.430419" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:29.453502" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:29.454137" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:29.454477" 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-19T00:42:29.430012" elapsed="0.024681"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:29.457071" elapsed="0.001158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:29.460697" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:29.459578" elapsed="0.001369"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:29.461953" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:29.461427" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:29.461280" elapsed="0.001008"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:29.463265" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T00:42:29.462622" elapsed="0.000887"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:29.462509" elapsed="0.001136"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:29.463911" elapsed="0.000092"/>
</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-19T00:42:29.469431" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T00:42:29.470121" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:29.470521" 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-19T00:42:29.465669" elapsed="0.005082"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:29.102889" elapsed="0.368105"/>
</kw>
<msg time="2026-04-19T00:42:29.471410" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:29.102194" elapsed="0.369291"/>
</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-19T00:42:29.101636" elapsed="0.369936"/>
</kw>
<msg time="2026-04-19T00:42:29.471614" 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-19T00:42:29.100643" elapsed="0.371018"/>
</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-19T00:42:29.474847" elapsed="0.000598"/>
</kw>
<kw name="Open 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-19T00:42:29.475619" elapsed="0.000258"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:29.476069" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:29.472042" elapsed="0.004195"/>
</kw>
<msg time="2026-04-19T00:42:29.476461" level="INFO">${output} = 1</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-19T00:42:29.098602" elapsed="0.377893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:29.476979" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:29.476712" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:29.477094" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:42:29.477270" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:29.096433" elapsed="0.380864"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:29.477347" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:29.477499" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:29.094288" elapsed="0.383236"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:29.478114" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:29.477685" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:29.093262" elapsed="0.385043">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:31.481730" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:31.480972" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:31.483835" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:31.483373" elapsed="0.000502"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:31.485155" 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-19T00:42:31.485323" 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-19T00:42:31.484828" elapsed="0.000536"/>
</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-19T00:42:31.491187" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:31.490459" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:31.490376" elapsed="0.001034"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:31.494064" 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-19T00:42:31.494466" 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-19T00:42:31.492940" elapsed="0.001675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:31.496555" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:31.495951" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:31.498460" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:31.497726" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:31.500919" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:31.500999" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:31.500623" 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-19T00:42:31.501391" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:31.502743" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:31.841704" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:31.502350" elapsed="0.339640"/>
</kw>
<msg time="2026-04-19T00:42:31.842096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:31.501967" elapsed="0.340220"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:31.499786" elapsed="0.342684"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:31.844063" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:31.866974" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:31.867558" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:31.867895" 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-19T00:42:31.843638" elapsed="0.024511"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:31.870459" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:31.873748" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:31.872726" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:31.874938" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:31.874413" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:31.874287" elapsed="0.000989"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:31.876233" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T00:42:31.875598" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:31.875491" elapsed="0.001098"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:31.876817" elapsed="0.000090"/>
</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-19T00:42:31.882672" 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-19T00:42:31.883255" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:31.883616" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:31.879196" elapsed="0.004631"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:31.488304" elapsed="0.395825"/>
</kw>
<msg time="2026-04-19T00:42:31.884431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:31.487251" elapsed="0.397238"/>
</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-19T00:42:31.486402" elapsed="0.398170"/>
</kw>
<msg time="2026-04-19T00:42:31.884619" 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-19T00:42:31.485608" elapsed="0.399058"/>
</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-19T00:42:31.887791" 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-19T00:42:31.888305" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:31.888601" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:31.884972" elapsed="0.003778"/>
</kw>
<msg time="2026-04-19T00:42:31.888843" level="INFO">${output} = 1</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-19T00:42:31.484218" elapsed="0.404651"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:31.889325" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:31.889073" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:31.889414" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:31.889568" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:31.482306" elapsed="0.407287"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:31.889641" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:31.889788" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:31.480157" elapsed="0.409656"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:31.890489" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:31.890082" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:31.479127" elapsed="0.411557">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:33.894687" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:33.893710" elapsed="0.001039"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:33.896124" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:33.895710" elapsed="0.000453"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:33.897305" 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-19T00:42:33.897454" 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-19T00:42:33.897075" elapsed="0.000418"/>
</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-19T00:42:33.903655" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:33.902582" elapsed="0.001194"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:33.902502" elapsed="0.001361"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:33.906135" 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-19T00:42:33.906501" 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-19T00:42:33.905271" elapsed="0.001371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:33.908272" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:33.907705" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:33.910106" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:33.909371" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:33.912567" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:33.912646" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:33.912278" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:33.912882" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:33.914190" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:34.244056" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:33.913818" elapsed="0.330392"/>
</kw>
<msg time="2026-04-19T00:42:34.244296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:33.913457" elapsed="0.330930"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:33.911481" elapsed="0.333192"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:34.246213" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:34.269682" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:34.270240" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:34.270578" 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-19T00:42:34.245798" elapsed="0.024992"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:34.273127" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:34.276463" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:34.275484" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:34.277692" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:34.277074" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:34.276917" elapsed="0.001074"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:34.278813" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:42:34.278362" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:34.278250" elapsed="0.001083"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:34.279510" elapsed="0.000085"/>
</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-19T00:42:34.287693" 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-19T00:42:34.288252" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:34.288607" 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-19T00:42:34.282506" elapsed="0.006309"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:33.900326" elapsed="0.388732"/>
</kw>
<msg time="2026-04-19T00:42:34.289384" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:33.899306" elapsed="0.390138"/>
</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-19T00:42:33.898516" elapsed="0.391011"/>
</kw>
<msg time="2026-04-19T00:42:34.289568" 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-19T00:42:33.897723" elapsed="0.391892"/>
</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-19T00:42:34.292659" 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-19T00:42:34.293154" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:34.293464" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:34.289907" elapsed="0.003706"/>
</kw>
<msg time="2026-04-19T00:42:34.293709" level="INFO">${output} = 1</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-19T00:42:33.896473" elapsed="0.397262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:34.294186" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:34.293919" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:34.294274" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:34.294426" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:33.895092" elapsed="0.399359"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:34.294496" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:42:34.294638" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:33.892802" elapsed="0.401860"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:34.295232" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:34.294818" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:33.891659" elapsed="0.403756">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:36.299203" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:36.298335" elapsed="0.000941"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:36.301556" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:36.300891" elapsed="0.000730"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:36.303329" 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-19T00:42:36.303477" 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-19T00:42:36.303105" elapsed="0.000410"/>
</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-19T00:42:36.309238" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:36.308553" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:36.308176" elapsed="0.001267"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:36.311529" 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-19T00:42:36.311862" 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-19T00:42:36.310895" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:36.314132" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:36.313363" elapsed="0.000954"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:36.316732" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:36.315756" elapsed="0.001112"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:36.320008" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:36.320109" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:36.319714" 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-19T00:42:36.320346" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:36.321740" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:36.652524" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:36.321412" elapsed="0.331266"/>
</kw>
<msg time="2026-04-19T00:42:36.652764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:36.320913" elapsed="0.331943"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:36.318915" elapsed="0.334263"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:36.654689" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:36.677628" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:36.678235" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:36.678569" 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-19T00:42:36.654291" elapsed="0.024491"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:36.681048" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:36.684522" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:36.683457" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:36.685874" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:36.685138" elapsed="0.000953"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:36.684979" elapsed="0.001244"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:36.686894" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T00:42:36.686548" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:36.686440" elapsed="0.000656"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:36.687179" 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-19T00:42:36.691854" 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-19T00:42:36.692445" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:36.692802" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:36.688543" elapsed="0.004467"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:36.306254" elapsed="0.387118"/>
</kw>
<msg time="2026-04-19T00:42:36.693689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:36.305252" elapsed="0.388507"/>
</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-19T00:42:36.304485" elapsed="0.389360"/>
</kw>
<msg time="2026-04-19T00:42:36.693886" 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-19T00:42:36.303742" elapsed="0.390190"/>
</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-19T00:42:36.697000" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:42:36.697488" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:36.697808" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:36.694242" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T00:42:36.698065" level="INFO">${output} = 1</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-19T00:42:36.302166" elapsed="0.395925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:36.698519" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:36.698273" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:36.698604" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:42:36.698756" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:36.299898" elapsed="0.398882"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:36.698829" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:42:36.698973" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:36.297369" elapsed="0.401628"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:36.699574" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:36.699181" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:36.296276" elapsed="0.403487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:38.703557" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:38.702685" elapsed="0.000948"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:38.705672" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:38.705078" elapsed="0.000652"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:38.707554" 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-19T00:42:38.707906" 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-19T00:42:38.707219" elapsed="0.000746"/>
</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-19T00:42:38.714230" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:38.713731" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:38.713431" elapsed="0.000938"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:38.715813" 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-19T00:42:38.716069" 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-19T00:42:38.715366" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:38.717689" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:38.717151" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:38.719474" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:38.718758" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:38.721896" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:38.721973" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:38.721613" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:38.722221" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:38.723507" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:39.053865" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:38.723156" elapsed="0.330859"/>
</kw>
<msg time="2026-04-19T00:42:39.054111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:38.722775" elapsed="0.331427"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:38.720760" elapsed="0.333724"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:39.056002" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:39.078920" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:39.079506" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:39.079841" 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-19T00:42:39.055593" elapsed="0.024496"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:39.082385" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:39.084996" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:39.084374" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:39.085737" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:39.085408" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:39.085324" elapsed="0.000641"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:39.086513" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T00:42:39.086213" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:39.086141" elapsed="0.000607"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:39.086881" elapsed="0.000086"/>
</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-19T00:42:39.095952" elapsed="0.000503"/>
</kw>
<kw name="Open 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-19T00:42:39.096780" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:39.097168" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:39.088849" elapsed="0.008547"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:38.712113" elapsed="0.385514"/>
</kw>
<msg time="2026-04-19T00:42:39.097947" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:38.710739" elapsed="0.387271"/>
</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-19T00:42:38.709524" elapsed="0.388585"/>
</kw>
<msg time="2026-04-19T00:42:39.098151" 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-19T00:42:38.708349" elapsed="0.389849"/>
</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-19T00:42:39.101232" 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-19T00:42:39.101727" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:39.102023" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:39.098498" elapsed="0.003695"/>
</kw>
<msg time="2026-04-19T00:42:39.102284" level="INFO">${output} = 1</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-19T00:42:38.706266" elapsed="0.396042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:39.102767" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:39.102498" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:39.102856" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:42:39.103007" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:38.704150" elapsed="0.398899"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:39.103096" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:42:39.103240" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:38.701773" elapsed="0.401490"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:39.103813" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:39.103418" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:38.700630" elapsed="0.403368">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:41.108070" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:41.107178" elapsed="0.000992"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:41.110712" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:41.109933" elapsed="0.000848"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:41.112813" 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-19T00:42:41.113158" 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-19T00:42:41.112434" elapsed="0.000802"/>
</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-19T00:42:41.118539" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:41.117975" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:41.117917" elapsed="0.000866"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:41.120584" 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-19T00:42:41.120848" 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-19T00:42:41.119836" elapsed="0.001121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:41.122670" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:41.121989" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:41.124898" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:41.123829" elapsed="0.001166"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:41.127399" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:41.127477" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:41.127108" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:41.127712" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:41.129013" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:41.471516" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:41.128686" elapsed="0.342973"/>
</kw>
<msg time="2026-04-19T00:42:41.471742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:41.128324" elapsed="0.343503"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:41.126293" elapsed="0.345841"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:41.473598" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:41.497005" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:41.497591" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:41.498022" 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-19T00:42:41.473210" elapsed="0.025106"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:41.500769" elapsed="0.000999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:41.504119" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:41.503129" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:41.505245" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:41.504706" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:41.504581" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:41.506447" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T00:42:41.505859" elapsed="0.000933"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:41.505753" elapsed="0.001234"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:41.507122" elapsed="0.000049"/>
</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-19T00:42:41.512142" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:41.512692" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:41.513068" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:41.508620" elapsed="0.004661"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:41.116430" elapsed="0.397079"/>
</kw>
<msg time="2026-04-19T00:42:41.513881" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:41.115615" elapsed="0.398328"/>
</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-19T00:42:41.115019" elapsed="0.399011"/>
</kw>
<msg time="2026-04-19T00:42:41.514133" 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-19T00:42:41.113637" elapsed="0.400544"/>
</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-19T00:42:41.517181" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:42:41.517658" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:41.517954" elapsed="0.000215"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:41.514476" elapsed="0.003748"/>
</kw>
<msg time="2026-04-19T00:42:41.518315" level="INFO">${output} = 1</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-19T00:42:41.111354" elapsed="0.406986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:41.518770" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:41.518522" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:41.518877" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:41.519029" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:41.108738" elapsed="0.410333"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:41.519119" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:41.519264" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:41.106129" elapsed="0.413159"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:41.519837" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:41.519445" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:41.104882" elapsed="0.415140">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:43.523818" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:43.522950" elapsed="0.000939"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:43.525996" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:43.525339" elapsed="0.000749"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:43.527598" 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-19T00:42:43.527743" 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-19T00:42:43.527373" elapsed="0.000407"/>
</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-19T00:42:43.533069" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:43.532413" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:43.532335" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:43.535456" 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-19T00:42:43.535705" 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-19T00:42:43.534652" elapsed="0.001154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:43.537348" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:43.536787" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:43.539229" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:43.538512" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:43.541644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:43.541723" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:43.541354" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:43.541961" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:43.543278" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:43.838142" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:43.542930" elapsed="0.295354"/>
</kw>
<msg time="2026-04-19T00:42:43.838365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:43.542568" elapsed="0.295882"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:43.540576" elapsed="0.298151"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:43.840226" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:43.862917" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:43.863488" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:43.863826" 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-19T00:42:43.839826" elapsed="0.024248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:43.866380" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:43.869646" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:43.868570" elapsed="0.001307"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:43.870764" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:43.870266" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:43.870142" elapsed="0.001079"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:43.871996" elapsed="0.000157"/>
</return>
<status status="PASS" start="2026-04-19T00:42:43.871547" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:43.871441" elapsed="0.000947"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:43.872563" elapsed="0.000082"/>
</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-19T00:42:43.877668" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:43.878228" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:43.878584" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:43.874208" elapsed="0.004583"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:43.530489" elapsed="0.348523"/>
</kw>
<msg time="2026-04-19T00:42:43.879349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:43.529523" elapsed="0.349887"/>
</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-19T00:42:43.528750" elapsed="0.350742"/>
</kw>
<msg time="2026-04-19T00:42:43.879534" 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-19T00:42:43.528003" elapsed="0.351576"/>
</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-19T00:42:43.882628" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:42:43.883222" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:43.883523" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:43.879931" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T00:42:43.883763" level="INFO">${output} = 1</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-19T00:42:43.526576" elapsed="0.357213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:43.884239" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:43.883972" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:43.884327" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:43.884478" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:43.524389" elapsed="0.360113"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:43.884549" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:42:43.884691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:43.522119" elapsed="0.362597"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:43.885369" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:43.884937" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:43.520885" elapsed="0.364666">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:45.889070" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:45.888306" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:45.891212" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:45.890539" elapsed="0.000735"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:45.892757" 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-19T00:42:45.892907" 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-19T00:42:45.892521" elapsed="0.000424"/>
</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-19T00:42:45.898640" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:45.897952" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:45.897872" elapsed="0.000969"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:45.901049" 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-19T00:42:45.901357" 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-19T00:42:45.900303" elapsed="0.001155"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:45.902971" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:45.902422" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:45.904821" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:45.904082" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:45.907374" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:45.907452" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:45.907056" 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-19T00:42:45.907689" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:45.909118" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:46.224312" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:45.908755" elapsed="0.315797"/>
</kw>
<msg time="2026-04-19T00:42:46.224703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:45.908384" elapsed="0.316473"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:45.906283" elapsed="0.319214"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:46.227835" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:46.251491" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:46.252003" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:46.252382" 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-19T00:42:46.227301" elapsed="0.025286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:46.254833" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:46.258084" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:46.256960" elapsed="0.001348"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:46.258898" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:46.258561" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:46.258476" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:46.259627" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T00:42:46.259333" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:46.259260" elapsed="0.000604"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:46.259982" elapsed="0.000089"/>
</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-19T00:42:46.266925" 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-19T00:42:46.267526" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:46.267914" 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-19T00:42:46.262140" elapsed="0.006008"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:45.895916" elapsed="0.372558"/>
</kw>
<msg time="2026-04-19T00:42:46.268790" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:45.894846" elapsed="0.374010"/>
</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-19T00:42:45.893973" elapsed="0.374967"/>
</kw>
<msg time="2026-04-19T00:42:46.268981" 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-19T00:42:45.893216" elapsed="0.375935"/>
</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-19T00:42:46.272164" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T00:42:46.272653" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:46.272952" elapsed="0.000179"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:46.269486" elapsed="0.003699"/>
</kw>
<msg time="2026-04-19T00:42:46.273348" level="INFO">${output} = 1</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-19T00:42:45.891751" elapsed="0.381624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:46.273872" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:46.273616" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:46.273963" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:42:46.274143" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:45.889591" elapsed="0.384578"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:46.274219" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:46.274367" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:45.887405" elapsed="0.386988"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:46.274946" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:46.274551" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:45.886346" elapsed="0.388799">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:48.278802" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:48.278010" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:48.281113" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:48.280443" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:48.283004" 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-19T00:42:48.283292" 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-19T00:42:48.282671" elapsed="0.000687"/>
</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-19T00:42:48.288706" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:48.287897" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:48.287840" elapsed="0.001007"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:48.290415" 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-19T00:42:48.290690" 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-19T00:42:48.289896" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:48.292470" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:48.291810" elapsed="0.000772"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:48.294317" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:48.293585" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:48.296887" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:48.296966" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:48.296598" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:48.297221" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:48.298540" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:48.623255" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:48.298204" elapsed="0.325319"/>
</kw>
<msg time="2026-04-19T00:42:48.623612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:48.297819" elapsed="0.325887"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:48.295663" elapsed="0.328332"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:48.625558" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:48.648942" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:48.649604" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:48.650180" 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-19T00:42:48.625150" elapsed="0.025259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:48.652850" elapsed="0.001161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:48.656403" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:48.655376" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:48.657545" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:48.657008" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:48.656868" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:48.658550" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T00:42:48.658276" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:48.658164" elapsed="0.000557"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:48.658801" 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-19T00:42:48.663977" 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-19T00:42:48.664614" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:48.665045" 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-19T00:42:48.660312" elapsed="0.004987"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:48.286470" elapsed="0.379063"/>
</kw>
<msg time="2026-04-19T00:42:48.665854" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:48.285749" elapsed="0.380216"/>
</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-19T00:42:48.284996" elapsed="0.381074"/>
</kw>
<msg time="2026-04-19T00:42:48.666118" 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-19T00:42:48.283735" elapsed="0.382437"/>
</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-19T00:42:48.669348" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:42:48.669861" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:48.670241" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:48.666493" elapsed="0.003923"/>
</kw>
<msg time="2026-04-19T00:42:48.670542" level="INFO">${output} = 1</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-19T00:42:48.281680" elapsed="0.388890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:48.671186" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:48.670782" elapsed="0.000475"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:48.671311" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:42:48.671482" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:48.279424" elapsed="0.392085"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:48.671556" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:48.671735" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:48.277162" elapsed="0.394604"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:48.672504" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:48.672013" elapsed="0.000572">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:48.275993" elapsed="0.396721">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:50.676303" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:50.675535" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:50.678424" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:50.677770" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:50.680260" 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-19T00:42:50.680485" 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-19T00:42:50.679891" elapsed="0.000652"/>
</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-19T00:42:50.685651" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:50.685173" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:50.684864" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:50.687261" 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-19T00:42:50.687505" 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-19T00:42:50.686805" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:50.689158" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:50.688582" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:50.690977" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:50.690272" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:50.693446" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:50.693524" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:50.693159" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:50.693759" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:50.695050" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:51.004584" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:50.694710" elapsed="0.310015"/>
</kw>
<msg time="2026-04-19T00:42:51.004807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:50.694349" elapsed="0.310553"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:50.692305" elapsed="0.312988"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:51.007003" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:51.029692" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:51.030103" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:51.030342" 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-19T00:42:51.006611" elapsed="0.023874"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:51.032092" elapsed="0.000602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:51.034136" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:51.033494" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:51.034882" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:51.034554" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:51.034472" 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-19T00:42:51.035702" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:42:51.035417" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:51.035343" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:51.036063" elapsed="0.000055"/>
</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-19T00:42:51.042061" 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-19T00:42:51.042643" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:51.043012" elapsed="0.000216"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:51.037883" elapsed="0.005477"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:50.683547" elapsed="0.360046"/>
</kw>
<msg time="2026-04-19T00:42:51.043896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:50.682840" elapsed="0.361118"/>
</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-19T00:42:50.682124" elapsed="0.361933"/>
</kw>
<msg time="2026-04-19T00:42:51.044100" 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-19T00:42:50.680889" elapsed="0.363259"/>
</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-19T00:42:51.047231" 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-19T00:42:51.047748" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:51.048067" 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-19T00:42:51.044441" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T00:42:51.048313" level="INFO">${output} = 1</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-19T00:42:50.678961" elapsed="0.369376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:51.048766" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:51.048517" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:51.048853" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:42:51.049006" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:50.676828" elapsed="0.372219"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:51.049098" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:51.049247" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:50.674682" elapsed="0.374590"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:51.049834" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:51.049431" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:50.673606" elapsed="0.376437">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:53.053371" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:53.052629" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:53.055601" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:53.054977" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:53.057411" 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-19T00:42:53.057690" 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-19T00:42:53.057091" elapsed="0.000658"/>
</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-19T00:42:53.062227" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:53.061734" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:53.061468" elapsed="0.000901"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:53.063808" 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-19T00:42:53.064068" 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-19T00:42:53.063369" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:53.065747" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:53.065161" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:53.067559" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:53.066850" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:53.070020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:53.070114" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:53.069740" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:53.070349" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:53.071603" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:53.389978" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:53.071277" elapsed="0.318857"/>
</kw>
<msg time="2026-04-19T00:42:53.390215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:53.070900" elapsed="0.319405"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:53.068876" elapsed="0.321763"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:53.392136" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:53.414511" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:53.415001" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:53.415369" 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-19T00:42:53.391731" elapsed="0.023845"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:53.417774" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:53.420459" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:53.419795" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:53.421272" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:53.420837" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:53.420755" elapsed="0.000711"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:53.421978" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-19T00:42:53.421684" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:53.421606" elapsed="0.000628"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:53.422353" elapsed="0.000093"/>
</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-19T00:42:53.430337" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:42:53.430905" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:53.431284" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:53.424476" elapsed="0.007018"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:53.060092" elapsed="0.371732"/>
</kw>
<msg time="2026-04-19T00:42:53.432260" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:53.059394" elapsed="0.372929"/>
</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-19T00:42:53.058845" elapsed="0.373559"/>
</kw>
<msg time="2026-04-19T00:42:53.432445" 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-19T00:42:53.058127" elapsed="0.374363"/>
</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-19T00:42:53.435477" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:42:53.435952" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:53.436279" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:53.432781" elapsed="0.003645"/>
</kw>
<msg time="2026-04-19T00:42:53.436516" level="INFO">${output} = 1</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-19T00:42:53.056164" elapsed="0.380377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:53.436978" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:53.436732" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:53.437084" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:42:53.437234" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:53.054068" elapsed="0.383191"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:53.437305" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:42:53.437444" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:53.051803" elapsed="0.385665"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:53.438012" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:53.437621" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:53.050776" elapsed="0.387439">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:55.441881" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:55.440990" elapsed="0.000963"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:55.443908" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:55.443459" elapsed="0.000488"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:55.445093" 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-19T00:42:55.445341" 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-19T00:42:55.444849" elapsed="0.000531"/>
</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-19T00:42:55.450688" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:55.450048" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:55.449953" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:55.452788" 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-19T00:42:55.453092" 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-19T00:42:55.452115" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:55.454727" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:55.454184" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:55.456589" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:55.455869" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:55.459169" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:55.459248" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:55.458731" elapsed="0.000567"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:55.459537" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:55.460827" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:55.791498" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:55.460498" elapsed="0.331245"/>
</kw>
<msg time="2026-04-19T00:42:55.791902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:55.460136" elapsed="0.331977"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:55.457957" elapsed="0.334712"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:55.795815" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:55.819337" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:55.819942" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:55.820377" 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-19T00:42:55.795015" elapsed="0.025632"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:55.822930" elapsed="0.001019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:55.825800" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:55.825165" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:55.826547" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:55.826211" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:55.826129" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:42:55.827283" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T00:42:55.826966" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:55.826894" elapsed="0.000625"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:55.827633" elapsed="0.000057"/>
</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-19T00:42:55.834044" 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-19T00:42:55.834674" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:55.835072" 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-19T00:42:55.829646" elapsed="0.005647"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:55.448102" elapsed="0.387422"/>
</kw>
<msg time="2026-04-19T00:42:55.835837" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:55.447114" elapsed="0.388790"/>
</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-19T00:42:55.446346" elapsed="0.389647"/>
</kw>
<msg time="2026-04-19T00:42:55.836050" 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-19T00:42:55.445605" elapsed="0.390512"/>
</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-19T00:42:55.839256" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:42:55.839775" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:55.840160" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:55.836420" elapsed="0.003903"/>
</kw>
<msg time="2026-04-19T00:42:55.840418" level="INFO">${output} = 1</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-19T00:42:55.444274" elapsed="0.396171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:55.840898" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:55.840634" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:55.840997" elapsed="0.000074"/>
</return>
<msg time="2026-04-19T00:42:55.841204" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:55.442461" elapsed="0.398769"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:55.841280" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:42:55.841425" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:55.440162" elapsed="0.401288"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:55.842017" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:55.841608" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:55.439022" elapsed="0.403207">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:42:57.845914" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:42:57.845127" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:42:57.848262" level="INFO">${member_ip} = 10.30.171.206</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-19T00:42:57.847526" elapsed="0.000802"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:57.850135" 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-19T00:42:57.850361" 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-19T00:42:57.849785" elapsed="0.000634"/>
</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-19T00:42:57.856918" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:42:57.856239" elapsed="0.000912"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:57.856158" elapsed="0.001084"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:57.859886" 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-19T00:42:57.860297" 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-19T00:42:57.858734" elapsed="0.001711"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:57.862096" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:57.861522" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:42:57.864007" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:42:57.863278" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:42:57.866518" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:42:57.866597" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:42:57.866228" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:57.866839" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:42:57.868331" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:42:58.202821" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:42:57.867980" elapsed="0.335005"/>
</kw>
<msg time="2026-04-19T00:42:58.203091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:57.867565" elapsed="0.335629"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:42:57.865380" elapsed="0.338104"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:42:58.205047" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:42:58.228245" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:42:58.228772" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:42:58.229148" 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-19T00:42:58.204619" elapsed="0.024741"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:58.231577" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:58.234063" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:58.233425" 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-19T00:42:58.234765" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:42:58.234438" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:58.234360" 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-19T00:42:58.235516" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T00:42:58.235238" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T00:42:58.235170" elapsed="0.000566"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:42:58.235844" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:58.242015" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T00:42:58.242586" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:58.242944" elapsed="0.000231"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:58.237683" elapsed="0.005602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:42:57.854164" elapsed="0.389344"/>
</kw>
<msg time="2026-04-19T00:42:58.243882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:42:57.853114" elapsed="0.390827"/>
</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-19T00:42:57.852009" elapsed="0.392029"/>
</kw>
<msg time="2026-04-19T00:42:58.244082" 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-19T00:42:57.850771" elapsed="0.393359"/>
</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-19T00:42:58.247195" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T00:42:58.247690" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:42:58.247997" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:42:58.244427" elapsed="0.003737"/>
</kw>
<msg time="2026-04-19T00:42:58.248258" level="INFO">${output} = 1</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-19T00:42:57.848846" elapsed="0.399438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:42:58.248768" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:42:58.248513" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:42:58.248857" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:42:58.249017" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:42:57.846508" elapsed="0.402551"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:42:58.249108" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:42:58.249255" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:42:57.844206" elapsed="0.405074"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:42:58.249841" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:42:58.249440" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:42:57.842994" elapsed="0.407068">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:00.253713" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:00.252931" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:00.255882" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:00.255256" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:00.257057" 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-19T00:43:00.257207" 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-19T00:43:00.256823" elapsed="0.000421"/>
</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-19T00:43:00.262673" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:00.261922" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:00.261830" elapsed="0.001042"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:00.264929" 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-19T00:43:00.265210" 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-19T00:43:00.264221" elapsed="0.001094"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:00.266928" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:00.266362" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:00.268891" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:00.268169" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:00.271394" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:00.271474" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:00.271106" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:00.271804" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:00.273216" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:00.604114" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:42:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:00.272829" elapsed="0.331438"/>
</kw>
<msg time="2026-04-19T00:43:00.604350" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:00.272453" elapsed="0.331988"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:00.270303" elapsed="0.334424"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:00.606235" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:00.629280" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:00.629790" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:00.630397" 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-19T00:43:00.605827" elapsed="0.024789"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:00.632886" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:00.636003" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:00.635009" elapsed="0.001346"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:00.637107" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:00.636734" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:00.636607" elapsed="0.000636"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:00.637624" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T00:43:00.637389" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:00.637339" elapsed="0.000449"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:00.637870" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:00.642642" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:43:00.643281" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:00.643637" 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-19T00:43:00.639276" elapsed="0.004566"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:00.259945" elapsed="0.384164"/>
</kw>
<msg time="2026-04-19T00:43:00.644413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:00.258962" elapsed="0.385508"/>
</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-19T00:43:00.258203" elapsed="0.386350"/>
</kw>
<msg time="2026-04-19T00:43:00.644593" 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-19T00:43:00.257464" elapsed="0.387174"/>
</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-19T00:43:00.648370" 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-19T00:43:00.648867" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:00.649185" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:00.644989" elapsed="0.004348"/>
</kw>
<msg time="2026-04-19T00:43:00.649429" level="INFO">${output} = 1</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-19T00:43:00.256244" elapsed="0.393210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:00.649895" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:00.649641" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:00.649986" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:43:00.650159" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:00.254301" elapsed="0.395884"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:00.650235" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:43:00.650395" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:00.252100" elapsed="0.398321"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:00.650992" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:00.650582" elapsed="0.000546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:00.250902" elapsed="0.400340">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:02.654878" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:02.654089" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:02.657125" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:02.656477" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:02.658998" 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-19T00:43:02.659167" 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-19T00:43:02.658679" elapsed="0.000526"/>
</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-19T00:43:02.664886" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:02.663899" elapsed="0.001100"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:02.663823" elapsed="0.001291"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:02.667214" 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-19T00:43:02.667458" 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-19T00:43:02.666463" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:02.669159" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:02.668582" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:02.670984" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:02.670250" elapsed="0.000919"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:02.673662" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:02.673744" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:02.673370" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:02.673985" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:02.675623" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:03.033860" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:02.675283" elapsed="0.358735"/>
</kw>
<msg time="2026-04-19T00:43:03.034123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:02.674717" elapsed="0.359499"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:02.672355" elapsed="0.362150"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:03.036021" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:03.059228" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:03.059835" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:03.060242" 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-19T00:43:03.035620" elapsed="0.024845"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:03.063235" elapsed="0.001047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:03.066218" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:03.065364" elapsed="0.001052"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:03.067071" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:03.066698" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:03.066601" elapsed="0.000660"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:03.067743" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T00:43:03.067461" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:03.067394" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:03.068107" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:03.073968" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T00:43:03.074534" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:03.074894" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:03.070061" elapsed="0.005070"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:02.661961" elapsed="0.413396"/>
</kw>
<msg time="2026-04-19T00:43:03.075679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:02.660946" elapsed="0.414820"/>
</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-19T00:43:02.660195" elapsed="0.415676"/>
</kw>
<msg time="2026-04-19T00:43:03.075917" 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-19T00:43:02.659427" elapsed="0.416538"/>
</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-19T00:43:03.079126" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:43:03.079604" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:03.079897" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:03.076357" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T00:43:03.080223" level="INFO">${output} = 1</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-19T00:43:02.657673" elapsed="0.422577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:03.080685" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:03.080436" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:03.080771" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:03.080924" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:02.655436" elapsed="0.425513"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:03.080996" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:03.081213" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:02.653105" elapsed="0.428133"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:03.081832" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:03.081393" elapsed="0.000515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:02.652011" elapsed="0.430030">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:05.085544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:05.084725" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:05.087660" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:05.087020" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:05.089558" 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-19T00:43:05.089791" 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-19T00:43:05.089227" elapsed="0.000624"/>
</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-19T00:43:05.095568" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:05.094902" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:05.094528" elapsed="0.001232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:05.097763" 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-19T00:43:05.098114" 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-19T00:43:05.097152" elapsed="0.001060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:05.099720" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:05.099182" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:05.101525" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:05.100790" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:05.103938" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:05.104014" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:05.103656" 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-19T00:43:05.104269" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:05.105538" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:05.423817" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:05.105215" elapsed="0.318877"/>
</kw>
<msg time="2026-04-19T00:43:05.424180" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:05.104818" elapsed="0.319452"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:05.102883" elapsed="0.321665"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:05.426083" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:05.448949" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:05.449528" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:05.449862" 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-19T00:43:05.425669" elapsed="0.024444"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:05.452278" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:05.455434" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:05.454455" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:05.456551" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:05.456008" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:05.455884" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:05.457692" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T00:43:05.457198" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:05.457088" elapsed="0.001034"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:05.458205" 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-19T00:43:05.462877" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T00:43:05.463438" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:05.463797" 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-19T00:43:05.459502" elapsed="0.004502"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:05.092655" elapsed="0.371589"/>
</kw>
<msg time="2026-04-19T00:43:05.464549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:05.091704" elapsed="0.372901"/>
</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-19T00:43:05.090889" elapsed="0.373797"/>
</kw>
<msg time="2026-04-19T00:43:05.464727" 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-19T00:43:05.090174" elapsed="0.374598"/>
</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-19T00:43:05.467859" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:05.468363" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:05.468654" 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-19T00:43:05.465080" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T00:43:05.468890" level="INFO">${output} = 1</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-19T00:43:05.088237" elapsed="0.380678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:05.469349" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:05.469103" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:05.469435" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:05.469620" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:05.086104" elapsed="0.383542"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:05.469693" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:43:05.469839" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:05.083880" elapsed="0.385983"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:05.470570" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:05.470166" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:05.082805" elapsed="0.387951">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:07.474227" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:07.473480" elapsed="0.000815"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:07.476338" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:07.475696" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:07.478139" 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-19T00:43:07.478363" 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-19T00:43:07.477795" elapsed="0.000626"/>
</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-19T00:43:07.484911" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:07.484225" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:07.483806" elapsed="0.001333"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:07.487342" 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-19T00:43:07.487713" 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-19T00:43:07.486607" elapsed="0.001254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:07.489527" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:07.488957" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:07.491408" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:07.490603" elapsed="0.000905"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:07.493786" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:07.493865" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:07.493503" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:07.494119" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:07.495584" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:07.822982" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:07.495225" elapsed="0.327928"/>
</kw>
<msg time="2026-04-19T00:43:07.823240" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:07.494697" elapsed="0.328633"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:07.492707" elapsed="0.330939"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:07.825188" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:07.848477" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:07.849001" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:07.849450" 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-19T00:43:07.824773" elapsed="0.024895"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:07.851925" elapsed="0.000969"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:07.855115" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:07.854152" elapsed="0.001188"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:07.856339" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:07.855698" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:07.855558" elapsed="0.001068"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:07.857398" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:43:07.856933" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:07.856830" elapsed="0.000918"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:07.857919" elapsed="0.000082"/>
</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-19T00:43:07.865666" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T00:43:07.866248" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:07.866634" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:07.860607" elapsed="0.006235"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:07.481823" elapsed="0.385259"/>
</kw>
<msg time="2026-04-19T00:43:07.867393" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:07.480820" elapsed="0.386633"/>
</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-19T00:43:07.479950" elapsed="0.387583"/>
</kw>
<msg time="2026-04-19T00:43:07.867573" 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-19T00:43:07.478761" elapsed="0.388857"/>
</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-19T00:43:07.870700" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:43:07.871188" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:07.871483" 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-19T00:43:07.867941" elapsed="0.003701"/>
</kw>
<msg time="2026-04-19T00:43:07.871766" level="INFO">${output} = 1</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-19T00:43:07.476869" elapsed="0.394924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:07.872332" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:07.871987" elapsed="0.000391"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:07.872423" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:43:07.872577" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:07.474744" elapsed="0.397858"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:07.872648" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:43:07.872789" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:07.472655" elapsed="0.400159"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:07.873376" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:07.872969" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:07.471637" elapsed="0.401918">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:09.875961" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:09.875473" elapsed="0.000536"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:09.877421" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:09.876996" elapsed="0.000464"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:09.878632" 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-19T00:43:09.878782" 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-19T00:43:09.878395" elapsed="0.000426"/>
</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-19T00:43:09.884345" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:09.883679" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:09.883601" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:09.886791" 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-19T00:43:09.887143" 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-19T00:43:09.885887" elapsed="0.001380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:09.889397" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:09.888562" elapsed="0.000995"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:09.891943" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:09.890864" elapsed="0.001229"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:09.895503" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:09.895612" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:09.894845" elapsed="0.000801"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:09.895947" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:09.897764" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:10.217705" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:09.897299" elapsed="0.320554"/>
</kw>
<msg time="2026-04-19T00:43:10.217938" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:09.896763" elapsed="0.321284"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:09.893715" elapsed="0.324618"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:10.219819" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:10.242409" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:10.242999" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:10.243391" 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-19T00:43:10.219427" elapsed="0.024683"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:10.246496" elapsed="0.000724"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:10.248752" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:10.248093" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:10.249626" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:10.249169" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:10.249079" elapsed="0.000750"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:10.250438" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T00:43:10.250074" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:10.249971" elapsed="0.000713"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:10.250806" elapsed="0.000055"/>
</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-19T00:43:10.256896" 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-19T00:43:10.257578" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:10.257945" 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-19T00:43:10.252991" elapsed="0.005183"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:09.881665" elapsed="0.376734"/>
</kw>
<msg time="2026-04-19T00:43:10.258710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:09.880600" elapsed="0.378173"/>
</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-19T00:43:09.879818" elapsed="0.379035"/>
</kw>
<msg time="2026-04-19T00:43:10.258893" 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-19T00:43:09.879068" elapsed="0.379871"/>
</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-19T00:43:10.262047" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T00:43:10.262536" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:10.262841" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:10.259251" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T00:43:10.263106" level="INFO">${output} = 1</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-19T00:43:09.877781" elapsed="0.385352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:10.263596" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:10.263339" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:10.263688" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:43:10.263849" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:09.876425" elapsed="0.387449"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:10.263923" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:10.264150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:09.874921" elapsed="0.389255"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:10.264742" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:10.264337" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:09.874226" elapsed="0.390701">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:12.268712" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:12.267916" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:12.270963" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:12.270260" elapsed="0.000825"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:12.273000" 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-19T00:43:12.273434" 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-19T00:43:12.272638" elapsed="0.000863"/>
</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-19T00:43:12.278566" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:12.278086" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:12.278010" elapsed="0.000700"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:12.280472" 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-19T00:43:12.280722" 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-19T00:43:12.279743" elapsed="0.001080"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:12.282386" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:12.281816" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:12.284323" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:12.283511" elapsed="0.000912"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:12.286727" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:12.286808" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:12.286435" 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-19T00:43:12.287102" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:12.288578" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:12.598700" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:12.288241" elapsed="0.310614"/>
</kw>
<msg time="2026-04-19T00:43:12.598939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:12.287748" elapsed="0.311308"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:12.285638" elapsed="0.313739"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:12.600945" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:12.623620" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:12.624296" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:12.624653" 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-19T00:43:12.600530" elapsed="0.024340"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:12.627395" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:12.630718" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:12.629689" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:12.631949" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:12.631416" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:12.631224" elapsed="0.001067"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:12.633012" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T00:43:12.632624" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:12.632512" elapsed="0.000742"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:12.633338" 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-19T00:43:12.638326" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:43:12.638963" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:12.639388" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:12.634716" elapsed="0.004891"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:12.276589" elapsed="0.363281"/>
</kw>
<msg time="2026-04-19T00:43:12.640218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:12.275878" elapsed="0.364406"/>
</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-19T00:43:12.275256" elapsed="0.365114"/>
</kw>
<msg time="2026-04-19T00:43:12.640413" 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-19T00:43:12.273893" elapsed="0.366568"/>
</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-19T00:43:12.643550" 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-19T00:43:12.644063" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:12.644366" 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-19T00:43:12.640758" elapsed="0.003762"/>
</kw>
<msg time="2026-04-19T00:43:12.644615" level="INFO">${output} = 1</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-19T00:43:12.271591" elapsed="0.373049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:12.645195" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:12.644821" elapsed="0.000420"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:12.645287" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:12.645447" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:12.269289" elapsed="0.376184"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:12.645521" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:12.645668" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:12.266921" elapsed="0.378773"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:12.646273" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:12.645852" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:12.265744" elapsed="0.380726">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:14.650077" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:14.649310" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:14.652300" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:14.651655" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:14.653534" 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-19T00:43:14.653677" 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-19T00:43:14.653314" elapsed="0.000401"/>
</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-19T00:43:14.659207" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:14.658523" elapsed="0.000906"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:14.658439" elapsed="0.001081"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:14.661929" 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-19T00:43:14.662330" 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-19T00:43:14.660945" elapsed="0.001527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:14.664658" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:14.663883" elapsed="0.000886"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:14.666572" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:14.665783" elapsed="0.000892"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:14.668991" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:14.669099" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:14.668707" 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-19T00:43:14.669344" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:14.670814" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:14.998273" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:14.670478" elapsed="0.327943"/>
</kw>
<msg time="2026-04-19T00:43:14.998509" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:14.669906" elapsed="0.328691"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:14.667912" elapsed="0.330961"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:15.000387" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:15.022895" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:15.023495" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:15.023841" 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-19T00:43:14.999985" elapsed="0.024100"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:15.026262" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:15.029396" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:15.028420" elapsed="0.001207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:15.030499" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:15.029971" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:15.029849" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:15.031638" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T00:43:15.031190" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:15.031010" elapsed="0.000857"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:15.031979" elapsed="0.000173"/>
</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-19T00:43:15.038748" 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-19T00:43:15.039553" elapsed="0.000270"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:15.040220" 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-19T00:43:15.034071" elapsed="0.006446"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:14.656524" elapsed="0.384301"/>
</kw>
<msg time="2026-04-19T00:43:15.041352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:14.655485" elapsed="0.385950"/>
</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-19T00:43:14.654675" elapsed="0.386876"/>
</kw>
<msg time="2026-04-19T00:43:15.041608" 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-19T00:43:14.653934" elapsed="0.387739"/>
</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-19T00:43:15.045278" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:43:15.045759" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:15.046070" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:15.042101" elapsed="0.004119"/>
</kw>
<msg time="2026-04-19T00:43:15.046310" level="INFO">${output} = 1</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-19T00:43:14.652702" elapsed="0.393633"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:15.046766" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:15.046516" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:15.046854" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:15.047007" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:14.650626" elapsed="0.396422"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:15.047108" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:15.047255" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:14.648475" elapsed="0.398805"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:15.047826" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:15.047434" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:14.647400" elapsed="0.400611">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:17.051652" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:17.050885" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:17.053753" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:17.053145" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:17.055624" 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-19T00:43:17.055856" 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-19T00:43:17.055292" elapsed="0.000623"/>
</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-19T00:43:17.066248" elapsed="0.000109"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:17.064145" elapsed="0.002337"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:17.063966" elapsed="0.002653"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:17.070001" 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-19T00:43:17.070791" 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-19T00:43:17.068874" elapsed="0.002183"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:17.074672" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:17.073260" elapsed="0.001535"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:17.076587" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:17.075855" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:17.079118" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:17.079197" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:17.078801" 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-19T00:43:17.079439" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:17.080790" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:17.405528" 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 Sun Apr 19 00:42:17 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:17.080458" elapsed="0.325215"/>
</kw>
<msg time="2026-04-19T00:43:17.405758" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:17.080019" elapsed="0.325842"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:17.077907" elapsed="0.328260"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:17.407656" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:17.430182" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:17.430668" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:17.430997" 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-19T00:43:17.407252" elapsed="0.023998"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:17.433427" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:17.436658" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:17.435620" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:17.437776" elapsed="0.000095"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:17.437267" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:17.437142" elapsed="0.000996"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:17.438912" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T00:43:17.438460" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:17.438352" elapsed="0.000952"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:17.439479" elapsed="0.000086"/>
</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-19T00:43:17.446643" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:43:17.447213" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:17.447579" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:17.442727" elapsed="0.005063"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:17.060408" elapsed="0.387611"/>
</kw>
<msg time="2026-04-19T00:43:17.448388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:17.058710" elapsed="0.389740"/>
</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-19T00:43:17.057462" elapsed="0.391069"/>
</kw>
<msg time="2026-04-19T00:43:17.448572" 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-19T00:43:17.056299" elapsed="0.392319"/>
</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-19T00:43:17.451668" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:43:17.452232" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:17.452528" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:17.448973" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T00:43:17.452776" level="INFO">${output} = 1</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-19T00:43:17.054341" elapsed="0.398460"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:17.453243" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:17.452978" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:17.453332" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:43:17.453484" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:17.052204" elapsed="0.401305"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:17.453555" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:17.453699" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:17.049975" elapsed="0.403748"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:17.454322" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:17.453904" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:17.048843" elapsed="0.405668">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:19.458589" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:19.457758" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:19.460964" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:19.460501" elapsed="0.000521"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:19.462328" 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-19T00:43:19.462517" 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-19T00:43:19.462004" elapsed="0.000555"/>
</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-19T00:43:19.468464" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:19.467780" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:19.467387" elapsed="0.001279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:19.470548" 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-19T00:43:19.470801" 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-19T00:43:19.470068" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:19.472561" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:19.471921" elapsed="0.000754"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:19.474402" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:19.473678" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:19.476946" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:19.477058" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:19.476657" 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-19T00:43:19.477298" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:19.478667" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:20.097720" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:19.478316" elapsed="0.619557"/>
</kw>
<msg time="2026-04-19T00:43:20.097957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:19.477928" elapsed="0.620138"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:19.475757" elapsed="0.622593"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:20.099879" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:20.122768" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:20.123317" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:20.123651" 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-19T00:43:20.099436" elapsed="0.024429"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:20.126144" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:20.129408" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:20.128374" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:20.130525" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:20.129996" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:20.129872" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:20.131779" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:43:20.131199" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:20.131069" elapsed="0.001168"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:20.132416" elapsed="0.000085"/>
</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-19T00:43:20.137983" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T00:43:20.138610" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:20.138971" elapsed="0.000180"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:20.134534" elapsed="0.004725"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:19.465460" elapsed="0.674021"/>
</kw>
<msg time="2026-04-19T00:43:20.139787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:19.464374" elapsed="0.675473"/>
</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-19T00:43:19.463543" elapsed="0.676385"/>
</kw>
<msg time="2026-04-19T00:43:20.139969" 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-19T00:43:19.462795" elapsed="0.677221"/>
</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-19T00:43:20.142974" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T00:43:20.143543" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:20.143874" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:20.140323" elapsed="0.003700"/>
</kw>
<msg time="2026-04-19T00:43:20.144190" level="INFO">${output} = 1</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-19T00:43:19.461360" elapsed="0.682856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:20.144657" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:20.144406" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:20.144796" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:43:20.144982" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:19.459264" elapsed="0.685744"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:20.145077" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:20.145230" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:19.456609" elapsed="0.688646"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:20.145821" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:20.145416" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:19.455377" elapsed="0.690627">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:22.149743" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:22.148856" elapsed="0.000960"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:22.151939" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:22.151313" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:22.153546" 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-19T00:43:22.153699" 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-19T00:43:22.153270" elapsed="0.000468"/>
</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-19T00:43:22.159538" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:22.158852" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:22.158476" elapsed="0.001257"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:22.161817" 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-19T00:43:22.162177" 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-19T00:43:22.161209" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:22.164846" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:22.163827" elapsed="0.001144"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:22.166755" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:22.165991" elapsed="0.000877"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:22.169440" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:22.169523" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:22.169124" 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-19T00:43:22.169778" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:22.171178" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:22.486775" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:22.170811" elapsed="0.316250"/>
</kw>
<msg time="2026-04-19T00:43:22.487155" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:22.170419" elapsed="0.316828"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:22.168283" elapsed="0.319265"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:22.489271" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:22.512337" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:22.513112" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:22.513520" 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-19T00:43:22.488785" elapsed="0.024985"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:22.515442" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:22.517565" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:22.516909" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:22.518327" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:22.517950" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:22.517859" elapsed="0.000660"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:22.519017" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-04-19T00:43:22.518723" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:22.518653" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:22.519392" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:22.528859" elapsed="0.000524"/>
</kw>
<kw name="Open 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-19T00:43:22.529811" elapsed="0.000413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:22.530504" 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-19T00:43:22.521329" elapsed="0.009482"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:22.156533" elapsed="0.374645"/>
</kw>
<msg time="2026-04-19T00:43:22.531630" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:22.155511" elapsed="0.376204"/>
</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-19T00:43:22.154727" elapsed="0.377107"/>
</kw>
<msg time="2026-04-19T00:43:22.531893" 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-19T00:43:22.153968" elapsed="0.377992"/>
</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-19T00:43:22.536923" elapsed="0.000528"/>
</kw>
<kw name="Open 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-19T00:43:22.537759" elapsed="0.000298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:22.538346" elapsed="0.000179"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:22.532516" elapsed="0.006102"/>
</kw>
<msg time="2026-04-19T00:43:22.538779" level="INFO">${output} = 1</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-19T00:43:22.152585" elapsed="0.386235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:22.539578" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:22.539182" elapsed="0.000458"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:22.539702" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:43:22.539919" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:22.150326" elapsed="0.389645"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:22.540157" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T00:43:22.540423" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:22.147919" elapsed="0.392547"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:22.541532" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:22.540827" elapsed="0.000829">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:22.146822" elapsed="0.395023">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:24.545590" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:24.544780" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:24.547900" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:24.547193" elapsed="0.000773"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:24.549469" 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-19T00:43:24.549612" 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-19T00:43:24.549251" elapsed="0.000398"/>
</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-19T00:43:24.554879" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:24.554250" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:24.554175" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:24.606005" 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-19T00:43:24.606362" 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-19T00:43:24.556473" elapsed="0.049993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:24.608184" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:24.607509" elapsed="0.000785"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:24.609969" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:24.609273" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:24.612428" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:24.612505" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:24.612140" 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-19T00:43:24.612748" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:24.614048" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:24.924843" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:24.613710" elapsed="0.311272"/>
</kw>
<msg time="2026-04-19T00:43:24.925084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:24.613347" elapsed="0.311824"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:24.611312" elapsed="0.314128"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:24.926909" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:24.939957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:24.940501" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:24.940838" 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-19T00:43:24.926524" elapsed="0.014567"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:24.943310" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:24.946442" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:24.945479" elapsed="0.001194"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:24.947556" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:24.947052" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:24.946899" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:24.948439" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T00:43:24.948159" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:24.948091" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:24.948770" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:24.955333" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:24.956174" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:24.956666" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:24.950657" elapsed="0.006303"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:24.552369" elapsed="0.405001"/>
</kw>
<msg time="2026-04-19T00:43:24.957787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:24.551373" elapsed="0.406493"/>
</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-19T00:43:24.550603" elapsed="0.407375"/>
</kw>
<msg time="2026-04-19T00:43:24.958054" 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-19T00:43:24.549866" elapsed="0.408254"/>
</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-19T00:43:24.961703" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:43:24.962202" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:24.962497" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:24.958530" elapsed="0.004118"/>
</kw>
<msg time="2026-04-19T00:43:24.962740" level="INFO">${output} = 1</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-19T00:43:24.548515" elapsed="0.414251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:24.963213" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:24.962948" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:24.963300" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:24.963455" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:24.546181" elapsed="0.417299"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:24.963527" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:43:24.963684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:24.543871" elapsed="0.419839"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:24.964282" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:24.963870" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:24.542694" elapsed="0.421768">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:26.966396" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:26.966009" elapsed="0.000424"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:26.967542" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:26.967185" elapsed="0.000386"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:26.968399" 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-19T00:43:26.968502" 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-19T00:43:26.968226" elapsed="0.000303"/>
</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-19T00:43:26.972583" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:26.972116" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:26.972058" elapsed="0.000664"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:26.974298" 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-19T00:43:26.974539" 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-19T00:43:26.973843" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:26.976213" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:26.975629" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:26.978007" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:26.977309" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:26.980599" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:26.980679" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:26.980237" elapsed="0.000466"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:26.980918" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:26.982197" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:27.306523" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:26.981850" elapsed="0.324831"/>
</kw>
<msg time="2026-04-19T00:43:27.306767" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:26.981491" elapsed="0.325374"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:26.979344" elapsed="0.327839"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:27.308724" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:27.331654" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:27.332408" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:27.332754" 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-19T00:43:27.308320" elapsed="0.024648"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:27.335309" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:27.338615" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:27.337617" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:27.339983" elapsed="0.000060"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:27.339237" elapsed="0.000859"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:27.339107" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:27.340515" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:43:27.340306" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:27.340257" elapsed="0.000426"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:27.340763" 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-19T00:43:27.345639" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T00:43:27.346206" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:27.346565" 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-19T00:43:27.342243" elapsed="0.004529"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:26.970466" elapsed="0.376533"/>
</kw>
<msg time="2026-04-19T00:43:27.347325" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:26.969764" elapsed="0.377623"/>
</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-19T00:43:26.969233" elapsed="0.378249"/>
</kw>
<msg time="2026-04-19T00:43:27.347525" 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-19T00:43:26.968691" elapsed="0.378880"/>
</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-19T00:43:27.350638" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T00:43:27.351132" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:27.351426" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:27.347863" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T00:43:27.351694" level="INFO">${output} = 1</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-19T00:43:26.967793" elapsed="0.383926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:27.352161" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:27.351899" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:27.352248" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:27.352400" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:26.966751" elapsed="0.385674"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:27.352473" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:27.352616" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:26.965621" elapsed="0.387020"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:27.353222" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:27.352797" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:26.965023" elapsed="0.388383">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:29.356904" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:29.356150" elapsed="0.000820"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:29.358995" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:29.358439" elapsed="0.000635"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:29.360743" 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-19T00:43:29.361110" 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-19T00:43:29.360434" elapsed="0.000739"/>
</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-19T00:43:29.367895" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:29.367241" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:29.367165" elapsed="0.000950"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:29.370003" 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-19T00:43:29.370360" 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-19T00:43:29.369385" elapsed="0.001104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:29.372613" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:29.371783" elapsed="0.000972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:29.375060" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:29.373975" elapsed="0.001218"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:29.378988" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:29.379123" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:29.378563" 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-19T00:43:29.379489" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:29.381454" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:29.730969" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:29.380951" elapsed="0.350190"/>
</kw>
<msg time="2026-04-19T00:43:29.731233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:29.380396" elapsed="0.350932"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:29.377193" elapsed="0.354458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:29.733172" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:29.756004" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:29.756552" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:29.756883" 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-19T00:43:29.732752" elapsed="0.024372"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:29.759324" elapsed="0.001033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:29.762588" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:29.761608" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:29.763737" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:29.763198" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:29.763070" elapsed="0.001049"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:29.764906" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:43:29.764452" elapsed="0.000919"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:29.764340" elapsed="0.001161"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:29.765677" elapsed="0.000082"/>
</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-19T00:43:29.771757" 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-19T00:43:29.772482" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:29.772846" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:29.768381" elapsed="0.004746"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:29.364993" elapsed="0.408358"/>
</kw>
<msg time="2026-04-19T00:43:29.773661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:29.363962" elapsed="0.409757"/>
</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-19T00:43:29.362760" elapsed="0.411043"/>
</kw>
<msg time="2026-04-19T00:43:29.773844" 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-19T00:43:29.361533" elapsed="0.412358"/>
</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-19T00:43:29.776881" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T00:43:29.777475" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:29.777773" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:29.774204" elapsed="0.003722"/>
</kw>
<msg time="2026-04-19T00:43:29.778017" level="INFO">${output} = 1</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-19T00:43:29.359544" elapsed="0.418514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:29.778496" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:29.778244" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:29.778585" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:29.778739" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:29.357445" elapsed="0.421319"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:29.778811" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:43:29.778957" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:29.355312" elapsed="0.423670"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:29.779560" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:29.779156" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:29.354236" elapsed="0.425505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:31.783218" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:31.782450" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:31.784930" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:31.784549" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:31.786116" 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-19T00:43:31.786260" 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-19T00:43:31.785877" elapsed="0.000420"/>
</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-19T00:43:31.792301" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:31.791632" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:31.791547" elapsed="0.001037"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:31.794597" 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-19T00:43:31.794934" 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-19T00:43:31.793955" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:31.797015" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:31.796471" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:31.798826" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:31.798108" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:31.801424" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:31.801502" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:31.801131" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:31.801743" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:31.803044" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:32.120960" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:31.802699" elapsed="0.318430"/>
</kw>
<msg time="2026-04-19T00:43:32.121215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:31.802333" elapsed="0.318973"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:31.800319" elapsed="0.321274"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:32.123102" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:32.145774" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:32.146317" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:32.146646" 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-19T00:43:32.122687" elapsed="0.024165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:32.149075" elapsed="0.000873"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:32.152242" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:32.151239" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:32.153362" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:32.152819" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:32.152696" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:32.154458" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:43:32.153975" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:32.153868" elapsed="0.000951"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:32.154992" elapsed="0.000240"/>
</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-19T00:43:32.160553" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:43:32.161116" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:32.161480" 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-19T00:43:32.157107" elapsed="0.004588"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:31.789334" elapsed="0.372592"/>
</kw>
<msg time="2026-04-19T00:43:32.162395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:31.788304" elapsed="0.374159"/>
</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-19T00:43:31.787484" elapsed="0.375063"/>
</kw>
<msg time="2026-04-19T00:43:32.162589" 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-19T00:43:31.786518" elapsed="0.376118"/>
</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-19T00:43:32.165717" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:43:32.166218" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:32.166512" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:32.162937" elapsed="0.003723"/>
</kw>
<msg time="2026-04-19T00:43:32.166753" level="INFO">${output} = 1</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-19T00:43:31.785298" elapsed="0.381481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:32.167273" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:32.166976" elapsed="0.000342"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:32.167361" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:32.167542" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:31.783802" elapsed="0.383767"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:32.167616" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:43:32.167760" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:31.781607" elapsed="0.386178"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:32.168430" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:32.167940" elapsed="0.000564">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:31.780559" elapsed="0.388056">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:34.172137" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:34.171345" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:34.174252" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:34.173620" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:34.176131" 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-19T00:43:34.176364" 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-19T00:43:34.175770" elapsed="0.000654"/>
</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-19T00:43:34.182824" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:34.182353" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:34.182049" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:34.184466" 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-19T00:43:34.184708" 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-19T00:43:34.184005" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:34.186338" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:34.185768" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:34.188229" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:34.187491" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:34.190866" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:34.190944" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:34.190579" 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-19T00:43:34.191197" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:34.192540" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:34.493580" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:34.192214" elapsed="0.301512"/>
</kw>
<msg time="2026-04-19T00:43:34.493808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:34.191814" elapsed="0.302080"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:34.189522" elapsed="0.304671"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:34.495677" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:34.518195" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:34.518709" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:34.519080" 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-19T00:43:34.495283" elapsed="0.024014"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:34.521557" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:34.524706" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:34.523890" elapsed="0.000959"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:34.525679" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:34.525196" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:34.525107" elapsed="0.000755"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:34.526539" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T00:43:34.526137" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:34.526008" elapsed="0.000893"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:34.527108" elapsed="0.000096"/>
</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-19T00:43:34.535977" elapsed="0.000499"/>
</kw>
<kw name="Open 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-19T00:43:34.536698" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:34.537163" 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-19T00:43:34.529962" elapsed="0.007427"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:34.180711" elapsed="0.356906"/>
</kw>
<msg time="2026-04-19T00:43:34.537925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:34.179211" elapsed="0.358782"/>
</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-19T00:43:34.177958" elapsed="0.360141"/>
</kw>
<msg time="2026-04-19T00:43:34.538143" 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-19T00:43:34.176776" elapsed="0.361416"/>
</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-19T00:43:34.541316" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T00:43:34.541800" elapsed="0.000255"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:34.542244" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:34.538569" elapsed="0.003858"/>
</kw>
<msg time="2026-04-19T00:43:34.542524" level="INFO">${output} = 1</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-19T00:43:34.174800" elapsed="0.367749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:34.543010" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:34.542756" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:34.543118" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:43:34.543274" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:34.172670" elapsed="0.370630"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:34.543348" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:43:34.543495" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:34.170504" elapsed="0.373015"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:34.544169" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:34.543678" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:34.169454" elapsed="0.374933">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:36.547888" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:36.547118" elapsed="0.000895"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:36.550149" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:36.549503" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:36.552062" 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-19T00:43:36.552301" 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-19T00:43:36.551650" elapsed="0.000711"/>
</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-19T00:43:36.556568" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:36.556085" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:36.555739" elapsed="0.000971"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:36.558186" 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-19T00:43:36.558435" 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-19T00:43:36.557724" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:36.560133" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:36.559531" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:36.562021" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:36.561311" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:36.564429" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:36.564508" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:36.564142" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:36.564744" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:36.566273" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:36.889447" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:36.565929" elapsed="0.323662"/>
</kw>
<msg time="2026-04-19T00:43:36.889673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:36.565560" elapsed="0.324200"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:36.563322" elapsed="0.326737"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:36.891545" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:36.914184" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:36.914685" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:36.915013" 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-19T00:43:36.891157" elapsed="0.024139"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:36.917508" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:36.920796" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:36.919665" elapsed="0.001393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:36.921921" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:36.921424" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:36.921299" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:36.923011" elapsed="0.000181"/>
</return>
<status status="PASS" start="2026-04-19T00:43:36.922565" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:36.922459" elapsed="0.000976"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:36.923611" elapsed="0.000084"/>
</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-19T00:43:36.929004" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T00:43:36.929600" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:36.929969" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:36.925538" elapsed="0.004665"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:36.554408" elapsed="0.376026"/>
</kw>
<msg time="2026-04-19T00:43:36.930746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:36.553633" elapsed="0.377173"/>
</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-19T00:43:36.553089" elapsed="0.377800"/>
</kw>
<msg time="2026-04-19T00:43:36.930932" 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-19T00:43:36.552552" elapsed="0.378427"/>
</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-19T00:43:36.934059" 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-19T00:43:36.934552" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:36.934851" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:36.931304" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T00:43:36.935187" level="INFO">${output} = 1</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-19T00:43:36.550697" elapsed="0.384518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:36.935660" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:36.935402" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:36.935748" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:36.935901" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:36.548530" elapsed="0.387396"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:36.935973" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:43:36.936251" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:36.546271" elapsed="0.390005"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:36.936842" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:36.936441" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:36.545215" elapsed="0.391829">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:38.940687" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:38.939852" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:38.942371" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:38.941966" elapsed="0.000452"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:38.943604" 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-19T00:43:38.943777" 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-19T00:43:38.943364" elapsed="0.000457"/>
</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-19T00:43:38.951718" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:38.951050" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:38.948539" elapsed="0.003371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:38.953934" 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-19T00:43:38.954195" 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-19T00:43:38.953460" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:38.955806" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:38.955265" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:38.957659" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:38.956953" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:38.959985" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:38.960104" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:38.959703" 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-19T00:43:38.960428" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:38.961733" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:39.272680" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:38.961408" elapsed="0.311518"/>
</kw>
<msg time="2026-04-19T00:43:39.273013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:38.961001" elapsed="0.312123"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:38.958938" elapsed="0.314466"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:39.274894" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:39.297504" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:39.297999" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:39.298377" 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-19T00:43:39.274502" elapsed="0.024082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:39.300801" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:39.303938" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:39.302939" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:39.305159" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:39.304614" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:39.304484" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:39.305843" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T00:43:39.305643" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:39.305594" elapsed="0.000411"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:39.306102" 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-19T00:43:39.310809" elapsed="0.000446"/>
</kw>
<kw name="Open 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-19T00:43:39.311467" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:39.311826" 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-19T00:43:39.307479" elapsed="0.004568"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:38.946588" elapsed="0.365680"/>
</kw>
<msg time="2026-04-19T00:43:39.312585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:38.945642" elapsed="0.367001"/>
</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-19T00:43:38.944856" elapsed="0.367869"/>
</kw>
<msg time="2026-04-19T00:43:39.312766" 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-19T00:43:38.944070" elapsed="0.368742"/>
</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-19T00:43:39.315915" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T00:43:39.316416" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:39.316745" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:39.313119" elapsed="0.003775"/>
</kw>
<msg time="2026-04-19T00:43:39.316986" level="INFO">${output} = 1</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-19T00:43:38.942720" elapsed="0.374291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:39.317461" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:39.317210" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:39.317550" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:39.317703" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:38.941262" elapsed="0.376466"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:39.317775" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:39.317919" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:38.939007" elapsed="0.378937"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:39.318569" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:39.318168" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:38.937892" elapsed="0.380867">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:41.323631" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:41.322760" elapsed="0.000946"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:41.326108" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:41.325388" elapsed="0.000789"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:41.328594" 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-19T00:43:41.328904" 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-19T00:43:41.328108" elapsed="0.000866"/>
</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-19T00:43:41.333456" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:41.332947" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:41.332884" elapsed="0.000717"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:41.335354" 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-19T00:43:41.335613" 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-19T00:43:41.334602" elapsed="0.001116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:41.337356" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:41.336721" elapsed="0.000747"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:41.339227" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:41.338489" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:41.341842" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:41.341920" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:41.341542" 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-19T00:43:41.342170" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:41.343448" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:41.671019" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:41.343120" elapsed="0.328065"/>
</kw>
<msg time="2026-04-19T00:43:41.671271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:41.342741" elapsed="0.328621"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:41.340583" elapsed="0.331068"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:41.673229" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:41.696349" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:41.696907" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:41.697430" 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-19T00:43:41.672751" elapsed="0.024898"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:41.700157" elapsed="0.001169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:41.703799" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:41.702719" elapsed="0.001363"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:41.705107" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:41.704498" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:41.704355" elapsed="0.001139"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:41.706735" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T00:43:41.705830" elapsed="0.001146"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:41.705717" elapsed="0.001431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:41.707328" elapsed="0.000085"/>
</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-19T00:43:41.718537" elapsed="0.000861"/>
</kw>
<kw name="Open 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-19T00:43:41.719898" elapsed="0.000400"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:41.720747" elapsed="0.000319"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:41.710570" elapsed="0.010752"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:41.331467" elapsed="0.390246"/>
</kw>
<msg time="2026-04-19T00:43:41.722090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:41.330697" elapsed="0.391466"/>
</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-19T00:43:41.330068" elapsed="0.392183"/>
</kw>
<msg time="2026-04-19T00:43:41.722306" 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-19T00:43:41.329396" elapsed="0.392961"/>
</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-19T00:43:41.725470" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:43:41.726000" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:41.726363" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:41.722680" elapsed="0.003838"/>
</kw>
<msg time="2026-04-19T00:43:41.726614" level="INFO">${output} = 1</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-19T00:43:41.326804" elapsed="0.399836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:41.727153" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:41.726864" elapsed="0.000338"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:41.727250" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:43:41.727417" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:41.324246" elapsed="0.403198"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:41.727491" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:43:41.727642" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:41.321819" elapsed="0.405849"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:41.728302" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:41.727829" elapsed="0.000565">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:41.320449" elapsed="0.408059">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:43.732124" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:43.731342" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:43.734485" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:43.733829" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:43.736354" 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-19T00:43:43.736596" 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-19T00:43:43.735993" elapsed="0.000663"/>
</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-19T00:43:43.743307" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:43.742814" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:43.742756" elapsed="0.000693"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:43.745190" 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-19T00:43:43.745460" 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-19T00:43:43.744440" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:43.747195" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:43.746558" elapsed="0.000751"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:43.749044" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:43.748299" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:43.751600" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:43.751680" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:43.751300" 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-19T00:43:43.751931" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:43.753266" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:44.079668" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:43.752911" elapsed="0.326910"/>
</kw>
<msg time="2026-04-19T00:43:44.079904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:43.752532" elapsed="0.327463"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:43.750482" elapsed="0.329824"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:44.081894" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:44.105299" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:44.105708" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:44.105863" 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-19T00:43:44.081398" elapsed="0.024566"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:44.107093" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:44.108667" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:44.108201" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:44.109287" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:44.108943" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:44.108880" elapsed="0.000545"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:44.109807" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:43:44.109596" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:44.109544" elapsed="0.000432"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:44.110073" 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-19T00:43:44.114994" elapsed="0.000653"/>
</kw>
<kw name="Open 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-19T00:43:44.115878" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:44.116271" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:44.111467" elapsed="0.005018"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:43.740982" elapsed="0.375740"/>
</kw>
<msg time="2026-04-19T00:43:44.117053" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:43.739505" elapsed="0.377616"/>
</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-19T00:43:43.738253" elapsed="0.378951"/>
</kw>
<msg time="2026-04-19T00:43:44.117245" 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-19T00:43:43.737010" elapsed="0.380282"/>
</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-19T00:43:44.120568" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T00:43:44.121100" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:44.121613" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:44.117626" elapsed="0.004190"/>
</kw>
<msg time="2026-04-19T00:43:44.121916" level="INFO">${output} = 1</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-19T00:43:43.735065" elapsed="0.386878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:44.122442" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:44.122180" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:44.122534" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:43:44.122706" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:43.732825" elapsed="0.389908"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:44.122781" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:43:44.122929" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:43.730487" elapsed="0.392467"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:44.123575" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:44.123167" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:43.729347" elapsed="0.394428">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:46.127406" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:46.126618" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:46.129571" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:46.128919" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:46.131251" 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-19T00:43:46.131507" 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-19T00:43:46.131007" elapsed="0.000540"/>
</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-19T00:43:46.136955" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:46.136327" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:46.136250" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:46.139371" 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-19T00:43:46.139619" 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-19T00:43:46.138581" elapsed="0.001139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:46.141280" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:46.140711" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:46.143179" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:46.142397" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:46.145571" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:46.145653" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:46.145285" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:46.145893" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:46.147350" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:46.472163" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:46.146871" elapsed="0.325443"/>
</kw>
<msg time="2026-04-19T00:43:46.472403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:46.146503" elapsed="0.325988"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:46.144492" elapsed="0.328279"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:46.474340" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:46.497292" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:46.497787" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:46.498213" 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-19T00:43:46.473863" elapsed="0.024570"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:46.500655" elapsed="0.000938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:46.503876" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:46.502869" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:46.505001" elapsed="0.000096"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:46.504490" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:46.504369" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:46.506152" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T00:43:46.505647" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:46.505540" elapsed="0.000966"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:46.506683" elapsed="0.000085"/>
</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-19T00:43:46.513714" 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-19T00:43:46.514364" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:46.514727" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:46.509791" elapsed="0.005152"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:46.134384" elapsed="0.380861"/>
</kw>
<msg time="2026-04-19T00:43:46.515556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:46.133315" elapsed="0.382298"/>
</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-19T00:43:46.132530" elapsed="0.383166"/>
</kw>
<msg time="2026-04-19T00:43:46.515739" 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-19T00:43:46.131776" elapsed="0.384011"/>
</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-19T00:43:46.518779" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T00:43:46.519349" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:46.519648" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:46.516102" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T00:43:46.519892" level="INFO">${output} = 1</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-19T00:43:46.130198" elapsed="0.389720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:46.520381" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:46.520120" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:46.520471" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:46.520627" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:46.127946" elapsed="0.392707"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:46.520701" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:46.520848" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:46.125721" elapsed="0.395153"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:46.521440" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:46.521046" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:46.124629" elapsed="0.396993">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:48.525144" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:48.524382" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:48.527292" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:48.526607" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:48.529135" 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-19T00:43:48.529363" 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-19T00:43:48.528780" elapsed="0.000662"/>
</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-19T00:43:48.535810" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:48.535165" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:48.534752" elapsed="0.001356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:48.538146" 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-19T00:43:48.538486" 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-19T00:43:48.537502" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:48.540767" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:48.539995" elapsed="0.000924"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:48.543249" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:48.542363" elapsed="0.000983"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:48.545608" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:48.545686" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:48.545327" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:48.545927" elapsed="0.000482"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:48.547358" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:48.873625" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:48.547016" elapsed="0.326754"/>
</kw>
<msg time="2026-04-19T00:43:48.873855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:48.546632" elapsed="0.327311"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:48.544540" elapsed="0.329701"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:48.875779" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:48.898904" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:48.899462" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:48.899795" 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-19T00:43:48.875398" elapsed="0.024674"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:48.902275" elapsed="0.000990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:48.904914" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:48.904303" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:48.905633" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:48.905307" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:48.905228" elapsed="0.000590"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:48.906328" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T00:43:48.906021" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:48.905952" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:48.906666" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:48.912995" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:43:48.913555" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:48.913910" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:48.908741" elapsed="0.005397"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:48.532847" elapsed="0.381515"/>
</kw>
<msg time="2026-04-19T00:43:48.914730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:48.531891" elapsed="0.382913"/>
</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-19T00:43:48.531143" elapsed="0.383745"/>
</kw>
<msg time="2026-04-19T00:43:48.914935" 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-19T00:43:48.529884" elapsed="0.385097"/>
</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-19T00:43:48.918065" 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-19T00:43:48.918541" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:48.918852" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:48.915289" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T00:43:48.919119" level="INFO">${output} = 1</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-19T00:43:48.527837" elapsed="0.391308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:48.919570" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:48.919322" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:48.919660" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:48.919812" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:48.525665" elapsed="0.394173"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:48.919885" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:48.920067" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:48.523549" elapsed="0.396546"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:48.920641" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:48.920252" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:48.522460" elapsed="0.398360">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:50.924370" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:50.923588" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:50.926508" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:50.925862" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:50.928417" 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-19T00:43:50.928571" 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-19T00:43:50.928180" elapsed="0.000430"/>
</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-19T00:43:50.934739" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:50.934054" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:50.933617" elapsed="0.001330"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:50.937130" 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-19T00:43:50.937487" 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-19T00:43:50.936438" elapsed="0.001199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:50.939934" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:50.939081" elapsed="0.001001"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:50.941915" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:50.941212" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:50.944337" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:50.944416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:50.944046" 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-19T00:43:50.944655" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:50.946089" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:51.271665" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:50.945735" elapsed="0.326082"/>
</kw>
<msg time="2026-04-19T00:43:51.271900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:50.945366" elapsed="0.326623"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:50.943233" elapsed="0.329058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:51.273766" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:51.296722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:51.297260" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:51.297589" 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-19T00:43:51.273376" elapsed="0.024424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:51.300077" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:51.303355" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:51.302382" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:51.304270" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:51.303986" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:51.303866" elapsed="0.000540"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:51.304755" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T00:43:51.304553" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:51.304504" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:51.305004" elapsed="0.000057"/>
</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-19T00:43:51.309804" 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-19T00:43:51.310479" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:51.310843" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:51.306396" elapsed="0.004679"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:50.931538" elapsed="0.379762"/>
</kw>
<msg time="2026-04-19T00:43:51.311622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:50.930480" elapsed="0.381205"/>
</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-19T00:43:50.929648" elapsed="0.382119"/>
</kw>
<msg time="2026-04-19T00:43:51.311808" 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-19T00:43:50.928856" elapsed="0.382998"/>
</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-19T00:43:51.315048" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:43:51.315552" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:51.315850" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:51.312233" elapsed="0.003767"/>
</kw>
<msg time="2026-04-19T00:43:51.316114" level="INFO">${output} = 1</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-19T00:43:50.927100" elapsed="0.389040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:51.316604" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:51.316330" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:51.316703" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:43:51.316860" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:50.924904" elapsed="0.391981"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:51.316933" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:51.317096" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:50.922692" elapsed="0.394430"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:51.317672" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:51.317279" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:50.921632" elapsed="0.396222">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:53.321574" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:53.320723" elapsed="0.000923"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:53.323710" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:53.323095" elapsed="0.000676"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:53.325765" 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-19T00:43:53.326026" 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-19T00:43:53.325397" elapsed="0.000768"/>
</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-19T00:43:53.333925" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:53.333411" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:53.331306" elapsed="0.002784"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:53.335546" 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-19T00:43:53.335804" 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-19T00:43:53.335089" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:53.337524" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:53.336903" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:53.339432" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:53.338633" elapsed="0.000898"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:53.341870" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:53.341950" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:53.341564" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:53.342233" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:53.343732" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:53.651385" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:53.343402" elapsed="0.308144"/>
</kw>
<msg time="2026-04-19T00:43:53.651634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:53.342891" elapsed="0.308837"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:53.340778" elapsed="0.311245"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:53.653776" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:53.677104" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:53.677626" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:53.677956" 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-19T00:43:53.653231" elapsed="0.024982"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:53.680432" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:53.683598" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:53.682599" elapsed="0.001230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:53.684739" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:53.684237" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:53.684084" elapsed="0.000974"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:53.685837" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T00:43:53.685388" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:53.685281" elapsed="0.001057"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:53.686514" elapsed="0.000081"/>
</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-19T00:43:53.692782" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T00:43:53.693345" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:53.693707" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:53.689340" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:53.329936" elapsed="0.364266"/>
</kw>
<msg time="2026-04-19T00:43:53.694505" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:53.329183" elapsed="0.365383"/>
</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-19T00:43:53.327845" elapsed="0.366804"/>
</kw>
<msg time="2026-04-19T00:43:53.694690" 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-19T00:43:53.326577" elapsed="0.368159"/>
</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-19T00:43:53.697741" elapsed="0.000420"/>
</kw>
<kw name="Open 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-19T00:43:53.698329" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:53.698629" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:53.695044" elapsed="0.003733"/>
</kw>
<msg time="2026-04-19T00:43:53.698928" level="INFO">${output} = 1</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-19T00:43:53.324334" elapsed="0.374620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:53.699413" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:53.699161" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:53.699502" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:53.699655" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:53.322143" elapsed="0.377537"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:53.699727" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:53.699871" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:53.319780" elapsed="0.380115"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:53.700489" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:53.700066" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:53.318695" elapsed="0.381978">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:55.704646" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:55.703772" elapsed="0.000950"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:55.707265" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:55.706481" elapsed="0.000879"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:55.709455" 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-19T00:43:55.709564" 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-19T00:43:55.709260" elapsed="0.000331"/>
</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-19T00:43:55.713904" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:55.713412" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:55.713344" elapsed="0.000728"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:55.715921" 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-19T00:43:55.716204" 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-19T00:43:55.715166" elapsed="0.001149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:55.717993" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:55.717409" elapsed="0.000715"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:55.719880" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:55.719150" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:55.722496" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:55.722577" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:55.722197" 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-19T00:43:55.722826" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:55.724156" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:56.046320" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:55.723801" elapsed="0.322776"/>
</kw>
<msg time="2026-04-19T00:43:56.046668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:55.723430" elapsed="0.323331"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:55.721378" elapsed="0.325702"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:56.048623" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:56.071908" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:56.072521" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:56.072867" 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-19T00:43:56.048214" elapsed="0.024963"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:56.075546" elapsed="0.000988"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:56.078354" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:56.077671" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:56.079112" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:56.078744" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:56.078658" elapsed="0.000673"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:56.079843" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T00:43:56.079547" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:56.079473" elapsed="0.000642"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:56.080252" elapsed="0.000055"/>
</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-19T00:43:56.087332" elapsed="0.000478"/>
</kw>
<kw name="Open 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-19T00:43:56.088135" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:56.088660" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:56.082312" elapsed="0.006649"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:55.711769" elapsed="0.377587"/>
</kw>
<msg time="2026-04-19T00:43:56.089673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:55.710945" elapsed="0.378792"/>
</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-19T00:43:55.710353" elapsed="0.379470"/>
</kw>
<msg time="2026-04-19T00:43:56.089866" 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-19T00:43:55.709757" elapsed="0.380155"/>
</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-19T00:43:56.092948" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T00:43:56.093501" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:56.093800" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:56.090288" elapsed="0.003662"/>
</kw>
<msg time="2026-04-19T00:43:56.094057" level="INFO">${output} = 1</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-19T00:43:55.707969" elapsed="0.386116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:56.094520" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:56.094267" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:56.094610" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:43:56.094765" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:55.705309" elapsed="0.389482"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:56.094839" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:43:56.094986" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:55.702779" elapsed="0.392232"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:56.095718" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:56.095317" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:55.701606" elapsed="0.394297">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:43:58.099670" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:43:58.098884" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:43:58.102239" level="INFO">${member_ip} = 10.30.171.206</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-19T00:43:58.101381" elapsed="0.000938"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:58.104705" 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-19T00:43:58.105007" 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-19T00:43:58.104263" elapsed="0.000858"/>
</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-19T00:43:58.111472" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:43:58.110876" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:58.110801" elapsed="0.000823"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:58.113458" 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-19T00:43:58.113739" 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-19T00:43:58.112716" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:58.115600" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:58.114878" elapsed="0.000842"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:43:58.117479" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:43:58.116727" elapsed="0.000854"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:43:58.120294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:43:58.120375" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:43:58.119945" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:58.120618" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:43:58.121990" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:43:58.447295" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:43:58.121602" elapsed="0.325865"/>
</kw>
<msg time="2026-04-19T00:43:58.447560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:58.121217" elapsed="0.326454"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:43:58.118923" elapsed="0.329056"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:43:58.449540" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:43:58.472893" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:43:58.473441" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:43:58.473802" 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-19T00:43:58.449135" elapsed="0.024887"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:58.476246" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:58.479433" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:58.478408" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:58.480567" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:43:58.480013" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:58.479892" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:43:58.481665" elapsed="0.000158"/>
</return>
<status status="PASS" start="2026-04-19T00:43:58.481215" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T00:43:58.481105" elapsed="0.000995"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:43:58.482282" elapsed="0.000063"/>
</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-19T00:43:58.487023" elapsed="0.000417"/>
</kw>
<kw name="Open 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-19T00:43:58.487651" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:58.488121" 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-19T00:43:58.483672" elapsed="0.004675"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:43:58.108622" elapsed="0.379950"/>
</kw>
<msg time="2026-04-19T00:43:58.488881" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:43:58.107663" elapsed="0.381278"/>
</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-19T00:43:58.106859" elapsed="0.382165"/>
</kw>
<msg time="2026-04-19T00:43:58.489197" 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-19T00:43:58.105604" elapsed="0.383642"/>
</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-19T00:43:58.492239" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:43:58.492715" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:43:58.493007" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:43:58.489538" elapsed="0.003638"/>
</kw>
<msg time="2026-04-19T00:43:58.493267" level="INFO">${output} = 1</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-19T00:43:58.102982" elapsed="0.390311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:43:58.493720" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:43:58.493474" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:43:58.493823" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:43:58.493977" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:43:58.100236" elapsed="0.393766"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:43:58.494068" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:43:58.494215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:43:58.098010" elapsed="0.396229"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:43:58.494845" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:43:58.494403" elapsed="0.000524">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:43:58.096750" elapsed="0.398307">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:00.498716" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:00.497879" elapsed="0.000909"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:00.500434" level="INFO">${member_ip} = 10.30.171.206</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-19T00:44:00.500049" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:00.501596" 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-19T00:44:00.501738" 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-19T00:44:00.501364" elapsed="0.000411"/>
</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-19T00:44:00.507173" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:00.506405" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:00.506293" elapsed="0.001075"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:00.509079" 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-19T00:44:00.509323" 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-19T00:44:00.508399" elapsed="0.001025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:00.510969" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:00.510399" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:00.512752" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:00.512062" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:00.515206" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:00.515284" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:00.514860" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:00.515518" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:00.516781" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:00.817938" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:43:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:00.516454" elapsed="0.301780"/>
</kw>
<msg time="2026-04-19T00:44:00.818378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:00.516086" elapsed="0.302439"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:00.514075" elapsed="0.305053"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:00.822196" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:44:00.845153" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:00.845658" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:44:00.845988" 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-19T00:44:00.821418" elapsed="0.024820"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:00.848457" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:00.851587" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:00.850626" elapsed="0.001106"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:00.852382" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:00.851953" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:00.851876" 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-19T00:44:00.853074" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T00:44:00.852772" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:00.852704" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:00.853418" elapsed="0.000055"/>
</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-19T00:44:00.859980" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:00.860755" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:00.861265" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:00.855363" elapsed="0.006194"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:44:00.504456" elapsed="0.357407"/>
</kw>
<msg time="2026-04-19T00:44:00.862306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:00.503516" elapsed="0.358872"/>
</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-19T00:44:00.502753" elapsed="0.359751"/>
</kw>
<msg time="2026-04-19T00:44:00.862562" 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-19T00:44:00.501995" elapsed="0.360667"/>
</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-19T00:44:00.865984" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:44:00.866491" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:00.866810" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:00.863226" elapsed="0.003735"/>
</kw>
<msg time="2026-04-19T00:44:00.867087" level="INFO">${output} = 1</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-19T00:44:00.500775" elapsed="0.366339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:00.867562" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:00.867312" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:44:00.867650" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:44:00.867805" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:44:00.499449" elapsed="0.368381"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:44:00.867877" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:44:00.868020" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:44:00.496964" elapsed="0.371096"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:44:00.868618" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:44:00.868218" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:44:00.495838" elapsed="0.372965">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:02.872323" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:02.871570" elapsed="0.000821"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:02.874406" level="INFO">${member_ip} = 10.30.171.206</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-19T00:44:02.873781" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:02.876008" 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-19T00:44:02.876319" 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-19T00:44:02.875780" elapsed="0.000580"/>
</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-19T00:44:02.882574" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:02.881856" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:02.881281" elapsed="0.001500"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:02.884529" 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-19T00:44:02.884776" 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-19T00:44:02.884067" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:02.886484" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:02.885913" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:02.888386" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:02.887606" elapsed="0.000879"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:02.890771" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:02.890850" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:02.890481" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:02.891103" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:02.892659" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:03.250882" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:02.892333" elapsed="0.358724"/>
</kw>
<msg time="2026-04-19T00:44:03.251147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:02.891807" elapsed="0.359435"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:02.889693" elapsed="0.361871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:03.253104" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:44:03.276204" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:03.276747" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:44:03.277125" 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-19T00:44:03.252677" elapsed="0.024663"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:03.279664" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:03.282852" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:03.281855" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:03.283985" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:03.283489" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:03.283336" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:03.285091" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T00:44:03.284622" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:03.284515" elapsed="0.000929"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:03.285616" elapsed="0.000084"/>
</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-19T00:44:03.292426" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T00:44:03.293219" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:03.293624" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:03.288898" elapsed="0.004937"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:44:02.879311" elapsed="0.414765"/>
</kw>
<msg time="2026-04-19T00:44:03.294386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:02.878216" elapsed="0.416236"/>
</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-19T00:44:02.877397" elapsed="0.417139"/>
</kw>
<msg time="2026-04-19T00:44:03.294578" 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-19T00:44:02.876602" elapsed="0.418023"/>
</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-19T00:44:03.297740" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T00:44:03.298244" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:03.298539" 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-19T00:44:03.294920" elapsed="0.003766"/>
</kw>
<msg time="2026-04-19T00:44:03.298779" level="INFO">${output} = 1</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-19T00:44:02.874941" elapsed="0.423863"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:03.299266" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:03.299002" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:44:03.299354" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:44:03.299536" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:44:02.872842" elapsed="0.426720"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:44:03.299609" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:44:03.299755" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:44:02.870708" elapsed="0.429071"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:44:03.300351" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:44:03.299937" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:44:02.869583" elapsed="0.430950">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:05.304115" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:05.303334" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:05.305695" level="INFO">${member_ip} = 10.30.171.206</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-19T00:44:05.305304" elapsed="0.000429"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:05.306949" 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-19T00:44:05.307115" 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-19T00:44:05.306722" elapsed="0.000431"/>
</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-19T00:44:05.312853" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:05.312266" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:05.311779" elapsed="0.001303"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:05.314515" 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-19T00:44:05.314790" 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-19T00:44:05.314064" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:05.316531" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:05.315904" elapsed="0.000741"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:05.318384" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:05.317631" elapsed="0.000854"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:05.320955" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:05.321052" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:05.320631" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:05.321296" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:05.322607" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:05.634883" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:05.322268" elapsed="0.312833"/>
</kw>
<msg time="2026-04-19T00:44:05.635215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:05.321880" elapsed="0.313455"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:05.319801" elapsed="0.315910"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:05.637520" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:44:05.660330" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:05.660821" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:44:05.661196" 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-19T00:44:05.637121" elapsed="0.024281"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:05.663574" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:05.666922" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:05.665852" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:05.668013" elapsed="0.000097"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:05.667527" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:05.667407" elapsed="0.000978"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:05.668873" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T00:44:05.668672" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:05.668597" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:05.669132" 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-19T00:44:05.673823" elapsed="0.000422"/>
</kw>
<kw name="Open 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-19T00:44:05.674458" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:05.674819" 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-19T00:44:05.670507" elapsed="0.004532"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:44:05.309834" elapsed="0.365431"/>
</kw>
<msg time="2026-04-19T00:44:05.675632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:05.308881" elapsed="0.366812"/>
</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-19T00:44:05.308118" elapsed="0.367656"/>
</kw>
<msg time="2026-04-19T00:44:05.675815" 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-19T00:44:05.307377" elapsed="0.368484"/>
</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-19T00:44:05.678940" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:05.679437" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:05.679729" 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-19T00:44:05.676169" elapsed="0.003707"/>
</kw>
<msg time="2026-04-19T00:44:05.679966" level="INFO">${output} = 1</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-19T00:44:05.306112" elapsed="0.373879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:05.680469" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:05.680194" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:44:05.680555" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:05.680706" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:44:05.304691" elapsed="0.376040"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:44:05.680777" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:44:05.680919" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:44:05.302472" elapsed="0.378472"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:44:05.681503" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:44:05.681113" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:44:05.301390" elapsed="0.380295">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:07.685328" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:07.684501" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:07.686860" level="INFO">${member_ip} = 10.30.171.206</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-19T00:44:07.686434" elapsed="0.000488"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:07.688114" 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-19T00:44:07.688259" 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-19T00:44:07.687864" elapsed="0.000432"/>
</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-19T00:44:07.696354" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:07.695655" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:07.692992" elapsed="0.003559"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:07.698469" 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-19T00:44:07.698718" 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-19T00:44:07.697981" elapsed="0.000837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:07.700423" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:07.699818" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:07.702374" level="INFO">${conn_id} = 495</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:07.701647" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:07.704966" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:07.705082" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:07.704667" 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-19T00:44:07.705325" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:07.706758" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:08.051178" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:07.706409" elapsed="0.344926"/>
</kw>
<msg time="2026-04-19T00:44:08.051420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:07.706005" elapsed="0.345506"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:07.703766" elapsed="0.348035"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.053378" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T00:44:08.076177" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:08.076884" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T00:44:08.077362" 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-19T00:44:08.052913" elapsed="0.024750"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:08.080073" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.083621" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:08.082571" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:08.084741" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:08.084234" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:08.084107" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:08.085883" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T00:44:08.085513" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:08.085363" elapsed="0.000771"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:08.086219" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.091242" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T00:44:08.091795" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:08.092194" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:08.087706" elapsed="0.004721"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:44:07.691057" elapsed="0.401597"/>
</kw>
<msg time="2026-04-19T00:44:08.092991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:07.690102" elapsed="0.402974"/>
</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-19T00:44:07.689292" elapsed="0.403890"/>
</kw>
<msg time="2026-04-19T00:44:08.093227" 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-19T00:44:07.688516" elapsed="0.404760"/>
</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-19T00:44:08.097262" 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-19T00:44:08.097844" elapsed="0.000316"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:08.098353" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:08.093720" elapsed="0.004816"/>
</kw>
<msg time="2026-04-19T00:44:08.098648" level="INFO">${output} = 1</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-19T00:44:07.687286" elapsed="0.411395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.099260" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:08.098937" elapsed="0.000378"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:44:08.099368" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:44:08.099562" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:44:07.685834" elapsed="0.413757"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T00:44:08.099640" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:44:08.099790" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T00:44:07.683562" elapsed="0.416253"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.100439" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T00:44:08.099981" elapsed="0.000556">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T00:44:07.682523" elapsed="0.418153">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T00:44:08.100773" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:38:07.067053" elapsed="361.033817">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:38:07.066895" elapsed="361.034070">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T00:37:58.568279" elapsed="369.532771">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:08.101319" elapsed="0.000027"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T00:44:08.101390" elapsed="0.000015"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T00:37:56.372520" elapsed="371.728968">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:37:56.371744" elapsed="371.729902">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s5-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T00:44:08.106244" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:08.105839" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.106736" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:08.106431" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:08.106806" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:08.106959" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:08.105460" elapsed="0.001523"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.109618" 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-19T00:44:08.109721" 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-19T00:44:08.109474" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:08.112015" level="INFO">${ip_address} = 10.30.171.9</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-19T00:44:08.111687" elapsed="0.000378"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:08.112116" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:44:08.112272" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:08.111358" elapsed="0.000940"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.115886" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:08.115150" elapsed="0.000862"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.119268" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:08.119347" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:08.118939" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.119533" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.120742" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:08.801736" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:38:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:08.120419" elapsed="0.681475"/>
</kw>
<msg time="2026-04-19T00:44:08.801980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.120056" elapsed="0.682038"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:08.118203" elapsed="0.684010"/>
</kw>
<msg time="2026-04-19T00:44:08.802265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.117781" elapsed="0.684535"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:08.116749" elapsed="0.685754"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:08.802603" elapsed="0.000059"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:08.113973" elapsed="0.688946"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.806096" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:08.818697" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:08.818952" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:08.819094" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:08.819190" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:08.805880" elapsed="0.013360"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.821213" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:08.820571" elapsed="0.000744"/>
</kw>
<msg time="2026-04-19T00:44:08.821569" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:08.821674" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:08.819754" elapsed="0.001972"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.823284" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:08.822279" elapsed="0.001063"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.826068" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:08.825454" elapsed="0.000822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.827229" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:08.826625" elapsed="0.000700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.828239" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:08.827665" elapsed="0.000675"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:08.824445" elapsed="0.004016"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:08.823640" elapsed="0.004901"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:08.823587" elapsed="0.005012"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:08.829119" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:08.828844" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:08.828799" elapsed="0.000474"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:08.829810" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T00:44:08.829597" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:08.829533" elapsed="0.000368"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:08.830111" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:08.804936" elapsed="0.025420"/>
</kw>
<msg time="2026-04-19T00:44:08.830509" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:08.830581" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:08.803233" elapsed="0.027385"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:08.830874" elapsed="0.000245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:08.831424" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:44:08.831243" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:08.831224" elapsed="0.000367"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:08.831738" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:08.113009" elapsed="0.718912"/>
</kw>
<msg time="2026-04-19T00:44:08.831981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.112458" elapsed="0.719589"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:08.110585" elapsed="0.721553"/>
</kw>
<msg time="2026-04-19T00:44:08.832181" 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-19T00:44:08.110111" elapsed="0.722116"/>
</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-19T00:44:08.835358" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T00:44:08.835840" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:08.836159" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:08.832540" elapsed="0.003782"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:08.108782" elapsed="0.727600"/>
</kw>
<msg time="2026-04-19T00:44:08.836438" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.108316" elapsed="0.728170"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:08.107359" elapsed="0.729215"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:08.107202" elapsed="0.729455"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.838906" 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-19T00:44:08.839007" 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-19T00:44:08.838771" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:08.841188" level="INFO">${ip_address} = 10.30.171.128</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-19T00:44:08.840801" elapsed="0.000415"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:08.841267" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:08.841421" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:08.840463" elapsed="0.001049"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.844970" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:08.844285" elapsed="0.000800"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:08.847721" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:08.847800" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:08.847443" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.848003" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:08.849194" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:09.524310" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:38:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:08.848863" elapsed="0.675597"/>
</kw>
<msg time="2026-04-19T00:44:09.524545" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.848512" elapsed="0.676119"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:08.846939" elapsed="0.677806"/>
</kw>
<msg time="2026-04-19T00:44:09.524797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.846546" elapsed="0.678301"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:08.845642" elapsed="0.679414"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:09.525158" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:08.843154" elapsed="0.682312"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.528620" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:09.541327" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:09.541504" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:09.541567" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:09.541625" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:09.528422" elapsed="0.013235"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.543181" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:09.542747" elapsed="0.000505"/>
</kw>
<msg time="2026-04-19T00:44:09.543425" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:09.543512" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:09.542105" elapsed="0.001452"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.544803" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:09.544057" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.546670" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:09.546316" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.547322" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:09.546943" elapsed="0.000437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.547929" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:09.547591" elapsed="0.000400"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:09.545640" elapsed="0.002452"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:09.545089" elapsed="0.003055"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.545047" elapsed="0.003136"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:09.548486" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:09.548337" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.548310" elapsed="0.000273"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:09.548857" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T00:44:09.548724" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.548700" elapsed="0.000282"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:09.549282" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:09.527489" elapsed="0.022138"/>
</kw>
<msg time="2026-04-19T00:44:09.549864" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:09.549963" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:09.525779" elapsed="0.024234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:09.550398" elapsed="0.000339"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:09.551185" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T00:44:09.550902" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.550874" elapsed="0.000527"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:09.551605" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:08.842224" elapsed="0.709637"/>
</kw>
<msg time="2026-04-19T00:44:09.551945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.841679" elapsed="0.710339"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:08.839677" elapsed="0.712493"/>
</kw>
<msg time="2026-04-19T00:44:09.552230" 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-19T00:44:08.839216" elapsed="0.713080"/>
</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-19T00:44:09.556580" 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-19T00:44:09.557277" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:09.557742" elapsed="0.000149"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:09.552722" elapsed="0.005246"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:08.838154" elapsed="0.719920"/>
</kw>
<msg time="2026-04-19T00:44:09.558154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:08.837678" elapsed="0.720547"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:08.836915" elapsed="0.721491"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:08.836757" elapsed="0.721717"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.560829" 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-19T00:44:09.560930" 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-19T00:44:09.560691" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:09.563075" level="INFO">${ip_address} = 10.30.171.206</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-19T00:44:09.562738" elapsed="0.000365"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:09.563155" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:09.563310" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:09.562412" elapsed="0.000923"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.566899" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:09.566147" elapsed="0.000850"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.569628" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:09.569719" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:09.569356" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.569914" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.571120" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:09.885015" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:09.570782" elapsed="0.314377"/>
</kw>
<msg time="2026-04-19T00:44:09.885249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.570422" elapsed="0.314920"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:09.568852" elapsed="0.316621"/>
</kw>
<msg time="2026-04-19T00:44:09.885544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.568461" elapsed="0.317155"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:09.567556" elapsed="0.318296"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:09.885984" elapsed="0.000083"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:09.564959" elapsed="0.321360"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.890762" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:09.903377" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:09.903563" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:09.903739" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:09.903808" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:09.890467" elapsed="0.013376"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.904912" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:09.904589" elapsed="0.000375"/>
</kw>
<msg time="2026-04-19T00:44:09.905088" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:09.905136" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:09.904192" elapsed="0.000968"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.905937" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:09.905391" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.907255" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:09.906973" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.907701" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:09.907456" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.908164" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:09.907902" elapsed="0.000309"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:09.906524" elapsed="0.001744"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:09.906134" elapsed="0.002171"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.906105" elapsed="0.002228"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:09.908557" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:09.908447" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.908427" elapsed="0.000200"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:09.908828" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-19T00:44:09.908731" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.908713" elapsed="0.000217"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:09.909156" elapsed="0.000024"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:09.889020" elapsed="0.020386"/>
</kw>
<msg time="2026-04-19T00:44:09.909562" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:09.909636" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:09.886592" elapsed="0.023082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:09.909999" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:09.910612" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:44:09.910428" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:09.910409" elapsed="0.000361"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:09.910992" elapsed="0.000070"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:09.564045" elapsed="0.347273"/>
</kw>
<msg time="2026-04-19T00:44:09.911402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.563494" elapsed="0.347986"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:09.561591" elapsed="0.350010"/>
</kw>
<msg time="2026-04-19T00:44:09.911662" 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-19T00:44:09.561127" elapsed="0.350598"/>
</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-19T00:44:09.916058" 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-19T00:44:09.916738" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:09.917267" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:09.912197" elapsed="0.005287"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:09.560071" elapsed="0.357572"/>
</kw>
<msg time="2026-04-19T00:44:09.917722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.559598" elapsed="0.358193"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:09.558819" elapsed="0.359148"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:44:09.558608" elapsed="0.359449"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:08.107060" elapsed="1.811056"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:44:08.103017" elapsed="1.815183"/>
</kw>
<kw name="Check_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-19T00:44:09.922149" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:09.921708" elapsed="0.000470"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.922655" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:09.922343" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:09.922725" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:09.922881" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:09.921319" elapsed="0.001587"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.925265" 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-19T00:44:09.925369" 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-19T00:44:09.925114" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:09.927272" level="INFO">${ip_address} = 10.30.171.9</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-19T00:44:09.926929" elapsed="0.000371"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:09.927350" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:09.927502" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:09.926605" elapsed="0.000922"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.931202" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:09.930479" elapsed="0.000830"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:09.934184" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:09.934264" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:09.933884" 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-19T00:44:09.934466" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:09.935956" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:10.267377" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:09.935560" elapsed="0.332066"/>
</kw>
<msg time="2026-04-19T00:44:10.267710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.935043" elapsed="0.332754"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:09.933359" elapsed="0.334554"/>
</kw>
<msg time="2026-04-19T00:44:10.267968" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.932778" elapsed="0.335242"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:09.931861" elapsed="0.336360"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:10.268322" elapsed="0.000055"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:09.929292" elapsed="0.339332"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.271774" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:10.284165" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:10.284425" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:10.284521" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:10.284608" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:10.271575" elapsed="0.013081"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.286773" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:10.286138" elapsed="0.000736"/>
</kw>
<msg time="2026-04-19T00:44:10.287127" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:10.287227" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:10.285233" elapsed="0.002042"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.288808" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:10.287776" elapsed="0.001090"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.291327" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:10.290956" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.291926" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:10.291596" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.292823" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:10.292211" elapsed="0.000676"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:10.290076" elapsed="0.002888"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:10.289217" elapsed="0.003797"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.289160" elapsed="0.003923"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:10.293390" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:10.293242" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.293214" elapsed="0.000270"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:10.293756" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T00:44:10.293627" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.293603" elapsed="0.000271"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:10.294200" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:10.270652" elapsed="0.023893"/>
</kw>
<msg time="2026-04-19T00:44:10.294749" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:10.294846" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:10.268911" elapsed="0.025985"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:10.295276" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:10.296003" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T00:44:10.295749" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.295723" elapsed="0.000516"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:10.296442" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:09.928351" elapsed="0.368339"/>
</kw>
<msg time="2026-04-19T00:44:10.296835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.927684" elapsed="0.369227"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:09.926065" elapsed="0.371033"/>
</kw>
<msg time="2026-04-19T00:44:10.297194" 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-19T00:44:09.925553" elapsed="0.371727"/>
</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-19T00:44:10.300853" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:10.301358" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:10.301667" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:10.297715" elapsed="0.004100"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:09.924475" elapsed="0.377399"/>
</kw>
<msg time="2026-04-19T00:44:10.301929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:09.923988" elapsed="0.378004"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:09.923287" elapsed="0.378808"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:09.923116" elapsed="0.379026"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.304319" 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-19T00:44:10.304419" 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-19T00:44:10.304182" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:10.306330" level="INFO">${ip_address} = 10.30.171.128</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-19T00:44:10.305994" elapsed="0.000363"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:10.306406" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:10.306557" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:10.305656" elapsed="0.000926"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.310129" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:10.309379" elapsed="0.000852"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.313070" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:10.313148" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:10.312791" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.313425" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.314672" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:10.672665" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:10.314354" elapsed="0.358500"/>
</kw>
<msg time="2026-04-19T00:44:10.672931" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.313919" elapsed="0.359092"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:10.312300" elapsed="0.360831"/>
</kw>
<msg time="2026-04-19T00:44:10.673183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.311888" elapsed="0.361346"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:10.310800" elapsed="0.362597"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:10.673491" elapsed="0.000051"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:10.308234" elapsed="0.365543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.676833" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:10.689115" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:10.689275" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:10.689336" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:10.689393" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:10.676637" elapsed="0.012787"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.690692" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:10.690297" elapsed="0.000458"/>
</kw>
<msg time="2026-04-19T00:44:10.690885" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:10.690973" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:10.689743" elapsed="0.001280"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.692550" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:10.691557" elapsed="0.001052"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.695250" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:10.694655" elapsed="0.000687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.699326" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:10.695680" elapsed="0.003690"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.699770" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:10.699528" elapsed="0.000285"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:10.693703" elapsed="0.006164"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:10.692907" elapsed="0.006995"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.692855" elapsed="0.007074"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:10.700164" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:10.700056" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.700021" elapsed="0.000211"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:10.700425" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T00:44:10.700332" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.700315" elapsed="0.000197"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:10.700707" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:10.675715" elapsed="0.025238"/>
</kw>
<msg time="2026-04-19T00:44:10.701116" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:10.701187" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:10.674063" elapsed="0.027160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:10.701481" elapsed="0.000221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:10.702000" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-19T00:44:10.701818" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:10.701799" elapsed="0.000391"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:10.702336" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:10.307298" elapsed="0.395217"/>
</kw>
<msg time="2026-04-19T00:44:10.702620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.306740" elapsed="0.395930"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:10.305131" elapsed="0.397622"/>
</kw>
<msg time="2026-04-19T00:44:10.702794" 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-19T00:44:10.304601" elapsed="0.398240"/>
</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-19T00:44:10.705836" 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-19T00:44:10.706343" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:10.706648" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:10.703159" elapsed="0.003638"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:10.303547" elapsed="0.403308"/>
</kw>
<msg time="2026-04-19T00:44:10.706909" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.303103" elapsed="0.403853"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:10.302397" elapsed="0.404665"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:10.302240" elapsed="0.404869"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.709289" 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-19T00:44:10.709389" 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-19T00:44:10.709153" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:10.711265" level="INFO">${ip_address} = 10.30.171.206</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-19T00:44:10.710912" elapsed="0.000380"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:10.711341" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:10.711492" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:10.710590" elapsed="0.000927"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.715125" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:10.714417" elapsed="0.000807"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:10.718068" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:10.718169" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:10.717781" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.718354" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:10.719532" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:11.035670" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:10.719216" elapsed="0.316683"/>
</kw>
<msg time="2026-04-19T00:44:11.035983" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.718842" elapsed="0.317244"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:10.717287" elapsed="0.318917"/>
</kw>
<msg time="2026-04-19T00:44:11.036258" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.716658" elapsed="0.319655"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:10.715762" elapsed="0.320747"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:11.036615" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:10.713196" elapsed="0.323739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.040210" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:11.052384" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:11.052558" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:11.052626" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:11.052688" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:11.039984" elapsed="0.012738"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.054738" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:11.054012" elapsed="0.000831"/>
</kw>
<msg time="2026-04-19T00:44:11.055088" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:11.055192" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:11.053219" elapsed="0.002026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.056752" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:11.055743" elapsed="0.001071"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.059565" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.058965" elapsed="0.000695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.060573" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.060002" elapsed="0.000665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.061963" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.061009" elapsed="0.001091"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:11.057933" elapsed="0.004308"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:11.057144" elapsed="0.005235"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.057089" elapsed="0.005352"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:11.062873" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:11.062689" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.062646" elapsed="0.000294"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:11.063169" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:44:11.063071" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.063051" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:11.063459" elapsed="0.000024"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:11.039023" elapsed="0.024683"/>
</kw>
<msg time="2026-04-19T00:44:11.063855" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:11.063927" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:11.037255" elapsed="0.026711"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:11.064249" elapsed="0.000229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:11.064785" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:44:11.064599" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.064580" elapsed="0.000364"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:11.065113" elapsed="0.000023"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:10.712249" elapsed="0.353053"/>
</kw>
<msg time="2026-04-19T00:44:11.065405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.711674" elapsed="0.353785"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:10.710043" elapsed="0.355508"/>
</kw>
<msg time="2026-04-19T00:44:11.065594" 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-19T00:44:10.709569" elapsed="0.356072"/>
</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-19T00:44:11.068801" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T00:44:11.069322" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:11.069651" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:11.065952" elapsed="0.003859"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:10.708519" elapsed="0.361356"/>
</kw>
<msg time="2026-04-19T00:44:11.069932" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:10.708070" elapsed="0.361913"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:10.707360" elapsed="0.362734"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:44:10.707202" elapsed="0.362954"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:09.922961" elapsed="1.147240"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:44:09.918531" elapsed="1.151760"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.070460" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T00:44:11.074837" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:11.074439" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.075381" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:11.075063" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:11.075471" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:44:11.075651" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:11.074002" elapsed="0.001676"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.077950" 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-19T00:44:11.078070" 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-19T00:44:11.077814" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:11.080210" level="INFO">${ip_address} = 10.30.171.9</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-19T00:44:11.079735" elapsed="0.000572"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:11.080541" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:44:11.080701" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:11.079329" elapsed="0.001398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.084684" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:11.084303" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.086556" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:11.086636" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:11.086250" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.086822" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.088051" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:11.405841" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:11.087705" elapsed="0.318271"/>
</kw>
<msg time="2026-04-19T00:44:11.406098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.087341" elapsed="0.318858"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:11.085721" elapsed="0.320601"/>
</kw>
<msg time="2026-04-19T00:44:11.406377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.085329" elapsed="0.321123"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:11.084919" elapsed="0.321614"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:11.406623" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:11.083608" elapsed="0.323311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.409815" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:11.422506" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:11.422785" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:11.422892" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:11.422982" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:11.409615" elapsed="0.013458"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.424905" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:11.424300" elapsed="0.000711"/>
</kw>
<msg time="2026-04-19T00:44:11.425253" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:11.425351" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:11.423496" elapsed="0.001905"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.426788" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:11.425778" elapsed="0.001070"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.429352" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.428760" elapsed="0.000687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.430597" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.429790" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.431324" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.430967" elapsed="0.000500"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:11.427830" elapsed="0.003714"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:11.427059" elapsed="0.004536"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.426980" elapsed="0.004650"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:11.431852" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:11.431709" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.431686" elapsed="0.000263"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:11.432169" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T00:44:11.432022" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.432000" elapsed="0.000288"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:11.432491" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:11.409059" elapsed="0.023596"/>
</kw>
<msg time="2026-04-19T00:44:11.432992" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:11.433152" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:11.408151" elapsed="0.025062"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:11.434610" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:11.435631" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T00:44:11.435361" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.435274" elapsed="0.000565"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:11.437242" elapsed="0.000053"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:11.081659" elapsed="0.355883"/>
</kw>
<msg time="2026-04-19T00:44:11.438217" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.080886" elapsed="0.357418"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:11.078725" elapsed="0.359728"/>
</kw>
<msg time="2026-04-19T00:44:11.438516" 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-19T00:44:11.078254" elapsed="0.360328"/>
</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-19T00:44:11.443049" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T00:44:11.443533" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:11.443842" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:11.439011" elapsed="0.004984"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:11.077200" elapsed="0.366978"/>
</kw>
<msg time="2026-04-19T00:44:11.444237" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.076744" elapsed="0.367544"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:11.076053" elapsed="0.368320"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:11.075871" elapsed="0.368549"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.446621" 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-19T00:44:11.446774" 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-19T00:44:11.446485" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:11.448837" level="INFO">${ip_address} = 10.30.171.128</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-19T00:44:11.448388" elapsed="0.000509"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:11.449140" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:44:11.449299" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:11.447973" elapsed="0.001352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.453360" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:11.452955" elapsed="0.000432"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.455234" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:11.455310" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:11.454949" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.455492" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.456670" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:11.760677" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:11.456350" elapsed="0.304486"/>
</kw>
<msg time="2026-04-19T00:44:11.760920" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.455980" elapsed="0.305033"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:11.454466" elapsed="0.306691"/>
</kw>
<msg time="2026-04-19T00:44:11.761210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.453988" elapsed="0.307274"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:11.453606" elapsed="0.307735"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:11.761448" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:11.452271" elapsed="0.309473"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.764510" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:11.777199" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:11.777317" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:11.777360" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:11.777401" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:11.764313" elapsed="0.013111"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.778499" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:11.778217" elapsed="0.000346"/>
</kw>
<msg time="2026-04-19T00:44:11.778660" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:11.778704" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:11.777604" elapsed="0.001122"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.779354" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:11.778895" elapsed="0.000485"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.780554" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.780305" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.780999" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.780751" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.781452" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:11.781212" elapsed="0.000284"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:11.779887" elapsed="0.001663"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:11.779537" elapsed="0.002050"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.779512" elapsed="0.002102"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:11.781774" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:11.781672" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.781654" elapsed="0.000189"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:11.781986" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:44:11.781897" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.781881" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:11.782234" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:11.763762" elapsed="0.018590"/>
</kw>
<msg time="2026-04-19T00:44:11.782613" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:11.782694" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:11.762886" elapsed="0.019849"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:11.783744" elapsed="0.000421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:11.784484" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T00:44:11.784301" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:11.784240" elapsed="0.000391"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:11.785618" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:11.450016" elapsed="0.335808"/>
</kw>
<msg time="2026-04-19T00:44:11.786225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.449482" elapsed="0.336800"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:11.447449" elapsed="0.338921"/>
</kw>
<msg time="2026-04-19T00:44:11.786412" 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-19T00:44:11.446963" elapsed="0.339495"/>
</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-19T00:44:11.789761" 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-19T00:44:11.790252" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:11.790570" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:11.786792" elapsed="0.003926"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:11.445834" elapsed="0.344941"/>
</kw>
<msg time="2026-04-19T00:44:11.790830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.445388" elapsed="0.345492"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:11.444676" elapsed="0.346288"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:11.444518" elapsed="0.346547"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.793252" 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-19T00:44:11.793351" 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-19T00:44:11.793115" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:11.795441" level="INFO">${ip_address} = 10.30.171.206</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-19T00:44:11.794967" elapsed="0.000534"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:11.795721" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:44:11.795878" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:11.794566" elapsed="0.001336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.799800" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:11.799414" elapsed="0.000414"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:11.801620" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:11.801698" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:11.801350" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.801882" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:11.803126" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:12.118807" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:11.802784" elapsed="0.316163"/>
</kw>
<msg time="2026-04-19T00:44:12.119047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.802389" elapsed="0.316749"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:11.800835" elapsed="0.318416"/>
</kw>
<msg time="2026-04-19T00:44:12.119303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.800437" elapsed="0.318917"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:11.800050" elapsed="0.319384"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:12.119533" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:11.798487" elapsed="0.321325"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.122586" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:12.135140" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:12.135389" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:12.135484" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:12.135572" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:12.122374" elapsed="0.013248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.137858" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:12.136797" elapsed="0.001163"/>
</kw>
<msg time="2026-04-19T00:44:12.138318" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:12.138417" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:12.136013" elapsed="0.002453"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.139554" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:12.138894" elapsed="0.000697"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.141142" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.140772" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.141748" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.141416" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.142366" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.142015" elapsed="0.000412"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:12.140217" elapsed="0.002284"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:12.139709" elapsed="0.002841"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.139679" elapsed="0.002908"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:12.142822" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:12.142679" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.142642" elapsed="0.000271"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:12.143134" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T00:44:12.142986" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.142965" elapsed="0.000285"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:12.143452" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:12.121816" elapsed="0.021800"/>
</kw>
<msg time="2026-04-19T00:44:12.143950" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:12.144095" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:12.120933" elapsed="0.023221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:12.145541" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:12.146531" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T00:44:12.146274" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.146188" elapsed="0.000561"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:12.148161" elapsed="0.000052"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:11.796599" elapsed="0.351852"/>
</kw>
<msg time="2026-04-19T00:44:12.148990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.796075" elapsed="0.353025"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:11.794005" elapsed="0.355218"/>
</kw>
<msg time="2026-04-19T00:44:12.149282" 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-19T00:44:11.793531" elapsed="0.355813"/>
</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-19T00:44:12.152813" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T00:44:12.153407" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:12.153717" 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-19T00:44:12.149755" elapsed="0.004109"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:11.792478" elapsed="0.361445"/>
</kw>
<msg time="2026-04-19T00:44:12.154015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.792019" elapsed="0.362067"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:11.791323" elapsed="0.362853"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:44:11.791164" elapsed="0.363060"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:11.075736" elapsed="1.078523"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:44:11.071476" elapsed="1.082843"/>
</kw>
<msg time="2026-04-19T00:44:12.154359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:11.070958" elapsed="1.083447"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:12.154565" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T00:44:08.102590" elapsed="4.052064"/>
</kw>
<kw name="Check_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-19T00:44:12.158104" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:12.157704" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.158595" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:12.158292" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:12.158687" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:44:12.158854" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:12.157329" elapsed="0.001550"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.161148" 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-19T00:44:12.161248" 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-19T00:44:12.160997" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:12.163324" level="INFO">${ip_address} = 10.30.171.9</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-19T00:44:12.162959" elapsed="0.000393"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:12.163403" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:12.163556" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:12.162408" elapsed="0.001173"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.166177" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:12.165435" elapsed="0.000782"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.169300" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:12.169376" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:12.169013" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.169558" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.170739" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:12.481735" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:12.170414" elapsed="0.311543"/>
</kw>
<msg time="2026-04-19T00:44:12.482054" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.170059" elapsed="0.312079"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:12.168525" elapsed="0.313724"/>
</kw>
<msg time="2026-04-19T00:44:12.482334" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.167796" elapsed="0.314608"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:12.166479" elapsed="0.316051"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:12.482629" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:12.164996" elapsed="0.317820"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.486367" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:12.498944" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:12.499252" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T00:44:12.499403" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:12.499550" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:12.486013" elapsed="0.013633"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.501513" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:12.501225" elapsed="0.000334"/>
</kw>
<msg time="2026-04-19T00:44:12.501771" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:12.501922" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:12.500673" elapsed="0.001344"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.503804" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:12.503062" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.505726" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.505473" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.506275" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.506020" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.506702" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.506466" elapsed="0.000279"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:12.505009" elapsed="0.001861"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:12.504090" elapsed="0.002826"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.504013" elapsed="0.002969"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:12.507373" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:12.507160" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.507105" elapsed="0.000430"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:12.507911" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T00:44:12.507703" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.507654" elapsed="0.000535"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:12.509174" elapsed="0.000056"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:12.484153" elapsed="0.025296"/>
</kw>
<msg time="2026-04-19T00:44:12.509689" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:12.509734" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:12.483067" elapsed="0.026691"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:12.509920" elapsed="0.000223"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:12.510318" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:44:12.510208" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.510191" elapsed="0.000210"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:12.510543" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:12.164294" elapsed="0.346364"/>
</kw>
<msg time="2026-04-19T00:44:12.510753" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.163738" elapsed="0.347077"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:12.161876" elapsed="0.349174"/>
</kw>
<msg time="2026-04-19T00:44:12.511131" 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-19T00:44:12.161425" elapsed="0.349759"/>
</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-19T00:44:12.514377" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:44:12.514880" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:12.515212" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:12.511475" elapsed="0.003885"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:12.160388" elapsed="0.355159"/>
</kw>
<msg time="2026-04-19T00:44:12.515640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.159932" elapsed="0.355756"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:12.159247" elapsed="0.356653"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:12.159090" elapsed="0.356903"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.518239" 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-19T00:44:12.518339" 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-19T00:44:12.518105" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:12.520226" level="INFO">${ip_address} = 10.30.171.128</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-19T00:44:12.519850" elapsed="0.000403"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:12.520303" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:12.520651" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:12.519531" elapsed="0.001146"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.523283" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:12.522515" elapsed="0.000808"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.526359" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:12.526435" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:12.526088" 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-19T00:44:12.526614" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.527829" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:12.831185" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:12.527512" elapsed="0.303869"/>
</kw>
<msg time="2026-04-19T00:44:12.831500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.527152" elapsed="0.304467"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:12.525584" elapsed="0.306196"/>
</kw>
<msg time="2026-04-19T00:44:12.831921" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.524860" elapsed="0.307228"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:12.523587" elapsed="0.308698"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:12.832429" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:12.522105" elapsed="0.310558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.839949" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:12.852590" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:12.852862" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T00:44:12.853011" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:12.853179" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:12.839467" elapsed="0.013805"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.855296" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:12.854989" elapsed="0.000413"/>
</kw>
<msg time="2026-04-19T00:44:12.855614" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:12.855761" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:12.854431" elapsed="0.001422"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.857598" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:12.856848" elapsed="0.000850"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.859915" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.859618" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.860538" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.860265" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.861080" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:12.860795" elapsed="0.000334"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:12.859089" elapsed="0.002267"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:12.857865" elapsed="0.003540"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.857810" elapsed="0.003662"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:12.861874" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:12.861640" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.861588" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:12.862533" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T00:44:12.862314" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.862263" elapsed="0.000447"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:12.863787" elapsed="0.000061"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:12.836695" elapsed="0.027415"/>
</kw>
<msg time="2026-04-19T00:44:12.864388" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:12.864438" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:12.832974" elapsed="0.031490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:12.864658" elapsed="0.000272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:12.865175" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T00:44:12.865019" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:12.864985" elapsed="0.000282"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:12.865440" elapsed="0.000025"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:12.521388" elapsed="0.344189"/>
</kw>
<msg time="2026-04-19T00:44:12.865680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.520836" elapsed="0.344904"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:12.518993" elapsed="0.347013"/>
</kw>
<msg time="2026-04-19T00:44:12.866110" 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-19T00:44:12.518518" elapsed="0.347644"/>
</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-19T00:44:12.870076" 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-19T00:44:12.870632" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:12.871013" elapsed="0.000145"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:12.866502" elapsed="0.004714"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:12.517473" elapsed="0.353985"/>
</kw>
<msg time="2026-04-19T00:44:12.871565" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.517010" elapsed="0.354607"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:12.516313" elapsed="0.355558"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:12.516156" elapsed="0.355812"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.874557" 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-19T00:44:12.874668" 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-19T00:44:12.874394" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:12.876630" level="INFO">${ip_address} = 10.30.171.206</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-19T00:44:12.876354" elapsed="0.000302"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:12.876705" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:12.876855" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:12.875871" elapsed="0.001008"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.879704" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:12.878959" elapsed="0.000786"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:12.882867" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:12.882958" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:12.882594" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.883158" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:12.884417" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:13.203482" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:12.884093" elapsed="0.319550"/>
</kw>
<msg time="2026-04-19T00:44:13.203731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.883668" elapsed="0.320155"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:12.882101" elapsed="0.321841"/>
</kw>
<msg time="2026-04-19T00:44:13.204071" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.881318" elapsed="0.322829"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:12.880009" elapsed="0.324268"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:13.204379" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:12.878522" elapsed="0.326037"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.208243" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T00:44:13.220669" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:13.221342" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T00:44:13.221692" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:13.222080" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:13.207641" elapsed="0.014668"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.226699" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:13.226008" elapsed="0.000793"/>
</kw>
<msg time="2026-04-19T00:44:13.227371" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:13.227820" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:13.224745" elapsed="0.003258"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.230543" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:13.229422" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.233510" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.232901" elapsed="0.000751"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.234241" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.233872" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.234893" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.234518" elapsed="0.000436"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:13.232265" elapsed="0.002988"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:13.230910" elapsed="0.004413"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.230834" elapsed="0.004574"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:13.235927" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:13.235626" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.235558" elapsed="0.000528"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:13.236448" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T00:44:13.236242" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.236193" elapsed="0.000417"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:13.237573" elapsed="0.000058"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:13.205661" elapsed="0.032192"/>
</kw>
<msg time="2026-04-19T00:44:13.238109" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:13.238156" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:13.204793" elapsed="0.033387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:13.238344" elapsed="0.000235"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:13.238758" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:44:13.238645" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.238627" elapsed="0.000214"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:13.238985" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:12.877800" elapsed="0.361342"/>
</kw>
<msg time="2026-04-19T00:44:13.239238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.877049" elapsed="0.362241"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:12.875345" elapsed="0.364169"/>
</kw>
<msg time="2026-04-19T00:44:13.239595" 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-19T00:44:12.874851" elapsed="0.364790"/>
</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-19T00:44:13.242761" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T00:44:13.243279" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:13.243594" 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-19T00:44:13.239939" elapsed="0.003808"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:12.873662" elapsed="0.370274"/>
</kw>
<msg time="2026-04-19T00:44:13.244045" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:12.873146" elapsed="0.370951"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:12.872326" elapsed="0.371988"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:44:12.872141" elapsed="0.372220"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:12.158940" elapsed="1.085456"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:44:12.154905" elapsed="1.089585"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.254450" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:13.252104" elapsed="0.002374"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T00:44:13.256279" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:13.255864" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.256776" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:13.256469" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:13.256847" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:13.257003" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:13.255470" elapsed="0.001572"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.259650" 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-19T00:44:13.259757" 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-19T00:44:13.259262" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:13.261823" level="INFO">${ip_address} = 10.30.171.9</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-19T00:44:13.261348" elapsed="0.000503"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:13.261903" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:44:13.262084" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:13.261000" elapsed="0.001111"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.266283" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:13.265654" elapsed="0.000677"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.268648" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:13.268726" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:13.268364" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.268912" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.270151" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:13.581230" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:13.269806" elapsed="0.311579"/>
</kw>
<msg time="2026-04-19T00:44:13.581473" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.269441" elapsed="0.312125"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:13.267773" elapsed="0.313909"/>
</kw>
<msg time="2026-04-19T00:44:13.581824" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.267372" elapsed="0.314506"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:13.266784" elapsed="0.315281"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:13.582221" elapsed="0.000090"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:13.264620" elapsed="0.317889"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.584928" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T00:44:13.597449" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:13.597568" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T00:44:13.597615" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:13.597656" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:13.584727" elapsed="0.012951"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.598513" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:13.598230" elapsed="0.000329"/>
</kw>
<msg time="2026-04-19T00:44:13.598652" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:13.598696" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:13.597860" elapsed="0.000859"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.599425" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:13.598902" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.600562" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.600312" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.600999" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.600760" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.601458" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.601211" elapsed="0.000290"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:13.599886" elapsed="0.001667"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:13.599541" elapsed="0.002047"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.599517" elapsed="0.002098"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:13.601772" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:13.601672" elapsed="0.000143"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.601655" elapsed="0.000181"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:13.601974" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:44:13.601887" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.601872" elapsed="0.000202"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:13.602222" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:13.584134" elapsed="0.018247"/>
</kw>
<msg time="2026-04-19T00:44:13.602523" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:13.602634" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:13.582880" elapsed="0.019812"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:13.602942" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:13.603837" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T00:44:13.603612" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.603593" elapsed="0.000426"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:13.604223" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:13.263010" elapsed="0.341457"/>
</kw>
<msg time="2026-04-19T00:44:13.604529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.262273" elapsed="0.342306"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:13.260457" elapsed="0.344248"/>
</kw>
<msg time="2026-04-19T00:44:13.604748" 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-19T00:44:13.259946" elapsed="0.344850"/>
</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-19T00:44:13.608143" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T00:44:13.608624" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:13.608936" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:13.605121" elapsed="0.003987"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:13.258587" elapsed="0.350582"/>
</kw>
<msg time="2026-04-19T00:44:13.609226" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.258132" elapsed="0.351143"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:13.257416" elapsed="0.351945"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:13.257250" elapsed="0.352158"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.611677" 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-19T00:44:13.611778" 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-19T00:44:13.611541" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:13.614530" level="INFO">${ip_address} = 10.30.171.128</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-19T00:44:13.613883" elapsed="0.000685"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:13.614637" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T00:44:13.614848" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:13.613425" elapsed="0.001457"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.618985" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:13.618400" elapsed="0.000644"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.621197" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:13.621273" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:13.620915" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.621455" elapsed="0.000479"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.622821" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:13.936211" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:13.622494" elapsed="0.313943"/>
</kw>
<msg time="2026-04-19T00:44:13.936523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.622127" elapsed="0.314484"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:13.620433" elapsed="0.316291"/>
</kw>
<msg time="2026-04-19T00:44:13.936777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.620011" elapsed="0.316817"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:13.619514" elapsed="0.317465"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:13.937151" elapsed="0.000086"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:13.617420" elapsed="0.320008"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.939836" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T00:44:13.952070" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:13.952214" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T00:44:13.952266" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:13.952313" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:13.939634" elapsed="0.012705"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.953312" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:13.952966" elapsed="0.000399"/>
</kw>
<msg time="2026-04-19T00:44:13.953470" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:13.953518" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:13.952556" elapsed="0.000984"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.954170" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:13.953713" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.955288" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.955037" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.955743" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.955506" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.956191" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:13.955933" elapsed="0.000300"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:13.954621" elapsed="0.001665"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:13.954280" elapsed="0.002042"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.954259" elapsed="0.002088"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:13.956502" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:13.956402" elapsed="0.000143"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.956385" elapsed="0.000182"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:13.956704" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:44:13.956617" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.956602" elapsed="0.000185"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:13.956934" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:13.938984" elapsed="0.018127"/>
</kw>
<msg time="2026-04-19T00:44:13.957250" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:13.957362" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:13.937787" elapsed="0.019634"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:13.957674" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:13.958567" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:44:13.958342" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.958323" elapsed="0.000432"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:13.958938" elapsed="0.000053"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:13.615941" elapsed="0.343271"/>
</kw>
<msg time="2026-04-19T00:44:13.959321" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.615157" elapsed="0.344245"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:13.612639" elapsed="0.346853"/>
</kw>
<msg time="2026-04-19T00:44:13.959537" 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-19T00:44:13.611961" elapsed="0.347623"/>
</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-19T00:44:13.964053" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:13.964728" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:13.965179" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:13.959885" elapsed="0.005505"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:13.610877" elapsed="0.354594"/>
</kw>
<msg time="2026-04-19T00:44:13.965550" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.610429" elapsed="0.355188"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:13.609660" elapsed="0.356077"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:13.609504" elapsed="0.356297"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.968666" 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-19T00:44:13.968767" 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-19T00:44:13.968531" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:13.970729" level="INFO">${ip_address} = 10.30.171.206</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-19T00:44:13.970276" elapsed="0.000480"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:13.970805" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:13.970956" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:13.969939" elapsed="0.001041"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.974773" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:13.974179" elapsed="0.000640"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:13.977148" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:13.977226" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:13.976700" 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-19T00:44:13.977411" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:13.978670" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:14.281458" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:13.978342" elapsed="0.303261"/>
</kw>
<msg time="2026-04-19T00:44:14.281686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.977901" elapsed="0.303872"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:13.976216" elapsed="0.305667"/>
</kw>
<msg time="2026-04-19T00:44:14.281938" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.975797" elapsed="0.306190"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:13.975282" elapsed="0.306871"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:14.282300" elapsed="0.000085"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:13.973183" elapsed="0.309390"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.284952" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T00:44:14.297160" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:14.297274" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T00:44:14.297318" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:14.297358" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.284750" elapsed="0.012630"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.298209" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:14.297908" elapsed="0.000346"/>
</kw>
<msg time="2026-04-19T00:44:14.298346" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:14.298389" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:14.297554" elapsed="0.000857"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.299010" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:14.298577" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.300175" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:14.299908" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.300605" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:14.300370" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.301041" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:14.300793" elapsed="0.000293"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:14.299505" elapsed="0.001635"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:14.299136" elapsed="0.002040"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:14.299114" elapsed="0.002087"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:14.301358" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:14.301256" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:14.301240" elapsed="0.000182"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:14.301562" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:44:14.301473" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:14.301458" elapsed="0.000188"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:14.301791" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:14.284167" elapsed="0.017785"/>
</kw>
<msg time="2026-04-19T00:44:14.302112" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:14.302222" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:14.282931" elapsed="0.019349"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:14.302588" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:14.303455" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T00:44:14.303226" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:14.303206" elapsed="0.000451"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:14.303844" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:13.971691" elapsed="0.332417"/>
</kw>
<msg time="2026-04-19T00:44:14.304169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.971156" elapsed="0.333065"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:13.969424" elapsed="0.334883"/>
</kw>
<msg time="2026-04-19T00:44:14.304349" 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-19T00:44:13.968948" elapsed="0.335447"/>
</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-19T00:44:14.307662" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T00:44:14.308200" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:14.308508" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:14.304693" elapsed="0.003965"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:13.967876" elapsed="0.340841"/>
</kw>
<msg time="2026-04-19T00:44:14.308774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:13.967211" elapsed="0.341613"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:13.966168" elapsed="0.342742"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:44:13.965931" elapsed="0.343026"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:13.257111" elapsed="1.051884"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:44:13.254829" elapsed="1.054242"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:13.254556" elapsed="1.054552"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:13.254537" elapsed="1.054596"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.310442" 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-19T00:44:14.310543" 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-19T00:44:14.310309" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T00:44:14.311776" elapsed="0.000212"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.312972" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:14.312596" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.313480" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:14.313175" elapsed="0.000370"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:14.313594" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:14.313753" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:14.312221" elapsed="0.001557"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:14.314754" level="INFO">${ip_address} = 10.30.171.9</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-19T00:44:14.314482" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:14.314830" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:44:14.314979" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:14.314158" elapsed="0.000846"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.316613" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:14.316245" elapsed="0.000395"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:14.319258" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:14.319555" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:14.318717" elapsed="0.000939"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:14.319947" elapsed="0.000617"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.321835" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:14.625445" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:14.321513" elapsed="0.304069"/>
</kw>
<msg time="2026-04-19T00:44:14.625710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:14.320863" elapsed="0.304951"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:14.317596" elapsed="0.308380"/>
</kw>
<msg time="2026-04-19T00:44:14.626094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:14.317210" elapsed="0.308940"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:14.316817" elapsed="0.309411"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:14.626281" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:14.315845" elapsed="0.310605"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.628395" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T00:44:14.640580" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.627982" elapsed="0.013031"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T00:44:14.627837" elapsed="0.013324"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.642654" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T00:44:14.760172" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.641686" elapsed="0.118767"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T00:44:14.641370" elapsed="0.119175"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.762227" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T00:44:14.808756" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.761184" elapsed="0.047829"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T00:44:14.760768" elapsed="0.048501"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.810686" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T00:44:14.856878" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.809783" elapsed="0.047415"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T00:44:14.809474" elapsed="0.047816"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.858756" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T00:44:14.905672" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.857836" elapsed="0.048081"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T00:44:14.857504" elapsed="0.048498"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.907482" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T00:44:14.954272" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.906571" elapsed="0.048074"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T00:44:14.906245" elapsed="0.048516"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:14.956564" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T00:44:15.001855" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:14.955525" elapsed="0.046670"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T00:44:14.955109" elapsed="0.047194"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.003920" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T00:44:15.049122" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.002952" elapsed="0.046434"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T00:44:15.002558" elapsed="0.046917"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T00:44:14.627695" elapsed="0.421850"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T00:44:14.627352" elapsed="0.422334"/>
</kw>
<msg time="2026-04-19T00:44:15.049926" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:15.050026" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:14.626678" elapsed="0.423442"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:15.050513" elapsed="0.000480"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:15.051505" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T00:44:15.051206" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:15.051153" elapsed="0.000556"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:15.052094" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:14.315284" elapsed="0.737080"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T00:44:14.313974" elapsed="0.738485"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:15.054517" level="INFO">${ip_address} = 10.30.171.128</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-19T00:44:15.053867" elapsed="0.000708"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:15.054682" elapsed="0.000061"/>
</return>
<msg time="2026-04-19T00:44:15.055008" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:15.053125" elapsed="0.001975"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.057804" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:15.057228" elapsed="0.000614"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:15.061569" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:15.061953" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:15.060753" elapsed="0.001370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:15.062555" elapsed="0.000915"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.065424" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:15.371317" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:15.064892" elapsed="0.306673"/>
</kw>
<msg time="2026-04-19T00:44:15.371709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:15.063930" elapsed="0.307890"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:15.059344" elapsed="0.312661"/>
</kw>
<msg time="2026-04-19T00:44:15.372126" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:15.058692" elapsed="0.313486"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:15.058128" elapsed="0.314124"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:15.372304" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:15.056676" elapsed="0.315798"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.374411" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T00:44:15.387119" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.373998" elapsed="0.013252"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T00:44:15.373853" elapsed="0.013443"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.387987" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T00:44:15.497394" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.387570" elapsed="0.110177"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T00:44:15.387406" elapsed="0.110452"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.499500" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T00:44:15.553022" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.498560" elapsed="0.054770"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T00:44:15.498173" elapsed="0.055253"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.554954" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T00:44:15.605489" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.554078" elapsed="0.051663"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T00:44:15.553672" elapsed="0.052156"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.607324" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T00:44:15.660951" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.606427" elapsed="0.054840"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T00:44:15.606084" elapsed="0.055276"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.662850" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T00:44:15.713280" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.661941" elapsed="0.051594"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T00:44:15.661590" elapsed="0.052035"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.715139" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T00:44:15.765605" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.714235" elapsed="0.051698"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T00:44:15.713844" elapsed="0.052249"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.767775" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T00:44:15.821174" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:15.766769" elapsed="0.054714"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T00:44:15.766370" elapsed="0.055217"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T00:44:15.373709" elapsed="0.447955"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T00:44:15.373389" elapsed="0.448427"/>
</kw>
<msg time="2026-04-19T00:44:15.822115" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:15.822219" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:15.372709" elapsed="0.449563"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:15.822699" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:15.823690" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T00:44:15.823401" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:15.823355" elapsed="0.000762"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:15.824493" elapsed="0.000049"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:15.055681" elapsed="0.769079"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T00:44:15.052669" elapsed="0.772187"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:15.826921" level="INFO">${ip_address} = 10.30.171.206</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-19T00:44:15.826299" elapsed="0.000680"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:15.827131" elapsed="0.000064"/>
</return>
<msg time="2026-04-19T00:44:15.827463" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:15.825523" elapsed="0.001994"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.830503" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:15.829909" elapsed="0.000634"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:15.834263" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:15.834651" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:15.833452" elapsed="0.001345"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:15.835252" elapsed="0.001302"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:15.838012" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:16.195778" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:15.837685" elapsed="0.358273"/>
</kw>
<msg time="2026-04-19T00:44:16.196173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:15.837003" elapsed="0.359401"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:15.832015" elapsed="0.364619"/>
</kw>
<msg time="2026-04-19T00:44:16.196760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:15.831398" elapsed="0.365435"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:15.830805" elapsed="0.366142"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:16.197018" elapsed="0.000078"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:15.829375" elapsed="0.367852"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.199233" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T00:44:16.212351" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.198810" elapsed="0.013697"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T00:44:16.198663" elapsed="0.013896"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.213737" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T00:44:16.260908" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.212885" elapsed="0.048415"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T00:44:16.212688" elapsed="0.048718"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.263001" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T00:44:16.308636" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.262072" elapsed="0.046724"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T00:44:16.261657" elapsed="0.047195"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.309910" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T00:44:16.356896" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.309342" elapsed="0.047860"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T00:44:16.309127" elapsed="0.048161"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.358713" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T00:44:16.404652" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.357808" elapsed="0.047110"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T00:44:16.357489" elapsed="0.047524"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.406751" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T00:44:16.452711" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.405693" elapsed="0.047291"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T00:44:16.405286" elapsed="0.047816"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.454223" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T00:44:16.500844" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.453677" elapsed="0.047329"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T00:44:16.453363" elapsed="0.047724"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.501988" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T00:44:16.548946" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.501498" elapsed="0.047669"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T00:44:16.501250" elapsed="0.047993"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T00:44:16.198511" elapsed="0.350782"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T00:44:16.198180" elapsed="0.351243"/>
</kw>
<msg time="2026-04-19T00:44:16.549614" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:16.549662" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:16.197468" elapsed="0.352220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:16.549983" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:16.550784" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T00:44:16.550552" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:16.550510" elapsed="0.000411"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:16.551122" elapsed="0.000025"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:15.828163" elapsed="0.723103"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T00:44:15.825099" elapsed="0.726245"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:14.313831" elapsed="2.237554"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T00:44:14.311319" elapsed="2.240134"/>
</kw>
<msg time="2026-04-19T00:44:16.551507" 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-19T00:44:14.310725" elapsed="2.240853"/>
</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-19T00:44:16.556538" elapsed="0.000440"/>
</kw>
<kw name="Open 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-19T00:44:16.557165" elapsed="0.000935"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:16.558257" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:16.552009" elapsed="0.006404"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T00:44:14.309814" elapsed="2.248660"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T00:44:14.309305" elapsed="2.249241"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T00:44:16.560554" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:16.560146" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.561063" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:16.560743" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:16.561137" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:44:16.561298" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:16.559743" elapsed="0.001580"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.563705" 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-19T00:44:16.563806" 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-19T00:44:16.563543" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:16.565875" level="INFO">${ip_address} = 10.30.171.9</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-19T00:44:16.565379" elapsed="0.000523"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:16.565952" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:44:16.566140" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:16.565049" elapsed="0.001115"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.570160" level="INFO">${odl_connection} = 532</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:16.569507" elapsed="0.000699"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.572688" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:16.572765" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:16.572376" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.572954" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.574229" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:16.882243" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:16.573871" elapsed="0.308609"/>
</kw>
<msg time="2026-04-19T00:44:16.882616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.573500" elapsed="0.309257"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:16.571843" elapsed="0.311081"/>
</kw>
<msg time="2026-04-19T00:44:16.882985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.571438" elapsed="0.311621"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:16.570883" elapsed="0.312363"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:16.883442" elapsed="0.000112"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:16.568463" elapsed="0.315323"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.886890" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T00:44:16.899544" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:16.899809" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T00:44:16.899911" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:16.900001" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:16.886660" elapsed="0.013433"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.902010" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:16.901354" elapsed="0.000794"/>
</kw>
<msg time="2026-04-19T00:44:16.902362" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:16.902460" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:16.900537" elapsed="0.001973"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.903904" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:16.902893" elapsed="0.001069"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.906399" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:16.906017" elapsed="0.000447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.907018" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:16.906681" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.907645" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:16.907312" elapsed="0.000394"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:16.905076" elapsed="0.002704"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:16.904198" elapsed="0.003631"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:16.904142" elapsed="0.003725"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:16.908121" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:16.907948" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:16.907924" elapsed="0.000290"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:16.908411" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T00:44:16.908286" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:16.908265" elapsed="0.000279"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:16.908754" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:16.885947" elapsed="0.023030"/>
</kw>
<msg time="2026-04-19T00:44:16.909203" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:16.909361" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:16.884282" elapsed="0.025160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:16.909793" elapsed="0.000717"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:16.911010" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T00:44:16.910694" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:16.910666" elapsed="0.000629"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:16.911553" elapsed="0.000065"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:16.566878" elapsed="0.345023"/>
</kw>
<msg time="2026-04-19T00:44:16.911992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.566322" elapsed="0.345767"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:16.564501" elapsed="0.347725"/>
</kw>
<msg time="2026-04-19T00:44:16.912290" 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-19T00:44:16.563987" elapsed="0.348371"/>
</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-19T00:44:16.916833" elapsed="0.000453"/>
</kw>
<kw name="Open 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-19T00:44:16.917455" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:16.917792" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:16.912812" elapsed="0.005128"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:16.562892" elapsed="0.355113"/>
</kw>
<msg time="2026-04-19T00:44:16.918141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.562421" elapsed="0.355777"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:16.561701" elapsed="0.356594"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:16.561538" elapsed="0.356812"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.920647" 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-19T00:44:16.920750" 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-19T00:44:16.920480" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:16.922761" level="INFO">${ip_address} = 10.30.171.128</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-19T00:44:16.922299" elapsed="0.000488"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:16.922836" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:16.922986" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:16.921939" elapsed="0.001071"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.926838" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:16.926232" elapsed="0.000649"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:16.929302" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:16.929379" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:16.929013" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.929560" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:16.930766" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:17.249803" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:16.930435" elapsed="0.319634"/>
</kw>
<msg time="2026-04-19T00:44:17.250194" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.930067" elapsed="0.320272"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:16.928520" elapsed="0.321999"/>
</kw>
<msg time="2026-04-19T00:44:17.250713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.928097" elapsed="0.322674"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:16.927339" elapsed="0.323603"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:17.251152" elapsed="0.000117"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:16.925240" elapsed="0.326276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.254553" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T00:44:17.266147" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:17.266410" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T00:44:17.266509" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:17.266598" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:17.254323" elapsed="0.012326"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.268515" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:17.267842" elapsed="0.000816"/>
</kw>
<msg time="2026-04-19T00:44:17.268881" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:17.268979" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:17.267080" elapsed="0.001977"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.270460" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:17.269439" elapsed="0.001079"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.273392" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:17.272434" elapsed="0.001024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.274015" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:17.273672" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.274643" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:17.274308" elapsed="0.000396"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:17.271518" elapsed="0.003260"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:17.270712" elapsed="0.004114"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.270661" elapsed="0.004204"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:17.275112" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:17.274946" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.274922" elapsed="0.000282"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:17.275401" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T00:44:17.275275" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.275254" elapsed="0.000263"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:17.275720" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:17.253606" elapsed="0.022336"/>
</kw>
<msg time="2026-04-19T00:44:17.276164" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:17.276320" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:17.252019" elapsed="0.024381"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:17.276761" elapsed="0.000684"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:17.277945" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T00:44:17.277631" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.277603" elapsed="0.000624"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:17.278480" elapsed="0.000065"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:16.923728" elapsed="0.355099"/>
</kw>
<msg time="2026-04-19T00:44:17.278916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.923197" elapsed="0.355789"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:16.921414" elapsed="0.357772"/>
</kw>
<msg time="2026-04-19T00:44:17.279247" 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-19T00:44:16.920930" elapsed="0.358383"/>
</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-19T00:44:17.283676" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:17.284365" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:17.284844" 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-19T00:44:17.279744" elapsed="0.005399"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:16.919817" elapsed="0.365390"/>
</kw>
<msg time="2026-04-19T00:44:17.285264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:16.919366" elapsed="0.365950"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:16.918643" elapsed="0.366767"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:16.918476" elapsed="0.366984"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.287702" 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-19T00:44:17.287803" 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-19T00:44:17.287550" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:17.289901" level="INFO">${ip_address} = 10.30.171.206</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-19T00:44:17.289435" elapsed="0.000492"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:44:17.289975" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:17.290150" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:17.288997" elapsed="0.001178"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.294091" level="INFO">${odl_connection} = 536</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:17.293457" elapsed="0.000681"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.296586" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:17.296691" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:17.296292" 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-19T00:44:17.296877" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.298087" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:17.609873" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:17.297743" elapsed="0.312512"/>
</kw>
<msg time="2026-04-19T00:44:17.610377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:17.297383" elapsed="0.313133"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:17.295778" elapsed="0.314902"/>
</kw>
<msg time="2026-04-19T00:44:17.610739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:17.295134" elapsed="0.315657"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T00:44:17.294598" elapsed="0.316362"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T00:44:17.611156" elapsed="0.000117"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T00:44:17.292409" elapsed="0.319109"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.614529" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T00:44:17.627158" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:17.627428" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T00:44:17.627527" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T00:44:17.627616" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:44:17.614299" elapsed="0.013366"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.629556" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T00:44:17.628883" elapsed="0.000775"/>
</kw>
<msg time="2026-04-19T00:44:17.629864" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T00:44:17.629962" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:17.628095" elapsed="0.001916"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.631435" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:17.630427" elapsed="0.001067"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.633694" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:17.633346" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.634320" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:17.633968" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.635241" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:17.634582" elapsed="0.000722"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T00:44:17.632489" elapsed="0.002890"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:17.631687" elapsed="0.003741"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.631635" elapsed="0.003831"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T00:44:17.635688" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:17.635546" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.635521" elapsed="0.000258"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:17.635975" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T00:44:17.635850" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.635829" elapsed="0.000289"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:17.636323" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T00:44:17.613592" elapsed="0.022954"/>
</kw>
<msg time="2026-04-19T00:44:17.636739" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:44:17.636911" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:44:17.612017" elapsed="0.024974"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:17.637371" elapsed="0.000693"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T00:44:17.638564" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T00:44:17.638251" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.638224" elapsed="0.000596"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:17.639097" elapsed="0.000068"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T00:44:17.290856" elapsed="0.348585"/>
</kw>
<msg time="2026-04-19T00:44:17.639579" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:17.290331" elapsed="0.349321"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T00:44:17.288458" elapsed="0.351315"/>
</kw>
<msg time="2026-04-19T00:44:17.639832" 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-19T00:44:17.287981" elapsed="0.351914"/>
</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-19T00:44:17.644265" elapsed="0.000431"/>
</kw>
<kw name="Open 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-19T00:44:17.644958" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:17.645356" elapsed="0.000165"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:17.640341" elapsed="0.005232"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T00:44:17.286918" elapsed="0.358715"/>
</kw>
<msg time="2026-04-19T00:44:17.645689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:17.286474" elapsed="0.359265"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T00:44:17.285752" elapsed="0.360074"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:44:17.285585" elapsed="0.360290"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:16.561387" elapsed="1.084532"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T00:44:16.559108" elapsed="1.086886"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:16.558629" elapsed="1.087474"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:16.558611" elapsed="1.087525"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T00:44:13.247946" elapsed="4.398249"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:44:08.101893" elapsed="9.544445"/>
</test>
<test id="s1-s5-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.659997" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:17.659585" elapsed="0.000454"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.660574" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:17.660213" elapsed="0.000387"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T00:44:17.661123" level="INFO">${epoch} = 1776559457.66101</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T00:44:17.660765" elapsed="0.000388"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.661716" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:17.661319" elapsed="0.000423"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.662294" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:44:17.661909" elapsed="0.000412"/>
</kw>
<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-19T00:44:17.663892" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:17.663515" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.664406" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:17.664097" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:17.664476" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:17.664632" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:17.663146" elapsed="0.001511"/>
</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-19T00:44:17.665768" level="INFO">${member_ip} = 10.30.171.9</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-19T00:44:17.665494" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.666630" 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-19T00:44:17.666730" 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-19T00:44:17.666466" elapsed="0.000290"/>
</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-19T00:44:17.669743" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:17.669446" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:17.669425" elapsed="0.000398"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.670121" 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-19T00:44:17.670221" 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-19T00:44:17.669973" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.670867" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:17.670399" elapsed="0.000516"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.671529" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:17.671095" elapsed="0.000461"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:17.672764" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:17.672908" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:17.672227" elapsed="0.000705"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:17.673138" elapsed="0.000668"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.676224" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:17.993906" 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 Sun Apr 19 00:44:08 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:44:17.675623" elapsed="0.318617"/>
</kw>
<msg time="2026-04-19T00:44:17.994401" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:17.674055" elapsed="0.320557"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:17.671774" elapsed="0.323168"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:17.995768" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log'.</msg>
<msg time="2026-04-19T00:44:18.019183" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:18.019367" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:18.019428" 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-19T00:44:17.995348" elapsed="0.024112"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.019709" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.020931" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.020382" elapsed="0.000610"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.021400" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:18.021167" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.021112" elapsed="0.000404"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:18.021745" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T00:44:18.021595" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.021574" elapsed="0.000290"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.021912" 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-19T00:44:18.037484" elapsed="0.000541"/>
</kw>
<kw name="Open 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-19T00:44:18.038214" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.038546" 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-19T00:44:18.022449" elapsed="0.016248"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:44:17.668875" elapsed="0.369917"/>
</kw>
<msg time="2026-04-19T00:44:18.038850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:17.667968" elapsed="0.370935"/>
</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-19T00:44:17.667443" elapsed="0.371540"/>
</kw>
<msg time="2026-04-19T00:44:18.039027" 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-19T00:44:17.666915" elapsed="0.372298"/>
</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-19T00:44:18.042511" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T00:44:18.042992" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.043312" 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-19T00:44:18.039512" elapsed="0.003947"/>
</kw>
<msg time="2026-04-19T00:44:18.043552" 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-19T00:44:17.666010" elapsed="0.377567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.044007" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.043759" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:44:18.044141" 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-19T00:44:17.665086" elapsed="0.379182"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:17.664887" elapsed="0.379421"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:18.045361" level="INFO">${member_ip} = 10.30.171.128</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-19T00:44:18.045036" elapsed="0.000350"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.046291" 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-19T00:44:18.046443" 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-19T00:44:18.046139" elapsed="0.000331"/>
</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-19T00:44:18.049191" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:18.048887" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.048868" elapsed="0.000405"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.049555" 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-19T00:44:18.049677" 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-19T00:44:18.049424" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.050359" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.049869" elapsed="0.000540"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.051026" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:18.050568" elapsed="0.000499"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.052277" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:18.052401" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:18.051720" elapsed="0.000706"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:18.052612" elapsed="0.000838"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.055579" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:18.426628" 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 Sun Apr 19 00:44:09 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:44:18.054962" elapsed="0.371905"/>
</kw>
<msg time="2026-04-19T00:44:18.427005" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:18.053681" elapsed="0.373531"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:18.051288" elapsed="0.376104"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.427950" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log'.</msg>
<msg time="2026-04-19T00:44:18.450745" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:18.450993" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:18.451134" 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-19T00:44:18.427663" elapsed="0.023525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.451551" elapsed="0.000470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.453180" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.452471" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.453746" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:18.453449" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.453397" elapsed="0.000505"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:18.454295" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T00:44:18.454020" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.453987" elapsed="0.000549"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.454741" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:18.470400" elapsed="0.000511"/>
</kw>
<kw name="Open 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-19T00:44:18.471126" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.471441" 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-19T00:44:18.455374" elapsed="0.016216"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:44:18.048347" elapsed="0.423335"/>
</kw>
<msg time="2026-04-19T00:44:18.471734" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:18.047726" elapsed="0.424060"/>
</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-19T00:44:18.047167" elapsed="0.424700"/>
</kw>
<msg time="2026-04-19T00:44:18.471908" 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-19T00:44:18.046632" elapsed="0.425322"/>
</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-19T00:44:18.475097" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:18.475591" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.475879" 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-19T00:44:18.472268" elapsed="0.003757"/>
</kw>
<msg time="2026-04-19T00:44:18.476135" 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-19T00:44:18.045634" elapsed="0.430527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.476585" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.476342" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:44:18.476668" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:44:18.044616" elapsed="0.432178"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:18.044423" elapsed="0.432408"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:18.478045" level="INFO">${member_ip} = 10.30.171.206</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-19T00:44:18.477768" elapsed="0.000334"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.478862" 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-19T00:44:18.478961" 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-19T00:44:18.478726" elapsed="0.000262"/>
</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-19T00:44:18.483732" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:18.483457" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.483437" elapsed="0.000376"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.484106" 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-19T00:44:18.484208" 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-19T00:44:18.483959" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.484853" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.484386" elapsed="0.000555"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.485553" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:44:18.485118" elapsed="0.000461"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.486804" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:44:18.486926" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:44:18.486289" elapsed="0.000662"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:18.487152" elapsed="0.000739"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.490043" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:44:18.801611" 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 Sun Apr 19 00:43:19 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:44:18.489464" elapsed="0.312410"/>
</kw>
<msg time="2026-04-19T00:44:18.802015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:18.488151" elapsed="0.314073"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:44:18.485795" elapsed="0.316620"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:44:18.802980" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776559457.66101.log'.</msg>
<msg time="2026-04-19T00:44:18.826254" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T00:44:18.826503" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:44:18.826600" 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-19T00:44:18.802689" elapsed="0.023964"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.827015" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.828652" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.827951" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.829274" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:18.828919" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.828868" elapsed="0.000569"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:44:18.829795" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T00:44:18.829558" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:18.829524" elapsed="0.000456"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.830089" 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-19T00:44:18.846186" elapsed="0.000542"/>
</kw>
<kw name="Open 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-19T00:44:18.846927" elapsed="0.000377"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.847458" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:18.830842" elapsed="0.016773"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:44:18.482887" elapsed="0.364820"/>
</kw>
<msg time="2026-04-19T00:44:18.847761" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:18.482310" elapsed="0.365504"/>
</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-19T00:44:18.481750" elapsed="0.366143"/>
</kw>
<msg time="2026-04-19T00:44:18.848004" 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-19T00:44:18.479159" elapsed="0.368909"/>
</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-19T00:44:18.851192" 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-19T00:44:18.851696" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:44:18.851997" elapsed="0.000341"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:44:18.848384" elapsed="0.004008"/>
</kw>
<msg time="2026-04-19T00:44:18.852486" 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-19T00:44:18.478324" elapsed="0.374187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.852983" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.852722" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:44:18.853111" 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-19T00:44:18.477361" elapsed="0.375882"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:44:18.476928" elapsed="0.376353"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:44:17.664720" elapsed="1.188597"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T00:44:17.662599" elapsed="1.190780"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.865846" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:18.865444" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.866423" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:18.866039" elapsed="0.000411"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:18.866496" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:18.866654" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:18.865009" elapsed="0.001671"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.868311" 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-19T00:44:18.867986" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:44:18.868384" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:18.868534" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:18.867624" elapsed="0.000935"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.876675" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.876384" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:18.877177" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:18.876879" elapsed="0.000343"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:44:18.882745" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:44:18.879458" elapsed="0.005171">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:18.877292" elapsed="0.007429">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.884913" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:18.884755" elapsed="0.000281"/>
</branch>
<status status="FAIL" start="2026-04-19T00:44:18.877271" elapsed="0.007819">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.885646" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.885786" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:18.885747" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:18.885729" elapsed="0.000120"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.886006" elapsed="0.000026"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.886100" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:44:18.871735" elapsed="0.014480">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.886289" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:44:18.868769" elapsed="0.017622">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.886620" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.886752" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:18.886714" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:18.886696" elapsed="0.000118"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.887014" elapsed="0.000029"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.887261" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:44:18.887330" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:44:18.867210" elapsed="0.020226">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:44:18.887559" elapsed="0.000018"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:44:18.887518" elapsed="0.000085"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:18.887500" elapsed="0.000126"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.887771" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T00:44:18.866945" elapsed="0.020900">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:44:18.866746" elapsed="0.021184">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:44:18.864596" elapsed="0.023442">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:18.864275" elapsed="0.023842">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T00:44:18.864256" elapsed="0.023938">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:44:18.888477" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:18.888273" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:18.888255" elapsed="0.000300"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:44:18.888825" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:18.888610" elapsed="0.000273"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:18.888593" elapsed="0.000313"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:44:18.863814" elapsed="0.025174">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:28.907228" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:28.906718" elapsed="0.000544"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:28.907764" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:28.907435" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:28.907843" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:44:28.908016" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:28.906261" elapsed="0.001799"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:28.909647" 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-19T00:44:28.909333" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:44:28.909724" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:44:28.909876" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:28.908938" elapsed="0.000964"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:28.917853" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:28.917584" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:28.918345" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:28.918075" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:44:29.000222" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:44:29.000410" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T00:44:29.000744" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:44:28.920654" elapsed="0.080951">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:28.918496" elapsed="0.083439">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.002449" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:29.002019" elapsed="0.000582"/>
</branch>
<status status="FAIL" start="2026-04-19T00:44:28.918474" elapsed="0.084180">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.003918" elapsed="0.000046"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:29.004159" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:29.004101" elapsed="0.000121"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:29.004071" elapsed="0.000182"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.004463" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:44:29.004565" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:44:28.912769" elapsed="0.091956">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:29.004827" elapsed="0.000023"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:44:28.910142" elapsed="0.094826">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.005330" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:44:29.005514" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:29.005463" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:29.005438" elapsed="0.000165"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.005879" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.006216" elapsed="0.000040"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:44:29.006321" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:44:28.908547" elapsed="0.097918">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:44:29.006634" elapsed="0.000023"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:44:29.006576" elapsed="0.000115"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:29.006552" elapsed="0.000168"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.006920" elapsed="0.000030"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T00:44:28.908314" elapsed="0.098707">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:44:28.908121" elapsed="0.099007">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:44:28.905795" elapsed="0.101500">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:28.905421" elapsed="0.101958">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T00:44:28.905389" elapsed="0.102033">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:44:29.007793" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:29.007513" elapsed="0.000356"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:29.007489" elapsed="0.000412"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:44:29.008345" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:29.008019" elapsed="0.000441"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:29.007953" elapsed="0.000548"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:44:28.904866" elapsed="0.103757">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:39.026904" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:39.026435" elapsed="0.000501"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:39.027443" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:39.027129" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:39.027519" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:44:39.027686" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:39.026011" elapsed="0.001700"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:39.029294" 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-19T00:44:39.028976" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:44:39.029368" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:39.029516" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:39.028630" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:39.037192" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:39.036902" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:39.037645" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:39.037396" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:44:39.063762" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:44:39.063868" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T00:44:39.064125" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:44:39.039936" elapsed="0.024971">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:39.037756" elapsed="0.027402">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.065590" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:39.065236" elapsed="0.000500"/>
</branch>
<status status="FAIL" start="2026-04-19T00:44:39.037738" elapsed="0.028051">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.067138" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:39.067448" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:39.067363" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:39.067324" elapsed="0.000268"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.067915" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:44:39.068103" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:44:39.032305" elapsed="0.036043">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:39.068509" elapsed="0.000035"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:44:39.029754" elapsed="0.038973">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.069271" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:44:39.069563" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:39.069480" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:39.069443" elapsed="0.000262"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.070188" elapsed="0.000053"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.070688" elapsed="0.000054"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:44:39.070840" elapsed="0.000034"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:44:39.028249" elapsed="0.042891">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:44:39.071404" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:44:39.071323" elapsed="0.000168"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:39.071284" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.071861" elapsed="0.000046"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T00:44:39.027953" elapsed="0.044061">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:44:39.027767" elapsed="0.044323">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:44:39.025597" elapsed="0.046596">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:39.025254" elapsed="0.046998">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T00:44:39.025230" elapsed="0.047053">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:44:39.072548" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:39.072349" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:39.072332" elapsed="0.000294"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:44:39.072887" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:39.072678" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:44:39.072663" elapsed="0.000303"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:44:39.024731" elapsed="0.048340">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.091590" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:44:49.091110" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.092125" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:44:49.091795" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:44:49.092202" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:44:49.092371" level="INFO">${index_list} = [1, 2, 3]</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-19T00:44:49.090685" elapsed="0.001711"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.093920" 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-19T00:44:49.093620" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:44:49.093993" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:49.094158" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:49.093271" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.101779" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.101519" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.102322" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.102072" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:44:49.362889" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:44:49.363131" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:44:49 GMT', 'Expires': 'Sat, 18 Apr 2026 23:44:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559489,"status":200} 
 </msg>
<msg time="2026-04-19T00:44:49.363437" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:44:49.104567" elapsed="0.258933"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.102439" elapsed="0.261175"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.364164" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.363710" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.102417" elapsed="0.262009"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.371703" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559489,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.367264" elapsed="0.004584"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.366675" elapsed="0.005333"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.366632" elapsed="0.005441"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.376534" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.372514" elapsed="0.004119"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.372159" elapsed="0.004580"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.372134" elapsed="0.004632"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.377513" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.376949" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.377941" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.377676" elapsed="0.000455"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.378896" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.378328" elapsed="0.000648"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.378159" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.377657" elapsed="0.001506"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.380206" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.379325" elapsed="0.000920"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.380590" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.380322" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.381538" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.380953" elapsed="0.000665"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.380788" elapsed="0.000978"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.380303" elapsed="0.001487"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:49.381947" elapsed="0.000760"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:44:49.383740" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.382877" elapsed="0.000892"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.383926" elapsed="0.003121"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:44:49.365645" elapsed="0.021469"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:49.387297" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:49.387183" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.387166" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:44:49.390343" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:44:49.387513" elapsed="0.002860"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:44:49.390425" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:44:49.390590" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:44:49.096906" elapsed="0.293711"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:44:49.390674" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:44:49.390822" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:44:49.094394" elapsed="0.296453"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.391714" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.391437" elapsed="0.000326"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.392833" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.392433" elapsed="0.000429"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:44:49.392911" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:49.393087" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:44:49.391974" elapsed="0.001184"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.393549" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.393321" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.393947" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.393734" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:44:49.394021" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:44:49.394188" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:44:49.391082" elapsed="0.003131"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:44:49.394390" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:49.394281" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.394264" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.402083" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.401811" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.402533" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.402289" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:44:49.410440" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:44:49.410521" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:44:49 GMT', 'Expires': 'Sat, 18 Apr 2026 23:44:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559489,"status":200} 
 </msg>
<msg time="2026-04-19T00:44:49.410638" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:44:49.404924" elapsed="0.005741"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.402645" elapsed="0.008065"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.410892" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.410736" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.402626" elapsed="0.008351"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.414896" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559489,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.412256" elapsed="0.002735"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.411993" elapsed="0.003144"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.411974" elapsed="0.003191"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.419086" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.415463" elapsed="0.003757"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.415222" elapsed="0.004154"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.415206" elapsed="0.004209"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.420487" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.419667" elapsed="0.000860"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.421009" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.420629" elapsed="0.000654"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.422473" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.421564" elapsed="0.001026"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.421321" elapsed="0.001484"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.420603" elapsed="0.002236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.423956" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.423167" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.424480" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.424122" elapsed="0.000530"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.425419" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.424840" elapsed="0.000658"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.424678" elapsed="0.000984"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.424094" elapsed="0.001598"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:49.425894" elapsed="0.000703"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:44:49.427598" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.426765" elapsed="0.000860"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.427795" elapsed="0.003020"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:44:49.411521" elapsed="0.019364"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:49.431137" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:49.430957" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.430938" elapsed="0.000268"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:44:49.434095" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:44:49.431353" elapsed="0.002771"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:44:49.434176" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:44:49.434355" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:44:49.397314" elapsed="0.037080"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:44:49.434470" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:49.434630" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:44:49.394658" elapsed="0.039999"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.435628" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.435367" elapsed="0.000314"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.436683" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.436268" elapsed="0.000443"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:44:49.436760" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:44:49.436918" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:44:49.435910" elapsed="0.001034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.437338" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.437112" elapsed="0.000287"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.437768" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.437556" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:44:49.437841" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:44:49.437990" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:44:49.434876" elapsed="0.003138"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:44:49.438073" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:44:49.438223" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:44:49.092874" elapsed="0.345374"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:44:49.438430" elapsed="0.000034"/>
</continue>
<status status="PASS" start="2026-04-19T00:44:49.438317" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.438300" elapsed="0.000221"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.438670" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:44:49.092642" elapsed="0.346083"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.440402" level="INFO">${session} = ClusterManagement__session_2</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-19T00:44:49.440103" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:44:49.440481" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:49.440648" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:49.439744" elapsed="0.000937"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.448242" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.447975" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.448694" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.448451" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:44:49.760175" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:44:49.760377" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:44:49 GMT', 'Expires': 'Sat, 18 Apr 2026 23:44:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559489,"status":200} 
 </msg>
<msg time="2026-04-19T00:44:49.760668" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:44:49.450936" elapsed="0.309794"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.448803" elapsed="0.312039"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.761360" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.760908" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.448785" elapsed="0.312768"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.771020" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559489,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.764457" elapsed="0.006741"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.763778" elapsed="0.007586"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.763723" elapsed="0.007683"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.776080" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.771872" elapsed="0.004349"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.771496" elapsed="0.004946"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.771470" elapsed="0.005006"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.777250" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.776674" elapsed="0.000604"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.777607" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.777348" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.778579" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.777970" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.777806" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.777330" elapsed="0.001500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.779521" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.778990" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.779877" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.779618" elapsed="0.000479"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.780860" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.780291" elapsed="0.000651"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.780125" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.779600" elapsed="0.001532"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:49.781297" elapsed="0.000670"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:44:49.782958" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.782154" elapsed="0.000832"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.783211" elapsed="0.003088"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:44:49.762732" elapsed="0.023640"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:49.786573" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:49.786452" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.786429" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:44:49.789649" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:44:49.786793" elapsed="0.002886"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:44:49.789733" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:44:49.789901" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:44:49.443417" elapsed="0.346510"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:44:49.789985" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:44:49.790153" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:44:49.440901" elapsed="0.349279"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.791204" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.790793" elapsed="0.000462"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.792270" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.791825" elapsed="0.000533"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:44:49.792412" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:49.792576" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:44:49.791468" elapsed="0.001135"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.792987" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.792758" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.793410" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.793196" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:44:49.793484" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:49.793635" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:44:49.790421" elapsed="0.003238"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:44:49.793845" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:49.793732" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.793714" elapsed="0.000196"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.801865" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.801589" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.802326" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.802081" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:44:49.813325" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:44:49.813440" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:44:49 GMT', 'Expires': 'Sat, 18 Apr 2026 23:44:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559489,"status":200} 
 </msg>
<msg time="2026-04-19T00:44:49.813607" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:44:49.804658" elapsed="0.008987"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.802438" elapsed="0.011273"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.813974" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.813750" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.802419" elapsed="0.011738"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.820333" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559489,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.815926" elapsed="0.004576"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.815565" elapsed="0.005107"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.815538" elapsed="0.005175"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.824995" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.821209" elapsed="0.003895"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.820809" elapsed="0.004400"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.820783" elapsed="0.004453"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.825956" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.825418" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.826402" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.826075" elapsed="0.000502"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.827363" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.826773" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.826603" elapsed="0.000988"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.826056" elapsed="0.001559"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.828329" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.827778" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.828686" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:44:49.828427" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.829631" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:44:49.829064" elapsed="0.000648"/>
</kw>
<status status="PASS" start="2026-04-19T00:44:49.828884" elapsed="0.000973"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.828409" elapsed="0.001472"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:44:49.830055" elapsed="0.000659"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:44:49.831709" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.830881" elapsed="0.000856"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.831894" elapsed="0.003371"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:44:49.814898" elapsed="0.020439"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:44:49.835526" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:44:49.835410" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.835391" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:44:49.838569" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:44:49.835746" elapsed="0.002852"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:44:49.838651" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:44:49.838817" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:44:49.797000" elapsed="0.041843"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:44:49.838901" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:44:49.839180" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:44:49.794135" elapsed="0.045074"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.840097" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559489,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.839804" elapsed="0.000344"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.841131" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:44:49.840710" elapsed="0.000450"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:44:49.841210" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:44:49.841371" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559489, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:44:49.840358" elapsed="0.001082"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.841825" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.841599" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:44:49.842238" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:44:49.842008" elapsed="0.000255"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:44:49.842312" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:44:49.842463" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:44:49.839437" elapsed="0.003051"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:44:49.842532" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:44:49.842678" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:44:49.439338" elapsed="0.403365"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:44:49.842883" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T00:44:49.842772" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:44:49.842755" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:44:49.843171" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:44:49.439104" elapsed="0.404124"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.844678" level="INFO">${session} = ClusterManagement__session_3</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-19T00:44:49.844379" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:44:49.844753" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:44:49.844900" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:44:49.843987" elapsed="0.000938"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.852690" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.852433" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:44:49.853152" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:44:49.852893" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:46:54.961182" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:44:49.855432" elapsed="125.109765">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:49.853265" elapsed="125.112153">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.966141" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:46:54.965505" elapsed="0.000802"/>
</branch>
<status status="FAIL" start="2026-04-19T00:44:49.853245" elapsed="125.113118">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.967795" elapsed="0.000069"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:46:54.968190" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:46:54.968093" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:46:54.968015" elapsed="0.000321"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.968732" elapsed="0.000052"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:46:54.968897" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:44:49.847898" elapsed="125.121289">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:46:54.969353" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:44:49.845151" elapsed="125.124363">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.969837" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:46:54.969972" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:46:54.969933" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:46:54.969915" elapsed="0.000135"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.970256" elapsed="0.000026"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.970483" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:46:54.970553" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:44:49.843608" elapsed="125.127049">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:46:54.970789" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:46:54.970749" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:46:54.970731" elapsed="0.000122"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.971003" elapsed="0.000021"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:44:49.843376" elapsed="125.127715">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:44:49.092453" elapsed="125.878707">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:44:49.090259" elapsed="125.881009">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:44:49.089892" elapsed="125.881437">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:44:49.089868" elapsed="125.881493">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:46:54.971651" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:46:54.971429" elapsed="0.000278"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:46:54.971412" elapsed="0.000318"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:46:54.972060" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:46:54.971785" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:46:54.971769" elapsed="0.000380"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:44:49.089366" elapsed="125.882867">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:47:04.991526" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:47:04.990911" elapsed="0.000656"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:47:04.992276" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:47:04.991799" elapsed="0.000512"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:47:04.992375" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T00:47:04.992612" level="INFO">${index_list} = [1, 2, 3]</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-19T00:47:04.990328" elapsed="0.002322"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:04.994851" 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-19T00:47:04.994431" elapsed="0.000461"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:47:04.994964" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T00:47:04.995199" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:47:04.993918" elapsed="0.001318"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.005378" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.005067" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.005912" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.005603" elapsed="0.000356"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:47:05.017571" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:47:05.017921" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:47:05 GMT', 'Expires': 'Sat, 18 Apr 2026 23:47:05 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559625,"status":200} 
 </msg>
<msg time="2026-04-19T00:47:05.018237" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:47:05.008289" elapsed="0.010009"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.006056" elapsed="0.012367"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.018934" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.018495" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.006016" elapsed="0.013191"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.026065" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559625,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.021873" elapsed="0.004340"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.021447" elapsed="0.004933"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.021401" elapsed="0.005020"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.031004" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.026870" elapsed="0.004312"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.026508" elapsed="0.004835"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.026482" elapsed="0.004900"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.032624" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.031651" elapsed="0.001014"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.033171" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.032770" elapsed="0.000645"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.034551" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.033684" elapsed="0.000980"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.033452" elapsed="0.001427"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.032743" elapsed="0.002161"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.036387" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.035833" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.036742" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.036485" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.037693" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.037125" elapsed="0.000663"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.036946" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.036467" elapsed="0.001534"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:47:05.038173" elapsed="0.000730"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:47:05.039935" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.039108" elapsed="0.001003"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.040276" elapsed="0.003061"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:47:05.020444" elapsed="0.022965"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:47:05.043606" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:47:05.043482" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.043463" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:47:05.046671" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:47:05.043825" elapsed="0.002876"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:47:05.046755" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T00:47:05.046928" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:47:04.999282" elapsed="0.047672"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:47:05.047014" elapsed="0.000055"/>
</return>
<msg time="2026-04-19T00:47:05.047200" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:47:04.995650" elapsed="0.051576"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.048154" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.047823" elapsed="0.000381"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.049198" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.048779" elapsed="0.000448"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:47:05.049278" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:47:05.049437" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:47:05.048424" elapsed="0.001040"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.049884" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.049620" elapsed="0.000291"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.050482" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.050083" elapsed="0.000426"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:47:05.050558" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:47:05.050708" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:47:05.047459" elapsed="0.003273"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:47:05.050911" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:47:05.050800" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.050782" elapsed="0.000194"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.058570" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.058318" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.059018" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.058773" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:47:05.067364" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:47:05.067487" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:47:05 GMT', 'Expires': 'Sat, 18 Apr 2026 23:47:05 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559625,"status":200} 
 </msg>
<msg time="2026-04-19T00:47:05.067648" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:47:05.061319" elapsed="0.006367"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.059184" elapsed="0.008562"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.067997" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.067783" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.059164" elapsed="0.008979"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.073565" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559625,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.069809" elapsed="0.003892"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.069445" elapsed="0.004447"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.069418" elapsed="0.004512"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.077209" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.074371" elapsed="0.002930"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.074011" elapsed="0.003396"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.073987" elapsed="0.003447"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.078158" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.077598" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.078512" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.078255" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.079476" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.078875" elapsed="0.000680"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.078711" elapsed="0.000990"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.078236" elapsed="0.001489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.080472" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.079886" elapsed="0.000613"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.080855" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.080567" elapsed="0.000479"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.081816" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.081236" elapsed="0.000667"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.081074" elapsed="0.000988"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.080549" elapsed="0.001539"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:47:05.082242" elapsed="0.000647"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:47:05.083854" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.083082" elapsed="0.000798"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.084089" elapsed="0.003124"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:47:05.068835" elapsed="0.018475"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:47:05.087492" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:47:05.087382" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.087363" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:47:05.090496" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:47:05.087704" elapsed="0.002820"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:47:05.090577" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:47:05.090734" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:47:05.053763" elapsed="0.036997"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:47:05.090816" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:47:05.090963" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:47:05.051212" elapsed="0.039777"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.091824" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.091575" elapsed="0.000296"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.092894" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.092503" elapsed="0.000419"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:47:05.092971" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:47:05.093147" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:47:05.092164" elapsed="0.001009"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.093545" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.093326" elapsed="0.000246"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.093949" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.093724" elapsed="0.000249"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:47:05.094021" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T00:47:05.094185" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:47:05.091226" elapsed="0.002984"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:47:05.094253" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:47:05.094400" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:47:04.993334" elapsed="0.101091"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:47:05.094604" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T00:47:05.094493" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.094476" elapsed="0.000211"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.094835" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:47:04.992989" elapsed="0.101910"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.096344" level="INFO">${session} = ClusterManagement__session_2</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-19T00:47:05.096023" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:47:05.096449" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:47:05.096601" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:47:05.095682" elapsed="0.000944"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.104362" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.104096" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.104814" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.104568" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:47:05.117252" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:47:05.117480" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:47:05 GMT', 'Expires': 'Sat, 18 Apr 2026 23:47:05 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559625,"status":200} 
 </msg>
<msg time="2026-04-19T00:47:05.117904" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:47:05.107092" elapsed="0.010885"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.104927" elapsed="0.013234"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.118800" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.118273" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.104907" elapsed="0.014152"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.126696" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559625,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.122408" elapsed="0.004473"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.121590" elapsed="0.005500"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.121539" elapsed="0.005625"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.131512" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.127622" elapsed="0.004022"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.127265" elapsed="0.004530"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.127240" elapsed="0.004593"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.132919" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.132131" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.133520" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.133143" elapsed="0.000624"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.134959" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.134127" elapsed="0.000946"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.133850" elapsed="0.001377"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.133115" elapsed="0.002138"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.135951" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.135418" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.136342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.136076" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.137546" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.136727" elapsed="0.000907"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.136550" elapsed="0.001257"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.136056" elapsed="0.001778"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:47:05.138002" elapsed="0.000799"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:47:05.139839" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.138975" elapsed="0.000913"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.140102" elapsed="0.003264"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:47:05.120400" elapsed="0.023038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:47:05.143629" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:47:05.143510" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.143491" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:47:05.146837" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:47:05.143851" elapsed="0.003019"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:47:05.146931" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:47:05.147132" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:47:05.099531" elapsed="0.047628"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:47:05.147219" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:47:05.147374" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:47:05.096836" elapsed="0.050566"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.148343" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.148067" elapsed="0.000325"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.149524" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.148952" elapsed="0.000601"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:47:05.149603" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:47:05.149762" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:47:05.148604" elapsed="0.001228"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.150246" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.149995" elapsed="0.000278"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.150637" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.150427" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:47:05.150708" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:47:05.150856" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:47:05.147662" elapsed="0.003220"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:47:05.151086" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:47:05.150957" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.150938" elapsed="0.000213"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.158731" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.158481" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.159268" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.159001" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:47:05.167749" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:47:05.167829" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:47:05 GMT', 'Expires': 'Sat, 18 Apr 2026 23:47:05 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559625,"status":200} 
 </msg>
<msg time="2026-04-19T00:47:05.167943" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:47:05.161655" elapsed="0.006314"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.159381" elapsed="0.008632"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.168213" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.168057" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.159362" elapsed="0.008937"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.172291" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559625,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.169526" elapsed="0.002863"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.169248" elapsed="0.003248"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.169230" elapsed="0.003294"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.175956" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.172828" elapsed="0.003280"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.172583" elapsed="0.003676"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.172566" elapsed="0.003732"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.177311" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.176542" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.177831" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.177448" elapsed="0.000644"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.179227" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.178362" elapsed="0.000981"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.178129" elapsed="0.001425"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.177422" elapsed="0.002167"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.180602" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.179827" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.181145" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:47:05.180744" elapsed="0.000657"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.182582" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:47:05.181682" elapsed="0.001014"/>
</kw>
<status status="PASS" start="2026-04-19T00:47:05.181440" elapsed="0.001444"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.180718" elapsed="0.002189"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:47:05.183128" elapsed="0.000663"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:47:05.184802" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.183959" elapsed="0.000870"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.185082" elapsed="0.003186"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:47:05.168803" elapsed="0.019539"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:47:05.188530" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:47:05.188416" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.188397" elapsed="0.000202"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:47:05.191636" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:47:05.188746" elapsed="0.002920"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:47:05.191718" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T00:47:05.191890" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:47:05.153989" elapsed="0.037927"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:47:05.191974" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:47:05.192139" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:47:05.151355" elapsed="0.040810"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.193058" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559625,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.192787" elapsed="0.000323"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.194089" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:47:05.193659" elapsed="0.000460"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:47:05.194169" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:47:05.194330" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559625, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:47:05.193319" elapsed="0.001037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.194738" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.194513" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:47:05.195212" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:47:05.194925" elapsed="0.000313"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:47:05.195285" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:47:05.195433" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:47:05.192410" elapsed="0.003047"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:47:05.195500" elapsed="0.000024"/>
</return>
<msg time="2026-04-19T00:47:05.195648" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:47:05.095306" elapsed="0.100367"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:47:05.195855" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T00:47:05.195744" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:47:05.195727" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:47:05.196103" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:47:05.095076" elapsed="0.101084"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.197859" level="INFO">${session} = ClusterManagement__session_3</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-19T00:47:05.197531" elapsed="0.000356"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:47:05.197933" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:47:05.198096" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:47:05.197189" elapsed="0.000932"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.205726" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.205436" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:47:05.206230" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:47:05.205967" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:49:10.247113" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:47:05.208475" elapsed="125.043009">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:47:05.206349" elapsed="125.045378">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.252403" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:10.251816" elapsed="0.000755"/>
</branch>
<status status="FAIL" start="2026-04-19T00:47:05.206326" elapsed="125.046303">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.253993" elapsed="0.000112"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:49:10.254402" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:10.254306" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:49:10.254260" elapsed="0.000294"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.254903" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:49:10.255103" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:47:05.200873" elapsed="125.054491">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:49:10.255534" elapsed="0.000037"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:47:05.198336" elapsed="125.057428">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.256373" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:49:10.256616" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:10.256579" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:49:10.256555" elapsed="0.000123"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.256875" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.257109" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:49:10.257177" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:47:05.196748" elapsed="125.060530">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:49:10.257396" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:49:10.257358" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:49:10.257342" elapsed="0.000115"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.257601" elapsed="0.000020"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:47:05.196319" elapsed="125.061362">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:47:04.992730" elapsed="125.265078">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:47:04.989680" elapsed="125.268230">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:47:04.989145" elapsed="125.268825">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:47:04.989111" elapsed="125.268890">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:49:10.258290" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:10.258084" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:49:10.258066" elapsed="0.000301"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:49:10.258631" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:10.258420" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:49:10.258404" elapsed="0.000307"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:47:04.988333" elapsed="125.270458">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.280531" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:49:20.280079" elapsed="0.000484"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.281068" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:49:20.280735" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:49:20.281146" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:49:20.281313" level="INFO">${index_list} = [1, 2, 3]</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-19T00:49:20.279647" elapsed="0.001691"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.282888" 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-19T00:49:20.282583" elapsed="0.000333"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:49:20.282964" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:49:20.283130" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:49:20.282235" elapsed="0.000920"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.290800" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.290536" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.291272" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.291006" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:49:20.301560" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:49:20.301644" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:49:20 GMT', 'Expires': 'Sat, 18 Apr 2026 23:49:20 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559760,"status":200} 
 </msg>
<msg time="2026-04-19T00:49:20.301775" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:49:20.293561" elapsed="0.008242"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.291385" elapsed="0.010465"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.302131" elapsed="0.000101"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.301879" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.291366" elapsed="0.010961"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.307918" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559760,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.304079" elapsed="0.003995"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.303708" elapsed="0.004520"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.303680" elapsed="0.004587"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.312704" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.308703" elapsed="0.004125"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.308347" elapsed="0.004619"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.308323" elapsed="0.004679"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.313860" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.313262" elapsed="0.000626"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.314263" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.313963" elapsed="0.000479"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.315330" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.314638" elapsed="0.000775"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.314469" elapsed="0.001092"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.313944" elapsed="0.001643"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.316309" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.315753" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.316673" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.316410" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.317716" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.317055" elapsed="0.000743"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.316873" elapsed="0.001074"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.316391" elapsed="0.001583"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:49:20.318153" elapsed="0.000665"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:49:20.319844" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.318987" elapsed="0.000885"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.320045" elapsed="0.003122"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:49:20.303091" elapsed="0.020144"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:49:20.323421" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:20.323307" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.323287" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:49:20.326412" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:49:20.323636" elapsed="0.002805"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:49:20.326494" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:49:20.326661" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:49:20.285909" elapsed="0.040779"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:49:20.326791" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:49:20.326945" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:49:20.283371" elapsed="0.043600"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.327921" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.327664" elapsed="0.000307"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.328942" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.328539" elapsed="0.000432"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:49:20.329022" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T00:49:20.329201" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:49:20.328198" elapsed="0.001030"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.329622" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.329397" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.330019" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.329807" elapsed="0.000253"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:49:20.330109" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:49:20.330261" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:49:20.327301" elapsed="0.002985"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:49:20.330461" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:20.330353" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.330336" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.338356" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.338103" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.338806" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.338560" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:49:20.347415" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:49:20.347493" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:49:20 GMT', 'Expires': 'Sat, 18 Apr 2026 23:49:20 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559760,"status":200} 
 </msg>
<msg time="2026-04-19T00:49:20.347607" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:49:20.341076" elapsed="0.006558"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.338916" elapsed="0.008762"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.347861" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.347705" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.338898" elapsed="0.009050"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.352875" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776559760,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.349249" elapsed="0.003760"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.348931" elapsed="0.004250"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.348912" elapsed="0.004309"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.357590" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.353671" elapsed="0.004050"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.353302" elapsed="0.004570"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.353278" elapsed="0.004634"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.358689" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.358156" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.359095" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.358788" elapsed="0.000484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.360045" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.359463" elapsed="0.000665"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.359298" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.358769" elapsed="0.001532"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.360979" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.360464" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.361353" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.361093" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.362314" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.361730" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.361564" elapsed="0.000986"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.361074" elapsed="0.001500"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:49:20.362730" elapsed="0.000705"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:49:20.364418" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.363604" elapsed="0.000841"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.364602" elapsed="0.003293"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:49:20.348493" elapsed="0.019469"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:49:20.368161" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:20.368049" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.368013" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:49:20.371214" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:49:20.368375" elapsed="0.002868"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:49:20.371297" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:49:20.371461" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:49:20.333560" elapsed="0.037927"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:49:20.371545" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:49:20.371692" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:49:20.330725" elapsed="0.040992"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.372594" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.372341" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.373628" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.373213" elapsed="0.000443"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:49:20.373708" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T00:49:20.373925" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:49:20.372854" elapsed="0.001100"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.374363" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.374133" elapsed="0.000258"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.374808" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.374588" elapsed="0.000246"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:49:20.374882" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:49:20.375097" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:49:20.371967" elapsed="0.003157"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:49:20.375170" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:49:20.375318" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:49:20.281839" elapsed="0.093504"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:49:20.375525" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-19T00:49:20.375412" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.375395" elapsed="0.000215"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.375760" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:49:20.281608" elapsed="0.094208"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.377266" level="INFO">${session} = ClusterManagement__session_2</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-19T00:49:20.376941" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:49:20.377340" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:49:20.377528" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:49:20.376595" elapsed="0.000959"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.385292" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.385040" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.385751" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.385506" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:49:20.395778" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:49:20.395856" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:49:20 GMT', 'Expires': 'Sat, 18 Apr 2026 23:49:20 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559760,"status":200} 
 </msg>
<msg time="2026-04-19T00:49:20.396004" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:49:20.387982" elapsed="0.008065"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.385862" elapsed="0.010229"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.396413" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.396260" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.385843" elapsed="0.010654"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.401634" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559760,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.397876" elapsed="0.003892"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.397604" elapsed="0.004313"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.397575" elapsed="0.004380"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.406196" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.402408" elapsed="0.003889"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.402067" elapsed="0.004335"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.402011" elapsed="0.004419"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.407154" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.406600" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.407513" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.407254" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.408458" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.407876" elapsed="0.000660"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.407711" elapsed="0.000972"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.407235" elapsed="0.001472"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.409404" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.408871" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.409796" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.409520" elapsed="0.000449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.410768" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.410204" elapsed="0.000643"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.409997" elapsed="0.000994"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.409500" elapsed="0.001515"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:49:20.411221" elapsed="0.000661"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:49:20.412856" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.412066" elapsed="0.000817"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.413057" elapsed="0.003166"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:49:20.396993" elapsed="0.019297"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:49:20.416472" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:20.416361" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.416341" elapsed="0.000198"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:49:20.419507" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:49:20.416686" elapsed="0.002851"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:49:20.419590" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:49:20.419749" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:49:20.380516" elapsed="0.039294"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:49:20.419871" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:49:20.420022" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:49:20.377767" elapsed="0.042299"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.420889" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.420636" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.421926" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.421522" elapsed="0.000434"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:49:20.422006" elapsed="0.000117"/>
</return>
<msg time="2026-04-19T00:49:20.422259" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:49:20.421165" elapsed="0.001122"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.422667" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.422443" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.423079" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.422850" elapsed="0.000256"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:49:20.423158" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:49:20.423307" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:49:20.420280" elapsed="0.003052"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:49:20.423517" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:20.423401" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.423383" elapsed="0.000198"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.431103" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.430837" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.431548" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.431305" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:49:20.440070" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T00:49:20.440162" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 00:49:20 GMT', 'Expires': 'Sat, 18 Apr 2026 23:49:20 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559760,"status":200} 
 </msg>
<msg time="2026-04-19T00:49:20.440292" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:49:20.433939" elapsed="0.006382"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.431658" elapsed="0.008712"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.440578" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.440398" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.431640" elapsed="0.009076"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.445835" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776559760,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.442045" elapsed="0.003928"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.441768" elapsed="0.004376"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.441749" elapsed="0.004434"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.450372" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.446600" elapsed="0.003863"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.446264" elapsed="0.004305"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.446240" elapsed="0.004356"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.451352" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.450768" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.451713" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.451450" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.452657" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.452093" elapsed="0.000643"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.451911" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.451432" elapsed="0.001472"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.453602" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.453079" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.453954" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:49:20.453700" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.454909" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:49:20.454335" elapsed="0.000653"/>
</kw>
<status status="PASS" start="2026-04-19T00:49:20.454173" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.453681" elapsed="0.001517"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:49:20.455352" elapsed="0.000660"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:49:20.456998" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.456195" elapsed="0.000844"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.457200" elapsed="0.003164"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:49:20.441270" elapsed="0.019158"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:49:20.460611" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:49:20.460499" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.460480" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T00:49:20.463655" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T00:49:20.460823" elapsed="0.002861"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T00:49:20.463737" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:49:20.463899" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T00:49:20.426360" elapsed="0.037566"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:49:20.463983" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:49:20.464184" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T00:49:20.423783" elapsed="0.040429"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.465049" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776559760,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.464780" elapsed="0.000322"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.466098" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:49:20.465679" elapsed="0.000448"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T00:49:20.466177" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:49:20.466337" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776559760, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T00:49:20.465313" elapsed="0.001051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.466744" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.466519" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:49:20.467213" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T00:49:20.466926" elapsed="0.000313"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T00:49:20.467287" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:49:20.467434" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T00:49:20.464426" elapsed="0.003033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T00:49:20.467503" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:49:20.467649" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T00:49:20.376212" elapsed="0.091462"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T00:49:20.467851" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T00:49:20.467743" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T00:49:20.467726" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:49:20.468096" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:49:20.375966" elapsed="0.092187"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.469793" level="INFO">${session} = ClusterManagement__session_3</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-19T00:49:20.469488" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:49:20.469873" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:49:20.470022" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:49:20.469113" elapsed="0.000950"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.477620" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.477328" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:49:20.478085" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:49:20.477824" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:51:25.495106" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:49:20.480311" elapsed="125.018850">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:49:20.478196" elapsed="125.021182">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.499955" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:25.499463" elapsed="0.000813"/>
</branch>
<status status="FAIL" start="2026-04-19T00:49:20.478177" elapsed="125.022161">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.501661" elapsed="0.000066"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:51:25.502081" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:25.501914" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:51:25.501870" elapsed="0.000362"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.502527" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:51:25.502627" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:49:20.472820" elapsed="125.029962">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:51:25.502894" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T00:49:20.470278" elapsed="125.032770">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.503361" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T00:51:25.503549" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:25.503491" elapsed="0.000115"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:51:25.503466" elapsed="0.000170"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.503910" elapsed="0.000035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.504241" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T00:51:25.504337" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T00:49:20.468710" elapsed="125.035769">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T00:51:25.504646" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T00:51:25.504593" elapsed="0.000108"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:51:25.504568" elapsed="0.000163"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.504930" elapsed="0.000029"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:49:20.468299" elapsed="125.036772">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:49:20.281418" elapsed="125.223741">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T00:49:20.279224" elapsed="125.226073">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:49:20.278863" elapsed="125.226515">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T00:49:20.278837" elapsed="125.226583">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T00:51:25.505793" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:25.505513" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:51:25.505489" elapsed="0.000412"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T00:51:25.506336" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:25.506005" elapsed="0.000411"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:51:25.505982" elapsed="0.000472"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T00:49:20.278345" elapsed="125.228248">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T00:51:25.506765" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T00:44:18.853546" elapsed="426.653396">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:51:25.512420" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:51:25.511766" elapsed="0.000693"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:51:25.513143" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:51:25.512687" elapsed="0.000494"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:51:25.513246" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T00:51:25.513467" level="INFO">${index_list} = [1, 2, 3]</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-19T00:51:25.511160" elapsed="0.002342"/>
</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-19T00:51:25.515018" level="INFO">${member_ip} = 10.30.171.9</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-19T00:51:25.514743" elapsed="0.000317"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:25.515892" 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-19T00:51:25.515992" 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-19T00:51:25.515720" elapsed="0.000298"/>
</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-19T00:51:25.518746" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:25.518461" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:25.518442" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:25.519115" 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-19T00:51:25.519215" 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-19T00:51:25.518972" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:25.519862" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:25.519391" elapsed="0.000518"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:25.520507" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:51:25.520091" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:51:25.521625" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:51:25.521719" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:51:25.521226" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:25.522090" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:51:25.524151" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:51:26.108485" 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 Sun Apr 19 00:51:25 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:44:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:51:25.523496" elapsed="0.585205"/>
</kw>
<msg time="2026-04-19T00:51:26.108918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:25.522797" elapsed="0.586282"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:51:25.520749" elapsed="0.588449"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.109710" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T00:51:26.122205" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T00:51:26.122453" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:51:26.122552" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:51:26.109442" elapsed="0.013161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:26.122975" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.124676" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:26.123965" elapsed="0.000813"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:26.125316" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:26.124958" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:26.124906" elapsed="0.000570"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:51:26.125831" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T00:51:26.125595" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:26.125562" elapsed="0.000455"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:26.126156" 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-19T00:51:26.131499" elapsed="0.000794"/>
</kw>
<kw name="Open 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-19T00:51:26.132526" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:26.133010" elapsed="0.000168"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:26.126876" elapsed="0.006376"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:51:25.517879" elapsed="0.615503"/>
</kw>
<msg time="2026-04-19T00:51:26.133456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:25.517260" elapsed="0.616284"/>
</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-19T00:51:25.516693" elapsed="0.616957"/>
</kw>
<msg time="2026-04-19T00:51:26.133706" 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-19T00:51:25.516190" elapsed="0.617594"/>
</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-19T00:51:26.137978" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:51:26.138684" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:26.139139" elapsed="0.000169"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:26.134224" elapsed="0.005167"/>
</kw>
<msg time="2026-04-19T00:51:26.139519" 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-19T00:51:25.515281" elapsed="0.624273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.140182" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:26.139801" elapsed="0.000426"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:51:26.140271" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:51:25.514078" elapsed="0.626318"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:51:25.513763" elapsed="0.626672"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:26.141474" level="INFO">${member_ip} = 10.30.171.128</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-19T00:51:26.141167" elapsed="0.000335"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.142371" 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-19T00:51:26.142470" 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-19T00:51:26.142234" elapsed="0.000263"/>
</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-19T00:51:26.145381" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:26.145111" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:26.145092" elapsed="0.000368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.145741" 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-19T00:51:26.145840" 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-19T00:51:26.145607" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.146686" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:26.146017" elapsed="0.000716"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.147349" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:51:26.146892" elapsed="0.000483"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.148467" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:51:26.148560" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:51:26.148067" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:26.148745" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.150637" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:51:26.728072" 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 Sun Apr 19 00:51:26 UTC 2026

  System load:  0.04               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:44:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:51:26.150006" elapsed="0.578292"/>
</kw>
<msg time="2026-04-19T00:51:26.728426" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:26.149462" elapsed="0.579106"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:51:26.147591" elapsed="0.581098"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.729241" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T00:51:26.741827" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T00:51:26.742100" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:51:26.742201" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:51:26.728940" elapsed="0.013312"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:26.742614" elapsed="0.000473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.744188" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:26.743491" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:26.744743" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:26.744458" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:26.744408" elapsed="0.000486"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:51:26.745274" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T00:51:26.745011" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:26.744978" elapsed="0.000637"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:26.745701" 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-19T00:51:26.750761" elapsed="0.000826"/>
</kw>
<kw name="Open 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-19T00:51:26.751833" elapsed="0.000249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:26.752304" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:26.746414" elapsed="0.006109"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:51:26.144533" elapsed="0.608125"/>
</kw>
<msg time="2026-04-19T00:51:26.752738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:26.143956" elapsed="0.608873"/>
</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-19T00:51:26.143388" elapsed="0.609553"/>
</kw>
<msg time="2026-04-19T00:51:26.753000" 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-19T00:51:26.142653" elapsed="0.610450"/>
</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-19T00:51:26.757533" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T00:51:26.758006" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:26.758315" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:26.753542" elapsed="0.004918"/>
</kw>
<msg time="2026-04-19T00:51:26.758550" 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-19T00:51:26.141772" elapsed="0.616803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.758995" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:26.758752" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:51:26.759114" 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-19T00:51:26.140711" elapsed="0.618526"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:51:26.140528" elapsed="0.618746"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:26.760274" level="INFO">${member_ip} = 10.30.171.206</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-19T00:51:26.759981" elapsed="0.000319"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.761098" 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-19T00:51:26.761197" 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-19T00:51:26.760946" elapsed="0.000277"/>
</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-19T00:51:26.763892" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:26.763624" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:26.763606" elapsed="0.000365"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.764260" 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-19T00:51:26.764359" 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-19T00:51:26.764132" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.764987" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:26.764531" elapsed="0.000558"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.765695" level="INFO">${conn_id} = 553</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:51:26.765262" elapsed="0.000459"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:51:26.766796" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:51:26.766889" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:51:26.766415" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:26.767096" elapsed="0.002034"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:51:26.770563" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:51:27.396353" 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 Sun Apr 19 00:51:26 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:44:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:51:26.769928" elapsed="0.626648"/>
</kw>
<msg time="2026-04-19T00:51:27.396703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:26.769332" elapsed="0.627517"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:51:26.765934" elapsed="0.631047"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.397562" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T00:51:27.410447" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T00:51:27.410689" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:51:27.410786" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T00:51:27.397281" elapsed="0.013556"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:27.411245" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.412870" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:27.412190" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:27.413483" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:27.413193" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.413141" elapsed="0.000496"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:51:27.413999" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-19T00:51:27.413767" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.413732" elapsed="0.000488"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:27.414293" 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-19T00:51:27.419648" elapsed="0.000832"/>
</kw>
<kw name="Open 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-19T00:51:27.420726" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:27.421196" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:27.414984" elapsed="0.006436"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:51:26.763074" elapsed="0.658483"/>
</kw>
<msg time="2026-04-19T00:51:27.421635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:26.762508" elapsed="0.659219"/>
</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-19T00:51:26.761897" elapsed="0.659941"/>
</kw>
<msg time="2026-04-19T00:51:27.421897" 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-19T00:51:26.761398" elapsed="0.660702"/>
</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-19T00:51:27.426559" elapsed="0.000455"/>
</kw>
<kw name="Open 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-19T00:51:27.427337" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:27.427687" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:27.422529" elapsed="0.005309"/>
</kw>
<msg time="2026-04-19T00:51:27.427936" 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-19T00:51:26.760514" elapsed="0.667448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.428435" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:27.428177" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:51:27.428520" 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-19T00:51:26.759550" elapsed="0.669100"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:51:26.759365" elapsed="0.669323"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:51:25.513578" elapsed="1.915144"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T00:51:25.507456" elapsed="1.921323"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T00:44:17.651598" elapsed="429.777264">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:27.429054" elapsed="0.000023"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T00:51:27.429300" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:27.429664" elapsed="0.000024"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:27.429883" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:27.430183" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:27.429977" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:51:27.429959" elapsed="0.000310"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T00:51:27.429486" elapsed="0.000808"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T00:51:27.429376" elapsed="0.000943"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:27.430555" elapsed="0.000022"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:44:17.646580" elapsed="429.784159">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T00:51:27.431448" elapsed="0.000296"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T00:37:03.370533" elapsed="864.061248"/>
</suite>
<suite id="s1-s6" name="Action Provider Precedence" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_precedence.robot">
<kw name="Setup_Keyword" 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-19T00:51:27.513663" 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-19T00:51:27.509579" elapsed="0.004138"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T00:51:27.509343" elapsed="0.004519"/>
</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-19T00:51:27.518748" 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-19T00:51:27.514972" elapsed="0.003804"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T00:51:27.518988" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:27.518863" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.518839" elapsed="0.000239"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.519588" 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-19T00:51:27.519229" elapsed="0.000402"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.520123" level="INFO">${cluster_size} = 3</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-19T00:51:27.519789" elapsed="0.000361"/>
</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-19T00:51:27.520652" elapsed="0.000285"/>
</kw>
<msg time="2026-04-19T00:51:27.521051" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:51:27.521100" level="INFO">${possibly_int_of_members} = 3</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-19T00:51:27.520311" elapsed="0.000813"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.521655" level="INFO">${int_of_members} = 3</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-19T00:51:27.521287" elapsed="0.000394"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.522670" 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-19T00:51:27.522389" elapsed="0.000308"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.523119" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:51:27.522841" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.523582" 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-19T00:51:27.523297" elapsed="0.000311"/>
</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-19T00:51:27.526624" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.527338" level="INFO">${member_ip} = 10.30.171.9</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-19T00:51:27.526993" 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-19T00:51:27.527512" elapsed="0.000231"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.528538" 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-19T00:51:27.528244" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:51:27.528609" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:51:27.528766" 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-19T00:51:27.527933" elapsed="0.000858"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:51:27.529556" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7fa6510&gt;, timeout=125, 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-19T00:51:27.528943" elapsed="0.000748"/>
</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-19T00:51:27.529850" elapsed="0.000209"/>
</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-19T00:51:27.526020" elapsed="0.004101"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:51:27.525835" elapsed="0.004332"/>
</iter>
<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-19T00:51:27.531021" elapsed="0.000209"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.531705" level="INFO">${member_ip} = 10.30.171.128</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-19T00:51:27.531381" elapsed="0.000351"/>
</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-19T00:51:27.531876" elapsed="0.000240"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.532939" level="INFO">${session} = ClusterManagement__session_2</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-19T00:51:27.532642" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:51:27.533011" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T00:51:27.533189" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T00:51:27.532303" elapsed="0.000911"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:51:27.533766" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f708ee90&gt;, timeout=125, 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-19T00:51:27.533362" elapsed="0.000506"/>
</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-19T00:51:27.534023" elapsed="0.000206"/>
</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-19T00:51:27.530463" elapsed="0.003825"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:51:27.530254" elapsed="0.004078"/>
</iter>
<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-19T00:51:27.535191" elapsed="0.000190"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.535851" level="INFO">${member_ip} = 10.30.171.206</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-19T00:51:27.535530" elapsed="0.000347"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:51:27.536019" elapsed="0.000238"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.537021" level="INFO">${session} = ClusterManagement__session_3</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-19T00:51:27.536727" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:51:27.537110" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:51:27.537260" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T00:51:27.536439" elapsed="0.000846"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:51:27.538057" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f76299d0&gt;, timeout=125, 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-19T00:51:27.537431" elapsed="0.000734"/>
</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-19T00:51:27.538322" elapsed="0.000391"/>
</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-19T00:51:27.534619" elapsed="0.004158"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:51:27.534445" elapsed="0.004376"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T00:51:27.523662" elapsed="0.015189"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.539452" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T00:51:27.539021" elapsed="0.000474"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.540068" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T00:51:27.539648" elapsed="0.000464"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.540648" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T00:51:27.540265" elapsed="0.000426"/>
</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-19T00:51:27.521925" elapsed="0.018822"/>
</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-19T00:51:27.514631" elapsed="0.026180"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:51:27.540996" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:27.540881" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.540857" elapsed="0.000225"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.544353" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:51:27.543955" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.544839" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:51:27.544533" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:51:27.544909" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:51:27.545081" level="INFO">${index_list} = [1, 2, 3]</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-19T00:51:27.543633" elapsed="0.001474"/>
</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-19T00:51:27.546088" level="INFO">${member_ip} = 10.30.171.9</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-19T00:51:27.545806" elapsed="0.000308"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.546892" 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-19T00:51:27.546992" 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-19T00:51:27.546722" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:27.550356" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:27.549747" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.549728" elapsed="0.000752"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.551127" 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-19T00:51:27.551358" 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-19T00:51:27.550671" elapsed="0.000738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.552338" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:27.551666" elapsed="0.000776"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.553596" 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-19T00:51:27.552701" elapsed="0.000945"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.555344" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:51:27.555516" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:51:27.554978" elapsed="0.000580"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:27.555894" elapsed="0.000476"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.557614" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:51:27.857522" 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 Sun Apr 19 00:51:25 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:51:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T00:51:27.557156" elapsed="0.300525"/>
</kw>
<msg time="2026-04-19T00:51:27.857765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:27.556704" elapsed="0.301224"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:51:27.554098" elapsed="0.304010"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.859025" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:51:27.871722" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:51:27.871962" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:51:27.872144" 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-19T00:51:27.858540" elapsed="0.013677"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:27.872655" elapsed="0.000754"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.875054" 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-19T00:51:27.874222" elapsed="0.000988"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:27.875863" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:27.875457" elapsed="0.000614"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.875418" elapsed="0.000709"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:51:27.876570" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T00:51:27.876244" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.876219" elapsed="0.000608"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:27.876912" 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-19T00:51:27.881752" elapsed="0.000691"/>
</kw>
<kw name="Open 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-19T00:51:27.882834" elapsed="0.000433"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:27.883650" elapsed="0.000328"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:27.877623" elapsed="0.006480"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:51:27.548802" elapsed="0.335555"/>
</kw>
<msg time="2026-04-19T00:51:27.884438" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:27.548173" elapsed="0.336343"/>
</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-19T00:51:27.547681" elapsed="0.336957"/>
</kw>
<msg time="2026-04-19T00:51:27.884697" 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-19T00:51:27.547184" elapsed="0.337580"/>
</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-19T00:51:27.888759" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T00:51:27.889254" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:27.889540" 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-19T00:51:27.885327" elapsed="0.004359"/>
</kw>
<msg time="2026-04-19T00:51:27.889777" 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-19T00:51:27.546367" elapsed="0.343435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.890239" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:27.889972" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:51:27.890322" 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-19T00:51:27.545455" elapsed="0.344992"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:51:27.545284" elapsed="0.345201"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:27.891402" level="INFO">${member_ip} = 10.30.171.128</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-19T00:51:27.891128" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.892171" 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-19T00:51:27.892311" 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-19T00:51:27.892016" elapsed="0.000322"/>
</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-19T00:51:27.895851" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:27.895293" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:27.895273" elapsed="0.000699"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.896607" 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-19T00:51:27.896832" 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-19T00:51:27.896184" elapsed="0.000698"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.897792" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:27.897148" elapsed="0.000748"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.899048" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:51:27.898171" elapsed="0.000931"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:51:27.900823" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:51:27.900994" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:51:27.900464" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:27.901386" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:51:27.902962" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:51:28.217921" 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 Sun Apr 19 00:51:26 UTC 2026

  System load:  0.04               Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:51:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T00:51:27.902638" elapsed="0.315425"/>
</kw>
<msg time="2026-04-19T00:51:28.218137" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:27.902193" elapsed="0.316083"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:51:27.899550" elapsed="0.318863"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.219230" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:51:28.231898" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:51:28.232167" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:51:28.232315" 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-19T00:51:28.218742" elapsed="0.013644"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.232834" elapsed="0.000756"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.235217" 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-19T00:51:28.234399" elapsed="0.000968"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:28.235959" elapsed="0.000090"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:28.235604" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:28.235568" elapsed="0.000649"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:51:28.236682" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-19T00:51:28.236334" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:28.236309" elapsed="0.000701"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:28.237132" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:28.242193" elapsed="0.000659"/>
</kw>
<kw name="Open 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-19T00:51:28.243273" elapsed="0.000409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.244077" elapsed="0.000323"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:28.237800" 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-19T00:51:27.894373" elapsed="0.350413"/>
</kw>
<msg time="2026-04-19T00:51:28.244869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:27.893750" elapsed="0.351194"/>
</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-19T00:51:27.892985" elapsed="0.352236"/>
</kw>
<msg time="2026-04-19T00:51:28.245283" 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-19T00:51:27.892489" elapsed="0.352862"/>
</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-19T00:51:28.249336" 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-19T00:51:28.249866" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.250237" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:28.245766" elapsed="0.004619"/>
</kw>
<msg time="2026-04-19T00:51:28.250473" 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-19T00:51:27.891660" elapsed="0.358838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.250910" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:28.250666" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:51:28.250992" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T00:51:27.890760" elapsed="0.360371"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:51:27.890581" elapsed="0.360587"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:28.252074" level="INFO">${member_ip} = 10.30.171.206</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-19T00:51:28.251787" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.252815" 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-19T00:51:28.252913" 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-19T00:51:28.252675" elapsed="0.000264"/>
</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-19T00:51:28.256171" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:28.255612" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:28.255593" elapsed="0.000703"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.256922" 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-19T00:51:28.257164" 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-19T00:51:28.256497" elapsed="0.000719"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.258173" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:28.257504" elapsed="0.000773"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.259418" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:51:28.258537" elapsed="0.000933"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.261194" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T00:51:28.261370" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T00:51:28.260813" elapsed="0.000598"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:28.261738" elapsed="0.000647"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.263509" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T00:51:28.588743" 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 Sun Apr 19 00:51:26 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:51:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T00:51:28.263182" elapsed="0.325739"/>
</kw>
<msg time="2026-04-19T00:51:28.589058" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:28.262724" elapsed="0.326569"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T00:51:28.259892" elapsed="0.329608"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.590748" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T00:51:28.604305" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T00:51:28.604549" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T00:51:28.604762" 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-19T00:51:28.589999" elapsed="0.014867"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.605567" elapsed="0.001154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.609183" 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-19T00:51:28.607940" elapsed="0.001466"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:28.610375" elapsed="0.000107"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:28.609759" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:28.609706" elapsed="0.001022"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T00:51:28.611500" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T00:51:28.610902" elapsed="0.000897"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:28.610865" elapsed="0.001016"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T00:51:28.612005" elapsed="0.000065"/>
</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-19T00:51:28.616682" elapsed="0.000471"/>
</kw>
<kw name="Open 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-19T00:51:28.617424" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.617982" elapsed="0.000260"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:28.613064" elapsed="0.005246"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T00:51:28.254685" elapsed="0.363800"/>
</kw>
<msg time="2026-04-19T00:51:28.618609" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:28.254089" elapsed="0.364575"/>
</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-19T00:51:28.253597" elapsed="0.365147"/>
</kw>
<msg time="2026-04-19T00:51:28.618785" 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-19T00:51:28.253106" elapsed="0.365724"/>
</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-19T00:51:28.621535" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:51:28.622013" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.622355" 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-19T00:51:28.619182" elapsed="0.003319"/>
</kw>
<msg time="2026-04-19T00:51:28.622590" 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-19T00:51:28.252312" elapsed="0.370302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.623023" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:28.622779" elapsed="0.000356"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T00:51:28.623178" 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-19T00:51:28.251436" elapsed="0.371864"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:51:28.251262" elapsed="0.372075"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:51:27.545158" elapsed="1.078215"/>
</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-19T00:51:27.541296" elapsed="1.082138"/>
</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-19T00:51:28.623586" 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-19T00:51:28.637013" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:28.636904" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:28.636885" elapsed="0.000215"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.637382" 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-19T00:51:28.637484" 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-19T00:51:28.637248" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.637938" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:28.637655" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:28.638388" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:28.638145" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:28.639179" 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-19T00:51:28.638929" elapsed="0.000375">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T00:51:28.639410" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:51:28.639455" 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-19T00:51:28.638579" elapsed="0.000899"/>
</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-19T00:51:28.639771" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:28.639553" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:28.639535" elapsed="0.000333"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:28.640610" level="INFO">${ip_address} = 10.30.171.9</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-19T00:51:28.640348" elapsed="0.000287"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:51:28.640682" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:51:28.640829" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:51:28.640082" elapsed="0.000772"/>
</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-19T00:51:28.641060" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.641759" level="INFO">index=10
host=10.30.171.9
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-19T00:51:28.641859" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.641626" elapsed="0.000259"/>
</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-19T00:51:28.642047" elapsed="0.002175"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:51:28.644637" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:51:29.456590" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:51:28.644383" elapsed="0.812387"/>
</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-19T00:51:29.460542" elapsed="0.000400"/>
</kw>
<kw name="Open 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-19T00:51:29.461126" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:29.461438" 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-19T00:51:29.457909" elapsed="0.003685"/>
</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-19T00:51:29.457212" elapsed="0.004430"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:51:28.636623" elapsed="0.825071"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:51:28.624509" elapsed="0.837235"/>
</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-19T00:51:28.624148" elapsed="0.837648"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:51:28.623999" elapsed="0.837839"/>
</iter>
<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-19T00:51:29.475001" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:29.474883" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:29.474860" elapsed="0.000233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:29.475379" 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-19T00:51:29.475486" 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-19T00:51:29.475243" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:29.475955" 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-19T00:51:29.475659" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:29.476411" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:29.476168" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:29.477207" level="FAIL">Dictionary does not contain key '2'.</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-19T00:51:29.476958" elapsed="0.000354">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T00:51:29.477417" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:51:29.477545" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T00:51:29.476605" elapsed="0.000981"/>
</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-19T00:51:29.477893" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:29.477669" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:29.477649" elapsed="0.000343"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:29.478770" level="INFO">${ip_address} = 10.30.171.128</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-19T00:51:29.478506" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:51:29.478845" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:51:29.478999" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:51:29.478231" elapsed="0.000811"/>
</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-19T00:51:29.479201" elapsed="0.000405"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:29.479898" level="INFO">index=12
host=10.30.171.128
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-19T00:51:29.480006" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T00:51:29.479771" elapsed="0.000282"/>
</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-19T00:51:29.480198" elapsed="0.003536"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:51:29.484213" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:51:30.347248" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T00:51:29.483927" elapsed="0.863492"/>
</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-19T00:51:30.351055" 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-19T00:51:30.351606" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:30.351931" elapsed="0.000129"/>
</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-19T00:51:30.348598" elapsed="0.003519"/>
</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-19T00:51:30.347862" elapsed="0.004303"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T00:51:29.474588" elapsed="0.877630"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T00:51:29.462467" elapsed="0.889798"/>
</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-19T00:51:29.462095" elapsed="0.890220"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:51:29.461938" elapsed="0.890425"/>
</iter>
<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-19T00:51:30.365429" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:30.365299" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:30.365274" elapsed="0.000233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:30.365877" 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-19T00:51:30.365987" 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-19T00:51:30.365734" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:30.366470" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:30.366181" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:30.366917" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:30.366668" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:30.367734" level="FAIL">Dictionary does not contain key '3'.</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-19T00:51:30.367497" elapsed="0.000345">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T00:51:30.367953" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:51:30.367998" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T00:51:30.367133" elapsed="0.000888"/>
</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-19T00:51:30.368336" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:30.368115" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:30.368096" elapsed="0.000339"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:30.369411" level="INFO">${ip_address} = 10.30.171.206</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-19T00:51:30.369127" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:51:30.369489" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:51:30.369650" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:51:30.368633" elapsed="0.001043"/>
</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-19T00:51:30.369828" elapsed="0.000553"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:30.370665" level="INFO">index=14
host=10.30.171.206
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-19T00:51:30.370767" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T00:51:30.370555" 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-19T00:51:30.370938" elapsed="0.002344"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:51:30.373723" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:51:40.442587" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:51:30.373450" elapsed="10.070120">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:51:40.447128" elapsed="0.000428"/>
</kw>
<kw name="Open 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-19T00:51:40.447727" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:40.448070" elapsed="0.000106"/>
</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-19T00:51:40.444816" elapsed="0.003414"/>
</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-19T00:51:40.444111" elapsed="0.004165"/>
</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-19T00:51:30.364974" elapsed="10.083388">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:51:40.448464" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:51:30.353019" elapsed="10.095541">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:51:30.352607" elapsed="10.096130"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:51:30.352467" elapsed="10.096318"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T00:51:28.623850" elapsed="11.824972"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T00:51:27.514177" elapsed="12.934708"/>
</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-19T00:51:40.451718" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.451599" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.451576" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:51:40.456468" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.456360" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.456341" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:51:40.457500" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:51:40.457107" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:51:40.457991" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:51:40.457683" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:51:40.458079" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:51:40.458239" level="INFO">${index_list} = [1, 2, 3]</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-19T00:51:40.456759" elapsed="0.001505"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:51:40.463475" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.463348" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.463329" elapsed="0.000213"/>
</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-19T00:51:40.464724" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.464596" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.464578" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:40.465287" 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-19T00:51:40.464931" elapsed="0.000383"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:40.465694" 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-19T00:51:40.465473" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:51:40.551100" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:51:40.466376" elapsed="0.084891"/>
</kw>
<msg time="2026-04-19T00:51:40.551400" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:51:40.551446" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.465873" elapsed="0.085609"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:51:40.692181" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:51:40.552174" elapsed="0.140281"/>
</kw>
<msg time="2026-04-19T00:51:40.692694" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:51:40.692763" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.551656" elapsed="0.141161"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:40.693409" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:40.692956" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.692918" elapsed="0.000844"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:40.694568" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:40.693971" elapsed="0.000728"/>
</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-19T00:51:40.695228" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:40.694798" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.694771" elapsed="0.000710"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:51:40.695537" elapsed="0.000052"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:40.698315" elapsed="0.001151"/>
</kw>
<kw name="Open 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-19T00:51:40.699933" elapsed="0.000345"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:40.700598" elapsed="0.000234"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:40.697241" elapsed="0.003679"/>
</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-19T00:51:40.695973" elapsed="0.005095"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:51:40.464311" elapsed="0.236860"/>
</kw>
<msg time="2026-04-19T00:51:40.701266" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:51:40.701310" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.463687" elapsed="0.237659"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:51:40.701532" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:51:40.701423" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.701404" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:40.702021" elapsed="0.000042"/>
</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-19T00:51:40.702377" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:51:40.702448" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:51:40.463057" elapsed="0.239497"/>
</kw>
<msg time="2026-04-19T00:51:40.702647" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:51:40.702690" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.458625" elapsed="0.244105"/>
</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-19T00:51:40.703164" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:40.702806" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.702789" elapsed="0.000453"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:51:40.458489" elapsed="0.244777"/>
</iter>
<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-19T00:51:40.708542" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.708434" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.708416" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:51:40.709796" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.709669" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.709651" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:40.710336" level="INFO">${karaf_connection_index} = 12</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-19T00:51:40.710002" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:40.710801" 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-19T00:51:40.710572" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:51:40.792125" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:51:40.711630" elapsed="0.080696"/>
</kw>
<msg time="2026-04-19T00:51:40.792530" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:51:40.792580" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.711126" elapsed="0.081491"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:51:40.923169" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:51:40.793446" elapsed="0.129898"/>
</kw>
<msg time="2026-04-19T00:51:40.923479" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:51:40.923524" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.792853" elapsed="0.130707"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:40.923928" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:40.923654" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.923627" elapsed="0.000582"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:51:40.924724" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "r "e "c "e "d "e "n "c "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:51:40.924357" elapsed="0.000457"/>
</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-19T00:51:40.925126" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:40.924881" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.924863" elapsed="0.000434"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:51:40.925337" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:51:40.927374" 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-19T00:51:40.928369" elapsed="0.000300"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:51:40.928987" elapsed="0.000252"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:51:40.926578" elapsed="0.002749"/>
</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-19T00:51:40.925647" elapsed="0.003813"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:51:40.709386" elapsed="0.220175"/>
</kw>
<msg time="2026-04-19T00:51:40.929656" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:51:40.929702" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.708756" elapsed="0.220982"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:51:40.929921" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:51:40.929814" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.929796" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:40.930430" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:51:40.931039" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:51:40.931169" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:51:40.708133" elapsed="0.223151"/>
</kw>
<msg time="2026-04-19T00:51:40.931379" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:51:40.931423" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:51:40.703539" elapsed="0.227919"/>
</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-19T00:51:40.931778" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:51:40.931534" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.931517" elapsed="0.000338"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:51:40.703401" elapsed="0.228477"/>
</iter>
<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-19T00:51:40.937260" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.937151" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.937132" 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-19T00:51:40.938509" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:51:40.938358" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:51:40.938340" elapsed="0.000239"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:51:40.939053" level="INFO">${karaf_connection_index} = 14</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-19T00:51:40.938718" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:51:40.939452" 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-19T00:51:40.939231" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:51:50.941194" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:51:40.940190" elapsed="10.002007">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:51:50.942440" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:51:50.942492" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:51:40.939637" elapsed="10.002880"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:52:00.944426" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:51:50.943504" elapsed="10.001847">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:52:00.945588" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:52:00.945638" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:51:50.942813" elapsed="10.002850"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:52:00.946992" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_precedence.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-19T00:52:00.946225" elapsed="0.000869">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_precedence.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:52:00.945790" elapsed="0.001443">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_precedence.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:52:00.945758" elapsed="0.001512">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_precedence.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-19T00:52:00.947433" 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-19T00:52:00.947661" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:00.947521" elapsed="0.000284"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:52:00.947504" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:52:00.947870" elapsed="0.000016"/>
</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-19T00:52:00.949998" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:52:00.951080" elapsed="0.000302"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:52:00.951796" elapsed="0.000274"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:52:00.949215" elapsed="0.002949"/>
</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-19T00:52:00.948200" elapsed="0.004099"/>
</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-19T00:51:40.938072" elapsed="20.014313">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_precedence.robot"</status>
</kw>
<msg time="2026-04-19T00:52:00.952489" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:52:00.952535" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_precedence....</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-19T00:51:40.937474" elapsed="20.015086"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:52:00.952753" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:00.952637" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:00.952619" elapsed="0.000201"/>
</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-19T00:52:00.953676" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:00.953569" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:00.953552" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:52:00.954062" 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-19T00:52:00.954168" 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-19T00:52:00.953901" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:52:00.954606" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:52:00.954342" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:52:00.955074" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:52:00.954816" elapsed="0.000302"/>
</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-19T00:52:00.955628" elapsed="0.000284"/>
</kw>
<msg time="2026-04-19T00:52:00.956009" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:52:00.956085" level="INFO">${old_connection_index} = 14</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-19T00:52:00.955271" elapsed="0.000838"/>
</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-19T00:52:00.957295" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:52:10.959523" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:52:00.958546" elapsed="10.001761">No match found for '
' in 10 seconds
Output:
.</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-19T00:52:00.957781" elapsed="10.002666"/>
</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-19T00:52:10.961745" elapsed="0.000355"/>
</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-19T00:52:10.960880" elapsed="0.001297"/>
</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-19T00:52:00.956399" elapsed="10.005863"/>
</kw>
<status status="PASS" start="2026-04-19T00:52:00.956183" elapsed="10.006133"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:00.956166" elapsed="10.006183"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:52:10.963432" level="INFO">${ip_address} = 10.30.171.206</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-19T00:52:10.962934" elapsed="0.000525"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:52:10.963512" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:52:10.963673" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:52:10.962597" 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-19T00:52:10.963865" elapsed="0.000462"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:52:10.964728" level="INFO">index=19
host=10.30.171.206
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-19T00:52:10.964841" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T00:52:10.964494" elapsed="0.000380"/>
</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-19T00:52:10.965110" elapsed="0.003807"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:52:10.969378" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:52:21.075568" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:52:10.969109" elapsed="10.107363">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:52:21.080499" elapsed="0.000982"/>
</kw>
<kw name="Open 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-19T00:52:21.081793" elapsed="0.000516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:52:21.082536" elapsed="0.000203"/>
</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-19T00:52:21.077716" elapsed="0.005112"/>
</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-19T00:52:21.076988" elapsed="0.005888"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:52:00.953319" elapsed="20.129648">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:52:21.083373" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:52:21.083454" elapsed="0.000020"/>
</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-19T00:51:40.936832" elapsed="40.146742">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:52:21.083696" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:52:21.083741" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:51:40.932286" elapsed="40.151478"/>
</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-19T00:52:21.084161" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:21.083852" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.083831" elapsed="0.000423"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:51:40.932008" elapsed="40.152283"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:51:40.458318" elapsed="40.626014"/>
</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-19T00:51:40.456064" elapsed="40.628341"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T00:51:40.449505" elapsed="40.634970"/>
</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-19T00:51:40.449056" elapsed="40.635468"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T00:51:27.508998" elapsed="53.575589"/>
</kw>
<kw name="DrbCommons_Init" owner="DrbCommons">
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.088502" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:52:21.088111" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.088990" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:52:21.088686" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:52:21.089078" elapsed="0.000050"/>
</return>
<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-19T00:52:21.085934" elapsed="0.003304"/>
</kw>
<msg time="2026-04-19T00:52:21.089359" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:52:21.085544" elapsed="0.003865"/>
</kw>
<msg time="2026-04-19T00:52:21.089511" level="INFO">${all_indices} = [1, 2, 3]</msg>
<var>${all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T00:52:21.085174" elapsed="0.004363"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.090047" level="INFO">${all_indices} = [1, 2, 3]</msg>
<arg>${all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:52:21.089699" elapsed="0.000392"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.093364" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:52:21.092932" elapsed="0.000460"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.093854" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:52:21.093548" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:52:21.093925" elapsed="0.000029"/>
</return>
<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-19T00:52:21.090875" elapsed="0.003193"/>
</kw>
<msg time="2026-04-19T00:52:21.094106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:52:21.090496" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T00:52:21.094251" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<var>${nonregistered_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T00:52:21.090283" elapsed="0.003993"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.094756" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<arg>${nonregistered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:52:21.094427" elapsed="0.000372"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.097973" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:52:21.097598" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.098469" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:52:21.098168" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:52:21.098538" elapsed="0.000028"/>
</return>
<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-19T00:52:21.095608" elapsed="0.003053"/>
</kw>
<msg time="2026-04-19T00:52:21.098697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:52:21.095243" elapsed="0.003498"/>
</kw>
<msg time="2026-04-19T00:52:21.098835" level="INFO">${active_indices} = [1, 2, 3]</msg>
<var>${active_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T00:52:21.095018" elapsed="0.003841"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.099349" level="INFO">${active_indices} = [1, 2, 3]</msg>
<arg>${active_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:52:21.099007" elapsed="0.000383"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.099767" level="INFO">${possible_constants} = []</msg>
<var>${possible_constants}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:52:21.099531" elapsed="0.000261"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.100280" level="INFO">${possible_constants} = []</msg>
<arg>${possible_constants}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:52:21.099940" elapsed="0.000380"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.100728" level="INFO">${registered_indices} = []</msg>
<var>${registered_indices}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T00:52:21.100476" elapsed="0.000277"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.101291" level="INFO">${registered_indices} = []</msg>
<arg>${registered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T00:52:21.100900" elapsed="0.000431"/>
</kw>
<doc>Resouce initial keyword. Creates several suite variables which are
used in other keywords and should be used im the test suites.</doc>
<status status="PASS" start="2026-04-19T00:52:21.084870" elapsed="0.016516"/>
</kw>
<doc>Create a list of possible constant responses on the node with unregistered rpc.</doc>
<status status="PASS" start="2026-04-19T00:51:27.508671" elapsed="53.592763"/>
</kw>
<test id="s1-s6-t1" name="Register_Rpc_On_Each_Node" line="31">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:52:21.104714" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:52:21.104446" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:52:21.106007" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.105897" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.105877" elapsed="0.000248"/>
</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-19T00:52:21.111067" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.110943" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.110924" elapsed="0.000214"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.112138" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:52:21.111733" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.112630" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:52:21.112320" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:52:21.112700" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:52:21.112860" level="INFO">${index_list} = [1, 2, 3]</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-19T00:52:21.111357" elapsed="0.001529"/>
</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-19T00:52:21.118250" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.118139" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.118120" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:52:21.119477" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.119368" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.119350" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:52:21.120001" 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-19T00:52:21.119683" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:52:21.120423" 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-19T00:52:21.120199" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:52:21.186852" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:52:21.120930" elapsed="0.066025"/>
</kw>
<msg time="2026-04-19T00:52:21.187163" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:52:21.187211" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:52:21.120601" elapsed="0.066645"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:52:21.236420" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:52:21.187750" elapsed="0.048817"/>
</kw>
<msg time="2026-04-19T00:52:21.236758" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:52:21.236807" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:52:21.187414" elapsed="0.049429"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:52:21.237246" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:21.236939" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.236911" elapsed="0.000421"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.237818" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:52:21.237473" elapsed="0.000416"/>
</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-19T00:52:21.238191" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:21.237957" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.237939" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:52:21.238307" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:52:21.239899" elapsed="0.000905"/>
</kw>
<kw name="Open 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-19T00:52:21.241212" elapsed="0.000539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:52:21.242060" elapsed="0.000418"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:52:21.239194" elapsed="0.003397"/>
</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-19T00:52:21.238615" elapsed="0.004051"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:52:21.119061" elapsed="0.123708"/>
</kw>
<msg time="2026-04-19T00:52:21.242863" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:52:21.242909" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "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-19T00:52:21.118470" elapsed="0.124477"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:52:21.243155" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:52:21.243041" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.243006" elapsed="0.000234"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:52:21.243644" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:52:21.243986" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:52:21.244075" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:52:21.117779" elapsed="0.126408"/>
</kw>
<msg time="2026-04-19T00:52:21.244282" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:52:21.244327" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:52:21.113292" elapsed="0.131070"/>
</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-19T00:52:21.244694" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:21.244438" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.244420" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:52:21.113151" elapsed="0.131646"/>
</iter>
<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-19T00:52:21.250184" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.250073" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.250053" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:52:21.251436" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.251327" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.251308" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:52:21.251991" level="INFO">${karaf_connection_index} = 12</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-19T00:52:21.251645" elapsed="0.000374"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:52:21.252420" 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-19T00:52:21.252192" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:52:21.317822" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:52:21.252944" elapsed="0.065180"/>
</kw>
<msg time="2026-04-19T00:52:21.318532" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:52:21.318638" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:52:21.252602" elapsed="0.066114"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:52:21.368257" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:52:21.319930" elapsed="0.048613"/>
</kw>
<msg time="2026-04-19T00:52:21.368757" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:52:21.368806" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:52:21.319136" elapsed="0.049709"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:52:21.369322" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:21.368951" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.368921" elapsed="0.000489"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:52:21.369936" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:52:21.369549" elapsed="0.000463"/>
</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-19T00:52:21.370318" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:21.370101" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.370082" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:52:21.370436" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:52:21.372272" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:52:21.373491" elapsed="0.000578"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:52:21.374356" elapsed="0.000417"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:52:21.371554" elapsed="0.003332"/>
</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-19T00:52:21.370746" elapsed="0.004208"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:52:21.250994" elapsed="0.124107"/>
</kw>
<msg time="2026-04-19T00:52:21.375199" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:52:21.375246" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "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-19T00:52:21.250403" elapsed="0.124882"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:52:21.375475" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:52:21.375365" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.375346" elapsed="0.000215"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:52:21.375959" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:52:21.376311" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:52:21.376384" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:52:21.249698" elapsed="0.126800"/>
</kw>
<msg time="2026-04-19T00:52:21.376592" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:52:21.376637" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:52:21.245093" elapsed="0.131582"/>
</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-19T00:52:21.377015" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:21.376751" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.376733" elapsed="0.000380"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:52:21.244927" elapsed="0.132210"/>
</iter>
<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-19T00:52:21.382611" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.382501" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.382481" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:52:21.383872" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:21.383762" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:21.383743" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:52:21.384431" level="INFO">${karaf_connection_index} = 19</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-19T00:52:21.384107" elapsed="0.000352"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:52:21.384838" 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-19T00:52:21.384615" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:52:31.386066" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:52:21.385407" elapsed="10.001613">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:52:31.387334" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:52:31.387384" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:52:21.385068" elapsed="10.002340"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:52:41.388776" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:52:31.388115" elapsed="10.001643">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:52:41.390108" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:52:41.390161" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:52:31.387647" elapsed="10.002539"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:52:41.391557" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Register_Rpc_On_Each_Node"</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-19T00:52:41.390698" elapsed="0.000927">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Register_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:52:41.390318" elapsed="0.001380">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Register_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:52:41.390281" elapsed="0.001454">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Register_Rpc_On_Each_Node"</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-19T00:52:41.391938" elapsed="0.000025"/>
</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-19T00:52:41.392529" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:52:41.392371" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:52:41.392015" elapsed="0.000596"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:52:41.392649" 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-19T00:52:41.394331" elapsed="0.000971"/>
</kw>
<kw name="Open 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-19T00:52:41.395610" elapsed="0.000599"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:52:41.396506" elapsed="0.000439"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:52:41.393576" elapsed="0.003501"/>
</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-19T00:52:41.392964" elapsed="0.004184"/>
</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-19T00:52:21.383411" elapsed="20.013825">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Register_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T00:52:41.397342" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:52:41.397389" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Register_Rpc_On_Each_Node"</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-19T00:52:21.382827" elapsed="20.014588"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:52:41.397613" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:41.397495" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:41.397474" elapsed="0.000208"/>
</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-19T00:52:41.398526" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:52:41.398416" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:41.398398" elapsed="0.000308"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:52:41.399027" 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-19T00:52:41.399208" 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-19T00:52:41.398870" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:52:41.399671" level="INFO">{1: 10, 2: 12, 3: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:52:41.399399" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:52:41.400175" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:52:41.399880" elapsed="0.000341"/>
</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-19T00:52:41.400734" elapsed="0.000311"/>
</kw>
<msg time="2026-04-19T00:52:41.401150" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:52:41.401198" level="INFO">${old_connection_index} = 19</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-19T00:52:41.400376" elapsed="0.000845"/>
</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-19T00:52:41.402019" elapsed="0.000234"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:52:51.404200" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:52:41.402926" elapsed="10.002457">No match found for '
' in 10 seconds
Output:
.</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-19T00:52:41.402418" elapsed="10.003106"/>
</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-19T00:52:51.406511" elapsed="0.000483"/>
</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-19T00:52:51.405843" elapsed="0.001266"/>
</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-19T00:52:41.401516" elapsed="10.005642"/>
</kw>
<status status="PASS" start="2026-04-19T00:52:41.401297" elapsed="10.005915"/>
</branch>
<status status="PASS" start="2026-04-19T00:52:41.401279" elapsed="10.005967"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:52:51.408262" level="INFO">${ip_address} = 10.30.171.206</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-19T00:52:51.407880" elapsed="0.000410"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:52:51.408343" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:52:51.408536" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:52:51.407493" elapsed="0.001068"/>
</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-19T00:52:51.408722" elapsed="0.000600"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:52:51.409627" level="INFO">index=24
host=10.30.171.206
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-19T00:52:51.409891" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.206
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-19T00:52:51.409503" elapsed="0.000414"/>
</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-19T00:52:51.410092" elapsed="0.003958"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:52:51.414485" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:53:01.484495" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:52:51.414216" elapsed="10.071193">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:53:01.501289" elapsed="0.000658"/>
</kw>
<kw name="Open 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-19T00:53:01.502157" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:53:01.502504" elapsed="0.000109"/>
</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-19T00:53:01.486660" elapsed="0.016009"/>
</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-19T00:53:01.485939" elapsed="0.016865"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:52:41.398112" elapsed="20.104802">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:53:01.503377" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:53:01.503463" elapsed="0.000022"/>
</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-19T00:52:21.381958" elapsed="40.121626">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:53:01.503701" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:53:01.503748" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:52:21.377404" elapsed="40.126368"/>
</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-19T00:53:01.504491" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:01.503862" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:01.503840" elapsed="0.000739"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:52:21.377265" elapsed="40.127348"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:52:21.112939" elapsed="40.391711"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:52:21.110576" elapsed="40.394136"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:52:21.105604" elapsed="40.399168"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:52:21.105175" elapsed="40.399645"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:52:21.102171" elapsed="40.402721"/>
</kw>
<kw name="Register_Action_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Register_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.507394" 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-19T00:53:01.507057" elapsed="0.000364"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:53:01.507468" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:53:01.507624" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:53:01.506690" elapsed="0.000959"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.508665" level="INFO">&amp;{mapping} = { CONTEXT=context | CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:53:01.507812" elapsed="0.000882"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.609638" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:01.609169" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:01.610605" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:01.610201" elapsed="0.000591">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:01.611081" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:01.609843" elapsed="0.001265"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.611752" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:01.611271" elapsed="0.000509"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:53:01.612124" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:53:01.612359" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:53:01.611935" elapsed="0.000450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.612814" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.612539" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.614498" level="INFO">mapping: {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.613740" elapsed="0.000908"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.615806" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:53:01.614939" elapsed="0.000911"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.617320" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:53:01.616798" elapsed="0.000581"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:53:01.618608" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:53:01.618357" elapsed="0.000277"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:53:01.618691" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:53:01.619016" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:53:01.617874" elapsed="0.001249"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:01.619464" elapsed="0.000357"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:53:01.616454" elapsed="0.003430"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.621077" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:53:01.620567" elapsed="0.000549"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:53:01.622258" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:53:01.622038" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:53:01.622335" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:53:01.622642" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:53:01.621583" elapsed="0.001095"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:01.623017" elapsed="0.000479"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-19T00:53:01.620231" elapsed="0.003324"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:53:01.616007" elapsed="0.007686"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:53:01.623907" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:53:01.624211" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:53:01.613313" elapsed="0.010926"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:01.612941" elapsed="0.011332"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.624445" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:01.624300" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:01.612915" elapsed="0.011607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.625181" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:01.624662" elapsed="0.000547"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:53:01.625258" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:53:01.608543" elapsed="0.016837"/>
</kw>
<msg time="2026-04-19T00:53:01.625434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:01.596182" elapsed="0.029303"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.637798" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.649797" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.661563" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.661756" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.661931" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.662309" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:01.662170" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:53:01.662154" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.662523" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.662683" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.662841" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:53:01.662125" elapsed="0.000769"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:53:01.662007" elapsed="0.000913"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.663072" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:53:01.663149" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:53:01.663259" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:53:01.591984" elapsed="0.071301"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.687317" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:01.686848" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:01.688167" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:01.687830" elapsed="0.000512">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:01.688642" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:01.687503" elapsed="0.001166"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.689287" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:01.688827" elapsed="0.000487"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:53:01.689628" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:53:01.689811" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:53:01.689469" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.690282" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.689995" elapsed="0.000337"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:53:01.690732" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:01.690399" elapsed="0.000393"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.691530" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:01.690953" elapsed="0.000604"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:01.690816" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:01.690381" elapsed="0.001233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.692386" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:01.691755" elapsed="0.000661"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:53:01.692466" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:53:01.686244" elapsed="0.006348"/>
</kw>
<msg time="2026-04-19T00:53:01.692646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:01.674172" elapsed="0.018522"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.704810" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.717000" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.728816" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.729021" elapsed="0.000036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.729211" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.729595" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:01.729453" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:53:01.729436" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.729813" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.730040" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.730205" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:53:01.729400" elapsed="0.000857"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:53:01.729290" elapsed="0.000994"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.730424" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:53:01.730502" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:53:01.730647" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:53:01.673308" elapsed="0.057368"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:01.732193" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:01.731870" elapsed="0.000398">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:01.732362" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:01.731490" elapsed="0.000897"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:01.732712" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:01.732458" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.733278" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:01.732966" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:01.732792" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:01.732439" elapsed="0.000923"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.735621" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:01.733506" elapsed="0.002142"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:53:01.735700" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:53:01.735856" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:53:01.731122" elapsed="0.004764"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.737416" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.737164" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.737845" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.737608" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.738294" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.738050" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.738770" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.738525" elapsed="0.000289"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:53:01.739661" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:53:01.739461" elapsed="0.000226"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:53:01.740007" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:53:01.739833" elapsed="0.000214"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:01.740193" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:01.740846" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:01.740598" elapsed="0.000297"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:53:01.740938" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:53:01.741108" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:53:01.739051" elapsed="0.002082"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:53:02.250257" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '317', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:53:02.250422" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node0qn1uio67gisz1r9j7rdoxpglo0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 00:53:02 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T00:53:02.250712" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:53:01.743385" elapsed="0.507396"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:01.741203" elapsed="0.509737"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.251468" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.251021" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:01.741185" elapsed="0.510497"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.259890" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.254351" elapsed="0.005652"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.253775" elapsed="0.006410"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.253728" elapsed="0.006521"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.263320" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.260879" elapsed="0.002490"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.260379" elapsed="0.003025"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.260340" elapsed="0.003090"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.264081" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.263616" elapsed="0.000500"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.264454" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.264209" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.265003" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.264696" elapsed="0.000369"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.264540" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.264185" elapsed="0.000954"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.265718" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.265331" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.266112" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.265831" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.266777" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.266424" elapsed="0.000384"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.266227" elapsed="0.000622"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.265810" elapsed="0.001064"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:02.267071" elapsed="0.000410"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:53:02.267995" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.267666" elapsed="0.000381"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.268223" elapsed="0.002343"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:53:02.252664" elapsed="0.018028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:53:02.270879" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T00:53:02.270767" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.270748" elapsed="0.000225"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.271140" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:53:02.271209" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:53:02.273411" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:53:01.736224" elapsed="0.537214"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:53:02.273510" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:53:02.273664" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:53:01.581022" elapsed="0.692666"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.274025" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.273793" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.273776" elapsed="0.000356"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:53:02.274166" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:53:02.274315" level="INFO">${text} = </msg>
<var>${text}</var>
<arg>${REGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:53:01.508965" elapsed="0.765375"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Invoke register-bound-constant rpc and register get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T00:53:01.506154" elapsed="0.768252"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.274942" elapsed="0.000243"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:53:02.275332" elapsed="0.000151"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the [] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:53:02.274626" elapsed="0.000913"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.276062" elapsed="0.000192"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.276400" elapsed="0.000186"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:53:02.276729" elapsed="0.000148"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:53:02.277015" elapsed="0.000165"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:53:02.275715" elapsed="0.001519"/>
</kw>
<arg>${index}</arg>
<doc>Register routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:53:01.505725" elapsed="0.771560"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:53:01.505559" elapsed="0.771759"/>
</iter>
<iter>
<kw name="Register_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.279348" level="INFO">${session} = ClusterManagement__session_2</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-19T00:53:02.279018" elapsed="0.000356"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:53:02.279421" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:53:02.279572" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:53:02.278643" elapsed="0.000954"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.280319" level="INFO">&amp;{mapping} = { CONTEXT=context | CONSTANT=constant-2 }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.279756" elapsed="0.000593"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.313530" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.313072" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:02.314436" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:02.314074" elapsed="0.000556">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:02.314912" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:02.313718" elapsed="0.001220"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.315576" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:02.315119" elapsed="0.000486"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:53:02.315952" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:53:02.316130" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:53:02.315774" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.316578" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.316309" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.318231" level="INFO">mapping: {'CONTEXT': 'context', 'CONSTANT': 'constant-2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.317488" elapsed="0.000896"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.319424" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.318681" elapsed="0.000788"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.320971" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:53:02.320471" elapsed="0.000539"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:53:02.322365" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.322133" elapsed="0.000258"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:53:02.322446" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:53:02.322766" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:53:02.321663" elapsed="0.001142"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.323381" elapsed="0.000362"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:53:02.320119" elapsed="0.003685"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.325000" level="INFO">${value} = constant-2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:53:02.324503" elapsed="0.000555"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:53:02.326222" level="INFO">${encoded} = constant-2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.325984" elapsed="0.000265"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:53:02.326300" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:53:02.326610" level="INFO">${encoded_value} = constant-2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:53:02.325534" elapsed="0.001113"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.326989" elapsed="0.000509"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-2</var>
<status status="PASS" start="2026-04-19T00:53:02.324161" elapsed="0.003395"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:53:02.319624" elapsed="0.008047"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:53:02.327909" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:53:02.328272" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:53:02.317053" elapsed="0.011247"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.316694" elapsed="0.011639"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.328510" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.328360" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.316674" elapsed="0.011916"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.329301" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.328733" elapsed="0.000597"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:53:02.329382" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:53:02.312358" elapsed="0.017154"/>
</kw>
<msg time="2026-04-19T00:53:02.329570" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:02.299974" elapsed="0.029653"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.341993" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.353958" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.365864" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.366103" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.366287" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.366693" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.366545" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:53:02.366528" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.366931" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.367115" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.367277" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:53:02.366489" elapsed="0.000844"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:53:02.366371" elapsed="0.000990"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.367535" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:53:02.367619" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T00:53:02.367832" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:53:02.295793" elapsed="0.072071"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.392630" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.392162" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:02.393552" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:02.393179" elapsed="0.000565">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:02.394023" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:02.392821" elapsed="0.001247"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.394692" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:02.394233" elapsed="0.000487"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:53:02.395064" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:53:02.395229" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:53:02.394877" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.395702" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.395426" elapsed="0.000327"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:53:02.396192" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.395822" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.396972" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.396422" elapsed="0.000577"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.396282" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.395803" elapsed="0.001271"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.397848" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.397216" elapsed="0.000664"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:53:02.397931" elapsed="0.000034"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:53:02.391519" elapsed="0.006571"/>
</kw>
<msg time="2026-04-19T00:53:02.398149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:02.378892" elapsed="0.019307"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.410181" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.422285" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.434222" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.434460" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.434643" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.435060" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.434898" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:53:02.434881" elapsed="0.000289"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.435311" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.435472" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.435632" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:53:02.434842" elapsed="0.000843"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:53:02.434727" elapsed="0.000986"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.435867" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:53:02.435950" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T00:53:02.436115" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:53:02.377983" elapsed="0.058163"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:02.437514" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:02.437223" elapsed="0.000369">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:02.437686" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:02.436829" elapsed="0.000882"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.438052" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.437782" elapsed="0.000336"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.438728" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.438373" elapsed="0.000382"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.438149" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.437763" elapsed="0.001051"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.441345" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:02.438959" elapsed="0.002413"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:53:02.441472" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:53:02.441633" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:53:02.436484" elapsed="0.005175"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.443220" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.442934" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.443657" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.443416" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.444138" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.443862" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.444581" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.444333" elapsed="0.000292"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:53:02.445453" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:53:02.445248" elapsed="0.000232"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:53:02.445805" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:53:02.445630" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.445977" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.446612" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.446362" elapsed="0.000294"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:53:02.446699" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:53:02.446860" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:53:02.444827" elapsed="0.002058"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:53:02.973445" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '317', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:53:02.973607" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node01wzmzketkvtvqfhi1v3znzshf0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 00:53:02 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T00:53:02.973872" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:53:02.449010" elapsed="0.524938"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.446955" elapsed="0.527154"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.974578" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.974178" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.446937" elapsed="0.527843"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.982004" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.977324" elapsed="0.004750"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.976781" elapsed="0.005331"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.976739" elapsed="0.005398"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.984794" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:02.982479" elapsed="0.002362"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.982198" elapsed="0.002679"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.982176" elapsed="0.002727"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.985539" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.985103" elapsed="0.000464"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.985938" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.985642" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.986504" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.986199" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.986023" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.985623" elapsed="0.000965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.987128" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.986738" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.987448" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.987224" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:02.987970" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:02.987677" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:02.987528" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.987206" elapsed="0.000865"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:02.988220" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:53:02.989061" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:02.988748" elapsed="0.000340"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.989250" elapsed="0.002270"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:53:02.975653" elapsed="0.015932"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:53:02.991766" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-19T00:53:02.991657" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.991638" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.992001" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:53:02.992088" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:53:02.994296" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:53:02.441984" elapsed="0.552338"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:53:02.994393" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:53:02.994544" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:53:02.284883" elapsed="0.709686"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:02.994903" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:02.994672" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:02.994655" elapsed="0.000344"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:53:02.995047" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:53:02.995198" level="INFO">${text} = </msg>
<var>${text}</var>
<arg>${REGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:53:02.280609" elapsed="0.714614"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Invoke register-bound-constant rpc and register get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T00:53:02.277968" elapsed="0.717318"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.995818" elapsed="0.000242"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:53:02.996245" elapsed="0.000168"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-1'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:53:02.995508" elapsed="0.000960"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.996951" elapsed="0.000203"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:53:02.997300" elapsed="0.000185"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:53:02.997630" elapsed="0.000147"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:53:02.997918" elapsed="0.000174"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:53:02.996647" elapsed="0.001501"/>
</kw>
<arg>${index}</arg>
<doc>Register routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:53:02.277570" elapsed="0.720629"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:53:02.277412" elapsed="0.720818"/>
</iter>
<iter>
<kw name="Register_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.000011" level="INFO">${session} = ClusterManagement__session_3</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-19T00:53:02.999716" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:53:03.000103" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:53:03.000258" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:53:02.999384" elapsed="0.000900"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.000878" level="INFO">&amp;{mapping} = { CONTEXT=context | CONSTANT=constant-3 }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:53:03.000442" elapsed="0.000464"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.033808" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:03.033362" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:03.034689" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:03.034342" elapsed="0.000538">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:03.035171" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:03.033992" elapsed="0.001204"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.035798" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:03.035354" elapsed="0.000471"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:53:03.036169" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:53:03.036324" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:53:03.035978" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.036763" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.036497" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.038388" level="INFO">mapping: {'CONTEXT': 'context', 'CONSTANT': 'constant-3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.037661" elapsed="0.000885"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.039574" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:53:03.038840" elapsed="0.000777"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.041145" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:53:03.040628" elapsed="0.000565"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:53:03.042645" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:53:03.042378" elapsed="0.000295"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:53:03.042727" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T00:53:03.043140" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:53:03.041740" elapsed="0.001439"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:03.043514" elapsed="0.000344"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:53:03.040290" elapsed="0.003625"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.045111" level="INFO">${value} = constant-3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:53:03.044607" elapsed="0.000542"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:53:03.046461" level="INFO">${encoded} = constant-3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:53:03.046242" elapsed="0.000245"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:53:03.046538" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:53:03.046839" level="INFO">${encoded_value} = constant-3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:53:03.045610" elapsed="0.001266"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:03.047379" elapsed="0.000326"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-3</var>
<status status="PASS" start="2026-04-19T00:53:03.044276" elapsed="0.003488"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:53:03.039770" elapsed="0.008104"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:53:03.048139" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:53:03.048422" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:53:03.037234" elapsed="0.011214"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:03.036874" elapsed="0.011607"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.048651" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:03.048507" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:03.036855" elapsed="0.011874"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.049422" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:03.048865" elapsed="0.000585"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:53:03.049499" elapsed="0.000068"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:53:03.032742" elapsed="0.016924"/>
</kw>
<msg time="2026-04-19T00:53:03.049719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:03.020511" elapsed="0.029260"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.064427" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.076406" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.088343" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.088575" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.088747" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.089125" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:03.088971" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:53:03.088955" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.089340" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.089501" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.089661" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:53:03.088925" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:53:03.088822" elapsed="0.000919"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.089881" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:53:03.089956" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:53:03.090083" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:53:03.016380" elapsed="0.073729"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.114253" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:03.113783" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:03.115122" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:03.114766" elapsed="0.000587">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:03.115621" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:03.114439" elapsed="0.001208"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.116332" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:03.115830" elapsed="0.000529"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:53:03.116675" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:53:03.116833" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:53:03.116513" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.117295" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.117009" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:53:03.117787" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:03.117412" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.119862" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:03.118016" elapsed="0.001874"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:03.117874" elapsed="0.002052"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:03.117393" elapsed="0.002556"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.120733" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:53:03.120108" elapsed="0.000656"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:53:03.120815" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:53:03.113176" elapsed="0.007773"/>
</kw>
<msg time="2026-04-19T00:53:03.121005" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:53:03.100918" elapsed="0.020152"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.133101" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.145135" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.157725" elapsed="0.000037"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.158057" elapsed="0.000030"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.158285" elapsed="0.000026"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.158779" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:03.158592" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:53:03.158570" elapsed="0.000311"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.159104" elapsed="0.000029"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.159318" elapsed="0.000026"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.159539" elapsed="0.000027"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:53:03.158525" elapsed="0.001084"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:53:03.158384" elapsed="0.001308"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.159881" elapsed="0.000026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:53:03.160074" elapsed="0.000022"/>
</return>
<msg time="2026-04-19T00:53:03.160261" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:53:03.100065" elapsed="0.060233"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:53:03.162094" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:53:03.161697" elapsed="0.000498">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:53:03.162317" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:53:03.161208" elapsed="0.001141"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:53:03.162777" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:53:03.162444" elapsed="0.000405"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.163533" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:53:03.163126" elapsed="0.000443"/>
</kw>
<status status="PASS" start="2026-04-19T00:53:03.162881" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T00:53:03.162418" elapsed="0.001222"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.166163" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:53:03.163832" elapsed="0.002358"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:53:03.166245" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:53:03.166409" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:53:03.160744" elapsed="0.005690"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.168007" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.167750" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.168459" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-3&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.168220" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.168897" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.168653" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.169345" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.169103" elapsed="0.000285"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:53:03.170376" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:53:03.170047" elapsed="0.000357"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:53:03.170731" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:53:03.170554" elapsed="0.000203"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:53:03.170903" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:53:03.171657" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:53:03.171286" elapsed="0.000417"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:53:03.171746" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:53:03.171902" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:53:03.169631" elapsed="0.002297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:55:08.267616" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:53:03.174290" elapsed="125.097414">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:53:03.172000" elapsed="125.099916">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.272500" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.272049" elapsed="0.000621"/>
</branch>
<status status="FAIL" start="2026-04-19T00:53:03.171981" elapsed="125.100756">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.273826" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.274223" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.274129" elapsed="0.000155"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:08.274079" elapsed="0.000243"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.274549" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.274647" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:53:03.166775" elapsed="125.108047">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.274946" elapsed="0.000023"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:53:03.005629" elapsed="125.269488">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.275599" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.275292" elapsed="0.000427"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:08.275268" elapsed="0.000494"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.275820" elapsed="0.000023"/>
</return>
<var>${text}</var>
<arg>${REGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:53:03.001167" elapsed="125.274817">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Invoke register-bound-constant rpc and register get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="FAIL" start="2026-04-19T00:53:02.998887" elapsed="125.277271">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.276511" elapsed="0.000036"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.276794" elapsed="0.000033"/>
</kw>
<arg>${index}</arg>
<doc>Register routed rpc on given node of the cluster.</doc>
<status status="FAIL" start="2026-04-19T00:53:02.998488" elapsed="125.278458">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:53:02.998330" elapsed="125.278715">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:53:01.505417" elapsed="126.771728">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Register global rpc on given nodes of the cluster.</doc>
<status status="FAIL" start="2026-04-19T00:53:01.505170" elapsed="126.772117">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.279190" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.278573" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.278547" elapsed="0.000768"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:08.279518" elapsed="0.000549"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.286965" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:08.286507" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:55:08.287236" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.287088" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.287069" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.287742" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:08.287439" elapsed="0.000330"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:55:08.288243" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Precedence_Register_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:55:08.287948" elapsed="0.000323"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:55:08.288605" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:55:08.288427" elapsed="0.000204"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.289179" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:08.288778" elapsed="0.000429"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.289678" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:08.289363" elapsed="0.000343"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.290316" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:55:08.289854" elapsed="0.000514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.290815" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:08.290517" elapsed="0.000347"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:55:08.286188" elapsed="0.004730"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:08.278279" elapsed="0.012688"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:55:08.277713" elapsed="0.013294"/>
</kw>
<doc>Register routed rpc on each node of the cluster.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:52:21.101497" elapsed="167.189564">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_register_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s6-t2" name="Invoke_Rpc_On_Each_Node" line="35">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:55:08.294266" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:55:08.293991" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.295562" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.295452" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.295433" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.300474" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.300368" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.300350" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.301546" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:55:08.301165" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.302044" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:55:08.301726" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:55:08.302117" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T00:55:08.302277" level="INFO">${index_list} = [1, 2, 3]</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-19T00:55:08.300770" elapsed="0.001532"/>
</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-19T00:55:08.307956" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.307840" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.307819" elapsed="0.000224"/>
</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-19T00:55:08.309331" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.309221" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.309200" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:55:08.309918" 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-19T00:55:08.309589" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:55:08.310348" 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-19T00:55:08.310120" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:55:08.364459" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:55:08.310860" elapsed="0.053721"/>
</kw>
<msg time="2026-04-19T00:55:08.364760" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:55:08.364807" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:55:08.310529" elapsed="0.054332"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:55:08.441470" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:55:08.365445" elapsed="0.076211"/>
</kw>
<msg time="2026-04-19T00:55:08.441878" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:55:08.441926" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:55:08.365081" elapsed="0.076881"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.442419" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.442100" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.442068" elapsed="0.000437"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.443090" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:08.442658" elapsed="0.000536"/>
</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-19T00:55:08.443489" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.443269" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.443249" elapsed="0.000318"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:55:08.443605" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:08.445360" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:55:08.446673" elapsed="0.000566"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:55:08.447528" elapsed="0.000422"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:55:08.444564" elapsed="0.003521"/>
</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-19T00:55:08.443925" elapsed="0.004228"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:55:08.308867" elapsed="0.139399"/>
</kw>
<msg time="2026-04-19T00:55:08.448367" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:55:08.448423" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:55:08.308202" elapsed="0.140259"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:55:08.448653" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:55:08.448541" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.448522" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.449197" elapsed="0.000036"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.449553" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.449626" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:55:08.307474" elapsed="0.142264"/>
</kw>
<msg time="2026-04-19T00:55:08.449836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:55:08.449882" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:55:08.302664" elapsed="0.147254"/>
</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-19T00:55:08.450287" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.449996" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.449977" elapsed="0.000390"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:55:08.302529" elapsed="0.147871"/>
</iter>
<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-19T00:55:08.456244" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.456134" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.456115" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.457495" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.457388" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.457370" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:55:08.458016" level="INFO">${karaf_connection_index} = 12</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-19T00:55:08.457702" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:55:08.458433" 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-19T00:55:08.458213" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:55:08.518753" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:55:08.458940" elapsed="0.059998"/>
</kw>
<msg time="2026-04-19T00:55:08.519211" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:55:08.519262" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:55:08.458613" elapsed="0.060685"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:55:08.561776" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:55:08.519995" elapsed="0.042074"/>
</kw>
<msg time="2026-04-19T00:55:08.562535" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:55:08.562606" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:55:08.519563" elapsed="0.043097"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.563288" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.562824" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.562775" elapsed="0.000604"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:08.563949" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:08.563520" elapsed="0.000502"/>
</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-19T00:55:08.564331" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.564116" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.564096" elapsed="0.000312"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:55:08.564447" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:08.566110" elapsed="0.000871"/>
</kw>
<kw name="Open 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-19T00:55:08.567304" elapsed="0.000529"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:55:08.568138" elapsed="0.000418"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:55:08.565383" elapsed="0.003282"/>
</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-19T00:55:08.564771" elapsed="0.003960"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:55:08.457078" elapsed="0.111755"/>
</kw>
<msg time="2026-04-19T00:55:08.568931" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:55:08.568978" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:55:08.456462" elapsed="0.112552"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:55:08.569226" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:55:08.569116" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.569097" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.569721" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:08.570272" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.570345" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:55:08.455768" elapsed="0.114688"/>
</kw>
<msg time="2026-04-19T00:55:08.570552" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:55:08.570596" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:55:08.450675" elapsed="0.119958"/>
</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-19T00:55:08.571021" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:08.570711" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.570694" elapsed="0.000420"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:55:08.450535" elapsed="0.120603"/>
</iter>
<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-19T00:55:08.576661" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.576553" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.576534" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:55:08.577868" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:08.577761" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:08.577743" elapsed="0.000244"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:55:08.578476" level="INFO">${karaf_connection_index} = 24</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-19T00:55:08.578159" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:55:08.578878" 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-19T00:55:08.578658" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:55:18.580184" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:55:08.579415" elapsed="10.001863">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:55:18.581597" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:55:18.581648" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:55:08.579079" elapsed="10.002594"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:55:28.582825" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:55:18.582416" elapsed="10.001196">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:55:28.583895" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:55:28.583945" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:55:18.581950" elapsed="10.002020"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:55:28.585302" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node"</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-19T00:55:28.584473" elapsed="0.000897">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:55:28.584118" elapsed="0.001326">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:55:28.584083" elapsed="0.001397">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node"</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-19T00:55:28.585653" 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-19T00:55:28.585879" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:28.585741" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:28.585724" elapsed="0.000233"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:55:28.585997" 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-19T00:55:28.587682" elapsed="0.001009"/>
</kw>
<kw name="Open 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-19T00:55:28.589003" elapsed="0.000571"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:55:28.589864" elapsed="0.000501"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:55:28.586926" elapsed="0.003552"/>
</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-19T00:55:28.586336" elapsed="0.004212"/>
</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-19T00:55:08.577459" elapsed="20.013178">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T00:55:28.590745" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:55:28.590790" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node"</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-19T00:55:08.576875" elapsed="20.013939"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:55:28.591059" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:28.590926" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:28.590873" elapsed="0.000259"/>
</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-19T00:55:28.591950" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:55:28.591843" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:28.591824" elapsed="0.000192"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:55:28.592673" 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-19T00:55:28.592904" 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-19T00:55:28.592307" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:28.593373" level="INFO">{1: 10, 2: 12, 3: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:28.593102" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:28.593807" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:28.593565" 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-19T00:55:28.594395" elapsed="0.000276"/>
</kw>
<msg time="2026-04-19T00:55:28.594769" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:55:28.594815" level="INFO">${old_connection_index} = 24</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-19T00:55:28.594002" elapsed="0.000836"/>
</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-19T00:55:28.595659" elapsed="0.000201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:55:38.597447" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:55:28.596553" elapsed="10.002059">No match found for '
' in 10 seconds
Output:
.</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-19T00:55:28.596021" elapsed="10.002736"/>
</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-19T00:55:38.599648" elapsed="0.000521"/>
</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-19T00:55:38.599043" elapsed="0.001218"/>
</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-19T00:55:28.595156" elapsed="10.005155"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:28.594913" elapsed="10.005453"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:28.594895" elapsed="10.005507"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:55:38.601453" level="INFO">${ip_address} = 10.30.171.206</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-19T00:55:38.601044" elapsed="0.000436"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:55:38.601534" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:55:38.601698" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:55:38.600655" elapsed="0.001068"/>
</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-19T00:55:38.601878" elapsed="0.000479"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:55:38.602645" level="INFO">index=29
host=10.30.171.206
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-19T00:55:38.602747" level="INFO">${karaf_connection_object} = index=29
host=10.30.171.206
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-19T00:55:38.602525" 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-19T00:55:38.602917" elapsed="0.002432"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:55:38.605778" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:55:48.715062" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:55:38.605512" elapsed="10.110418">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:55:48.730533" elapsed="0.001226"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.731934" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:55:48.732276" 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-19T00:55:48.717487" elapsed="0.014944"/>
</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-19T00:55:48.716456" elapsed="0.016024"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:55:28.591541" elapsed="20.141110">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:55:48.733022" elapsed="0.000053"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:55:48.733130" elapsed="0.000022"/>
</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-19T00:55:08.576203" elapsed="40.157043">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:55:48.733366" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:55:48.733411" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:55:08.571416" elapsed="40.162019"/>
</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-19T00:55:48.733784" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.733529" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.733507" elapsed="0.000355"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:55:08.571277" elapsed="40.162610"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:55:08.302356" elapsed="40.431564"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:55:08.299995" elapsed="40.433985"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:55:08.295159" elapsed="40.438895"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:55:08.294671" elapsed="40.439433"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:55:08.291876" elapsed="40.442283"/>
</kw>
<kw name="Verify_Contexted_Constant_On_Registered_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.740719" 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-19T00:55:48.740411" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:55:48.740793" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:55:48.740945" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:55:48.740067" elapsed="0.000903"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.741544" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.741154" elapsed="0.000418"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.774365" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:48.773901" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:48.775294" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:48.774889" elapsed="0.000581">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:48.775733" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:48.774552" elapsed="0.001207"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.776415" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:48.775945" elapsed="0.000498"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:55:48.776767" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:55:48.776997" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:55:48.776600" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.777498" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.777194" elapsed="0.000350"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.779146" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.778436" elapsed="0.000867"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.780316" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.779595" elapsed="0.000764"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.781789" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:55:48.781284" elapsed="0.000542"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:55:48.783055" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.782807" elapsed="0.000275"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:55:48.783142" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:55:48.783457" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:55:48.782312" elapsed="0.001182"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.783834" elapsed="0.000406"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:55:48.780925" elapsed="0.003372"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:55:48.780513" elapsed="0.003896"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:55:48.784617" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:55:48.784912" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:55:48.777975" elapsed="0.006965"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.777619" elapsed="0.007354"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.785158" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.784998" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.777596" elapsed="0.007640"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.785893" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:48.785375" elapsed="0.000546"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:55:48.785969" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:55:48.773282" elapsed="0.012828"/>
</kw>
<msg time="2026-04-19T00:55:48.786165" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:48.761073" elapsed="0.025142"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.798596" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.810599" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.822495" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.822720" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.822889" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.823306" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.823128" elapsed="0.000239"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:48.823113" elapsed="0.000277"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.823525" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.823687" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.823845" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:55:48.823084" elapsed="0.000815"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:55:48.822964" elapsed="0.000960"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.824080" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:48.824157" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:55:48.824266" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:55:48.756962" elapsed="0.067330"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.848072" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:48.847610" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:48.848899" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:48.848591" elapsed="0.000496">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:48.849352" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:48.848264" elapsed="0.001113"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.850008" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:48.849534" elapsed="0.000515"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:55:48.850366" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:55:48.850496" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:55:48.850206" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.850941" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.850674" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:55:48.851407" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.851074" elapsed="0.000426"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.852232" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:48.851673" elapsed="0.000587"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.851525" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.851055" elapsed="0.001262"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.853084" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:48.852457" elapsed="0.000657"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:55:48.853164" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:55:48.846994" elapsed="0.006296"/>
</kw>
<msg time="2026-04-19T00:55:48.853344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:48.834831" elapsed="0.018560"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.865420" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.877270" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.889143" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.889331" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.889497" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.889847" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.889709" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:48.889695" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.890074" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.890260" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.890419" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:55:48.889667" elapsed="0.000804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:55:48.889570" elapsed="0.000926"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.890632" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:48.890738" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T00:55:48.890862" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:55:48.833985" elapsed="0.056905"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:48.892147" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:48.891884" elapsed="0.000326">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:48.892302" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:48.891550" elapsed="0.000777"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.892637" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.892397" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.893196" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:48.892887" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.892718" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.892379" elapsed="0.000899"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.895529" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:48.893420" elapsed="0.002135"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:55:48.895606" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:55:48.895757" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:55:48.891232" elapsed="0.004549"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.897292" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.897044" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.897717" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.897481" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.898164" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.897905" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.898619" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.898380" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:55:48.899485" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:55:48.899290" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:55:48.899831" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:55:48.899657" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.899997" elapsed="0.000225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.900615" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.900372" elapsed="0.000287"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:55:48.900701" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:55:48.900852" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:55:48.898854" elapsed="0.002023"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:55:48.935708" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0qn1uio67gisz1r9j7rdoxpglo0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:55:48.935887" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:55:48.936002" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:55:48.903135" elapsed="0.032923"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.900945" elapsed="0.035160"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.936287" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.936133" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.900928" elapsed="0.035448"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.940068" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.937397" elapsed="0.002791"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.937182" elapsed="0.003087"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.937163" elapsed="0.003163"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.946243" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:48.940932" elapsed="0.005418"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.940450" elapsed="0.005979"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.940413" elapsed="0.006113"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.947677" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:48.946898" elapsed="0.000805"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.948002" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.947772" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.948551" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:48.948255" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.948101" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.947754" elapsed="0.000885"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.949163" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:48.948789" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.949483" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.949259" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.950004" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:48.949713" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:48.949562" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.949241" elapsed="0.000862"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:48.950249" elapsed="0.000364"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:55:48.951077" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:48.950769" elapsed="0.000336"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.951254" elapsed="0.002268"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:55:48.936727" elapsed="0.016859"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:55:48.953766" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T00:55:48.953657" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.953639" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.953998" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:55:48.954082" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:55:48.956325" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:55:48.896119" elapsed="0.060235"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:55:48.956466" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:55:48.956623" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:55:48.746133" elapsed="0.210517"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:48.956987" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:48.956755" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:48.956737" elapsed="0.000361"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:55:48.957131" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:55:48.957282" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:55:48.741825" elapsed="0.215484"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:55:48.957804" level="INFO">${xml} = &lt;Element 'output' at 0x7826f6e052b0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:55:48.957466" elapsed="0.000366"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:55:48.958293" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:55:48.957981" elapsed="0.000338"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:55:48.958367" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:55:48.958517" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:55:48.739629" elapsed="0.218913"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:55:48.958714" elapsed="0.000372"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:55:48.959134" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:55:48.734960" elapsed="0.224296"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:55:48.734761" elapsed="0.224530"/>
</iter>
<iter>
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.966287" level="INFO">${session} = ClusterManagement__session_2</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-19T00:55:48.965967" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:55:48.966362" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:55:48.966511" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:55:48.965626" elapsed="0.000910"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.967114" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:55:48.966711" elapsed="0.000431"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:48.999858" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:48.999418" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.000720" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.000393" elapsed="0.000505">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:49.001192" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:49.000060" elapsed="0.001191"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.001862" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:49.001413" elapsed="0.000476"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.002222" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:55:49.002363" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:55:49.002060" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.002804" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.002539" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.004467" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.003727" elapsed="0.000892"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.005629" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.004905" elapsed="0.000767"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.007329" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:55:49.006651" elapsed="0.000717"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:55:49.008529" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.008307" elapsed="0.000248"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:55:49.008606" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:55:49.008910" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:55:49.007839" elapsed="0.001108"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.009348" elapsed="0.000386"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:55:49.006250" elapsed="0.003543"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:55:49.005823" elapsed="0.004083"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:55:49.010139" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:55:49.010420" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:55:49.003297" elapsed="0.007150"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.002943" elapsed="0.007536"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.010646" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.010504" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.002924" elapsed="0.007798"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.011377" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:49.010858" elapsed="0.000546"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:55:49.011453" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:55:48.998786" elapsed="0.012788"/>
</kw>
<msg time="2026-04-19T00:55:49.011626" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:48.986507" elapsed="0.025167"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.023854" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.035749" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.047607" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.047793" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.047962" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.048425" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.048278" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:49.048182" elapsed="0.000323"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.048639" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.048800" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.048960" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:55:49.048154" elapsed="0.000858"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.048052" elapsed="0.001005"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.049200" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.049276" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:55:49.049384" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:55:48.982373" elapsed="0.067037"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.073236" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.072770" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.074058" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.073746" elapsed="0.000477">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:49.074486" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:49.073420" elapsed="0.001092"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.075132" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:49.074670" elapsed="0.000490"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.075497" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:55:49.075680" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:55:49.075337" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.076145" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.075858" elapsed="0.000336"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:55:49.076592" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.076261" elapsed="0.000396"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.077565" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.076820" elapsed="0.000773"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.076682" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.076242" elapsed="0.001410"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.078400" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:49.077794" elapsed="0.000636"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:55:49.078480" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:55:49.072166" elapsed="0.006439"/>
</kw>
<msg time="2026-04-19T00:55:49.078659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:49.060051" elapsed="0.018656"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.090718" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.102655" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.114545" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.114780" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.114950" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.115317" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.115179" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:49.115165" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.115528" elapsed="0.000051"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.115725" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.115924" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:55:49.115137" elapsed="0.000840"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.115026" elapsed="0.000976"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.116158" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.116237" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:55:49.116358" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:55:49.059170" elapsed="0.057216"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.117611" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.117377" elapsed="0.000297">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:49.117766" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:49.117032" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.118114" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.117860" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.118651" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.118351" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.118196" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.117842" elapsed="0.000891"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.121011" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:49.118875" elapsed="0.002176"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:55:49.121105" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:55:49.121258" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:55:49.116710" elapsed="0.004573"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.122787" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.122537" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.123235" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.122979" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.123696" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.123430" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.124138" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.123883" elapsed="0.000299"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:55:49.124967" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:55:49.124777" elapsed="0.000216"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:55:49.125329" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:55:49.125156" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.125497" elapsed="0.000195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.126309" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.125842" elapsed="0.000517"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:55:49.126403" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:55:49.126558" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:55:49.124374" elapsed="0.002209"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:55:49.157179" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01wzmzketkvtvqfhi1v3znzshf0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:55:49.157317" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:55:49.157433" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:55:49.128679" elapsed="0.028781"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.126654" elapsed="0.030857"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.157704" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.157540" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.126636" elapsed="0.031159"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.161290" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.158862" elapsed="0.002477"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.158639" elapsed="0.002734"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.158618" elapsed="0.002780"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.163984" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.161670" elapsed="0.002360"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.161454" elapsed="0.002625"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.161437" elapsed="0.002668"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.164644" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:49.164266" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.164970" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.164739" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.165522" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.165225" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.165068" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.164721" elapsed="0.000884"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.166137" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:49.165753" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.166459" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.166233" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.166987" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.166693" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.166537" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.166215" elapsed="0.000875"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:49.167234" elapsed="0.000345"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:55:49.168070" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:49.167736" elapsed="0.000362"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.168255" elapsed="0.002264"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:55:49.158184" elapsed="0.012443"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:55:49.170810" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T00:55:49.170700" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.170682" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.171059" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.171130" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:55:49.173375" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:55:49.121597" elapsed="0.051807"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:55:49.173476" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:55:49.173629" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:55:48.971668" elapsed="0.201988"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.173994" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.173759" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.173742" elapsed="0.000360"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:55:49.174137" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T00:55:49.174285" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:55:48.967393" elapsed="0.206920"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:55:49.174802" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7f3f3d0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:55:49.174471" elapsed="0.000359"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:55:49.175288" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:55:49.174980" elapsed="0.000334"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:55:49.175363" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:55:49.175508" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:55:48.965200" elapsed="0.210332"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:55:49.175684" elapsed="0.000395"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:55:49.176130" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:55:48.959546" elapsed="0.216706"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:55:48.959380" elapsed="0.216906"/>
</iter>
<iter>
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.182194" level="INFO">${session} = ClusterManagement__session_3</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-19T00:55:49.181878" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:55:49.182268" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:55:49.182416" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:55:49.181538" elapsed="0.000903"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.182978" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.182596" elapsed="0.000460"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.215736" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.215294" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.216664" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.216308" elapsed="0.000536">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:49.217133" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:49.215921" elapsed="0.001238"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.217772" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:49.217326" elapsed="0.000473"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.218133" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:55:49.218277" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:55:49.217954" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.218719" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.218452" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.220330" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.219610" elapsed="0.000872"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.221483" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.220768" elapsed="0.000760"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.223097" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:55:49.222585" elapsed="0.000550"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:55:49.224317" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.224066" elapsed="0.000278"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:55:49.224396" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:55:49.224700" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:55:49.223601" elapsed="0.001136"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.225147" elapsed="0.000330"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:55:49.222109" elapsed="0.003428"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:55:49.221682" elapsed="0.003968"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:55:49.225861" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:55:49.226159" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:55:49.219184" elapsed="0.007002"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.218832" elapsed="0.007387"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.226387" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.226244" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.218813" elapsed="0.007651"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.227095" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:49.226600" elapsed="0.000523"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:55:49.227171" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:55:49.214646" elapsed="0.012646"/>
</kw>
<msg time="2026-04-19T00:55:49.227379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:49.202453" elapsed="0.024976"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.239561" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.251379" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.263223" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.263412" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.263582" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.263936" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.263798" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:49.263783" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.264167" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.264327" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.264513" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:55:49.263756" elapsed="0.000818"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.263655" elapsed="0.000944"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.264739" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.264814" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:55:49.264922" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:55:49.198322" elapsed="0.066625"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.288681" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.288214" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.289512" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.289214" elapsed="0.000464">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:49.289978" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:49.288865" elapsed="0.001139"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.290628" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:49.290183" elapsed="0.000472"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.290965" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:55:49.291113" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:55:49.290808" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.291561" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.291293" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:55:49.292197" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.291676" elapsed="0.000584"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.292974" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.292428" elapsed="0.000573"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.292285" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.291658" elapsed="0.001418"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.293807" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:55:49.293219" elapsed="0.000617"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:55:49.293886" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:55:49.287588" elapsed="0.006421"/>
</kw>
<msg time="2026-04-19T00:55:49.294088" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:55:49.275491" elapsed="0.018646"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.305967" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.317798" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.329741" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.329996" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.330187" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.330539" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.330402" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:55:49.330387" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.330751" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.330911" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.331086" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:55:49.330359" elapsed="0.000781"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.330260" elapsed="0.000905"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.331304" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:55:49.331377" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:55:49.331498" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:55:49.274639" elapsed="0.056886"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:55:49.332747" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.332513" elapsed="0.000298">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:55:49.332921" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:55:49.332182" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:55:49.333269" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:55:49.333016" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.333793" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:55:49.333504" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T00:55:49.333347" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-19T00:55:49.332998" elapsed="0.000876"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.336118" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:55:49.334015" elapsed="0.002129"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:55:49.336194" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:55:49.336345" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:55:49.331848" elapsed="0.004521"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.337889" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.337643" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.338332" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.338095" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.338760" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.338521" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.339244" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.338982" elapsed="0.000306"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:55:49.340118" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:55:49.339877" elapsed="0.000268"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:55:49.340466" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:55:49.340292" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:55:49.340632" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:55:49.341438" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:55:49.341185" elapsed="0.000297"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:55:49.341526" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:55:49.341680" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:55:49.339480" elapsed="0.002225"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:57:54.415007" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.343764" elapsed="125.075240">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T00:55:49.341774" elapsed="125.077485">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.419792" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.419344" elapsed="0.000613"/>
</branch>
<status status="FAIL" start="2026-04-19T00:55:49.341757" elapsed="125.078253">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.420985" elapsed="0.000095"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.421362" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.421274" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:57:54.421232" elapsed="0.000275"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.421820" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.421969" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.336680" elapsed="125.085562">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.422435" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.187580" elapsed="125.235119">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.423164" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.422891" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:57:54.422867" elapsed="0.000426"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.423338" elapsed="0.000020"/>
</return>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.183312" elapsed="125.240164">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.423804" elapsed="0.000031"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.424054" elapsed="0.000030"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.424148" elapsed="0.000020"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.181106" elapsed="125.243186">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.424539" elapsed="0.000031"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.424630" elapsed="0.000020"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="FAIL" start="2026-04-19T00:55:49.176543" elapsed="125.248219">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T00:55:49.176374" elapsed="125.248475">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T00:55:48.734627" elapsed="125.690302">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="FAIL" start="2026-04-19T00:55:48.734396" elapsed="125.690680">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.426907" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.426354" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.426330" elapsed="0.000717"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:57:54.427258" elapsed="0.000499"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.434825" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:57:54.434196" elapsed="0.000657"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:57:54.435088" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.434928" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.434911" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.435588" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:57:54.435290" elapsed="0.000325"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:57:54.436043" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Precedence_Invoke_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:57:54.435767" elapsed="0.000304"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:57:54.436399" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:57:54.436224" elapsed="0.000202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.436966" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:57:54.436606" elapsed="0.000388"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.437480" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:57:54.437163" elapsed="0.000352"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.438131" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:57:54.437669" elapsed="0.000515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.438652" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:57:54.438333" elapsed="0.000421"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:57:54.433745" elapsed="0.005072"/>
</kw>
<status status="PASS" start="2026-04-19T00:57:54.426055" elapsed="0.012812"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:57:54.425503" elapsed="0.013404"/>
</kw>
<doc>Verify that the rpc response comes from the local node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:55:08.291379" elapsed="166.147569">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s6-t3" name="Unregister_Rpc_On_Node" line="39">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:57:54.442177" elapsed="0.000210"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:57:54.441899" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.443462" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.443352" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.443334" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.448345" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.448237" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.448219" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.449395" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:57:54.449001" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.449874" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:57:54.449576" elapsed="0.000323"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:57:54.449943" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:57:54.450174" level="INFO">${index_list} = [1, 2, 3]</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-19T00:57:54.448633" elapsed="0.001566"/>
</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-19T00:57:54.455627" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.455518" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.455500" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.456912" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.456754" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.456736" elapsed="0.000243"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:57:54.457464" 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-19T00:57:54.457147" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:57:54.457866" 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-19T00:57:54.457646" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:57:54.508263" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:57:54.458389" elapsed="0.050073"/>
</kw>
<msg time="2026-04-19T00:57:54.508670" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:57:54.508720" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:57:54.458060" elapsed="0.050697"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:57:54.546724" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:57:54.509425" elapsed="0.037442"/>
</kw>
<msg time="2026-04-19T00:57:54.547158" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:57:54.547219" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T00:57:54.508969" elapsed="0.038290"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.547655" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.547363" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.547334" elapsed="0.000407"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.548254" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:57:54.547882" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.548615" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.548400" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.548381" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:57:54.548733" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:57:54.550354" elapsed="0.000946"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:57:54.551608" elapsed="0.000562"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:57:54.552453" elapsed="0.000422"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:57:54.549642" elapsed="0.003344"/>
</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-19T00:57:54.549056" elapsed="0.004012"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:57:54.456455" elapsed="0.096716"/>
</kw>
<msg time="2026-04-19T00:57:54.553268" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:57:54.553313" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T00:57:54.455841" elapsed="0.097510"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:57:54.553538" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:57:54.553429" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.553411" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.554045" elapsed="0.000029"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.554413" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.554487" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:57:54.455180" elapsed="0.099421"/>
</kw>
<msg time="2026-04-19T00:57:54.554698" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:57:54.554741" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T00:57:54.450591" elapsed="0.104190"/>
</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-19T00:57:54.555131" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.554859" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.554841" elapsed="0.000369"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:57:54.450427" elapsed="0.104806"/>
</iter>
<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-19T00:57:54.560896" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.560784" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.560765" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.562133" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.561997" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.561979" elapsed="0.000261"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:57:54.562809" level="INFO">${karaf_connection_index} = 12</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-19T00:57:54.562444" elapsed="0.000392"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:57:54.563233" 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-19T00:57:54.562991" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:57:54.607378" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:57:54.563770" elapsed="0.043736"/>
</kw>
<msg time="2026-04-19T00:57:54.607680" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:57:54.607726" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:57:54.563426" elapsed="0.044337"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:57:54.645064" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:57:54.608318" elapsed="0.036868"/>
</kw>
<msg time="2026-04-19T00:57:54.645362" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:57:54.645410" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T00:57:54.607952" elapsed="0.037496"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.645792" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.645540" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.645513" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:57:54.646381" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:57:54.646014" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.646745" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.646526" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.646505" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:57:54.646857" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:57:54.648405" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:57:54.649617" elapsed="0.000541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:57:54.650460" elapsed="0.000425"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:57:54.647705" elapsed="0.003293"/>
</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-19T00:57:54.647155" elapsed="0.003938"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:57:54.561695" elapsed="0.089554"/>
</kw>
<msg time="2026-04-19T00:57:54.651349" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:57:54.651395" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T00:57:54.561127" elapsed="0.090308"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:57:54.651632" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-19T00:57:54.651514" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.651495" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.652169" elapsed="0.000030"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:57:54.652511" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.652646" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:57:54.560432" elapsed="0.092342"/>
</kw>
<msg time="2026-04-19T00:57:54.652870" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:57:54.652914" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T00:57:54.555521" elapsed="0.097430"/>
</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-19T00:57:54.653294" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:57:54.653044" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.653010" elapsed="0.000362"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:57:54.555367" elapsed="0.098029"/>
</iter>
<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-19T00:57:54.658936" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.658824" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.658803" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:57:54.660386" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:57:54.660275" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:57:54.660257" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:57:54.660912" level="INFO">${karaf_connection_index} = 29</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-19T00:57:54.660591" elapsed="0.000348"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:57:54.661329" 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-19T00:57:54.661109" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:58:04.662685" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:57:54.661851" elapsed="10.001888">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:58:04.664046" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:58:04.664099" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:57:54.661509" elapsed="10.002614"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:58:14.665840" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:58:04.664841" elapsed="10.002945">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:58:14.668417" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:58:14.668484" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:58:04.664393" elapsed="10.004117"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:58:14.669799" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Node"</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-19T00:58:14.668986" elapsed="0.000879">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:58:14.668634" elapsed="0.001303">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:58:14.668599" elapsed="0.001375">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Node"</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-19T00:58:14.670164" elapsed="0.000025"/>
</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-19T00:58:14.670396" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:14.670258" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:58:14.670240" elapsed="0.000239"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:58:14.670518" 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-19T00:58:14.672219" elapsed="0.000902"/>
</kw>
<kw name="Open 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-19T00:58:14.673433" elapsed="0.000545"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:58:14.674373" elapsed="0.000433"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:58:14.671458" elapsed="0.003464"/>
</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-19T00:58:14.670826" elapsed="0.004164"/>
</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-19T00:57:54.659943" elapsed="20.015189">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Node"</status>
</kw>
<msg time="2026-04-19T00:58:14.675242" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:58:14.675288" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Node"</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-19T00:57:54.659343" elapsed="20.015970"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:58:14.675526" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:14.675392" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:14.675373" elapsed="0.000224"/>
</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-19T00:58:14.676434" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:14.676324" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:14.676306" elapsed="0.000196"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:58:14.678316" 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-19T00:58:14.678435" 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-19T00:58:14.676653" elapsed="0.001810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:14.678895" level="INFO">{1: 10, 2: 12, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:14.678617" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:14.679433" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:14.679174" elapsed="0.000360"/>
</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-19T00:58:14.680085" elapsed="0.000284"/>
</kw>
<msg time="2026-04-19T00:58:14.680469" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:58:14.680520" level="INFO">${old_connection_index} = 29</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-19T00:58:14.679701" elapsed="0.000842"/>
</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-19T00:58:14.681377" elapsed="0.000214"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:58:24.683480" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:58:14.682286" elapsed="10.002398">No match found for '
' in 10 seconds
Output:
.</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-19T00:58:14.681757" elapsed="10.003071"/>
</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-19T00:58:24.685833" elapsed="0.000516"/>
</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-19T00:58:24.685235" elapsed="0.001206"/>
</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-19T00:58:14.680842" elapsed="10.005648"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:14.680620" elapsed="10.005923"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:14.680601" elapsed="10.005977"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:58:24.687830" level="INFO">${ip_address} = 10.30.171.206</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-19T00:58:24.687498" elapsed="0.000360"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:58:24.687911" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:58:24.688091" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:58:24.686828" elapsed="0.001289"/>
</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-19T00:58:24.688274" elapsed="0.000438"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:58:24.689014" level="INFO">index=34
host=10.30.171.206
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-19T00:58:24.689335" level="INFO">${karaf_connection_object} = index=34
host=10.30.171.206
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-19T00:58:24.688881" elapsed="0.000482"/>
</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-19T00:58:24.689510" elapsed="0.002356"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:58:24.692312" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:58:34.797946" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:58:24.692042" elapsed="10.106769">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:58:34.813795" elapsed="0.000626"/>
</kw>
<kw name="Open 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-19T00:58:34.814591" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:58:34.814919" elapsed="0.000149"/>
</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-19T00:58:34.800366" elapsed="0.014765"/>
</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-19T00:58:34.799314" elapsed="0.015867"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:58:14.676004" elapsed="20.139267">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:58:34.815665" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:58:34.815746" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:57:54.658440" elapsed="40.157423">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:58:34.815979" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:58:34.816183" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:57:54.653669" elapsed="40.162543"/>
</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-19T00:58:34.816559" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:34.816299" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:34.816278" elapsed="0.000363"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:57:54.653526" elapsed="40.163140"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:57:54.450255" elapsed="40.366443"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:57:54.447859" elapsed="40.368898"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:57:54.443062" elapsed="40.373752"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:57:54.442615" elapsed="40.374247"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:57:54.439717" elapsed="40.377200"/>
</kw>
<kw name="Unregister_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.819010" 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-19T00:58:34.818694" elapsed="0.000359"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:58:34.819101" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:58:34.819255" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:58:34.817999" elapsed="0.001282"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.819997" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:58:34.819477" elapsed="0.000574"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.853678" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:58:34.853288" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:58:34.854535" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:58:34.854262" elapsed="0.000346">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:58:34.854703" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:58:34.853902" elapsed="0.000827"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.855298" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:58:34.854888" elapsed="0.000465"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:58:34.855660" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:58:34.855824" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:58:34.855514" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.856275" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.856005" elapsed="0.000318"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.857340" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.857021" elapsed="0.000367"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.857816" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:58:34.857542" elapsed="0.000301"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.858788" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:58:34.858231" elapsed="0.000584"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:58:34.860019" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:58:34.859480" elapsed="0.000603"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:58:34.860278" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T00:58:34.860601" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:58:34.859000" elapsed="0.001629"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:58:34.860784" elapsed="0.000477"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:58:34.858097" elapsed="0.003207"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:58:34.857895" elapsed="0.003445"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:58:34.861384" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:58:34.861543" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:58:34.856697" elapsed="0.004873"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:34.856397" elapsed="0.005205"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.861778" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:34.861628" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:34.856376" elapsed="0.005479"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.862471" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:58:34.861995" elapsed="0.000505"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:58:34.862550" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:58:34.852633" elapsed="0.010041"/>
</kw>
<msg time="2026-04-19T00:58:34.862762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:58:34.840153" elapsed="0.022661"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.875458" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.887331" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.899080" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.899273" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.899462" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.899823" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:34.899684" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:58:34.899669" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.900049" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.900220" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.900381" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:58:34.899641" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:58:34.899538" elapsed="0.000920"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.900600" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:58:34.900677" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:58:34.900787" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:58:34.835843" elapsed="0.064971"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.924648" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:58:34.924266" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:58:34.925491" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:58:34.925281" elapsed="0.000274">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:58:34.925687" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:58:34.924832" elapsed="0.000880"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.926277" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:58:34.925872" elapsed="0.000433"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:58:34.926595" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:58:34.926726" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:58:34.926460" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.927178" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.926904" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:58:34.927604" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:34.927315" elapsed="0.000348"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.928138" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:58:34.927827" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:34.927687" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:34.927276" elapsed="0.000946"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.928907" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:58:34.928362" elapsed="0.000574"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:58:34.928987" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:58:34.923629" elapsed="0.005508"/>
</kw>
<msg time="2026-04-19T00:58:34.929193" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:58:34.911471" elapsed="0.017808"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.941292" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.953076" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.964887" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.965128" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.965301" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.965650" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:34.965514" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:58:34.965500" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.965859" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.966018" elapsed="0.000036"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.966194" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:58:34.965472" elapsed="0.000775"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:58:34.965374" elapsed="0.000898"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.966409" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:58:34.966484" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:58:34.966621" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:58:34.910590" elapsed="0.056060"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:58:34.967905" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:58:34.967663" elapsed="0.000306">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:58:34.968076" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:58:34.967331" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:34.968414" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:34.968177" elapsed="0.000294"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.968949" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:58:34.968659" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:34.968494" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:34.968158" elapsed="0.000903"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.971321" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:58:34.969206" elapsed="0.002141"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:58:34.971399" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:58:34.971555" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:58:34.966977" elapsed="0.004602"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.973094" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.972834" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.973520" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.973284" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.973949" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.973710" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.974426" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.974185" elapsed="0.000284"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:58:34.975283" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:58:34.975071" elapsed="0.000240"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:58:34.975636" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:58:34.975461" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:58:34.975804" elapsed="0.000197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:34.976412" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:34.976167" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:58:34.976498" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:58:34.976651" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:58:34.974659" elapsed="0.002017"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:58:35.007189" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0qn1uio67gisz1r9j7rdoxpglo0.node0', 'Content-Length': '283', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:58:35.007279" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T00:58:35.007429" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:58:34.978888" elapsed="0.028579"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:34.976744" elapsed="0.030786"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.007774" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.007567" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:34.976727" elapsed="0.031171"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.012496" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:35.009342" elapsed="0.003214"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:35.009015" elapsed="0.003589"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.008990" elapsed="0.003649"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.016534" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:35.013011" elapsed="0.003571"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:35.012715" elapsed="0.003903"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.012693" elapsed="0.003949"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.017195" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:58:35.016798" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.017518" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.017291" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.018059" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:58:35.017748" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:35.017597" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.017273" elapsed="0.000870"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.018652" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:58:35.018294" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.018969" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.018745" elapsed="0.000280"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.019553" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:58:35.019221" elapsed="0.000359"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:35.019064" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.018728" elapsed="0.000969"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:58:35.019848" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:58:35.020658" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:58:35.020377" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:58:35.020833" elapsed="0.002271"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:58:35.008404" elapsed="0.014764"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:58:35.023364" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T00:58:35.023252" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.023223" elapsed="0.000228"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.023593" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:58:35.023661" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:58:35.025841" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:58:34.971893" elapsed="0.053975"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:58:35.025939" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:58:35.026109" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:58:34.824928" elapsed="0.201207"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.026472" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.026240" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.026222" elapsed="0.000343"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:58:35.026598" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:58:34.820321" elapsed="0.206399"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke unregister-bound-constant rpc and unregister get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T00:58:34.817583" elapsed="0.209199"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:58:35.027355" elapsed="0.000230"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T00:58:35.026993" elapsed="0.000653"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:58:35.028160" elapsed="0.000190"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T00:58:35.028495" elapsed="0.000186"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:58:35.028825" elapsed="0.000150"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T00:58:35.029130" elapsed="0.000150"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T00:58:35.027827" elapsed="0.001508"/>
</kw>
<arg>${UNREGISTERED_RPC_NODE}</arg>
<doc>Unregister routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T00:58:34.817152" elapsed="0.212269"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.030794" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.030278" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.030260" elapsed="0.000664"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:58:35.031095" elapsed="0.000373"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.036497" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:58:35.036079" elapsed="0.000445"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T00:58:35.036740" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:58:35.036598" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.036580" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.036962" elapsed="0.000021"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.037142" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.037308" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.037467" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.037628" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.037787" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.037943" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:58:35.035763" elapsed="0.002257"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:35.030063" elapsed="0.008024"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:58:35.029695" elapsed="0.008439"/>
</kw>
<doc>Unregister the rpc on one of the cluster nodes.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:57:54.439207" elapsed="40.598964"/>
</test>
<test id="s1-s6-t4" name="Invoke_Rpc_On_Node_With_Unregistered_Rpc" line="43">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:58:35.041573" elapsed="0.000207"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:58:35.041319" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:58:35.042797" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.042689" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.042669" elapsed="0.000195"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:58:35.047654" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.047547" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.047529" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.048751" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:58:35.048347" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.049258" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:58:35.048932" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:58:35.049330" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:58:35.049487" level="INFO">${index_list} = [1, 2, 3]</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-19T00:58:35.047950" elapsed="0.001562"/>
</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-19T00:58:35.055099" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.054970" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.054951" 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-19T00:58:35.056393" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.056287" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.056269" elapsed="0.000239"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:58:35.056964" 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-19T00:58:35.056649" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:58:35.057390" 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-19T00:58:35.057165" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:58:35.105941" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:58:35.057900" elapsed="0.048174"/>
</kw>
<msg time="2026-04-19T00:58:35.106265" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:58:35.106312" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:58:35.057570" elapsed="0.048779"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:58:35.158532" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:58:35.106847" elapsed="0.051808"/>
</kw>
<msg time="2026-04-19T00:58:35.158826" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:58:35.158872" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:58:35.106513" elapsed="0.052397"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.159261" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.158988" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.158968" elapsed="0.000375"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.159797" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:35.159482" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.160186" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.159953" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.159935" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:58:35.160301" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:58:35.161855" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:58:35.163075" elapsed="0.000553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:58:35.163914" elapsed="0.000439"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:58:35.161143" elapsed="0.003322"/>
</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-19T00:58:35.160573" elapsed="0.003959"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:58:35.055931" elapsed="0.108701"/>
</kw>
<msg time="2026-04-19T00:58:35.164726" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:58:35.164772" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:58:35.055328" elapsed="0.109482"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:58:35.164996" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:58:35.164887" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.164869" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.165500" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.165885" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:58:35.165961" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:58:35.054626" elapsed="0.111463"/>
</kw>
<msg time="2026-04-19T00:58:35.166186" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:58:35.166231" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:58:35.049874" elapsed="0.116396"/>
</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-19T00:58:35.166594" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.166347" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.166330" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:58:35.049736" elapsed="0.116961"/>
</iter>
<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-19T00:58:35.172367" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.172256" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.172236" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:58:35.173587" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.173479" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.173461" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:58:35.174120" level="INFO">${karaf_connection_index} = 12</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-19T00:58:35.173792" elapsed="0.000355"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:58:35.174515" 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-19T00:58:35.174300" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:58:35.213820" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:58:35.175074" elapsed="0.038851"/>
</kw>
<msg time="2026-04-19T00:58:35.214132" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:58:35.214185" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:58:35.174724" elapsed="0.039498"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:58:35.258516" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:58:35.214733" elapsed="0.044239"/>
</kw>
<msg time="2026-04-19T00:58:35.259557" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:58:35.259666" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:58:35.214393" elapsed="0.045359"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.260499" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.259976" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.259911" elapsed="0.000709"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:35.261416" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "N "o "d "e "_ "W "i "t "h "_ "U "n "r "e "g "i "s "t "e "r "e "d "_ "R "p "c "[78C[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:35.260820" elapsed="0.000716"/>
</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-19T00:58:35.261937" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.261633" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.261607" elapsed="0.000463"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:58:35.262124" elapsed="0.000053"/>
</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-19T00:58:35.264543" elapsed="0.001255"/>
</kw>
<kw name="Open 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-19T00:58:35.266390" elapsed="0.000844"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:58:35.267648" elapsed="0.000614"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:58:35.263451" elapsed="0.004973"/>
</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-19T00:58:35.262550" elapsed="0.005970"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:58:35.173175" elapsed="0.095490"/>
</kw>
<msg time="2026-04-19T00:58:35.268802" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:58:35.268868" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:58:35.172583" elapsed="0.096339"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:58:35.269223" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T00:58:35.269061" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.269005" elapsed="0.000337"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:58:35.269949" elapsed="0.000040"/>
</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-19T00:58:35.270463" elapsed="0.000036"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:58:35.270568" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:58:35.171720" elapsed="0.099007"/>
</kw>
<msg time="2026-04-19T00:58:35.270867" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:58:35.270929" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:58:35.166963" elapsed="0.104019"/>
</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-19T00:58:35.271653" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:35.271296" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.271267" elapsed="0.000495"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:58:35.166825" elapsed="0.104972"/>
</iter>
<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-19T00:58:35.277616" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.277500" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.277480" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:58:35.278860" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:35.278749" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:35.278730" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:58:35.279455" level="INFO">${karaf_connection_index} = 34</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-19T00:58:35.279104" elapsed="0.000380"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:58:35.279873" 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-19T00:58:35.279642" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:58:45.280994" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:58:35.280409" elapsed="10.001516">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:58:45.282220" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:58:45.282270" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:58:35.280073" elapsed="10.002221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:58:55.283592" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:58:45.282966" elapsed="10.001580">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:58:55.284838" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:58:55.284887" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:58:45.282540" elapsed="10.002485"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:58:55.286328" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</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-19T00:58:55.285544" elapsed="0.000848">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:58:55.285199" elapsed="0.001265">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:58:55.285163" elapsed="0.001336">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</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-19T00:58:55.286662" 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-19T00:58:55.286886" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:58:55.286750" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:58:55.286733" elapsed="0.000229"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:58:55.286999" elapsed="0.000016"/>
</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-19T00:58:55.288631" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:58:55.289853" elapsed="0.000569"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:58:55.290710" elapsed="0.000449"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:58:55.287924" elapsed="0.003345"/>
</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-19T00:58:55.287316" elapsed="0.004022"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T00:58:35.278440" elapsed="20.012984">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</status>
</kw>
<msg time="2026-04-19T00:58:55.291530" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:58:55.291576" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Node_With_Unregistered_Rpc"</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-19T00:58:35.277835" elapsed="20.013766"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:58:55.291796" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:55.291680" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:55.291661" elapsed="0.000200"/>
</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-19T00:58:55.292678" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:58:55.292573" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:55.292555" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:58:55.293250" 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-19T00:58:55.293358" 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-19T00:58:55.292892" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:55.293833" level="INFO">{1: 10, 2: 12, 3: 34}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:55.293561" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:58:55.294420" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:58:55.294170" elapsed="0.000293"/>
</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-19T00:58:55.294970" elapsed="0.000291"/>
</kw>
<msg time="2026-04-19T00:58:55.295358" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:58:55.295402" 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-19T00:58:55.294620" elapsed="0.000805"/>
</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-19T00:58:55.296240" elapsed="0.000199"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:59:05.298229" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:58:55.297161" elapsed="10.002221">No match found for '
' in 10 seconds
Output:
.</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-19T00:58:55.296601" elapsed="10.002928"/>
</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-19T00:59:05.300465" elapsed="0.000494"/>
</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-19T00:59:05.299851" elapsed="0.001224"/>
</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-19T00:58:55.295713" elapsed="10.005414"/>
</kw>
<status status="PASS" start="2026-04-19T00:58:55.295499" elapsed="10.005681"/>
</branch>
<status status="PASS" start="2026-04-19T00:58:55.295481" elapsed="10.005733"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:05.302245" level="INFO">${ip_address} = 10.30.171.206</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-19T00:59:05.301843" elapsed="0.000430"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:59:05.302327" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T00:59:05.302490" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:59:05.301456" elapsed="0.001060"/>
</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-19T00:59:05.302670" elapsed="0.000470"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:05.303432" level="INFO">index=39
host=10.30.171.206
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-19T00:59:05.303536" level="INFO">${karaf_connection_object} = index=39
host=10.30.171.206
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-19T00:59:05.303307" elapsed="0.000255"/>
</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-19T00:59:05.303713" elapsed="0.002461"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:59:05.306602" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:59:15.369357" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:05.306336" elapsed="10.063946">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:15.385479" elapsed="0.000571"/>
</kw>
<kw name="Open 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-19T00:59:15.386218" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:59:15.386538" 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-19T00:59:15.371897" elapsed="0.014800"/>
</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-19T00:59:15.370842" elapsed="0.015902"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:58:55.292279" elapsed="20.094564">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:15.387235" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.387314" elapsed="0.000022"/>
</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-19T00:58:35.277137" elapsed="40.110296">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:59:15.387554" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:59:15.387600" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:58:35.272184" elapsed="40.115439"/>
</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-19T00:59:15.387991" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.387710" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.387687" elapsed="0.000484"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:58:35.271988" elapsed="40.116220"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:58:35.049564" elapsed="40.338681"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:58:35.047178" elapsed="40.341130"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:58:35.042404" elapsed="40.345963"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:58:35.041973" elapsed="40.346440"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:58:35.039219" elapsed="40.349251"/>
</kw>
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.394973" 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-19T00:59:15.394647" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:59:15.395066" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T00:59:15.395222" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:59:15.394202" elapsed="0.001046"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.395806" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:59:15.395406" elapsed="0.000429"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.430436" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:15.429989" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:59:15.431318" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.431067" elapsed="0.000318">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:59:15.431479" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:59:15.430677" elapsed="0.000826"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.432077" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:59:15.431661" elapsed="0.000444"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:59:15.432403" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:59:15.432586" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:59:15.432260" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.433021" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.432763" elapsed="0.000327"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.434097" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.433768" elapsed="0.000375"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.434581" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:59:15.434309" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.435538" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:59:15.434976" elapsed="0.000588"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:59:15.436742" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:59:15.436195" elapsed="0.000590"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:59:15.436978" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:59:15.437275" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:59:15.435749" elapsed="0.001552"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:59:15.437503" elapsed="0.000468"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:59:15.434843" elapsed="0.003172"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:59:15.434661" elapsed="0.003411"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:59:15.438117" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:59:15.438274" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:59:15.433448" elapsed="0.004850"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:15.433158" elapsed="0.005172"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.438498" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.438354" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.433138" elapsed="0.005438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.439198" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:15.438711" elapsed="0.000516"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:59:15.439276" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:59:15.429359" elapsed="0.010039"/>
</kw>
<msg time="2026-04-19T00:59:15.439451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:15.416954" elapsed="0.022545"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.451906" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.463981" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.475996" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.476202" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.476371" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.476761" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.476621" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:59:15.476606" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.476989" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.477177" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.477339" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:59:15.476577" elapsed="0.000846"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.476469" elapsed="0.000982"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.477592" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.477666" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:59:15.477775" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:59:15.411278" elapsed="0.066523"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.501484" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:15.501110" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:59:15.502218" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.501989" elapsed="0.000292">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:59:15.502373" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:59:15.501665" elapsed="0.000732"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.502930" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:59:15.502553" elapsed="0.000403"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:59:15.503263" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:59:15.503391" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:59:15.503126" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.503810" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.503569" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:59:15.504227" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.503922" elapsed="0.000363"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.504753" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:15.504462" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:15.504310" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.503904" elapsed="0.000931"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.505551" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:15.504973" elapsed="0.000607"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:59:15.505633" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:59:15.500489" elapsed="0.005267"/>
</kw>
<msg time="2026-04-19T00:59:15.505810" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:15.488341" elapsed="0.017548"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.518158" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.529988" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.541828" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.542055" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.542233" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.542623" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.542480" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:59:15.542462" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.542842" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.543003" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.543182" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:59:15.542427" elapsed="0.000808"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.542314" elapsed="0.000948"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.543402" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.543479" elapsed="0.000021"/>
</return>
<msg time="2026-04-19T00:59:15.543663" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:59:15.487480" elapsed="0.056222"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:59:15.545113" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.544814" elapsed="0.000373">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:59:15.545280" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:59:15.544425" elapsed="0.000881"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.545747" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.545486" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.546327" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:15.546005" elapsed="0.000349"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:15.545827" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.545466" elapsed="0.000944"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.548701" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:59:15.546553" elapsed="0.002174"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:59:15.548779" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T00:59:15.548970" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:59:15.544059" elapsed="0.004936"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.550584" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.550324" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.551056" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.550781" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.551511" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.551258" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.551950" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.551704" elapsed="0.000292"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:15.552854" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:59:15.552643" elapsed="0.000239"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:59:15.553229" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:59:15.553046" elapsed="0.000209"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:59:15.553401" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.554164" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.553766" elapsed="0.000443"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:59:15.554253" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T00:59:15.554438" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:59:15.552210" elapsed="0.002263"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:59:15.618103" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.556798" elapsed="0.063171">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<status status="FAIL" start="2026-04-19T00:59:15.554546" elapsed="0.065529">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.620281" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.620111" elapsed="0.000239"/>
</branch>
<status status="FAIL" start="2026-04-19T00:59:15.554528" elapsed="0.065844">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.620753" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.620890" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.620854" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:59:15.620836" elapsed="0.000115"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.621104" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.621221" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.549349" elapsed="0.071981">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.621410" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.400453" elapsed="0.221055">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.621797" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.621622" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:59:15.621606" elapsed="0.000280"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.621919" elapsed="0.000013"/>
</return>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.396105" elapsed="0.225909">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.622204" elapsed="0.000021"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.622370" elapsed="0.000019"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.622434" elapsed="0.000014"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.393745" elapsed="0.228783">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.622685" elapsed="0.000021"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.622748" elapsed="0.000014"/>
</return>
<arg>${UNREGISTERED_RPC_NODE}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.388721" elapsed="0.234119">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.624133" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.623736" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.623719" elapsed="0.000500"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:15.624372" elapsed="0.000337"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.629570" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:15.629138" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T00:59:15.629812" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.629671" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.629653" elapsed="0.000220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.630325" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:15.630011" elapsed="0.000341"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:59:15.630760" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Precedence_Invoke_Rpc_On_Node_With_Unregistered_Rpc</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:59:15.630504" elapsed="0.000282"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T00:59:15.631181" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T00:59:15.630988" elapsed="0.000220"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.631700" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere insid...</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:15.631356" elapsed="0.000372"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.632210" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:15.631877" elapsed="0.000361"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.632840" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"

ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T00:59:15.632402" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.633351" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.633057" elapsed="0.000342"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:59:15.628825" elapsed="0.004628"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:15.623529" elapsed="0.009974"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:59:15.623165" elapsed="0.010379"/>
</kw>
<doc>Invoke rcp on the node with unregistered rpc. The response is expected
to come from other nodes where the rpc remained registered.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T00:58:35.038526" elapsed="40.595058">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_node_with_unregistered_rpc&amp;order=bug_status"

ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</test>
<test id="s1-s6-t5" name="Invoke_Rpc_On_Remaining_Nodes" line="48">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:59:15.637931" elapsed="0.000388"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:59:15.637666" elapsed="0.000714"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.639435" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.639296" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.639269" elapsed="0.000237"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.644365" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.644246" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.644213" elapsed="0.000234"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.645481" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:59:15.645088" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.645994" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:59:15.645684" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:59:15.646085" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T00:59:15.646249" level="INFO">${index_list} = [1, 2, 3]</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-19T00:59:15.644674" elapsed="0.001600"/>
</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-19T00:59:15.651636" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.651526" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.651508" elapsed="0.000244"/>
</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-19T00:59:15.652979" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.652868" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.652849" elapsed="0.000225"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:15.653539" 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-19T00:59:15.653219" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:15.653960" 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-19T00:59:15.653722" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:59:15.688222" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:59:15.654493" elapsed="0.033877"/>
</kw>
<msg time="2026-04-19T00:59:15.688587" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:59:15.688636" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:59:15.654159" elapsed="0.034514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:59:15.744293" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:59:15.689288" elapsed="0.055244"/>
</kw>
<msg time="2026-04-19T00:59:15.744771" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:59:15.744818" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:15.688874" elapsed="0.055982"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.745351" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.744979" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.744941" elapsed="0.000498"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.745973" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.745578" elapsed="0.000490"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.746350" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.746136" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.746118" elapsed="0.000308"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:59:15.746463" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:15.748079" elapsed="0.000890"/>
</kw>
<kw name="Open 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-19T00:59:15.749281" elapsed="0.000525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:59:15.750110" elapsed="0.000507"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:59:15.747376" elapsed="0.003361"/>
</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-19T00:59:15.746783" elapsed="0.004029"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:59:15.652555" elapsed="0.098371"/>
</kw>
<msg time="2026-04-19T00:59:15.751044" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:15.751095" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:15.651903" elapsed="0.099232"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:59:15.751329" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:59:15.751216" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.751195" elapsed="0.000220"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.751843" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.752300" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.752375" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:59:15.651182" elapsed="0.101306"/>
</kw>
<msg time="2026-04-19T00:59:15.752583" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:15.752628" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:15.646648" elapsed="0.106017"/>
</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-19T00:59:15.753002" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.752743" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.752726" elapsed="0.000378"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:59:15.646511" elapsed="0.106618"/>
</iter>
<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-19T00:59:15.758736" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.758617" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.758593" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.759990" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.759881" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.759863" elapsed="0.000249"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:15.760583" level="INFO">${karaf_connection_index} = 12</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-19T00:59:15.760260" elapsed="0.000350"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:15.760997" 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-19T00:59:15.760764" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:59:15.798983" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:59:15.761534" elapsed="0.037581"/>
</kw>
<msg time="2026-04-19T00:59:15.799304" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:59:15.799351" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:59:15.761200" elapsed="0.038188"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:59:15.854189" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:59:15.799917" elapsed="0.054474"/>
</kw>
<msg time="2026-04-19T00:59:15.854613" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:59:15.854660" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:15.799555" elapsed="0.055142"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.855165" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.854817" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.854776" elapsed="0.000477"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:15.855773" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:15.855396" elapsed="0.000465"/>
</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-19T00:59:15.856197" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.855929" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.855911" elapsed="0.000365"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:59:15.856315" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:15.858279" elapsed="0.000927"/>
</kw>
<kw name="Open 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-19T00:59:15.859579" elapsed="0.000612"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:59:15.860485" elapsed="0.000448"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:59:15.857541" elapsed="0.003529"/>
</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-19T00:59:15.856632" elapsed="0.004510"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:59:15.759562" elapsed="0.101684"/>
</kw>
<msg time="2026-04-19T00:59:15.861342" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:15.861388" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:15.758964" elapsed="0.102462"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:59:15.861616" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T00:59:15.861504" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.861485" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.862154" elapsed="0.000030"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:15.862504" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.862576" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:59:15.758258" elapsed="0.104426"/>
</kw>
<msg time="2026-04-19T00:59:15.862779" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:15.862832" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:15.753401" elapsed="0.109470"/>
</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-19T00:59:15.863214" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:15.862949" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.862931" elapsed="0.000360"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:59:15.753264" elapsed="0.110052"/>
</iter>
<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-19T00:59:15.868975" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.868863" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.868842" elapsed="0.000220"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:15.870237" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:15.870128" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:15.870109" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:15.870766" level="INFO">${karaf_connection_index} = 39</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-19T00:59:15.870444" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:15.871214" 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-19T00:59:15.870967" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:59:25.872662" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:59:15.871729" elapsed="10.001988">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:59:25.874019" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T00:59:25.874089" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:59:15.871396" elapsed="10.002717"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:59:35.875526" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:59:25.874837" elapsed="10.001637">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:59:35.876775" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T00:59:35.876824" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T00:59:25.874390" elapsed="10.002566"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T00:59:35.878261" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</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-19T00:59:35.877462" elapsed="0.000863">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</status>
</kw>
<status status="FAIL" start="2026-04-19T00:59:35.877107" elapsed="0.001580">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</status>
</branch>
<status status="FAIL" start="2026-04-19T00:59:35.877073" elapsed="0.001653">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</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-19T00:59:35.878889" elapsed="0.000024"/>
</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-19T00:59:35.879131" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:35.878978" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:59:35.878962" elapsed="0.000247"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T00:59:35.879245" 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-19T00:59:35.880936" elapsed="0.000923"/>
</kw>
<kw name="Open 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-19T00:59:35.882181" elapsed="0.000545"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:59:35.883009" elapsed="0.000456"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:59:35.880232" elapsed="0.003346"/>
</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-19T00:59:35.879568" elapsed="0.004081"/>
</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-19T00:59:15.869795" elapsed="20.013941">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</status>
</kw>
<msg time="2026-04-19T00:59:35.883843" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:59:35.883908" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Remaining_Nodes"</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-19T00:59:15.869212" elapsed="20.014722"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:59:35.884141" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:35.884014" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:35.883995" elapsed="0.000213"/>
</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-19T00:59:35.885093" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:35.884917" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:35.884900" elapsed="0.000269"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:35.885546" 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-19T00:59:35.885653" 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-19T00:59:35.885382" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:35.886124" level="INFO">{1: 10, 2: 12, 3: 39}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:35.885835" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:35.886569" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:35.886316" 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-19T00:59:35.887145" elapsed="0.000277"/>
</kw>
<msg time="2026-04-19T00:59:35.887528" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:35.887576" level="INFO">${old_connection_index} = 39</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-19T00:59:35.886769" elapsed="0.000830"/>
</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-19T00:59:35.888556" elapsed="0.000213"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:59:45.890658" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:59:35.889451" elapsed="10.002474">No match found for '
' in 10 seconds
Output:
.</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-19T00:59:35.888933" elapsed="10.003164"/>
</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-19T00:59:45.893073" elapsed="0.000510"/>
</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-19T00:59:45.892420" elapsed="0.001254"/>
</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-19T00:59:35.887906" elapsed="10.005816"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:35.887675" elapsed="10.006101"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:35.887657" elapsed="10.006154"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:45.895048" level="INFO">${ip_address} = 10.30.171.206</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-19T00:59:45.894704" elapsed="0.000382"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T00:59:45.895141" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T00:59:45.895304" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T00:59:45.894307" elapsed="0.001024"/>
</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-19T00:59:45.895483" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:45.896238" level="INFO">index=44
host=10.30.171.206
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-19T00:59:45.896342" level="INFO">${karaf_connection_object} = index=44
host=10.30.171.206
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-19T00:59:45.896108" elapsed="0.000262"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:59:45.896519" elapsed="0.002669"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T00:59:45.899624" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T00:59:55.965609" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:45.899352" elapsed="10.067047">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:55.980788" elapsed="0.000790"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T00:59:55.981742" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:59:55.982082" 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-19T00:59:55.967543" elapsed="0.014697"/>
</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-19T00:59:55.966845" elapsed="0.015470"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T00:59:35.884619" elapsed="20.097786">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:55.982785" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:59:55.982862" elapsed="0.000022"/>
</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-19T00:59:15.868488" elapsed="40.114490">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T00:59:55.983112" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T00:59:55.983157" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:15.863591" elapsed="40.119589"/>
</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-19T00:59:55.983523" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:55.983268" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:55.983246" elapsed="0.000357"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:59:15.863454" elapsed="40.120253"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:59:15.646333" elapsed="40.337415"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:59:15.643851" elapsed="40.339965"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:59:15.638972" elapsed="40.344907"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:15.638534" elapsed="40.345394"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:59:15.634876" elapsed="40.349110"/>
</kw>
<kw name="Verify_Contexted_Constant_On_Registered_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:55.990992" level="INFO">${session} = ClusterManagement__session_2</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-19T00:59:55.990678" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T00:59:55.991330" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T00:59:55.991498" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T00:59:55.990331" elapsed="0.001193"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:59:55.992102" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:59:55.991695" elapsed="0.000435"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.024704" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:56.024261" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:59:56.025586" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:59:56.025244" elapsed="0.000515">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T00:59:56.026021" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:59:56.024893" elapsed="0.001171"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.026685" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:59:56.026225" elapsed="0.000487"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:59:56.027044" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:59:56.027260" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:59:56.026867" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.027706" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.027437" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.029428" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.028595" elapsed="0.000981"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.030596" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T00:59:56.029860" elapsed="0.000779"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.032043" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T00:59:56.031538" elapsed="0.000544"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T00:59:56.033355" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T00:59:56.033123" elapsed="0.000259"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T00:59:56.033432" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:59:56.033734" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T00:59:56.032662" elapsed="0.001109"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:59:56.034211" elapsed="0.000365"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T00:59:56.031210" elapsed="0.003424"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T00:59:56.030791" elapsed="0.003954"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T00:59:56.034955" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T00:59:56.035254" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T00:59:56.028175" elapsed="0.007106"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.027818" elapsed="0.007496"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.035482" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.035338" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.027799" elapsed="0.007758"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.036186" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:56.035692" elapsed="0.000522"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:59:56.036263" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:59:56.023645" elapsed="0.012740"/>
</kw>
<msg time="2026-04-19T00:59:56.036438" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:56.011577" elapsed="0.024910"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.048696" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.060506" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.072298" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.072489" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.072658" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.073020" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.072882" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:59:56.072867" elapsed="0.000248"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.073251" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.073411" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.073569" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:59:56.072837" elapsed="0.000820"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.072733" elapsed="0.000953"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.073829" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.073904" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T00:59:56.074016" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:59:56.007430" elapsed="0.066628"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.098112" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:56.097636" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:59:56.099046" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:59:56.098713" elapsed="0.000512">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T00:59:56.099490" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:59:56.098311" elapsed="0.001205"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.100142" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:59:56.099675" elapsed="0.000494"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T00:59:56.100485" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T00:59:56.100623" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T00:59:56.100325" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.101089" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.100802" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T00:59:56.101547" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.101210" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.102348" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:56.101773" elapsed="0.000602"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.101633" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.101191" elapsed="0.001240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.103201" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:56.102572" elapsed="0.000659"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T00:59:56.103281" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T00:59:56.097009" elapsed="0.006398"/>
</kw>
<msg time="2026-04-19T00:59:56.103462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:56.084676" elapsed="0.018867"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.115473" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.127266" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.139204" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.139393" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.139560" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.139905" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.139771" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-19T00:59:56.139757" elapsed="0.000224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.140129" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.140289" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.140446" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T00:59:56.139730" elapsed="0.000768"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.139632" elapsed="0.000891"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.140660" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.140735" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:59:56.140855" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T00:59:56.083817" elapsed="0.057066"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T00:59:56.142132" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T00:59:56.141877" elapsed="0.000342">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T00:59:56.142318" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T00:59:56.141541" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.142696" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.142455" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.143253" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:56.142942" elapsed="0.000338"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.142775" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.142436" elapsed="0.000900"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.147173" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T00:59:56.143479" elapsed="0.003721"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T00:59:56.147252" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:59:56.147404" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T00:59:56.141223" elapsed="0.006205"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.149005" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.148754" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.149453" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.149215" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.149890" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.149643" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.150406" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.150092" elapsed="0.000358"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:56.151256" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T00:59:56.151057" elapsed="0.000226"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T00:59:56.151602" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T00:59:56.151429" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T00:59:56.151771" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.152394" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.152141" elapsed="0.000297"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T00:59:56.152483" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T00:59:56.152637" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T00:59:56.150645" elapsed="0.002016"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T00:59:56.163637" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01wzmzketkvtvqfhi1v3znzshf0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T00:59:56.163779" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T00:59:56.163892" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T00:59:56.154751" elapsed="0.009167"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.152731" elapsed="0.011233"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.164159" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.163991" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.152713" elapsed="0.011536"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.167651" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.165275" elapsed="0.002460"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.165055" elapsed="0.002716"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.165021" elapsed="0.002776"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.170535" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.168093" elapsed="0.002490"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.167853" elapsed="0.002766"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.167836" elapsed="0.002808"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.171216" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:56.170809" elapsed="0.000441"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.171551" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.171319" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.172106" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:56.171789" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.171632" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.171301" elapsed="0.000888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.172702" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:56.172341" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.173023" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.172798" elapsed="0.000309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.173576" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T00:59:56.173283" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.173130" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.172780" elapsed="0.000878"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:56.173802" elapsed="0.000387"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T00:59:56.174636" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:56.174355" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T00:59:56.174809" elapsed="0.002287"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T00:59:56.164600" elapsed="0.012559"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T00:59:56.177338" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:59:56.177230" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.177212" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.177563" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.177630" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T00:59:56.179901" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T00:59:56.147800" elapsed="0.032131"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:59:56.180001" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T00:59:56.180172" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T00:59:55.996710" elapsed="0.183489"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.180539" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.180304" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.180287" elapsed="0.000383"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T00:59:56.180704" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T00:59:56.180854" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T00:59:55.992379" elapsed="0.188502"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T00:59:56.181400" level="INFO">${xml} = &lt;Element 'output' at 0x7826f6e33f60&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T00:59:56.181056" elapsed="0.000372"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T00:59:56.181874" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T00:59:56.181580" elapsed="0.000320"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:59:56.181949" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T00:59:56.182114" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T00:59:55.989847" elapsed="0.192292"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T00:59:56.182307" elapsed="0.000353"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T00:59:56.182709" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T00:59:55.984781" elapsed="0.198049"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:59:55.984615" elapsed="0.198249"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:59:55.984478" elapsed="0.198418"/>
</for>
<arg>${registered_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="PASS" start="2026-04-19T00:59:55.984242" elapsed="0.198707"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.184193" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.183802" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.183782" elapsed="0.000497"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:56.184419" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.189571" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T00:59:56.189152" elapsed="0.000447"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T00:59:56.189818" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T00:59:56.189672" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.189654" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.190056" elapsed="0.000023"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.190248" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.190417" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.190575" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.190734" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.190891" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.191063" elapsed="0.000021"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T00:59:56.188835" elapsed="0.002305"/>
</kw>
<status status="PASS" start="2026-04-19T00:59:56.183590" elapsed="0.007648"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T00:59:56.183236" elapsed="0.008045"/>
</kw>
<doc>Verify that the rpc response comes from the local node.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:59:15.634233" elapsed="40.557087"/>
</test>
<test id="s1-s6-t6" name="Reregister_Rpc_On_Node" line="52">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T00:59:56.194935" elapsed="0.000232"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T00:59:56.194674" elapsed="0.000549"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.196206" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.196096" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.196077" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.201124" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.201001" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.200982" elapsed="0.000212"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.202205" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T00:59:56.201790" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.202699" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T00:59:56.202391" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T00:59:56.202772" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T00:59:56.202933" level="INFO">${index_list} = [1, 2, 3]</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-19T00:59:56.201415" elapsed="0.001544"/>
</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-19T00:59:56.208351" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.208243" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.208225" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.209578" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.209471" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.209453" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:56.210112" 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-19T00:59:56.209784" elapsed="0.000355"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:56.210552" 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-19T00:59:56.210320" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:59:56.254528" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:59:56.211079" elapsed="0.043555"/>
</kw>
<msg time="2026-04-19T00:59:56.254826" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:59:56.254873" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:59:56.210733" elapsed="0.044177"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:59:56.288151" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:59:56.255443" elapsed="0.032825"/>
</kw>
<msg time="2026-04-19T00:59:56.288439" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:59:56.288485" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:56.255102" elapsed="0.033420"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.288839" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.288604" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.288581" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.289396" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.289087" elapsed="0.000426"/>
</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-19T00:59:56.289794" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.289581" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.289563" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:59:56.289907" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:56.291416" elapsed="0.000872"/>
</kw>
<kw name="Open 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-19T00:59:56.292578" elapsed="0.000535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:59:56.293391" elapsed="0.000403"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:59:56.290747" elapsed="0.003161"/>
</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-19T00:59:56.290209" elapsed="0.003764"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:59:56.209169" elapsed="0.084923"/>
</kw>
<msg time="2026-04-19T00:59:56.294212" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:56.294258" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "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-19T00:59:56.208564" elapsed="0.085731"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:59:56.294478" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T00:59:56.294371" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.294352" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.294957" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.295304" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.295377" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:59:56.207890" elapsed="0.087594"/>
</kw>
<msg time="2026-04-19T00:59:56.295576" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:56.295620" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:56.203338" elapsed="0.092319"/>
</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-19T00:59:56.295973" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.295731" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.295714" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T00:59:56.203200" elapsed="0.092887"/>
</iter>
<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-19T00:59:56.301294" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.301187" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.301168" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.302507" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.302398" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.302380" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:56.303019" level="INFO">${karaf_connection_index} = 12</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-19T00:59:56.302711" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:56.303439" 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-19T00:59:56.303223" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T00:59:56.341698" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T00:59:56.303945" elapsed="0.037899"/>
</kw>
<msg time="2026-04-19T00:59:56.342021" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T00:59:56.342114" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T00:59:56.303618" elapsed="0.038537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T00:59:56.377820" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T00:59:56.342675" elapsed="0.035260"/>
</kw>
<msg time="2026-04-19T00:59:56.378149" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T00:59:56.378196" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:56.342323" elapsed="0.035911"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.378536" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.378313" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.378293" elapsed="0.000323"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T00:59:56.379087" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "e "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T00:59:56.378752" elapsed="0.000410"/>
</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-19T00:59:56.379442" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.379230" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.379212" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T00:59:56.379553" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T00:59:56.381196" elapsed="0.000882"/>
</kw>
<kw name="Open 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-19T00:59:56.382373" elapsed="0.000511"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T00:59:56.383187" elapsed="0.000407"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T00:59:56.380529" elapsed="0.003175"/>
</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-19T00:59:56.379813" elapsed="0.003956"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T00:59:56.302085" elapsed="0.081782"/>
</kw>
<msg time="2026-04-19T00:59:56.383958" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:56.384002" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "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-19T00:59:56.301506" elapsed="0.082551"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T00:59:56.384243" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T00:59:56.384135" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.384116" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.384714" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T00:59:56.385056" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T00:59:56.385129" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T00:59:56.300835" elapsed="0.084402"/>
</kw>
<msg time="2026-04-19T00:59:56.385328" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T00:59:56.385371" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "R "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:56.296346" elapsed="0.089062"/>
</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-19T00:59:56.385764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T00:59:56.385518" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.385500" elapsed="0.000340"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T00:59:56.296212" elapsed="0.089652"/>
</iter>
<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-19T00:59:56.391280" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.390979" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.390960" elapsed="0.000388"/>
</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-19T00:59:56.392590" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T00:59:56.392483" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T00:59:56.392464" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T00:59:56.393123" level="INFO">${karaf_connection_index} = 44</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-19T00:59:56.392794" elapsed="0.000357"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T00:59:56.393518" 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-19T00:59:56.393301" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:00:06.394815" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T00:59:56.394022" elapsed="10.001873">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:00:06.396239" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:00:06.396291" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T00:59:56.393696" elapsed="10.002620"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:00:16.397779" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:00:06.397094" elapsed="10.001679">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:00:16.399138" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:00:16.399193" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:00:06.396611" elapsed="10.002608"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:00:16.400565" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Reregister_Rpc_On_Node"</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-19T01:00:16.399721" elapsed="0.000912">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Reregister_Rpc_On_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:00:16.399354" elapsed="0.001355">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Reregister_Rpc_On_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:00:16.399320" elapsed="0.001426">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Reregister_Rpc_On_Node"</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-19T01:00:16.400914" 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-19T01:00:16.401497" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:16.401339" elapsed="0.000217"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:00:16.400987" elapsed="0.000592"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:00:16.401617" 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-19T01:00:16.403308" elapsed="0.000934"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:00:16.404582" elapsed="0.000581"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:00:16.405504" elapsed="0.000449"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:00:16.402558" elapsed="0.003529"/>
</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-19T01:00:16.401934" elapsed="0.004224"/>
</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-19T00:59:56.392080" elapsed="20.014169">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Reregister_Rpc_On_Node"</status>
</kw>
<msg time="2026-04-19T01:00:16.406368" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:00:16.406513" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Reregister_Rpc_On_Node"</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-19T00:59:56.391494" elapsed="20.015047"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:00:16.406739" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:16.406623" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:16.406604" elapsed="0.000205"/>
</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-19T01:00:16.407770" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:16.407655" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:16.407635" elapsed="0.000208"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:00:16.408186" 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-19T01:00:16.408297" 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-19T01:00:16.408011" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:16.408792" level="INFO">{1: 10, 2: 12, 3: 44}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:16.408481" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:16.409281" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:16.409008" elapsed="0.000319"/>
</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-19T01:00:16.409847" elapsed="0.000306"/>
</kw>
<msg time="2026-04-19T01:00:16.410254" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:00:16.410301" level="INFO">${old_connection_index} = 44</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-19T01:00:16.409488" elapsed="0.000836"/>
</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-19T01:00:16.411268" elapsed="0.000215"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:00:26.413325" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:00:16.412173" elapsed="10.002337">No match found for '
' in 10 seconds
Output:
.</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-19T01:00:16.411648" elapsed="10.003032"/>
</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-19T01:00:26.415660" elapsed="0.000579"/>
</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-19T01:00:26.415055" elapsed="0.001279"/>
</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-19T01:00:16.410656" elapsed="10.005739"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:16.410422" elapsed="10.006026"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:16.410399" elapsed="10.006083"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:00:26.417631" level="INFO">${ip_address} = 10.30.171.206</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-19T01:00:26.417303" elapsed="0.000355"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:00:26.417714" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:00:26.417882" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:00:26.416734" elapsed="0.001173"/>
</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-19T01:00:26.418077" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:00:26.418825" level="INFO">index=49
host=10.30.171.206
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-19T01:00:26.418927" level="INFO">${karaf_connection_object} = index=49
host=10.30.171.206
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-19T01:00:26.418697" elapsed="0.000256"/>
</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-19T01:00:26.419249" elapsed="0.002548"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:00:26.422246" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:00:36.486834" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:00:26.421962" elapsed="10.066629">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:00:36.512674" elapsed="0.000810"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.513662" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:00:36.513993" elapsed="0.000127"/>
</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-19T01:00:36.491225" elapsed="0.022952"/>
</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-19T01:00:36.489772" elapsed="0.024455"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:00:16.407340" elapsed="20.106986">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:00:36.514720" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.514801" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T00:59:56.390638" elapsed="40.124281">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:00:36.515057" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:00:36.515105" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T00:59:56.386159" elapsed="40.128971"/>
</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-19T01:00:36.515514" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.515224" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.515197" elapsed="0.000398"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T00:59:56.385986" elapsed="40.129642"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T00:59:56.203011" elapsed="40.312651"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T00:59:56.200638" elapsed="40.315087"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T00:59:56.195792" elapsed="40.319994"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T00:59:56.195368" elapsed="40.320466"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T00:59:56.192331" elapsed="40.323561"/>
</kw>
<kw name="Register_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.517740" 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-19T01:00:36.517432" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:00:36.517814" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:00:36.517966" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:00:36.517087" elapsed="0.000903"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.518635" level="INFO">&amp;{mapping} = { CONTEXT=context | CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.518193" elapsed="0.000471"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.553872" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:00:36.553490" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:00:36.554681" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:00:36.554409" elapsed="0.000347">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:00:36.554932" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:00:36.554077" elapsed="0.000882"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.555552" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:00:36.555137" elapsed="0.000444"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:00:36.555884" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:00:36.556076" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:00:36.555740" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.556528" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.556279" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.557656" level="INFO">mapping: {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.557345" elapsed="0.000358"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.558155" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.557860" elapsed="0.000321"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.559098" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:00:36.558535" elapsed="0.000589"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:00:36.560326" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.559779" elapsed="0.000590"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:00:36.560565" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:00:36.560851" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:00:36.559350" elapsed="0.001527"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.561043" elapsed="0.000453"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:00:36.558406" elapsed="0.003132"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.562343" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:00:36.561780" elapsed="0.000590"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:00:36.563693" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.563155" elapsed="0.000581"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:00:36.563926" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:00:36.564222" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:00:36.562551" elapsed="0.001697"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.564396" elapsed="0.000424"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-19T01:00:36.561653" elapsed="0.003208"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:00:36.558232" elapsed="0.006663"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:00:36.564938" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:00:36.565113" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:00:36.556964" elapsed="0.008174"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.556646" elapsed="0.008523"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.565335" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.565194" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.556624" elapsed="0.008787"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.566002" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:00:36.565546" elapsed="0.000498"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:00:36.566094" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:00:36.552847" elapsed="0.013371"/>
</kw>
<msg time="2026-04-19T01:00:36.566312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:00:36.539389" elapsed="0.026974"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.578531" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.590409" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.602413" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.602609" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.602779" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.603188" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.603007" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:00:36.602990" elapsed="0.000278"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.603417" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.603582" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.603741" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:00:36.602960" elapsed="0.000835"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.602855" elapsed="0.000966"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.603961" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.604053" elapsed="0.000020"/>
</return>
<msg time="2026-04-19T01:00:36.604173" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:00:36.534753" elapsed="0.069447"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.628112" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:00:36.627721" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:00:36.628850" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:00:36.628625" elapsed="0.000296">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:00:36.629082" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:00:36.628296" elapsed="0.000812"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.629656" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:00:36.629268" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:00:36.629973" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:00:36.630133" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:00:36.629836" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.630557" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.630313" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:00:36.630972" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.630673" elapsed="0.000375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.631689" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:00:36.631214" elapsed="0.000502"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.631074" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.630654" elapsed="0.001120"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.632523" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:00:36.631913" elapsed="0.000640"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:00:36.632603" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:00:36.627115" elapsed="0.005613"/>
</kw>
<msg time="2026-04-19T01:00:36.632782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:00:36.614969" elapsed="0.017860"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.644887" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.657530" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.669381" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.669629" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.669802" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.670184" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.670040" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:00:36.670011" elapsed="0.000252"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.670400" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.670564" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.670741" elapsed="0.000025"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:00:36.669981" elapsed="0.000820"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.669878" elapsed="0.000948"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.670967" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.671062" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:00:36.671192" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:00:36.614093" elapsed="0.057127"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:00:36.672493" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:00:36.672237" elapsed="0.000323">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:00:36.672652" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:00:36.671878" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.672988" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.672747" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.673548" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:00:36.673255" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.673087" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.672728" elapsed="0.000903"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.675917" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:00:36.673774" elapsed="0.002170"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:00:36.675996" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T01:00:36.676169" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:00:36.671551" elapsed="0.004643"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.677701" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.677452" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.678145" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.677891" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.678581" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.678338" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.679105" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.678840" elapsed="0.000310"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:00:36.679950" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:00:36.679752" elapsed="0.000224"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:00:36.680323" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:00:36.680146" elapsed="0.000203"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.680494" elapsed="0.000206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.681297" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.680850" elapsed="0.000492"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:00:36.681388" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:00:36.681546" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:00:36.679348" elapsed="0.002223"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:00:36.698004" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0qn1uio67gisz1r9j7rdoxpglo0.node0', 'Content-Length': '317', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:00:36.698102" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T01:00:36.698313" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:00:36.683662" elapsed="0.014708"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.681642" elapsed="0.016835"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.698912" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.698536" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.681624" elapsed="0.017522"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.707171" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.701559" elapsed="0.005656"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.701014" elapsed="0.006237"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.700971" elapsed="0.006304"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.709790" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.707543" elapsed="0.002293"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.707330" elapsed="0.002540"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.707314" elapsed="0.002581"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.710450" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:00:36.710069" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.710802" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.710566" elapsed="0.000293"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.711350" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:00:36.711050" elapsed="0.000327"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.710882" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.710528" elapsed="0.000905"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.711938" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:00:36.711581" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.712274" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.712047" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.712795" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:00:36.712503" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.712353" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.712014" elapsed="0.000919"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:00:36.713097" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:00:36.713896" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:00:36.713610" elapsed="0.000312"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.714093" elapsed="0.002288"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:00:36.699933" elapsed="0.016511"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:00:36.716623" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T01:00:36.716516" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.716498" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.716863" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.716931" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T01:00:36.719289" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:00:36.676517" elapsed="0.042799"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:00:36.719388" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:00:36.719543" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:00:36.523882" elapsed="0.195686"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.719906" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.719673" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.719656" elapsed="0.000341"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:00:36.720046" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:00:36.720199" level="INFO">${text} = </msg>
<var>${text}</var>
<arg>${REGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:00:36.518914" elapsed="0.201311"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Invoke register-bound-constant rpc and register get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T01:00:36.516556" elapsed="0.203734"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.720828" elapsed="0.000246"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:00:36.721224" elapsed="0.000150"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T01:00:36.720513" elapsed="0.000916"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.721914" elapsed="0.000200"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:00:36.722264" elapsed="0.000192"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:00:36.722612" elapsed="0.000148"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:00:36.722898" elapsed="0.000165"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T01:00:36.721608" elapsed="0.001510"/>
</kw>
<arg>${UNREGISTERED_RPC_NODE}</arg>
<doc>Register routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:00:36.516132" elapsed="0.207039"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.724629" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.724241" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.724023" elapsed="0.000694"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:00:36.724860" elapsed="0.000336"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.730023" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:00:36.729609" elapsed="0.000457"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T01:00:36.730285" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:00:36.730141" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.730122" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.730517" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.730684" elapsed="0.000020"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.730848" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.731004" elapsed="0.000035"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.731182" elapsed="0.000020"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.731341" elapsed="0.000019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.731497" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:00:36.729307" elapsed="0.002265"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:36.723834" elapsed="0.007787"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:00:36.723442" elapsed="0.008221"/>
</kw>
<doc>Reregister the rpc.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T00:59:56.191858" elapsed="40.539842"/>
</test>
<test id="s1-s6-t7" name="Invoke_Rpc_On_Each_Node_Again" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:00:36.734958" elapsed="0.000228"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:00:36.734699" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.736218" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.736108" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.736089" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.741227" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.741119" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.741100" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.742286" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:00:36.741889" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.742795" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:00:36.742485" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:00:36.742866" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:00:36.743020" level="INFO">${index_list} = [1, 2, 3]</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-19T01:00:36.741515" elapsed="0.001548"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.750201" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.750024" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.750005" elapsed="0.000269"/>
</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-19T01:00:36.751487" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.751379" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.751361" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:00:36.752007" 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-19T01:00:36.751692" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:00:36.752448" 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-19T01:00:36.752216" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:00:36.791878" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:00:36.752957" elapsed="0.039205"/>
</kw>
<msg time="2026-04-19T01:00:36.792545" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:00:36.792648" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:00:36.752628" elapsed="0.040102"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:00:36.827806" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:00:36.793889" elapsed="0.034258"/>
</kw>
<msg time="2026-04-19T01:00:36.828567" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:00:36.828679" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:00:36.793137" elapsed="0.035627"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.829530" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.828967" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.828917" elapsed="0.000788"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.830740" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.830001" elapsed="0.000908"/>
</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-19T01:00:36.831569" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.831097" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.831018" elapsed="0.000722"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:00:36.831813" elapsed="0.000064"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:00:36.835269" elapsed="0.001068"/>
</kw>
<kw name="Open 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-19T01:00:36.836636" elapsed="0.000552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:00:36.837470" elapsed="0.000408"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:00:36.833605" elapsed="0.004381"/>
</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-19T01:00:36.832406" elapsed="0.005686"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:00:36.751073" elapsed="0.087122"/>
</kw>
<msg time="2026-04-19T01:00:36.838288" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:00:36.838333" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:00:36.750451" elapsed="0.087920"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:00:36.838556" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:00:36.838449" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.838430" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.839096" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.839430" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.839500" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:00:36.749678" elapsed="0.089930"/>
</kw>
<msg time="2026-04-19T01:00:36.839701" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:00:36.839744" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:00:36.743428" elapsed="0.096353"/>
</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-19T01:00:36.840117" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.839856" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.839838" elapsed="0.000356"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:00:36.743293" elapsed="0.096925"/>
</iter>
<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-19T01:00:36.845828" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.845719" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.845700" 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-19T01:00:36.847095" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.846970" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.846952" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:00:36.847610" level="INFO">${karaf_connection_index} = 12</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-19T01:00:36.847302" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:00:36.848008" 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-19T01:00:36.847790" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:00:36.885892" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:00:36.848543" elapsed="0.037458"/>
</kw>
<msg time="2026-04-19T01:00:36.886197" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:00:36.886244" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:00:36.848212" elapsed="0.038069"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:00:36.922289" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:00:36.886782" elapsed="0.035624"/>
</kw>
<msg time="2026-04-19T01:00:36.922583" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:00:36.922629" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:00:36.886448" elapsed="0.036218"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.922961" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.922743" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.922723" elapsed="0.000338"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:36.923505" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:36.923201" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.923854" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.923645" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.923628" elapsed="0.000340"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:00:36.924006" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:00:36.925475" elapsed="0.000901"/>
</kw>
<kw name="Open 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-19T01:00:36.926665" elapsed="0.000524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:00:36.927469" elapsed="0.000404"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:00:36.924810" elapsed="0.003171"/>
</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-19T01:00:36.924282" elapsed="0.003790"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:00:36.846669" elapsed="0.081504"/>
</kw>
<msg time="2026-04-19T01:00:36.928265" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:00:36.928309" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:00:36.846100" elapsed="0.082248"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:00:36.928531" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:00:36.928424" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.928406" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.928999" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:00:36.929353" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.929424" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:00:36.845374" elapsed="0.084156"/>
</kw>
<msg time="2026-04-19T01:00:36.929623" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:00:36.929682" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "I "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:00:36.840484" elapsed="0.089235"/>
</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-19T01:00:36.930052" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:36.929794" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.929777" elapsed="0.000352"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:00:36.840347" elapsed="0.089805"/>
</iter>
<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-19T01:00:36.935648" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.935538" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.935520" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:00:36.937047" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:36.936919" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:36.936901" elapsed="0.000219"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:00:36.937570" level="INFO">${karaf_connection_index} = 49</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-19T01:00:36.937260" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:00:36.937997" 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-19T01:00:36.937778" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:00:46.939295" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:00:36.938530" elapsed="10.001853">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:00:46.940689" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:00:46.940742" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:00:36.938199" elapsed="10.002568"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:00:56.942188" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:00:46.941525" elapsed="10.001749">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:00:56.943579" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:00:56.943628" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:00:46.941073" elapsed="10.002580"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:00:56.944926" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</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-19T01:00:56.944148" elapsed="0.000843">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:00:56.943781" elapsed="0.001298">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:00:56.943744" elapsed="0.001372">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</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-19T01:00:56.945277" 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-19T01:00:56.945498" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:00:56.945364" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:00:56.945347" elapsed="0.000226"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:00:56.945610" elapsed="0.000016"/>
</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-19T01:00:56.947245" elapsed="0.001003"/>
</kw>
<kw name="Open 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-19T01:00:56.948543" elapsed="0.000545"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:00:56.949371" elapsed="0.000408"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:00:56.946509" elapsed="0.003387"/>
</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-19T01:00:56.945910" elapsed="0.004051"/>
</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-19T01:00:36.936615" elapsed="20.013447">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<msg time="2026-04-19T01:00:56.950172" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:00:56.950217" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Invoke_Rpc_On_Each_Node_Again"</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-19T01:00:36.935863" elapsed="20.014378"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:00:56.950427" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:56.950318" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:56.950301" 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-19T01:00:56.951327" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:00:56.951223" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:56.951204" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:00:56.951696" 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-19T01:00:56.951799" 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-19T01:00:56.951547" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:56.952506" level="INFO">{1: 10, 2: 12, 3: 49}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:56.951968" elapsed="0.000585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:00:56.952948" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:00:56.952703" elapsed="0.000289"/>
</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-19T01:00:56.953519" elapsed="0.000272"/>
</kw>
<msg time="2026-04-19T01:00:56.953890" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:00:56.953936" level="INFO">${old_connection_index} = 49</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-19T01:00:56.953167" elapsed="0.000793"/>
</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-19T01:00:56.954821" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:01:06.957005" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:00:56.955738" elapsed="10.002549">No match found for '
' in 10 seconds
Output:
.</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-19T01:00:56.955242" elapsed="10.003194"/>
</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-19T01:01:06.959381" elapsed="0.000482"/>
</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-19T01:01:06.958763" elapsed="0.001195"/>
</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-19T01:00:56.954307" elapsed="10.005701"/>
</kw>
<status status="PASS" start="2026-04-19T01:00:56.954051" elapsed="10.006028"/>
</branch>
<status status="PASS" start="2026-04-19T01:00:56.954017" elapsed="10.006096"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:01:06.961120" level="INFO">${ip_address} = 10.30.171.206</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-19T01:01:06.960747" elapsed="0.000400"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:01:06.961201" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:01:06.961362" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:01:06.960358" elapsed="0.001029"/>
</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-19T01:01:06.961542" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:01:06.962357" level="INFO">index=54
host=10.30.171.206
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-19T01:01:06.962460" level="INFO">${karaf_connection_object} = index=54
host=10.30.171.206
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-19T01:01:06.962216" elapsed="0.000271"/>
</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-19T01:01:06.962633" elapsed="0.002600"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:01:06.965657" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:01:17.028802" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:01:06.965393" elapsed="10.064370">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:01:17.044711" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.045610" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:01:17.045930" 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-19T01:01:17.031075" elapsed="0.015028"/>
</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-19T01:01:17.030319" elapsed="0.015831"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:00:56.950892" elapsed="20.095348">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:01:17.046614" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.046697" elapsed="0.000023"/>
</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-19T01:00:36.935194" elapsed="40.111628">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:01:17.046939" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:01:17.046983" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:00:36.930408" elapsed="40.116597"/>
</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-19T01:01:17.047468" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.047109" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.047087" elapsed="0.000462"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:00:36.930274" elapsed="40.117307"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:00:36.743118" elapsed="40.304499"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:00:36.740741" elapsed="40.306936"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:00:36.735805" elapsed="40.311928"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:00:36.735388" elapsed="40.312390"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:00:36.732604" elapsed="40.315229"/>
</kw>
<kw name="Verify_Contexted_Constant_On_Registered_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.054588" 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-19T01:01:17.054278" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:01:17.054660" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:01:17.054813" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:01:17.053916" elapsed="0.000921"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.055476" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.054993" elapsed="0.000510"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.088407" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.087941" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.089303" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.088922" elapsed="0.000586">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.089772" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.088594" elapsed="0.001204"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.090433" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.089959" elapsed="0.000501"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.090782" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:01:17.090953" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:01:17.090617" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.091418" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.091148" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.092976" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.092306" elapsed="0.000832"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.094136" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.093433" elapsed="0.000746"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.095563" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:01:17.095068" elapsed="0.000532"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:01:17.096750" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.096514" elapsed="0.000263"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:01:17.096879" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:01:17.097205" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:01:17.096073" elapsed="0.001168"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.097591" elapsed="0.000352"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:01:17.094723" elapsed="0.003278"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:01:17.094323" elapsed="0.003854"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:01:17.098386" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:01:17.098663" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:01:17.091869" elapsed="0.006821"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.091531" elapsed="0.007191"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.098891" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.098748" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.091511" elapsed="0.007455"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.099602" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.099117" elapsed="0.000513"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.099678" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:01:17.087301" elapsed="0.012499"/>
</kw>
<msg time="2026-04-19T01:01:17.099852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.075093" elapsed="0.024809"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.112466" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.124335" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.136104" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.136294" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.136462" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.136823" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.136684" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:01:17.136669" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.137051" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.137216" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.137444" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:01:17.136640" elapsed="0.000860"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.136537" elapsed="0.000989"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.137666" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.137743" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:01:17.137854" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:01:17.070786" elapsed="0.067093"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.161815" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.161366" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.162672" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.162353" elapsed="0.000492">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.163132" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.161999" elapsed="0.001159"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.163845" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.163317" elapsed="0.000557"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.164218" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:01:17.164361" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:01:17.164050" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.164813" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.164542" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:01:17.165282" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.164929" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.166064" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.165517" elapsed="0.000575"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.165378" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.164910" elapsed="0.001239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.166896" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.166289" elapsed="0.000637"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.166976" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:01:17.160710" elapsed="0.006421"/>
</kw>
<msg time="2026-04-19T01:01:17.167230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.148479" elapsed="0.018803"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.179386" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.191318" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.203157" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.203345" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.203513" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.203869" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.203732" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:01:17.203716" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.204098" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.204260" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.204424" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:01:17.203688" elapsed="0.000787"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.203587" elapsed="0.000914"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.204639" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.204714" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:01:17.204837" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:01:17.147615" elapsed="0.057250"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.206169" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.205898" elapsed="0.000336">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.206327" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.205562" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.206886" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.206508" elapsed="0.000460"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.207660" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.207251" elapsed="0.000445"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.207001" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.206482" elapsed="0.001293"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.210835" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.207978" elapsed="0.002884"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:01:17.210914" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:01:17.211084" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:01:17.205206" elapsed="0.005903"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.212769" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.212523" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.213216" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.212961" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.213665" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.213423" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.214106" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.213851" elapsed="0.000299"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:01:17.214949" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:01:17.214746" elapsed="0.000229"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:01:17.215313" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:01:17.215137" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.215480" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.216094" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.215834" elapsed="0.000305"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:01:17.216181" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:01:17.216333" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:01:17.214345" elapsed="0.002014"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:01:17.228779" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0qn1uio67gisz1r9j7rdoxpglo0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:01:17.228929" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:01:17.229068" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:01:17.218641" elapsed="0.010455"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.216427" elapsed="0.012716"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.229342" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.229169" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.216410" elapsed="0.013075"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.237372" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.231795" elapsed="0.005699"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.231311" elapsed="0.006262"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.231269" elapsed="0.006361"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.240745" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.238301" elapsed="0.002491"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.237755" elapsed="0.003072"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.237718" elapsed="0.003134"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.241437" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.241011" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.241764" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.241535" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.242321" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.241994" elapsed="0.000354"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.241844" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.241517" elapsed="0.000888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.242911" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.242554" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.243251" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.243007" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.243771" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.243480" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.243331" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.242989" elapsed="0.000864"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.243995" elapsed="0.000361"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:01:17.244796" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.244514" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.244968" elapsed="0.002340"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:01:17.230302" elapsed="0.017068"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:01:17.247548" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:01:17.247441" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.247423" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.247776" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.247841" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:01:17.250121" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:01:17.211570" elapsed="0.038580"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.250220" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:01:17.250375" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:01:17.060048" elapsed="0.190354"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.250781" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.250544" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.250526" elapsed="0.000347"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.250906" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:01:17.251075" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:01:17.055752" elapsed="0.195351"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:01:17.251605" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7496480&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:01:17.251263" elapsed="0.000370"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:01:17.252093" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:01:17.251784" elapsed="0.000335"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:01:17.252168" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:01:17.252318" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:01:17.053493" elapsed="0.198849"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:01:17.252497" elapsed="0.000351"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:01:17.252897" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:01:17.048624" elapsed="0.204395"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:01:17.048457" elapsed="0.204613"/>
</iter>
<iter>
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.258968" level="INFO">${session} = ClusterManagement__session_2</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-19T01:01:17.258668" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:01:17.259058" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:01:17.259208" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:01:17.258324" elapsed="0.000908"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.259779" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.259391" elapsed="0.000415"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.292489" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.292045" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.293380" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.293007" elapsed="0.000557">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.293834" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.292679" elapsed="0.001181"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.294489" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.294019" elapsed="0.000497"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.294832" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:01:17.294975" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:01:17.294671" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.295430" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.295165" elapsed="0.000359"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.297087" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.296385" elapsed="0.000869"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.298259" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.297546" elapsed="0.000756"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.299859" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:01:17.299363" elapsed="0.000534"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:01:17.301059" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.300821" elapsed="0.000265"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:01:17.301137" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:01:17.301469" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:01:17.300378" elapsed="0.001128"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.301846" elapsed="0.000403"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:01:17.298867" elapsed="0.003440"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:01:17.298455" elapsed="0.003963"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:01:17.302628" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:01:17.302908" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:01:17.295944" elapsed="0.006991"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.295595" elapsed="0.007372"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.303151" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.302991" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.295576" elapsed="0.007652"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.303860" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.303366" elapsed="0.000521"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.303939" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:01:17.291426" elapsed="0.012663"/>
</kw>
<msg time="2026-04-19T01:01:17.304143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.279262" elapsed="0.024930"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.316346" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.328208" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.339983" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.340226" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.340402" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.340767" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.340629" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:01:17.340614" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.340977" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.341154" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.341346" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:01:17.340583" elapsed="0.000819"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.340480" elapsed="0.000948"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.341568" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.341644" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:01:17.341757" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:01:17.275156" elapsed="0.066626"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.365799" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.365349" elapsed="0.000479"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.366688" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.366342" elapsed="0.000525">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.367154" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.365987" elapsed="0.001192"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.367872" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.367338" elapsed="0.000562"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.368238" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:01:17.368396" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:01:17.368074" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.368841" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.368573" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:01:17.369386" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.368956" elapsed="0.000498"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.370178" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.369621" elapsed="0.000584"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.369479" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.368938" elapsed="0.001433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.371152" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.370517" elapsed="0.000666"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.371233" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:01:17.364707" elapsed="0.006653"/>
</kw>
<msg time="2026-04-19T01:01:17.371416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.352352" elapsed="0.019112"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.383344" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.395138" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.406856" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.407059" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.407231" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.407598" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.407460" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:01:17.407446" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.407809" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.407968" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.408141" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:01:17.407415" elapsed="0.000780"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.407308" elapsed="0.000913"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.408359" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.408433" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:01:17.408556" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:01:17.351481" elapsed="0.057103"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.409910" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.409666" elapsed="0.000310">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.410086" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.409327" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.410427" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.410182" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.410967" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.410675" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.410507" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.410163" elapsed="0.000904"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.414896" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.411212" elapsed="0.003712"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:01:17.414977" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:01:17.415147" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:01:17.408958" elapsed="0.006214"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.416680" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.416432" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.417127" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.416873" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.417591" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.417346" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.418017" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.417779" elapsed="0.000297"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:01:17.418865" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:01:17.418668" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:01:17.419230" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:01:17.419054" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.419403" elapsed="0.000211"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.420010" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.419764" elapsed="0.000307"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:01:17.420115" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:01:17.420270" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:01:17.418269" elapsed="0.002025"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:01:17.431824" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01wzmzketkvtvqfhi1v3znzshf0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:01:17.432056" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:01:17.432195" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:01:17.422543" elapsed="0.009687"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.420364" elapsed="0.011930"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.432531" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.432331" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.420347" elapsed="0.012280"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.436129" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.433697" elapsed="0.002481"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.433480" elapsed="0.002733"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.433461" elapsed="0.002778"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.439079" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.436509" elapsed="0.002618"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.436293" elapsed="0.002869"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.436277" elapsed="0.002910"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.439747" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.439352" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.440088" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.439843" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.440621" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.440323" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.440169" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.439825" elapsed="0.000878"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.441277" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.440855" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.441602" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.441375" elapsed="0.000284"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.442144" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.441831" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.441682" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.441356" elapsed="0.000871"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.442372" elapsed="0.000350"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:01:17.443190" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.442884" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.443366" elapsed="0.002293"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:01:17.432992" elapsed="0.012730"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:01:17.445903" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T01:01:17.445795" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.445776" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.446154" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.446223" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T01:01:17.448454" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:01:17.415494" elapsed="0.032989"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.448593" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:01:17.448749" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:01:17.264328" elapsed="0.184448"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.449129" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.448881" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.448864" elapsed="0.000377"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.449274" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:01:17.449423" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:01:17.260070" elapsed="0.189380"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:01:17.449944" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7497b50&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:01:17.449606" elapsed="0.000366"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:01:17.450436" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:01:17.450142" elapsed="0.000320"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:01:17.450511" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:01:17.450660" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:01:17.257887" elapsed="0.192797"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:01:17.450838" elapsed="0.000367"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:01:17.451253" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:01:17.253353" elapsed="0.198022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:01:17.253159" elapsed="0.198255"/>
</iter>
<iter>
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.457101" level="INFO">${session} = ClusterManagement__session_3</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-19T01:01:17.456784" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:01:17.457195" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:01:17.457344" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:01:17.456448" elapsed="0.000920"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.457914" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.457530" elapsed="0.000411"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.490956" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.490517" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.491827" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.491494" elapsed="0.000516">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.492304" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.491164" elapsed="0.001202"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.492987" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.492536" elapsed="0.000478"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.493383" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:01:17.493531" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:01:17.493216" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.493977" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.493708" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.495580" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.494872" elapsed="0.000857"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.496728" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.496016" elapsed="0.000756"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.498225" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:01:17.497720" elapsed="0.000541"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:01:17.499410" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.499183" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:01:17.499488" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:01:17.499793" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:01:17.498725" elapsed="0.001104"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.500233" elapsed="0.000334"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:01:17.497387" elapsed="0.003238"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:01:17.496924" elapsed="0.003812"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:01:17.500950" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:01:17.501259" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:01:17.494446" elapsed="0.006840"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.494108" elapsed="0.007212"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.501489" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.501345" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.494089" elapsed="0.007476"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.502210" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.501703" elapsed="0.000534"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.502287" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:01:17.489897" elapsed="0.012511"/>
</kw>
<msg time="2026-04-19T01:01:17.502461" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.477723" elapsed="0.024788"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.514946" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.526842" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.538756" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.538951" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.539137" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.539516" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.539376" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:01:17.539359" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.539731" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.539892" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.540065" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:01:17.539326" elapsed="0.000794"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.539219" elapsed="0.000927"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.540286" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.540362" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:01:17.540482" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:01:17.473499" elapsed="0.067009"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.564456" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.563989" elapsed="0.000496"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.565352" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.564976" elapsed="0.000561">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.565807" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.564644" elapsed="0.001188"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.566461" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.565992" elapsed="0.000495"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.566805" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:01:17.566999" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:01:17.566643" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.567472" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.567198" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:01:17.567931" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.567589" elapsed="0.000403"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.568706" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.568175" elapsed="0.000558"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.568017" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.567570" elapsed="0.001220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.569567" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:01:17.568930" elapsed="0.000667"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:01:17.569647" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:01:17.563381" elapsed="0.006394"/>
</kw>
<msg time="2026-04-19T01:01:17.569830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:01:17.551224" elapsed="0.018654"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.582102" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.593893" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.605704" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.605896" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.606079" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.606453" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.606309" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:01:17.606294" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.606664" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.606825" elapsed="0.000062"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.607047" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:01:17.606264" elapsed="0.000839"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.606160" elapsed="0.000969"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.607269" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:01:17.607345" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:01:17.607471" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:01:17.550335" elapsed="0.057164"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:01:17.608762" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.608514" elapsed="0.000315">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:01:17.608920" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:01:17.608170" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:01:17.609299" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:01:17.609015" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.609844" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:01:17.609553" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T01:01:17.609381" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T01:01:17.608996" elapsed="0.000931"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.612211" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:01:17.610088" elapsed="0.002157"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:01:17.612309" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:01:17.612469" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:01:17.607828" elapsed="0.004667"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.614071" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.613809" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.614497" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.614262" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.614926" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.614686" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.615364" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.615125" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:01:17.616215" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:01:17.615999" elapsed="0.000243"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:01:17.616566" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:01:17.616390" elapsed="0.000201"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:01:17.616733" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:01:17.617416" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:01:17.617125" elapsed="0.000336"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:01:17.617505" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:01:17.617658" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:01:17.615602" elapsed="0.002081"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:03:22.642679" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.619917" elapsed="125.026848">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:01:17.617754" elapsed="125.029230">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.647520" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.647101" elapsed="0.000580"/>
</branch>
<status status="FAIL" start="2026-04-19T01:01:17.617736" elapsed="125.029999">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.648635" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.648850" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.648792" elapsed="0.000118"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:03:22.648764" elapsed="0.000177"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.649161" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.649258" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.612825" elapsed="125.036592">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.649538" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.462606" elapsed="125.187071">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.650114" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.649843" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:03:22.649819" elapsed="0.000425"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.650290" elapsed="0.000022"/>
</return>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.458206" elapsed="125.192225">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.650671" elapsed="0.000030"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.650903" elapsed="0.000028"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.650995" elapsed="0.000021"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.456019" elapsed="125.195135">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.651470" elapsed="0.000031"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.651562" elapsed="0.000020"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.451674" elapsed="125.200024">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:01:17.451505" elapsed="125.200275">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:01:17.048320" elapsed="125.603539">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.</doc>
<status status="FAIL" start="2026-04-19T01:01:17.048085" elapsed="125.603901">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.653888" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.653338" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.653313" elapsed="0.000695"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:03:22.654237" elapsed="0.000515"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.661340" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:03:22.660879" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:03:22.661590" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.661442" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.661424" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.662208" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:03:22.661857" elapsed="0.000379"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:03:22.662656" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Precedence_Invoke_Rpc_On_Each_Node_Again</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:03:22.662391" elapsed="0.000292"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:03:22.663010" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:03:22.662835" elapsed="0.000217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.663571" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:03:22.663202" elapsed="0.000398"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.664082" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:03:22.663751" elapsed="0.000360"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.664731" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:03:22.664284" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.665260" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:03:22.664934" elapsed="0.000374"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:03:22.660573" elapsed="0.004792"/>
</kw>
<status status="PASS" start="2026-04-19T01:03:22.653008" elapsed="0.012409"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:03:22.652457" elapsed="0.013039"/>
</kw>
<doc>Verify that the rpc response comes from the local node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:00:36.732092" elapsed="165.933449">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_invoke_rpc_on_each_node_again&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s6-t8" name="Unregister_Rpc_On_Each_Node" line="60">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:03:22.669455" elapsed="0.000220"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:03:22.669178" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.670746" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.670631" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.670611" elapsed="0.000205"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.675661" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.675550" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.675531" elapsed="0.000209"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.676776" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:03:22.676386" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.677293" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:03:22.676958" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:03:22.677369" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:03:22.677532" level="INFO">${index_list} = [1, 2, 3]</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-19T01:03:22.675967" elapsed="0.001590"/>
</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-19T01:03:22.682902" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.682794" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.682775" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.684163" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.684052" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.684013" elapsed="0.000232"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:03:22.684723" 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-19T01:03:22.684387" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:03:22.685146" 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-19T01:03:22.684904" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:03:22.743719" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:03:22.685657" elapsed="0.058180"/>
</kw>
<msg time="2026-04-19T01:03:22.744051" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:03:22.744103" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:03:22.685324" elapsed="0.058816"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:03:22.783046" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:03:22.744696" elapsed="0.038465"/>
</kw>
<msg time="2026-04-19T01:03:22.783332" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:03:22.783377" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T01:03:22.744342" elapsed="0.039072"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.783727" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.783497" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.783475" elapsed="0.000381"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.784350" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:03:22.783994" elapsed="0.000431"/>
</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-19T01:03:22.784703" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.784492" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.784474" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:03:22.784812" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:03:22.786373" elapsed="0.000881"/>
</kw>
<kw name="Open 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-19T01:03:22.787553" elapsed="0.000541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:03:22.788400" elapsed="0.000434"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:03:22.785648" elapsed="0.003303"/>
</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-19T01:03:22.785112" elapsed="0.003906"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:03:22.683731" elapsed="0.105416"/>
</kw>
<msg time="2026-04-19T01:03:22.789240" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:03:22.789285" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T01:03:22.683129" elapsed="0.106195"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:03:22.789513" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:03:22.789400" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.789381" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.789998" elapsed="0.000041"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.790353" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.790425" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:03:22.682450" elapsed="0.108084"/>
</kw>
<msg time="2026-04-19T01:03:22.790628" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:03:22.790673" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T01:03:22.677930" elapsed="0.112782"/>
</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-19T01:03:22.791046" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.790786" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.790769" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:03:22.677792" elapsed="0.113356"/>
</iter>
<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-19T01:03:22.796476" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.796366" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.796346" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.797839" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.797733" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.797715" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:03:22.798372" level="INFO">${karaf_connection_index} = 12</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-19T01:03:22.798063" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:03:22.798766" 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-19T01:03:22.798550" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:03:22.834158" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:03:22.799334" elapsed="0.034999"/>
</kw>
<msg time="2026-04-19T01:03:22.834552" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:03:22.834601" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:03:22.798982" elapsed="0.035656"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:03:22.873003" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:03:22.835277" elapsed="0.038035"/>
</kw>
<msg time="2026-04-19T01:03:22.873627" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:03:22.873695" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T01:03:22.834857" elapsed="0.038894"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.874301" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.873888" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.873849" elapsed="0.000573"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:03:22.875148" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:03:22.874626" elapsed="0.000637"/>
</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-19T01:03:22.875683" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.875363" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.875336" elapsed="0.000464"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:03:22.875853" elapsed="0.000050"/>
</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-19T01:03:22.878494" elapsed="0.001245"/>
</kw>
<kw name="Open 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-19T01:03:22.880174" elapsed="0.000758"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:03:22.881344" elapsed="0.000469"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:03:22.877459" elapsed="0.004498"/>
</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-19T01:03:22.876305" elapsed="0.005755"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:03:22.797430" elapsed="0.084734"/>
</kw>
<msg time="2026-04-19T01:03:22.882256" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:03:22.882300" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T01:03:22.796689" elapsed="0.085648"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:03:22.882522" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:03:22.882414" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.882396" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.883000" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:03:22.883360" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.883432" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:03:22.795980" elapsed="0.087558"/>
</kw>
<msg time="2026-04-19T01:03:22.883632" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:03:22.883677" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "r "e "c "e "d "e "n "c "e ". "U "...</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-19T01:03:22.791413" elapsed="0.092405"/>
</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-19T01:03:22.884184" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:22.883912" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.883892" elapsed="0.000371"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:03:22.791277" elapsed="0.093027"/>
</iter>
<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-19T01:03:22.889792" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.889682" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.889662" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:03:22.891009" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:22.890899" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:22.890880" elapsed="0.000312"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:03:22.891656" level="INFO">${karaf_connection_index} = 54</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-19T01:03:22.891332" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:03:22.892077" 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-19T01:03:22.891836" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:03:32.893457" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:03:22.892616" elapsed="10.001924">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:03:32.894848" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:03:32.894899" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:03:22.892258" elapsed="10.002666"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:03:42.896385" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:03:32.895724" elapsed="10.001667">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:03:42.897703" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:03:42.897753" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:03:32.895249" elapsed="10.002529"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:03:42.899110" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Each_Node"</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-19T01:03:42.898284" elapsed="0.000894">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:03:42.897912" elapsed="0.001350">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:03:42.897876" elapsed="0.001432">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Each_Node"</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-19T01:03:42.899488" 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-19T01:03:42.900030" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:03:42.899878" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:03:42.899559" elapsed="0.000567"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:03:42.900163" 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-19T01:03:42.902071" elapsed="0.001048"/>
</kw>
<kw name="Open 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-19T01:03:42.903455" elapsed="0.000548"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:03:42.904338" elapsed="0.000446"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:03:42.901255" elapsed="0.003670"/>
</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-19T01:03:42.900467" elapsed="0.004551"/>
</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-19T01:03:22.890592" elapsed="20.014625">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T01:03:42.905495" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:03:42.905543" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Precedence.Unregister_Rpc_On_Each_Node"</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-19T01:03:22.890007" elapsed="20.015561"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:03:42.905780" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:42.905647" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:42.905628" elapsed="0.000220"/>
</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-19T01:03:42.906792" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:03:42.906685" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:42.906666" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:03:42.907226" 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-19T01:03:42.907352" 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-19T01:03:42.907016" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:03:42.907802" level="INFO">{1: 10, 2: 12, 3: 54}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:03:42.907529" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:03:42.908339" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:03:42.908010" elapsed="0.000374"/>
</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-19T01:03:42.908928" elapsed="0.000394"/>
</kw>
<msg time="2026-04-19T01:03:42.909422" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:03:42.909470" level="INFO">${old_connection_index} = 54</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-19T01:03:42.908540" elapsed="0.000953"/>
</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-19T01:03:42.910401" elapsed="0.000225"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:03:52.912494" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:03:42.911367" elapsed="10.002273">No match found for '
' in 10 seconds
Output:
.</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-19T01:03:42.910813" elapsed="10.002975"/>
</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-19T01:03:52.914747" elapsed="0.000551"/>
</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-19T01:03:52.914153" elapsed="0.001236"/>
</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-19T01:03:42.909803" elapsed="10.005634"/>
</kw>
<status status="PASS" start="2026-04-19T01:03:42.909567" elapsed="10.005923"/>
</branch>
<status status="PASS" start="2026-04-19T01:03:42.909550" elapsed="10.005974"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:03:52.916510" level="INFO">${ip_address} = 10.30.171.206</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-19T01:03:52.916183" elapsed="0.000355"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:03:52.916591" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:03:52.916752" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:03:52.915774" elapsed="0.001003"/>
</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-19T01:03:52.916933" elapsed="0.000444"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:03:52.917696" level="INFO">index=59
host=10.30.171.206
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-19T01:03:52.917798" level="INFO">${karaf_connection_object} = index=59
host=10.30.171.206
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-19T01:03:52.917568" elapsed="0.000256"/>
</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-19T01:03:52.917972" elapsed="0.002795"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:03:52.921284" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:04:02.946135" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:03:52.920997" elapsed="10.026177">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:04:02.963282" elapsed="0.000538"/>
</kw>
<kw name="Open 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-19T01:04:02.963983" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:04:02.964322" 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-19T01:04:02.948667" elapsed="0.015812"/>
</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-19T01:04:02.947751" elapsed="0.016775"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:03:42.906343" elapsed="20.058271">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:04:02.964980" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:04:02.965075" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:03:22.889330" elapsed="40.075860">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:04:02.965304" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:04:02.965349" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:03:22.884579" elapsed="40.080794"/>
</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-19T01:04:02.965722" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:02.965467" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:02.965446" elapsed="0.000356"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:03:22.884437" elapsed="40.081390"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:03:22.677614" elapsed="40.288247"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:03:22.675178" elapsed="40.290741"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:03:22.670333" elapsed="40.295645"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:03:22.669884" elapsed="40.296481"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:03:22.666481" elapsed="40.299952"/>
</kw>
<kw name="Unregister_Action_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Unregister_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:02.968717" 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-19T01:04:02.968409" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:04:02.968791" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:04:02.968943" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:04:02.968067" elapsed="0.000901"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:04:02.969746" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:04:02.969139" elapsed="0.000636"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.003271" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.002708" elapsed="0.000595"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.004252" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.003891" elapsed="0.000536">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.004691" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.003547" elapsed="0.001170"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.005342" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.004879" elapsed="0.000491"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.005740" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:04:03.005911" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:04:03.005545" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.006410" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.006129" elapsed="0.000328"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.008101" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.007343" elapsed="0.000908"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.009277" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.008539" elapsed="0.000783"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.010798" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:04:03.010294" elapsed="0.000543"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:04:03.013843" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.011888" elapsed="0.001984"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:04:03.013928" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:04:03.014291" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:04:03.011375" elapsed="0.002955"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.014669" elapsed="0.000378"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:04:03.009935" elapsed="0.005184"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:04:03.009474" elapsed="0.005762"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:04:03.015451" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:04:03.015772" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:04:03.006898" elapsed="0.008902"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.006532" elapsed="0.009302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.016009" elapsed="0.000182"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.015861" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.006511" elapsed="0.009742"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.016901" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.016395" elapsed="0.000533"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.016978" elapsed="0.000027"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:04:03.002082" elapsed="0.015038"/>
</kw>
<msg time="2026-04-19T01:04:03.017175" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:02.989898" elapsed="0.027327"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.029448" elapsed="0.000076"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.041403" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.054169" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.054362" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.054531" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.054893" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.054756" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:04:03.054741" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.055120" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.055286" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.055445" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:04:03.054710" elapsed="0.000788"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.054608" elapsed="0.000916"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.055674" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.055750" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:04:03.055861" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:04:02.985733" elapsed="0.070153"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.080569" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.080069" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.081474" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.081121" elapsed="0.000537">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.081930" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.080761" elapsed="0.001195"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.082639" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.082188" elapsed="0.000479"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.082987" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:04:03.083162" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:04:03.082821" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.083642" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.083343" elapsed="0.000357"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:04:03.084157" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.083780" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.084945" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.084399" elapsed="0.000572"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.084250" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.083757" elapsed="0.001293"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.085804" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.085196" elapsed="0.000639"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.085887" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:04:03.079427" elapsed="0.006592"/>
</kw>
<msg time="2026-04-19T01:04:03.086100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:03.066940" elapsed="0.019211"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.098490" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.111479" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.123387" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.123585" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.123795" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.124228" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.124085" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:04:03.124069" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.124442" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.124603" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.124764" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:04:03.124022" elapsed="0.000796"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.123914" elapsed="0.000931"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.124985" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.125077" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:04:03.125205" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:04:03.066056" elapsed="0.059178"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.126494" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.126248" elapsed="0.000313">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.126653" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.125889" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.126993" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.126749" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.127572" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.127269" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.127093" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.126730" elapsed="0.000924"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.129978" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.127827" elapsed="0.002178"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:04:03.130073" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:04:03.130231" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:04:03.125563" elapsed="0.004693"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.131821" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.131536" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.132282" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.132017" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.132723" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.132477" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.133181" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.132914" elapsed="0.000311"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:04:03.134121" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:04:03.133895" elapsed="0.000253"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:04:03.134476" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:04:03.134299" elapsed="0.000203"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.134649" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.135305" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.135012" elapsed="0.000341"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:04:03.135397" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:04:03.135555" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:04:03.133459" elapsed="0.002122"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:04:03.149143" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node0qn1uio67gisz1r9j7rdoxpglo0.node0', 'Content-Length': '283', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:04:03.149196" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T01:04:03.149320" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:04:03.137895" elapsed="0.011454"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.135651" elapsed="0.013743"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.149575" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.149421" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.135633" elapsed="0.014031"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.157437" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.152116" elapsed="0.005421"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.151496" elapsed="0.006120"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.151452" elapsed="0.006221"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.162069" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.158330" elapsed="0.003787"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.157795" elapsed="0.004356"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.157758" elapsed="0.004419"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.162741" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.162347" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.163105" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.162843" elapsed="0.000323"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.163647" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.163346" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.163191" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.162825" elapsed="0.000925"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.164288" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.163904" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.164615" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.164385" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.165167" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.164849" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.164697" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.164367" elapsed="0.000882"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:03.165394" elapsed="0.000346"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:04:03.166260" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.165951" elapsed="0.000336"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.166439" elapsed="0.002348"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:04:03.150445" elapsed="0.018406"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:04:03.169049" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T01:04:03.168925" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.168906" elapsed="0.000233"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.169285" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.169353" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:04:03.171659" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:04:03.130578" elapsed="0.041109"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.171782" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:04:03.171941" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:04:02.974711" elapsed="0.197254"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.172330" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.172094" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.172076" elapsed="0.000347"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.172457" elapsed="0.000026"/>
</return>
<arg>${UNREGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:04:02.970023" elapsed="0.202557"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke unregister-bound-constant rpc and unregister get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T01:04:02.967645" elapsed="0.204997"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.173194" elapsed="0.000231"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T01:04:03.172858" elapsed="0.000646"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.174132" elapsed="0.000193"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.174472" elapsed="0.000194"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:04:03.174811" elapsed="0.000151"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:04:03.175117" elapsed="0.000167"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T01:04:03.173752" elapsed="0.001590"/>
</kw>
<arg>${index}</arg>
<doc>Unregister routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:04:02.967219" elapsed="0.208174"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:04:02.967058" elapsed="0.208365"/>
</iter>
<iter>
<kw name="Unregister_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.177449" level="INFO">${session} = ClusterManagement__session_2</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-19T01:04:03.176881" elapsed="0.000595"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:04:03.177560" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:04:03.177715" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:04:03.176544" elapsed="0.001195"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.178303" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.177898" elapsed="0.000434"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.211148" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.210648" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.212065" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.211689" elapsed="0.000557">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.212532" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.211353" elapsed="0.001212"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.213212" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.212733" elapsed="0.000507"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.213565" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:04:03.213719" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:04:03.213399" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.214188" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.213898" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.215872" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.215118" elapsed="0.000927"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.217058" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.216338" elapsed="0.000766"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.218523" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:04:03.218008" elapsed="0.000555"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:04:03.219739" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.219509" elapsed="0.000260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:04:03.219843" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T01:04:03.220399" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:04:03.219055" elapsed="0.001381"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.220776" elapsed="0.000364"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:04:03.217670" elapsed="0.003530"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:04:03.217255" elapsed="0.004059"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:04:03.221531" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:04:03.221817" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:04:03.214674" elapsed="0.007171"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.214307" elapsed="0.007570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.222065" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.221903" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.214285" elapsed="0.007858"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.222777" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.222284" elapsed="0.000521"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.222898" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:04:03.209985" elapsed="0.013059"/>
</kw>
<msg time="2026-04-19T01:04:03.223099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:03.197761" elapsed="0.025394"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.235514" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.247689" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.259501" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.259714" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.259917" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.260294" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.260155" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:04:03.260141" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.260505" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.260664" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.260821" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:04:03.260110" elapsed="0.000763"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.259994" elapsed="0.000905"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.261051" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.261127" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:04:03.261239" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:04:03.193612" elapsed="0.067653"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.285519" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.285056" elapsed="0.000493"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.286397" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.286064" elapsed="0.000512">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.286848" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.285707" elapsed="0.001167"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.287539" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.287047" elapsed="0.000520"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.287897" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:04:03.288066" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:04:03.287724" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.288514" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.288247" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:04:03.288974" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.288633" elapsed="0.000416"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.289758" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.289216" elapsed="0.000569"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.289076" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.288613" elapsed="0.001229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.290597" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.289981" elapsed="0.000646"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.290677" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:04:03.284378" elapsed="0.006427"/>
</kw>
<msg time="2026-04-19T01:04:03.290859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:03.271946" elapsed="0.018961"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.303511" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.315433" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.327174" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.327363" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.327530" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.327889" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.327752" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:04:03.327737" elapsed="0.000242"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.328127" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.328288" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.328444" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:04:03.327707" elapsed="0.000789"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.327605" elapsed="0.000917"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.328674" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.328750" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:04:03.328872" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:04:03.271010" elapsed="0.057891"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.330234" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.329941" elapsed="0.000365">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.330401" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.329566" elapsed="0.000860"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.330735" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.330497" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.331293" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.330985" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.330816" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.330478" elapsed="0.000897"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.333686" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.331518" elapsed="0.002194"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:04:03.333764" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:04:03.333917" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:04:03.329244" elapsed="0.004698"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.335451" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.335206" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.335918" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.335681" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.336384" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.336140" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.336809" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.336572" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:04:03.337654" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:04:03.337459" elapsed="0.000221"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:04:03.337999" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:04:03.337826" elapsed="0.000212"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.338183" elapsed="0.000209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.338782" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.338539" elapsed="0.000286"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:04:03.338868" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:04:03.339021" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:04:03.337059" elapsed="0.002001"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:04:03.368467" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01wzmzketkvtvqfhi1v3znzshf0.node0', 'Content-Length': '283', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:04:03.368581" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T01:04:03.368794" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:04:03.341328" elapsed="0.027532"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.339131" elapsed="0.029837"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.369392" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.369056" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.339112" elapsed="0.030474"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.376914" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.371869" elapsed="0.005089"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.371392" elapsed="0.005600"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.371351" elapsed="0.005666"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.379576" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.377312" elapsed="0.002310"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.377096" elapsed="0.002560"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.377079" elapsed="0.002602"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.380238" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.379835" elapsed="0.000431"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.380561" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.380334" elapsed="0.000283"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.381107" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.380794" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.380639" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.380316" elapsed="0.000873"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.381696" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.381340" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.382157" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.381899" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.382688" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.382392" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.382240" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.381880" elapsed="0.000890"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:03.382909" elapsed="0.000364"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:04:03.383711" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.383433" elapsed="0.000356"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.383954" elapsed="0.002342"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:04:03.370390" elapsed="0.015969"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:04:03.386538" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:04:03.386431" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.386412" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.386771" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.386838" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T01:04:03.389143" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:04:03.334276" elapsed="0.054897"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.389243" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:04:03.389398" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:04:03.182832" elapsed="0.206591"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.389763" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.389528" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.389509" elapsed="0.000344"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.389886" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:04:03.178588" elapsed="0.211421"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke unregister-bound-constant rpc and unregister get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T01:04:03.176136" elapsed="0.213952"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.390613" elapsed="0.000228"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T01:04:03.390299" elapsed="0.000601"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.391402" elapsed="0.000186"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.391733" elapsed="0.000185"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:04:03.392097" elapsed="0.000152"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:04:03.392391" elapsed="0.000147"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T01:04:03.391096" elapsed="0.001533"/>
</kw>
<arg>${index}</arg>
<doc>Unregister routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:04:03.175671" elapsed="0.217009"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:04:03.175510" elapsed="0.217200"/>
</iter>
<iter>
<kw name="Unregister_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.394657" level="INFO">${session} = ClusterManagement__session_3</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-19T01:04:03.394353" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:04:03.394731" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:04:03.394880" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:04:03.393811" elapsed="0.001093"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.395467" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.395084" elapsed="0.000411"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.428352" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.427873" elapsed="0.000509"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.429222" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.428868" elapsed="0.000536">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.430093" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.428540" elapsed="0.001580"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.430735" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.430285" elapsed="0.000477"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.431099" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:04:03.431252" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:04:03.430917" elapsed="0.000361"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.431697" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.431427" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.433468" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.432760" elapsed="0.000881"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.434663" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.433942" elapsed="0.000763"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.436178" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:04:03.435639" elapsed="0.000579"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:04:03.437515" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.437270" elapsed="0.000271"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:04:03.437593" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:04:03.437905" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:04:03.436679" elapsed="0.001262"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.438497" elapsed="0.000342"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:04:03.435295" elapsed="0.003601"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:04:03.434864" elapsed="0.004146"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:04:03.439235" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:04:03.439563" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:04:03.432224" elapsed="0.007366"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.431820" elapsed="0.007803"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.439794" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.439649" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.431798" elapsed="0.008074"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.440540" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.440008" elapsed="0.000560"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.440618" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:04:03.427267" elapsed="0.013474"/>
</kw>
<msg time="2026-04-19T01:04:03.440795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:03.414942" elapsed="0.025901"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.452961" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.464844" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.476636" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.476827" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.476993" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.477421" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.477280" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:04:03.477265" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.477631" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.477792" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.477950" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:04:03.477231" elapsed="0.000771"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.477083" elapsed="0.000960"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.478185" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.478261" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:04:03.478405" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:04:03.410699" elapsed="0.067732"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.503000" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.502513" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.503871" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.503544" elapsed="0.000520">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.504367" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.503214" elapsed="0.001179"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.504999" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.504553" elapsed="0.000488"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.505361" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:04:03.505511" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:04:03.505199" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.505977" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.505705" elapsed="0.000338"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:04:03.506458" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.506116" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.507231" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.506682" elapsed="0.000576"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.506544" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.506095" elapsed="0.001220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.508341" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:04:03.507456" elapsed="0.000916"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:04:03.508424" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:04:03.501892" elapsed="0.006663"/>
</kw>
<msg time="2026-04-19T01:04:03.508610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:04:03.489225" elapsed="0.019434"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.520937" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.532836" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.544666" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.544857" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.545025" elapsed="0.000034"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.545397" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.545261" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:04:03.545246" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.545607" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.545766" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.545922" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:04:03.545217" elapsed="0.000757"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.545115" elapsed="0.000885"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.546177" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:04:03.546258" elapsed="0.000020"/>
</return>
<msg time="2026-04-19T01:04:03.546390" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:04:03.488338" elapsed="0.058080"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:04:03.547662" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.547422" elapsed="0.000307">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:04:03.547818" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:04:03.547082" elapsed="0.000761"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:04:03.548191" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:04:03.547911" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.548759" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:04:03.548467" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T01:04:03.548292" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T01:04:03.547893" elapsed="0.000948"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.551103" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:04:03.548985" elapsed="0.002145"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:04:03.551215" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:04:03.551371" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:04:03.546745" elapsed="0.004652"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.552916" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.552669" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.553358" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.553121" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.553819" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.553550" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.554279" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.554019" elapsed="0.000303"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:04:03.555130" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:04:03.554916" elapsed="0.000240"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:04:03.555514" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:04:03.555331" elapsed="0.000208"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:04:03.555683" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:04:03.556311" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:04:03.556056" elapsed="0.000300"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:04:03.556398" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:04:03.556551" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:04:03.554515" elapsed="0.002060"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:06:08.660002" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.559298" elapsed="125.104653">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:04:03.556874" elapsed="125.107322">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:08.664686" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:08.664280" elapsed="0.000558"/>
</branch>
<status status="FAIL" start="2026-04-19T01:04:03.556626" elapsed="125.108266">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:08.665814" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:06:08.666161" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:08.666072" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:06:08.666002" elapsed="0.000301"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:08.666604" elapsed="0.000065"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:06:08.666770" elapsed="0.000031"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.551713" elapsed="125.115291">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:06:08.667215" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.399987" elapsed="125.267444">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:08.668245" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:08.667825" elapsed="0.000572"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:06:08.667787" elapsed="0.000662"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:06:08.668520" elapsed="0.000030"/>
</return>
<arg>${UNREGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.395737" elapsed="125.272996">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke unregister-bound-constant rpc and unregister get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.393379" elapsed="125.275572">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Remove a constant from the [] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="NOT RUN" start="2026-04-19T01:06:08.669484" elapsed="0.000053"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:08.669917" elapsed="0.000050"/>
</kw>
<arg>${index}</arg>
<doc>Unregister routed rpc on given node of the cluster.</doc>
<status status="FAIL" start="2026-04-19T01:04:03.392958" elapsed="125.277227">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:04:03.392799" elapsed="125.277513">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:04:02.966907" elapsed="125.703527">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${all_indices}</arg>
<doc>Unregister global rpc on given nodes of the cluster.</doc>
<status status="FAIL" start="2026-04-19T01:04:02.966669" elapsed="125.703962">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:08.672536" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:08.672144" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:08.672126" elapsed="0.000497"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:08.672770" elapsed="0.000395"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.678010" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:06:08.677562" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:06:08.678272" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:08.678128" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:08.678109" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.678780" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:06:08.678471" elapsed="0.000335"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:06:08.679233" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Precedence_Unregister_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:06:08.678956" elapsed="0.000304"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:06:08.679583" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:06:08.679411" elapsed="0.000197"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.680122" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:06:08.679752" elapsed="0.000404"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.680621" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:06:08.680311" elapsed="0.000374"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.681294" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:06:08.680836" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.681962" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:08.681492" elapsed="0.000519"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:06:08.677260" elapsed="0.004823"/>
</kw>
<status status="PASS" start="2026-04-19T01:06:08.671917" elapsed="0.010216"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:06:08.671348" elapsed="0.010826"/>
</kw>
<doc>Unregister rpc on every node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:03:22.665909" elapsed="166.016304">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_precedence_unregister_rpc_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T01:06:08.682722" elapsed="0.000503"/>
</kw>
<doc>DOMRpcBroker testing: Action Provider Precedence

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

The aim is to establish that remote action implementations have lower priority
than local ones, which is to say that any movement of actions on remote nodes
does not affect routing as long as a local implementation is available.</doc>
<status status="FAIL" start="2026-04-19T00:51:27.432537" elapsed="881.250736"/>
</suite>
<suite id="s1-s7" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.790744" 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-19T01:06:08.786419" elapsed="0.004376"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T01:06:08.786189" elapsed="0.004669"/>
</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-19T01:06:08.796074" 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-19T01:06:08.791939" elapsed="0.004164"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T01:06:08.796287" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:08.796183" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:08.796162" elapsed="0.000190"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.796844" 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-19T01:06:08.796506" elapsed="0.000380"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.797379" level="INFO">${cluster_size} = 3</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-19T01:06:08.797066" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-19T01:06:08.797904" elapsed="0.000298"/>
</kw>
<msg time="2026-04-19T01:06:08.798299" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:06:08.798346" level="INFO">${possibly_int_of_members} = 3</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-19T01:06:08.797570" elapsed="0.000798"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.798910" level="INFO">${int_of_members} = 3</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-19T01:06:08.798535" elapsed="0.000400"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.799909" 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-19T01:06:08.799650" elapsed="0.000284"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.800355" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:06:08.800098" elapsed="0.000283"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.800874" 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-19T01:06:08.800586" elapsed="0.000315"/>
</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-19T01:06:08.804119" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.804813" level="INFO">${member_ip} = 10.30.171.9</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-19T01:06:08.804492" elapsed="0.000347"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:06:08.804991" elapsed="0.000249"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.806019" 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-19T01:06:08.805728" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:06:08.806107" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:06:08.806262" 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-19T01:06:08.805434" elapsed="0.000853"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:06:08.806881" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f75b35d0&gt;, timeout=125, 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-19T01:06:08.806444" elapsed="0.000574"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:06:08.807197" 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-19T01:06:08.803538" elapsed="0.003904"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:06:08.803348" elapsed="0.004138"/>
</iter>
<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-19T01:06:08.808531" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.809220" level="INFO">${member_ip} = 10.30.171.128</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-19T01:06:08.808877" elapsed="0.000369"/>
</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-19T01:06:08.809400" elapsed="0.000220"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.810424" level="INFO">${session} = ClusterManagement__session_2</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-19T01:06:08.810130" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:06:08.810496" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:06:08.810645" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T01:06:08.809816" elapsed="0.000853"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:06:08.811303" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f75811d0&gt;, timeout=125, 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-19T01:06:08.810846" elapsed="0.000559"/>
</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-19T01:06:08.811566" 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-19T01:06:08.807948" elapsed="0.003867"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:06:08.807573" elapsed="0.004286"/>
</iter>
<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-19T01:06:08.812689" elapsed="0.000185"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.813370" level="INFO">${member_ip} = 10.30.171.206</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-19T01:06:08.813046" elapsed="0.000350"/>
</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-19T01:06:08.813546" elapsed="0.000219"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.814595" level="INFO">${session} = ClusterManagement__session_3</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-19T01:06:08.814261" elapsed="0.000361"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:06:08.814668" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:06:08.814829" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T01:06:08.813954" elapsed="0.000900"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:06:08.815428" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f75b2a50&gt;, timeout=125, 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-19T01:06:08.815009" elapsed="0.000521"/>
</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-19T01:06:08.815692" elapsed="0.000193"/>
</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-19T01:06:08.812140" elapsed="0.003803"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:06:08.811944" elapsed="0.004042"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T01:06:08.800955" elapsed="0.015061"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.816579" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T01:06:08.816196" elapsed="0.000425"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.817183" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T01:06:08.816784" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.817757" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T01:06:08.817389" elapsed="0.000411"/>
</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-19T01:06:08.799201" elapsed="0.018656"/>
</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-19T01:06:08.791598" elapsed="0.026313"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:06:08.818105" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:08.817975" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:08.817957" elapsed="0.000214"/>
</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-19T01:06:08.821511" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:06:08.821132" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.822004" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:06:08.821699" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:06:08.822091" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:06:08.822244" level="INFO">${index_list} = [1, 2, 3]</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-19T01:06:08.820786" elapsed="0.001483"/>
</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-19T01:06:08.823326" level="INFO">${member_ip} = 10.30.171.9</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-19T01:06:08.823054" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:08.824110" 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-19T01:06:08.824212" 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-19T01:06:08.823935" elapsed="0.000304"/>
</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-19T01:06:08.826927" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:08.826581" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:08.826562" elapsed="0.000615"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:08.827459" 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-19T01:06:08.827580" 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-19T01:06:08.827330" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.828667" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:08.827761" elapsed="0.000955"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:08.829526" 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-19T01:06:08.828877" elapsed="0.000676"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:06:08.830872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:06:08.831095" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:06:08.830317" elapsed="0.000828"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:08.831419" elapsed="0.000600"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:06:08.833626" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:06:09.409954" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 00:51:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:06:08.833095" elapsed="0.577107"/>
</kw>
<msg time="2026-04-19T01:06:09.410316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:08.832353" elapsed="0.578141"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:06:08.829769" elapsed="0.580972"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:06:09.411379" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:06:09.424087" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:06:09.424429" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:06:09.424529" 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-19T01:06:09.411003" elapsed="0.013579"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:09.424949" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:09.426979" 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-19T01:06:09.425866" elapsed="0.001304"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:06:09.427683" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:09.427346" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:09.427294" elapsed="0.000513"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:06:09.428094" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T01:06:09.427887" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:09.427865" elapsed="0.000355"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:06:09.428270" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:09.432843" elapsed="0.001076"/>
</kw>
<kw name="Open 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-19T01:06:09.434296" elapsed="0.000592"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:09.435242" elapsed="0.000281"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:06:09.428741" elapsed="0.006979"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:06:08.826098" elapsed="0.609726"/>
</kw>
<msg time="2026-04-19T01:06:09.435880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:08.825405" elapsed="0.610528"/>
</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-19T01:06:08.824903" elapsed="0.611112"/>
</kw>
<msg time="2026-04-19T01:06:09.436075" 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-19T01:06:08.824397" elapsed="0.611727"/>
</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-19T01:06:09.439008" 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-19T01:06:09.439548" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:09.439838" 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-19T01:06:09.436418" elapsed="0.003564"/>
</kw>
<msg time="2026-04-19T01:06:09.440094" 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-19T01:06:08.823574" elapsed="0.616547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:09.440551" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:09.440304" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:06:09.440636" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:06:08.822623" elapsed="0.618138"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:06:08.822448" elapsed="0.618351"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:09.441727" level="INFO">${member_ip} = 10.30.171.128</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-19T01:06:09.441455" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:09.442491" 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-19T01:06:09.442589" 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-19T01:06:09.442356" elapsed="0.000258"/>
</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-19T01:06:09.445526" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:09.445217" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:09.445198" elapsed="0.000518"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:09.445997" 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-19T01:06:09.446137" 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-19T01:06:09.445867" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:09.447279" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:09.446316" elapsed="0.001013"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:09.448164" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:06:09.447492" elapsed="0.000698"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:06:09.449512" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:06:09.449756" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:06:09.448926" elapsed="0.000879"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:09.450105" elapsed="0.000598"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:06:09.452199" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:06:10.030233" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 00:51:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:06:09.451787" elapsed="0.578678"/>
</kw>
<msg time="2026-04-19T01:06:10.030574" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:09.451019" elapsed="0.579728"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:06:09.448410" elapsed="0.582586"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.031625" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:06:10.044428" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:06:10.044928" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:06:10.045079" 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-19T01:06:10.031292" elapsed="0.013851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.045637" elapsed="0.000608"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.047859" 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-19T01:06:10.046678" elapsed="0.001286"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:06:10.048517" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:10.048175" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:10.048120" 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-19T01:06:10.049100" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:06:10.048794" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:10.048761" elapsed="0.000542"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:06:10.049378" 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-19T01:06:10.056229" elapsed="0.000744"/>
</kw>
<kw name="Open 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-19T01:06:10.057235" elapsed="0.000441"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.057876" 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-19T01:06:10.050141" elapsed="0.008046"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:06:09.444708" elapsed="0.613576"/>
</kw>
<msg time="2026-04-19T01:06:10.058339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:09.444055" elapsed="0.614342"/>
</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-19T01:06:09.443352" elapsed="0.615125"/>
</kw>
<msg time="2026-04-19T01:06:10.058520" 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-19T01:06:09.442770" elapsed="0.615795"/>
</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-19T01:06:10.061475" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:06:10.062009" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.062335" 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-19T01:06:10.058852" elapsed="0.003630"/>
</kw>
<msg time="2026-04-19T01:06:10.062572" 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-19T01:06:09.441968" elapsed="0.620629"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.063018" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:10.062773" elapsed="0.000368"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:06:10.063185" 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-19T01:06:09.441095" elapsed="0.622215"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:06:09.440896" elapsed="0.622453"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:10.064324" level="INFO">${member_ip} = 10.30.171.206</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-19T01:06:10.064049" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.065082" 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-19T01:06:10.065183" 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-19T01:06:10.064927" 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-19T01:06:10.067917" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:10.067610" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:10.067591" elapsed="0.000533"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.068401" 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-19T01:06:10.068522" 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-19T01:06:10.068274" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.069611" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:10.068698" elapsed="0.000961"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.070478" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:06:10.069813" elapsed="0.000693"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.071906" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:06:10.072130" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:06:10.071315" elapsed="0.000863"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:10.072457" elapsed="0.000799"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.074772" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:06:10.732276" 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 Sun Apr 19 01:06:10 UTC 2026

  System load:  0.05               Processes:             119
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 00:51:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:06:10.074377" elapsed="0.658071"/>
</kw>
<msg time="2026-04-19T01:06:10.732622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:10.073595" elapsed="0.659200"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:06:10.070724" elapsed="0.662334"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.733621" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:06:10.746198" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:06:10.746534" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:06:10.746636" 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-19T01:06:10.733304" elapsed="0.013387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.747104" elapsed="0.000448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.749169" 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-19T01:06:10.748014" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:06:10.749787" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:10.749449" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:10.749398" elapsed="0.000545"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:06:10.750389" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:06:10.750098" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:10.750059" elapsed="0.000520"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:06:10.750654" 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-19T01:06:10.755772" elapsed="0.001044"/>
</kw>
<kw name="Open 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-19T01:06:10.757179" elapsed="0.000563"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.758003" elapsed="0.000284"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:06:10.751378" elapsed="0.007024"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:06:10.067118" elapsed="0.691415"/>
</kw>
<msg time="2026-04-19T01:06:10.758606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:10.066437" elapsed="0.692239"/>
</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-19T01:06:10.065891" elapsed="0.692891"/>
</kw>
<msg time="2026-04-19T01:06:10.758837" 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-19T01:06:10.065364" elapsed="0.693533"/>
</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-19T01:06:10.762950" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T01:06:10.763632" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.764103" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:06:10.759317" elapsed="0.004996"/>
</kw>
<msg time="2026-04-19T01:06:10.764439" 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-19T01:06:10.064566" elapsed="0.699907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.764985" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:10.764713" elapsed="0.000384"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:06:10.765143" 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-19T01:06:10.063660" elapsed="0.701609"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:06:10.063472" elapsed="0.701835"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:06:08.822321" elapsed="1.943021"/>
</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-19T01:06:08.818390" elapsed="1.947052"/>
</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-19T01:06:10.765601" elapsed="0.000215"/>
</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-19T01:06:10.780141" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:10.780015" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:10.779997" elapsed="0.000214"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.780500" 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-19T01:06:10.780603" 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-19T01:06:10.780365" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.781053" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:10.780783" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:10.781490" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:10.781251" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:10.782283" 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-19T01:06:10.782059" elapsed="0.000331">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T01:06:10.782494" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:06:10.782539" 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-19T01:06:10.781687" elapsed="0.000875"/>
</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-19T01:06:10.782863" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:10.782636" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:10.782618" elapsed="0.000343"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:10.783720" level="INFO">${ip_address} = 10.30.171.9</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-19T01:06:10.783456" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:06:10.783821" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:06:10.783972" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:06:10.783185" 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-19T01:06:10.784166" elapsed="0.000394"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.784834" level="INFO">index=10
host=10.30.171.9
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-19T01:06:10.784931" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.784729" 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-19T01:06:10.785119" elapsed="0.002356"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:06:10.787918" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:06:11.023206" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:06:10.787638" elapsed="0.235656"/>
</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-19T01:06:11.026697" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T01:06:11.027235" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:11.027531" 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-19T01:06:11.024164" elapsed="0.003516"/>
</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-19T01:06:11.023570" elapsed="0.004156"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:06:10.779703" elapsed="0.248074"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:06:10.766549" elapsed="0.261275"/>
</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-19T01:06:10.766179" elapsed="0.261695"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:06:10.766021" elapsed="0.261926"/>
</iter>
<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-19T01:06:11.041661" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:11.041549" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:11.041530" elapsed="0.000201"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:11.042012" 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-19T01:06:11.042131" 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-19T01:06:11.041881" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:11.042564" 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-19T01:06:11.042308" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:11.042996" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:11.042756" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:11.043782" level="FAIL">Dictionary does not contain key '2'.</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-19T01:06:11.043569" elapsed="0.000304">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T01:06:11.044007" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:06:11.044067" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T01:06:11.043213" elapsed="0.000879"/>
</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-19T01:06:11.044386" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:11.044167" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:11.044148" elapsed="0.000335"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:11.045233" level="INFO">${ip_address} = 10.30.171.128</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-19T01:06:11.044952" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:06:11.045307" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:06:11.045455" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:06:11.044679" 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-19T01:06:11.045631" elapsed="0.000416"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:11.046331" level="INFO">index=12
host=10.30.171.128
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-19T01:06:11.046428" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T01:06:11.046218" elapsed="0.000236"/>
</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-19T01:06:11.046601" elapsed="0.002539"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:06:11.049605" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:06:11.281375" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:06:11.049340" elapsed="0.232124"/>
</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-19T01:06:11.284622" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:06:11.285108" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:11.285406" 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-19T01:06:11.282298" elapsed="0.003259"/>
</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-19T01:06:11.281736" elapsed="0.003867"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:06:11.041271" elapsed="0.244383"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:06:11.028560" elapsed="0.257140"/>
</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-19T01:06:11.028194" elapsed="0.257556"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:06:11.028054" elapsed="0.257735"/>
</iter>
<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-19T01:06:11.299484" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:11.299370" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:11.299350" elapsed="0.000205"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:11.299841" 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-19T01:06:11.299943" 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-19T01:06:11.299711" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:11.300401" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:11.300144" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:11.300833" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:11.300595" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:11.301617" level="FAIL">Dictionary does not contain key '3'.</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-19T01:06:11.301402" elapsed="0.000307">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T01:06:11.301815" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:06:11.301863" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T01:06:11.301044" elapsed="0.000842"/>
</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-19T01:06:11.302194" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:11.301959" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:11.301941" elapsed="0.000349"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:11.303204" level="INFO">${ip_address} = 10.30.171.206</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-19T01:06:11.302920" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:06:11.303319" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:06:11.303475" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:06:11.302485" elapsed="0.001015"/>
</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-19T01:06:11.303653" elapsed="0.000432"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:11.304366" level="INFO">index=14
host=10.30.171.206
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-19T01:06:11.304465" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T01:06:11.304259" elapsed="0.000232"/>
</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-19T01:06:11.304651" elapsed="0.002357"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:06:11.307440" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:06:21.409590" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:06:11.307185" elapsed="10.103275">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:06:21.415636" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:06:21.416137" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:21.416461" elapsed="0.000106"/>
</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-19T01:06:21.411680" elapsed="0.004940"/>
</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-19T01:06:21.410968" elapsed="0.005698"/>
</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-19T01:06:11.299091" elapsed="10.117659">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:06:21.416848" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:06:11.286402" elapsed="10.130540">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:06:11.286019" elapsed="10.130987"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:06:11.285881" elapsed="10.131196"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T01:06:10.765873" elapsed="10.651241"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T01:06:08.791160" elapsed="12.626012"/>
</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-19T01:06:21.419898" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.419780" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.419757" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:06:21.424978" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.424871" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.424853" elapsed="0.000210"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:06:21.426023" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:06:21.425633" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:06:21.426540" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:06:21.426232" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:06:21.426612" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:06:21.426771" level="INFO">${index_list} = [1, 2, 3]</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-19T01:06:21.425295" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:06:21.432447" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.432333" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.432311" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:06:21.433566" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.433461" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.433443" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:21.434090" 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-19T01:06:21.433775" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:21.434471" 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-19T01:06:21.434276" elapsed="0.000221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:06:21.480280" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:06:21.434991" elapsed="0.045428"/>
</kw>
<msg time="2026-04-19T01:06:21.480522" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:06:21.480586" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.434656" elapsed="0.045968"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:06:21.542133" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:06:21.481158" elapsed="0.061159"/>
</kw>
<msg time="2026-04-19T01:06:21.542418" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:06:21.542463" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.480795" elapsed="0.061704"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:21.542796" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:21.542574" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.542555" elapsed="0.000319"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:21.543343" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:21.543059" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:21.543718" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:21.543502" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.543485" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:06:21.543827" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:21.545298" elapsed="0.000618"/>
</kw>
<kw name="Open 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-19T01:06:21.546259" elapsed="0.000504"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:21.547061" elapsed="0.000208"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:06:21.544828" elapsed="0.002589"/>
</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-19T01:06:21.544110" elapsed="0.003357"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:06:21.433209" elapsed="0.114356"/>
</kw>
<msg time="2026-04-19T01:06:21.547657" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:06:21.547702" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.432669" elapsed="0.115106"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:06:21.547964" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:06:21.547855" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.547836" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:21.548458" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:21.548800" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:06:21.548872" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:06:21.431923" elapsed="0.117055"/>
</kw>
<msg time="2026-04-19T01:06:21.549107" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:06:21.549151" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.427277" elapsed="0.121911"/>
</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-19T01:06:21.549515" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:21.549263" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.549245" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:06:21.427130" elapsed="0.122485"/>
</iter>
<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-19T01:06:21.555039" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.554917" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.554899" 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-19T01:06:21.556164" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.556055" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.556022" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:21.556649" level="INFO">${karaf_connection_index} = 12</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-19T01:06:21.556374" elapsed="0.000301"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:21.557135" 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-19T01:06:21.556832" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:06:21.604413" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:06:21.557654" elapsed="0.047253"/>
</kw>
<msg time="2026-04-19T01:06:21.605293" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:06:21.605401" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.557324" elapsed="0.048161"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:06:21.667846" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:06:21.606958" elapsed="0.061146"/>
</kw>
<msg time="2026-04-19T01:06:21.668218" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:06:21.668264" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.605994" elapsed="0.062307"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:21.668680" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:21.668405" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.668372" elapsed="0.000394"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:21.669297" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:21.668917" elapsed="0.000583"/>
</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-19T01:06:21.669798" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:21.669572" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.669552" elapsed="0.000323"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:06:21.669917" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:06:21.671442" elapsed="0.000677"/>
</kw>
<kw name="Open 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-19T01:06:21.672470" elapsed="0.000582"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:21.673377" elapsed="0.000231"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:06:21.670930" elapsed="0.002835"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T01:06:21.670293" elapsed="0.003524"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:06:21.555790" elapsed="0.118130"/>
</kw>
<msg time="2026-04-19T01:06:21.674019" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:06:21.674091" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.555261" elapsed="0.118869"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:06:21.674321" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:06:21.674209" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.674190" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:21.674838" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:06:21.675498" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:06:21.675577" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:06:21.554627" elapsed="0.121061"/>
</kw>
<msg time="2026-04-19T01:06:21.675785" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:06:21.675831" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:06:21.549875" elapsed="0.125993"/>
</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-19T01:06:21.676233" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:21.675945" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.675928" elapsed="0.000386"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:06:21.549735" elapsed="0.126603"/>
</iter>
<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-19T01:06:21.682196" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.682086" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.682066" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:06:21.683322" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:21.683215" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:21.683197" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:21.683803" level="INFO">${karaf_connection_index} = 14</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-19T01:06:21.683534" elapsed="0.000295"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:21.684208" 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-19T01:06:21.683986" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:06:31.685584" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:06:21.684725" elapsed="10.001593">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:06:31.686521" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:06:31.686711" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:06:21.684393" elapsed="10.002346"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:06:41.688211" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:06:31.687504" elapsed="10.001476">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:06:41.689213" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:06:41.689262" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:06:31.687050" elapsed="10.002238"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:06:41.690496" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T01:06:41.689790" elapsed="0.000773">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:06:41.689427" elapsed="0.001208">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:06:41.689384" elapsed="0.001287">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T01:06:41.690846" 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-19T01:06:41.691100" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:06:41.690935" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:06:41.690917" elapsed="0.000261"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:06:41.691219" elapsed="0.000016"/>
</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-19T01:06:41.692616" elapsed="0.000874"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:06:41.693820" elapsed="0.000553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:06:41.694664" elapsed="0.000224"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:06:41.692136" elapsed="0.002916"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T01:06:41.691525" elapsed="0.003578"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T01:06:21.682940" elapsed="20.012248">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T01:06:41.695293" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:06:41.695339" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T01:06:21.682415" elapsed="20.012950"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:06:41.695552" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:41.695442" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:41.695423" elapsed="0.000196"/>
</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-19T01:06:41.696416" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:06:41.696310" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:41.696292" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:41.696811" 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-19T01:06:41.696915" 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-19T01:06:41.696643" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:41.697380" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:41.697111" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:06:41.697830" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:06:41.697577" 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-19T01:06:41.698571" elapsed="0.000233"/>
</kw>
<msg time="2026-04-19T01:06:41.698902" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:06:41.698948" level="INFO">${old_connection_index} = 14</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-19T01:06:41.698196" elapsed="0.000774"/>
</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-19T01:06:41.699794" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:06:51.702244" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:06:41.700862" elapsed="10.004547">No match found for '
' in 10 seconds
Output:
.</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-19T01:06:41.700271" elapsed="10.005352"/>
</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-19T01:06:51.706630" elapsed="0.000672"/>
</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-19T01:06:51.705955" elapsed="0.001491"/>
</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-19T01:06:41.699287" elapsed="10.008210"/>
</kw>
<status status="PASS" start="2026-04-19T01:06:41.699062" elapsed="10.008488"/>
</branch>
<status status="PASS" start="2026-04-19T01:06:41.699043" elapsed="10.008543"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:06:51.708539" level="INFO">${ip_address} = 10.30.171.206</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-19T01:06:51.708245" elapsed="0.000321"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:06:51.708619" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T01:06:51.708797" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:06:51.707874" elapsed="0.000948"/>
</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-19T01:06:51.708986" elapsed="0.000713"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:06:51.710015" level="INFO">index=19
host=10.30.171.206
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-19T01:06:51.710139" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T01:06:51.709882" elapsed="0.000283"/>
</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-19T01:06:51.710317" elapsed="0.002745"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:06:51.713515" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:07:01.784147" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:06:51.713242" elapsed="10.072010">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:07:01.789100" 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-19T01:07:01.789895" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:01.790240" 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-19T01:07:01.786480" elapsed="0.003918"/>
</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-19T01:07:01.785766" elapsed="0.004679"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:06:41.696020" elapsed="20.094510">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:07:01.790897" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:07:01.790977" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:06:21.681762" elapsed="40.109432">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:07:01.791317" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:07:01.791362" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:06:21.676625" elapsed="40.114762"/>
</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-19T01:07:01.791742" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:01.791473" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:01.791452" elapsed="0.000370"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:06:21.676479" elapsed="40.115372"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:06:21.426926" elapsed="40.364959"/>
</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-19T01:06:21.424578" elapsed="40.367376"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T01:06:21.417768" elapsed="40.374272"/>
</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-19T01:06:21.417329" elapsed="40.374758"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T01:06:08.785828" elapsed="53.006327"/>
</kw>
<test id="s1-s7-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:07:01.798638" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:07:01.798238" elapsed="0.000428"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:07:01.799163" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:07:01.798829" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:07:01.799236" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:07:01.799400" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T01:07:01.797789" elapsed="0.001637"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:07:01.800449" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:07:01.800055" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:07:01.800962" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:07:01.800651" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:07:01.801052" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:01.801261" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T01:07:01.799636" elapsed="0.001650"/>
</kw>
<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-19T01:07:01.802769" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:07:01.802382" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:07:01.803283" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:07:01.802955" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:07:01.803354" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:01.803510" level="INFO">${index_list} = [1, 2, 3]</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-19T01:07:01.801994" elapsed="0.001541"/>
</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-19T01:07:01.804626" level="INFO">${member_ip} = 10.30.171.9</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-19T01:07:01.804339" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:01.805455" 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-19T01:07:01.805605" 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-19T01:07:01.805304" elapsed="0.000330"/>
</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-19T01:07:01.808481" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:01.808176" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:01.808156" elapsed="0.000414"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:01.808853" 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-19T01:07:01.808955" 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-19T01:07:01.808720" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:01.809646" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:01.809155" elapsed="0.000541"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:01.810305" 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-19T01:07:01.809853" elapsed="0.000478"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:01.811736" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:01.811875" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:01.811132" elapsed="0.000769"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:01.812112" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:01.815261" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:02.141189" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:06:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:07:01.814638" elapsed="0.326751"/>
</kw>
<msg time="2026-04-19T01:07:02.141517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:01.813140" elapsed="0.328554"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:01.810549" elapsed="0.331318"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:02.142375" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:07:02.509268" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:02.509628" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:07:02.509728" 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-19T01:07:02.142127" elapsed="0.367655"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:02.510303" elapsed="0.000589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:02.512183" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:02.511381" 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-19T01:07:02.512752" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:02.512454" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:02.512399" elapsed="0.000510"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:02.513371" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T01:07:02.513118" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:02.512994" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:02.513640" 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-19T01:07:02.532848" elapsed="0.000751"/>
</kw>
<kw name="Open 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-19T01:07:02.533861" elapsed="0.000578"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:02.534595" 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-19T01:07:02.514389" elapsed="0.020386"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:01.807472" elapsed="0.727407"/>
</kw>
<msg time="2026-04-19T01:07:02.534957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:01.806863" elapsed="0.728183"/>
</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-19T01:07:01.806327" elapsed="0.728807"/>
</kw>
<msg time="2026-04-19T01:07:02.535179" 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-19T01:07:01.805795" elapsed="0.729431"/>
</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-19T01:07:02.538661" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T01:07:02.539234" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:02.539541" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:02.535584" elapsed="0.004112"/>
</kw>
<msg time="2026-04-19T01:07:02.539793" 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-19T01:07:01.804873" elapsed="0.734946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:02.540309" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:02.540053" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:02.540398" elapsed="0.000037"/>
</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-19T01:07:01.803902" elapsed="0.736631"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:07:01.803726" elapsed="0.736845"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:02.541681" level="INFO">${member_ip} = 10.30.171.128</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-19T01:07:02.541395" elapsed="0.000312"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:02.542565" 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-19T01:07:02.542666" 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-19T01:07:02.542418" elapsed="0.000274"/>
</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-19T01:07:02.545518" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:02.545236" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:02.545214" elapsed="0.000387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:02.545878" 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-19T01:07:02.545980" 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-19T01:07:02.545749" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:02.546666" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:02.546176" elapsed="0.000540"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:02.547452" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:02.546923" elapsed="0.000556"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:02.548741" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:02.548877" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:02.548152" elapsed="0.000750"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:02.549130" elapsed="0.000968"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:02.552617" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:02.871123" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:06:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:07:02.551891" elapsed="0.319472"/>
</kw>
<msg time="2026-04-19T01:07:02.871502" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:02.550348" elapsed="0.321345"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:02.547697" elapsed="0.324180"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:02.872417" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:07:03.248926" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:03.249336" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:07:03.249439" 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-19T01:07:02.872151" elapsed="0.377342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:03.249996" elapsed="0.000614"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.251788" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:03.251067" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:03.252396" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:03.252099" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:03.252006" elapsed="0.000546"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:03.252904" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T01:07:03.252671" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:03.252637" elapsed="0.000500"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:03.253212" 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-19T01:07:03.273253" elapsed="0.000610"/>
</kw>
<kw name="Open 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-19T01:07:03.274258" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:03.274591" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:03.253903" elapsed="0.020842"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:02.544665" elapsed="0.730173"/>
</kw>
<msg time="2026-04-19T01:07:03.274895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:02.544023" elapsed="0.730933"/>
</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-19T01:07:02.543489" elapsed="0.731562"/>
</kw>
<msg time="2026-04-19T01:07:03.275093" 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-19T01:07:02.542920" elapsed="0.732218"/>
</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-19T01:07:03.278193" 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-19T01:07:03.278740" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:03.279086" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:03.275444" elapsed="0.003792"/>
</kw>
<msg time="2026-04-19T01:07:03.279327" 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-19T01:07:02.541928" elapsed="0.737423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.279806" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:03.279557" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:03.279891" 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-19T01:07:02.540879" elapsed="0.739137"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:07:02.540673" elapsed="0.739613"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:03.281262" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:03.280975" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:03.282412" 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-19T01:07:03.282516" 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-19T01:07:03.281934" elapsed="0.000609"/>
</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-19T01:07:03.285681" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:03.285406" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:03.285385" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:03.286076" 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-19T01:07:03.286177" 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-19T01:07:03.285926" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.286823" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:03.286352" elapsed="0.000518"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:03.287456" 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-19T01:07:03.287038" elapsed="0.000444"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.288697" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:03.288828" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:03.288138" elapsed="0.000714"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:03.289057" elapsed="0.000733"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:03.292150" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:03.609623" 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 Sun Apr 19 01:06:10 UTC 2026

  System load:  0.05               Processes:             119
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:06:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:03.291531" elapsed="0.318327"/>
</kw>
<msg time="2026-04-19T01:07:03.610090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:03.290047" elapsed="0.320231"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:03.287694" elapsed="0.322763"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:03.610953" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:07:03.966634" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T01:07:03.966988" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:07:03.967135" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:07:03.610695" elapsed="0.356498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:03.967662" elapsed="0.000531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.969368" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:03.968613" elapsed="0.000862"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:03.970010" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:03.969716" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:03.969665" 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-19T01:07:03.970570" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T01:07:03.970334" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:03.970299" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:03.970837" 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-19T01:07:03.989214" 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-19T01:07:03.989922" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:03.990251" 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-19T01:07:03.971567" elapsed="0.018835"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:03.284696" elapsed="0.705796"/>
</kw>
<msg time="2026-04-19T01:07:03.990546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:03.283989" elapsed="0.706611"/>
</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-19T01:07:03.283454" elapsed="0.707220"/>
</kw>
<msg time="2026-04-19T01:07:03.990714" 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-19T01:07:03.282697" elapsed="0.708061"/>
</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-19T01:07:03.993965" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:07:03.994472" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:03.994769" 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-19T01:07:03.991302" elapsed="0.003612"/>
</kw>
<msg time="2026-04-19T01:07:03.995004" 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-19T01:07:03.281500" elapsed="0.713907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.995858" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:03.995605" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:03.995941" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:03.280570" elapsed="0.715510"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:07:03.280384" elapsed="0.715734"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:07:01.803592" elapsed="2.192561"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T01:07:01.801502" elapsed="2.194710"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.996743" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:07:03.996432" elapsed="0.000337"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:07:03.996923" elapsed="0.000265"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T01:07:03.997367" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:03.997262" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:03.997243" elapsed="0.000189"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:03.999524" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:03.999230" elapsed="0.000320"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:04.000431" level="INFO">${member_ip} = 10.30.171.9</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-19T01:07:04.000163" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:04.001230" 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-19T01:07:04.001329" 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-19T01:07:04.001088" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:07:04.005362" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:04.004879" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:04.004822" elapsed="0.000686"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:04.007126" 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-19T01:07:04.007432" 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-19T01:07:04.006629" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:04.009310" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:04.008708" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:04.011310" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:04.010555" elapsed="0.000866"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:04.014597" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:04.014673" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:04.014323" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:04.014911" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:04.016177" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:04.328608" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:07:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:07:04.015840" elapsed="0.312922"/>
</kw>
<msg time="2026-04-19T01:07:04.328862" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:04.015485" elapsed="0.313481"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:04.013288" elapsed="0.316040"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:04.331280" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:04.354021" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:04.354638" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:04.355079" 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-19T01:07:04.330800" elapsed="0.024555"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:04.358158" elapsed="0.001076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:04.361826" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:04.360751" elapsed="0.001373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:04.363278" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:04.362557" elapsed="0.000924"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:04.362397" elapsed="0.001215"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:04.364249" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T01:07:04.363854" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:04.363776" elapsed="0.000738"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:04.364669" elapsed="0.000059"/>
</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-19T01:07:04.374301" elapsed="0.000454"/>
</kw>
<kw name="Open 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-19T01:07:04.374994" elapsed="0.000353"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:04.375550" 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-19T01:07:04.366867" elapsed="0.008915"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:04.003220" elapsed="0.372826"/>
</kw>
<msg time="2026-04-19T01:07:04.376406" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:04.002551" elapsed="0.373912"/>
</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-19T01:07:04.002003" elapsed="0.374540"/>
</kw>
<msg time="2026-04-19T01:07:04.376585" 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-19T01:07:04.001509" elapsed="0.375121"/>
</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-19T01:07:04.379648" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:07:04.380156" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:04.380452" 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-19T01:07:04.376935" elapsed="0.003670"/>
</kw>
<msg time="2026-04-19T01:07:04.380697" level="INFO">${output} = 1</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-19T01:07:04.000669" elapsed="0.380055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:04.381186" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:04.380914" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:04.381274" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:07:04.381425" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:03.999747" elapsed="0.381702"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:04.381495" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:04.381635" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:03.998712" elapsed="0.382947"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:04.382250" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:04.381827" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:03.998327" elapsed="0.384122">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:06.385949" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:06.385214" elapsed="0.000805"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:06.388179" level="INFO">${member_ip} = 10.30.171.9</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-19T01:07:06.387542" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:06.389895" 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-19T01:07:06.390058" 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-19T01:07:06.389665" elapsed="0.000433"/>
</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-19T01:07:06.395750" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:06.395075" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:06.394967" elapsed="0.000989"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:06.447080" 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-19T01:07:06.447441" 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-19T01:07:06.397626" elapsed="0.049935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:06.449465" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:06.448795" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:06.451536" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:06.450750" elapsed="0.000903"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:06.454263" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:06.454339" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:06.453958" 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-19T01:07:06.454591" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:06.455890" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:06.785197" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:07:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:07:06.455565" elapsed="0.329775"/>
</kw>
<msg time="2026-04-19T01:07:06.785419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:06.455199" elapsed="0.330302"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:06.453110" elapsed="0.332665"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:06.787255" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:06.809970" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:06.810539" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:06.810908" 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-19T01:07:06.786851" elapsed="0.024334"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:06.813463" elapsed="0.000881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:06.816441" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:06.815783" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:06.817191" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:06.816847" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:06.816769" elapsed="0.000607"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:06.817859" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:07:06.817577" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:06.817510" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:06.818215" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:06.824827" elapsed="0.000488"/>
</kw>
<kw name="Open 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-19T01:07:06.825615" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:06.826134" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:06.820124" elapsed="0.006301"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:06.392827" elapsed="0.433943"/>
</kw>
<msg time="2026-04-19T01:07:06.827212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:06.391824" elapsed="0.435469"/>
</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-19T01:07:06.391070" elapsed="0.436335"/>
</kw>
<msg time="2026-04-19T01:07:06.827462" 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-19T01:07:06.390320" elapsed="0.437205"/>
</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-19T01:07:06.830681" 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-19T01:07:06.831173" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:06.831468" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:06.827834" elapsed="0.003799"/>
</kw>
<msg time="2026-04-19T01:07:06.831737" level="INFO">${output} = 1</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-19T01:07:06.388772" elapsed="0.442990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:06.832213" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:06.831938" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:06.832298" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:06.832448" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:06.386505" elapsed="0.445968"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:06.832519" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:07:06.832694" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:06.384329" elapsed="0.448395"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:06.833290" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:06.832886" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:06.383296" elapsed="0.450179">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:08.837012" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:08.836280" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:08.839302" level="INFO">${member_ip} = 10.30.171.9</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-19T01:07:08.838629" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:08.841285" 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-19T01:07:08.841512" 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-19T01:07:08.840926" elapsed="0.000647"/>
</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-19T01:07:08.846725" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:08.846255" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:08.846200" elapsed="0.000674"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:08.848304" 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-19T01:07:08.848546" 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-19T01:07:08.847855" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:08.850180" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:08.849601" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:08.851953" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:08.851267" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:08.854622" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:08.854699" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:08.854337" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:08.854965" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:08.856240" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:09.158857" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:07:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:07:08.855896" elapsed="0.303121"/>
</kw>
<msg time="2026-04-19T01:07:09.159131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:08.855534" elapsed="0.303683"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:08.853259" elapsed="0.306239"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:09.160960" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:09.183593" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:09.184123" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T01:07:09.184453" 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-19T01:07:09.160576" elapsed="0.024084"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:09.186861" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.190121" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:09.189142" elapsed="0.001213"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:09.191224" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:09.190697" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:09.190576" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:09.192304" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T01:07:09.191830" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:09.191726" elapsed="0.000923"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:09.192822" elapsed="0.000081"/>
</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-19T01:07:09.198700" 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-19T01:07:09.199260" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:09.199614" 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-19T01:07:09.195305" elapsed="0.004514"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:08.844658" elapsed="0.355393"/>
</kw>
<msg time="2026-04-19T01:07:09.200354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:08.843973" elapsed="0.356439"/>
</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-19T01:07:08.843186" elapsed="0.357307"/>
</kw>
<msg time="2026-04-19T01:07:09.200535" 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-19T01:07:08.841930" elapsed="0.358650"/>
</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-19T01:07:09.203616" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:07:09.204106" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:09.204402" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:09.200875" elapsed="0.003675"/>
</kw>
<msg time="2026-04-19T01:07:09.204642" level="INFO">${output} = 0</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-19T01:07:08.839976" elapsed="0.364691"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.205182" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:09.204842" elapsed="0.000385"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:09.205270" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:07:09.205422" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:08.837644" elapsed="0.367803"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:09.205494" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:09.205662" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:08.835429" elapsed="0.370257"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T01:07:09.205842" elapsed="0.000369"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T01:07:08.834336" elapsed="0.371939"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:07:03.997755" elapsed="5.208569"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:07:03.997611" elapsed="5.208753"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.208177" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:09.207869" elapsed="0.000335"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:09.209154" level="INFO">${member_ip} = 10.30.171.128</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-19T01:07:09.208802" elapsed="0.000379"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:09.209952" 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-19T01:07:09.210068" 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-19T01:07:09.209820" elapsed="0.000275"/>
</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-19T01:07:09.213951" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:09.213506" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:09.213292" elapsed="0.000815"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:09.215577" 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-19T01:07:09.215819" 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-19T01:07:09.215086" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.217455" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:09.216899" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:09.219320" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:09.218561" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.221675" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:09.221752" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:09.221381" 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-19T01:07:09.221987" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:09.223447" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:09.539779" 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 Sun Apr 19 01:06:09 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:07:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:07:09.222913" elapsed="0.317018"/>
</kw>
<msg time="2026-04-19T01:07:09.540017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:09.222551" elapsed="0.317576"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:09.220607" elapsed="0.319802"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:09.541910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:09.564894" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:09.565441" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:09.565777" 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-19T01:07:09.541522" elapsed="0.024465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:09.568245" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.571399" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:09.570430" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:09.572534" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:09.571985" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:09.571860" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:09.573627" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:07:09.573176" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:09.573064" elapsed="0.000924"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:09.574323" elapsed="0.000085"/>
</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-19T01:07:09.580357" 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-19T01:07:09.580895" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:09.581378" 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-19T01:07:09.576965" elapsed="0.004688"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:09.211993" elapsed="0.369885"/>
</kw>
<msg time="2026-04-19T01:07:09.582256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:09.211359" elapsed="0.370955"/>
</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-19T01:07:09.210809" elapsed="0.371589"/>
</kw>
<msg time="2026-04-19T01:07:09.582457" 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-19T01:07:09.210300" elapsed="0.372206"/>
</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-19T01:07:09.585505" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:07:09.585987" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:09.586381" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:09.582805" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T01:07:09.586617" level="INFO">${output} = 1</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-19T01:07:09.209398" elapsed="0.377244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.587078" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:09.586819" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:09.587165" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:09.587314" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:09.208401" elapsed="0.378938"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:09.587401" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:07:09.587566" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:09.207524" elapsed="0.380067"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:09.588213" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:09.587749" elapsed="0.000542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:09.207134" elapsed="0.381302">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:11.590560" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:11.590113" elapsed="0.000483"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:11.591536" level="INFO">${member_ip} = 10.30.171.128</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-19T01:07:11.591261" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:11.592379" 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-19T01:07:11.592480" 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-19T01:07:11.592204" elapsed="0.000303"/>
</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-19T01:07:11.596932" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:11.596256" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:11.596170" elapsed="0.000991"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:11.599321" 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-19T01:07:11.599757" 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-19T01:07:11.598627" elapsed="0.001279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:11.602256" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:11.601432" elapsed="0.000985"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:11.605020" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:11.603906" elapsed="0.001285"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:11.608442" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:11.608519" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:11.608158" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:11.608754" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:11.609997" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:12.189836" 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 Sun Apr 19 01:07:11 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:07:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:07:11.609676" elapsed="0.580317"/>
</kw>
<msg time="2026-04-19T01:07:12.190102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:11.609320" elapsed="0.580877"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:11.607057" elapsed="0.583426"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:12.191957" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:12.215198" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:12.215701" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T01:07:12.216087" 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-19T01:07:12.191564" elapsed="0.024749"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:12.218622" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.221826" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:12.220775" elapsed="0.001417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:12.223111" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:12.222574" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:12.222446" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:12.224198" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:07:12.223720" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:12.223615" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:12.224731" elapsed="0.000086"/>
</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-19T01:07:12.232427" 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-19T01:07:12.232991" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:12.233405" 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-19T01:07:12.227976" elapsed="0.005646"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:11.594437" elapsed="0.639415"/>
</kw>
<msg time="2026-04-19T01:07:12.234317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:11.593737" elapsed="0.640641"/>
</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-19T01:07:11.593200" elapsed="0.641262"/>
</kw>
<msg time="2026-04-19T01:07:12.234505" 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-19T01:07:11.592665" elapsed="0.641888"/>
</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-19T01:07:12.237567" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:12.238108" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:12.238413" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:12.234852" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T01:07:12.238701" level="INFO">${output} = 0</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-19T01:07:11.591775" elapsed="0.646962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.239207" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:12.238931" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:12.239295" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:12.239449" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:11.590831" elapsed="0.648642"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:12.239522" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:12.239666" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:11.589690" elapsed="0.650001"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T01:07:12.239847" elapsed="0.000372"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T01:07:11.589021" elapsed="0.651262"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:07:09.206608" elapsed="3.033721"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:07:09.206463" elapsed="3.033904"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.242314" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:12.241960" elapsed="0.000381"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:12.243243" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:12.242945" elapsed="0.000325"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:12.244017" 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-19T01:07:12.244133" 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-19T01:07:12.243885" elapsed="0.000273"/>
</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-19T01:07:12.247794" elapsed="0.000201"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:12.247371" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:12.247320" elapsed="0.000794"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:12.249512" 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-19T01:07:12.249747" 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-19T01:07:12.249075" elapsed="0.000770"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.251442" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:12.250874" elapsed="0.000738"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:12.253307" 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-19T01:07:12.252587" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.255644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:12.255721" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:12.255365" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:12.255956" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:12.257466" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:12.881322" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:12.257134" elapsed="0.624335"/>
</kw>
<msg time="2026-04-19T01:07:12.881554" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:12.256519" elapsed="0.625122"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:12.254584" elapsed="0.627337"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:12.883592" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:12.906202" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:12.906703" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:12.907080" 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-19T01:07:12.883200" elapsed="0.024103"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:12.909542" elapsed="0.000938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.912773" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:12.911794" elapsed="0.001207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:12.913891" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:12.913385" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:12.913260" elapsed="0.000962"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:12.914998" elapsed="0.000394"/>
</return>
<status status="PASS" start="2026-04-19T01:07:12.914546" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:12.914436" elapsed="0.001249"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:12.915911" elapsed="0.000101"/>
</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-19T01:07:12.923334" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:07:12.923899" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:12.924275" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:12.918952" elapsed="0.005538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:12.246018" elapsed="0.678696"/>
</kw>
<msg time="2026-04-19T01:07:12.925019" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:12.245382" elapsed="0.679709"/>
</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-19T01:07:12.244811" elapsed="0.680360"/>
</kw>
<msg time="2026-04-19T01:07:12.925212" 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-19T01:07:12.244312" elapsed="0.681003"/>
</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-19T01:07:12.928457" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:07:12.928936" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:12.929249" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:12.925610" elapsed="0.003787"/>
</kw>
<msg time="2026-04-19T01:07:12.929489" level="INFO">${output} = 1</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-19T01:07:12.243484" elapsed="0.686037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.929963" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:12.929699" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:12.930065" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:07:12.930240" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:12.242543" elapsed="0.687722"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:12.930313" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:12.930454" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:12.241619" elapsed="0.688860"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:12.931022" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:12.930634" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:12.241214" elapsed="0.690030">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:14.934788" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:14.934017" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:14.936903" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:14.936306" elapsed="0.000658"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:14.938762" 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-19T01:07:14.938987" 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-19T01:07:14.938423" elapsed="0.000652"/>
</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-19T01:07:14.944100" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:14.943598" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:14.943324" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:14.945670" 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-19T01:07:14.945916" 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-19T01:07:14.945234" elapsed="0.000786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:14.947592" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:14.947052" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:14.949455" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:14.948688" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:14.951799" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:14.951877" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:14.951495" 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-19T01:07:14.952187" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:14.953688" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:15.273551" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:14.953363" elapsed="0.320341"/>
</kw>
<msg time="2026-04-19T01:07:15.273805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:14.952744" elapsed="0.321156"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:14.950731" elapsed="0.323493"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:15.275804" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:15.298712" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:15.299333" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:15.299671" 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-19T01:07:15.275395" elapsed="0.024487"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:15.302157" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:15.305439" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:15.304422" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:15.306600" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:15.306055" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:15.305900" elapsed="0.001000"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:15.307793" elapsed="0.000090"/>
</return>
<status status="PASS" start="2026-04-19T01:07:15.307328" elapsed="0.000603"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:15.307207" elapsed="0.000782"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:15.308146" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:15.312974" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:15.313562" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:15.313927" elapsed="0.000167"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:15.309482" elapsed="0.004727"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:14.941987" elapsed="0.372453"/>
</kw>
<msg time="2026-04-19T01:07:15.314759" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:14.941310" elapsed="0.373508"/>
</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-19T01:07:14.940664" elapsed="0.374244"/>
</kw>
<msg time="2026-04-19T01:07:15.314950" 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-19T01:07:14.939433" elapsed="0.375579"/>
</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-19T01:07:15.318199" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:07:15.318703" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:15.319019" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:15.315327" elapsed="0.003924"/>
</kw>
<msg time="2026-04-19T01:07:15.319346" level="INFO">${output} = 1</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-19T01:07:14.937480" elapsed="0.381892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:15.319817" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:15.319560" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:15.319909" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:07:15.320081" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:14.935343" elapsed="0.384765"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:15.320156" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:07:15.320304" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:14.933201" elapsed="0.387129"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:15.320909" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:15.320487" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:14.932115" elapsed="0.389002">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:17.325395" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:17.324480" elapsed="0.000992"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:17.327700" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:17.327010" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:17.329836" 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-19T01:07:17.330115" 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-19T01:07:17.329476" elapsed="0.000706"/>
</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-19T01:07:17.339700" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:17.338917" elapsed="0.000934"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:17.336188" elapsed="0.003757"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:17.342153" 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-19T01:07:17.342516" 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-19T01:07:17.341443" elapsed="0.001220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:17.345080" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:17.344287" elapsed="0.000905"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:17.346889" 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-19T01:07:17.346191" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:17.349347" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:17.349425" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:17.349062" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:17.349663" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:17.350929" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:17.707213" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:17.350605" elapsed="0.356905"/>
</kw>
<msg time="2026-04-19T01:07:17.707600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:17.350244" elapsed="0.357447"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:17.348261" elapsed="0.359710"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:17.709535" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:17.732531" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:17.733081" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:17.733496" 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-19T01:07:17.709126" elapsed="0.024585"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:17.736117" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:17.739245" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:17.738287" elapsed="0.001204"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:17.740365" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:17.739835" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:17.739711" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:17.741436" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:07:17.740970" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:17.740862" elapsed="0.000916"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:17.741968" elapsed="0.000209"/>
</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-19T01:07:17.750259" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T01:07:17.750832" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:17.751235" elapsed="0.000127"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:17.745282" elapsed="0.006190"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:17.334166" elapsed="0.417529"/>
</kw>
<msg time="2026-04-19T01:07:17.752003" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:17.333151" elapsed="0.418934"/>
</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-19T01:07:17.331811" elapsed="0.420372"/>
</kw>
<msg time="2026-04-19T01:07:17.752224" 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-19T01:07:17.330561" elapsed="0.421709"/>
</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-19T01:07:17.755545" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:17.756048" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:17.756363" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:17.752564" elapsed="0.003949"/>
</kw>
<msg time="2026-04-19T01:07:17.756603" level="INFO">${output} = 1</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-19T01:07:17.328447" elapsed="0.428181"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:17.757072" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:17.756804" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:17.757167" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:17.757321" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:17.325963" elapsed="0.431383"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:17.757392" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:17.757534" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:17.323495" elapsed="0.434063"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:17.758198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:17.757761" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:17.322090" elapsed="0.436297">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:19.760768" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:19.760260" elapsed="0.000556"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:19.762133" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:19.761720" elapsed="0.000452"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:19.763291" 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-19T01:07:19.763436" 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-19T01:07:19.763072" elapsed="0.000402"/>
</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-19T01:07:19.770173" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:19.769687" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:19.769630" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:19.772073" 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-19T01:07:19.772321" 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-19T01:07:19.771370" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:19.773958" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:19.773420" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:19.775743" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:19.775049" elapsed="0.000793"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:19.778296" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:19.778374" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:19.777997" 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-19T01:07:19.778606" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:19.779897" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:20.131998" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:19.779576" elapsed="0.352682"/>
</kw>
<msg time="2026-04-19T01:07:20.132457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:19.779214" elapsed="0.353397"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:19.777248" elapsed="0.355937"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:20.136321" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:20.159313" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:20.159807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:20.160189" 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-19T01:07:20.135509" elapsed="0.024913"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:20.162605" elapsed="0.000873"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:20.165757" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:20.164756" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:20.166864" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:20.166370" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:20.166246" elapsed="0.001085"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:20.168125" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:07:20.167650" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:20.167544" elapsed="0.000983"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:20.168701" elapsed="0.000084"/>
</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-19T01:07:20.175327" 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-19T01:07:20.176113" elapsed="0.000251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:20.176634" 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-19T01:07:20.170641" elapsed="0.006282"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:19.767299" elapsed="0.409956"/>
</kw>
<msg time="2026-04-19T01:07:20.177686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:19.765606" elapsed="0.412157"/>
</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-19T01:07:19.764542" elapsed="0.413335"/>
</kw>
<msg time="2026-04-19T01:07:20.177934" 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-19T01:07:19.763694" elapsed="0.414303"/>
</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-19T01:07:20.182017" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:20.182514" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:20.182807" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:20.178428" elapsed="0.004528"/>
</kw>
<msg time="2026-04-19T01:07:20.183101" level="INFO">${output} = 1</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-19T01:07:19.762478" elapsed="0.420650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:20.183553" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:20.183305" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:20.183639" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:20.183792" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:19.761137" elapsed="0.422681"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:20.183866" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:20.184010" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:19.759717" elapsed="0.424333"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:20.184617" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:20.184207" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:19.759014" elapsed="0.425788">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:22.188858" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:22.187831" elapsed="0.001120"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:22.192011" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:22.191221" elapsed="0.000920"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:22.194616" 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-19T01:07:22.194911" 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-19T01:07:22.194125" elapsed="0.000863"/>
</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-19T01:07:22.199118" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:22.198627" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:22.198567" elapsed="0.000691"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:22.200997" 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-19T01:07:22.201273" 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-19T01:07:22.200276" elapsed="0.001101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:22.203005" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:22.202394" elapsed="0.000748"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:22.204835" 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-19T01:07:22.204132" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:22.207374" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:22.207452" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:22.207078" 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-19T01:07:22.207691" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:22.208977" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:22.585405" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:22.208648" elapsed="0.376895"/>
</kw>
<msg time="2026-04-19T01:07:22.585621" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:22.208283" elapsed="0.377424"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:22.206297" elapsed="0.379712"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:22.587499" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:22.610649" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:22.611207" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:22.611548" 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-19T01:07:22.587113" elapsed="0.024647"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:22.614068" elapsed="0.000846"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:22.617247" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:22.616289" elapsed="0.001184"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:22.618367" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:22.617868" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:22.617697" elapsed="0.000869"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:22.619103" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T01:07:22.618782" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:22.618710" elapsed="0.000637"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:22.619467" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:22.626461" 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-19T01:07:22.627288" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:22.627806" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:22.621511" elapsed="0.006697"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:22.197214" elapsed="0.431330"/>
</kw>
<msg time="2026-04-19T01:07:22.629000" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:22.196481" elapsed="0.432621"/>
</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-19T01:07:22.195913" elapsed="0.433313"/>
</kw>
<msg time="2026-04-19T01:07:22.629286" 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-19T01:07:22.195302" elapsed="0.434050"/>
</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-19T01:07:22.632633" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:07:22.633122" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:22.633416" 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-19T01:07:22.629813" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T01:07:22.633653" level="INFO">${output} = 1</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-19T01:07:22.192844" elapsed="0.440834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:22.634132" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:22.633868" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:22.634218" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:22.634371" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:22.189871" elapsed="0.444525"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:22.634443" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:22.634590" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:22.186824" elapsed="0.447791"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:22.635193" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:22.634771" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:22.185670" elapsed="0.449710">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:24.639126" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:24.638308" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:24.641303" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:24.640760" elapsed="0.000581"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:24.642461" 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-19T01:07:24.642705" 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-19T01:07:24.642238" elapsed="0.000506"/>
</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-19T01:07:24.648066" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:24.647413" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:24.647336" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:24.650585" 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-19T01:07:24.650926" 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-19T01:07:24.649667" elapsed="0.001445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:24.653280" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:24.652504" elapsed="0.000887"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:24.655192" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:24.654417" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:24.657751" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:24.657830" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:24.657337" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:24.658082" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:24.659516" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:24.950566" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:24.659006" elapsed="0.291650"/>
</kw>
<msg time="2026-04-19T01:07:24.950722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:24.658645" elapsed="0.292150"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:24.656563" elapsed="0.294493"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:24.952436" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:24.975273" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:24.975753" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:24.976151" 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-19T01:07:24.952076" elapsed="0.024290"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:24.978543" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:24.981615" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:24.980632" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:24.982875" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:24.982343" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:24.982206" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:24.983962" elapsed="0.000188"/>
</return>
<status status="PASS" start="2026-04-19T01:07:24.983522" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:24.983417" elapsed="0.000972"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:24.984561" elapsed="0.000085"/>
</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-19T01:07:24.989685" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:07:24.990383" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:24.990736" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:24.986437" elapsed="0.004505"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:24.645449" elapsed="0.345728"/>
</kw>
<msg time="2026-04-19T01:07:24.991474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:24.644494" elapsed="0.347036"/>
</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-19T01:07:24.643711" elapsed="0.347902"/>
</kw>
<msg time="2026-04-19T01:07:24.991654" 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-19T01:07:24.642968" elapsed="0.348733"/>
</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-19T01:07:24.994811" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:07:24.995299" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:24.995589" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:24.991989" elapsed="0.003748"/>
</kw>
<msg time="2026-04-19T01:07:24.995826" level="INFO">${output} = 1</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-19T01:07:24.641645" elapsed="0.354206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:24.996310" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:24.996023" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:24.996396" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:24.996548" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:24.639697" elapsed="0.356875"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:24.996618" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:24.996761" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:24.637406" elapsed="0.359379"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:24.997363" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:24.996940" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:24.636215" elapsed="0.361334">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:27.000982" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:27.000261" elapsed="0.000819"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:27.003097" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:27.002470" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:27.005073" 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-19T01:07:27.005307" 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-19T01:07:27.004727" elapsed="0.000639"/>
</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-19T01:07:27.012056" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:27.011399" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:27.010991" elapsed="0.001340"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:27.014331" 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-19T01:07:27.014666" 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-19T01:07:27.013687" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:27.016973" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:27.016219" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:27.019705" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:27.018541" elapsed="0.001299"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:27.022305" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:27.022387" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:27.021894" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:27.022627" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:27.023940" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:27.391507" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:27.023610" elapsed="0.368058"/>
</kw>
<msg time="2026-04-19T01:07:27.391756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:27.023246" elapsed="0.368606"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:27.021141" elapsed="0.371047"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:27.393654" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:27.415941" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:27.416473" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:27.416799" 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-19T01:07:27.393266" elapsed="0.023740"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:27.419257" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:27.421186" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:27.420567" elapsed="0.000761"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:27.421879" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:27.421555" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:27.421477" elapsed="0.000637"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:27.422601" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:07:27.422324" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:27.422255" elapsed="0.000565"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:27.422941" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:27.430538" elapsed="0.000837"/>
</kw>
<kw name="Open 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-19T01:07:27.431856" elapsed="0.000394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:27.432686" elapsed="0.000228"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:27.424799" elapsed="0.008420"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:27.009180" elapsed="0.424557"/>
</kw>
<msg time="2026-04-19T01:07:27.434799" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:27.008214" elapsed="0.426762"/>
</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-19T01:07:27.006864" elapsed="0.428334"/>
</kw>
<msg time="2026-04-19T01:07:27.435263" 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-19T01:07:27.005711" elapsed="0.429623"/>
</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-19T01:07:27.439688" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:07:27.440189" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:27.440495" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:27.435779" elapsed="0.004865"/>
</kw>
<msg time="2026-04-19T01:07:27.440739" level="INFO">${output} = 1</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-19T01:07:27.003793" elapsed="0.436971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:27.441273" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:27.440967" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:27.441363" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:07:27.441521" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:27.001533" elapsed="0.440013"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:27.441593" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:27.441737" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:26.999429" elapsed="0.442333"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:27.442383" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:27.441919" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:26.998377" elapsed="0.444208">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:29.446086" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:29.445276" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:29.447515" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:29.447132" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:29.448682" 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-19T01:07:29.448827" 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-19T01:07:29.448451" elapsed="0.000414"/>
</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-19T01:07:29.454437" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:29.453762" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:29.453401" elapsed="0.001228"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:29.456597" 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-19T01:07:29.456936" 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-19T01:07:29.455977" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:29.458963" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:29.458425" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:29.460811" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:29.460118" elapsed="0.000792"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:29.463234" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:29.463313" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:29.462928" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:29.463548" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:29.464810" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:29.786827" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:29.464486" elapsed="0.322479"/>
</kw>
<msg time="2026-04-19T01:07:29.787062" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:29.464115" elapsed="0.323031"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:29.462171" elapsed="0.325255"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:29.788885" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:29.811710" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:29.812251" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:29.812587" 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-19T01:07:29.788506" elapsed="0.024292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:29.815069" elapsed="0.000848"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:29.818205" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:29.817212" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:29.819329" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:29.818799" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:29.818674" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:29.820431" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:07:29.819943" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:29.819833" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:29.820961" elapsed="0.000234"/>
</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-19T01:07:29.826534" 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-19T01:07:29.827123" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:29.827477" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:29.823115" elapsed="0.004569"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:29.451561" elapsed="0.376346"/>
</kw>
<msg time="2026-04-19T01:07:29.828241" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:29.450611" elapsed="0.377687"/>
</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-19T01:07:29.449825" elapsed="0.378553"/>
</kw>
<msg time="2026-04-19T01:07:29.828419" 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-19T01:07:29.449105" elapsed="0.379359"/>
</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-19T01:07:29.831517" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:07:29.831992" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:29.832306" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:29.828813" elapsed="0.003643"/>
</kw>
<msg time="2026-04-19T01:07:29.832547" level="INFO">${output} = 1</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-19T01:07:29.447856" elapsed="0.384717"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:29.832997" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:29.832750" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:29.833183" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:07:29.833341" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:29.446500" elapsed="0.386867"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:29.833413" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:29.833556" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:29.444439" elapsed="0.389142"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:29.834177" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:29.833737" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:29.443392" elapsed="0.390966">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:31.837927" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:31.837171" elapsed="0.000823"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:31.840120" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:31.839415" elapsed="0.000769"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:31.842016" 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-19T01:07:31.842297" 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-19T01:07:31.841632" elapsed="0.000726"/>
</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-19T01:07:31.852148" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:31.851605" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:31.849700" elapsed="0.002600"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:31.853825" 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-19T01:07:31.854094" 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-19T01:07:31.853338" elapsed="0.000858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:31.855742" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:31.855166" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:31.857617" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:31.856902" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:31.860003" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:31.860251" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:31.859713" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:31.860489" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:31.861877" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:32.192461" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:31.861550" elapsed="0.331058"/>
</kw>
<msg time="2026-04-19T01:07:32.192709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:31.861186" elapsed="0.331610"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:31.858920" elapsed="0.334191"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:32.194589" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:32.217446" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:32.217940" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:32.218330" 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-19T01:07:32.194200" elapsed="0.024343"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:32.220798" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:32.223975" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:32.222984" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:32.225154" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:32.224597" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:32.224474" elapsed="0.000977"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:32.226254" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:07:32.225774" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:32.225667" elapsed="0.000941"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:32.226785" 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-19T01:07:32.233060" 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-19T01:07:32.233654" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:32.234045" 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-19T01:07:32.229653" 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-19T01:07:31.846752" elapsed="0.387743"/>
</kw>
<msg time="2026-04-19T01:07:32.234807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:31.845276" elapsed="0.389588"/>
</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-19T01:07:31.843981" elapsed="0.390965"/>
</kw>
<msg time="2026-04-19T01:07:32.234988" 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-19T01:07:31.842712" elapsed="0.392413"/>
</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-19T01:07:32.238197" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:07:32.238672" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:32.238966" elapsed="0.000172"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:32.235440" elapsed="0.003752"/>
</kw>
<msg time="2026-04-19T01:07:32.239345" level="INFO">${output} = 1</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-19T01:07:31.840671" elapsed="0.398705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:32.239802" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:32.239555" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:32.239890" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:32.240074" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:31.838477" elapsed="0.401623"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:32.240149" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:07:32.240295" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:31.836251" elapsed="0.404070"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:32.240903" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:32.240479" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:31.835180" elapsed="0.405922">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:34.243346" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:34.242901" elapsed="0.000485"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:34.244508" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:34.244183" elapsed="0.000357"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:34.245532" 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-19T01:07:34.245650" 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-19T01:07:34.245329" elapsed="0.000351"/>
</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-19T01:07:34.250148" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:34.249586" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:34.249520" elapsed="0.000788"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:34.252256" 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-19T01:07:34.252539" 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-19T01:07:34.251424" elapsed="0.001230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:34.254450" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:34.253817" elapsed="0.000761"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:34.256434" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:34.255668" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:34.258862" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:34.258940" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:34.258570" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:34.259194" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:34.260543" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:34.595879" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:34.260208" elapsed="0.335961"/>
</kw>
<msg time="2026-04-19T01:07:34.596261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:34.259809" elapsed="0.336545"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:34.257796" elapsed="0.338843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:34.598377" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:34.621587" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:34.622168" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:34.622541" 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-19T01:07:34.597948" elapsed="0.024820"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:34.625114" elapsed="0.000999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:34.628581" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:34.627430" elapsed="0.001398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:34.629855" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:34.629294" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:34.629148" elapsed="0.001063"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:34.631020" elapsed="0.000279"/>
</return>
<status status="PASS" start="2026-04-19T01:07:34.630554" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:34.630439" elapsed="0.001144"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:34.631770" elapsed="0.000089"/>
</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-19T01:07:34.639354" 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-19T01:07:34.639930" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:34.640314" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:34.634888" elapsed="0.005637"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:34.247988" elapsed="0.392765"/>
</kw>
<msg time="2026-04-19T01:07:34.641081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:34.247149" elapsed="0.393992"/>
</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-19T01:07:34.246509" elapsed="0.394718"/>
</kw>
<msg time="2026-04-19T01:07:34.641268" 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-19T01:07:34.245872" elapsed="0.395444"/>
</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-19T01:07:34.644426" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:34.644916" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:34.645258" 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-19T01:07:34.641617" elapsed="0.003795"/>
</kw>
<msg time="2026-04-19T01:07:34.645505" level="INFO">${output} = 1</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-19T01:07:34.244808" elapsed="0.400723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:34.645959" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:34.645708" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:34.646064" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:07:34.646222" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:34.243645" elapsed="0.402603"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:34.646295" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:34.646441" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:34.242443" elapsed="0.404024"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:34.647126" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:34.646684" elapsed="0.000522">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:34.241736" elapsed="0.405586">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:36.651124" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:36.650258" elapsed="0.000943"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:36.653355" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:36.652640" elapsed="0.000779"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:36.655322" 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-19T01:07:36.655545" 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-19T01:07:36.654957" elapsed="0.000627"/>
</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-19T01:07:36.660902" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:36.660265" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:36.660187" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:36.663439" 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-19T01:07:36.663784" 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-19T01:07:36.662468" elapsed="0.001457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:36.666115" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:36.665305" elapsed="0.000967"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:36.668482" 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-19T01:07:36.667756" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:36.670985" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:36.671238" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:36.670687" elapsed="0.000577"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:36.671477" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:36.672762" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:36.979042" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:36.672430" elapsed="0.306764"/>
</kw>
<msg time="2026-04-19T01:07:36.979307" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:36.672062" elapsed="0.307362"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:36.669866" elapsed="0.309911"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:36.981627" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:37.004566" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:37.005118" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:37.005453" 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-19T01:07:36.981184" elapsed="0.024478"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:37.007911" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:37.011117" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:37.010115" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:37.012300" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:37.011696" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:37.011573" elapsed="0.001039"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:37.013609" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T01:07:37.012928" elapsed="0.000909"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:37.012821" elapsed="0.001143"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:37.014176" elapsed="0.000086"/>
</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-19T01:07:37.021985" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T01:07:37.022586" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:37.022949" elapsed="0.000158"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:37.017211" elapsed="0.006004"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:36.658275" elapsed="0.365163"/>
</kw>
<msg time="2026-04-19T01:07:37.023751" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:36.657315" elapsed="0.366496"/>
</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-19T01:07:36.656548" elapsed="0.367346"/>
</kw>
<msg time="2026-04-19T01:07:37.023935" 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-19T01:07:36.655805" elapsed="0.368176"/>
</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-19T01:07:37.027162" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:07:37.027645" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:37.027941" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:37.024290" elapsed="0.003819"/>
</kw>
<msg time="2026-04-19T01:07:37.028200" level="INFO">${output} = 1</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-19T01:07:36.653912" elapsed="0.374314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:37.028661" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:37.028414" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:37.028749" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:37.028901" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:36.651687" elapsed="0.377240"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:37.028973" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:37.029132" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:36.649327" elapsed="0.379830"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:37.029710" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:37.029312" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:36.648179" elapsed="0.381716">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:39.033446" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:39.032638" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:39.035734" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:39.035124" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:39.037627" 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-19T01:07:39.037860" 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-19T01:07:39.037256" elapsed="0.000665"/>
</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-19T01:07:39.043805" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:39.043331" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:39.043274" elapsed="0.000670"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:39.045628" 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-19T01:07:39.045874" 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-19T01:07:39.044940" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:39.047538" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:39.046968" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:39.049368" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:39.048643" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:39.051834" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:39.051912" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:39.051556" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:39.052165" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:39.053471" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:39.376577" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:39.053096" elapsed="0.323596"/>
</kw>
<msg time="2026-04-19T01:07:39.376767" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:39.052720" elapsed="0.324127"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:39.050696" elapsed="0.326425"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:39.378570" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:39.401762" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:39.402301" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:39.402634" 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-19T01:07:39.378198" elapsed="0.024647"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:39.405091" elapsed="0.001015"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:39.408340" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:39.407373" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:39.409734" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:39.408917" elapsed="0.000999"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:39.408795" elapsed="0.001282"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:39.410875" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:07:39.410408" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:39.410300" elapsed="0.001087"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:39.411563" elapsed="0.000082"/>
</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-19T01:07:39.417400" 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-19T01:07:39.417949" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:39.418329" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:39.414053" elapsed="0.004485"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:39.041906" elapsed="0.376859"/>
</kw>
<msg time="2026-04-19T01:07:39.419136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:39.040704" elapsed="0.378491"/>
</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-19T01:07:39.039485" elapsed="0.379793"/>
</kw>
<msg time="2026-04-19T01:07:39.419320" 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-19T01:07:39.038304" elapsed="0.381062"/>
</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-19T01:07:39.422333" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:07:39.422811" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:39.423208" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:39.419663" elapsed="0.003696"/>
</kw>
<msg time="2026-04-19T01:07:39.423451" level="INFO">${output} = 1</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-19T01:07:39.036312" elapsed="0.387164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:39.423898" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:39.423653" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:39.423983" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:39.424153" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:39.034170" elapsed="0.390008"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:39.424226" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:39.424369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:39.031753" elapsed="0.392641"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:39.424939" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:39.424548" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:39.030678" elapsed="0.394462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:41.428683" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:41.427893" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:41.430795" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:41.430180" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:41.432646" 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-19T01:07:41.433002" 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-19T01:07:41.432320" elapsed="0.000774"/>
</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-19T01:07:41.439136" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:41.438648" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:41.438380" elapsed="0.000896"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:41.440730" 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-19T01:07:41.440973" 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-19T01:07:41.440286" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:41.442633" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:41.442090" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:41.444462" 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-19T01:07:41.443730" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:41.446912" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:41.446991" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:41.446632" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:41.447244" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:41.448523" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:41.776618" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:41.448171" elapsed="0.328588"/>
</kw>
<msg time="2026-04-19T01:07:41.776842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:41.447797" elapsed="0.329306"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:41.445782" elapsed="0.331608"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:41.778918" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:41.801605" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:41.802147" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:41.802481" 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-19T01:07:41.778506" elapsed="0.024183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:41.804892" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:41.808217" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:41.807205" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:41.809359" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:41.808804" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:41.808679" elapsed="0.000979"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:41.810480" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T01:07:41.809987" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:41.809877" elapsed="0.001102"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:41.811382" elapsed="0.000086"/>
</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-19T01:07:41.816279" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:07:41.816894" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:41.817271" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:41.812894" elapsed="0.004585"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:41.437049" elapsed="0.380653"/>
</kw>
<msg time="2026-04-19T01:07:41.818005" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:41.435855" elapsed="0.382223"/>
</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-19T01:07:41.434627" elapsed="0.383534"/>
</kw>
<msg time="2026-04-19T01:07:41.818203" 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-19T01:07:41.433449" elapsed="0.384800"/>
</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-19T01:07:41.821391" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:07:41.821882" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:41.822196" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:41.818543" elapsed="0.003803"/>
</kw>
<msg time="2026-04-19T01:07:41.822435" level="INFO">${output} = 1</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-19T01:07:41.431365" elapsed="0.391095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:41.822896" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:41.822651" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:41.822983" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:07:41.823252" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:41.429243" elapsed="0.394034"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:41.823323" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:41.823467" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:41.427086" elapsed="0.396405"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:41.824067" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:41.823647" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:41.425981" elapsed="0.398273">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:43.827989" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:43.827206" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:43.830247" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:43.829563" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:43.832211" 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-19T01:07:43.832448" 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-19T01:07:43.831830" elapsed="0.000680"/>
</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-19T01:07:43.838545" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:43.838043" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:43.837743" elapsed="0.001010"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:43.840249" 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-19T01:07:43.840501" 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-19T01:07:43.839774" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:43.842234" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:43.841612" elapsed="0.000736"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:43.844098" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:43.843367" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:43.846578" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:43.846656" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:43.846278" 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-19T01:07:43.846892" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:43.848218" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:44.172219" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:43.847874" elapsed="0.324512"/>
</kw>
<msg time="2026-04-19T01:07:44.172477" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:43.847510" elapsed="0.325060"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:43.845429" elapsed="0.327447"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:44.174400" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:44.197926" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:44.198476" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:44.198819" 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-19T01:07:44.173970" elapsed="0.025123"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:44.201318" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:44.204266" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:44.203554" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:44.205166" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:44.204663" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:44.204581" elapsed="0.000773"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:44.205848" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:07:44.205560" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:44.205490" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:44.206205" elapsed="0.000051"/>
</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-19T01:07:44.212900" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T01:07:44.213588" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:44.214038" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:44.208168" elapsed="0.006107"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:43.836380" elapsed="0.378151"/>
</kw>
<msg time="2026-04-19T01:07:44.214975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:43.835530" elapsed="0.379628"/>
</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-19T01:07:43.834217" elapsed="0.381040"/>
</kw>
<msg time="2026-04-19T01:07:44.215316" 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-19T01:07:43.832916" elapsed="0.382453"/>
</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-19T01:07:44.218739" elapsed="0.000422"/>
</kw>
<kw name="Open 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-19T01:07:44.219331" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:44.219631" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:44.215719" elapsed="0.004063"/>
</kw>
<msg time="2026-04-19T01:07:44.219879" level="INFO">${output} = 1</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-19T01:07:43.830812" elapsed="0.389093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:44.220369" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:44.220111" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:44.220459" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:07:44.220615" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:43.828578" elapsed="0.392063"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:44.220688" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:44.220832" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:43.826290" elapsed="0.394568"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:44.221444" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:44.221018" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:43.825185" elapsed="0.396446">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:46.225387" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:46.224546" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:46.227366" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:46.226946" elapsed="0.000460"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:46.228557" 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-19T01:07:46.228705" 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-19T01:07:46.228330" elapsed="0.000414"/>
</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-19T01:07:46.236762" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:46.236075" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:46.233652" elapsed="0.003311"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:46.239121" 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-19T01:07:46.239370" 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-19T01:07:46.238441" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:46.241020" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:46.240463" elapsed="0.000747"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:46.242990" 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-19T01:07:46.242266" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:46.245491" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:46.245573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:46.245196" 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-19T01:07:46.245816" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:46.247157" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:46.568873" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:46.246808" elapsed="0.322270"/>
</kw>
<msg time="2026-04-19T01:07:46.569187" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:46.246429" elapsed="0.322870"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:46.244316" elapsed="0.325371"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:46.571884" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:46.595190" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:46.595763" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:46.596191" 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-19T01:07:46.571298" elapsed="0.025107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:46.598659" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:46.601931" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:46.600874" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:46.603119" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:46.602568" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:46.602439" elapsed="0.000974"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:46.604245" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:07:46.603733" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:46.603628" elapsed="0.000967"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:46.604767" elapsed="0.000093"/>
</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-19T01:07:46.610922" 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-19T01:07:46.611498" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:46.611859" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:46.607450" elapsed="0.004642"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:46.231747" elapsed="0.380570"/>
</kw>
<msg time="2026-04-19T01:07:46.612626" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:46.230654" elapsed="0.382029"/>
</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-19T01:07:46.229787" elapsed="0.382977"/>
</kw>
<msg time="2026-04-19T01:07:46.612806" 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-19T01:07:46.229012" elapsed="0.383838"/>
</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-19T01:07:46.615925" 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-19T01:07:46.616570" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:46.616863" 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-19T01:07:46.613268" elapsed="0.003741"/>
</kw>
<msg time="2026-04-19T01:07:46.617197" level="INFO">${output} = 1</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-19T01:07:46.227717" elapsed="0.389505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:46.617643" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:46.617399" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:46.617730" elapsed="0.000052"/>
</return>
<msg time="2026-04-19T01:07:46.617907" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:46.225976" elapsed="0.391956"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:46.617979" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:46.618140" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:46.223646" elapsed="0.394518"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:46.618715" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:46.618320" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:46.222543" elapsed="0.396356">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:48.622544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:48.621732" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:48.624745" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:48.624138" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:48.626408" 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-19T01:07:48.626548" 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-19T01:07:48.626178" elapsed="0.000407"/>
</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-19T01:07:48.632148" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:48.631465" elapsed="0.000801"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:48.631385" elapsed="0.000968"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:48.634890" 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-19T01:07:48.635297" 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-19T01:07:48.633852" elapsed="0.001588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:48.637652" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:48.636848" elapsed="0.000965"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:48.639699" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:48.638893" elapsed="0.000904"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:48.642182" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:48.642263" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:48.641838" 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-19T01:07:48.642504" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:48.643982" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:48.972929" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:48.643649" elapsed="0.329448"/>
</kw>
<msg time="2026-04-19T01:07:48.973183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:48.643277" elapsed="0.329996"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:48.641022" elapsed="0.332552"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:48.975080" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:48.998072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:48.998306" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:48.998459" 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-19T01:07:48.974671" elapsed="0.023884"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:48.999566" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:49.001040" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:49.000567" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:49.001559" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:49.001314" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:49.001255" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:49.002055" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T01:07:49.001839" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:49.001790" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:49.002297" 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-19T01:07:49.007163" 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-19T01:07:49.007735" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:49.008118" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:49.003628" elapsed="0.004702"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:48.629297" elapsed="0.379255"/>
</kw>
<msg time="2026-04-19T01:07:49.008891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:48.628316" elapsed="0.380632"/>
</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-19T01:07:48.627547" elapsed="0.381499"/>
</kw>
<msg time="2026-04-19T01:07:49.009090" 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-19T01:07:48.626809" elapsed="0.382328"/>
</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-19T01:07:49.012262" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:07:49.012749" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:49.013065" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:49.009430" elapsed="0.003784"/>
</kw>
<msg time="2026-04-19T01:07:49.013389" level="INFO">${output} = 1</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-19T01:07:48.625383" elapsed="0.388032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:49.013844" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:49.013597" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:49.013929" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:49.014097" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:48.623184" elapsed="0.390939"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:49.014170" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:07:49.014314" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:48.620810" elapsed="0.393529"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:49.014895" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:49.014494" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:48.619654" elapsed="0.395509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:51.018718" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:51.017884" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:51.020934" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:51.020322" elapsed="0.000672"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:51.022777" 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-19T01:07:51.023000" 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-19T01:07:51.022453" elapsed="0.000637"/>
</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-19T01:07:51.028744" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:51.028121" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:51.028025" elapsed="0.000909"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:51.031324" 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-19T01:07:51.031690" 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-19T01:07:51.030370" elapsed="0.001512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:51.034076" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:51.033307" elapsed="0.000923"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:51.036453" 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-19T01:07:51.035586" elapsed="0.000964"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:51.038861" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:51.038938" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:51.038582" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:51.039202" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:51.040644" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:51.408111" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:51.040314" elapsed="0.368037"/>
</kw>
<msg time="2026-04-19T01:07:51.408433" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:51.039770" elapsed="0.368748"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:51.037819" elapsed="0.370976"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:51.410305" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:51.433509" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:51.433994" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:51.434377" 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-19T01:07:51.409888" elapsed="0.024699"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:51.436846" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:51.440220" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:51.439149" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:51.441371" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:51.440818" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:51.440696" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:51.442451" elapsed="0.000146"/>
</return>
<status status="PASS" start="2026-04-19T01:07:51.441979" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:51.441873" elapsed="0.000967"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:51.443012" elapsed="0.000180"/>
</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-19T01:07:51.448441" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:07:51.448984" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:51.449358" 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-19T01:07:51.445009" elapsed="0.004556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:51.026137" elapsed="0.423650"/>
</kw>
<msg time="2026-04-19T01:07:51.450111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:51.025181" elapsed="0.424987"/>
</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-19T01:07:51.024413" elapsed="0.425837"/>
</kw>
<msg time="2026-04-19T01:07:51.450291" 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-19T01:07:51.023444" elapsed="0.426893"/>
</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-19T01:07:51.453406" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:07:51.453893" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:51.454209" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:51.450629" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T01:07:51.454449" level="INFO">${output} = 1</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-19T01:07:51.021509" elapsed="0.432966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:51.454903" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:51.454655" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:51.454992" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:51.455174" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:51.019283" elapsed="0.435917"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:51.455247" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:51.455392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:51.017065" elapsed="0.438351"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:51.456121" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:51.455647" elapsed="0.000550">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:51.015987" elapsed="0.440319">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:53.459792" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:53.459024" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:53.461882" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:53.461280" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:53.463746" 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-19T01:07:53.463973" 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-19T01:07:53.463419" elapsed="0.000643"/>
</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-19T01:07:53.471700" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:53.471238" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:53.471183" elapsed="0.000655"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:53.473494" 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-19T01:07:53.473741" 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-19T01:07:53.472815" elapsed="0.001027"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:53.475384" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:53.474823" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:53.477177" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:53.476462" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:53.479570" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:53.479648" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:53.479288" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:53.479885" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:53.481166" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:53.812545" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:53.480817" elapsed="0.331821"/>
</kw>
<msg time="2026-04-19T01:07:53.812705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:53.480454" elapsed="0.332325"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:53.478516" elapsed="0.334490"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:53.814382" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:53.838113" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:53.838630" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:53.838965" 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-19T01:07:53.814008" elapsed="0.025216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:53.841443" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:53.844530" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:53.843586" elapsed="0.001172"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:53.845619" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:53.845131" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:53.844978" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:53.846779" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:07:53.846274" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:53.846160" elapsed="0.001003"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:53.847243" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:53.851899" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:53.852450" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:53.852799" 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-19T01:07:53.848555" elapsed="0.004454"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:53.468351" elapsed="0.384898"/>
</kw>
<msg time="2026-04-19T01:07:53.853552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:53.466828" elapsed="0.386780"/>
</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-19T01:07:53.465589" elapsed="0.388099"/>
</kw>
<msg time="2026-04-19T01:07:53.853729" 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-19T01:07:53.464422" elapsed="0.389353"/>
</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-19T01:07:53.856784" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T01:07:53.857271" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:53.857562" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:53.854081" elapsed="0.003626"/>
</kw>
<msg time="2026-04-19T01:07:53.857796" level="INFO">${output} = 1</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-19T01:07:53.462455" elapsed="0.395366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:53.858259" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:53.857997" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:53.858370" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:07:53.858521" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:53.460344" elapsed="0.398203"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:53.858592" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:07:53.858735" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:53.458163" elapsed="0.400597"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:53.859413" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:53.858916" elapsed="0.000570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:53.457128" elapsed="0.402465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:55.863100" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:55.862334" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:55.865420" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:55.864725" elapsed="0.000759"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:55.867329" 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-19T01:07:55.867553" 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-19T01:07:55.866965" elapsed="0.000646"/>
</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-19T01:07:55.873096" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:55.872610" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:55.872328" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:55.874785" 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-19T01:07:55.875040" 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-19T01:07:55.874337" elapsed="0.000824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:55.876810" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:55.876156" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:55.878683" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:55.877931" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:55.881206" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:55.881286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:55.880887" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:55.881557" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:55.882898" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:56.211885" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:55.882570" elapsed="0.329474"/>
</kw>
<msg time="2026-04-19T01:07:56.212127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:55.882185" elapsed="0.330037"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:55.879993" elapsed="0.332524"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:56.214105" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:56.237267" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:56.237791" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:56.238195" 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-19T01:07:56.213686" elapsed="0.024728"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:56.240821" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:56.244272" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:56.243160" elapsed="0.001353"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:56.245659" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:56.244891" elapsed="0.000953"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:56.244761" elapsed="0.001233"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:56.246600" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T01:07:56.246303" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:56.246232" elapsed="0.000649"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:56.247070" elapsed="0.000065"/>
</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-19T01:07:56.253850" elapsed="0.000507"/>
</kw>
<kw name="Open 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-19T01:07:56.254689" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:56.255285" elapsed="0.000155"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:56.249147" elapsed="0.006450"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:55.870990" elapsed="0.384924"/>
</kw>
<msg time="2026-04-19T01:07:56.256617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:55.870313" elapsed="0.386399"/>
</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-19T01:07:55.869162" elapsed="0.387671"/>
</kw>
<msg time="2026-04-19T01:07:56.256892" 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-19T01:07:55.867963" elapsed="0.388994"/>
</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-19T01:07:56.260756" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T01:07:56.261301" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:56.261628" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:56.257695" elapsed="0.004087"/>
</kw>
<msg time="2026-04-19T01:07:56.261876" level="INFO">${output} = 1</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-19T01:07:55.865975" elapsed="0.395926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:56.262382" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:56.262123" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:56.262483" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:07:56.262673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:55.863772" elapsed="0.398930"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:56.262753" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:07:56.262903" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:55.861478" elapsed="0.401450"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:56.263546" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:56.263114" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:55.860412" elapsed="0.403330">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:07:58.267554" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:07:58.266751" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:07:58.269675" level="INFO">${member_ip} = 10.30.171.206</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-19T01:07:58.269047" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:58.271475" 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-19T01:07:58.271723" 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-19T01:07:58.271255" elapsed="0.000506"/>
</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-19T01:07:58.277509" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:07:58.276796" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:58.276417" elapsed="0.001291"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:58.279622" 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-19T01:07:58.279866" 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-19T01:07:58.279148" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:58.281522" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:58.280969" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:07:58.283369" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:07:58.282617" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:07:58.285829" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:07:58.285907" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:07:58.285546" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:58.286160" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:07:58.287487" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:07:58.615318" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:07:58.287132" elapsed="0.328348"/>
</kw>
<msg time="2026-04-19T01:07:58.615572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:58.286718" elapsed="0.328952"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:07:58.284754" elapsed="0.331208"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:07:58.617604" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:07:58.640848" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:07:58.641397" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:07:58.641733" 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-19T01:07:58.617197" elapsed="0.024746"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:58.644245" elapsed="0.000934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:58.647927" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:58.646702" elapsed="0.001509"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:58.648637" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:07:58.648388" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:58.648328" elapsed="0.000440"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:07:58.649137" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T01:07:58.648918" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T01:07:58.648867" elapsed="0.000441"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:07:58.649388" 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-19T01:07:58.654391" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:07:58.655003" elapsed="0.000257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:58.655455" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:58.650811" elapsed="0.004856"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:07:58.274531" elapsed="0.381407"/>
</kw>
<msg time="2026-04-19T01:07:58.656275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:07:58.273536" elapsed="0.382801"/>
</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-19T01:07:58.272747" elapsed="0.383673"/>
</kw>
<msg time="2026-04-19T01:07:58.656463" 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-19T01:07:58.271986" elapsed="0.384526"/>
</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-19T01:07:58.659692" 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-19T01:07:58.660446" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:07:58.660927" elapsed="0.000187"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:07:58.656809" elapsed="0.004396"/>
</kw>
<msg time="2026-04-19T01:07:58.661361" level="INFO">${output} = 1</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-19T01:07:58.270257" elapsed="0.391148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:07:58.662153" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:07:58.661712" elapsed="0.000535"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:07:58.662337" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T01:07:58.662592" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:07:58.268118" elapsed="0.394517"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:07:58.662715" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T01:07:58.662964" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:07:58.265777" elapsed="0.397228"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:07:58.664091" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:07:58.663396" elapsed="0.000810">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:07:58.264683" elapsed="0.399700">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:00.668256" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:00.667461" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:00.670467" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:00.669909" elapsed="0.000596"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:00.671636" 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-19T01:08:00.671775" 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-19T01:08:00.671409" elapsed="0.000407"/>
</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-19T01:08:00.679464" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:00.678955" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:00.676679" elapsed="0.002990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:00.681182" 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-19T01:08:00.681497" 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-19T01:08:00.680708" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:00.683182" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:00.682620" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:00.685088" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:00.684379" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:00.687540" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:00.687616" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:00.687256" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:00.687863" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:00.689279" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:01.007629" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:07:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:00.688934" elapsed="0.318845"/>
</kw>
<msg time="2026-04-19T01:08:01.007865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:00.688579" elapsed="0.319375"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:00.686451" elapsed="0.321809"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:01.009775" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:01.032949" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:01.033490" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:01.033816" 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-19T01:08:01.009372" elapsed="0.024659"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:01.036261" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:01.039417" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:01.038404" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:01.040495" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:01.040097" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:01.039940" elapsed="0.000736"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:01.041179" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:08:01.040873" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:01.040807" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:01.041518" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:01.048378" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T01:08:01.048956" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:01.049350" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:01.043434" elapsed="0.006133"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:00.674599" elapsed="0.375204"/>
</kw>
<msg time="2026-04-19T01:08:01.050279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:00.673641" elapsed="0.376703"/>
</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-19T01:08:00.672799" elapsed="0.377628"/>
</kw>
<msg time="2026-04-19T01:08:01.050470" 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-19T01:08:00.672039" elapsed="0.378478"/>
</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-19T01:08:01.053605" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:01.054213" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:01.054521" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:01.050820" elapsed="0.003850"/>
</kw>
<msg time="2026-04-19T01:08:01.054782" level="INFO">${output} = 1</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-19T01:08:00.670813" elapsed="0.383995"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:01.055279" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:01.055009" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:01.055370" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:08:01.055526" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:00.668798" elapsed="0.386753"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:01.055598" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:08:01.055789" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:00.666578" elapsed="0.389240"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:01.056390" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:01.055977" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:00.665509" elapsed="0.391068">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:03.060204" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:03.059423" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:03.062384" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:03.061749" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:03.063553" 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-19T01:08:03.063697" 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-19T01:08:03.063336" elapsed="0.000398"/>
</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-19T01:08:03.069181" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:03.068524" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:03.068446" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:03.071407" 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-19T01:08:03.071655" 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-19T01:08:03.070705" elapsed="0.001049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:03.073326" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:03.072740" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:03.075298" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:03.074560" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:03.077886" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:03.077979" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:03.077523" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:03.078239" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:03.079500" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:03.380973" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:03.079174" elapsed="0.302114"/>
</kw>
<msg time="2026-04-19T01:08:03.381455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:03.078796" elapsed="0.302818"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:03.076695" elapsed="0.305691"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:03.383976" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:03.406743" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:03.407294" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:03.407771" 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-19T01:08:03.383551" elapsed="0.024431"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:03.410294" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:03.413530" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:03.412523" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:03.414654" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:03.414209" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:03.413988" elapsed="0.000808"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:03.415168" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T01:08:03.414944" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:03.414896" elapsed="0.000434"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:03.415414" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:03.420349" elapsed="0.000369"/>
</kw>
<kw name="Open 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-19T01:08:03.420939" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:03.421332" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:03.416807" elapsed="0.004735"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:03.066452" elapsed="0.355314"/>
</kw>
<msg time="2026-04-19T01:08:03.422089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:03.065463" elapsed="0.356687"/>
</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-19T01:08:03.064694" elapsed="0.357577"/>
</kw>
<msg time="2026-04-19T01:08:03.422314" 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-19T01:08:03.063954" elapsed="0.358409"/>
</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-19T01:08:03.425527" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:08:03.426008" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:03.426343" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:03.422728" elapsed="0.003773"/>
</kw>
<msg time="2026-04-19T01:08:03.426594" level="INFO">${output} = 1</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-19T01:08:03.062730" elapsed="0.363890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:03.427066" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:03.426798" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:03.427157" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:03.427313" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:03.060739" elapsed="0.366600"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:03.427388" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:08:03.427537" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:03.058551" elapsed="0.369011"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:03.428220" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:03.427721" elapsed="0.000579">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:03.057427" elapsed="0.370993">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:05.432014" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:05.431215" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:05.434159" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:05.433523" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:05.435995" 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-19T01:08:05.436253" 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-19T01:08:05.435648" elapsed="0.000666"/>
</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-19T01:08:05.442455" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:05.441968" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:05.441910" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:05.444307" 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-19T01:08:05.444552" 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-19T01:08:05.443594" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:05.446209" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:05.445635" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:05.448026" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:05.447302" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:05.450543" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:05.450621" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:05.450259" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:05.450856" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:05.452216" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:05.771048" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:05.451858" elapsed="0.319303"/>
</kw>
<msg time="2026-04-19T01:08:05.771234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:05.451489" elapsed="0.319825"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:05.449350" elapsed="0.322211"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:05.772979" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:05.796012" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:05.796550" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:05.796882" 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-19T01:08:05.772614" elapsed="0.024519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:05.799397" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:05.801373" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:05.800752" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:05.802089" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:05.801743" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:05.801663" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:05.802761" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:08:05.802478" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:05.802410" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:05.803129" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:05.809183" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:05.809725" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:05.810100" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:05.804958" elapsed="0.005351"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:05.440574" elapsed="0.370046"/>
</kw>
<msg time="2026-04-19T01:08:05.810928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:05.439184" elapsed="0.371801"/>
</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-19T01:08:05.437830" elapsed="0.373388"/>
</kw>
<msg time="2026-04-19T01:08:05.811262" 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-19T01:08:05.436665" elapsed="0.374644"/>
</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-19T01:08:05.814270" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:08:05.814750" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:05.815062" elapsed="0.000128"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:05.811602" elapsed="0.003666"/>
</kw>
<msg time="2026-04-19T01:08:05.815415" level="INFO">${output} = 1</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-19T01:08:05.434702" elapsed="0.380740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:05.815867" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:05.815620" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:05.815954" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:08:05.816125" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:05.432574" elapsed="0.383577"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:05.816199" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:05.816344" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:05.430363" elapsed="0.386006"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:05.816921" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:05.816526" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:05.429311" elapsed="0.387816">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:07.820682" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:07.819884" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:07.822851" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:07.822189" elapsed="0.000724"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:07.824484" 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-19T01:08:07.824627" 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-19T01:08:07.824268" elapsed="0.000397"/>
</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-19T01:08:07.829889" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:07.829264" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:07.829190" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:07.832240" 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-19T01:08:07.832495" 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-19T01:08:07.831537" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:07.834156" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:07.833595" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:07.835951" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:07.835253" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:07.838353" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:07.838449" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:07.838069" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:07.838695" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:07.840186" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:08.196164" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:07.839701" elapsed="0.356678"/>
</kw>
<msg time="2026-04-19T01:08:08.196459" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:07.839338" elapsed="0.357204"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:07.837303" elapsed="0.359507"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:08.198341" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:08.221230" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:08.221773" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:08.222158" 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-19T01:08:08.197912" elapsed="0.024459"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:08.224655" elapsed="0.000938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:08.227009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:08.226402" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:08.227753" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:08.227426" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:08.227346" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:08.228508" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:08:08.228225" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:08.228157" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:08.228840" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:08.234894" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T01:08:08.235487" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:08.235853" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:08.230714" elapsed="0.005492"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:07.827371" elapsed="0.409069"/>
</kw>
<msg time="2026-04-19T01:08:08.236760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:07.826391" elapsed="0.410428"/>
</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-19T01:08:07.825624" elapsed="0.411280"/>
</kw>
<msg time="2026-04-19T01:08:08.236946" 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-19T01:08:07.824886" elapsed="0.412106"/>
</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-19T01:08:08.240099" 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-19T01:08:08.240607" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:08.240910" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:08.237324" elapsed="0.003757"/>
</kw>
<msg time="2026-04-19T01:08:08.241176" level="INFO">${output} = 1</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-19T01:08:07.823433" elapsed="0.417768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:08.241670" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:08.241416" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:08.241761" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:08:08.241915" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:07.821244" elapsed="0.420697"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:08.241988" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:08:08.242154" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:07.819013" elapsed="0.423166"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:08.242792" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:08.242392" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:07.817898" elapsed="0.425086">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:10.246652" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:10.245822" elapsed="0.000905"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:10.249073" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:10.248299" elapsed="0.000840"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:10.251013" 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-19T01:08:10.251286" 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-19T01:08:10.250674" elapsed="0.000675"/>
</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-19T01:08:10.257467" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:10.256966" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:10.256667" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:10.259071" 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-19T01:08:10.259318" 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-19T01:08:10.258600" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:10.261209" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:10.260586" elapsed="0.000732"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:10.263014" 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-19T01:08:10.262299" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:10.265615" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:10.265692" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:10.265325" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:10.265942" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:10.267244" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:10.594378" 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 Sun Apr 19 01:07:12 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:10.266893" elapsed="0.327656"/>
</kw>
<msg time="2026-04-19T01:08:10.594640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:10.266523" elapsed="0.328216"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:10.264376" elapsed="0.330696"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:10.596648" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:10.619923" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:10.620467" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:10.620799" 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-19T01:08:10.596241" elapsed="0.024768"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:10.623293" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:10.626732" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:10.625581" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:10.627460" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:10.627131" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:10.627025" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:10.628152" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:08:10.627845" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:10.627779" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:10.628483" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:10.635091" 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-19T01:08:10.635637" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:10.635993" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:10.630547" elapsed="0.005670"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:10.254694" elapsed="0.381746"/>
</kw>
<msg time="2026-04-19T01:08:10.636745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:10.253710" elapsed="0.383092"/>
</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-19T01:08:10.252898" elapsed="0.383987"/>
</kw>
<msg time="2026-04-19T01:08:10.636925" 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-19T01:08:10.251734" elapsed="0.385237"/>
</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-19T01:08:10.640060" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:08:10.640537" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:10.640830" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:10.637277" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T01:08:10.641083" level="INFO">${output} = 1</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-19T01:08:10.249656" elapsed="0.391453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:10.641537" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:10.641289" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:10.641623" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:08:10.641779" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:10.247226" elapsed="0.394578"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:10.641850" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:10.641994" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:10.244973" elapsed="0.397046"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:10.642638" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:10.642241" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:10.243851" elapsed="0.398969">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:12.646256" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:12.645477" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:12.648478" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:12.647852" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:12.650342" 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-19T01:08:12.650565" 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-19T01:08:12.649990" elapsed="0.000634"/>
</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-19T01:08:12.654685" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:12.654210" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:12.653914" elapsed="0.000912"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:12.656294" 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-19T01:08:12.656538" 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-19T01:08:12.655826" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:12.658242" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:12.657627" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:12.660059" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:12.659336" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:12.662604" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:12.662693" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:12.662299" 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-19T01:08:12.662939" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:12.664278" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:13.293935" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:12.663917" elapsed="0.630220"/>
</kw>
<msg time="2026-04-19T01:08:13.294237" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:12.663545" elapsed="0.630802"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:12.661375" elapsed="0.633312"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:13.296307" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:13.319767" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:13.320392" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:13.320719" 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-19T01:08:13.295869" elapsed="0.025079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:13.323310" elapsed="0.001074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:13.326065" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:13.325369" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:13.327060" elapsed="0.000056"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:13.326467" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:13.326381" elapsed="0.000899"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:13.327870" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-19T01:08:13.327513" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:13.327438" elapsed="0.000711"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:13.328273" elapsed="0.000056"/>
</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-19T01:08:13.334684" 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-19T01:08:13.335297" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:13.335672" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:13.330396" elapsed="0.005522"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:12.652556" elapsed="0.683623"/>
</kw>
<msg time="2026-04-19T01:08:13.336500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:12.651864" elapsed="0.684703"/>
</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-19T01:08:12.651335" elapsed="0.685330"/>
</kw>
<msg time="2026-04-19T01:08:13.336707" 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-19T01:08:12.650802" elapsed="0.685952"/>
</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-19T01:08:13.340105" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:08:13.340632" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:13.340943" elapsed="0.000209"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:13.337174" elapsed="0.004032"/>
</kw>
<msg time="2026-04-19T01:08:13.341302" level="INFO">${output} = 1</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-19T01:08:12.649015" elapsed="0.692314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:13.341816" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:13.341538" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:13.341907" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:08:13.342093" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:12.646910" elapsed="0.695210"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:13.342170" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:13.342319" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:12.644653" elapsed="0.697690"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:13.342917" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:13.342504" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:12.643642" elapsed="0.699487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:15.346549" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:15.345785" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:15.348664" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:15.348064" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:15.350264" 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-19T01:08:15.350505" 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-19T01:08:15.350018" elapsed="0.000526"/>
</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-19T01:08:15.358159" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:15.357619" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:15.355087" elapsed="0.003213"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:15.359745" 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-19T01:08:15.359991" 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-19T01:08:15.359295" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:15.361649" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:15.361105" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:15.363517" 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-19T01:08:15.362806" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:15.366302" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:15.366395" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:15.365778" elapsed="0.000642"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:15.366639" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:15.368495" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:15.660672" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:15.367981" elapsed="0.292835"/>
</kw>
<msg time="2026-04-19T01:08:15.660900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:15.367447" elapsed="0.293537"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:15.364831" elapsed="0.296452"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:15.662775" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:15.675685" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:15.676234" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:15.676561" 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-19T01:08:15.662389" elapsed="0.014379"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:15.678986" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:15.682127" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:15.681150" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:15.683214" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:15.682695" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:15.682572" elapsed="0.000928"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:15.684276" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T01:08:15.683812" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:15.683708" elapsed="0.000910"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:15.684785" elapsed="0.000081"/>
</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-19T01:08:15.691908" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T01:08:15.692531" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:15.692891" 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-19T01:08:15.687469" elapsed="0.005698"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:15.353243" elapsed="0.340145"/>
</kw>
<msg time="2026-04-19T01:08:15.693699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:15.352263" elapsed="0.341500"/>
</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-19T01:08:15.351503" elapsed="0.342344"/>
</kw>
<msg time="2026-04-19T01:08:15.693889" 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-19T01:08:15.350765" elapsed="0.343170"/>
</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-19T01:08:15.696900" 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-19T01:08:15.697473" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:15.697793" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:15.694242" elapsed="0.003704"/>
</kw>
<msg time="2026-04-19T01:08:15.698052" level="INFO">${output} = 1</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-19T01:08:15.349274" elapsed="0.348804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:15.698506" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:15.698259" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:15.698594" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:15.698745" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:15.347108" elapsed="0.351662"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:15.698817" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:08:15.698960" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:15.344919" elapsed="0.354066"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:15.699549" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:15.699159" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:15.343868" elapsed="0.355862">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:17.703375" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:17.702579" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:17.705670" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:17.704888" elapsed="0.000848"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:17.706924" 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-19T01:08:17.707087" 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-19T01:08:17.706694" elapsed="0.000432"/>
</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-19T01:08:17.712409" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:17.711738" elapsed="0.000868"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:17.711658" elapsed="0.001032"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:17.714705" 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-19T01:08:17.714949" 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-19T01:08:17.714022" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:17.716588" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:17.716026" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:17.718450" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:17.717732" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:17.720776" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:17.720854" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:17.720496" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:17.721295" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:17.722566" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:18.042268" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:17.722240" elapsed="0.320187"/>
</kw>
<msg time="2026-04-19T01:08:18.042522" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:17.721859" elapsed="0.320759"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:17.719728" elapsed="0.323176"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:18.044404" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:18.067324" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:18.067860" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:18.068275" 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-19T01:08:18.043986" elapsed="0.024524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:18.070945" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:18.074429" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:18.073317" elapsed="0.001378"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:18.075329" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:18.074967" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:18.074885" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:18.075996" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T01:08:18.075717" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:18.075649" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:18.076351" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:18.083001" 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-19T01:08:18.083601" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:18.083957" 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-19T01:08:18.078286" elapsed="0.005896"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:17.709809" elapsed="0.374598"/>
</kw>
<msg time="2026-04-19T01:08:18.084769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:17.708826" elapsed="0.376001"/>
</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-19T01:08:17.708084" elapsed="0.376826"/>
</kw>
<msg time="2026-04-19T01:08:18.084951" 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-19T01:08:17.707349" elapsed="0.377650"/>
</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-19T01:08:18.088108" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:08:18.088589" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:18.088887" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:18.085423" elapsed="0.003639"/>
</kw>
<msg time="2026-04-19T01:08:18.089155" level="INFO">${output} = 1</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-19T01:08:17.706101" elapsed="0.383080"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:18.089609" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:18.089359" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:18.089724" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:08:18.089898" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:17.703916" elapsed="0.386009"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:18.089972" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:18.090134" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:17.701689" elapsed="0.388471"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:18.090713" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:18.090320" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:17.700578" elapsed="0.390319">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:20.093051" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:20.092671" elapsed="0.000417"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:20.093984" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:20.093706" elapsed="0.000306"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:20.094823" 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-19T01:08:20.094927" 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-19T01:08:20.094657" elapsed="0.000301"/>
</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-19T01:08:20.098746" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:20.098284" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:20.098227" elapsed="0.000656"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:20.100582" 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-19T01:08:20.100835" 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-19T01:08:20.099859" elapsed="0.001076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:20.102472" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:20.101911" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:20.104398" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:20.103675" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:20.106757" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:20.106835" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:20.106475" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:20.107203" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:20.108489" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:20.437778" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:20.108164" elapsed="0.329753"/>
</kw>
<msg time="2026-04-19T01:08:20.437999" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:20.107761" elapsed="0.330340"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:20.105692" elapsed="0.332686"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:20.439878" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:20.462923" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:20.463472" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:20.463802" 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-19T01:08:20.439489" elapsed="0.024528"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:20.466326" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:20.469465" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:20.468494" elapsed="0.001201"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:20.470580" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:20.470074" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:20.469919" elapsed="0.000948"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:20.471683" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:08:20.471233" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:20.471118" elapsed="0.001008"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:20.472366" elapsed="0.000086"/>
</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-19T01:08:20.477411" 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-19T01:08:20.477951" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:20.478326" 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-19T01:08:20.474008" elapsed="0.004526"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:20.096887" elapsed="0.381873"/>
</kw>
<msg time="2026-04-19T01:08:20.479096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:20.096206" elapsed="0.382947"/>
</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-19T01:08:20.095649" elapsed="0.383592"/>
</kw>
<msg time="2026-04-19T01:08:20.479282" 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-19T01:08:20.095132" elapsed="0.384197"/>
</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-19T01:08:20.482449" 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-19T01:08:20.482929" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:20.483248" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:20.479680" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T01:08:20.483489" level="INFO">${output} = 1</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-19T01:08:20.094244" elapsed="0.389270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:20.483943" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:20.483692" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:20.484112" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:08:20.484286" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:20.093296" elapsed="0.391016"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:20.484365" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:08:20.484511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:20.092290" elapsed="0.392246"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:20.485107" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:20.484696" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:20.091613" elapsed="0.393673">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:22.488759" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:22.487984" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:22.490875" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:22.490276" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:22.492717" 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-19T01:08:22.492945" 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-19T01:08:22.492395" elapsed="0.000614"/>
</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-19T01:08:22.498082" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:22.497573" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:22.497517" elapsed="0.000706"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:22.499878" 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-19T01:08:22.500139" 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-19T01:08:22.499203" elapsed="0.001036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:22.501766" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:22.501204" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:22.503562" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:22.502852" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:22.505994" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:22.506092" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:22.505706" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:22.506348" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:22.507685" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:22.829196" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:22.507359" elapsed="0.321973"/>
</kw>
<msg time="2026-04-19T01:08:22.829411" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:22.506975" elapsed="0.322522"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:22.504843" elapsed="0.324929"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:22.831300" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:22.854137" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:22.854635" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:22.854971" 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-19T01:08:22.830889" elapsed="0.024363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:22.857473" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:22.860716" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:22.859697" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:22.861896" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:22.861330" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:22.861205" elapsed="0.001037"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:22.863166" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:08:22.862622" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:22.862460" elapsed="0.001051"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:22.863628" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:22.868619" 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-19T01:08:22.869184" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:22.869544" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:22.865200" elapsed="0.004554"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:22.496210" elapsed="0.373804"/>
</kw>
<msg time="2026-04-19T01:08:22.870337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:22.495480" elapsed="0.374917"/>
</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-19T01:08:22.494731" elapsed="0.375749"/>
</kw>
<msg time="2026-04-19T01:08:22.870521" 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-19T01:08:22.493390" elapsed="0.377177"/>
</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-19T01:08:22.873597" 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-19T01:08:22.874107" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:22.874406" 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-19T01:08:22.870860" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T01:08:22.874707" level="INFO">${output} = 1</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-19T01:08:22.491449" elapsed="0.383284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:22.875191" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:22.874920" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:22.875279" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:08:22.875432" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:22.489316" elapsed="0.386141"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:22.875506" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:22.875651" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:22.487177" elapsed="0.388499"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:22.876342" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:22.875848" elapsed="0.000570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:22.486132" elapsed="0.390398">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:24.880072" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:24.879295" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:24.882205" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:24.881563" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:24.883713" 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-19T01:08:24.883856" 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-19T01:08:24.883490" elapsed="0.000404"/>
</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-19T01:08:24.889571" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:24.888897" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:24.888521" elapsed="0.001242"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:24.891602" 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-19T01:08:24.891844" 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-19T01:08:24.891154" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:24.893500" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:24.892939" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:24.895336" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:24.894612" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:24.897778" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:24.897856" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:24.897493" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:24.898112" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:24.899395" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:25.222439" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:24.899068" elapsed="0.323619"/>
</kw>
<msg time="2026-04-19T01:08:25.222769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:24.898686" elapsed="0.324165"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:24.896709" elapsed="0.326443"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:25.224636" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:25.247796" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:25.248349" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:25.248688" 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-19T01:08:25.224242" elapsed="0.024657"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:25.251215" elapsed="0.000702"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:25.253338" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:25.252708" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:25.254097" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:25.253729" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:25.253649" 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-19T01:08:25.254779" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:08:25.254483" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:25.254414" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:25.255140" elapsed="0.000051"/>
</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-19T01:08:25.261657" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:08:25.262248" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:25.262614" 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-19T01:08:25.256940" elapsed="0.005922"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:24.886672" elapsed="0.376536"/>
</kw>
<msg time="2026-04-19T01:08:25.263517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:24.885700" elapsed="0.377879"/>
</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-19T01:08:24.884859" elapsed="0.378802"/>
</kw>
<msg time="2026-04-19T01:08:25.263702" 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-19T01:08:24.884136" elapsed="0.379611"/>
</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-19T01:08:25.266708" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:08:25.267203" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:25.267506" 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-19T01:08:25.264052" elapsed="0.003601"/>
</kw>
<msg time="2026-04-19T01:08:25.267742" level="INFO">${output} = 1</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-19T01:08:24.882801" elapsed="0.384966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:25.268210" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:25.267945" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:25.268298" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:25.268449" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:24.880609" elapsed="0.387865"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:25.268522" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:08:25.268667" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:24.878407" elapsed="0.390284"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:25.269336" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:25.268913" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:24.877347" elapsed="0.392175">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:27.273101" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:27.272341" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:27.275225" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:27.274572" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:27.277059" 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-19T01:08:27.277291" 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-19T01:08:27.276710" elapsed="0.000639"/>
</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-19T01:08:27.283583" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:27.282878" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:27.282522" elapsed="0.001257"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:27.285795" 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-19T01:08:27.286171" 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-19T01:08:27.285179" elapsed="0.001131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:27.288465" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:27.287692" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:27.291171" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:27.289983" elapsed="0.001313"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:27.293644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:27.293721" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:27.293359" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:27.293953" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:27.295369" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:27.629273" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:27.295046" elapsed="0.334411"/>
</kw>
<msg time="2026-04-19T01:08:27.629559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:27.294657" elapsed="0.335011"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:27.292577" elapsed="0.337433"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:27.631845" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:27.655138" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:27.655515" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:27.655699" 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-19T01:08:27.631368" elapsed="0.024450"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:27.657143" elapsed="0.000608"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:27.659063" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:27.658467" elapsed="0.000721"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:27.659684" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:27.659392" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:27.659321" elapsed="0.000528"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:27.660289" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T01:08:27.660040" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:27.659965" elapsed="0.000528"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:27.660612" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:27.666655" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:27.667369" elapsed="0.000207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:27.667819" elapsed="0.000127"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:27.662303" elapsed="0.005791"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:27.280664" elapsed="0.387698"/>
</kw>
<msg time="2026-04-19T01:08:27.668729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:27.279743" elapsed="0.389063"/>
</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-19T01:08:27.278850" elapsed="0.390057"/>
</kw>
<msg time="2026-04-19T01:08:27.668958" 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-19T01:08:27.277697" elapsed="0.391318"/>
</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-19T01:08:27.673007" elapsed="0.000531"/>
</kw>
<kw name="Open 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-19T01:08:27.673750" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:27.674149" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:27.669530" elapsed="0.004807"/>
</kw>
<msg time="2026-04-19T01:08:27.674451" level="INFO">${output} = 1</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-19T01:08:27.275772" elapsed="0.398710"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:27.675106" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:27.674744" elapsed="0.000418"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:27.675218" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T01:08:27.675414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:27.273627" elapsed="0.401819"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:27.675503" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:08:27.675679" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:27.271504" elapsed="0.404206"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:27.676411" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:27.675910" elapsed="0.000587">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:27.270411" elapsed="0.406221">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:29.680292" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:29.679507" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:29.682575" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:29.681919" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:29.684434" 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-19T01:08:29.684660" 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-19T01:08:29.684105" elapsed="0.000615"/>
</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-19T01:08:29.694868" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:29.694176" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:29.691793" elapsed="0.003299"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:29.696608" 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-19T01:08:29.696847" 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-19T01:08:29.696175" elapsed="0.000770"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:29.698489" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:29.697910" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:29.700319" 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-19T01:08:29.699574" elapsed="0.000843"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:29.702681" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:29.702759" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:29.702390" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:29.702991" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:29.704331" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:30.024271" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:29.703920" elapsed="0.320495"/>
</kw>
<msg time="2026-04-19T01:08:30.024499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:29.703561" elapsed="0.321028"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:29.701610" elapsed="0.323246"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:30.026362" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:30.049516" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:30.049743" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:30.049890" 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-19T01:08:30.025951" elapsed="0.024032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:30.050983" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:30.052430" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:30.051969" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:30.053005" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:30.052702" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:30.052642" 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-19T01:08:30.053506" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:08:30.053302" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:30.053255" elapsed="0.000411"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:30.053745" 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-19T01:08:30.058456" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:08:30.059001" elapsed="0.000284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:30.059481" 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-19T01:08:30.055139" elapsed="0.004548"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:29.689143" elapsed="0.370767"/>
</kw>
<msg time="2026-04-19T01:08:30.060231" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:29.687573" elapsed="0.372716"/>
</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-19T01:08:29.686313" elapsed="0.374057"/>
</kw>
<msg time="2026-04-19T01:08:30.060412" 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-19T01:08:29.685103" elapsed="0.375354"/>
</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-19T01:08:30.063657" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:08:30.064148" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:30.064443" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:30.060750" elapsed="0.003842"/>
</kw>
<msg time="2026-04-19T01:08:30.064684" level="INFO">${output} = 1</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-19T01:08:29.683158" elapsed="0.381551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:30.065151" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:30.064888" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:30.065243" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:30.065393" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:29.680980" elapsed="0.384439"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:30.065466" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:08:30.065608" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:29.678622" elapsed="0.387011"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:30.066219" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:30.065788" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:29.677475" elapsed="0.388932">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:32.069929" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:32.069166" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:32.072191" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:32.071560" elapsed="0.000864"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:32.074453" 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-19T01:08:32.074826" 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-19T01:08:32.074099" elapsed="0.000793"/>
</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-19T01:08:32.083050" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:32.082570" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:32.082515" elapsed="0.000675"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:32.084841" 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-19T01:08:32.085104" 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-19T01:08:32.084181" elapsed="0.001036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:32.086749" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:32.086197" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:32.088672" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:32.087892" elapsed="0.000876"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:32.091054" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:32.091134" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:32.090757" 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-19T01:08:32.091370" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:32.092764" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:32.415224" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:32.092439" elapsed="0.322921"/>
</kw>
<msg time="2026-04-19T01:08:32.415442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:32.091921" elapsed="0.323603"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:32.089986" elapsed="0.325806"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:32.417319" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:32.440115" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:32.440345" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:32.440497" 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-19T01:08:32.416861" elapsed="0.023732"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:32.441610" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:32.443072" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:32.442606" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:32.443585" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:32.443345" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:32.443286" elapsed="0.000433"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:32.444083" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:08:32.443866" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:32.443817" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:32.444325" 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-19T01:08:32.449119" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T01:08:32.449763" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:32.450155" 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-19T01:08:32.445667" elapsed="0.004699"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:32.079566" elapsed="0.371020"/>
</kw>
<msg time="2026-04-19T01:08:32.450893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:32.077946" elapsed="0.373007"/>
</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-19T01:08:32.076607" elapsed="0.374598"/>
</kw>
<msg time="2026-04-19T01:08:32.451250" 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-19T01:08:32.075307" elapsed="0.375989"/>
</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-19T01:08:32.454293" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:08:32.454852" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:32.455208" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:32.451589" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T01:08:32.455458" level="INFO">${output} = 1</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-19T01:08:32.072969" elapsed="0.382515"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:32.455921" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:32.455671" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:32.456010" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T01:08:32.456181" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:32.070624" elapsed="0.385583"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:32.456254" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:32.456398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:32.068297" elapsed="0.388126"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:32.456972" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:32.456581" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:32.067213" elapsed="0.389984">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:34.460893" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:34.459962" elapsed="0.001000"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:34.462987" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:34.462384" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:34.464798" 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-19T01:08:34.464942" 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-19T01:08:34.464575" elapsed="0.000405"/>
</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-19T01:08:34.470307" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:34.469652" elapsed="0.000859"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:34.469574" elapsed="0.001023"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:34.472940" 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-19T01:08:34.473307" 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-19T01:08:34.471983" elapsed="0.001465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:34.475660" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:34.474881" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:34.477654" 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-19T01:08:34.476951" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:34.480271" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:34.480348" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:34.479955" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:34.480586" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:34.481893" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:34.805786" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:34.481565" elapsed="0.324362"/>
</kw>
<msg time="2026-04-19T01:08:34.806010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:34.481160" elapsed="0.324949"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:34.479200" elapsed="0.327189"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:34.808049" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:34.830914" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:34.831452" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:34.831780" 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-19T01:08:34.807638" elapsed="0.024438"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:34.834239" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:34.837401" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:34.836424" elapsed="0.001207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:34.838511" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:34.837976" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:34.837854" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:34.839783" elapsed="0.000137"/>
</return>
<status status="PASS" start="2026-04-19T01:08:34.839334" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:34.839224" elapsed="0.001027"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:34.840430" elapsed="0.000084"/>
</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-19T01:08:34.847328" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:08:34.847884" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:34.848267" 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-19T01:08:34.843536" elapsed="0.004937"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:34.467688" elapsed="0.381007"/>
</kw>
<msg time="2026-04-19T01:08:34.849113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:34.466723" elapsed="0.382450"/>
</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-19T01:08:34.465953" elapsed="0.383304"/>
</kw>
<msg time="2026-04-19T01:08:34.849299" 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-19T01:08:34.465231" elapsed="0.384116"/>
</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-19T01:08:34.852387" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:08:34.852882" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:34.853251" 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-19T01:08:34.849640" elapsed="0.003759"/>
</kw>
<msg time="2026-04-19T01:08:34.853490" level="INFO">${output} = 1</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-19T01:08:34.463568" elapsed="0.389946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:34.853941" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:34.853694" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:34.854092" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:08:34.854251" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:34.461443" elapsed="0.392834"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:34.854323" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:34.854472" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:34.459151" elapsed="0.395346"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:34.855059" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:34.854652" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:34.458072" elapsed="0.397173">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:36.858796" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:36.858019" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:36.860947" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:36.860340" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:36.862801" 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-19T01:08:36.863103" 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-19T01:08:36.862473" elapsed="0.000695"/>
</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-19T01:08:36.870143" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:36.869488" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:36.869409" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:36.872662" 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-19T01:08:36.873000" 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-19T01:08:36.871719" elapsed="0.001443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:36.875395" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:36.874579" elapsed="0.000973"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:36.878201" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:36.877132" elapsed="0.001206"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:36.881488" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:36.881598" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:36.881101" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:36.881925" elapsed="0.000642"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:36.883905" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:37.199367" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:36.883451" elapsed="0.316043"/>
</kw>
<msg time="2026-04-19T01:08:37.199572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:36.882876" elapsed="0.316780"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:36.880000" elapsed="0.319907"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:37.201365" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:37.224616" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:37.224926" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:37.225171" 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-19T01:08:37.200971" elapsed="0.024333"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:37.226698" elapsed="0.000620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:37.228722" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:37.228121" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:37.229435" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:37.229111" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:37.229010" elapsed="0.000608"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:37.230144" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:08:37.229820" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:37.229753" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:37.230477" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:37.237100" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T01:08:37.237854" elapsed="0.000260"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:37.238384" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:37.232396" elapsed="0.006276"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:36.867556" elapsed="0.371624"/>
</kw>
<msg time="2026-04-19T01:08:37.239592" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:36.865981" elapsed="0.373668"/>
</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-19T01:08:36.864698" elapsed="0.375035"/>
</kw>
<msg time="2026-04-19T01:08:37.239774" 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-19T01:08:36.863527" elapsed="0.376293"/>
</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-19T01:08:37.242886" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T01:08:37.243417" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:37.243712" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:37.240190" elapsed="0.003671"/>
</kw>
<msg time="2026-04-19T01:08:37.243952" level="INFO">${output} = 1</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-19T01:08:36.861522" elapsed="0.382455"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:37.244419" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:37.244169" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:37.244506" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:37.244664" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:36.859396" elapsed="0.385293"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:37.244736" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:37.244886" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:36.857207" elapsed="0.387704"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:37.245478" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:37.245082" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:36.856148" elapsed="0.389517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:39.249158" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:39.248401" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:39.251290" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:39.250664" elapsed="0.000686"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:39.253109" 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-19T01:08:39.253333" 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-19T01:08:39.252758" elapsed="0.000635"/>
</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-19T01:08:39.258695" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:39.258214" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:39.257897" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:39.260288" 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-19T01:08:39.260529" 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-19T01:08:39.259834" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:39.262178" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:39.261607" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:39.264041" 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-19T01:08:39.263338" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:39.266500" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:39.266576" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:39.266213" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:39.266812" elapsed="0.000509"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:39.268254" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:39.579820" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:39.267910" elapsed="0.312077"/>
</kw>
<msg time="2026-04-19T01:08:39.580100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:39.267547" elapsed="0.312651"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:39.265400" elapsed="0.315085"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:39.582001" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:39.604975" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:39.605509" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:39.605882" 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-19T01:08:39.581583" elapsed="0.024553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:39.608353" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:39.611451" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:39.610492" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:39.612546" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:39.612024" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:39.611905" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:39.613681" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:08:39.613181" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:39.613071" elapsed="0.001108"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:39.614364" elapsed="0.000081"/>
</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-19T01:08:39.619152" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:08:39.619696" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:39.620072" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:39.615769" elapsed="0.004513"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:39.256546" elapsed="0.363960"/>
</kw>
<msg time="2026-04-19T01:08:39.620848" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:39.255829" elapsed="0.365076"/>
</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-19T01:08:39.254904" elapsed="0.366083"/>
</kw>
<msg time="2026-04-19T01:08:39.621045" 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-19T01:08:39.253741" elapsed="0.367352"/>
</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-19T01:08:39.624231" 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-19T01:08:39.624708" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:39.625000" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:39.621384" elapsed="0.003781"/>
</kw>
<msg time="2026-04-19T01:08:39.625324" level="INFO">${output} = 1</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-19T01:08:39.251828" elapsed="0.373522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:39.625800" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:39.625528" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:39.625887" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:39.626058" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:39.249682" elapsed="0.376403"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:39.626132" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:08:39.626278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:39.247577" elapsed="0.378726"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:39.626860" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:39.626468" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:39.246544" elapsed="0.380581">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:41.630565" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:41.629820" elapsed="0.000813"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:41.632648" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:41.632004" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:41.634476" 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-19T01:08:41.634694" 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-19T01:08:41.634157" elapsed="0.000593"/>
</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-19T01:08:41.644795" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:41.643715" elapsed="0.001279"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:41.643015" elapsed="0.002144"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:41.648502" 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-19T01:08:41.649128" 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-19T01:08:41.647451" elapsed="0.001900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:41.651762" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:41.650960" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:41.654103" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:41.653315" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:41.656516" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:41.656598" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:41.656226" 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-19T01:08:41.656847" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:41.658121" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:41.975006" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:41.657778" elapsed="0.317469"/>
</kw>
<msg time="2026-04-19T01:08:41.975329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:41.657419" elapsed="0.317993"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:41.655460" elapsed="0.320222"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:41.977170" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:42.000126" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:42.000729" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:42.001105" 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-19T01:08:41.976770" elapsed="0.024553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:42.003916" elapsed="0.001071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:42.007605" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:42.006471" elapsed="0.001448"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:42.008978" elapsed="0.000108"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:42.008357" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:42.008219" elapsed="0.001123"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:42.009832" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T01:08:42.009623" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:42.009568" elapsed="0.000442"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:42.010201" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:42.015014" elapsed="0.000399"/>
</kw>
<kw name="Open 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-19T01:08:42.015634" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:42.016046" 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-19T01:08:42.011556" elapsed="0.004712"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:41.639952" elapsed="0.376588"/>
</kw>
<msg time="2026-04-19T01:08:42.016865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:41.638205" elapsed="0.378728"/>
</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-19T01:08:41.636271" elapsed="0.380747"/>
</kw>
<msg time="2026-04-19T01:08:42.017076" 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-19T01:08:41.635125" elapsed="0.381999"/>
</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-19T01:08:42.020234" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:08:42.020736" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:42.021045" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:42.017433" elapsed="0.003760"/>
</kw>
<msg time="2026-04-19T01:08:42.021285" level="INFO">${output} = 1</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-19T01:08:41.633215" elapsed="0.388095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:42.021769" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:42.021519" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:42.021858" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:08:42.022018" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:41.631110" elapsed="0.391065"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:42.022224" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:08:42.022371" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:41.628992" elapsed="0.393404"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:42.023022" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:42.022620" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:41.627917" elapsed="0.395312">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:44.027209" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:44.026336" elapsed="0.000946"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:44.029546" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:44.028867" elapsed="0.000742"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:44.031721" 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-19T01:08:44.031963" 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-19T01:08:44.031317" elapsed="0.000749"/>
</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-19T01:08:44.040302" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:44.039556" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:44.037014" elapsed="0.003496"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:44.042578" 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-19T01:08:44.043147" 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-19T01:08:44.041910" elapsed="0.001396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:44.045418" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:44.044788" elapsed="0.000744"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:44.047274" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:44.046538" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:44.049816" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:44.049897" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:44.049515" 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-19T01:08:44.050151" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:44.051529" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:44.367604" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:44.051146" elapsed="0.316608"/>
</kw>
<msg time="2026-04-19T01:08:44.367839" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:44.050736" elapsed="0.317191"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:44.048690" elapsed="0.319545"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:44.369735" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:44.392406" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:44.393021" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:44.393405" 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-19T01:08:44.369341" elapsed="0.024278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:44.395994" elapsed="0.000995"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:44.399402" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:44.398288" elapsed="0.001349"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:44.400213" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:44.399864" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:44.399785" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:44.400876" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T01:08:44.400595" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:44.400529" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:44.401239" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:44.407914" elapsed="0.000598"/>
</kw>
<kw name="Open 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-19T01:08:44.408806" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:44.409323" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:44.403088" elapsed="0.006521"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:44.035110" elapsed="0.374808"/>
</kw>
<msg time="2026-04-19T01:08:44.410388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:44.034107" elapsed="0.376364"/>
</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-19T01:08:44.033310" elapsed="0.377274"/>
</kw>
<msg time="2026-04-19T01:08:44.410640" 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-19T01:08:44.032435" elapsed="0.378269"/>
</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-19T01:08:44.414209" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:08:44.414690" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:44.414986" elapsed="0.000167"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:44.411328" elapsed="0.003878"/>
</kw>
<msg time="2026-04-19T01:08:44.415312" level="INFO">${output} = 1</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-19T01:08:44.030162" elapsed="0.385177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:44.415777" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:44.415521" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:44.415865" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:44.416019" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:44.027852" elapsed="0.388208"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:44.416108" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:44.416254" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:44.025410" elapsed="0.390869"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:44.416828" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:44.416436" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:44.024209" elapsed="0.392799">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:46.420536" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:46.419773" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:46.422839" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:46.422228" elapsed="0.000650"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:46.423998" 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-19T01:08:46.424164" 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-19T01:08:46.423781" elapsed="0.000421"/>
</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-19T01:08:46.429521" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:46.428857" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:46.428777" elapsed="0.001016"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:46.432430" 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-19T01:08:46.432789" 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-19T01:08:46.431451" elapsed="0.001480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:46.435109" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:46.434454" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:46.437017" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:46.436254" elapsed="0.000936"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:46.439494" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:46.439575" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:46.439207" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:46.439841" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:46.441263" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:46.759155" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:46.440809" elapsed="0.318488"/>
</kw>
<msg time="2026-04-19T01:08:46.759376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:46.440443" elapsed="0.319017"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:46.438423" elapsed="0.321312"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:46.761214" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:46.783943" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:46.784482" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:46.784816" 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-19T01:08:46.760813" elapsed="0.024249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:46.787404" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:46.790621" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:46.789536" elapsed="0.001322"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:46.791876" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:46.791251" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:46.791122" elapsed="0.001105"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:46.793062" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T01:08:46.792565" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:46.792452" elapsed="0.001007"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:46.793645" elapsed="0.000088"/>
</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-19T01:08:46.801331" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T01:08:46.801888" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:46.802338" 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-19T01:08:46.796828" elapsed="0.005730"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:46.426890" elapsed="0.375903"/>
</kw>
<msg time="2026-04-19T01:08:46.803177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:46.425905" elapsed="0.377333"/>
</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-19T01:08:46.425162" elapsed="0.378162"/>
</kw>
<msg time="2026-04-19T01:08:46.803366" 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-19T01:08:46.424425" elapsed="0.378989"/>
</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-19T01:08:46.806507" 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-19T01:08:46.806991" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:46.807305" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:46.803717" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T01:08:46.807547" level="INFO">${output} = 1</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-19T01:08:46.423204" elapsed="0.384369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:46.807997" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:46.807749" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:46.808101" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:46.808254" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:46.421258" elapsed="0.387022"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:46.808327" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:46.808473" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:46.418923" elapsed="0.389574"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:46.809059" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:46.808653" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:46.417784" elapsed="0.391462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:48.812661" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:48.811896" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:48.814450" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:48.814064" elapsed="0.000425"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:48.815683" 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-19T01:08:48.815961" 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-19T01:08:48.815458" elapsed="0.000546"/>
</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-19T01:08:48.821620" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:48.820915" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:48.820838" elapsed="0.000979"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:48.824180" 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-19T01:08:48.824532" 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-19T01:08:48.823208" elapsed="0.001468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:48.826578" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:48.826009" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:48.828466" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:48.827683" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:48.830882" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:48.830962" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:48.830593" 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-19T01:08:48.831220" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:48.832678" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:49.160733" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:48.832346" elapsed="0.328518"/>
</kw>
<msg time="2026-04-19T01:08:49.160944" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:48.831795" elapsed="0.329266"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:48.829800" elapsed="0.331541"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:49.162798" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:49.185877" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:49.186409" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:49.186740" 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-19T01:08:49.162417" elapsed="0.024538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:49.189244" elapsed="0.000762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:49.191476" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:49.190827" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:49.192221" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:49.191850" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:49.191771" elapsed="0.000635"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:49.192898" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:08:49.192614" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:49.192545" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:49.193275" elapsed="0.000055"/>
</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-19T01:08:49.200003" 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-19T01:08:49.201042" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:49.201550" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:49.195451" elapsed="0.006398"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:48.818829" elapsed="0.383276"/>
</kw>
<msg time="2026-04-19T01:08:49.202417" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:48.817870" elapsed="0.384607"/>
</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-19T01:08:48.817081" elapsed="0.385479"/>
</kw>
<msg time="2026-04-19T01:08:49.202600" 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-19T01:08:48.816305" elapsed="0.386341"/>
</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-19T01:08:49.205660" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:49.206150" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:49.206446" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:49.202935" elapsed="0.003660"/>
</kw>
<msg time="2026-04-19T01:08:49.206687" level="INFO">${output} = 1</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-19T01:08:48.814791" elapsed="0.391922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:49.207161" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:49.206895" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:49.207250" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:49.207404" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:48.813284" elapsed="0.394146"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:49.207477" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:49.207623" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:48.811087" elapsed="0.396561"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:49.208215" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:49.207806" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:48.810008" elapsed="0.398388">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:51.211872" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:51.211128" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:51.214121" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:51.213474" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:51.215977" 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-19T01:08:51.216263" 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-19T01:08:51.215640" elapsed="0.000684"/>
</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-19T01:08:51.224913" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:51.223828" elapsed="0.001264"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:51.223704" elapsed="0.001454"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:51.226879" 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-19T01:08:51.227154" 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-19T01:08:51.226153" elapsed="0.001104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:51.228957" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:51.228414" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:51.230795" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:51.230100" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:51.233180" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:51.233259" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:51.232879" 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-19T01:08:51.233497" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:51.234878" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:51.562095" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:51.234551" elapsed="0.327696"/>
</kw>
<msg time="2026-04-19T01:08:51.562333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:51.234181" elapsed="0.328239"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:51.232119" elapsed="0.330580"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:51.564256" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:51.587171" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:51.587668" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:51.588069" 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-19T01:08:51.563823" elapsed="0.024467"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:51.590756" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:51.593968" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:51.592961" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:51.595124" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:51.594584" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:51.594459" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:51.596268" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:08:51.595739" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:51.595631" elapsed="0.000986"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:51.596792" elapsed="0.000082"/>
</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-19T01:08:51.601728" 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-19T01:08:51.602292" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:51.602648" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:51.598321" elapsed="0.004539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:51.220693" elapsed="0.382411"/>
</kw>
<msg time="2026-04-19T01:08:51.603477" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:51.219152" elapsed="0.384383"/>
</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-19T01:08:51.217861" elapsed="0.385758"/>
</kw>
<msg time="2026-04-19T01:08:51.603661" 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-19T01:08:51.216679" elapsed="0.387029"/>
</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-19T01:08:51.606796" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:08:51.607295" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:51.607591" 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-19T01:08:51.604018" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T01:08:51.607831" level="INFO">${output} = 1</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-19T01:08:51.214682" elapsed="0.393198"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:51.608335" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:51.608086" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:51.608425" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:51.608580" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:51.212509" elapsed="0.396097"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:51.608654" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:51.608799" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:51.210274" elapsed="0.398550"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:51.609411" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:51.608983" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:51.209217" elapsed="0.400379">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:53.612062" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:53.611551" elapsed="0.000559"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:53.613375" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:53.612974" elapsed="0.000439"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:53.614524" 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-19T01:08:53.614666" 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-19T01:08:53.614308" elapsed="0.000395"/>
</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-19T01:08:53.620341" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:53.619672" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:53.619297" elapsed="0.001241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:53.622512" 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-19T01:08:53.622848" 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-19T01:08:53.621886" elapsed="0.001119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:53.625162" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:53.624384" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:53.627855" 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-19T01:08:53.626738" elapsed="0.001239"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:53.630282" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:53.630366" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:53.629942" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:53.630607" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:53.632072" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:53.915521" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:53.631730" elapsed="0.283907"/>
</kw>
<msg time="2026-04-19T01:08:53.915712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:53.631371" elapsed="0.284424"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:53.629183" elapsed="0.286890"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:53.917480" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:53.940185" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:53.940671" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:53.941001" 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-19T01:08:53.917114" elapsed="0.024174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:53.943492" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:53.946615" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:53.945613" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:53.947738" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:53.947249" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:53.947128" elapsed="0.000928"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:53.948823" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:08:53.948385" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:53.948278" elapsed="0.000973"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:53.949431" elapsed="0.000084"/>
</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-19T01:08:53.955067" 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-19T01:08:53.955604" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:53.955956" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:53.951665" elapsed="0.004517"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:53.617406" elapsed="0.338998"/>
</kw>
<msg time="2026-04-19T01:08:53.956707" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:53.616458" elapsed="0.340307"/>
</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-19T01:08:53.615693" elapsed="0.341156"/>
</kw>
<msg time="2026-04-19T01:08:53.956890" 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-19T01:08:53.614961" elapsed="0.341976"/>
</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-19T01:08:53.960057" 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-19T01:08:53.960545" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:53.960841" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:53.957327" elapsed="0.003660"/>
</kw>
<msg time="2026-04-19T01:08:53.961105" level="INFO">${output} = 1</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-19T01:08:53.613713" elapsed="0.347420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:53.961558" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:53.961310" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:53.961646" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:08:53.961796" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:53.612404" elapsed="0.349417"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:53.961867" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:53.962011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:53.611004" elapsed="0.351119"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:53.962675" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:53.962283" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:53.610275" elapsed="0.352656">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:55.966438" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:55.965645" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:55.968544" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:55.967908" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:55.970315" 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-19T01:08:55.970467" 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-19T01:08:55.970084" elapsed="0.000420"/>
</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-19T01:08:55.976648" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:55.975985" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:55.975582" elapsed="0.001259"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:55.978836" 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-19T01:08:55.979199" 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-19T01:08:55.978229" elapsed="0.001110"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:55.981541" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:55.980695" elapsed="0.000996"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:55.983554" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:08:55.982807" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:55.986290" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:55.986394" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:55.985887" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:55.986725" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:55.988227" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:56.297405" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:55.987868" elapsed="0.309675"/>
</kw>
<msg time="2026-04-19T01:08:56.297644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:55.987479" elapsed="0.310252"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:55.984874" elapsed="0.313132"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:56.299484" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:56.322166" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:56.322660" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:56.322989" 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-19T01:08:56.299103" elapsed="0.024140"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:56.325435" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:56.327634" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:56.327020" 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-19T01:08:56.328361" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:56.327993" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:56.327917" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:56.329025" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T01:08:56.328750" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:56.328674" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:56.329382" elapsed="0.000191"/>
</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-19T01:08:56.335934" elapsed="0.000607"/>
</kw>
<kw name="Open 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-19T01:08:56.336833" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:56.337344" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:56.331368" elapsed="0.006300"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:55.973588" elapsed="0.364389"/>
</kw>
<msg time="2026-04-19T01:08:56.338309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:55.972267" elapsed="0.366098"/>
</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-19T01:08:55.971472" elapsed="0.366974"/>
</kw>
<msg time="2026-04-19T01:08:56.338495" 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-19T01:08:55.970725" elapsed="0.367815"/>
</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-19T01:08:56.341567" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:08:56.342075" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:56.342372" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:56.338830" elapsed="0.003690"/>
</kw>
<msg time="2026-04-19T01:08:56.342674" level="INFO">${output} = 1</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-19T01:08:55.969119" elapsed="0.373581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:56.343148" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:56.342881" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:56.343237" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:08:56.343389" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:55.966966" elapsed="0.376449"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:56.343462" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:08:56.343607" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:55.964804" elapsed="0.378828"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:56.344223" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:56.343788" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:55.963733" elapsed="0.380670">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:08:58.348061" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:08:58.347290" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:08:58.350219" level="INFO">${member_ip} = 10.30.171.206</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-19T01:08:58.349581" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:58.352069" 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-19T01:08:58.352303" 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-19T01:08:58.351709" elapsed="0.000652"/>
</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-19T01:08:58.362385" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:08:58.361302" elapsed="0.001263"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:58.357881" elapsed="0.004816"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:58.365579" 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-19T01:08:58.365823" 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-19T01:08:58.364977" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:58.367468" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:58.366905" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:08:58.369314" 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-19T01:08:58.368560" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:08:58.371680" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:08:58.371758" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:08:58.371396" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:58.371996" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:08:58.373356" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:08:58.696021" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:08:58.372945" elapsed="0.323338"/>
</kw>
<msg time="2026-04-19T01:08:58.696383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:58.372571" elapsed="0.323934"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:08:58.370617" elapsed="0.326216"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:08:58.698642" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:08:58.721671" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:08:58.722169" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:08:58.722393" 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-19T01:08:58.698178" elapsed="0.024356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:58.724843" elapsed="0.001106"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:58.728730" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:58.727574" elapsed="0.001420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:58.730146" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:08:58.729507" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:58.729348" elapsed="0.001186"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:08:58.731632" elapsed="0.000137"/>
</return>
<status status="PASS" start="2026-04-19T01:08:58.730922" elapsed="0.000972"/>
</branch>
<status status="PASS" start="2026-04-19T01:08:58.730795" elapsed="0.001278"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:08:58.732281" elapsed="0.000095"/>
</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-19T01:08:58.737687" 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-19T01:08:58.738341" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:58.738731" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:58.734184" elapsed="0.004764"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:08:58.355872" elapsed="0.383376"/>
</kw>
<msg time="2026-04-19T01:08:58.739708" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:08:58.354907" elapsed="0.384878"/>
</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-19T01:08:58.354156" elapsed="0.385714"/>
</kw>
<msg time="2026-04-19T01:08:58.739912" 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-19T01:08:58.352734" elapsed="0.387226"/>
</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-19T01:08:58.742989" elapsed="0.000438"/>
</kw>
<kw name="Open 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-19T01:08:58.743594" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:08:58.743895" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:08:58.740277" elapsed="0.003785"/>
</kw>
<msg time="2026-04-19T01:08:58.744156" level="INFO">${output} = 1</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-19T01:08:58.350763" elapsed="0.393418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:08:58.744696" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:08:58.744365" elapsed="0.000380"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:08:58.744791" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:08:58.744950" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:08:58.348596" elapsed="0.396379"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:08:58.745023" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T01:08:58.745194" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:08:58.346282" elapsed="0.398937"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:08:58.745848" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:08:58.745446" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:08:58.345233" elapsed="0.400822">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:00.748243" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:00.747864" elapsed="0.000414"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:00.749240" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:00.748930" elapsed="0.000337"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:00.750096" 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-19T01:09:00.750201" 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-19T01:09:00.749909" elapsed="0.000319"/>
</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-19T01:09:00.754069" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:00.753586" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:00.753527" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:00.755890" 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-19T01:09:00.756155" 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-19T01:09:00.755201" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:00.757790" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:00.757243" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:00.759635" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:00.758888" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:00.762096" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:00.762179" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:00.761799" 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-19T01:09:00.762417" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:00.763701" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:01.065888" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:08:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:00.763351" elapsed="0.302738"/>
</kw>
<msg time="2026-04-19T01:09:01.066199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:00.762968" elapsed="0.303339"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:00.760952" elapsed="0.305735"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:01.068658" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:01.091222" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:01.091743" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:01.092114" 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-19T01:09:01.068267" elapsed="0.024061"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:01.094571" elapsed="0.000938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:01.097792" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:01.096797" elapsed="0.001223"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:01.098886" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:01.098397" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:01.098276" elapsed="0.000935"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:01.100018" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-19T01:09:01.099575" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:01.099468" elapsed="0.000858"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:01.100443" elapsed="0.000057"/>
</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-19T01:09:01.107483" 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-19T01:09:01.108314" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:01.108839" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:01.102492" elapsed="0.006763"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:00.752204" elapsed="0.357400"/>
</kw>
<msg time="2026-04-19T01:09:01.110075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:00.751490" elapsed="0.358672"/>
</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-19T01:09:00.750911" elapsed="0.359374"/>
</kw>
<msg time="2026-04-19T01:09:01.110346" 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-19T01:09:00.750390" elapsed="0.360024"/>
</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-19T01:09:01.114132" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:01.115588" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:01.115914" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:01.110905" elapsed="0.005191"/>
</kw>
<msg time="2026-04-19T01:09:01.116195" level="INFO">${output} = 1</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-19T01:09:00.749488" elapsed="0.366734"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:01.116667" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:01.116412" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:01.116756" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:09:01.116914" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:00.748490" elapsed="0.368449"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:01.116987" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:01.117192" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:00.747452" elapsed="0.369765"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:01.117779" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:01.117377" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:00.746743" elapsed="0.371224">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:03.121622" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:03.120847" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:03.124114" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:03.123452" elapsed="0.000725"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:03.125951" 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-19T01:09:03.126209" 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-19T01:09:03.125617" elapsed="0.001300"/>
</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-19T01:09:03.132065" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:03.131574" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:03.131517" elapsed="0.000687"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:03.133969" 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-19T01:09:03.134234" 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-19T01:09:03.133217" elapsed="0.001119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:03.135869" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:03.135325" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:03.137703" 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-19T01:09:03.136983" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:03.140203" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:03.140282" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:03.139803" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:03.140516" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:03.141781" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:03.444460" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:03.141454" elapsed="0.303153"/>
</kw>
<msg time="2026-04-19T01:09:03.444688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:03.141088" elapsed="0.303688"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:03.139018" elapsed="0.306072"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:03.446629" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:03.469378" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:03.470138" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:03.470489" 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-19T01:09:03.446220" elapsed="0.024492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:03.473227" elapsed="0.000745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:03.475529" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:03.474822" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:03.476441" elapsed="0.000058"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:03.475915" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:03.475826" 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-19T01:09:03.477182" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-19T01:09:03.476863" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:03.476793" elapsed="0.000675"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:03.477603" elapsed="0.000059"/>
</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-19T01:09:03.484624" elapsed="0.000532"/>
</kw>
<kw name="Open 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-19T01:09:03.485501" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:03.485878" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:03.479645" elapsed="0.006460"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:03.130159" elapsed="0.356206"/>
</kw>
<msg time="2026-04-19T01:09:03.486694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:03.129426" elapsed="0.357336"/>
</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-19T01:09:03.128845" elapsed="0.358010"/>
</kw>
<msg time="2026-04-19T01:09:03.486897" 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-19T01:09:03.128170" elapsed="0.358773"/>
</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-19T01:09:03.490133" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:03.490646" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:03.490947" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:03.487281" elapsed="0.003860"/>
</kw>
<msg time="2026-04-19T01:09:03.491240" level="INFO">${output} = 1</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-19T01:09:03.124673" elapsed="0.366596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:03.491713" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:03.491457" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:03.491802" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:09:03.491971" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:03.122333" elapsed="0.369678"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:03.492087" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:09:03.492242" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:03.119818" elapsed="0.372449"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:03.492832" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:03.492427" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:03.118732" elapsed="0.374314">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:05.496937" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:05.495919" elapsed="0.001095"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:05.499278" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:05.498598" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:05.501337" 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-19T01:09:05.501835" 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-19T01:09:05.500937" elapsed="0.000970"/>
</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-19T01:09:05.507764" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:05.507291" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:05.507233" elapsed="0.000671"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:05.509579" 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-19T01:09:05.509825" 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-19T01:09:05.508886" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:05.511484" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:05.510916" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:05.513319" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:05.512608" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:05.516250" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:05.516342" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:05.515909" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:05.516578" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:05.517850" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:05.881590" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:05.517522" elapsed="0.364225"/>
</kw>
<msg time="2026-04-19T01:09:05.881835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:05.517157" elapsed="0.364774"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:05.514645" elapsed="0.367598"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:05.883771" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:05.906190" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:05.906712" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:05.907087" 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-19T01:09:05.883350" elapsed="0.023953"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:05.909510" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:05.912739" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:05.911718" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:05.913860" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:05.913355" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:05.913230" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:05.915085" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:09:05.914593" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:05.914449" elapsed="0.000981"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:05.915510" 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-19T01:09:05.920387" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:09:05.921004" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:05.921380" 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-19T01:09:05.916879" elapsed="0.004709"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:05.505891" elapsed="0.415920"/>
</kw>
<msg time="2026-04-19T01:09:05.922147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:05.505018" elapsed="0.417187"/>
</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-19T01:09:05.503602" elapsed="0.418688"/>
</kw>
<msg time="2026-04-19T01:09:05.922332" 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-19T01:09:05.502332" elapsed="0.420046"/>
</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-19T01:09:05.925392" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:09:05.925870" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:05.926202" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:05.922667" elapsed="0.003687"/>
</kw>
<msg time="2026-04-19T01:09:05.926446" level="INFO">${output} = 1</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-19T01:09:05.499857" elapsed="0.426615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:05.926897" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:05.926651" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:05.926984" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:05.927153" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:05.497585" elapsed="0.429594"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:05.927225" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:05.927369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:05.495018" elapsed="0.432375"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:05.927942" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:05.927550" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:05.493840" elapsed="0.434380">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:07.931761" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:07.930955" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:07.934075" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:07.933347" elapsed="0.000797"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:07.936084" 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-19T01:09:07.936329" 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-19T01:09:07.935714" elapsed="0.000680"/>
</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-19T01:09:07.941777" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:07.941295" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:07.940978" elapsed="0.001025"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:07.943474" 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-19T01:09:07.943720" 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-19T01:09:07.943011" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:07.945397" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:07.944820" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:07.947231" 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-19T01:09:07.946514" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:07.949945" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:07.950046" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:07.949624" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:07.950287" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:07.951540" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:08.280294" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:07.951217" elapsed="0.329232"/>
</kw>
<msg time="2026-04-19T01:09:08.280530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:07.950841" elapsed="0.329772"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:07.948784" elapsed="0.332110"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:08.282379" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:08.304940" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:08.305480" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:08.305811" 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-19T01:09:08.281976" elapsed="0.024045"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:08.308272" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:08.311522" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:08.310548" elapsed="0.001364"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:08.312841" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:08.312310" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:08.312186" elapsed="0.000982"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:08.313940" elapsed="0.000265"/>
</return>
<status status="PASS" start="2026-04-19T01:09:08.313491" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:08.313384" elapsed="0.001070"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:08.314647" elapsed="0.000082"/>
</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-19T01:09:08.320446" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:09:08.320990" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:08.321362" 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-19T01:09:08.317126" elapsed="0.004442"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:07.939591" elapsed="0.382198"/>
</kw>
<msg time="2026-04-19T01:09:08.322169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:07.938895" elapsed="0.383333"/>
</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-19T01:09:07.938107" elapsed="0.384202"/>
</kw>
<msg time="2026-04-19T01:09:08.322350" 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-19T01:09:07.936772" elapsed="0.385623"/>
</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-19T01:09:08.325424" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:09:08.325900" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:08.326218" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:08.322685" elapsed="0.003685"/>
</kw>
<msg time="2026-04-19T01:09:08.326465" level="INFO">${output} = 1</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-19T01:09:07.934704" elapsed="0.391787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:08.326931" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:08.326669" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:08.327018" elapsed="0.000123"/>
</return>
<msg time="2026-04-19T01:09:08.327267" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:07.932347" elapsed="0.394946"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:08.327339" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:09:08.327482" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:07.930104" elapsed="0.397403"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:08.328103" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:08.327687" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:07.928984" elapsed="0.399342">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:10.331980" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:10.331189" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:10.334259" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:10.333589" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:10.336281" 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-19T01:09:10.336534" 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-19T01:09:10.335894" elapsed="0.000709"/>
</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-19T01:09:10.344118" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:10.343593" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:10.343296" elapsed="0.000968"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:10.345711" 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-19T01:09:10.345962" 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-19T01:09:10.345254" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:10.347667" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:10.347114" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:10.349638" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:10.348910" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:10.352159" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:10.352240" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:10.351770" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:10.352479" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:10.353774" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:10.680207" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:10.353446" elapsed="0.326911"/>
</kw>
<msg time="2026-04-19T01:09:10.680440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:10.353070" elapsed="0.327462"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:10.350971" elapsed="0.329841"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:10.682313" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:10.704919" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:10.705447" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:10.705820" 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-19T01:09:10.681898" elapsed="0.024176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:10.708305" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:10.711223" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:10.710535" 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-19T01:09:10.711954" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:10.711609" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:10.711525" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:10.712680" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:09:10.712387" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:10.712314" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:10.713046" elapsed="0.000058"/>
</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-19T01:09:10.720294" elapsed="0.000487"/>
</kw>
<kw name="Open 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-19T01:09:10.721110" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:10.721665" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:10.715197" elapsed="0.006776"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:10.341145" elapsed="0.381175"/>
</kw>
<msg time="2026-04-19T01:09:10.722667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:10.339520" elapsed="0.383207"/>
</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-19T01:09:10.338218" elapsed="0.384592"/>
</kw>
<msg time="2026-04-19T01:09:10.722852" 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-19T01:09:10.336965" elapsed="0.385933"/>
</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-19T01:09:10.725960" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:09:10.726460" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:10.726760" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:10.723274" elapsed="0.003635"/>
</kw>
<msg time="2026-04-19T01:09:10.727000" level="INFO">${output} = 1</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-19T01:09:10.334872" elapsed="0.392169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:10.727478" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:10.727225" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:10.727570" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:09:10.727721" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:10.332587" elapsed="0.395159"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:10.727793" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:10.727937" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:10.330260" elapsed="0.397702"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:10.728554" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:10.728161" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:10.329140" elapsed="0.399596">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:12.731196" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:12.730697" elapsed="0.000546"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:12.732531" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:12.732150" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:12.733692" 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-19T01:09:12.733834" 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-19T01:09:12.733469" elapsed="0.000402"/>
</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-19T01:09:12.741466" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:12.740794" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:12.738377" elapsed="0.003282"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:12.743647" 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-19T01:09:12.744013" 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-19T01:09:12.743026" elapsed="0.001156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:12.745832" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:12.745293" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:12.747671" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:12.746966" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:12.750616" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:12.750703" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:12.750280" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:12.750971" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:12.752565" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:13.108318" 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 Sun Apr 19 01:08:12 UTC 2026

  System load:  0.2                Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:12.752181" elapsed="0.356294"/>
</kw>
<msg time="2026-04-19T01:09:13.108560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:12.751713" elapsed="0.356938"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:12.749259" elapsed="0.359690"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:13.110486" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:13.132951" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:13.133540" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:13.133901" 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-19T01:09:13.110080" elapsed="0.024094"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:13.136638" elapsed="0.000972"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:13.140055" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:13.138965" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:13.141208" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:13.140672" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:13.140544" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:13.142347" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T01:09:13.141836" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:13.141723" elapsed="0.000996"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:13.142894" 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-19T01:09:13.149291" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:09:13.149843" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:13.150221" 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-19T01:09:13.145836" elapsed="0.004594"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:12.736544" elapsed="0.414113"/>
</kw>
<msg time="2026-04-19T01:09:13.150969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:12.735585" elapsed="0.415507"/>
</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-19T01:09:12.734824" elapsed="0.416355"/>
</kw>
<msg time="2026-04-19T01:09:13.151220" 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-19T01:09:12.734112" elapsed="0.417154"/>
</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-19T01:09:13.154292" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:09:13.154775" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:13.155168" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:13.151558" elapsed="0.003762"/>
</kw>
<msg time="2026-04-19T01:09:13.155478" level="INFO">${output} = 1</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-19T01:09:12.732873" elapsed="0.422631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:13.155930" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:13.155682" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:13.156017" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T01:09:13.156186" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:12.731530" elapsed="0.424681"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:13.156257" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T01:09:13.156430" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:12.730185" elapsed="0.426269"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:13.157007" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:13.156614" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:12.729479" elapsed="0.427732">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:15.160544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:15.159797" elapsed="0.000815"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:15.162758" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:15.162145" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:15.164579" 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-19T01:09:15.164860" 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-19T01:09:15.164264" elapsed="0.000654"/>
</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-19T01:09:15.170620" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:15.169967" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:15.169888" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:15.173162" 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-19T01:09:15.173505" 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-19T01:09:15.172203" elapsed="0.001453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:15.175782" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:15.175015" elapsed="0.000919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:15.178229" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:15.177425" elapsed="0.000901"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:15.180576" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:15.180654" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:15.180285" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:15.180888" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:15.182323" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:15.802809" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:15.181983" elapsed="0.621106"/>
</kw>
<msg time="2026-04-19T01:09:15.803181" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:15.181622" elapsed="0.621656"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:15.179514" elapsed="0.624047"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:15.805105" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:15.827987" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:15.828599" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:15.829130" 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-19T01:09:15.804683" elapsed="0.024740"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:15.831874" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:15.835368" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:15.834220" elapsed="0.001409"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:15.836674" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:15.836070" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:15.835903" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:15.837422" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:09:15.837140" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:15.836994" elapsed="0.000656"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:15.837761" elapsed="0.000051"/>
</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-19T01:09:15.844772" 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-19T01:09:15.845557" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:15.846075" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:15.839774" elapsed="0.006594"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:15.168013" elapsed="0.678667"/>
</kw>
<msg time="2026-04-19T01:09:15.847229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:15.167077" elapsed="0.680235"/>
</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-19T01:09:15.166315" elapsed="0.681113"/>
</kw>
<msg time="2026-04-19T01:09:15.847485" 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-19T01:09:15.165295" elapsed="0.682254"/>
</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-19T01:09:15.850919" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:15.851447" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:15.851742" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:15.847954" elapsed="0.003977"/>
</kw>
<msg time="2026-04-19T01:09:15.852064" level="INFO">${output} = 1</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-19T01:09:15.163328" elapsed="0.688764"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:15.852542" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:15.852284" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:15.852634" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:09:15.852794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:15.161142" elapsed="0.691679"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:15.852895" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:09:15.853073" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:15.158970" elapsed="0.694129"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:15.853720" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:15.853312" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:15.157946" elapsed="0.695966">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:17.857410" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:17.856636" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:17.859657" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:17.858980" elapsed="0.000739"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:17.861673" 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-19T01:09:17.861823" 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-19T01:09:17.861314" elapsed="0.000545"/>
</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-19T01:09:17.867163" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:17.866499" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:17.866420" elapsed="0.000938"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:17.869732" 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-19T01:09:17.870168" 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-19T01:09:17.868730" elapsed="0.001584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:17.872582" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:17.871764" elapsed="0.000980"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:17.874909" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:17.874205" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:17.877331" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:17.877412" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:17.877016" 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-19T01:09:17.877650" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:17.879248" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:18.205008" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:17.878903" elapsed="0.326276"/>
</kw>
<msg time="2026-04-19T01:09:18.205267" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:17.878530" elapsed="0.326826"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:17.876232" elapsed="0.329409"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:18.207155" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:18.230138" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:18.230624" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:18.230951" 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-19T01:09:18.206740" elapsed="0.024495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:18.233450" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:18.236343" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:18.235662" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:18.237100" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:18.236736" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:18.236651" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:18.237798" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:09:18.237506" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:18.237437" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:18.238174" elapsed="0.000056"/>
</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-19T01:09:18.245254" 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-19T01:09:18.246078" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:18.246606" 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-19T01:09:18.240305" elapsed="0.006601"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:17.864539" elapsed="0.382871"/>
</kw>
<msg time="2026-04-19T01:09:18.247816" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:17.863581" elapsed="0.384292"/>
</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-19T01:09:17.862814" elapsed="0.385142"/>
</kw>
<msg time="2026-04-19T01:09:18.247997" 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-19T01:09:17.862100" elapsed="0.385957"/>
</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-19T01:09:18.251102" 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-19T01:09:18.251578" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:18.251876" 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-19T01:09:18.248352" elapsed="0.003670"/>
</kw>
<msg time="2026-04-19T01:09:18.252131" level="INFO">${output} = 1</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-19T01:09:17.860263" elapsed="0.391893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:18.252581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:18.252334" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:18.252667" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:09:18.252819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:17.857971" elapsed="0.394873"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:18.252891" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:09:18.253051" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:17.855802" elapsed="0.397276"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:18.253634" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:18.253235" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:17.854699" elapsed="0.399125">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:20.257544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:20.256606" elapsed="0.001008"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:20.259849" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:20.259262" elapsed="0.000625"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:20.261004" 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-19T01:09:20.261170" 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-19T01:09:20.260786" elapsed="0.000422"/>
</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-19T01:09:20.266472" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:20.265813" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:20.265735" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:20.269001" 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-19T01:09:20.269382" 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-19T01:09:20.268065" elapsed="0.001456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:20.271454" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:20.270891" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:20.273326" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:20.272554" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:20.275714" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:20.275791" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:20.275431" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:20.276041" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:20.277429" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:20.601531" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:20.276965" elapsed="0.324706"/>
</kw>
<msg time="2026-04-19T01:09:20.601754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:20.276605" elapsed="0.325238"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:20.274644" elapsed="0.327501"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:20.603627" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:20.626623" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:20.627168" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:20.627502" 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-19T01:09:20.603239" elapsed="0.024475"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:20.629987" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:20.633208" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:20.632231" elapsed="0.001230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:20.634457" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:20.633810" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:20.633687" elapsed="0.001073"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:20.635573" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:09:20.635116" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:20.634973" elapsed="0.000980"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:20.636294" elapsed="0.000085"/>
</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-19T01:09:20.644003" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T01:09:20.644616" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:20.644972" 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-19T01:09:20.639223" elapsed="0.005970"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:20.263872" elapsed="0.381557"/>
</kw>
<msg time="2026-04-19T01:09:20.645730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:20.262927" elapsed="0.382860"/>
</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-19T01:09:20.262168" elapsed="0.383701"/>
</kw>
<msg time="2026-04-19T01:09:20.645910" 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-19T01:09:20.261431" elapsed="0.384525"/>
</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-19T01:09:20.648992" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:09:20.649492" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:20.649788" 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-19T01:09:20.646261" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T01:09:20.650042" level="INFO">${output} = 1</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-19T01:09:20.260212" elapsed="0.389857"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:20.650494" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:20.650247" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:20.650580" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:20.650732" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:20.258257" elapsed="0.392501"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:20.650805" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:20.650950" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:20.255763" elapsed="0.395212"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:20.651548" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:20.651147" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:20.254676" elapsed="0.397062">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:22.655341" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:22.654542" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:22.657641" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:22.656827" elapsed="0.000878"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:22.659697" 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-19T01:09:22.660013" 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-19T01:09:22.659352" elapsed="0.000723"/>
</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-19T01:09:22.666012" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:22.665334" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:22.664928" elapsed="0.001308"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:22.668243" 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-19T01:09:22.668578" 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-19T01:09:22.667615" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:22.670932" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:22.670114" elapsed="0.001007"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:22.673105" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:22.672377" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:22.675559" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:22.675639" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:22.675269" 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-19T01:09:22.675877" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:22.677288" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:23.000861" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:22.676944" elapsed="0.324074"/>
</kw>
<msg time="2026-04-19T01:09:23.001121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:22.676575" elapsed="0.324641"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:22.674452" elapsed="0.327053"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:23.003088" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:23.026231" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:23.026738" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:23.027118" 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-19T01:09:23.002659" elapsed="0.024674"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:23.029540" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:23.032738" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:23.031729" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:23.033883" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:23.033355" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:23.033232" elapsed="0.001002"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:23.035010" elapsed="0.000156"/>
</return>
<status status="PASS" start="2026-04-19T01:09:23.034560" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:23.034450" elapsed="0.000954"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:23.035580" 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-19T01:09:23.042383" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:09:23.043010" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:23.043394" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:23.038749" elapsed="0.004856"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:22.662984" elapsed="0.380858"/>
</kw>
<msg time="2026-04-19T01:09:23.044215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:22.661920" elapsed="0.382356"/>
</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-19T01:09:22.661087" elapsed="0.383274"/>
</kw>
<msg time="2026-04-19T01:09:23.044403" 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-19T01:09:22.660308" elapsed="0.384142"/>
</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-19T01:09:23.047534" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:09:23.048115" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:23.048417" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:23.044742" elapsed="0.003824"/>
</kw>
<msg time="2026-04-19T01:09:23.048657" level="INFO">${output} = 1</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-19T01:09:22.658288" elapsed="0.390394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:23.049134" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:23.048862" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:23.049221" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:23.049375" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:22.655869" elapsed="0.393531"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:23.049447" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:23.049594" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:22.653687" elapsed="0.395932"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:23.050225" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:23.049801" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:22.652613" elapsed="0.397799">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:25.053886" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:25.053156" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:25.055976" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:25.055379" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:25.057888" 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-19T01:09:25.058150" 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-19T01:09:25.057559" elapsed="0.000652"/>
</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-19T01:09:25.064369" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:25.063879" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:25.063590" elapsed="0.000982"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:25.066018" 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-19T01:09:25.066279" 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-19T01:09:25.065578" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:25.067884" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:25.067348" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:25.069820" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:25.069133" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:25.072380" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:25.072458" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:25.072097" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:25.072693" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:25.073956" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:25.407388" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:25.073633" elapsed="0.333919"/>
</kw>
<msg time="2026-04-19T01:09:25.407642" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:25.073272" elapsed="0.334477"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:25.071333" elapsed="0.336750"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:25.409672" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:25.432477" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:25.433019" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:25.433447" 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-19T01:09:25.409251" elapsed="0.024421"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:25.436090" elapsed="0.001095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:25.439545" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:25.438479" elapsed="0.001294"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:25.440691" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:25.440179" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:25.439997" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:25.441792" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:09:25.441344" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:25.441235" elapsed="0.000978"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:25.442390" elapsed="0.000085"/>
</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-19T01:09:25.450765" elapsed="0.000447"/>
</kw>
<kw name="Open 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-19T01:09:25.451422" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:25.451779" 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-19T01:09:25.445532" elapsed="0.006454"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:25.062282" elapsed="0.389964"/>
</kw>
<msg time="2026-04-19T01:09:25.452608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:25.060953" elapsed="0.391716"/>
</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-19T01:09:25.059719" elapsed="0.393033"/>
</kw>
<msg time="2026-04-19T01:09:25.452794" 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-19T01:09:25.058560" elapsed="0.394280"/>
</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-19T01:09:25.455807" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T01:09:25.456332" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:25.456627" 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-19T01:09:25.453148" elapsed="0.003626"/>
</kw>
<msg time="2026-04-19T01:09:25.456863" level="INFO">${output} = 1</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-19T01:09:25.056548" elapsed="0.400341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:25.457326" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:25.457080" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:25.457413" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:09:25.457561" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:25.054442" elapsed="0.403144"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:25.457632" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:09:25.457772" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:25.052298" elapsed="0.405498"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:25.458357" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:25.457951" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:25.051260" elapsed="0.407281">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:27.462403" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:27.461594" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:27.464671" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:27.463979" elapsed="0.000754"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:27.466633" 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-19T01:09:27.466870" 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-19T01:09:27.466283" elapsed="0.000646"/>
</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-19T01:09:27.474217" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:27.473688" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:27.471557" elapsed="0.002814"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:27.475846" 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-19T01:09:27.476157" 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-19T01:09:27.475393" elapsed="0.000876"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:27.477937" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:27.477263" elapsed="0.000844"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:27.480406" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:27.479458" elapsed="0.001047"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:27.482817" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:27.482893" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:27.482521" 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-19T01:09:27.483157" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:27.484655" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:27.826673" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:27.484323" elapsed="0.342502"/>
</kw>
<msg time="2026-04-19T01:09:27.826908" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:27.483728" elapsed="0.343268"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:27.481717" elapsed="0.345581"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:27.828809" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:27.852116" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:27.852873" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:27.853269" 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-19T01:09:27.828409" elapsed="0.025081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:27.855835" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:27.859270" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:27.858231" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:27.860559" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:27.859922" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:27.859774" elapsed="0.001157"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:27.861900" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T01:09:27.861421" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:27.861304" elapsed="0.001017"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:27.862546" elapsed="0.000091"/>
</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-19T01:09:27.869474" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T01:09:27.870247" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:27.870743" 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-19T01:09:27.864935" elapsed="0.006120"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:27.470151" elapsed="0.401210"/>
</kw>
<msg time="2026-04-19T01:09:27.871784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:27.469426" elapsed="0.402446"/>
</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-19T01:09:27.468595" elapsed="0.403382"/>
</kw>
<msg time="2026-04-19T01:09:27.872048" 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-19T01:09:27.467341" elapsed="0.404772"/>
</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-19T01:09:27.876494" 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-19T01:09:27.877229" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:27.877652" elapsed="0.000141"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:27.872614" elapsed="0.005252"/>
</kw>
<msg time="2026-04-19T01:09:27.877994" level="INFO">${output} = 1</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-19T01:09:27.465277" elapsed="0.412775"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:27.878681" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:27.878336" elapsed="0.000427"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:27.878829" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T01:09:27.879118" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:27.463001" elapsed="0.416155"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:27.879221" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:09:27.879422" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:27.460593" elapsed="0.418864"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:27.880278" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:27.879692" elapsed="0.000674">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:27.459432" elapsed="0.421071">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:29.883950" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:29.883227" elapsed="0.000794"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:29.886146" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:29.885511" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:29.887960" 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-19T01:09:29.888217" 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-19T01:09:29.887637" elapsed="0.000639"/>
</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-19T01:09:29.894763" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:29.894299" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:29.894244" elapsed="0.000656"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:29.896578" 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-19T01:09:29.896833" 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-19T01:09:29.895878" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:29.898471" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:29.897901" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:29.900263" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:29.899556" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:29.902662" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:29.902738" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:29.902379" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:29.902972" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:29.904303" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:30.234407" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:29.903959" elapsed="0.330590"/>
</kw>
<msg time="2026-04-19T01:09:30.234629" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:29.903602" elapsed="0.331114"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:29.901616" elapsed="0.333378"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:30.236499" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:30.259662" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:30.260221" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:30.260556" 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-19T01:09:30.236093" elapsed="0.024677"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:30.262980" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:30.266193" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:30.265208" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:30.267324" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:30.266792" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:30.266670" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:30.268504" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:09:30.267934" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:30.267827" elapsed="0.001116"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:30.269253" elapsed="0.000055"/>
</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-19T01:09:30.275800" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T01:09:30.276587" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:30.277163" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:30.271096" elapsed="0.006360"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:29.892688" elapsed="0.385079"/>
</kw>
<msg time="2026-04-19T01:09:30.278219" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:29.891015" elapsed="0.387284"/>
</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-19T01:09:29.889801" elapsed="0.388613"/>
</kw>
<msg time="2026-04-19T01:09:30.278470" 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-19T01:09:29.888643" elapsed="0.389891"/>
</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-19T01:09:30.282354" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:09:30.282833" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:30.283144" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:30.278941" elapsed="0.004354"/>
</kw>
<msg time="2026-04-19T01:09:30.283445" level="INFO">${output} = 1</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-19T01:09:29.886688" elapsed="0.396783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:30.283907" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:30.283658" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:30.283995" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:30.284180" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:29.884532" elapsed="0.399674"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:30.284254" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:30.284401" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:29.882386" elapsed="0.402041"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:30.284976" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:30.284585" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:29.881348" elapsed="0.403873">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:32.288701" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:32.287931" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:32.290607" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:32.290222" elapsed="0.000424"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:32.291769" 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-19T01:09:32.291912" 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-19T01:09:32.291551" elapsed="0.000399"/>
</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-19T01:09:32.297240" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:32.296588" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:32.296511" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:32.299754" 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-19T01:09:32.300141" 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-19T01:09:32.298809" elapsed="0.001474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:32.302390" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:32.301679" elapsed="0.000823"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:32.304307" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:32.303529" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:32.306673" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:32.306750" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:32.306391" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:32.306987" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:32.308380" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:32.629075" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:32.307905" elapsed="0.321452"/>
</kw>
<msg time="2026-04-19T01:09:32.629442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:32.307550" elapsed="0.321980"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:32.305612" elapsed="0.324190"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:32.631331" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:32.654194" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:32.654680" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:32.655010" 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-19T01:09:32.630900" elapsed="0.024370"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:32.657559" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:32.659829" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:32.659199" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:32.660617" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:32.660273" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:32.660187" elapsed="0.000628"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:32.661449" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:09:32.661113" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:32.660955" elapsed="0.000727"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:32.661796" elapsed="0.000055"/>
</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-19T01:09:32.668933" elapsed="0.000578"/>
</kw>
<kw name="Open 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-19T01:09:32.669727" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:32.670110" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:32.663829" elapsed="0.006493"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:32.294645" elapsed="0.375902"/>
</kw>
<msg time="2026-04-19T01:09:32.670860" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:32.293695" elapsed="0.377230"/>
</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-19T01:09:32.292906" elapsed="0.378103"/>
</kw>
<msg time="2026-04-19T01:09:32.671066" 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-19T01:09:32.292195" elapsed="0.378920"/>
</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-19T01:09:32.674228" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:09:32.674701" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:32.674994" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:32.671409" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T01:09:32.675257" level="INFO">${output} = 1</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-19T01:09:32.290952" elapsed="0.384330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:32.675740" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:32.675491" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:32.675828" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:09:32.675985" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:32.289266" elapsed="0.386745"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:32.676087" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:09:32.676235" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:32.287123" elapsed="0.389137"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:32.676891" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:32.676484" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:32.286073" elapsed="0.391089">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:34.680950" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:34.680183" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:34.683099" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:34.682464" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:34.684963" 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-19T01:09:34.685224" 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-19T01:09:34.684637" elapsed="0.000630"/>
</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-19T01:09:34.690624" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:34.689970" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:34.689892" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:34.693162" 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-19T01:09:34.693506" 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-19T01:09:34.692184" elapsed="0.001458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:34.695796" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:34.695042" elapsed="0.000903"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:34.698221" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:34.697396" elapsed="0.000922"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:34.700574" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:34.700651" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:34.700279" 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-19T01:09:34.700888" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:34.702326" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:35.032744" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:34.701838" elapsed="0.331063"/>
</kw>
<msg time="2026-04-19T01:09:35.032987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:34.701476" elapsed="0.331621"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:34.699502" elapsed="0.333881"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:35.034878" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:35.058017" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:35.058560" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:35.058888" 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-19T01:09:35.034487" elapsed="0.024651"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:35.061403" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:35.064608" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:35.063560" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:35.065727" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:35.065223" elapsed="0.000674"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:35.065096" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:35.066836" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:09:35.066381" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:35.066274" elapsed="0.000951"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:35.067398" elapsed="0.000084"/>
</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-19T01:09:35.075516" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T01:09:35.076163" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:35.076526" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:35.070617" elapsed="0.006121"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:34.688057" elapsed="0.388938"/>
</kw>
<msg time="2026-04-19T01:09:35.077327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:34.687092" elapsed="0.390295"/>
</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-19T01:09:34.686225" elapsed="0.391246"/>
</kw>
<msg time="2026-04-19T01:09:35.077512" 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-19T01:09:34.685486" elapsed="0.392073"/>
</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-19T01:09:35.080634" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:09:35.081126" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:35.081419" 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-19T01:09:35.077848" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T01:09:35.081660" level="INFO">${output} = 1</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-19T01:09:34.683644" elapsed="0.398041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:35.082125" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:35.081863" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:35.082212" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:35.082368" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:34.681511" elapsed="0.400883"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:35.082441" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:09:35.082586" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:34.679333" elapsed="0.403278"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:35.083178" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:35.082768" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:34.678142" elapsed="0.405225">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:37.087010" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:37.086277" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:37.088594" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:37.088209" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:37.089795" 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-19T01:09:37.089941" 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-19T01:09:37.089569" elapsed="0.000411"/>
</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-19T01:09:37.095636" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:37.094927" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:37.094554" elapsed="0.001277"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:37.097801" 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-19T01:09:37.098155" 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-19T01:09:37.097197" elapsed="0.001101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:37.100199" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:37.099580" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:37.101948" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:37.101259" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:37.104460" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:37.104538" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:37.104023" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:37.104772" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:37.106023" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:37.400305" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:37.105699" elapsed="0.294758"/>
</kw>
<msg time="2026-04-19T01:09:37.400543" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:37.105338" elapsed="0.295298"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:37.103270" elapsed="0.297659"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:37.402494" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:37.424626" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:37.425175" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:37.425515" 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-19T01:09:37.402083" elapsed="0.023649"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:37.428021" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:37.431361" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:37.430292" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:37.432590" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:37.431942" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:37.431816" elapsed="0.001075"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:37.433712" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T01:09:37.433253" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:37.433140" elapsed="0.001000"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:37.434326" elapsed="0.000085"/>
</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-19T01:09:37.439751" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T01:09:37.440316" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:37.440672" 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-19T01:09:37.436331" elapsed="0.004546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:37.092721" elapsed="0.348392"/>
</kw>
<msg time="2026-04-19T01:09:37.441422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:37.091762" elapsed="0.349719"/>
</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-19T01:09:37.090961" elapsed="0.350602"/>
</kw>
<msg time="2026-04-19T01:09:37.441604" 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-19T01:09:37.090228" elapsed="0.351422"/>
</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-19T01:09:37.444772" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T01:09:37.445316" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:37.445616" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:37.441939" elapsed="0.003827"/>
</kw>
<msg time="2026-04-19T01:09:37.445861" level="INFO">${output} = 1</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-19T01:09:37.088938" elapsed="0.356948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:37.446347" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:37.446093" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:37.446434" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:37.446589" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:37.087611" elapsed="0.359004"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:37.446663" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:09:37.446808" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:37.085401" elapsed="0.361432"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:37.447449" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:37.447040" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:37.084173" elapsed="0.363472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:39.451398" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:39.450567" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:39.453490" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:39.452855" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:39.455045" 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-19T01:09:39.455295" 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-19T01:09:39.454811" elapsed="0.000523"/>
</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-19T01:09:39.461003" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:39.460287" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:39.459897" elapsed="0.001327"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:39.463250" 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-19T01:09:39.463588" 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-19T01:09:39.462612" elapsed="0.001115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:39.465901" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:39.465149" elapsed="0.000961"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:39.467918" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:39.467219" elapsed="0.000800"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:39.470372" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:39.470455" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:39.470084" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:39.470688" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:39.471934" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:39.794930" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:39.471614" elapsed="0.323398"/>
</kw>
<msg time="2026-04-19T01:09:39.795091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:39.471256" elapsed="0.323904"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:39.469291" elapsed="0.326104"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:39.796730" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:39.819581" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:39.820113" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:39.820455" 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-19T01:09:39.796405" elapsed="0.024264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:39.822931" elapsed="0.000863"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:39.826125" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:39.825084" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:39.827216" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:39.826703" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:39.826584" elapsed="0.000922"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:39.828302" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:09:39.827826" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:39.827721" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:39.828826" elapsed="0.000082"/>
</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-19T01:09:39.834509" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T01:09:39.835211" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:39.835566" 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-19T01:09:39.831191" elapsed="0.004581"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:39.458055" elapsed="0.377940"/>
</kw>
<msg time="2026-04-19T01:09:39.836317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:39.457084" elapsed="0.379290"/>
</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-19T01:09:39.456314" elapsed="0.380142"/>
</kw>
<msg time="2026-04-19T01:09:39.836497" 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-19T01:09:39.455564" elapsed="0.380979"/>
</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-19T01:09:39.839584" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:09:39.840070" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:39.840362" 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-19T01:09:39.836830" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T01:09:39.840603" level="INFO">${output} = 1</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-19T01:09:39.454151" elapsed="0.386477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:39.841071" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:39.840802" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:39.841160" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:39.841311" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:39.451925" elapsed="0.389411"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:39.841382" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:39.841526" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:39.449641" elapsed="0.391909"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:39.842207" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:39.841708" elapsed="0.000574">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:39.448535" elapsed="0.393858">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:41.845933" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:41.845201" elapsed="0.000802"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:41.848058" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:41.847429" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:41.849888" 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-19T01:09:41.850145" 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-19T01:09:41.849565" elapsed="0.000641"/>
</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-19T01:09:41.857809" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:41.857321" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:41.855283" elapsed="0.002727"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:41.859461" 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-19T01:09:41.859705" 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-19T01:09:41.858990" elapsed="0.000817"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:41.861406" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:41.860829" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:41.863217" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:41.862495" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:41.865673" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:41.865751" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:41.865391" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:41.865991" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:41.867275" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:42.179318" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:41.866921" elapsed="0.312532"/>
</kw>
<msg time="2026-04-19T01:09:42.179532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:41.866560" elapsed="0.313053"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:41.864589" elapsed="0.315293"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:42.181385" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:42.203578" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:42.204100" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:42.204430" 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-19T01:09:42.180978" elapsed="0.023671"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:42.206842" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:42.209873" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:42.208916" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:42.211023" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:42.210546" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:42.210427" elapsed="0.000908"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:42.212107" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:09:42.211645" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:42.211541" elapsed="0.000912"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:42.212735" elapsed="0.000139"/>
</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-19T01:09:42.259545" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T01:09:42.260192" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:42.260558" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:42.215142" elapsed="0.045648"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:41.853943" elapsed="0.407076"/>
</kw>
<msg time="2026-04-19T01:09:42.261445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:41.852981" elapsed="0.408530"/>
</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-19T01:09:41.851719" elapsed="0.409874"/>
</kw>
<msg time="2026-04-19T01:09:42.261633" 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-19T01:09:41.850556" elapsed="0.411121"/>
</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-19T01:09:42.264709" 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-19T01:09:42.265201" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:42.265497" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:42.261989" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T01:09:42.265738" level="INFO">${output} = 1</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-19T01:09:41.848603" elapsed="0.417160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:42.266242" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:42.265956" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:42.266335" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:09:42.266503" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:41.846487" elapsed="0.420041"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:42.266574" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:09:42.266716" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:41.844338" elapsed="0.422403"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:42.267304" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:42.266893" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:41.843258" elapsed="0.424237">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:44.270896" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:44.270184" elapsed="0.000779"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:44.272846" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:44.272409" elapsed="0.000477"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:44.274082" 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-19T01:09:44.274234" 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-19T01:09:44.273834" elapsed="0.000439"/>
</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-19T01:09:44.280225" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:44.279518" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:44.279438" elapsed="0.000990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:44.282589" 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-19T01:09:44.282946" 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-19T01:09:44.281898" elapsed="0.001240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:44.285147" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:44.284590" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:44.287014" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:44.286318" elapsed="0.000927"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:44.289508" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:44.289584" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:44.289225" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:44.289818" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:44.291255" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:44.605974" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:44.290765" elapsed="0.315389"/>
</kw>
<msg time="2026-04-19T01:09:44.606249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:44.290401" elapsed="0.315944"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:44.288451" elapsed="0.318183"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:44.608346" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:44.631331" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:44.631870" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:44.632265" 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-19T01:09:44.607739" elapsed="0.024743"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:44.634750" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:44.638140" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:44.637002" elapsed="0.001381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:44.639275" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:44.638737" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:44.638610" elapsed="0.001020"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:44.640445" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T01:09:44.639959" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:44.639852" elapsed="0.000869"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:44.640800" 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-19T01:09:44.645699" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:44.646297" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:44.646656" 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-19T01:09:44.642268" elapsed="0.004595"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:44.277441" elapsed="0.369700"/>
</kw>
<msg time="2026-04-19T01:09:44.647444" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:44.276120" elapsed="0.371400"/>
</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-19T01:09:44.275276" elapsed="0.372330"/>
</kw>
<msg time="2026-04-19T01:09:44.647648" 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-19T01:09:44.274505" elapsed="0.373189"/>
</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-19T01:09:44.650836" 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-19T01:09:44.651334" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:44.651671" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:44.648078" elapsed="0.003744"/>
</kw>
<msg time="2026-04-19T01:09:44.651916" level="INFO">${output} = 1</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-19T01:09:44.273227" elapsed="0.378714"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:44.652387" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:44.652135" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:44.652475" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:09:44.652627" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:44.271435" elapsed="0.381218"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:44.652701" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:44.652846" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:44.269361" elapsed="0.383510"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:44.653600" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:44.653195" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:44.268334" elapsed="0.385455">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:46.657610" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:46.656603" elapsed="0.001080"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:46.659744" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:46.659215" elapsed="0.000567"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:46.660905" 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-19T01:09:46.661066" 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-19T01:09:46.660683" elapsed="0.000422"/>
</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-19T01:09:46.666867" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:46.666205" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:46.666126" elapsed="0.000960"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:46.669103" 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-19T01:09:46.669446" 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-19T01:09:46.668469" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:46.671783" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:46.671092" elapsed="0.000803"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:46.673616" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:46.672884" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:46.676058" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:46.676137" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:46.675760" 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-19T01:09:46.676371" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:46.677700" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:47.004996" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:46.677373" elapsed="0.327793"/>
</kw>
<msg time="2026-04-19T01:09:47.005252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:46.676994" elapsed="0.328347"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:46.674981" elapsed="0.330646"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:47.007333" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:47.030359" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:47.030879" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:47.031266" 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-19T01:09:47.006750" elapsed="0.024732"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:47.033715" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:47.036126" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:47.035484" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:47.036828" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:47.036496" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:47.036415" elapsed="0.000597"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:47.037522" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:09:47.037239" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:47.037171" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:47.037851" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:47.044001" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:47.044662" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:47.045022" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:47.039836" elapsed="0.005411"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:46.663916" elapsed="0.381553"/>
</kw>
<msg time="2026-04-19T01:09:47.045777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:46.662948" elapsed="0.382888"/>
</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-19T01:09:46.662058" elapsed="0.383859"/>
</kw>
<msg time="2026-04-19T01:09:47.045958" 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-19T01:09:46.661328" elapsed="0.384675"/>
</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-19T01:09:47.049121" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:47.049605" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:47.049902" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:47.046321" elapsed="0.003747"/>
</kw>
<msg time="2026-04-19T01:09:47.050222" level="INFO">${output} = 1</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-19T01:09:46.660109" elapsed="0.390140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:47.050711" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:47.050454" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:47.050798" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:47.050948" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:46.658181" elapsed="0.392792"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:47.051020" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T01:09:47.051185" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:46.655749" elapsed="0.395461"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:47.051761" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:47.051367" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:46.654686" elapsed="0.397262">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:49.055586" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:49.054774" elapsed="0.000885"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:49.057912" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:49.057170" elapsed="0.000806"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:49.059786" 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-19T01:09:49.060012" 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-19T01:09:49.059459" elapsed="0.000645"/>
</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-19T01:09:49.065216" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:49.064721" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:49.064658" elapsed="0.000718"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:49.066831" 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-19T01:09:49.067096" 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-19T01:09:49.066378" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:49.068739" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:49.068189" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:49.070588" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:49.069851" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:49.073020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:49.073117" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:49.072725" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:49.073371" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:49.074673" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:49.398914" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:49.074339" elapsed="0.324852"/>
</kw>
<msg time="2026-04-19T01:09:49.399278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:49.073943" elapsed="0.325426"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:49.071882" elapsed="0.327771"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:49.401323" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:49.424571" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:49.425154" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:49.425523" 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-19T01:09:49.400808" elapsed="0.024925"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:49.427958" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:49.431340" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:49.430204" elapsed="0.001411"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:49.432649" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:49.431991" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:49.431866" elapsed="0.001085"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:49.433820" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T01:09:49.433400" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:49.433254" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:49.434314" elapsed="0.000057"/>
</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-19T01:09:49.441787" elapsed="0.000606"/>
</kw>
<kw name="Open 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-19T01:09:49.442750" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:49.443321" elapsed="0.000154"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:49.436551" elapsed="0.007084"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:49.063081" elapsed="0.380884"/>
</kw>
<msg time="2026-04-19T01:09:49.444447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:49.062355" elapsed="0.382182"/>
</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-19T01:09:49.061779" elapsed="0.382880"/>
</kw>
<msg time="2026-04-19T01:09:49.444723" 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-19T01:09:49.060463" elapsed="0.384330"/>
</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-19T01:09:49.448249" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:09:49.448729" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:49.449046" 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-19T01:09:49.445290" elapsed="0.003929"/>
</kw>
<msg time="2026-04-19T01:09:49.449315" level="INFO">${output} = 1</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-19T01:09:49.058508" elapsed="0.390832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:49.449782" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:49.449533" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:49.449870" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:49.450065" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:49.056164" elapsed="0.393930"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:49.450142" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:09:49.450293" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:49.053920" elapsed="0.396398"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:49.450948" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:49.450543" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:49.052762" elapsed="0.398421">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:51.454735" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:51.453967" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:51.456965" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:51.456430" elapsed="0.000574"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:51.458170" 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-19T01:09:51.458315" 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-19T01:09:51.457921" elapsed="0.000431"/>
</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-19T01:09:51.464330" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:51.463612" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:51.463532" elapsed="0.000995"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:51.467460" 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-19T01:09:51.468251" 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-19T01:09:51.466183" elapsed="0.002343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:51.470360" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:51.469728" elapsed="0.000742"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:51.472159" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:51.471442" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:51.474661" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:51.474740" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:51.474366" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:51.474976" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:51.476296" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:51.844892" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:51.475924" elapsed="0.369239"/>
</kw>
<msg time="2026-04-19T01:09:51.845298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:51.475558" elapsed="0.369862"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:51.473484" elapsed="0.372333"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:51.847856" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:51.871611" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:51.872220" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:51.872553" 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-19T01:09:51.847331" elapsed="0.025432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:51.874987" elapsed="0.000953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:51.878553" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:51.877539" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:51.879687" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:51.879181" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:51.879019" elapsed="0.000965"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:51.880902" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:09:51.880392" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:51.880281" elapsed="0.000835"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:51.881198" 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-19T01:09:51.885947" 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-19T01:09:51.886543" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:51.886907" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:51.882555" elapsed="0.004578"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:51.461176" elapsed="0.426191"/>
</kw>
<msg time="2026-04-19T01:09:51.887683" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:51.460077" elapsed="0.427663"/>
</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-19T01:09:51.459312" elapsed="0.428511"/>
</kw>
<msg time="2026-04-19T01:09:51.887864" 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-19T01:09:51.458573" elapsed="0.429338"/>
</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-19T01:09:51.891078" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:09:51.891563" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:51.891862" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:51.888239" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T01:09:51.892151" level="INFO">${output} = 1</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-19T01:09:51.457341" elapsed="0.434835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:51.892612" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:51.892361" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:51.892701" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:51.892858" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:51.455300" elapsed="0.437584"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:51.892933" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:51.893142" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:51.453152" elapsed="0.440016"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:51.893731" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:51.893329" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:51.451991" elapsed="0.441941">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:53.897342" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:53.896585" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:53.899627" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:53.898942" elapsed="0.000745"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:53.900925" 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-19T01:09:53.901095" 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-19T01:09:53.900686" elapsed="0.000449"/>
</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-19T01:09:53.907106" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:53.906369" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:53.905942" elapsed="0.001377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:53.908942" 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-19T01:09:53.909213" 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-19T01:09:53.908482" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:53.910849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:53.910299" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:53.912822" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:53.912117" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:53.915320" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:53.915398" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:53.914990" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:53.915636" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:53.917144" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:54.236458" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:53.916795" elapsed="0.319809"/>
</kw>
<msg time="2026-04-19T01:09:54.236688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:53.916433" elapsed="0.320344"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:53.914214" elapsed="0.322865"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:54.238573" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:54.261449" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:54.261966" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:54.262353" 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-19T01:09:54.238183" elapsed="0.024385"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:54.264894" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:54.268209" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:54.267142" elapsed="0.001304"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:54.269449" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:54.268796" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:54.268671" elapsed="0.001080"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:54.270576" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T01:09:54.270120" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:54.269976" elapsed="0.000988"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:54.271210" elapsed="0.000085"/>
</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-19T01:09:54.278575" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:09:54.279168" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:54.279533" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:54.274322" elapsed="0.005424"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:53.903982" elapsed="0.375990"/>
</kw>
<msg time="2026-04-19T01:09:54.280511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:53.902956" elapsed="0.377617"/>
</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-19T01:09:53.902162" elapsed="0.378496"/>
</kw>
<msg time="2026-04-19T01:09:54.280700" 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-19T01:09:53.901373" elapsed="0.379374"/>
</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-19T01:09:54.283742" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T01:09:54.284276" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:54.284568" 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-19T01:09:54.281057" elapsed="0.003658"/>
</kw>
<msg time="2026-04-19T01:09:54.284806" level="INFO">${output} = 1</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-19T01:09:53.900075" elapsed="0.384756"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:54.285274" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:54.285008" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:54.285361" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:54.285511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:53.898009" elapsed="0.387527"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:54.285583" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:54.285728" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:53.895758" elapsed="0.389994"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:54.286317" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:54.285907" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:53.894695" elapsed="0.391808">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:56.290205" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:56.289378" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:56.292319" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:56.291678" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:56.294187" 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-19T01:09:56.294562" 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-19T01:09:56.293813" elapsed="0.000810"/>
</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-19T01:09:56.301090" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:56.300599" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:56.300306" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:56.302668" 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-19T01:09:56.302910" 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-19T01:09:56.302237" elapsed="0.000773"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:56.304591" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:56.304051" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:56.306478" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:56.305716" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:56.308831" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:56.308909" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:56.308539" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:56.309282" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:56.310576" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:56.632421" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:56.310249" elapsed="0.322324"/>
</kw>
<msg time="2026-04-19T01:09:56.632659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:56.309838" elapsed="0.322912"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:56.307769" elapsed="0.325293"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:56.634611" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:56.657502" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:56.658123" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:56.658466" 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-19T01:09:56.634214" elapsed="0.024463"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:56.660971" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:56.664308" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:56.663299" elapsed="0.001241"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:56.665432" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:56.664890" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:56.664765" elapsed="0.001015"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:56.666599" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:09:56.666145" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:56.666003" elapsed="0.000964"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:56.667147" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:56.674097" 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-19T01:09:56.674719" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:56.675145" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:56.668525" elapsed="0.006835"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:56.298976" elapsed="0.376606"/>
</kw>
<msg time="2026-04-19T01:09:56.675901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:56.297407" elapsed="0.378565"/>
</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-19T01:09:56.296196" elapsed="0.379895"/>
</kw>
<msg time="2026-04-19T01:09:56.676136" 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-19T01:09:56.294979" elapsed="0.381203"/>
</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-19T01:09:56.679283" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:09:56.679755" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:56.680106" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:56.676475" elapsed="0.003781"/>
</kw>
<msg time="2026-04-19T01:09:56.680347" level="INFO">${output} = 1</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-19T01:09:56.292863" elapsed="0.387508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:56.680808" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:56.680559" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:56.680896" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:56.681064" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:56.290731" elapsed="0.390359"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:56.681136" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:56.681278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:56.288467" elapsed="0.392836"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:56.681867" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:56.681456" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:56.287362" elapsed="0.394709">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:09:58.685756" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:09:58.684973" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:09:58.687896" level="INFO">${member_ip} = 10.30.171.206</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-19T01:09:58.687286" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:58.689559" 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-19T01:09:58.689701" 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-19T01:09:58.689337" elapsed="0.000401"/>
</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-19T01:09:58.695104" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:09:58.694449" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:58.694369" elapsed="0.001025"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:58.697724" 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-19T01:09:58.698112" 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-19T01:09:58.696772" elapsed="0.001477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:58.700370" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:58.699593" elapsed="0.000931"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:09:58.702451" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:09:58.701692" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:09:58.704798" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:09:58.704876" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:09:58.704502" 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-19T01:09:58.705127" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:09:58.706525" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:09:59.036884" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:09:58.706199" elapsed="0.330863"/>
</kw>
<msg time="2026-04-19T01:09:59.037155" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:58.705683" elapsed="0.331572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:09:58.703731" elapsed="0.333814"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:09:59.039087" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:09:59.061923" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:09:59.062532" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:09:59.062892" 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-19T01:09:59.038655" elapsed="0.024519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:59.065653" elapsed="0.000992"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:59.069157" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:59.068014" elapsed="0.001396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:59.070360" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:09:59.069784" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:59.069651" elapsed="0.001025"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:09:59.071655" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T01:09:59.071020" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T01:09:59.070903" elapsed="0.001174"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:09:59.072276" elapsed="0.000090"/>
</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-19T01:09:59.077773" 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-19T01:09:59.078342" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:59.078703" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:09:59.074299" elapsed="0.004617"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:09:58.692421" elapsed="0.386784"/>
</kw>
<msg time="2026-04-19T01:09:59.079584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:09:58.691467" elapsed="0.388181"/>
</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-19T01:09:58.690697" elapsed="0.389036"/>
</kw>
<msg time="2026-04-19T01:09:59.079774" 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-19T01:09:58.689961" elapsed="0.389861"/>
</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-19T01:09:59.082801" 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-19T01:09:59.083396" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:09:59.083692" 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-19T01:09:59.080136" elapsed="0.003703"/>
</kw>
<msg time="2026-04-19T01:09:59.083931" level="INFO">${output} = 1</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-19T01:09:58.688479" elapsed="0.395477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:09:59.084400" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:09:59.084151" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:09:59.084488" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:09:59.084671" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:09:58.686329" elapsed="0.398369"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:09:59.084745" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:09:59.084891" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:09:58.684019" elapsed="0.400898"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:09:59.085483" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:09:59.085090" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:09:58.682883" elapsed="0.402786">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:01.089161" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:01.088394" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:01.091309" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:01.090642" elapsed="0.000728"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:01.092782" 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-19T01:10:01.092925" 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-19T01:10:01.092563" elapsed="0.000400"/>
</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-19T01:10:01.098398" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:01.097747" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:01.097671" elapsed="0.000918"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:01.100891" 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-19T01:10:01.101269" 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-19T01:10:01.099947" elapsed="0.001462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:01.103520" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:01.102747" elapsed="0.000962"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:01.105628" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:01.104858" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:01.107987" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:01.108083" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:01.107702" 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-19T01:10:01.108322" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:01.109746" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:01.417643" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:09:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:01.109421" elapsed="0.308383"/>
</kw>
<msg time="2026-04-19T01:10:01.417891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:01.108876" elapsed="0.309107"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:01.106909" elapsed="0.311383"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:01.419828" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:01.442511" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:01.443006" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:01.443414" 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-19T01:10:01.419398" elapsed="0.024263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:01.445907" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:01.448810" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:01.448191" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:01.449613" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:01.449275" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:01.449181" 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-19T01:10:01.450318" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:10:01.450007" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:01.449939" elapsed="0.000609"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:01.450661" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:01.457524" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T01:10:01.458310" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:01.458805" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:01.452559" elapsed="0.006564"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:01.095844" elapsed="0.363624"/>
</kw>
<msg time="2026-04-19T01:10:01.459903" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:01.094867" elapsed="0.365115"/>
</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-19T01:10:01.094118" elapsed="0.366037"/>
</kw>
<msg time="2026-04-19T01:10:01.460207" 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-19T01:10:01.093203" elapsed="0.367051"/>
</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-19T01:10:01.463333" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:10:01.463833" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:01.464165" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:01.460621" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T01:10:01.464410" level="INFO">${output} = 1</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-19T01:10:01.091905" elapsed="0.372531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:01.464866" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:01.464615" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:01.464956" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:01.465191" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:01.089690" elapsed="0.375528"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:01.465267" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:01.465414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:01.087531" elapsed="0.377909"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:01.466091" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:01.465673" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:01.086496" elapsed="0.379783">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:03.469855" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:03.469119" elapsed="0.000807"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:03.471702" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:03.471321" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:03.472865" 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-19T01:10:03.473008" 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-19T01:10:03.472643" elapsed="0.000422"/>
</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-19T01:10:03.478464" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:03.477794" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:03.477717" elapsed="0.000946"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:03.480988" 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-19T01:10:03.481369" 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-19T01:10:03.480053" elapsed="0.001508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:03.483709" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:03.483069" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:03.485806" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:03.485020" elapsed="0.000888"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:03.488259" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:03.488338" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:03.487957" 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-19T01:10:03.488578" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:03.490102" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:03.804560" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:03.489754" elapsed="0.314959"/>
</kw>
<msg time="2026-04-19T01:10:03.804799" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:03.489384" elapsed="0.315505"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:03.487179" elapsed="0.318014"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:03.806703" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:03.829472" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:03.829992" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:03.830430" 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-19T01:10:03.806311" elapsed="0.024338"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:03.832910" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:03.836219" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:03.835207" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:03.837356" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:03.836819" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:03.836692" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:03.838478" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T01:10:03.837969" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:03.837862" elapsed="0.000976"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:03.839017" elapsed="0.000267"/>
</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-19T01:10:03.846162" 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-19T01:10:03.846730" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:03.847130" 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-19T01:10:03.842214" elapsed="0.005131"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:03.475835" elapsed="0.371731"/>
</kw>
<msg time="2026-04-19T01:10:03.847866" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:03.474788" elapsed="0.373137"/>
</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-19T01:10:03.474008" elapsed="0.374001"/>
</kw>
<msg time="2026-04-19T01:10:03.848087" 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-19T01:10:03.473290" elapsed="0.374845"/>
</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-19T01:10:03.851268" 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-19T01:10:03.851761" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:03.852145" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:03.848436" elapsed="0.003895"/>
</kw>
<msg time="2026-04-19T01:10:03.852488" level="INFO">${output} = 1</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-19T01:10:03.472062" elapsed="0.380452"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:03.852946" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:03.852694" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:03.853052" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:10:03.853212" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:03.470417" elapsed="0.382821"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:03.853286" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:03.853433" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:03.468274" elapsed="0.385184"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:03.854013" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:03.853617" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:03.467204" elapsed="0.387007">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:05.858537" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:05.857737" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:05.860695" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:05.860292" elapsed="0.000442"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:05.861907" 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-19T01:10:05.862080" 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-19T01:10:05.861670" elapsed="0.000458"/>
</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-19T01:10:05.868430" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:05.867395" elapsed="0.001119"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:05.867286" elapsed="0.001290"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:05.870070" 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-19T01:10:05.870325" 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-19T01:10:05.869592" elapsed="0.000840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:05.872138" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:05.871456" elapsed="0.000797"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:05.873999" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:05.873268" elapsed="0.000911"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:05.876570" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:05.876649" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:05.876257" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:05.876901" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:05.878425" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:06.205742" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:05.877871" elapsed="0.328189"/>
</kw>
<msg time="2026-04-19T01:10:06.206177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:05.877491" elapsed="0.328802"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:05.875381" elapsed="0.331291"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:06.208797" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:06.231409" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:06.231906" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:06.232314" 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-19T01:10:06.208233" elapsed="0.024302"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:06.234855" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:06.238279" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:06.237223" elapsed="0.001286"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:06.239397" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:06.238855" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:06.238730" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:06.240475" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:10:06.239999" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:06.239894" elapsed="0.000923"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:06.240988" elapsed="0.000181"/>
</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-19T01:10:06.246698" 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-19T01:10:06.247268" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:06.247629" 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-19T01:10:06.243262" elapsed="0.004573"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:05.865148" elapsed="0.382926"/>
</kw>
<msg time="2026-04-19T01:10:06.248385" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:05.863981" elapsed="0.384463"/>
</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-19T01:10:05.863194" elapsed="0.385332"/>
</kw>
<msg time="2026-04-19T01:10:06.248567" 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-19T01:10:05.862403" elapsed="0.386210"/>
</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-19T01:10:06.251728" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:10:06.252229" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:06.252528" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:06.248908" elapsed="0.003768"/>
</kw>
<msg time="2026-04-19T01:10:06.252767" level="INFO">${output} = 1</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-19T01:10:05.861072" elapsed="0.391720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:06.253252" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:06.252971" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:06.253341" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T01:10:06.253510" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:05.859171" elapsed="0.394364"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:06.253582" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:06.253725" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:05.856636" elapsed="0.397113"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:06.254446" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:06.253959" elapsed="0.000562">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:05.855178" elapsed="0.399453">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:08.258213" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:08.257448" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:08.260397" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:08.259749" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:08.262261" 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-19T01:10:08.262536" 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-19T01:10:08.261897" elapsed="0.000708"/>
</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-19T01:10:08.271592" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:08.270717" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:08.270085" elapsed="0.001705"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:08.273814" 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-19T01:10:08.274180" 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-19T01:10:08.273201" elapsed="0.001119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:08.276270" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:08.275644" elapsed="0.000736"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:08.278074" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:08.277359" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:08.280710" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:08.280788" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:08.280427" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:08.281022" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:08.282291" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:08.622189" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:08.281947" elapsed="0.340399"/>
</kw>
<msg time="2026-04-19T01:10:08.622433" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:08.281589" elapsed="0.340938"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:08.279415" elapsed="0.343400"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:08.624371" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:08.647724" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:08.648446" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:08.648917" 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-19T01:10:08.623929" elapsed="0.025372"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:08.652203" elapsed="0.001117"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:08.655618" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:08.654765" elapsed="0.001055"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:08.656564" elapsed="0.000057"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:08.656137" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:08.656004" elapsed="0.000829"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:08.657627" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T01:10:08.657236" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:08.657023" elapsed="0.000840"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:08.657973" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:08.664604" 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-19T01:10:08.665251" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:08.665642" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:08.659893" elapsed="0.005960"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:08.267105" elapsed="0.398990"/>
</kw>
<msg time="2026-04-19T01:10:08.666408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:08.265496" elapsed="0.400978"/>
</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-19T01:10:08.264180" elapsed="0.402377"/>
</kw>
<msg time="2026-04-19T01:10:08.666599" 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-19T01:10:08.262965" elapsed="0.403681"/>
</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-19T01:10:08.669793" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:10:08.670290" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:08.670584" 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-19T01:10:08.666948" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T01:10:08.670823" level="INFO">${output} = 1</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-19T01:10:08.260942" elapsed="0.409906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:08.671315" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:08.671063" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:08.671403" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:10:08.671558" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:08.258794" elapsed="0.412790"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:08.671631" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:08.671776" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:08.256586" elapsed="0.415215"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:08.672371" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:08.671958" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:08.255524" elapsed="0.417031">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:10.674937" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:10.674450" elapsed="0.000533"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:10.676426" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:10.676021" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:10.677591" 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-19T01:10:10.677734" 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-19T01:10:10.677371" elapsed="0.000400"/>
</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-19T01:10:10.683437" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:10.682726" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:10.682357" elapsed="0.001277"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:10.685314" 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-19T01:10:10.685557" 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-19T01:10:10.684853" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:10.687320" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:10.686745" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:10.689148" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:10.688431" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:10.691613" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:10.691691" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:10.691298" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:10.691930" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:10.693211" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:11.016801" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:10.692866" elapsed="0.324074"/>
</kw>
<msg time="2026-04-19T01:10:11.017022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:10.692504" elapsed="0.324624"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:10.690515" elapsed="0.326888"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:11.018869" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:11.041717" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:11.042270" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:11.042608" 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-19T01:10:11.018486" elapsed="0.024335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:11.045143" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:11.048290" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:11.047284" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:11.049577" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:11.048867" elapsed="0.000888"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:11.048743" elapsed="0.001136"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:11.050704" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:10:11.050246" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:11.050135" elapsed="0.001075"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:11.051395" elapsed="0.000086"/>
</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-19T01:10:11.058575" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:11.059193" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:11.059549" 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-19T01:10:11.053332" elapsed="0.006424"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:10.680489" elapsed="0.379524"/>
</kw>
<msg time="2026-04-19T01:10:11.060341" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:10.679533" elapsed="0.380870"/>
</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-19T01:10:10.678732" elapsed="0.381752"/>
</kw>
<msg time="2026-04-19T01:10:11.060524" 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-19T01:10:10.677994" elapsed="0.382574"/>
</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-19T01:10:11.063608" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:10:11.064117" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:11.064413" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:11.060854" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T01:10:11.064652" level="INFO">${output} = 1</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-19T01:10:10.676769" elapsed="0.387908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:11.065125" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:11.064857" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:11.065212" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:11.065363" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:10.675441" elapsed="0.389946"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:11.065433" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:11.065573" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:10.673902" elapsed="0.391695"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:11.066157" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:11.065752" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:10.673194" elapsed="0.393146">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:13.069844" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:13.069074" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:13.071960" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:13.071359" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:13.073844" 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-19T01:10:13.074267" 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-19T01:10:13.073508" elapsed="0.000821"/>
</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-19T01:10:13.080468" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:13.079965" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:13.079907" elapsed="0.000709"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:13.082446" 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-19T01:10:13.082705" 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-19T01:10:13.081641" elapsed="0.001165"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:13.084395" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:13.083774" elapsed="0.000729"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:13.086206" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:13.085468" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:13.088932" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:13.089012" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:13.088455" elapsed="0.000599"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:13.089272" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:13.090634" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:13.457211" 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 Sun Apr 19 01:09:15 UTC 2026

  System load:  0.15               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:13.090299" elapsed="0.367062"/>
</kw>
<msg time="2026-04-19T01:10:13.457446" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:13.089912" elapsed="0.367621"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:13.087515" elapsed="0.370294"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:13.459323" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:13.482586" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:13.482903" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:13.483155" 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-19T01:10:13.458907" elapsed="0.024383"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:13.484687" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:13.486725" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:13.486122" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:13.487446" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:13.487119" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:13.487016" 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-19T01:10:13.488166" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:10:13.487839" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:13.487770" elapsed="0.000621"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:13.488501" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:13.495100" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T01:10:13.495734" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:13.496195" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:13.490495" 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-19T01:10:13.078585" elapsed="0.418052"/>
</kw>
<msg time="2026-04-19T01:10:13.496945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:13.077106" elapsed="0.419902"/>
</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-19T01:10:13.075855" elapsed="0.421253"/>
</kw>
<msg time="2026-04-19T01:10:13.497151" 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-19T01:10:13.074683" elapsed="0.422515"/>
</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-19T01:10:13.500288" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:13.500773" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:13.501087" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:13.497514" elapsed="0.003724"/>
</kw>
<msg time="2026-04-19T01:10:13.501333" level="INFO">${output} = 1</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-19T01:10:13.072536" elapsed="0.428822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:13.501857" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:13.501603" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:13.501945" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:10:13.502121" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:13.070408" elapsed="0.431739"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:13.502194" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:13.502341" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:13.068243" elapsed="0.434122"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:13.502928" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:13.502524" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:13.067206" elapsed="0.435935">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:15.507509" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:15.506563" elapsed="0.001034"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:15.509871" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:15.509486" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:15.510963" 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-19T01:10:15.511115" 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-19T01:10:15.510746" elapsed="0.000405"/>
</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-19T01:10:15.515488" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:15.514993" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:15.514937" elapsed="0.000783"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:15.517486" 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-19T01:10:15.517732" 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-19T01:10:15.516743" elapsed="0.001091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:15.519385" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:15.518807" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:15.521297" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:15.520482" elapsed="0.000910"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:15.523642" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:15.523720" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:15.523343" 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-19T01:10:15.523956" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:15.525369" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:16.093826" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:15.524933" elapsed="0.569044"/>
</kw>
<msg time="2026-04-19T01:10:16.094079" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:15.524534" elapsed="0.569636"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:15.522574" elapsed="0.571878"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:16.095930" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:16.118986" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:16.119518" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:16.119852" 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-19T01:10:16.095540" elapsed="0.024560"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:16.122321" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:16.125540" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:16.124576" elapsed="0.001192"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:16.126648" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:16.126146" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:16.125990" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:16.127745" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:10:16.127289" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:16.127184" elapsed="0.001011"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:16.128371" elapsed="0.000126"/>
</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-19T01:10:16.133886" 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-19T01:10:16.134447" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:16.134806" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:16.130445" elapsed="0.004568"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:15.513586" elapsed="0.621732"/>
</kw>
<msg time="2026-04-19T01:10:16.135684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:15.512747" elapsed="0.622996"/>
</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-19T01:10:15.512049" elapsed="0.623778"/>
</kw>
<msg time="2026-04-19T01:10:16.135869" 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-19T01:10:15.511362" elapsed="0.624554"/>
</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-19T01:10:16.138921" 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-19T01:10:16.139493" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:16.139787" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:16.136229" elapsed="0.003707"/>
</kw>
<msg time="2026-04-19T01:10:16.140031" level="INFO">${output} = 1</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-19T01:10:15.510213" elapsed="0.629858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:16.140515" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:16.140253" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:16.140614" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:16.140768" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:15.508220" elapsed="0.632573"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:16.140840" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:16.140986" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:15.505477" elapsed="0.635533"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:16.141580" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:16.141183" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:15.504127" elapsed="0.637641">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:18.145304" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:18.144533" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:18.147452" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:18.146772" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:18.149302" 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-19T01:10:18.149533" 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-19T01:10:18.148942" elapsed="0.000652"/>
</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-19T01:10:18.154560" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:18.154087" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:18.154013" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:18.156395" 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-19T01:10:18.156638" 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-19T01:10:18.155685" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:18.158280" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:18.157702" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:18.160164" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:18.159451" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:18.162647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:18.162726" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:18.162364" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:18.162959" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:18.164263" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:18.478364" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:18.163919" elapsed="0.314605"/>
</kw>
<msg time="2026-04-19T01:10:18.478619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:18.163556" elapsed="0.315159"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:18.161465" elapsed="0.317519"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:18.480555" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:18.503289" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:18.503798" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:18.504183" 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-19T01:10:18.480120" elapsed="0.024276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:18.506724" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:18.509934" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:18.509140" elapsed="0.000970"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:18.510700" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:18.510354" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:18.510263" elapsed="0.000629"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:18.511419" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T01:10:18.511129" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:18.511057" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:18.511785" elapsed="0.000055"/>
</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-19T01:10:18.518513" 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-19T01:10:18.519095" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:18.519463" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:18.513900" elapsed="0.005781"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:18.152695" elapsed="0.367214"/>
</kw>
<msg time="2026-04-19T01:10:18.520330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:18.151979" elapsed="0.368416"/>
</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-19T01:10:18.151201" elapsed="0.369280"/>
</kw>
<msg time="2026-04-19T01:10:18.520524" 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-19T01:10:18.149947" elapsed="0.370625"/>
</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-19T01:10:18.523714" 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-19T01:10:18.524217" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:18.524517" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:18.520965" elapsed="0.003733"/>
</kw>
<msg time="2026-04-19T01:10:18.524797" level="INFO">${output} = 1</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-19T01:10:18.147994" elapsed="0.376830"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:18.525284" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:18.525015" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:18.525374" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:18.525530" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:18.145824" elapsed="0.379731"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:18.525605" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:18.525752" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:18.143694" elapsed="0.382082"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:18.526365" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:18.525934" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:18.142626" elapsed="0.383934">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:20.530200" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:20.529425" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:20.532385" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:20.531689" elapsed="0.000759"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:20.534277" 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-19T01:10:20.534509" 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-19T01:10:20.533913" elapsed="0.000657"/>
</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-19T01:10:20.540017" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:20.539259" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:20.539199" elapsed="0.000999"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:20.541668" 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-19T01:10:20.541925" 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-19T01:10:20.541211" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:20.543649" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:20.543086" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:20.545544" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:20.544802" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:20.548128" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:20.548212" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:20.547786" elapsed="0.000452"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:20.548455" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:20.549828" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:20.870494" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:20.549492" elapsed="0.321140"/>
</kw>
<msg time="2026-04-19T01:10:20.870717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:20.549115" elapsed="0.321685"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:20.546910" elapsed="0.324198"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:20.872582" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:20.885226" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:20.885788" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:20.886210" 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-19T01:10:20.872191" elapsed="0.014283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:20.888925" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:20.891359" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:20.890688" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:20.892098" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:20.891739" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:20.891658" elapsed="0.000638"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:20.892802" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:10:20.892506" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:20.892435" elapsed="0.000619"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:20.893202" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:20.899350" 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-19T01:10:20.899907" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:20.900292" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:20.895139" elapsed="0.005370"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:20.537773" elapsed="0.362966"/>
</kw>
<msg time="2026-04-19T01:10:20.901069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:20.537010" elapsed="0.364156"/>
</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-19T01:10:20.536174" elapsed="0.365078"/>
</kw>
<msg time="2026-04-19T01:10:20.901295" 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-19T01:10:20.534926" elapsed="0.366418"/>
</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-19T01:10:20.904450" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:10:20.904944" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:20.905296" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:20.901645" elapsed="0.003807"/>
</kw>
<msg time="2026-04-19T01:10:20.905622" level="INFO">${output} = 1</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-19T01:10:20.532948" elapsed="0.372702"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:20.906119" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:20.905842" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:20.906210" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:10:20.906384" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:20.530734" elapsed="0.375678"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:20.906462" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:10:20.906614" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:20.528553" elapsed="0.378087"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:20.907287" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:20.906801" elapsed="0.000562">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:20.527340" elapsed="0.380135">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:22.910982" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:22.910223" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:22.913123" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:22.912489" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:22.914925" 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-19T01:10:22.915088" 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-19T01:10:22.914669" elapsed="0.000459"/>
</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-19T01:10:22.920816" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:22.920167" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:22.919756" elapsed="0.001255"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:22.922985" 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-19T01:10:22.923255" 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-19T01:10:22.922451" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:22.924886" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:22.924346" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:22.926729" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:22.925990" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:22.929189" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:22.929267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:22.928891" 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-19T01:10:22.929504" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:22.930790" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:23.240074" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:22.930465" elapsed="0.309800"/>
</kw>
<msg time="2026-04-19T01:10:23.240338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:22.930070" elapsed="0.310343"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:22.928116" elapsed="0.312551"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:23.242236" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:23.265114" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:23.265616" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:23.265948" 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-19T01:10:23.241858" elapsed="0.024346"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:23.268442" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:23.271614" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:23.270561" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:23.272373" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:23.272049" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:23.271953" elapsed="0.000604"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:23.273061" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:10:23.272761" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:23.272691" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:23.273398" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:23.279908" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T01:10:23.280462" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:23.280816" 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-19T01:10:23.275375" elapsed="0.005649"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:22.917834" elapsed="0.363433"/>
</kw>
<msg time="2026-04-19T01:10:23.281576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:22.916838" elapsed="0.364795"/>
</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-19T01:10:22.916089" elapsed="0.365627"/>
</kw>
<msg time="2026-04-19T01:10:23.281760" 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-19T01:10:22.915351" elapsed="0.366457"/>
</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-19T01:10:23.284894" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:10:23.285385" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:23.285679" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:23.282117" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T01:10:23.285918" level="INFO">${output} = 1</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-19T01:10:22.913669" elapsed="0.372275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:23.286397" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:23.286139" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:23.286486" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:23.286638" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:22.911541" elapsed="0.375122"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:23.286711" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:23.286857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:22.909350" elapsed="0.377533"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:23.287555" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:23.287148" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:22.908277" elapsed="0.379461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:25.291425" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:25.290595" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:25.293651" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:25.292977" elapsed="0.000735"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:25.295636" 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-19T01:10:25.295865" 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-19T01:10:25.295291" elapsed="0.000636"/>
</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-19T01:10:25.301890" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:25.301398" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:25.301099" elapsed="0.000956"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:25.303583" 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-19T01:10:25.303830" 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-19T01:10:25.303117" elapsed="0.000815"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:25.305532" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:25.304940" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:25.307415" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:25.306678" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:25.309913" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:25.309992" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:25.309625" 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-19T01:10:25.310246" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:25.311569" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:25.670043" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:25.311227" elapsed="0.358983"/>
</kw>
<msg time="2026-04-19T01:10:25.670306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:25.310844" elapsed="0.359572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:25.308758" elapsed="0.361979"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:25.672326" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:25.695329" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:25.695879" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:25.696304" 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-19T01:10:25.671896" elapsed="0.024643"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:25.699555" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:25.702166" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:25.701424" elapsed="0.000926"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:25.703359" elapsed="0.000060"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:25.702684" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:25.702555" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:25.704316" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T01:10:25.703900" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:25.703803" elapsed="0.000881"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:25.704852" elapsed="0.000075"/>
</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-19T01:10:25.714069" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T01:10:25.714697" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:25.715257" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:25.707519" elapsed="0.008032"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:25.299662" elapsed="0.416175"/>
</kw>
<msg time="2026-04-19T01:10:25.716231" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:25.298915" elapsed="0.417391"/>
</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-19T01:10:25.297573" elapsed="0.418819"/>
</kw>
<msg time="2026-04-19T01:10:25.716434" 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-19T01:10:25.296338" elapsed="0.420143"/>
</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-19T01:10:25.719567" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:10:25.720094" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:25.720428" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:25.716784" elapsed="0.003798"/>
</kw>
<msg time="2026-04-19T01:10:25.720675" level="INFO">${output} = 1</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-19T01:10:25.294272" elapsed="0.426428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:25.721207" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:25.720910" elapsed="0.000360"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:25.721323" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:10:25.721483" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:25.291985" elapsed="0.429522"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:25.721553" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:25.721695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:25.289663" elapsed="0.432056"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:25.722412" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:25.721874" elapsed="0.000627">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:25.288565" elapsed="0.434048">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:27.726160" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:27.725394" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:27.728432" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:27.727792" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:27.730307" 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-19T01:10:27.730540" 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-19T01:10:27.729940" elapsed="0.000660"/>
</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-19T01:10:27.737157" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:27.736511" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:27.736436" elapsed="0.000949"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:27.739249" 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-19T01:10:27.739495" 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-19T01:10:27.738570" elapsed="0.001025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:27.741135" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:27.740579" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:27.742924" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:27.742225" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:27.745397" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:27.745476" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:27.745082" 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-19T01:10:27.745714" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:27.747022" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:28.062064" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:27.746694" elapsed="0.315523"/>
</kw>
<msg time="2026-04-19T01:10:28.062302" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:27.746326" elapsed="0.316070"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:27.744314" elapsed="0.318393"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:28.064205" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:28.086828" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:28.087091" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:28.087247" 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-19T01:10:28.063796" elapsed="0.023549"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:28.088359" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:28.089849" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:28.089377" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:28.090457" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:28.090142" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:28.090081" elapsed="0.000514"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:28.090954" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T01:10:28.090746" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:28.090696" elapsed="0.000440"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:28.091217" 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-19T01:10:28.096276" elapsed="0.000742"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:28.097755" elapsed="0.000347"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:28.098308" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:28.092561" elapsed="0.005960"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:27.734589" elapsed="0.364159"/>
</kw>
<msg time="2026-04-19T01:10:28.099137" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:27.733414" elapsed="0.365795"/>
</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-19T01:10:27.732150" elapsed="0.367159"/>
</kw>
<msg time="2026-04-19T01:10:28.099355" 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-19T01:10:27.730955" elapsed="0.368454"/>
</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-19T01:10:28.102622" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:10:28.103115" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:28.103412" 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-19T01:10:28.099751" elapsed="0.003808"/>
</kw>
<msg time="2026-04-19T01:10:28.103650" level="INFO">${output} = 1</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-19T01:10:27.728977" elapsed="0.374698"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:28.104193" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:28.103856" elapsed="0.000381"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:28.104280" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:28.104432" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:27.726834" elapsed="0.377623"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:28.104504" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:28.104648" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:27.724478" elapsed="0.380195"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:28.105273" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:28.104832" elapsed="0.000521">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:27.723434" elapsed="0.382034">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:30.109246" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:30.108382" elapsed="0.000941"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:30.111697" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:30.110871" elapsed="0.000892"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:30.113063" 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-19T01:10:30.113356" 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-19T01:10:30.112770" elapsed="0.000626"/>
</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-19T01:10:30.119214" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:30.118233" elapsed="0.001116"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:30.118150" elapsed="0.001303"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:30.121389" 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-19T01:10:30.121643" 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-19T01:10:30.120662" elapsed="0.001083"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:30.123421" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:30.122742" elapsed="0.000797"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:30.125262" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:30.124536" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:30.127772" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:30.127853" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:30.127475" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:30.128114" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:30.129414" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:30.456764" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:30.129078" elapsed="0.327934"/>
</kw>
<msg time="2026-04-19T01:10:30.457196" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:30.128687" elapsed="0.328665"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:30.126600" elapsed="0.331316"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:30.460620" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:30.484583" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:30.485240" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:30.485591" 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-19T01:10:30.460178" elapsed="0.025626"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:30.488198" elapsed="0.001008"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:30.491463" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:30.490468" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:30.492685" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:30.492178" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:30.491915" elapsed="0.001053"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:30.493763" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T01:10:30.493322" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:30.493214" elapsed="0.001030"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:30.494424" 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-19T01:10:30.500149" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:30.500774" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:30.501152" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:30.496715" elapsed="0.004649"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:30.116157" elapsed="0.385431"/>
</kw>
<msg time="2026-04-19T01:10:30.501906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:30.115175" elapsed="0.386793"/>
</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-19T01:10:30.114386" elapsed="0.387681"/>
</kw>
<msg time="2026-04-19T01:10:30.502110" 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-19T01:10:30.113628" elapsed="0.388530"/>
</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-19T01:10:30.505205" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:10:30.505688" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:30.505986" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:30.502459" elapsed="0.003692"/>
</kw>
<msg time="2026-04-19T01:10:30.506241" level="INFO">${output} = 1</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-19T01:10:30.112170" elapsed="0.394096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:30.506694" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:30.506446" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:30.506780" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:30.506933" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:30.109821" elapsed="0.397137"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:30.507006" elapsed="0.000116"/>
</return>
<msg time="2026-04-19T01:10:30.507268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:30.107464" elapsed="0.399829"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:30.507848" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:30.507451" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:30.106323" elapsed="0.401728">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:32.511826" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:32.511073" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:32.514070" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:32.513421" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:32.516111" 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-19T01:10:32.516352" 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-19T01:10:32.515617" elapsed="0.000797"/>
</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-19T01:10:32.522201" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:32.521522" elapsed="0.000918"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:32.521445" elapsed="0.001083"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:32.524971" 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-19T01:10:32.525322" 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-19T01:10:32.523935" elapsed="0.001490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:32.526965" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:32.526405" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:32.528855" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:32.528155" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:32.531334" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:32.531416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:32.531022" 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-19T01:10:32.531660" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:32.533110" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:32.845827" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:32.532763" elapsed="0.313226"/>
</kw>
<msg time="2026-04-19T01:10:32.846096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:32.532390" elapsed="0.313802"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:32.530231" elapsed="0.316253"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:32.848053" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:32.870873" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:32.871448" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:32.871802" 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-19T01:10:32.847600" elapsed="0.024488"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:32.874589" elapsed="0.000990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:32.877676" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:32.876981" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:32.878448" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:32.878082" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:32.877976" elapsed="0.000667"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:32.879175" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T01:10:32.878855" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:32.878785" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:32.879528" elapsed="0.000056"/>
</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-19T01:10:32.886838" elapsed="0.000627"/>
</kw>
<kw name="Open 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-19T01:10:32.887781" elapsed="0.000307"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:32.888383" elapsed="0.000155"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:32.881699" elapsed="0.007001"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:32.519425" elapsed="0.369626"/>
</kw>
<msg time="2026-04-19T01:10:32.889441" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:32.518439" elapsed="0.371065"/>
</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-19T01:10:32.517648" elapsed="0.371942"/>
</kw>
<msg time="2026-04-19T01:10:32.889633" 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-19T01:10:32.516776" elapsed="0.372905"/>
</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-19T01:10:32.892795" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:32.893304" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:32.893606" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:32.889979" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T01:10:32.893851" level="INFO">${output} = 1</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-19T01:10:32.514648" elapsed="0.379229"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:32.894348" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:32.894082" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:32.894439" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:32.894597" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:32.512432" elapsed="0.382192"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:32.894674" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:32.894824" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:32.510168" elapsed="0.384681"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:32.895463" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:32.895010" elapsed="0.000534">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:32.508947" elapsed="0.386715">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:34.899418" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:34.898614" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:34.901661" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:34.900988" elapsed="0.000735"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:34.903631" 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-19T01:10:34.903880" 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-19T01:10:34.903230" elapsed="0.000709"/>
</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-19T01:10:34.909608" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:34.908847" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:34.908790" elapsed="0.000969"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:34.911258" 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-19T01:10:34.911537" 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-19T01:10:34.910779" elapsed="0.000863"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:34.913379" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:34.912732" elapsed="0.000760"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:34.915390" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:34.914615" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:34.918369" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:34.918452" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:34.917801" elapsed="0.000676"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:34.918698" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:34.920070" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:35.243983" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:34.919711" elapsed="0.324448"/>
</kw>
<msg time="2026-04-19T01:10:35.244266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:34.919319" elapsed="0.325041"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:34.916950" elapsed="0.327696"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:35.246189" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:35.269203" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:35.269703" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:35.270082" 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-19T01:10:35.245746" elapsed="0.024554"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:35.272547" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:35.275793" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:35.274779" 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-19T01:10:35.276961" elapsed="0.000094"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:35.276451" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:35.276323" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:35.278082" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T01:10:35.277606" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:35.277500" elapsed="0.000942"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:35.278619" elapsed="0.000082"/>
</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-19T01:10:35.284838" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T01:10:35.285402" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:35.285760" 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-19T01:10:35.281454" elapsed="0.004515"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:34.907284" elapsed="0.378930"/>
</kw>
<msg time="2026-04-19T01:10:35.286519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:34.906536" elapsed="0.380042"/>
</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-19T01:10:34.905746" elapsed="0.380916"/>
</kw>
<msg time="2026-04-19T01:10:35.286703" 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-19T01:10:34.904363" elapsed="0.382386"/>
</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-19T01:10:35.289880" 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-19T01:10:35.290389" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:35.290709" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:35.287193" elapsed="0.003667"/>
</kw>
<msg time="2026-04-19T01:10:35.290953" level="INFO">${output} = 1</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-19T01:10:34.902251" elapsed="0.388728"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:35.291484" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:35.291233" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:35.291571" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:35.291723" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:34.899974" elapsed="0.391774"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:35.291794" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:35.291940" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:34.897732" elapsed="0.394232"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:35.292555" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:35.292137" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:34.896607" elapsed="0.396134">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:37.296293" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:37.295475" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:37.298449" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:37.297807" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:37.300434" 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-19T01:10:37.300691" 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-19T01:10:37.299990" elapsed="0.000764"/>
</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-19T01:10:37.307683" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:37.307188" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:37.306847" elapsed="0.000984"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:37.309355" 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-19T01:10:37.309610" 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-19T01:10:37.308858" elapsed="0.000856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:37.311324" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:37.310742" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:37.313240" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:37.312460" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:37.315745" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:37.315824" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:37.315452" 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-19T01:10:37.316077" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:37.317491" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:37.625087" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:37.317157" elapsed="0.308088"/>
</kw>
<msg time="2026-04-19T01:10:37.625330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:37.316754" elapsed="0.308667"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:37.314647" elapsed="0.311057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:37.627219" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:37.650383" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:37.650904" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:37.651293" 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-19T01:10:37.626811" elapsed="0.024696"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:37.653967" elapsed="0.000952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:37.657300" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:37.656327" elapsed="0.001124"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:37.658021" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:37.657684" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:37.657601" 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-19T01:10:37.658809" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:10:37.658510" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:37.658440" elapsed="0.000621"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:37.659180" elapsed="0.000058"/>
</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-19T01:10:37.666429" 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-19T01:10:37.667257" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:37.667821" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:37.661209" elapsed="0.007075"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:37.305483" elapsed="0.363044"/>
</kw>
<msg time="2026-04-19T01:10:37.668839" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:37.303896" elapsed="0.365002"/>
</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-19T01:10:37.302416" elapsed="0.366565"/>
</kw>
<msg time="2026-04-19T01:10:37.669022" 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-19T01:10:37.301154" elapsed="0.367932"/>
</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-19T01:10:37.672179" 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-19T01:10:37.672671" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:37.672968" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:37.669394" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T01:10:37.673292" level="INFO">${output} = 1</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-19T01:10:37.299011" elapsed="0.374307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:37.673760" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:37.673504" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:37.673850" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:37.674013" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:37.296826" elapsed="0.377234"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:37.674111" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:10:37.674266" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:37.294624" elapsed="0.379667"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:37.674842" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:37.674449" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:37.293585" elapsed="0.381459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:39.678546" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:39.677740" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:39.680630" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:39.680227" elapsed="0.000440"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:39.681837" 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-19T01:10:39.681981" 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-19T01:10:39.681614" elapsed="0.000403"/>
</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-19T01:10:39.688001" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:39.687332" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:39.686907" elapsed="0.001324"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:39.690353" 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-19T01:10:39.690713" 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-19T01:10:39.689659" elapsed="0.001202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:39.692697" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:39.692134" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:39.694673" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:39.693829" elapsed="0.000963"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:39.697841" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:39.697943" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:39.697471" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:39.698287" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:39.700232" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:40.021694" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:39.699783" elapsed="0.322160"/>
</kw>
<msg time="2026-04-19T01:10:40.022050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:39.699284" elapsed="0.322860"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:39.696440" elapsed="0.326013"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:40.024013" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:40.047086" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:40.047628" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:40.047973" 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-19T01:10:40.023606" elapsed="0.024629"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:40.050751" elapsed="0.000963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:40.054102" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:40.053095" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:40.055463" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:40.054774" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:40.054646" elapsed="0.001122"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:40.056689" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T01:10:40.056204" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:40.056007" elapsed="0.001097"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:40.057294" 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-19T01:10:40.064133" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:10:40.064700" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:40.065095" 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-19T01:10:40.058715" elapsed="0.006627"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:39.684899" elapsed="0.380675"/>
</kw>
<msg time="2026-04-19T01:10:40.065893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:39.683857" elapsed="0.382098"/>
</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-19T01:10:39.683000" elapsed="0.383052"/>
</kw>
<msg time="2026-04-19T01:10:40.066095" 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-19T01:10:39.682266" elapsed="0.383875"/>
</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-19T01:10:40.069280" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:10:40.069759" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:40.070071" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:40.066456" elapsed="0.003767"/>
</kw>
<msg time="2026-04-19T01:10:40.070332" level="INFO">${output} = 1</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-19T01:10:39.680999" elapsed="0.389362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:40.070796" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:40.070545" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:40.070884" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:40.071078" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:39.679204" elapsed="0.391901"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:40.071152" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:10:40.071298" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:39.676901" elapsed="0.394421"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:40.071949" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:40.071535" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:39.675845" elapsed="0.396320">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:42.074609" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:42.074120" elapsed="0.000535"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:42.075942" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:42.075559" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:42.077127" 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-19T01:10:42.077275" 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-19T01:10:42.076886" elapsed="0.000427"/>
</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-19T01:10:42.082869" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:42.082237" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:42.082158" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:42.085445" 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-19T01:10:42.085792" 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-19T01:10:42.084501" elapsed="0.001433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:42.088121" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:42.087337" elapsed="0.000939"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:42.090708" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:42.089730" elapsed="0.001114"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:42.093766" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:42.093845" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:42.093480" 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-19T01:10:42.094096" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:42.095392" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:42.418383" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:42.095022" elapsed="0.323510"/>
</kw>
<msg time="2026-04-19T01:10:42.418628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:42.094661" elapsed="0.324058"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:42.092521" elapsed="0.326478"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:42.420491" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:42.443505" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:42.444251" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:42.444592" 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-19T01:10:42.420109" elapsed="0.024698"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:42.447090" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:42.450335" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:42.449323" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:42.451457" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:42.450911" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:42.450789" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:42.452727" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:10:42.452279" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:42.451959" elapsed="0.001153"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:42.453291" elapsed="0.000087"/>
</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-19T01:10:42.458748" 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-19T01:10:42.459315" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:42.459674" 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-19T01:10:42.455217" elapsed="0.004663"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:42.080193" elapsed="0.379940"/>
</kw>
<msg time="2026-04-19T01:10:42.460439" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:42.079020" elapsed="0.381478"/>
</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-19T01:10:42.078276" elapsed="0.382303"/>
</kw>
<msg time="2026-04-19T01:10:42.460620" 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-19T01:10:42.077537" elapsed="0.383128"/>
</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-19T01:10:42.463646" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:10:42.464230" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:42.464526" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:42.460954" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T01:10:42.464763" level="INFO">${output} = 1</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-19T01:10:42.076312" elapsed="0.388476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:42.465233" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:42.464968" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:42.465319" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:42.465471" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:42.074944" elapsed="0.390552"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:42.465542" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:42.465687" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:42.073581" elapsed="0.392130"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:42.466309" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:42.465866" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:42.072823" elapsed="0.393673">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:44.470114" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:44.469329" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:44.472307" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:44.471905" elapsed="0.000439"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:44.473469" 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-19T01:10:44.473610" 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-19T01:10:44.473240" elapsed="0.000406"/>
</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-19T01:10:44.479008" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:44.478356" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:44.478250" elapsed="0.000975"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:44.481574" 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-19T01:10:44.481922" 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-19T01:10:44.480606" elapsed="0.001481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:44.484045" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:44.483482" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:44.485946" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:44.485224" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:44.488477" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:44.488555" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:44.488181" 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-19T01:10:44.488789" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:44.490239" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:44.808799" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:44.489886" elapsed="0.319015"/>
</kw>
<msg time="2026-04-19T01:10:44.808969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:44.489511" elapsed="0.319550"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:44.487393" elapsed="0.321908"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:44.810694" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:44.833623" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:44.834166" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:44.834506" 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-19T01:10:44.810339" elapsed="0.024380"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:44.837256" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:44.840430" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:44.839465" elapsed="0.001194"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:44.841658" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:44.841052" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:44.840901" elapsed="0.001058"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:44.842794" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:10:44.842324" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:44.842214" elapsed="0.001149"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:44.843542" 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-19T01:10:44.850463" 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-19T01:10:44.851090" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:44.851453" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:44.846521" elapsed="0.005142"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:44.476384" elapsed="0.375505"/>
</kw>
<msg time="2026-04-19T01:10:44.852224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:44.475399" elapsed="0.376885"/>
</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-19T01:10:44.474635" elapsed="0.377732"/>
</kw>
<msg time="2026-04-19T01:10:44.852409" 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-19T01:10:44.473870" elapsed="0.378587"/>
</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-19T01:10:44.855684" 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-19T01:10:44.856187" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:44.856486" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:44.852857" elapsed="0.003778"/>
</kw>
<msg time="2026-04-19T01:10:44.856729" level="INFO">${output} = 1</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-19T01:10:44.472647" elapsed="0.384108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:44.857222" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:44.856945" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:44.857309" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:44.857463" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:44.471079" elapsed="0.386409"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:44.857535" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:44.857679" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:44.468485" elapsed="0.389218"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:44.858272" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:44.857859" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:44.467387" elapsed="0.391070">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:46.861997" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:46.861259" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:46.864138" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:46.863506" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:46.865986" 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-19T01:10:46.866390" 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-19T01:10:46.865655" elapsed="0.000798"/>
</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-19T01:10:46.871961" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:46.871500" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:46.871446" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:46.873786" 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-19T01:10:46.874047" 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-19T01:10:46.873107" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:46.875660" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:46.875117" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:46.877471" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:46.876749" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:46.879893" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:46.879972" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:46.879611" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:46.880223" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:46.881510" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:47.194966" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:46.881180" elapsed="0.313966"/>
</kw>
<msg time="2026-04-19T01:10:47.195235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:46.880779" elapsed="0.314554"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:46.878762" elapsed="0.316899"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:47.197210" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:47.220234" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:47.220746" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:47.221157" 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-19T01:10:47.196786" elapsed="0.024587"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:47.223719" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:47.227237" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:47.225999" elapsed="0.001478"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:47.228408" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:47.227833" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:47.227708" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:47.229562" elapsed="0.000135"/>
</return>
<status status="PASS" start="2026-04-19T01:10:47.229080" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:47.228925" elapsed="0.001020"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:47.230209" elapsed="0.000089"/>
</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-19T01:10:47.237630" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:10:47.238419" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:47.238797" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:47.233479" elapsed="0.005535"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:46.870137" elapsed="0.369138"/>
</kw>
<msg time="2026-04-19T01:10:47.239593" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:46.869314" elapsed="0.370338"/>
</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-19T01:10:46.868000" elapsed="0.371739"/>
</kw>
<msg time="2026-04-19T01:10:47.239782" 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-19T01:10:46.866813" elapsed="0.373017"/>
</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-19T01:10:47.242850" 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-19T01:10:47.243374" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:47.243682" 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-19T01:10:47.240146" elapsed="0.003692"/>
</kw>
<msg time="2026-04-19T01:10:47.243933" level="INFO">${output} = 1</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-19T01:10:46.864679" elapsed="0.379281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:47.244531" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:47.244250" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:47.244622" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:47.244782" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:46.862563" elapsed="0.382245"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:47.244856" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:10:47.245007" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:46.860389" elapsed="0.384660"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:47.245623" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:47.245212" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:46.859346" elapsed="0.386462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:49.249301" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:49.248524" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:49.251462" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:49.250817" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:49.253468" 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-19T01:10:49.253654" 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-19T01:10:49.253083" elapsed="0.000608"/>
</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-19T01:10:49.259635" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:49.258642" elapsed="0.001194"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:49.258566" elapsed="0.001355"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:49.262006" 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-19T01:10:49.262423" 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-19T01:10:49.261344" elapsed="0.001222"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:49.264728" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:49.263932" elapsed="0.000949"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:49.266888" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:49.266184" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:49.269426" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:49.269505" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:49.269129" 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-19T01:10:49.269744" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:49.271012" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:49.584617" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:49.270684" elapsed="0.314082"/>
</kw>
<msg time="2026-04-19T01:10:49.584852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:49.270321" elapsed="0.314621"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:49.268352" elapsed="0.316898"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:49.586732" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:49.609414" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:49.609935" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:49.610318" 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-19T01:10:49.586341" elapsed="0.024194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:49.612843" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:49.616348" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:49.615274" elapsed="0.001362"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:49.617302" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:49.616874" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:49.616789" elapsed="0.000703"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:49.618012" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T01:10:49.617711" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:49.617631" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:49.618398" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:49.625103" 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-19T01:10:49.625859" elapsed="0.000249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:49.626382" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:49.620358" elapsed="0.006316"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:49.256522" elapsed="0.370466"/>
</kw>
<msg time="2026-04-19T01:10:49.627722" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:49.255424" elapsed="0.372367"/>
</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-19T01:10:49.254655" elapsed="0.373224"/>
</kw>
<msg time="2026-04-19T01:10:49.627922" 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-19T01:10:49.253914" elapsed="0.374055"/>
</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-19T01:10:49.630998" elapsed="0.000420"/>
</kw>
<kw name="Open 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-19T01:10:49.631588" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:49.631887" 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-19T01:10:49.628289" elapsed="0.003764"/>
</kw>
<msg time="2026-04-19T01:10:49.632148" level="INFO">${output} = 1</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-19T01:10:49.252127" elapsed="0.380052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:49.632614" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:49.632364" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:49.632702" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:49.632892" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:49.249862" elapsed="0.383062"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:49.632974" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:10:49.633141" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:49.247677" elapsed="0.385489"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:49.633723" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:49.633324" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:49.246629" elapsed="0.387283">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:51.636449" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:51.635918" elapsed="0.000575"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:51.637822" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:51.637386" elapsed="0.000477"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:51.639064" 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-19T01:10:51.639215" 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-19T01:10:51.638812" elapsed="0.000444"/>
</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-19T01:10:51.645278" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:51.644540" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:51.644057" elapsed="0.001436"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:51.647563" 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-19T01:10:51.647928" 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-19T01:10:51.646848" elapsed="0.001242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:51.650515" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:51.649576" elapsed="0.001099"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:51.653326" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:51.652275" elapsed="0.001203"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:51.657262" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:51.657393" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:51.656757" elapsed="0.000675"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:51.657815" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:51.659893" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:51.996007" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:51.659419" elapsed="0.336756"/>
</kw>
<msg time="2026-04-19T01:10:51.996286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:51.658677" elapsed="0.337699"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:51.655511" elapsed="0.341150"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:51.998165" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:52.021123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:52.021726" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:52.022123" 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-19T01:10:51.997754" elapsed="0.024594"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:52.024634" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:52.027908" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:52.026867" elapsed="0.001337"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:52.029121" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:52.028573" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:52.028446" elapsed="0.000982"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:52.030270" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:10:52.029768" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:52.029654" elapsed="0.000985"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:52.030829" elapsed="0.000086"/>
</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-19T01:10:52.036761" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:10:52.037328" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:52.037689" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:52.033344" elapsed="0.004553"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:51.642210" elapsed="0.395930"/>
</kw>
<msg time="2026-04-19T01:10:52.038452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:51.641132" elapsed="0.397376"/>
</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-19T01:10:51.640303" elapsed="0.398287"/>
</kw>
<msg time="2026-04-19T01:10:52.038632" 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-19T01:10:51.639498" elapsed="0.399180"/>
</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-19T01:10:52.041780" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:52.042280" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:52.042577" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:52.039107" elapsed="0.003627"/>
</kw>
<msg time="2026-04-19T01:10:52.042827" level="INFO">${output} = 1</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-19T01:10:51.638207" elapsed="0.404646"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:52.043386" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:52.043129" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:52.043476" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:52.043630" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:51.636782" elapsed="0.406877"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:52.043708" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:10:52.043853" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:51.635375" elapsed="0.408503"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:52.045287" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:52.044340" elapsed="0.001098">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:51.634602" elapsed="0.411077">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:54.049405" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:54.048515" elapsed="0.000961"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:54.051513" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:54.050876" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:54.053667" 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-19T01:10:54.053955" 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-19T01:10:54.053136" elapsed="0.000884"/>
</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-19T01:10:54.063859" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:54.062775" elapsed="0.001322"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:54.062209" elapsed="0.002030"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:54.066871" 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-19T01:10:54.067240" 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-19T01:10:54.066245" elapsed="0.001135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:54.069648" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:54.068828" elapsed="0.000984"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:54.071564" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:54.070824" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:54.074156" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:54.074235" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:54.073849" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:54.074490" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:54.076005" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:54.426467" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:54.075670" elapsed="0.350928"/>
</kw>
<msg time="2026-04-19T01:10:54.426679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:54.075301" elapsed="0.351467"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:54.073040" elapsed="0.354025"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:54.428562" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:54.450969" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:54.451532" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:54.451871" 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-19T01:10:54.428168" elapsed="0.023959"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:54.454341" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:54.457493" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:54.456509" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:54.458604" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:54.458107" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:54.457948" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:54.459751" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T01:10:54.459251" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:54.459139" elapsed="0.000778"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:54.459998" elapsed="0.000103"/>
</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-19T01:10:54.466537" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:10:54.467101" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:54.467473" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:54.461390" elapsed="0.006290"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:54.058773" elapsed="0.409130"/>
</kw>
<msg time="2026-04-19T01:10:54.468280" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:54.057127" elapsed="0.411211"/>
</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-19T01:10:54.055742" elapsed="0.412676"/>
</kw>
<msg time="2026-04-19T01:10:54.468458" 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-19T01:10:54.054467" elapsed="0.414036"/>
</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-19T01:10:54.471500" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:54.471984" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:54.472388" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:54.468799" elapsed="0.003737"/>
</kw>
<msg time="2026-04-19T01:10:54.472747" level="INFO">${output} = 1</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-19T01:10:54.052082" elapsed="0.420691"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:54.473229" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:54.472959" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:54.473315" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:10:54.473463" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:54.049927" elapsed="0.423560"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:54.473532" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:54.473673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:54.047666" elapsed="0.426031"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:54.474259" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:54.473851" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:54.046566" elapsed="0.427877">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:56.477819" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:56.477087" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:56.479953" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:56.479354" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:56.482319" 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-19T01:10:56.482548" 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-19T01:10:56.481912" elapsed="0.000694"/>
</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-19T01:10:56.486545" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:56.486080" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:56.486008" elapsed="0.000673"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:56.488371" 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-19T01:10:56.488615" 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-19T01:10:56.487671" elapsed="0.001044"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:56.490260" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:56.489687" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:56.492123" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:56.491335" elapsed="0.000889"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:56.494507" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:56.494585" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:56.494228" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:56.494816" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:56.496180" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:56.802422" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:56.495745" elapsed="0.306882"/>
</kw>
<msg time="2026-04-19T01:10:56.802706" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:56.495386" elapsed="0.307403"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:56.493410" elapsed="0.309665"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:56.804508" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:56.827277" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:56.827783" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:56.828178" 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-19T01:10:56.804130" elapsed="0.024264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:56.830655" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:56.833866" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:56.832847" elapsed="0.001163"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:56.834576" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:56.834259" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:56.834177" elapsed="0.000582"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:56.835261" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:10:56.834961" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:56.834893" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:56.835590" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:56.842564" elapsed="0.000491"/>
</kw>
<kw name="Open 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-19T01:10:56.843355" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:56.843868" 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-19T01:10:56.837668" elapsed="0.006519"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:56.484676" elapsed="0.359826"/>
</kw>
<msg time="2026-04-19T01:10:56.844928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:56.483954" elapsed="0.361404"/>
</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-19T01:10:56.483426" elapsed="0.362080"/>
</kw>
<msg time="2026-04-19T01:10:56.845566" 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-19T01:10:56.482893" elapsed="0.362741"/>
</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-19T01:10:56.849879" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T01:10:56.850574" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:56.850985" elapsed="0.000251"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:56.846072" elapsed="0.005237"/>
</kw>
<msg time="2026-04-19T01:10:56.851435" level="INFO">${output} = 1</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-19T01:10:56.480667" elapsed="0.370803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:56.852080" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:56.851719" elapsed="0.000425"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:56.852203" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T01:10:56.852414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:56.478410" elapsed="0.374039"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:56.852514" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:10:56.852716" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:56.476246" elapsed="0.376504"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:56.853631" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:56.853066" elapsed="0.000668">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:56.475219" elapsed="0.378670">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:10:58.857812" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:10:58.856645" elapsed="0.001251"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:10:58.860387" level="INFO">${member_ip} = 10.30.171.206</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-19T01:10:58.859692" elapsed="0.000764"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:58.862247" 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-19T01:10:58.862392" 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-19T01:10:58.862001" elapsed="0.000428"/>
</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-19T01:10:58.867947" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:10:58.867316" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:58.867238" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:58.870370" 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-19T01:10:58.870619" 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-19T01:10:58.869575" elapsed="0.001145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:58.872274" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:58.871712" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:10:58.874176" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:58.873396" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:10:58.876549" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:10:58.876627" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:10:58.876267" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:58.876891" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:10:58.878304" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:10:59.229233" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:10:58.877833" elapsed="0.351551"/>
</kw>
<msg time="2026-04-19T01:10:59.229471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:58.877474" elapsed="0.352087"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:10:58.875482" elapsed="0.354361"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:10:59.231349" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:10:59.254093" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:10:59.254604" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:10:59.254935" 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-19T01:10:59.230939" elapsed="0.024250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:59.257485" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:59.260765" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:59.259698" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:59.261888" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:10:59.261386" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:59.261260" elapsed="0.000962"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:10:59.263006" elapsed="0.000321"/>
</return>
<status status="PASS" start="2026-04-19T01:10:59.262546" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-19T01:10:59.262436" elapsed="0.001133"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:10:59.263746" elapsed="0.000086"/>
</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-19T01:10:59.271447" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:10:59.271997" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:59.272391" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:10:59.266746" elapsed="0.005854"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:10:58.865324" elapsed="0.407517"/>
</kw>
<msg time="2026-04-19T01:10:59.273162" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:10:58.864333" elapsed="0.408889"/>
</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-19T01:10:58.863538" elapsed="0.409768"/>
</kw>
<msg time="2026-04-19T01:10:59.273347" 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-19T01:10:58.862652" elapsed="0.410742"/>
</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-19T01:10:59.276503" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:10:59.276989" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:10:59.277301" 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-19T01:10:59.273684" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T01:10:59.277537" level="INFO">${output} = 1</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-19T01:10:58.861117" elapsed="0.416445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:10:59.278103" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:10:59.277746" elapsed="0.000403"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:10:59.278192" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:10:59.278345" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:10:58.858506" elapsed="0.419865"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:10:59.278418" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:10:59.278563" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:10:58.855753" elapsed="0.422834"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:10:59.279175" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:10:59.278744" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:10:58.854685" elapsed="0.424678">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:01.282864" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:01.282127" elapsed="0.000806"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:01.285212" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:01.284551" elapsed="0.000723"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:01.287069" 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-19T01:11:01.287300" 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-19T01:11:01.286706" elapsed="0.000653"/>
</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-19T01:11:01.292169" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:01.291687" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:01.291629" elapsed="0.000681"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:01.294004" 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-19T01:11:01.294271" 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-19T01:11:01.293313" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:01.295912" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:01.295364" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:01.297796" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:01.297086" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:01.300253" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:01.300333" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:01.299866" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:01.300568" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:01.301844" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:01.653220" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:10:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:01.301518" elapsed="0.351906"/>
</kw>
<msg time="2026-04-19T01:11:01.653539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:01.301157" elapsed="0.352510"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:01.299110" elapsed="0.354965"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:01.656073" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:01.679147" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:01.679458" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:01.679660" 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-19T01:11:01.655523" elapsed="0.024272"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:01.681173" elapsed="0.000559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:01.683188" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:01.682522" 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-19T01:11:01.684045" elapsed="0.000054"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:01.683584" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:01.683493" elapsed="0.000798"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:01.684840" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T01:11:01.684525" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:01.684447" elapsed="0.000685"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:01.685260" elapsed="0.000058"/>
</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-19T01:11:01.690889" 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-19T01:11:01.691480" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:01.691857" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:01.687239" elapsed="0.004876"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:01.290305" elapsed="0.402051"/>
</kw>
<msg time="2026-04-19T01:11:01.692677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:01.289603" elapsed="0.403135"/>
</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-19T01:11:01.289061" elapsed="0.403763"/>
</kw>
<msg time="2026-04-19T01:11:01.692876" 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-19T01:11:01.287711" elapsed="0.405216"/>
</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-19T01:11:01.696106" 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-19T01:11:01.696591" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:01.696908" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:01.693256" elapsed="0.003841"/>
</kw>
<msg time="2026-04-19T01:11:01.697194" level="INFO">${output} = 1</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-19T01:11:01.285761" elapsed="0.411459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:01.697664" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:01.697412" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:01.697753" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:01.697927" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:01.283593" elapsed="0.414362"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:01.698004" elapsed="0.000108"/>
</return>
<msg time="2026-04-19T01:11:01.698241" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:01.281247" elapsed="0.417020"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:01.698860" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:01.698443" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:01.280169" elapsed="0.418955">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:03.702927" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:03.702070" elapsed="0.000940"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:03.705353" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:03.704609" elapsed="0.000856"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:03.706857" 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-19T01:11:03.707170" 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-19T01:11:03.706615" elapsed="0.000595"/>
</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-19T01:11:03.713652" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:03.712391" elapsed="0.001380"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:03.712127" elapsed="0.001729"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:03.715834" 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-19T01:11:03.716101" 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-19T01:11:03.715374" elapsed="0.000835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:03.717843" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:03.717252" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:03.719752" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:03.719012" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:03.722308" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:03.722404" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:03.721887" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:03.722645" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:03.723938" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:04.032552" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:03.723608" elapsed="0.309115"/>
</kw>
<msg time="2026-04-19T01:11:04.032836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:03.723230" elapsed="0.309709"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:03.721084" elapsed="0.312209"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:04.034827" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:04.057710" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:04.058255" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:04.058584" 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-19T01:11:04.034419" elapsed="0.024372"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:04.061065" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:04.064198" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:04.063231" elapsed="0.001194"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:04.065428" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:04.064813" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:04.064653" elapsed="0.001066"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:04.066527" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:11:04.066075" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:04.065933" elapsed="0.000941"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:04.067212" elapsed="0.000089"/>
</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-19T01:11:04.075740" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T01:11:04.076374" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:04.076734" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:04.070126" elapsed="0.006816"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:03.710078" elapsed="0.367135"/>
</kw>
<msg time="2026-04-19T01:11:04.077518" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:03.708989" elapsed="0.368587"/>
</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-19T01:11:03.708228" elapsed="0.369434"/>
</kw>
<msg time="2026-04-19T01:11:04.077705" 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-19T01:11:03.707440" elapsed="0.370313"/>
</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-19T01:11:04.080800" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T01:11:04.081306" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:04.081599" 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-19T01:11:04.078060" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T01:11:04.081838" level="INFO">${output} = 1</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-19T01:11:03.705967" elapsed="0.375897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:04.082307" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:04.082056" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:04.082395" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:04.082549" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:03.703513" elapsed="0.379061"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:04.082622" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:11:04.082767" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:03.701143" elapsed="0.381648"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:04.083384" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:04.082948" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:03.699944" elapsed="0.383631">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:06.087331" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:06.086495" elapsed="0.000908"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:06.089481" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:06.088837" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:06.091452" 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-19T01:11:06.091683" 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-19T01:11:06.091120" elapsed="0.000623"/>
</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-19T01:11:06.098007" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:06.097520" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:06.097211" elapsed="0.001054"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:06.099792" 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-19T01:11:06.100069" 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-19T01:11:06.099324" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:06.101789" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:06.101226" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:06.103713" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:06.102955" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:06.106282" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:06.106359" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:06.105963" 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-19T01:11:06.106606" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:06.107922" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:06.434538" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:06.107589" elapsed="0.327156"/>
</kw>
<msg time="2026-04-19T01:11:06.434861" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:06.107220" elapsed="0.327764"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:06.105168" elapsed="0.330204"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:06.437290" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:06.460242" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:06.460540" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:06.460757" 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-19T01:11:06.436770" elapsed="0.024110"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:06.462153" elapsed="0.000574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:06.464084" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:06.463479" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:06.464759" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:06.464445" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:06.464366" elapsed="0.000574"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:06.465465" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:11:06.465192" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:06.465126" elapsed="0.000555"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:06.465790" elapsed="0.000050"/>
</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-19T01:11:06.472337" elapsed="0.000453"/>
</kw>
<kw name="Open 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-19T01:11:06.473098" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:06.473589" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:06.467550" elapsed="0.006323"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:06.095813" elapsed="0.378368"/>
</kw>
<msg time="2026-04-19T01:11:06.474664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:06.094963" elapsed="0.379786"/>
</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-19T01:11:06.093579" elapsed="0.381283"/>
</kw>
<msg time="2026-04-19T01:11:06.474918" 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-19T01:11:06.092144" elapsed="0.382836"/>
</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-19T01:11:06.478770" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T01:11:06.479291" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:06.479589" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:06.475519" elapsed="0.004221"/>
</kw>
<msg time="2026-04-19T01:11:06.479834" level="INFO">${output} = 1</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-19T01:11:06.090062" elapsed="0.389797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:06.480404" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:06.480147" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:06.480495" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:11:06.480652" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:06.087872" elapsed="0.392806"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:06.480725" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:11:06.480870" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:06.085597" elapsed="0.395298"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:06.481467" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:06.481067" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:06.084439" elapsed="0.397216">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:08.485188" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:08.484372" elapsed="0.000919"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:08.487356" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:08.486722" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:08.489339" 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-19T01:11:08.489483" 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-19T01:11:08.489001" elapsed="0.000520"/>
</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-19T01:11:08.495173" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:08.494481" elapsed="0.000805"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:08.494088" elapsed="0.001282"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:08.497420" 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-19T01:11:08.497760" 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-19T01:11:08.496776" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:08.500126" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:08.499341" elapsed="0.000941"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:08.502435" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:08.501712" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:08.504964" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:08.505175" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:08.504662" 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-19T01:11:08.505423" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:08.506701" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:08.824891" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:08.506365" elapsed="0.318685"/>
</kw>
<msg time="2026-04-19T01:11:08.825134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:08.505977" elapsed="0.319246"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:08.503762" elapsed="0.321734"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:08.826980" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:08.850011" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:08.850594" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:08.850934" 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-19T01:11:08.826590" elapsed="0.024609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:08.853495" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:08.856894" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:08.855868" elapsed="0.001299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:08.858092" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:08.857525" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:08.857398" elapsed="0.000991"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:08.859395" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T01:11:08.858708" elapsed="0.000916"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:08.858602" elapsed="0.001151"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:08.859930" elapsed="0.000082"/>
</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-19T01:11:08.867440" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:11:08.867992" elapsed="0.000249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:08.868439" 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-19T01:11:08.862077" elapsed="0.006570"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:08.492208" elapsed="0.376662"/>
</kw>
<msg time="2026-04-19T01:11:08.869195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:08.491248" elapsed="0.378006"/>
</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-19T01:11:08.490483" elapsed="0.378851"/>
</kw>
<msg time="2026-04-19T01:11:08.869375" 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-19T01:11:08.489743" elapsed="0.379677"/>
</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-19T01:11:08.872561" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:11:08.873051" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:08.873351" 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-19T01:11:08.869780" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T01:11:08.873584" level="INFO">${output} = 1</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-19T01:11:08.487897" elapsed="0.385712"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:08.874045" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:08.873786" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:08.874133" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:08.874282" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:08.485764" elapsed="0.388543"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:08.874353" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:11:08.874492" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:08.483532" elapsed="0.390984"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:08.875090" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:08.874669" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:08.482479" elapsed="0.392796">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:10.878801" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:10.878026" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:10.880708" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:10.880323" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:10.881872" 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-19T01:11:10.882015" 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-19T01:11:10.881655" elapsed="0.000418"/>
</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-19T01:11:10.887420" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:10.886732" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:10.886657" elapsed="0.000960"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:10.889923" 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-19T01:11:10.890303" 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-19T01:11:10.889005" elapsed="0.001438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:10.892580" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:10.891847" elapsed="0.000843"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:10.894434" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:10.893669" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:10.896781" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:10.896858" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:10.896503" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:10.897110" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:10.898603" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:11.220554" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:10.898267" elapsed="0.322448"/>
</kw>
<msg time="2026-04-19T01:11:11.220801" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:10.897723" elapsed="0.323171"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:10.895729" elapsed="0.325502"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:11.222735" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:11.245372" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:11.245872" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:11.246265" 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-19T01:11:11.222348" elapsed="0.024133"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:11.248784" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:11.251954" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:11.250957" elapsed="0.001354"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:11.253239" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:11.252701" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:11.252578" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:11.254357" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:11:11.253846" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:11.253740" elapsed="0.000975"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:11.254892" elapsed="0.000082"/>
</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-19T01:11:11.263428" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:11:11.263992" elapsed="0.000272"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:11.264468" 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-19T01:11:11.258325" elapsed="0.006361"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:10.884751" elapsed="0.380164"/>
</kw>
<msg time="2026-04-19T01:11:11.265252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:10.883793" elapsed="0.381523"/>
</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-19T01:11:10.883009" elapsed="0.382390"/>
</kw>
<msg time="2026-04-19T01:11:11.265441" 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-19T01:11:10.882300" elapsed="0.383187"/>
</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-19T01:11:11.268515" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:11:11.269003" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:11.269321" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:11.265782" elapsed="0.003691"/>
</kw>
<msg time="2026-04-19T01:11:11.269629" level="INFO">${output} = 1</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-19T01:11:10.881070" elapsed="0.388585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:11.270112" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:11.269841" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:11.270202" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:11.270358" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:10.879357" elapsed="0.391027"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:11.270434" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:11.270582" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:10.877210" elapsed="0.393398"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:11.271198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:11.270767" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:10.876129" elapsed="0.395258">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:13.274975" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:13.274242" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:13.277164" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:13.276522" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:13.278998" 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-19T01:11:13.279260" 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-19T01:11:13.278671" elapsed="0.000650"/>
</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-19T01:11:13.284375" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:13.283832" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:13.283776" elapsed="0.000757"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:13.286289" 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-19T01:11:13.286548" 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-19T01:11:13.285571" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:13.288269" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:13.287661" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:13.290204" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:13.289468" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:13.292702" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:13.292783" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:13.292407" 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-19T01:11:13.293232" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:13.294554" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:13.610333" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:13.294213" elapsed="0.316340"/>
</kw>
<msg time="2026-04-19T01:11:13.610636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:13.293823" elapsed="0.316900"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:13.291552" elapsed="0.319428"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:13.612482" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:13.635130" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:13.635620" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:13.636166" 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-19T01:11:13.612095" elapsed="0.024290"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:13.638572" elapsed="0.000860"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:13.641661" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:13.640676" elapsed="0.001210"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:13.642841" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:13.642350" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:13.642226" elapsed="0.000935"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:13.643964" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-19T01:11:13.643474" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:13.643369" elapsed="0.000968"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:13.644453" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:13.651548" elapsed="0.000535"/>
</kw>
<kw name="Open 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-19T01:11:13.652407" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:13.652933" elapsed="0.000190"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:13.646535" elapsed="0.006749"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:13.282467" elapsed="0.371147"/>
</kw>
<msg time="2026-04-19T01:11:13.654129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:13.281762" elapsed="0.372452"/>
</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-19T01:11:13.280898" elapsed="0.373439"/>
</kw>
<msg time="2026-04-19T01:11:13.654400" 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-19T01:11:13.279673" elapsed="0.374797"/>
</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-19T01:11:13.658214" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:11:13.658693" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:13.658989" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:13.654904" elapsed="0.004251"/>
</kw>
<msg time="2026-04-19T01:11:13.659245" level="INFO">${output} = 1</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-19T01:11:13.277711" elapsed="0.381560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:13.659706" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:13.659457" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:13.659793" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:13.659945" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:13.275537" elapsed="0.384433"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:13.660017" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T01:11:13.660182" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:13.273393" elapsed="0.386815"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:13.660830" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:13.660429" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:13.272289" elapsed="0.388728">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:15.665157" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:15.664152" elapsed="0.001095"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:15.667902" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:15.666950" elapsed="0.001044"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:15.669905" 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-19T01:11:15.670186" 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-19T01:11:15.669533" elapsed="0.000715"/>
</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-19T01:11:15.675677" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:15.675091" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:15.674988" elapsed="0.000845"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:15.677718" 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-19T01:11:15.677986" 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-19T01:11:15.676893" elapsed="0.001217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:15.679721" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:15.679142" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:15.681764" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:15.680936" elapsed="0.000932"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:15.684621" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:15.684703" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:15.684318" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:15.684952" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:15.686369" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:16.015693" 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 Sun Apr 19 01:10:15 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:15.686007" elapsed="0.329864"/>
</kw>
<msg time="2026-04-19T01:11:16.015971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:15.685624" elapsed="0.330473"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:15.683186" elapsed="0.333229"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:16.018040" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:16.041320" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:16.041947" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:16.042342" 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-19T01:11:16.017603" elapsed="0.024953"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:16.044996" elapsed="0.001071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:16.048520" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:16.047366" elapsed="0.001385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:16.049753" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:16.049171" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:16.049007" elapsed="0.001139"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:16.051086" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-19T01:11:16.050517" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:16.050396" elapsed="0.001100"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:16.051692" elapsed="0.000092"/>
</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-19T01:11:16.057833" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T01:11:16.058424" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:16.058799" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:16.054301" elapsed="0.004711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:15.673614" elapsed="0.385670"/>
</kw>
<msg time="2026-04-19T01:11:16.059598" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:15.672832" elapsed="0.386828"/>
</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-19T01:11:15.671996" elapsed="0.387750"/>
</kw>
<msg time="2026-04-19T01:11:16.059787" 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-19T01:11:15.670673" elapsed="0.389160"/>
</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-19T01:11:16.062930" 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-19T01:11:16.063463" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:16.063761" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:16.060240" elapsed="0.003673"/>
</kw>
<msg time="2026-04-19T01:11:16.064010" level="INFO">${output} = 1</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-19T01:11:15.668584" elapsed="0.395508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:16.064581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:16.064323" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:16.064672" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:16.064828" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:15.665943" elapsed="0.398910"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:16.064901" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:16.065069" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:15.663207" elapsed="0.401888"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:16.065676" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:16.065263" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:15.661823" elapsed="0.404053">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:18.069559" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:18.068789" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:18.072683" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:18.071804" elapsed="0.000966"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:18.074827" 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-19T01:11:18.074977" 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-19T01:11:18.074577" elapsed="0.000439"/>
</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-19T01:11:18.081151" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:18.080187" elapsed="0.001077"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:18.080108" elapsed="0.001237"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:18.083442" 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-19T01:11:18.083791" 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-19T01:11:18.082768" elapsed="0.001164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:18.086155" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:18.085369" elapsed="0.000942"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:18.088634" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:18.087805" elapsed="0.000928"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:18.091126" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:18.091209" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:18.090795" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:18.091453" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:18.092835" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:18.687509" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:18.092506" elapsed="0.595166"/>
</kw>
<msg time="2026-04-19T01:11:18.687761" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:18.092019" elapsed="0.595834"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:18.089945" elapsed="0.598245"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:18.689751" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:18.713334" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:18.713983" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:18.714413" 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-19T01:11:18.689305" elapsed="0.025370"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:18.717198" elapsed="0.001078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:18.720687" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:18.719630" elapsed="0.001304"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:18.721989" elapsed="0.000223"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:18.721339" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:18.721208" elapsed="0.001252"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:18.723373" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-19T01:11:18.722857" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:18.722742" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:18.723761" 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-19T01:11:18.728505" 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-19T01:11:18.729097" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:18.729458" 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-19T01:11:18.725090" elapsed="0.004571"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:18.077892" elapsed="0.651992"/>
</kw>
<msg time="2026-04-19T01:11:18.730227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:18.076848" elapsed="0.653441"/>
</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-19T01:11:18.076092" elapsed="0.654280"/>
</kw>
<msg time="2026-04-19T01:11:18.730413" 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-19T01:11:18.075328" elapsed="0.655132"/>
</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-19T01:11:18.733429" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T01:11:18.733900" elapsed="0.000263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:18.734314" 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-19T01:11:18.730759" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T01:11:18.734580" level="INFO">${output} = 1</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-19T01:11:18.073485" elapsed="0.661122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:18.735048" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:18.734783" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:18.735138" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:18.735293" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:18.070473" elapsed="0.664846"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:18.735366" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:18.735511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:18.067925" elapsed="0.667610"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:18.736100" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:18.735692" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:18.066743" elapsed="0.669545">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:20.739740" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:20.738978" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:20.741835" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:20.741231" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:20.743774" 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-19T01:11:20.744210" 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-19T01:11:20.743416" elapsed="0.000860"/>
</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-19T01:11:20.750829" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:20.750263" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:20.749841" elapsed="0.001129"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:20.752404" 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-19T01:11:20.752653" 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-19T01:11:20.751948" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:20.754290" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:20.753713" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:20.756075" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:20.755369" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:20.758438" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:20.758517" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:20.758145" 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-19T01:11:20.758778" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:20.760262" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:21.070597" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:20.759730" elapsed="0.311013"/>
</kw>
<msg time="2026-04-19T01:11:21.070826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:20.759374" elapsed="0.311543"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:20.757362" elapsed="0.313924"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:21.072831" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:21.096220" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:21.096759" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:21.097133" 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-19T01:11:21.072409" elapsed="0.024936"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:21.099557" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:21.102007" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:21.101362" 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-19T01:11:21.102840" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:21.102498" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:21.102410" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:21.103558" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T01:11:21.103266" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:21.103198" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:21.103899" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:21.110905" elapsed="0.000518"/>
</kw>
<kw name="Open 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-19T01:11:21.111808" elapsed="0.000261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:21.112387" elapsed="0.000152"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:21.105855" elapsed="0.006832"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:20.747931" elapsed="0.364982"/>
</kw>
<msg time="2026-04-19T01:11:21.113233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:20.746988" elapsed="0.366306"/>
</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-19T01:11:20.745948" elapsed="0.367429"/>
</kw>
<msg time="2026-04-19T01:11:21.113419" 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-19T01:11:20.744662" elapsed="0.368803"/>
</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-19T01:11:21.116545" 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-19T01:11:21.117110" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:21.117421" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:21.113755" elapsed="0.003816"/>
</kw>
<msg time="2026-04-19T01:11:21.117661" level="INFO">${output} = 1</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-19T01:11:20.742417" elapsed="0.375269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:21.118141" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:21.117865" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:21.118229" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:21.118380" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:20.740292" elapsed="0.378114"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:21.118459" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:21.118616" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:20.738135" elapsed="0.380506"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:21.119216" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:21.118799" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:20.737086" elapsed="0.382312">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:23.122886" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:23.122054" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:23.124608" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:23.124187" elapsed="0.000461"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:23.125875" 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-19T01:11:23.126047" 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-19T01:11:23.125642" elapsed="0.000447"/>
</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-19T01:11:23.132705" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:23.131965" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:23.131380" elapsed="0.001681"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:23.135323" 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-19T01:11:23.135681" 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-19T01:11:23.134596" elapsed="0.001190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:23.137444" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:23.136871" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:23.139400" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:23.138643" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:23.141858" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:23.141938" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:23.141549" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:23.142297" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:23.143607" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:23.458893" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:23.143270" elapsed="0.315798"/>
</kw>
<msg time="2026-04-19T01:11:23.459157" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:23.142875" elapsed="0.316377"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:23.140755" elapsed="0.318807"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:23.461083" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:23.484013" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:23.484554" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:23.484888" 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-19T01:11:23.460672" elapsed="0.024469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:23.487456" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:23.491075" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:23.489852" elapsed="0.001467"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:23.492372" elapsed="0.000087"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:23.491709" elapsed="0.000881"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:23.491550" elapsed="0.001209"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:23.493709" elapsed="0.000183"/>
</return>
<status status="PASS" start="2026-04-19T01:11:23.493248" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:23.492994" elapsed="0.001258"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:23.494498" elapsed="0.000110"/>
</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-19T01:11:23.501443" 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-19T01:11:23.502012" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:23.502392" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:23.496288" elapsed="0.006315"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:23.129239" elapsed="0.373587"/>
</kw>
<msg time="2026-04-19T01:11:23.503272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:23.128009" elapsed="0.375326"/>
</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-19T01:11:23.127148" elapsed="0.376283"/>
</kw>
<msg time="2026-04-19T01:11:23.503473" 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-19T01:11:23.126334" elapsed="0.377184"/>
</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-19T01:11:23.506648" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:11:23.507140" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:23.507435" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:23.503808" elapsed="0.003776"/>
</kw>
<msg time="2026-04-19T01:11:23.507674" level="INFO">${output} = 1</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-19T01:11:23.124978" elapsed="0.382721"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:23.508152" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:23.507888" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:23.508241" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:23.508392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:23.123526" elapsed="0.384892"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:23.508464" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:11:23.508608" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:23.121229" elapsed="0.387404"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:23.509211" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:23.508789" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:23.120175" elapsed="0.389215">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:25.513329" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:25.512474" elapsed="0.000932"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:25.515819" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:25.515126" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:25.517114" 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-19T01:11:25.517263" 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-19T01:11:25.516852" elapsed="0.000448"/>
</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-19T01:11:25.523057" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:25.522359" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:25.522279" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:25.525598" 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-19T01:11:25.525963" 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-19T01:11:25.524630" elapsed="0.001538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:25.528259" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:25.527602" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:25.530212" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:25.529475" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:25.532687" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:25.532765" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:25.532393" 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-19T01:11:25.533010" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:25.534503" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:25.866655" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:25.534165" elapsed="0.332643"/>
</kw>
<msg time="2026-04-19T01:11:25.866891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:25.533744" elapsed="0.333237"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:25.531590" elapsed="0.335690"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:25.868766" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:25.891659" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:25.892205" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:25.892544" 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-19T01:11:25.868372" elapsed="0.024387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:25.895018" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:25.898257" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:25.897257" elapsed="0.001226"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:25.899360" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:25.898831" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:25.898707" elapsed="0.000939"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:25.900433" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:11:25.899961" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:25.899857" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:25.901246" elapsed="0.000087"/>
</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-19T01:11:25.908022" 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-19T01:11:25.908804" elapsed="0.000318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:25.909396" 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-19T01:11:25.903344" elapsed="0.006378"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:25.520296" elapsed="0.389753"/>
</kw>
<msg time="2026-04-19T01:11:25.910479" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:25.519270" elapsed="0.391291"/>
</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-19T01:11:25.518425" elapsed="0.392248"/>
</kw>
<msg time="2026-04-19T01:11:25.910730" 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-19T01:11:25.517558" elapsed="0.393219"/>
</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-19T01:11:25.913915" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:11:25.914411" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:25.914705" 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-19T01:11:25.911148" elapsed="0.003705"/>
</kw>
<msg time="2026-04-19T01:11:25.914944" level="INFO">${output} = 1</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-19T01:11:25.516197" elapsed="0.398772"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:25.915417" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:25.915170" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:25.915503" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:25.915655" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:25.513928" elapsed="0.401752"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:25.915727" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:11:25.915870" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:25.511542" elapsed="0.404353"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:25.916458" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:25.916065" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:25.510305" elapsed="0.406341">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:27.920142" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:27.919344" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:27.922521" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:27.921730" elapsed="0.000852"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:27.924460" 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-19T01:11:27.924694" 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-19T01:11:27.924007" elapsed="0.000745"/>
</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-19T01:11:27.930117" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:27.929468" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:27.929391" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:27.932671" 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-19T01:11:27.933093" 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-19T01:11:27.931664" elapsed="0.001570"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:27.935382" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:27.934570" elapsed="0.000964"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:27.937709" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:27.936944" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:27.940408" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:27.940492" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:27.939915" elapsed="0.000602"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:27.940730" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:27.942086" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:28.259103" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:27.941744" elapsed="0.317523"/>
</kw>
<msg time="2026-04-19T01:11:28.259354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:27.941380" elapsed="0.318067"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:27.939160" elapsed="0.320594"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:28.261267" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:28.284107" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:28.284606" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:28.284940" 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-19T01:11:28.260854" elapsed="0.024345"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:28.287421" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:28.290596" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:28.289614" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:28.291750" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:28.291218" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:28.291091" elapsed="0.000981"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:28.293389" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:11:28.292771" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:28.292294" elapsed="0.001454"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:28.293930" 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-19T01:11:28.299863" 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-19T01:11:28.300471" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:28.300830" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:28.296409" elapsed="0.004690"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:27.927515" elapsed="0.373810"/>
</kw>
<msg time="2026-04-19T01:11:28.301696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:27.926542" elapsed="0.375216"/>
</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-19T01:11:27.925765" elapsed="0.376083"/>
</kw>
<msg time="2026-04-19T01:11:28.301889" 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-19T01:11:27.925016" elapsed="0.376919"/>
</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-19T01:11:28.304921" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T01:11:28.305511" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:28.305805" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:28.302245" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T01:11:28.306120" level="INFO">${output} = 1</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-19T01:11:27.923096" elapsed="0.383051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:28.306581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:28.306330" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:28.306668" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:28.306822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:27.920703" elapsed="0.386144"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:28.306895" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:28.307055" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:27.918498" elapsed="0.388584"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:28.307659" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:28.307240" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:27.917442" elapsed="0.390407">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:30.311456" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:30.310644" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:30.312933" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:30.312546" elapsed="0.000425"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:30.314106" 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-19T01:11:30.314252" 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-19T01:11:30.313865" elapsed="0.000425"/>
</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-19T01:11:30.319564" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:30.318903" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:30.318825" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:30.322101" 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-19T01:11:30.322440" 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-19T01:11:30.321140" elapsed="0.001440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:30.324819" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:30.324102" elapsed="0.000863"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:30.326822" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:30.326025" elapsed="0.000901"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:30.329280" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:30.329369" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:30.328943" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:30.329614" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:30.331093" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:30.648698" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:30.330737" elapsed="0.318214"/>
</kw>
<msg time="2026-04-19T01:11:30.649056" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:30.330364" elapsed="0.318784"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:30.328172" elapsed="0.321262"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:30.650954" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:30.674097" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:30.674607" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:30.674983" 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-19T01:11:30.650529" elapsed="0.024708"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:30.677466" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:30.680964" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:30.679745" elapsed="0.001495"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:30.682139" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:30.681599" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:30.681473" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:30.683342" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:11:30.682829" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:30.682660" elapsed="0.001054"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:30.683886" 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-19T01:11:30.688790" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T01:11:30.689375" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:30.689745" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:30.685307" elapsed="0.004656"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:30.316964" elapsed="0.373247"/>
</kw>
<msg time="2026-04-19T01:11:30.690522" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:30.316008" elapsed="0.374575"/>
</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-19T01:11:30.315250" elapsed="0.375421"/>
</kw>
<msg time="2026-04-19T01:11:30.690715" 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-19T01:11:30.314513" elapsed="0.376274"/>
</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-19T01:11:30.694010" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:11:30.694522" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:30.694868" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:30.691272" elapsed="0.003773"/>
</kw>
<msg time="2026-04-19T01:11:30.695145" level="INFO">${output} = 1</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-19T01:11:30.313290" elapsed="0.381881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:30.695612" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:30.695353" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:30.695704" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:30.695861" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:30.311946" elapsed="0.383941"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:30.695935" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:11:30.696185" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:30.309800" elapsed="0.386411"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:30.696854" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:30.696429" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:30.308696" elapsed="0.388366">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:32.699411" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:32.698903" elapsed="0.000555"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:32.700766" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:32.700384" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:32.701931" 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-19T01:11:32.702095" 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-19T01:11:32.701712" elapsed="0.000422"/>
</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-19T01:11:32.707809" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:32.706816" elapsed="0.001108"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:32.706739" elapsed="0.001274"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:32.710060" 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-19T01:11:32.710401" 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-19T01:11:32.709420" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:32.712703" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:32.711930" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:32.715332" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:32.714345" elapsed="0.001126"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:32.717918" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:32.717996" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:32.717637" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:32.718597" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:32.719936" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:33.036261" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:32.719606" elapsed="0.316796"/>
</kw>
<msg time="2026-04-19T01:11:33.036485" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:32.719173" elapsed="0.317398"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:32.716857" elapsed="0.319992"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:33.038343" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:33.061669" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:33.062231" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:33.062560" 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-19T01:11:33.037937" elapsed="0.024839"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:33.065088" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:33.068186" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:33.067337" elapsed="0.000999"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:33.068892" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:33.068561" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:33.068481" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:33.069586" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:11:33.069302" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:33.069234" elapsed="0.000578"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:33.069921" elapsed="0.000058"/>
</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-19T01:11:33.076730" elapsed="0.000546"/>
</kw>
<kw name="Open 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-19T01:11:33.077566" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:33.078079" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:33.071908" elapsed="0.006462"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:32.704881" elapsed="0.373793"/>
</kw>
<msg time="2026-04-19T01:11:33.079173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:32.703893" elapsed="0.375365"/>
</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-19T01:11:32.703098" elapsed="0.376274"/>
</kw>
<msg time="2026-04-19T01:11:33.079428" 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-19T01:11:32.702358" elapsed="0.377134"/>
</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-19T01:11:33.082604" 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-19T01:11:33.083113" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:33.083409" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:33.079898" elapsed="0.003659"/>
</kw>
<msg time="2026-04-19T01:11:33.083648" level="INFO">${output} = 1</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-19T01:11:32.701129" elapsed="0.382545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:33.084191" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:33.083852" elapsed="0.000385"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:33.084280" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:33.084433" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:32.699787" elapsed="0.384671"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:33.084505" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:33.084650" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:32.698382" elapsed="0.386293"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:33.085237" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:33.084832" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:32.697650" elapsed="0.387766">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:35.089010" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:35.088216" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:35.091367" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:35.090707" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:35.093253" 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-19T01:11:35.093484" 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-19T01:11:35.092886" elapsed="0.000659"/>
</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-19T01:11:35.101816" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:35.101340" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:35.101006" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:35.103414" 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-19T01:11:35.103660" 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-19T01:11:35.102952" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:35.105324" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:35.104766" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:35.107191" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:35.106425" elapsed="0.000879"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:35.109621" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:35.109699" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:35.109338" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:35.109944" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:35.111362" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:35.447615" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:35.110879" elapsed="0.336870"/>
</kw>
<msg time="2026-04-19T01:11:35.447828" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:35.110518" elapsed="0.337397"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:35.108548" elapsed="0.339694"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:35.449718" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:35.472142" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:35.472646" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:35.472979" 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-19T01:11:35.449333" elapsed="0.023902"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:35.475512" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:35.478126" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:35.477482" 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-19T01:11:35.478902" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:35.478497" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:35.478416" elapsed="0.000766"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:35.479669" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:11:35.479386" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:35.479318" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:35.480017" elapsed="0.000074"/>
</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-19T01:11:35.486605" 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-19T01:11:35.487538" elapsed="0.000290"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:35.488216" elapsed="0.000171"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:35.481872" elapsed="0.006718"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:35.097932" elapsed="0.390992"/>
</kw>
<msg time="2026-04-19T01:11:35.489301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:35.096439" elapsed="0.392922"/>
</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-19T01:11:35.095182" elapsed="0.394260"/>
</kw>
<msg time="2026-04-19T01:11:35.489483" 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-19T01:11:35.093897" elapsed="0.395631"/>
</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-19T01:11:35.492527" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:35.492999" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:35.493317" 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-19T01:11:35.489820" elapsed="0.003644"/>
</kw>
<msg time="2026-04-19T01:11:35.493554" level="INFO">${output} = 1</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-19T01:11:35.091914" elapsed="0.401665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:35.494005" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:35.493759" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:35.494124" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:35.494277" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:35.089747" elapsed="0.404555"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:35.494349" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:11:35.494490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:35.087375" elapsed="0.407139"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:35.495079" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:35.494669" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:35.086244" elapsed="0.409024">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:37.498798" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:37.498026" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:37.500917" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:37.500304" elapsed="0.000674"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:37.502580" 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-19T01:11:37.502915" 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-19T01:11:37.502359" elapsed="0.000596"/>
</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-19T01:11:37.509014" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:37.508351" elapsed="0.000796"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:37.507970" elapsed="0.001261"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:37.511299" 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-19T01:11:37.511640" 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-19T01:11:37.510635" elapsed="0.001149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:37.514013" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:37.513214" elapsed="0.000948"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:37.515897" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:37.515161" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:37.518411" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:37.518491" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:37.518126" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:37.518743" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:37.520015" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:37.818751" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:37.519690" elapsed="0.299298"/>
</kw>
<msg time="2026-04-19T01:11:37.819164" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:37.519331" elapsed="0.299987"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:37.517312" elapsed="0.302546"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:37.822664" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:37.845355" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:37.845877" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:37.846260" 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-19T01:11:37.822272" elapsed="0.024200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:37.848757" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:37.851904" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:37.850907" elapsed="0.001352"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:37.853133" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:37.852605" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:37.852485" elapsed="0.000992"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:37.854227" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:11:37.853809" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:37.853700" elapsed="0.000747"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:37.854582" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:37.863290" elapsed="0.000468"/>
</kw>
<kw name="Open 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-19T01:11:37.864250" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:37.864744" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:37.856554" elapsed="0.008492"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:37.506132" elapsed="0.359223"/>
</kw>
<msg time="2026-04-19T01:11:37.865805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:37.504931" elapsed="0.360954"/>
</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-19T01:11:37.503935" elapsed="0.362062"/>
</kw>
<msg time="2026-04-19T01:11:37.866074" 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-19T01:11:37.503211" elapsed="0.362926"/>
</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-19T01:11:37.869136" 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-19T01:11:37.869651" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:37.869949" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:37.866437" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T01:11:37.870212" level="INFO">${output} = 1</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-19T01:11:37.501501" elapsed="0.368736"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:37.870670" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:37.870422" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:37.870757" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:37.870908" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:37.499354" elapsed="0.371579"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:37.870978" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:11:37.871148" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:37.497178" elapsed="0.373994"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:37.871716" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:37.871327" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:37.496115" elapsed="0.375780">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:39.875246" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:39.874498" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:39.877188" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:39.876765" elapsed="0.000470"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:39.878353" 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-19T01:11:39.878495" 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-19T01:11:39.878138" elapsed="0.000413"/>
</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-19T01:11:39.883911" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:39.883259" elapsed="0.000922"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:39.883181" elapsed="0.001106"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:39.886263" 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-19T01:11:39.886510" 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-19T01:11:39.885574" elapsed="0.001039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:39.888185" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:39.887633" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:39.889993" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:39.889284" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:39.892526" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:39.892604" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:39.892242" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:39.892842" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:39.894136" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:40.209949" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:39.893783" elapsed="0.316316"/>
</kw>
<msg time="2026-04-19T01:11:40.210184" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:39.893422" elapsed="0.316844"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:39.891359" elapsed="0.319175"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:40.212020" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:40.234763" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:40.235324" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:40.235659" 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-19T01:11:40.211642" elapsed="0.024226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:40.238113" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:40.241265" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:40.240258" elapsed="0.001237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:40.242360" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:40.241838" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:40.241718" elapsed="0.000934"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:40.243499" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:11:40.242970" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:40.242864" elapsed="0.000986"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:40.244023" elapsed="0.000121"/>
</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-19T01:11:40.248840" elapsed="0.000412"/>
</kw>
<kw name="Open 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-19T01:11:40.249465" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:40.249820" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:40.245538" elapsed="0.004508"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:39.881324" elapsed="0.368956"/>
</kw>
<msg time="2026-04-19T01:11:40.250675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:39.880313" elapsed="0.370420"/>
</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-19T01:11:39.879507" elapsed="0.371310"/>
</kw>
<msg time="2026-04-19T01:11:40.250859" 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-19T01:11:39.878774" elapsed="0.372131"/>
</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-19T01:11:40.253963" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:40.254462" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:40.254757" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:40.251224" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T01:11:40.254997" level="INFO">${output} = 1</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-19T01:11:39.877542" elapsed="0.377480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:40.255493" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:40.255243" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:40.255582" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:40.255817" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:39.875821" elapsed="0.380025"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:40.255894" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:11:40.256057" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:39.873666" elapsed="0.382419"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:40.256680" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:40.256279" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:39.872633" elapsed="0.384228">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:42.260478" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:42.259646" elapsed="0.000902"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:42.262678" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:42.262000" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:42.264585" 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-19T01:11:42.264824" 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-19T01:11:42.264246" elapsed="0.000638"/>
</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-19T01:11:42.270914" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:42.270280" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:42.270199" elapsed="0.000930"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:42.273455" 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-19T01:11:42.273803" 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-19T01:11:42.272502" elapsed="0.001479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:42.275600" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:42.275054" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:42.277537" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:42.276766" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:42.279926" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:42.280005" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:42.279643" 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-19T01:11:42.280269" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:42.281659" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:42.598877" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:42.281332" elapsed="0.317694"/>
</kw>
<msg time="2026-04-19T01:11:42.599125" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:42.280829" elapsed="0.318381"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:42.278862" elapsed="0.320626"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:42.600946" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:42.623781" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:42.624380" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:42.624718" 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-19T01:11:42.600569" elapsed="0.024363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:42.627274" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:42.630474" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:42.629469" elapsed="0.001240"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:42.631604" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:42.631100" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:42.630936" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:42.632709" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:11:42.632258" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:42.632145" elapsed="0.001074"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:42.633403" elapsed="0.000084"/>
</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-19T01:11:42.638655" elapsed="0.000400"/>
</kw>
<kw name="Open 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-19T01:11:42.639271" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:42.639630" 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-19T01:11:42.635247" elapsed="0.004592"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:42.268328" elapsed="0.371753"/>
</kw>
<msg time="2026-04-19T01:11:42.640390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:42.267359" elapsed="0.373091"/>
</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-19T01:11:42.266582" elapsed="0.373950"/>
</kw>
<msg time="2026-04-19T01:11:42.640574" 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-19T01:11:42.265391" elapsed="0.375230"/>
</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-19T01:11:42.643718" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:11:42.644218" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:42.644515" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:42.640977" elapsed="0.003687"/>
</kw>
<msg time="2026-04-19T01:11:42.644756" level="INFO">${output} = 1</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-19T01:11:42.263268" elapsed="0.381514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:42.645320" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:42.644961" elapsed="0.000404"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:42.645409" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:42.645561" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:42.261013" elapsed="0.384574"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:42.645635" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:42.645806" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:42.258760" elapsed="0.387071"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:42.646443" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:42.645989" elapsed="0.000529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:42.257673" elapsed="0.388957">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:44.650301" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:44.649532" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:44.652423" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:44.651781" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:44.653955" 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-19T01:11:44.654118" 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-19T01:11:44.653736" elapsed="0.000421"/>
</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-19T01:11:44.659386" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:44.658734" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:44.658657" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:44.661902" 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-19T01:11:44.662278" 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-19T01:11:44.660958" elapsed="0.001459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:44.664629" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:44.663774" elapsed="0.001039"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:44.666633" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:44.665926" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:44.669129" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:44.669209" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:44.668830" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:44.669446" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:44.670781" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:45.026570" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:44.670453" elapsed="0.356222"/>
</kw>
<msg time="2026-04-19T01:11:45.026746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:44.670080" elapsed="0.356746"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:44.667918" elapsed="0.359170"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:45.028499" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:45.051138" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:45.051638" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:45.051970" 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-19T01:11:45.028143" elapsed="0.024079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:45.054510" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:45.057654" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:45.056666" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:45.058840" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:45.058359" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:45.058238" elapsed="0.000928"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:45.059925" elapsed="0.000143"/>
</return>
<status status="PASS" start="2026-04-19T01:11:45.059484" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:45.059378" elapsed="0.000926"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:45.060474" elapsed="0.000110"/>
</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-19T01:11:45.067949" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T01:11:45.068507" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:45.068876" 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-19T01:11:45.063593" elapsed="0.005519"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:44.656821" elapsed="0.412517"/>
</kw>
<msg time="2026-04-19T01:11:45.069638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:44.655857" elapsed="0.413837"/>
</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-19T01:11:44.655109" elapsed="0.414667"/>
</kw>
<msg time="2026-04-19T01:11:45.069817" 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-19T01:11:44.654378" elapsed="0.415485"/>
</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-19T01:11:45.073001" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T01:11:45.073506" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:45.073797" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:45.070256" elapsed="0.003687"/>
</kw>
<msg time="2026-04-19T01:11:45.074139" level="INFO">${output} = 1</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-19T01:11:44.653022" elapsed="0.421143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:45.074599" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:45.074349" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:45.074686" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:11:45.074838" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:44.650835" elapsed="0.424028"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:45.074910" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:11:45.075069" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:44.648619" elapsed="0.426476"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:45.075644" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:45.075252" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:44.647531" elapsed="0.428301">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:47.079283" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:47.078521" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:47.081419" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:47.080780" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:47.083433" 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-19T01:11:47.083711" 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-19T01:11:47.083100" elapsed="0.000673"/>
</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-19T01:11:47.089718" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:47.088753" elapsed="0.001077"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:47.088676" elapsed="0.001236"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:47.091908" 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-19T01:11:47.092281" 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-19T01:11:47.091295" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:47.094529" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:47.093755" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:47.096944" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:47.096151" elapsed="0.000956"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:47.099356" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:47.099433" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:47.099070" 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-19T01:11:47.099695" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:47.100988" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:47.415695" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:47.100653" elapsed="0.315262"/>
</kw>
<msg time="2026-04-19T01:11:47.415996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:47.100294" elapsed="0.315806"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:47.098302" elapsed="0.318060"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:47.417786" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:47.440602" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:47.441154" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:47.441495" 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-19T01:11:47.417403" elapsed="0.024305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:47.444000" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:47.447198" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:47.446218" elapsed="0.001233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:47.448335" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:47.447802" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:47.447679" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:47.449436" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:11:47.448952" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:47.448844" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:47.449966" elapsed="0.000151"/>
</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-19T01:11:47.458366" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:11:47.458915" elapsed="0.000266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:47.459396" 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-19T01:11:47.453089" elapsed="0.006521"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:47.086773" elapsed="0.373062"/>
</kw>
<msg time="2026-04-19T01:11:47.460159" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:47.085818" elapsed="0.374399"/>
</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-19T01:11:47.085073" elapsed="0.375226"/>
</kw>
<msg time="2026-04-19T01:11:47.460340" 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-19T01:11:47.084161" elapsed="0.376225"/>
</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-19T01:11:47.463465" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:11:47.463945" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:47.464257" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:47.460677" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T01:11:47.464503" level="INFO">${output} = 1</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-19T01:11:47.082063" elapsed="0.382466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:47.464955" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:47.464706" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:47.465060" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:47.465214" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:47.079838" elapsed="0.385402"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:47.465287" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:47.465432" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:47.077676" elapsed="0.387781"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:47.466083" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:47.465659" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:47.076636" elapsed="0.389632">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:49.469807" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:49.469061" elapsed="0.000817"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:49.472111" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:49.471418" elapsed="0.000763"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:49.473961" 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-19T01:11:49.474225" 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-19T01:11:49.473635" elapsed="0.000651"/>
</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-19T01:11:49.480365" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:49.479701" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:49.479324" elapsed="0.001237"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:49.482564" 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-19T01:11:49.482906" 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-19T01:11:49.481906" elapsed="0.001186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:49.485204" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:49.484424" elapsed="0.000931"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:49.487760" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:49.486793" elapsed="0.001065"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:49.490124" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:49.490204" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:49.489827" 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-19T01:11:49.490452" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:49.491864" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:49.812242" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:49.491541" elapsed="0.320843"/>
</kw>
<msg time="2026-04-19T01:11:49.812468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:49.491018" elapsed="0.321536"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:49.489067" elapsed="0.323760"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:49.814366" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:49.837325" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:49.837818" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:49.838300" 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-19T01:11:49.813932" elapsed="0.024598"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:49.840761" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:49.843898" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:49.842906" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:49.844988" elapsed="0.000092"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:49.844501" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:49.844380" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:49.846116" elapsed="0.000171"/>
</return>
<status status="PASS" start="2026-04-19T01:11:49.845647" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:49.845540" elapsed="0.000983"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:49.846605" 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-19T01:11:49.851492" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:11:49.852049" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:49.852405" 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-19T01:11:49.847977" elapsed="0.004634"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:49.477439" elapsed="0.375395"/>
</kw>
<msg time="2026-04-19T01:11:49.853158" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:49.476485" elapsed="0.376733"/>
</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-19T01:11:49.475714" elapsed="0.377583"/>
</kw>
<msg time="2026-04-19T01:11:49.853338" 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-19T01:11:49.474693" elapsed="0.378689"/>
</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-19T01:11:49.856419" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:11:49.856891" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:49.857201" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:49.853670" elapsed="0.003678"/>
</kw>
<msg time="2026-04-19T01:11:49.857438" level="INFO">${output} = 1</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-19T01:11:49.472679" elapsed="0.384786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:49.857894" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:49.857648" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:49.857980" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:11:49.858147" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:49.470368" elapsed="0.387804"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:49.858241" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:11:49.858401" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:49.468220" elapsed="0.390206"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:49.858974" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:49.858582" elapsed="0.000557">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:49.467136" elapsed="0.392118">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:51.862779" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:51.861977" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:51.865074" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:51.864438" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:51.866476" 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-19T01:11:51.866625" 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-19T01:11:51.866229" elapsed="0.000435"/>
</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-19T01:11:51.872218" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:51.871553" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:51.871195" elapsed="0.001218"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:51.874445" 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-19T01:11:51.874786" 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-19T01:11:51.873813" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:51.877069" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:51.876296" elapsed="0.000927"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:51.879103" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:51.878378" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:51.881462" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:51.881541" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:51.881169" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:51.881776" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:51.883194" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:52.202085" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:51.882851" elapsed="0.319381"/>
</kw>
<msg time="2026-04-19T01:11:52.202315" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:51.882464" elapsed="0.319944"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:51.880390" elapsed="0.322291"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:52.204175" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:52.227215" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:52.227707" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:52.228079" 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-19T01:11:52.203772" elapsed="0.024525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:52.230727" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:52.234009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:52.232947" elapsed="0.001382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:52.235378" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:52.234676" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:52.234552" elapsed="0.001127"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:52.236482" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:11:52.235998" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:52.235891" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:52.237003" elapsed="0.000166"/>
</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-19T01:11:52.246359" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:52.246913" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:52.247288" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:52.240232" elapsed="0.007266"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:51.869346" elapsed="0.378373"/>
</kw>
<msg time="2026-04-19T01:11:52.248026" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:51.868386" elapsed="0.379712"/>
</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-19T01:11:51.867620" elapsed="0.380558"/>
</kw>
<msg time="2026-04-19T01:11:52.248219" 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-19T01:11:51.866884" elapsed="0.381380"/>
</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-19T01:11:52.251321" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:11:52.251801" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:52.252112" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:52.248552" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T01:11:52.252354" level="INFO">${output} = 1</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-19T01:11:51.865627" elapsed="0.386753"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:52.252818" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:52.252570" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:52.252905" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:52.253087" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:51.863481" elapsed="0.389634"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:52.253161" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:11:52.253304" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:51.861141" elapsed="0.392187"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:52.253872" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:52.253479" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:51.860067" elapsed="0.394015">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:54.257765" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:54.256996" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:54.259933" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:54.259309" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:54.261818" 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-19T01:11:54.262213" 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-19T01:11:54.261485" elapsed="0.000792"/>
</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-19T01:11:54.267495" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:54.266969" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:54.266912" elapsed="0.000724"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:54.269339" 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-19T01:11:54.269585" 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-19T01:11:54.268653" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:54.271248" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:54.270678" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:54.273130" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:54.272419" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:54.275589" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:54.275668" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:54.275301" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:54.275904" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:54.277341" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:54.580799" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:54.276982" elapsed="0.303978"/>
</kw>
<msg time="2026-04-19T01:11:54.581064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:54.276590" elapsed="0.304572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:54.274444" elapsed="0.307005"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:54.582975" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:54.605971" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:54.606545" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:54.607027" 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-19T01:11:54.582562" elapsed="0.024716"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:54.609638" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:54.612807" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:54.611817" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:54.613909" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:54.613413" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:54.613290" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:54.614998" elapsed="0.000305"/>
</return>
<status status="PASS" start="2026-04-19T01:11:54.614552" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:54.614444" elapsed="0.001096"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:54.615715" 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-19T01:11:54.621044" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:11:54.621656" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:54.622020" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:54.617562" elapsed="0.004689"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:54.265598" elapsed="0.356880"/>
</kw>
<msg time="2026-04-19T01:11:54.622792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:54.264902" elapsed="0.357950"/>
</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-19T01:11:54.263900" elapsed="0.359033"/>
</kw>
<msg time="2026-04-19T01:11:54.622974" 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-19T01:11:54.262635" elapsed="0.360384"/>
</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-19T01:11:54.626127" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:54.626609" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:54.626913" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:54.623374" elapsed="0.003794"/>
</kw>
<msg time="2026-04-19T01:11:54.627260" level="INFO">${output} = 1</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-19T01:11:54.260533" elapsed="0.366753"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:54.627714" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:54.627466" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:54.627802" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:54.627988" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:54.258323" elapsed="0.369695"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:54.628082" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:11:54.628234" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:54.256167" elapsed="0.372101"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:54.628931" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:54.628485" elapsed="0.000578">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:54.254941" elapsed="0.374250">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:56.633221" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:56.632406" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:56.635509" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:56.634754" elapsed="0.000819"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:56.637550" 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-19T01:11:56.637850" 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-19T01:11:56.637159" elapsed="0.000771"/>
</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-19T01:11:56.644249" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:56.643588" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:56.643510" elapsed="0.001030"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:56.646870" 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-19T01:11:56.647282" 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-19T01:11:56.645923" elapsed="0.001499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:56.649594" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:56.648799" elapsed="0.000956"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:56.652286" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:56.651266" elapsed="0.001157"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:56.655885" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:56.655963" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:56.655532" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:56.656232" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:56.657536" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:56.985664" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:56.657202" elapsed="0.328607"/>
</kw>
<msg time="2026-04-19T01:11:56.985893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:56.656818" elapsed="0.329165"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:56.654150" elapsed="0.332161"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:56.987791" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:57.011103" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:57.011624" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:57.011976" 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-19T01:11:56.987404" elapsed="0.024844"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:57.015622" elapsed="0.001371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:57.019622" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:57.018363" elapsed="0.001493"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:57.020852" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:57.020271" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:57.020140" elapsed="0.001053"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:57.022159" elapsed="0.000185"/>
</return>
<status status="PASS" start="2026-04-19T01:11:57.021557" elapsed="0.000927"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:57.021437" elapsed="0.001179"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:57.022747" elapsed="0.000051"/>
</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-19T01:11:57.027697" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:11:57.028264" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:57.028664" 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-19T01:11:57.024184" elapsed="0.004699"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:56.641483" elapsed="0.387645"/>
</kw>
<msg time="2026-04-19T01:11:57.029552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:56.640519" elapsed="0.389097"/>
</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-19T01:11:56.639735" elapsed="0.389965"/>
</kw>
<msg time="2026-04-19T01:11:57.029744" 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-19T01:11:56.638432" elapsed="0.391359"/>
</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-19T01:11:57.032917" 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-19T01:11:57.033411" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:57.033708" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:57.030109" elapsed="0.003747"/>
</kw>
<msg time="2026-04-19T01:11:57.033949" level="INFO">${output} = 1</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-19T01:11:56.636158" elapsed="0.397821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:57.034428" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:57.034179" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:57.034516" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:11:57.034676" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:56.633759" elapsed="0.400943"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:57.034751" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:11:57.034912" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:56.631515" elapsed="0.403422"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:57.035539" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:57.035138" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:56.630228" elapsed="0.405512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:11:59.039428" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:11:59.038625" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:11:59.041705" level="INFO">${member_ip} = 10.30.171.206</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-19T01:11:59.041084" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:59.043597" 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-19T01:11:59.043826" 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-19T01:11:59.043241" elapsed="0.000643"/>
</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-19T01:11:59.049711" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:11:59.049246" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:59.049188" elapsed="0.000708"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:59.051586" 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-19T01:11:59.051832" 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-19T01:11:59.050882" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:59.053489" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:59.052908" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:11:59.055371" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:11:59.054656" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:11:59.057747" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:11:59.057837" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:11:59.057451" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:59.058136" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:11:59.059443" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:11:59.388405" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:11:59.059103" elapsed="0.329461"/>
</kw>
<msg time="2026-04-19T01:11:59.388652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:59.058695" elapsed="0.330052"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:11:59.056657" elapsed="0.332408"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:11:59.390601" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:11:59.413084" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:11:59.413608" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:11:59.413981" 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-19T01:11:59.390199" elapsed="0.024041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:59.416459" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:59.420121" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:59.418891" elapsed="0.001468"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:59.421237" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:11:59.420710" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:59.420584" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:11:59.422494" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T01:11:59.421905" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T01:11:59.421798" elapsed="0.001038"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:11:59.422928" 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-19T01:11:59.427790" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:11:59.428350" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:59.428720" 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-19T01:11:59.424310" elapsed="0.004626"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:11:59.047571" elapsed="0.381610"/>
</kw>
<msg time="2026-04-19T01:11:59.429485" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:11:59.046840" elapsed="0.382705"/>
</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-19T01:11:59.045447" elapsed="0.384181"/>
</kw>
<msg time="2026-04-19T01:11:59.429686" 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-19T01:11:59.044275" elapsed="0.385459"/>
</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-19T01:11:59.432809" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:11:59.433305" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:11:59.433601" elapsed="0.000129"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:11:59.430153" elapsed="0.003631"/>
</kw>
<msg time="2026-04-19T01:11:59.433884" level="INFO">${output} = 1</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-19T01:11:59.042298" elapsed="0.391614"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:11:59.434463" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:11:59.434209" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:11:59.434552" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:11:59.434706" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:11:59.040002" elapsed="0.394730"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:11:59.434779" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:11:59.434924" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:11:59.037669" elapsed="0.397280"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:11:59.435527" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:11:59.435124" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:11:59.036607" elapsed="0.399111">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:01.439305" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:01.438520" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:01.441496" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:01.440845" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:01.443354" 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-19T01:12:01.443575" 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-19T01:12:01.442988" elapsed="0.000645"/>
</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-19T01:12:01.451792" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:01.450818" elapsed="0.001085"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:01.450741" elapsed="0.001255"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:01.454016" 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-19T01:12:01.454378" 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-19T01:12:01.453412" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:01.456229" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:01.455524" elapsed="0.000815"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:01.458067" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:01.457357" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:01.460425" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:01.460504" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:01.460139" 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-19T01:12:01.460753" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:01.462312" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:01.794985" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:11:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:01.461914" elapsed="0.333248"/>
</kw>
<msg time="2026-04-19T01:12:01.795252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:01.461528" elapsed="0.333824"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:01.459362" elapsed="0.336300"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:01.797194" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:01.820406" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:01.820672" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:01.820824" 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-19T01:12:01.796780" elapsed="0.024139"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:01.821934" elapsed="0.000428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:01.823403" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:01.822935" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:01.823929" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:01.823677" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:01.823617" elapsed="0.000461"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:01.824438" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T01:12:01.824233" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:01.824183" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:01.824689" 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-19T01:12:01.829447" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:12:01.829997" elapsed="0.000374"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:01.830567" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:01.826056" elapsed="0.004722"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:01.448008" elapsed="0.382997"/>
</kw>
<msg time="2026-04-19T01:12:01.831481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:01.446504" elapsed="0.385036"/>
</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-19T01:12:01.445286" elapsed="0.386337"/>
</kw>
<msg time="2026-04-19T01:12:01.831663" 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-19T01:12:01.444010" elapsed="0.387699"/>
</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-19T01:12:01.834676" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:01.835212" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:01.835508" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:01.832001" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T01:12:01.835835" level="INFO">${output} = 1</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-19T01:12:01.442073" elapsed="0.393788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:01.836305" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:01.836056" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:01.836392" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:12:01.836583" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:01.439829" elapsed="0.396781"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:01.836658" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:01.836803" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:01.437680" elapsed="0.399148"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:01.837397" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:01.836987" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:01.436575" elapsed="0.401013">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:03.839859" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:03.839382" elapsed="0.000520"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:03.841045" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:03.840695" elapsed="0.000385"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:03.842121" 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-19T01:12:03.842249" 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-19T01:12:03.841866" elapsed="0.000415"/>
</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-19T01:12:03.847195" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:03.846605" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:03.846234" elapsed="0.001127"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:03.849066" 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-19T01:12:03.849348" 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-19T01:12:03.848536" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:03.851318" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:03.850597" elapsed="0.000848"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:03.853424" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:03.852586" elapsed="0.000954"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:03.856414" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:03.856507" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:03.856025" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:03.856795" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:03.858350" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:04.184749" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:03.857925" elapsed="0.327090"/>
</kw>
<msg time="2026-04-19T01:12:04.185122" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:03.857483" elapsed="0.327727"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:03.854932" elapsed="0.330557"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:04.186999" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:04.209917" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:04.210463" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:04.210800" 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-19T01:12:04.186590" elapsed="0.024421"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:04.213294" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:04.216454" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:04.215466" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:04.217579" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:04.217069" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:04.216917" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:04.218678" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:12:04.218230" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:04.218120" elapsed="0.000906"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:04.219370" elapsed="0.000091"/>
</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-19T01:12:04.226608" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:12:04.227207" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:04.227583" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:04.222303" elapsed="0.005494"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:03.844666" elapsed="0.383354"/>
</kw>
<msg time="2026-04-19T01:12:04.228460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:03.843801" elapsed="0.384721"/>
</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-19T01:12:03.843138" elapsed="0.385468"/>
</kw>
<msg time="2026-04-19T01:12:04.228647" 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-19T01:12:03.842483" elapsed="0.386210"/>
</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-19T01:12:04.231767" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:12:04.232267" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:04.232566" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:04.228987" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T01:12:04.232808" level="INFO">${output} = 1</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-19T01:12:03.841355" elapsed="0.391479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:04.233283" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:04.233014" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:04.233371" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:12:04.233524" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:03.840185" elapsed="0.393365"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:04.233597" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:04.233742" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:03.838887" elapsed="0.394880"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:04.234398" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:04.233979" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:03.838229" elapsed="0.396355">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:06.238147" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:06.237387" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:06.240274" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:06.239640" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:06.242118" 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-19T01:12:06.242349" 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-19T01:12:06.241763" elapsed="0.000677"/>
</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-19T01:12:06.249625" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:06.248970" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:06.248605" elapsed="0.001172"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:06.251314" 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-19T01:12:06.251571" 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-19T01:12:06.250831" elapsed="0.000847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:06.253286" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:06.252704" elapsed="0.000697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:06.255187" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:06.254441" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:06.257699" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:06.257779" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:06.257412" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:06.258019" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:06.259546" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:06.612668" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:06.259212" elapsed="0.353608"/>
</kw>
<msg time="2026-04-19T01:12:06.612908" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:06.258661" elapsed="0.354339"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:06.256606" elapsed="0.356695"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:06.614822" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:06.637940" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:06.638501" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:06.638834" 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-19T01:12:06.614418" elapsed="0.024663"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:06.641508" elapsed="0.000969"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:06.644828" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:06.643824" 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-19T01:12:06.645987" elapsed="0.000103"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:06.645467" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:06.645336" elapsed="0.001057"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:06.647224" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:12:06.646728" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:06.646616" elapsed="0.000842"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:06.647572" elapsed="0.000056"/>
</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-19T01:12:06.656537" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T01:12:06.657316" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:06.657809" 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-19T01:12:06.649448" elapsed="0.008668"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:06.246853" elapsed="0.411604"/>
</kw>
<msg time="2026-04-19T01:12:06.658883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:06.245314" elapsed="0.413648"/>
</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-19T01:12:06.243966" elapsed="0.415249"/>
</kw>
<msg time="2026-04-19T01:12:06.659256" 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-19T01:12:06.242798" elapsed="0.416504"/>
</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-19T01:12:06.662302" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:12:06.662818" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:06.663130" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:06.659591" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T01:12:06.663368" level="INFO">${output} = 1</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-19T01:12:06.240812" elapsed="0.422580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:06.663815" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:06.663570" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:06.663901" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:06.664130" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:06.238700" elapsed="0.425457"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:06.664203" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:06.664346" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:06.236548" elapsed="0.427822"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:06.664913" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:06.664523" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:06.235478" elapsed="0.429633">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:08.668565" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:08.667803" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:08.670868" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:08.670260" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:08.672711" 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-19T01:12:08.672939" 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-19T01:12:08.672388" elapsed="0.000611"/>
</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-19T01:12:08.679647" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:08.679188" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:08.679132" elapsed="0.000651"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:08.681440" 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-19T01:12:08.681689" 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-19T01:12:08.680756" elapsed="0.001036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:08.683321" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:08.682769" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:08.685111" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:08.684397" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:08.687645" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:08.687721" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:08.687361" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:08.687954" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:08.689238" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:09.012561" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:08.688876" elapsed="0.323804"/>
</kw>
<msg time="2026-04-19T01:12:09.012754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:08.688520" elapsed="0.324316"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:08.686594" elapsed="0.326539"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:09.014570" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:09.037400" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:09.037890" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:09.038312" 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-19T01:12:09.014204" elapsed="0.024497"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:09.041121" elapsed="0.000844"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:09.044341" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:09.043305" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:09.045622" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:09.044909" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:09.044788" elapsed="0.001130"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:09.046735" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:12:09.046286" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:09.046175" elapsed="0.000979"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:09.047334" 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-19T01:12:09.053711" 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-19T01:12:09.054281" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:09.054637" 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-19T01:12:09.050331" elapsed="0.004515"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:08.677367" elapsed="0.377732"/>
</kw>
<msg time="2026-04-19T01:12:09.055409" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:08.675803" elapsed="0.379664"/>
</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-19T01:12:08.674571" elapsed="0.380981"/>
</kw>
<msg time="2026-04-19T01:12:09.055593" 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-19T01:12:08.673406" elapsed="0.382234"/>
</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-19T01:12:09.058719" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:12:09.059221" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:09.059513" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:09.055936" elapsed="0.003725"/>
</kw>
<msg time="2026-04-19T01:12:09.059753" level="INFO">${output} = 1</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-19T01:12:08.671444" elapsed="0.388335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:09.060268" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:09.059955" elapsed="0.000357"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:09.060355" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:09.060506" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:08.669300" elapsed="0.391231"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:09.060577" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:09.060721" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:08.666972" elapsed="0.393774"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:09.061333" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:09.060902" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:08.665907" elapsed="0.395614">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:11.065247" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:11.064479" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:11.067360" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:11.066715" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:11.069266" 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-19T01:12:11.069523" 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-19T01:12:11.068900" elapsed="0.000661"/>
</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-19T01:12:11.074874" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:11.074247" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:11.074173" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:11.077561" 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-19T01:12:11.077903" 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-19T01:12:11.076608" elapsed="0.001486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:11.080234" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:11.079433" elapsed="0.000957"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:11.082355" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:11.081584" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:11.084719" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:11.084797" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:11.084436" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:11.085049" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:11.086464" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:11.407904" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:11.085981" elapsed="0.322074"/>
</kw>
<msg time="2026-04-19T01:12:11.408138" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:11.085620" elapsed="0.322602"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:11.083644" elapsed="0.324853"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:11.409966" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:11.432759" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:11.433347" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:11.433704" 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-19T01:12:11.409586" elapsed="0.024340"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:11.436479" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:11.439855" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:11.438755" elapsed="0.001418"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:11.440743" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:11.440404" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:11.440324" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:11.441479" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:12:11.441164" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:11.441093" elapsed="0.000617"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:11.441826" elapsed="0.000055"/>
</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-19T01:12:11.448889" elapsed="0.000510"/>
</kw>
<kw name="Open 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-19T01:12:11.449792" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:11.450334" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:11.443853" elapsed="0.006786"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:11.072313" elapsed="0.378650"/>
</kw>
<msg time="2026-04-19T01:12:11.451563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:11.071304" elapsed="0.380343"/>
</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-19T01:12:11.070525" elapsed="0.381243"/>
</kw>
<msg time="2026-04-19T01:12:11.451830" 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-19T01:12:11.069785" elapsed="0.382147"/>
</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-19T01:12:11.455112" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:12:11.455593" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:11.455897" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:11.452308" elapsed="0.003754"/>
</kw>
<msg time="2026-04-19T01:12:11.456155" level="INFO">${output} = 1</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-19T01:12:11.067906" elapsed="0.388275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:11.456611" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:11.456365" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:11.456697" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:11.456849" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:11.065773" elapsed="0.391102"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:11.456922" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:12:11.457082" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:11.063619" elapsed="0.393488"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:11.457658" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:11.457265" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:11.062379" elapsed="0.395461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:13.461225" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:13.460480" elapsed="0.000814"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:13.463288" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:13.462670" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:13.464509" 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-19T01:12:13.464659" 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-19T01:12:13.464281" elapsed="0.000418"/>
</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-19T01:12:13.470116" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:13.469462" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:13.469387" elapsed="0.001054"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:13.472775" 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-19T01:12:13.473209" 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-19T01:12:13.471831" elapsed="0.001514"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:13.475513" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:13.474703" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:13.477382" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:13.476592" elapsed="0.000888"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:13.479725" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:13.479801" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:13.479441" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:13.480053" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:13.481450" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:13.803443" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:13.480967" elapsed="0.322616"/>
</kw>
<msg time="2026-04-19T01:12:13.803661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:13.480609" elapsed="0.323133"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:13.478659" elapsed="0.325356"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:13.805492" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:13.827966" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:13.828509" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:13.828834" 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-19T01:12:13.805116" elapsed="0.023958"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:13.831264" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:13.834339" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:13.833381" elapsed="0.001188"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:13.835489" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:13.834957" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:13.834834" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:13.836583" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:12:13.836132" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:13.835994" elapsed="0.000938"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:13.837332" elapsed="0.000111"/>
</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-19T01:12:13.843169" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:12:13.843718" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:13.844088" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:13.839749" elapsed="0.004548"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:13.467552" elapsed="0.376967"/>
</kw>
<msg time="2026-04-19T01:12:13.844887" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:13.466524" elapsed="0.378422"/>
</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-19T01:12:13.465711" elapsed="0.379378"/>
</kw>
<msg time="2026-04-19T01:12:13.845134" 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-19T01:12:13.464931" elapsed="0.380251"/>
</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-19T01:12:13.848157" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:12:13.848638" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:13.848932" elapsed="0.000195"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:13.845481" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T01:12:13.849275" level="INFO">${output} = 1</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-19T01:12:13.463650" elapsed="0.385652"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:13.849737" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:13.849486" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:13.849825" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:12:13.849978" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:13.461739" elapsed="0.388265"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:13.850067" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:13.850215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:13.459637" elapsed="0.390603"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:13.850812" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:13.850397" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:13.458597" elapsed="0.392397">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:15.854598" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:15.853809" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:15.856613" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:15.856182" elapsed="0.000469"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:15.857785" 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-19T01:12:15.857928" 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-19T01:12:15.857564" elapsed="0.000402"/>
</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-19T01:12:15.863650" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:15.862670" elapsed="0.001092"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:15.862595" elapsed="0.001252"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:15.865866" 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-19T01:12:15.866139" 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-19T01:12:15.865325" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:15.867750" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:15.867204" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:15.869676" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:15.868934" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:15.872110" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:15.872190" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:15.871807" 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-19T01:12:15.872447" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:15.873718" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:16.178778" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:15.873391" elapsed="0.305504"/>
</kw>
<msg time="2026-04-19T01:12:16.178968" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:15.873008" elapsed="0.306061"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:15.871021" elapsed="0.308298"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:16.180745" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:16.203369" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:16.203886" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:16.204278" 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-19T01:12:16.180370" elapsed="0.024126"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:16.206769" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:16.209968" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:16.208943" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:16.211120" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:16.210585" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:16.210463" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:16.212214" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:12:16.211732" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:16.211627" elapsed="0.000942"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:16.212744" 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-19T01:12:16.218513" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:12:16.219089" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:16.219448" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:16.215119" elapsed="0.004543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:15.860742" elapsed="0.359141"/>
</kw>
<msg time="2026-04-19T01:12:16.220210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:15.859709" elapsed="0.360559"/>
</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-19T01:12:15.858928" elapsed="0.361421"/>
</kw>
<msg time="2026-04-19T01:12:16.220389" 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-19T01:12:15.858212" elapsed="0.362224"/>
</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-19T01:12:16.223557" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:12:16.224037" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:16.224353" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:16.220785" elapsed="0.003731"/>
</kw>
<msg time="2026-04-19T01:12:16.224621" level="INFO">${output} = 1</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-19T01:12:15.856957" elapsed="0.367691"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:16.225176" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:16.224825" elapsed="0.000397"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:16.225265" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:16.225421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:15.855168" elapsed="0.370279"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:16.225495" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:16.225643" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:15.852947" elapsed="0.372721"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:16.226259" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:16.225827" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:15.851808" elapsed="0.374633">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:18.229855" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:18.229129" elapsed="0.000796"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:18.232006" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:18.231373" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:18.233924" 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-19T01:12:18.234191" 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-19T01:12:18.233599" elapsed="0.000653"/>
</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-19T01:12:18.239767" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:18.239159" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:18.238852" elapsed="0.001060"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:18.241393" 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-19T01:12:18.241642" 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-19T01:12:18.240922" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:18.243311" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:18.242725" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:18.245151" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:18.244431" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:18.247582" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:18.247659" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:18.247301" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:18.247891" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:18.249255" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:18.566261" 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 Sun Apr 19 01:11:18 UTC 2026

  System load:  0.08               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:18.248909" elapsed="0.317497"/>
</kw>
<msg time="2026-04-19T01:12:18.566504" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:18.248546" elapsed="0.318047"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:18.246461" elapsed="0.320414"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:18.568371" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:18.591644" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:18.592188" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:18.592519" 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-19T01:12:18.567972" elapsed="0.024759"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:18.594955" elapsed="0.000762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:18.597152" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:18.596520" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:18.597842" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:18.597517" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:18.597439" elapsed="0.000592"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:18.598535" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:12:18.598255" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:18.598187" elapsed="0.000568"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:18.598869" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:18.604799" elapsed="0.000441"/>
</kw>
<kw name="Open 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-19T01:12:18.605455" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:18.605807" 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-19T01:12:18.600742" elapsed="0.005271"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:18.237522" elapsed="0.368740"/>
</kw>
<msg time="2026-04-19T01:12:18.606563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:18.236818" elapsed="0.369802"/>
</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-19T01:12:18.235764" elapsed="0.370936"/>
</kw>
<msg time="2026-04-19T01:12:18.606741" 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-19T01:12:18.234600" elapsed="0.372187"/>
</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-19T01:12:18.609870" 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-19T01:12:18.610459" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:18.610752" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:18.607092" elapsed="0.003808"/>
</kw>
<msg time="2026-04-19T01:12:18.611066" level="INFO">${output} = 1</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-19T01:12:18.232596" elapsed="0.378497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:18.611552" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:18.611270" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:18.611641" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:18.611793" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:18.230412" elapsed="0.381406"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:18.611865" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:18.612011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:18.228291" elapsed="0.383748"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:18.612608" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:18.612212" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:18.227222" elapsed="0.385568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:20.616595" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:20.615797" elapsed="0.000927"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:20.618865" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:20.618231" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:20.620820" 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-19T01:12:20.621117" 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-19T01:12:20.620448" elapsed="0.000733"/>
</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-19T01:12:20.627924" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:20.627434" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:20.627146" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:20.629581" 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-19T01:12:20.629833" 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-19T01:12:20.629117" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:20.631528" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:20.630932" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:20.633480" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:20.632716" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:20.635959" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:20.636054" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:20.635672" 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-19T01:12:20.636292" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:20.637606" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:21.211619" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:20.637269" elapsed="0.574585"/>
</kw>
<msg time="2026-04-19T01:12:21.211936" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:20.636869" elapsed="0.575159"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:20.634809" elapsed="0.577506"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:21.213839" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:21.236668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:21.237263" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:21.237627" 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-19T01:12:21.213438" elapsed="0.024405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:21.240158" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:21.242709" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:21.242089" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:21.243452" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:21.243119" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:21.243014" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:21.244175" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:12:21.243864" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:21.243792" elapsed="0.000612"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:21.244525" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:21.252644" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T01:12:21.253231" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:21.253627" 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-19T01:12:21.246542" elapsed="0.007297"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:20.625706" elapsed="0.628488"/>
</kw>
<msg time="2026-04-19T01:12:21.254501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:20.624120" elapsed="0.630440"/>
</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-19T01:12:20.622796" elapsed="0.631844"/>
</kw>
<msg time="2026-04-19T01:12:21.254681" 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-19T01:12:20.621543" elapsed="0.633183"/>
</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-19T01:12:21.257751" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T01:12:21.258282" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:21.258581" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:21.255022" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T01:12:21.258822" level="INFO">${output} = 1</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-19T01:12:20.619455" elapsed="0.639392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:21.259317" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:21.259052" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:21.259407" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:21.259557" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:20.617245" elapsed="0.642337"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:21.259628" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:21.259769" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:20.614911" elapsed="0.644882"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:21.260418" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:21.259997" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:20.613770" elapsed="0.646835">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:23.264172" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:23.263410" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:23.266303" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:23.265665" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:23.268144" 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-19T01:12:23.268374" 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-19T01:12:23.267788" elapsed="0.000646"/>
</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-19T01:12:23.274185" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:23.273524" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:23.273448" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:23.324390" 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-19T01:12:23.324722" 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-19T01:12:23.275742" elapsed="0.049088"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:23.326619" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:23.325978" elapsed="0.000753"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:23.328462" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:23.327732" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:23.330942" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:23.331019" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:23.330655" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:23.331272" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:23.332561" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:23.638306" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:23.332236" elapsed="0.306186"/>
</kw>
<msg time="2026-04-19T01:12:23.638499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:23.331852" elapsed="0.306724"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:23.329818" elapsed="0.309033"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:23.640315" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:23.662824" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:23.663438" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:23.663778" 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-19T01:12:23.639918" elapsed="0.024069"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:23.666361" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:23.669615" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:23.668618" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:23.670734" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:23.670240" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:23.670112" elapsed="0.000910"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:23.671840" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:12:23.671388" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:23.671280" elapsed="0.001122"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:23.672578" elapsed="0.000085"/>
</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-19T01:12:23.677932" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T01:12:23.678499" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:23.678860" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:23.674563" elapsed="0.004530"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:23.271538" elapsed="0.407784"/>
</kw>
<msg time="2026-04-19T01:12:23.679632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:23.270599" elapsed="0.409091"/>
</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-19T01:12:23.269833" elapsed="0.409939"/>
</kw>
<msg time="2026-04-19T01:12:23.679814" 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-19T01:12:23.268834" elapsed="0.411026"/>
</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-19T01:12:23.682921" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T01:12:23.683464" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:23.683756" 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-19T01:12:23.680218" elapsed="0.003685"/>
</kw>
<msg time="2026-04-19T01:12:23.683993" level="INFO">${output} = 1</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-19T01:12:23.266840" elapsed="0.417178"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:23.684564" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:23.684309" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:23.684651" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:23.684803" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:23.264722" elapsed="0.420119"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:23.684889" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:23.685035" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:23.262569" elapsed="0.422505"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:23.685702" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:23.685231" elapsed="0.000546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:23.261488" elapsed="0.424399">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:25.689318" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:25.688554" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:25.691631" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:25.690984" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:25.693555" 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-19T01:12:25.693791" 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-19T01:12:25.693171" elapsed="0.000680"/>
</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-19T01:12:25.700018" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:25.699370" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:25.699292" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:25.702370" 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-19T01:12:25.702729" 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-19T01:12:25.701728" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:25.704399" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:25.703842" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:25.706331" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:25.705534" elapsed="0.000896"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:25.708716" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:25.708795" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:25.708426" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:25.709071" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:25.710552" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:26.019236" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:25.710220" elapsed="0.309154"/>
</kw>
<msg time="2026-04-19T01:12:26.019454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:25.709700" elapsed="0.309840"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:25.707631" elapsed="0.312210"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:26.021318" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:26.044022" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:26.044559" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:26.044895" 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-19T01:12:26.020915" elapsed="0.024237"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:26.047370" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:26.050007" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:26.049396" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:26.050811" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:26.050407" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:26.050329" elapsed="0.000671"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:26.051517" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:12:26.051229" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:26.051160" elapsed="0.000582"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:26.051862" elapsed="0.000087"/>
</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-19T01:12:26.058135" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:26.058694" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:26.059067" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:26.053864" elapsed="0.005414"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:25.696915" elapsed="0.362583"/>
</kw>
<msg time="2026-04-19T01:12:26.059802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:25.695869" elapsed="0.363992"/>
</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-19T01:12:25.695109" elapsed="0.364851"/>
</kw>
<msg time="2026-04-19T01:12:26.060002" 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-19T01:12:25.694238" elapsed="0.365825"/>
</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-19T01:12:26.063131" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:12:26.063606" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:26.063898" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:26.060359" elapsed="0.003734"/>
</kw>
<msg time="2026-04-19T01:12:26.064187" level="INFO">${output} = 1</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-19T01:12:25.692220" elapsed="0.371992"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:26.064641" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:26.064394" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:26.064728" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:12:26.064881" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:25.690056" elapsed="0.374850"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:26.064954" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:12:26.065178" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:25.687709" elapsed="0.377494"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:26.065762" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:26.065361" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:25.686647" elapsed="0.379301">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:28.069820" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:28.068996" elapsed="0.001103"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:28.072482" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:28.071676" elapsed="0.000875"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:28.074449" 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-19T01:12:28.074921" 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-19T01:12:28.074097" elapsed="0.000890"/>
</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-19T01:12:28.080251" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:28.079720" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:28.079652" elapsed="0.000745"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:28.082044" 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-19T01:12:28.082300" 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-19T01:12:28.081561" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:28.084051" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:28.083413" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:28.085914" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:28.085178" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:28.088476" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:28.088557" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:28.088177" 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-19T01:12:28.088798" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:28.090147" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:28.399369" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:28.089786" elapsed="0.309772"/>
</kw>
<msg time="2026-04-19T01:12:28.399668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:28.089405" elapsed="0.310378"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:28.087353" elapsed="0.312836"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:28.402265" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:28.424930" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:28.425475" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:28.425852" 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-19T01:12:28.401726" elapsed="0.024378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:28.428352" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:28.431554" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:28.430533" elapsed="0.001249"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:28.432676" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:28.432170" elapsed="0.000674"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:28.432007" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:28.433828" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T01:12:28.433330" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:28.433220" elapsed="0.000999"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:28.434395" 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-19T01:12:28.439390" 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-19T01:12:28.440017" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:28.440400" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:28.435963" elapsed="0.004668"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:28.077991" elapsed="0.362863"/>
</kw>
<msg time="2026-04-19T01:12:28.441186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:28.077274" elapsed="0.363976"/>
</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-19T01:12:28.076707" elapsed="0.364626"/>
</kw>
<msg time="2026-04-19T01:12:28.441374" 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-19T01:12:28.075397" elapsed="0.366023"/>
</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-19T01:12:28.444670" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:28.445177" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:28.445474" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:28.441746" elapsed="0.003878"/>
</kw>
<msg time="2026-04-19T01:12:28.445715" level="INFO">${output} = 1</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-19T01:12:28.073087" elapsed="0.372671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:28.446228" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:28.445958" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:28.446316" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:12:28.446472" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:28.070608" elapsed="0.375889"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:28.446544" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:28.446690" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:28.067991" elapsed="0.378723"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:28.447373" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:28.446872" elapsed="0.000578">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:28.066788" elapsed="0.380777">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:30.451090" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:30.450341" elapsed="0.000819"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:30.452677" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:30.452260" elapsed="0.000464"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:30.454102" 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-19T01:12:30.454277" 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-19T01:12:30.453823" elapsed="0.000494"/>
</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-19T01:12:30.459943" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:30.459458" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:30.459330" elapsed="0.000842"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:30.461620" 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-19T01:12:30.461866" 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-19T01:12:30.461177" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:30.463740" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:30.463198" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:30.465563" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:30.464843" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:30.468020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:30.468116" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:30.467735" 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-19T01:12:30.468355" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:30.469621" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:30.790988" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:30.469297" elapsed="0.321851"/>
</kw>
<msg time="2026-04-19T01:12:30.791231" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:30.468914" elapsed="0.322425"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:30.466953" elapsed="0.324665"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:30.793115" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:30.816161" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:30.816664" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:30.817000" 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-19T01:12:30.792705" elapsed="0.024558"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:30.819538" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:30.821754" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:30.821154" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:30.822498" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:30.822177" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:30.822096" 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-19T01:12:30.823191" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:12:30.822884" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:30.822817" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:30.823541" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:30.829734" elapsed="0.000510"/>
</kw>
<kw name="Open 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-19T01:12:30.830520" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:30.831084" 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-19T01:12:30.825546" elapsed="0.005775"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:30.457227" elapsed="0.374349"/>
</kw>
<msg time="2026-04-19T01:12:30.831955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:30.456189" elapsed="0.375826"/>
</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-19T01:12:30.455373" elapsed="0.376743"/>
</kw>
<msg time="2026-04-19T01:12:30.832157" 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-19T01:12:30.454558" elapsed="0.377646"/>
</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-19T01:12:30.835275" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T01:12:30.835793" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:30.836107" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:30.832497" elapsed="0.003764"/>
</kw>
<msg time="2026-04-19T01:12:30.836354" level="INFO">${output} = 1</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-19T01:12:30.453137" elapsed="0.383243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:30.836814" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:30.836564" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:30.836904" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:30.837074" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:30.451582" elapsed="0.385519"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:30.837150" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:12:30.837296" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:30.449491" elapsed="0.387831"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:30.837868" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:30.837478" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:30.448452" elapsed="0.389637">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:32.841605" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:32.840807" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:32.843713" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:32.843109" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:32.845578" 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-19T01:12:32.845806" 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-19T01:12:32.845226" elapsed="0.000640"/>
</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-19T01:12:32.852125" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:32.851629" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:32.851332" elapsed="0.000942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:32.853722" 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-19T01:12:32.853971" 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-19T01:12:32.853271" elapsed="0.000817"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:32.855595" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:32.855058" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:32.857483" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:32.856744" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:32.860138" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:32.860218" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:32.859838" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:32.860454" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:32.861872" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:33.184909" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:32.861547" elapsed="0.323538"/>
</kw>
<msg time="2026-04-19T01:12:33.185171" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:32.861003" elapsed="0.324257"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:32.858933" elapsed="0.326659"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:33.187121" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:33.209880" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:33.210443" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:33.210771" 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-19T01:12:33.186706" elapsed="0.024275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:33.213251" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:33.215885" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:33.215279" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:33.216605" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:33.216282" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:33.216202" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:33.217296" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:12:33.216995" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:33.216929" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:33.217632" elapsed="0.000051"/>
</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-19T01:12:33.223950" 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-19T01:12:33.224509" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:33.224863" 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-19T01:12:33.219533" elapsed="0.005557"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:32.849993" elapsed="0.375324"/>
</kw>
<msg time="2026-04-19T01:12:33.225623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:32.848627" elapsed="0.377056"/>
</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-19T01:12:32.847417" elapsed="0.378348"/>
</kw>
<msg time="2026-04-19T01:12:33.225806" 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-19T01:12:32.846248" elapsed="0.379606"/>
</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-19T01:12:33.229022" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:12:33.229509" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:33.229803" 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-19T01:12:33.226250" elapsed="0.003705"/>
</kw>
<msg time="2026-04-19T01:12:33.230254" level="INFO">${output} = 1</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-19T01:12:32.844283" elapsed="0.385999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:33.230714" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:33.230467" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:33.230801" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:33.230953" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:32.842162" elapsed="0.388816"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:33.231025" elapsed="0.000061"/>
</return>
<msg time="2026-04-19T01:12:33.231209" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:32.839967" elapsed="0.391267"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:33.231783" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:33.231392" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:32.838919" elapsed="0.393049">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:35.235583" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:35.234801" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:35.238854" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:35.238018" elapsed="0.000896"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:35.240089" 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-19T01:12:35.240236" 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-19T01:12:35.239835" elapsed="0.000440"/>
</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-19T01:12:35.246012" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:35.245358" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:35.244943" elapsed="0.001395"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:35.247955" 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-19T01:12:35.248217" 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-19T01:12:35.247512" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:35.249839" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:35.249297" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:35.251696" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:35.250935" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:35.254041" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:35.254122" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:35.253744" 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-19T01:12:35.254385" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:35.255818" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:35.616350" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:35.255490" elapsed="0.360992"/>
</kw>
<msg time="2026-04-19T01:12:35.616562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:35.255008" elapsed="0.361639"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:35.252978" elapsed="0.363937"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:35.618385" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:35.641565" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:35.642146" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:35.642487" 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-19T01:12:35.617990" elapsed="0.024709"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:35.645091" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:35.648350" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:35.647374" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:35.649666" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:35.649009" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:35.648881" elapsed="0.001114"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:35.650840" elapsed="0.000182"/>
</return>
<status status="PASS" start="2026-04-19T01:12:35.650381" elapsed="0.000909"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:35.650266" elapsed="0.001158"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:35.651603" elapsed="0.000085"/>
</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-19T01:12:35.656723" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:12:35.657290" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:35.657650" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:35.653254" elapsed="0.004606"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:35.243108" elapsed="0.415013"/>
</kw>
<msg time="2026-04-19T01:12:35.658431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:35.242091" elapsed="0.416398"/>
</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-19T01:12:35.241271" elapsed="0.417303"/>
</kw>
<msg time="2026-04-19T01:12:35.658616" 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-19T01:12:35.240513" elapsed="0.418150"/>
</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-19T01:12:35.661755" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:12:35.662252" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:35.662547" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:35.659075" elapsed="0.003659"/>
</kw>
<msg time="2026-04-19T01:12:35.662905" level="INFO">${output} = 1</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-19T01:12:35.239251" elapsed="0.423692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:35.663483" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:35.663231" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:35.663571" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:35.663722" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:35.236162" elapsed="0.427585"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:35.663794" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:35.663938" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:35.233883" elapsed="0.430080"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:35.664532" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:35.664135" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:35.232814" elapsed="0.431904">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:37.668628" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:37.667861" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:37.670524" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:37.670138" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:37.671705" 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-19T01:12:37.671890" 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-19T01:12:37.671458" elapsed="0.000472"/>
</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-19T01:12:37.679536" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:37.678995" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:37.676651" elapsed="0.003085"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:37.681306" 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-19T01:12:37.681579" 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-19T01:12:37.680805" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:37.683456" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:37.682876" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:37.685367" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:37.684637" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:37.687912" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:37.687991" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:37.687621" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:37.688335" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:37.689775" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:37.997517" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:37.689398" elapsed="0.308460"/>
</kw>
<msg time="2026-04-19T01:12:37.997972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:37.688914" elapsed="0.309194"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:37.686796" elapsed="0.311680"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:38.000164" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:38.023103" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:38.023692" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:38.024094" 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-19T01:12:37.999753" elapsed="0.024574"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:38.026808" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:38.030117" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:38.029081" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:38.031248" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:38.030710" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:38.030588" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:38.032555" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:12:38.031869" elapsed="0.000917"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:38.031761" elapsed="0.001154"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:38.033133" elapsed="0.000086"/>
</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-19T01:12:38.038956" elapsed="0.000557"/>
</kw>
<kw name="Open 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-19T01:12:38.039726" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:38.040152" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:38.035507" elapsed="0.004858"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:37.674690" elapsed="0.365899"/>
</kw>
<msg time="2026-04-19T01:12:38.040896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:37.673699" elapsed="0.367258"/>
</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-19T01:12:37.672904" elapsed="0.368152"/>
</kw>
<msg time="2026-04-19T01:12:38.041098" 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-19T01:12:37.672183" elapsed="0.368962"/>
</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-19T01:12:38.044277" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:12:38.044760" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:38.045073" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:38.041435" elapsed="0.003789"/>
</kw>
<msg time="2026-04-19T01:12:38.045316" level="INFO">${output} = 1</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-19T01:12:37.670866" elapsed="0.374475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:38.045768" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:38.045519" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:38.045873" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:12:38.046053" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:37.669195" elapsed="0.376884"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:38.046127" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:38.046274" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:37.666994" elapsed="0.379305"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:38.046920" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:38.046519" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:37.665713" elapsed="0.381409">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:40.050689" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:40.049925" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:40.052621" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:40.052230" elapsed="0.000429"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:40.053779" 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-19T01:12:40.053921" 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-19T01:12:40.053560" elapsed="0.000399"/>
</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-19T01:12:40.059418" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:40.058727" elapsed="0.000879"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:40.058644" elapsed="0.001059"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:40.061504" 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-19T01:12:40.061751" 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-19T01:12:40.060790" elapsed="0.001067"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:40.063390" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:40.062836" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:40.065201" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:40.064484" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:40.067658" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:40.067736" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:40.067343" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:40.067970" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:40.069247" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:40.379680" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:40.068904" elapsed="0.310891"/>
</kw>
<msg time="2026-04-19T01:12:40.379862" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:40.068543" elapsed="0.311392"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:40.066561" elapsed="0.313632"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:40.381548" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:40.404460" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:40.404951" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:40.405338" 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-19T01:12:40.381209" elapsed="0.024339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:40.407776" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:40.410836" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:40.409878" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:40.411975" elapsed="0.000089"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:40.411445" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:40.411325" elapsed="0.000844"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:40.412512" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T01:12:40.412310" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:40.412263" elapsed="0.000406"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:40.412746" 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-19T01:12:40.417406" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:12:40.417941" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:40.418388" 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-19T01:12:40.414107" elapsed="0.004487"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:40.056677" elapsed="0.362138"/>
</kw>
<msg time="2026-04-19T01:12:40.419136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:40.055718" elapsed="0.363484"/>
</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-19T01:12:40.054927" elapsed="0.364356"/>
</kw>
<msg time="2026-04-19T01:12:40.419323" 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-19T01:12:40.054209" elapsed="0.365161"/>
</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-19T01:12:40.422537" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:12:40.423015" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:40.423325" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:40.419658" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T01:12:40.423562" level="INFO">${output} = 1</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-19T01:12:40.052964" elapsed="0.370623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:40.424044" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:40.423783" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:40.424133" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:40.424285" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:40.051288" elapsed="0.373022"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:40.424357" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:12:40.424507" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:40.049108" elapsed="0.375423"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:40.425095" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:40.424686" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:40.047989" elapsed="0.377294">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:42.428878" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:42.428087" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:42.431232" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:42.430593" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:42.433263" 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-19T01:12:42.433499" 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-19T01:12:42.432866" elapsed="0.000691"/>
</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-19T01:12:42.440449" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:42.439792" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:42.439714" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:42.443255" 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-19T01:12:42.443614" 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-19T01:12:42.442261" elapsed="0.001502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:42.446012" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:42.445229" elapsed="0.000975"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:42.448790" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:42.447713" elapsed="0.001222"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:42.452405" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:42.452516" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:42.451986" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:42.452935" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:42.454321" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:42.781391" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:42.453973" elapsed="0.327660"/>
</kw>
<msg time="2026-04-19T01:12:42.781734" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:42.453603" elapsed="0.328251"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:42.450713" elapsed="0.331509"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:42.783812" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:42.806308" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:42.806816" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:42.807211" 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-19T01:12:42.783394" elapsed="0.024052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:42.809768" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:42.813514" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:42.812470" elapsed="0.001207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:42.814555" elapsed="0.000054"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:42.813923" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:42.813839" elapsed="0.000926"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:42.815350" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T01:12:42.814984" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:42.814912" elapsed="0.000714"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:42.815746" elapsed="0.000055"/>
</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-19T01:12:42.823324" 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-19T01:12:42.824239" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:42.824768" elapsed="0.000193"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:42.817976" elapsed="0.007151"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:42.437841" elapsed="0.387511"/>
</kw>
<msg time="2026-04-19T01:12:42.825663" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:42.436463" elapsed="0.389260"/>
</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-19T01:12:42.435223" elapsed="0.390584"/>
</kw>
<msg time="2026-04-19T01:12:42.825849" 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-19T01:12:42.433915" elapsed="0.391980"/>
</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-19T01:12:42.828976" 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-19T01:12:42.829474" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:42.829766" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:42.826202" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T01:12:42.830004" level="INFO">${output} = 1</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-19T01:12:42.431807" elapsed="0.398237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:42.830481" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:42.830231" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:42.830567" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:42.830721" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:42.429601" elapsed="0.401145"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:42.830793" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:42.830939" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:42.427241" elapsed="0.403722"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:42.831538" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:42.831135" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:42.426169" elapsed="0.405564">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:44.835525" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:44.834712" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:44.837948" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:44.837284" elapsed="0.000730"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:44.839975" 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-19T01:12:44.840463" 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-19T01:12:44.839607" elapsed="0.000928"/>
</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-19T01:12:44.845328" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:44.844830" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:44.844775" elapsed="0.000692"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:44.847153" 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-19T01:12:44.847401" 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-19T01:12:44.846452" elapsed="0.001049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:44.849095" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:44.848541" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:44.850906" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:44.850181" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:44.853435" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:44.853516" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:44.853096" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:44.853760" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:44.855071" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:45.164209" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:44.854727" elapsed="0.309612"/>
</kw>
<msg time="2026-04-19T01:12:45.164419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:44.854356" elapsed="0.310145"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:44.852325" elapsed="0.312443"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:45.166283" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:45.189185" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:45.189627" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:45.189906" 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-19T01:12:45.165858" elapsed="0.024262"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:45.191175" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:45.192618" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:45.192172" elapsed="0.000549"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:45.193141" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:45.192885" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:45.192828" elapsed="0.000459"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:45.193636" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T01:12:45.193433" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:45.193385" elapsed="0.000413"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:45.193878" 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-19T01:12:45.198586" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:12:45.199311" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:45.199669" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:45.195241" elapsed="0.004641"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:44.843468" elapsed="0.356654"/>
</kw>
<msg time="2026-04-19T01:12:45.200429" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:44.842782" elapsed="0.357704"/>
</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-19T01:12:44.842244" elapsed="0.358326"/>
</kw>
<msg time="2026-04-19T01:12:45.200611" 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-19T01:12:44.840923" elapsed="0.359734"/>
</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-19T01:12:45.203791" 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-19T01:12:45.204280" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:45.204571" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:45.200946" elapsed="0.003772"/>
</kw>
<msg time="2026-04-19T01:12:45.204808" level="INFO">${output} = 1</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-19T01:12:44.838581" elapsed="0.366253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:45.205292" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:45.205011" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:45.205378" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:12:45.205530" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:44.836136" elapsed="0.369419"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:45.205602" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:12:45.205745" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:44.833811" elapsed="0.371959"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:45.206340" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:45.205926" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:44.832629" elapsed="0.373896">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:47.210006" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:47.209275" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:47.212141" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:47.211504" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:47.213739" 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-19T01:12:47.213883" 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-19T01:12:47.213525" elapsed="0.000395"/>
</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-19T01:12:47.219712" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:47.219058" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:47.218537" elapsed="0.001449"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:47.222064" 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-19T01:12:47.222404" 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-19T01:12:47.221411" elapsed="0.001134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:47.224693" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:47.223918" elapsed="0.000978"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:47.226828" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:47.225996" elapsed="0.000945"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:47.229509" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:47.229592" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:47.229211" 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-19T01:12:47.229856" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:47.231488" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:47.562662" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:47.231126" elapsed="0.331712"/>
</kw>
<msg time="2026-04-19T01:12:47.562936" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:47.230638" elapsed="0.332427"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:47.228281" elapsed="0.335101"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:47.564918" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:47.587948" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:47.588491" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:47.588874" 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-19T01:12:47.564496" elapsed="0.024631"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:47.591363" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:47.594570" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:47.593575" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:47.595724" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:47.595194" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:47.595065" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:47.596909" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:12:47.596393" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:47.596281" elapsed="0.001046"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:47.597406" 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-19T01:12:47.602218" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:12:47.602763" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:47.603137" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:47.598768" elapsed="0.004579"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:47.216640" elapsed="0.386933"/>
</kw>
<msg time="2026-04-19T01:12:47.603975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:47.215662" elapsed="0.388385"/>
</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-19T01:12:47.214880" elapsed="0.389253"/>
</kw>
<msg time="2026-04-19T01:12:47.604175" 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-19T01:12:47.214165" elapsed="0.390058"/>
</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-19T01:12:47.607287" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:12:47.607760" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:47.608068" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:47.604516" elapsed="0.003703"/>
</kw>
<msg time="2026-04-19T01:12:47.608310" level="INFO">${output} = 1</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-19T01:12:47.212687" elapsed="0.395649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:47.608844" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:47.608512" elapsed="0.000380"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:47.608936" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:47.609163" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:47.210562" elapsed="0.398627"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:47.609237" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:12:47.609383" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:47.208391" elapsed="0.401017"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:47.609962" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:47.609565" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:47.207366" elapsed="0.402804">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:49.613733" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:49.612966" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:49.615877" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:49.615217" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:49.617252" 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-19T01:12:49.617396" 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-19T01:12:49.616992" elapsed="0.000441"/>
</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-19T01:12:49.623263" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:49.622430" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:49.621939" elapsed="0.001563"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:49.625773" 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-19T01:12:49.626176" 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-19T01:12:49.625127" elapsed="0.001189"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:49.628472" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:49.627723" elapsed="0.000858"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:49.630411" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:49.629655" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:49.632811" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:49.632888" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:49.632517" 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-19T01:12:49.633139" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:49.634552" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:49.959226" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:49.634210" elapsed="0.325175"/>
</kw>
<msg time="2026-04-19T01:12:49.959488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:49.633689" elapsed="0.325889"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:49.631728" elapsed="0.328140"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:49.961381" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:49.984095" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:49.984602" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:49.984935" 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-19T01:12:49.960965" elapsed="0.024227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:49.987553" elapsed="0.000967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:49.990737" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:49.989766" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:49.991880" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:49.991354" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:49.991230" elapsed="0.000974"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:49.992968" elapsed="0.000252"/>
</return>
<status status="PASS" start="2026-04-19T01:12:49.992524" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:49.992416" elapsed="0.001044"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:49.993716" elapsed="0.000085"/>
</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-19T01:12:49.999965" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T01:12:50.000524" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:50.000879" elapsed="0.000128"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:49.996559" elapsed="0.004622"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:49.620106" elapsed="0.381304"/>
</kw>
<msg time="2026-04-19T01:12:50.001720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:49.619138" elapsed="0.382638"/>
</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-19T01:12:49.618382" elapsed="0.383476"/>
</kw>
<msg time="2026-04-19T01:12:50.001900" 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-19T01:12:49.617651" elapsed="0.384296"/>
</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-19T01:12:50.005096" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:12:50.005568" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:50.005905" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:50.002328" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T01:12:50.006165" level="INFO">${output} = 1</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-19T01:12:49.616417" elapsed="0.389773"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:50.006616" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:50.006368" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:50.006704" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:50.006855" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:49.614283" elapsed="0.392597"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:50.006927" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:50.007128" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:49.612154" elapsed="0.395000"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:50.007789" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:50.007375" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:49.611013" elapsed="0.396961">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:52.011528" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:52.010765" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:52.013680" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:52.013071" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:52.015542" 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-19T01:12:52.015684" 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-19T01:12:52.015264" elapsed="0.000457"/>
</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-19T01:12:52.023700" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:52.023011" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:52.020433" elapsed="0.003462"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:52.025939" 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-19T01:12:52.026303" 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-19T01:12:52.025316" elapsed="0.001133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:52.028357" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:52.027740" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:52.030154" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:52.029444" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:52.032644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:52.032727" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:52.032327" 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-19T01:12:52.032967" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:52.034351" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:52.353370" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:52.033976" elapsed="0.319630"/>
</kw>
<msg time="2026-04-19T01:12:52.353756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:52.033605" elapsed="0.320303"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:52.031472" elapsed="0.323060"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:52.356469" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:52.379482" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:52.379976" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:52.380359" 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-19T01:12:52.356079" elapsed="0.024495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:52.382828" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:52.385984" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:52.384987" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:52.387162" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:52.386626" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:52.386498" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:52.388256" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:12:52.387780" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:52.387674" elapsed="0.000932"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:52.388782" elapsed="0.000082"/>
</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-19T01:12:52.395163" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:12:52.395710" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:52.396086" 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-19T01:12:52.391717" elapsed="0.004582"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:52.018582" elapsed="0.377938"/>
</kw>
<msg time="2026-04-19T01:12:52.396823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:52.017590" elapsed="0.379290"/>
</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-19T01:12:52.016790" elapsed="0.380173"/>
</kw>
<msg time="2026-04-19T01:12:52.397004" 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-19T01:12:52.015941" elapsed="0.381176"/>
</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-19T01:12:52.400203" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:12:52.400693" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:52.400990" elapsed="0.000200"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:52.397414" elapsed="0.003829"/>
</kw>
<msg time="2026-04-19T01:12:52.401399" level="INFO">${output} = 1</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-19T01:12:52.014258" elapsed="0.387168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:52.401876" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:52.401624" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:52.401964" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:12:52.402135" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:52.012100" elapsed="0.390061"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:52.402208" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:52.402384" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:52.009899" elapsed="0.392511"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:52.402962" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:52.402569" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:52.008806" elapsed="0.394356">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:54.406702" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:54.405905" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:54.408817" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:54.408214" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:54.410793" 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-19T01:12:54.411019" 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-19T01:12:54.410462" elapsed="0.000648"/>
</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-19T01:12:54.417669" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:54.416982" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:54.416904" elapsed="0.000956"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:54.419733" 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-19T01:12:54.419979" 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-19T01:12:54.419025" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:54.421616" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:54.421068" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:54.423462" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:54.422696" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:54.426101" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:54.426179" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:54.425801" 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-19T01:12:54.426415" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:54.427672" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:54.760049" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:54.427347" elapsed="0.332934"/>
</kw>
<msg time="2026-04-19T01:12:54.760363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:54.426968" elapsed="0.333479"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:54.424851" elapsed="0.335865"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:54.762257" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:54.784705" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:54.785338" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:54.785687" 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-19T01:12:54.761851" elapsed="0.024052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:54.788284" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:54.791510" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:54.790491" elapsed="0.001254"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:54.792661" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:54.792129" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:54.791971" elapsed="0.000981"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:54.793657" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T01:12:54.793385" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:54.793269" elapsed="0.000550"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:54.793897" 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-19T01:12:54.798770" elapsed="0.000431"/>
</kw>
<kw name="Open 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-19T01:12:54.799415" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:54.799777" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:54.795322" elapsed="0.004676"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:54.415112" elapsed="0.385127"/>
</kw>
<msg time="2026-04-19T01:12:54.800549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:54.413898" elapsed="0.386712"/>
</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-19T01:12:54.412629" elapsed="0.388063"/>
</kw>
<msg time="2026-04-19T01:12:54.800733" 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-19T01:12:54.411464" elapsed="0.389315"/>
</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-19T01:12:54.803871" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:12:54.804360" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:54.804659" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:54.801092" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T01:12:54.804899" level="INFO">${output} = 1</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-19T01:12:54.409436" elapsed="0.395489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:54.805411" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:54.805133" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:54.805500" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:12:54.805655" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:54.407262" elapsed="0.398419"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:54.805728" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:12:54.805873" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:54.405058" elapsed="0.400840"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:54.806543" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:54.806142" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:54.403966" elapsed="0.402766">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:56.810440" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:56.809572" elapsed="0.000939"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:56.812601" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:56.811924" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:56.813792" 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-19T01:12:56.813936" 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-19T01:12:56.813556" elapsed="0.000417"/>
</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-19T01:12:56.819304" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:56.818655" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:56.818577" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:56.821813" 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-19T01:12:56.822224" 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-19T01:12:56.820862" elapsed="0.001501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:56.824542" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:56.823716" elapsed="0.000945"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:56.826423" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:56.825635" elapsed="0.000885"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:56.828799" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:56.828877" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:56.828506" 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-19T01:12:56.829131" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:56.830599" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:57.143876" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:56.830267" elapsed="0.313804"/>
</kw>
<msg time="2026-04-19T01:12:57.144161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:56.829703" elapsed="0.314555"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:56.827704" elapsed="0.316842"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:57.146071" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:57.168611" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:57.169065" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:57.169294" 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-19T01:12:57.145640" elapsed="0.023799"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:57.171198" elapsed="0.000672"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:57.173453" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:57.172764" 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-19T01:12:57.174233" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:57.173843" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:57.173758" 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-19T01:12:57.174944" elapsed="0.000105"/>
</return>
<status status="PASS" start="2026-04-19T01:12:57.174644" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:57.174569" elapsed="0.000644"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:57.175331" elapsed="0.000057"/>
</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-19T01:12:57.183215" 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-19T01:12:57.184222" elapsed="0.000318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:57.184749" 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-19T01:12:57.177352" elapsed="0.007625"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:56.816689" elapsed="0.368544"/>
</kw>
<msg time="2026-04-19T01:12:57.185552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:56.815705" elapsed="0.369923"/>
</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-19T01:12:56.814938" elapsed="0.370779"/>
</kw>
<msg time="2026-04-19T01:12:57.185759" 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-19T01:12:56.814218" elapsed="0.371591"/>
</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-19T01:12:57.189323" elapsed="0.000418"/>
</kw>
<kw name="Open 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-19T01:12:57.189927" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:57.190284" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:57.186165" elapsed="0.004278"/>
</kw>
<msg time="2026-04-19T01:12:57.190545" level="INFO">${output} = 1</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-19T01:12:56.812948" elapsed="0.377624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:57.191184" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:57.190791" elapsed="0.000442"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:57.191282" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T01:12:57.191458" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:56.810975" elapsed="0.380510"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:57.191533" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:12:57.191682" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:56.808701" elapsed="0.383007"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:57.192351" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:57.191871" elapsed="0.000555">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:56.807583" elapsed="0.384962">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:12:59.195993" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:12:59.195272" elapsed="0.000817"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:12:59.198247" level="INFO">${member_ip} = 10.30.171.206</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-19T01:12:59.197620" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:59.200142" 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-19T01:12:59.200295" 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-19T01:12:59.199891" elapsed="0.000444"/>
</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-19T01:12:59.205869" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:12:59.205212" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:59.205131" elapsed="0.000964"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:59.208522" 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-19T01:12:59.208881" 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-19T01:12:59.207547" elapsed="0.001503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:59.211456" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:59.210483" elapsed="0.001135"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:12:59.213346" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:12:59.212614" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:12:59.215812" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:12:59.215890" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:12:59.215530" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:59.216138" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:12:59.217392" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:12:59.567935" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:12:59.217061" elapsed="0.351048"/>
</kw>
<msg time="2026-04-19T01:12:59.568202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:59.216688" elapsed="0.351612"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:12:59.214636" elapsed="0.353957"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:12:59.570124" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:12:59.592729" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:12:59.593281" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:12:59.593634" 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-19T01:12:59.569707" elapsed="0.024144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:59.596122" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:59.599358" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:59.598327" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:59.600271" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:12:59.599841" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:59.599758" elapsed="0.000703"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:12:59.600965" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T01:12:59.600674" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T01:12:59.600599" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:12:59.601328" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:59.608000" 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-19T01:12:59.608786" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:59.609304" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:59.603280" elapsed="0.006324"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:12:59.203188" elapsed="0.406742"/>
</kw>
<msg time="2026-04-19T01:12:59.610483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:12:59.202173" elapsed="0.408391"/>
</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-19T01:12:59.201356" elapsed="0.409324"/>
</kw>
<msg time="2026-04-19T01:12:59.610738" 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-19T01:12:59.200569" elapsed="0.410233"/>
</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-19T01:12:59.614156" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:12:59.614634" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:12:59.614941" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:12:59.611282" elapsed="0.003823"/>
</kw>
<msg time="2026-04-19T01:12:59.615197" level="INFO">${output} = 1</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-19T01:12:59.198787" elapsed="0.416436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:12:59.615716" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:12:59.615409" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:12:59.615803" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:12:59.615961" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:12:59.196681" elapsed="0.419305"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:12:59.616047" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:12:59.616194" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:12:59.194433" elapsed="0.421786"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:12:59.616815" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:12:59.616375" elapsed="0.000515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:12:59.193387" elapsed="0.423618">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:01.620549" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:01.619780" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:01.622718" level="INFO">${member_ip} = 10.30.171.206</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-19T01:13:01.622096" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:01.624586" 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-19T01:13:01.624994" 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-19T01:13:01.624245" elapsed="0.000845"/>
</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-19T01:13:01.631405" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:01.630734" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:01.630345" elapsed="0.001255"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:01.633655" 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-19T01:13:01.634024" 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-19T01:13:01.633017" elapsed="0.001173"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:01.636442" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:01.635647" elapsed="0.000953"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:01.639013" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:01.638116" elapsed="0.001102"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:01.641660" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:01.641738" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:01.641375" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:01.641986" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:01.643482" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:01.960006" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:12:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:01.643157" elapsed="0.317014"/>
</kw>
<msg time="2026-04-19T01:13:01.960256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:01.642705" elapsed="0.317639"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:01.640586" elapsed="0.320040"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:01.962232" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:13:01.985401" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:01.985924" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:13:01.986306" 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-19T01:13:01.961799" elapsed="0.024760"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:01.988833" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:01.992006" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:01.991013" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:01.993164" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:01.992625" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:01.992499" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:01.994321" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:13:01.993831" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:01.993676" elapsed="0.001000"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:01.994791" 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-19T01:13:01.999596" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:13:02.000226" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:02.000588" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:01.996198" elapsed="0.004600"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:01.628431" elapsed="0.372589"/>
</kw>
<msg time="2026-04-19T01:13:02.001348" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:01.627492" elapsed="0.373915"/>
</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-19T01:13:01.626720" elapsed="0.374772"/>
</kw>
<msg time="2026-04-19T01:13:02.001534" 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-19T01:13:01.625454" elapsed="0.376128"/>
</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-19T01:13:02.004606" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:13:02.005255" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:02.005552" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:02.001885" elapsed="0.003841"/>
</kw>
<msg time="2026-04-19T01:13:02.005890" level="INFO">${output} = 1</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-19T01:13:01.623302" elapsed="0.382615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:02.006478" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:02.006118" elapsed="0.000404"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:02.006564" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:02.006717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:01.621130" elapsed="0.385612"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:13:02.006789" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:13:02.006934" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:13:01.618933" elapsed="0.388025"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:13:02.007602" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:13:02.007210" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:13:01.617818" elapsed="0.389967">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:04.011262" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:04.010499" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:04.013474" level="INFO">${member_ip} = 10.30.171.206</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-19T01:13:04.012725" elapsed="0.000811"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:04.015834" 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-19T01:13:04.016180" 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-19T01:13:04.015300" elapsed="0.000944"/>
</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-19T01:13:04.025815" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:04.024620" elapsed="0.001350"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:04.023923" elapsed="0.002132"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:04.027509" 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-19T01:13:04.027749" 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-19T01:13:04.027060" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:04.029400" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:04.028839" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:04.031225" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:04.030514" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:04.033597" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:04.033675" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:04.033305" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:04.033916" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:04.035295" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:04.339395" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:04.034949" elapsed="0.304583"/>
</kw>
<msg time="2026-04-19T01:13:04.339616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:04.034588" elapsed="0.305115"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:04.032516" elapsed="0.307458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:04.341528" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:13:04.364708" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:04.365259" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:13:04.365593" 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-19T01:13:04.341123" elapsed="0.024680"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:04.368094" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:04.371504" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:04.370430" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:04.372703" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:04.372132" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:04.371972" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:04.373274" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T01:13:04.373066" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:04.372998" elapsed="0.000434"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:04.373510" 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-19T01:13:04.378309" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:13:04.378852" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:04.379300" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:04.374879" elapsed="0.004627"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:04.020951" elapsed="0.358777"/>
</kw>
<msg time="2026-04-19T01:13:04.380107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:04.019397" elapsed="0.360767"/>
</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-19T01:13:04.018114" elapsed="0.362132"/>
</kw>
<msg time="2026-04-19T01:13:04.380288" 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-19T01:13:04.016698" elapsed="0.363635"/>
</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-19T01:13:04.383392" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:13:04.383869" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:04.384180" 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-19T01:13:04.380635" elapsed="0.003692"/>
</kw>
<msg time="2026-04-19T01:13:04.384418" level="INFO">${output} = 1</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-19T01:13:04.014057" elapsed="0.370387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:04.384923" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:04.384641" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:04.385012" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T01:13:04.385182" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:04.011785" elapsed="0.373422"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:13:04.385253" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:13:04.385398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:13:04.009649" elapsed="0.375774"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:13:04.385972" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:13:04.385578" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:13:04.008569" elapsed="0.377609">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:06.389836" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:06.389062" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:06.392014" level="INFO">${member_ip} = 10.30.171.206</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-19T01:13:06.391435" elapsed="0.000635"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:06.393187" 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-19T01:13:06.393331" 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-19T01:13:06.392944" elapsed="0.000424"/>
</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-19T01:13:06.401338" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:06.400620" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:06.397912" elapsed="0.003627"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:06.403579" 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-19T01:13:06.403937" 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-19T01:13:06.402925" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:06.405662" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:06.405109" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:06.407527" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:06.406815" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:06.410016" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:06.410111" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:06.409730" 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-19T01:13:06.410346" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:06.411623" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:06.798594" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:06.411289" elapsed="0.387565"/>
</kw>
<msg time="2026-04-19T01:13:06.799011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:06.410911" elapsed="0.388292"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:06.408896" elapsed="0.390923"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:06.801890" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:13:06.824958" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:06.825503" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:13:06.825840" 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-19T01:13:06.801360" elapsed="0.024733"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:06.828359" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:06.831543" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:06.830544" elapsed="0.001230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:06.832664" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:06.832158" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:06.832000" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:06.833771" elapsed="0.000191"/>
</return>
<status status="PASS" start="2026-04-19T01:13:06.833322" elapsed="0.000975"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:06.833214" elapsed="0.001219"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:06.834614" elapsed="0.000086"/>
</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-19T01:13:06.845443" elapsed="0.001130"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:06.847070" elapsed="0.000393"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:06.847902" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:06.837661" elapsed="0.010598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:06.396088" elapsed="0.452483"/>
</kw>
<msg time="2026-04-19T01:13:06.849004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:06.395082" elapsed="0.454022"/>
</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-19T01:13:06.394320" elapsed="0.454902"/>
</kw>
<msg time="2026-04-19T01:13:06.849279" 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-19T01:13:06.393588" elapsed="0.455756"/>
</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-19T01:13:06.853635" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T01:13:06.854327" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:06.854740" 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-19T01:13:06.849830" elapsed="0.005118"/>
</kw>
<msg time="2026-04-19T01:13:06.855096" level="INFO">${output} = 1</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-19T01:13:06.392372" elapsed="0.462762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:06.855749" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:06.855400" elapsed="0.000411"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:06.855873" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T01:13:06.856172" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:06.390428" elapsed="0.465781"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:13:06.856274" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:13:06.856479" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:13:06.388169" elapsed="0.468345"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:13:06.857297" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:13:06.856733" elapsed="0.000660">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:13:06.387000" elapsed="0.470543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:08.861072" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:08.860314" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:08.863127" level="INFO">${member_ip} = 10.30.171.206</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-19T01:13:08.862586" elapsed="0.000580"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:08.864373" 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-19T01:13:08.864523" 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-19T01:13:08.864142" elapsed="0.000420"/>
</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-19T01:13:08.870188" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:08.869497" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:08.869416" elapsed="0.000974"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:08.872925" 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-19T01:13:08.873385" 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-19T01:13:08.871859" elapsed="0.001678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:08.875678" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:08.875102" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:08.877645" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:08.876833" elapsed="0.000916"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:08.880312" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:08.880393" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:08.879984" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:08.880640" elapsed="0.000632"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:08.882254" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:09.236520" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:08.881886" elapsed="0.354887"/>
</kw>
<msg time="2026-04-19T01:13:09.236931" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:08.881507" elapsed="0.355616"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:08.879021" elapsed="0.358654"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:09.240282" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:13:09.263304" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:09.263792" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:13:09.264173" 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-19T01:13:09.239720" elapsed="0.024667"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:09.266659" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:09.269803" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:09.268814" elapsed="0.001342"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:09.271101" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:09.270640" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:09.270465" elapsed="0.000802"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:09.271682" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:13:09.271443" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:09.271384" elapsed="0.000497"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:09.271980" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:09.277959" elapsed="0.000563"/>
</kw>
<kw name="Open 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-19T01:13:09.278784" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:09.279246" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:09.273561" elapsed="0.005934"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:08.867439" elapsed="0.412312"/>
</kw>
<msg time="2026-04-19T01:13:09.280130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:08.866430" elapsed="0.413778"/>
</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-19T01:13:08.865600" elapsed="0.414711"/>
</kw>
<msg time="2026-04-19T01:13:09.280366" 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-19T01:13:08.864798" elapsed="0.415620"/>
</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-19T01:13:09.284080" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T01:13:09.284703" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:09.285113" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:09.280777" elapsed="0.004529"/>
</kw>
<msg time="2026-04-19T01:13:09.285510" level="INFO">${output} = 1</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-19T01:13:08.863485" elapsed="0.422059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:09.286228" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:09.285793" elapsed="0.000495"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:09.286343" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:13:09.286537" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:08.861592" elapsed="0.424977"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:13:09.286632" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:13:09.286826" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:13:08.859489" elapsed="0.427369"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:13:09.287607" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:13:09.287086" elapsed="0.000618">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:13:08.858441" elapsed="0.429417">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:11.291450" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:11.290684" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:11.293751" level="INFO">${member_ip} = 10.30.171.206</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-19T01:13:11.292971" elapsed="0.000842"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:11.295025" 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-19T01:13:11.295190" 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-19T01:13:11.294806" elapsed="0.000421"/>
</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-19T01:13:11.300493" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:11.299836" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:11.299759" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:11.302788" 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-19T01:13:11.303063" 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-19T01:13:11.302088" elapsed="0.001078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:11.304718" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:11.304176" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:11.306536" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:11.305815" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:11.309043" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:11.309123" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:11.308725" 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-19T01:13:11.309371" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:11.310629" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:11.615576" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:11.310304" elapsed="0.305415"/>
</kw>
<msg time="2026-04-19T01:13:11.615782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:11.309925" elapsed="0.305926"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:11.307839" elapsed="0.308265"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:11.617462" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:13:11.640099" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:11.640594" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:13:11.640928" 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-19T01:13:11.617132" elapsed="0.024091"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:11.643420" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:11.646490" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:11.645546" elapsed="0.001174"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:11.647566" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:11.647087" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:11.646934" elapsed="0.000921"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:11.648647" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:13:11.648202" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:11.648093" elapsed="0.000903"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:11.649364" elapsed="0.000085"/>
</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-19T01:13:11.654380" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:13:11.654919" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:11.655289" 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-19T01:13:11.651042" elapsed="0.004455"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:11.297909" elapsed="0.357809"/>
</kw>
<msg time="2026-04-19T01:13:11.656017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:11.296939" elapsed="0.359150"/>
</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-19T01:13:11.296190" elapsed="0.359981"/>
</kw>
<msg time="2026-04-19T01:13:11.656213" 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-19T01:13:11.295452" elapsed="0.360806"/>
</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-19T01:13:11.659285" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:13:11.659767" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:11.660086" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:11.656550" elapsed="0.003688"/>
</kw>
<msg time="2026-04-19T01:13:11.660329" level="INFO">${output} = 1</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-19T01:13:11.294225" elapsed="0.366129"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:11.660778" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:11.660528" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:11.660868" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:11.661020" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:11.291976" elapsed="0.369192"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:13:11.661218" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:13:11.661367" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:13:11.289838" elapsed="0.371554"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:13:11.661986" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:13:11.661593" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:13:11.288692" elapsed="0.373494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:13.665113" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:13.664282" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:13.667601" level="INFO">${member_ip} = 10.30.171.206</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-19T01:13:13.666900" elapsed="0.000765"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:13.669767" 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-19T01:13:13.670013" 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-19T01:13:13.669266" elapsed="0.000841"/>
</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-19T01:13:13.678465" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:13.677813" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:13.677733" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:13.681084" 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-19T01:13:13.681388" 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-19T01:13:13.680077" elapsed="0.001413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:13.683015" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:13.682473" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:13.684889" level="INFO">${conn_id} = 495</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:13.684188" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:13.687333" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:13.687412" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:13.687014" 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-19T01:13:13.687652" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:13.689054" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:14.003190" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:13.688716" elapsed="0.314586"/>
</kw>
<msg time="2026-04-19T01:13:14.003388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:13.688353" elapsed="0.315113"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:13.686244" elapsed="0.317470"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.005125" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:13:14.028179" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:14.028736" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:13:14.029139" 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-19T01:13:14.004755" elapsed="0.024604"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:14.031653" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.034850" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:14.033864" elapsed="0.001347"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:14.036144" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:14.035565" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:14.035442" elapsed="0.001002"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:14.037265" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:13:14.036767" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:14.036659" elapsed="0.000963"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:14.037802" elapsed="0.000088"/>
</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-19T01:13:14.044602" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:14.045178" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:14.045549" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:14.041223" elapsed="0.004543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:13.674888" elapsed="0.371107"/>
</kw>
<msg time="2026-04-19T01:13:14.046340" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:13.673290" elapsed="0.373109"/>
</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-19T01:13:13.671734" elapsed="0.374750"/>
</kw>
<msg time="2026-04-19T01:13:14.046525" 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-19T01:13:13.670489" elapsed="0.376083"/>
</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-19T01:13:14.049641" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:13:14.050155" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:14.050459" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:14.046869" elapsed="0.003824"/>
</kw>
<msg time="2026-04-19T01:13:14.050787" level="INFO">${output} = 1</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-19T01:13:13.668250" elapsed="0.382565"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.051343" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:14.050999" elapsed="0.000393"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:14.051438" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:13:14.051601" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:13.665817" elapsed="0.385810"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:13:14.051675" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:13:14.051825" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:13:13.663577" elapsed="0.388274"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.052457" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:13:14.052046" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:13:13.662793" elapsed="0.389848">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T01:13:14.052729" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:07:12.240613" elapsed="361.812211">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:07:12.240467" elapsed="361.812474">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T01:07:03.997475" elapsed="370.055532">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:14.053259" elapsed="0.000026"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T01:13:14.053329" elapsed="0.000017"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T01:07:01.793163" elapsed="372.260267">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:07:01.792225" elapsed="372.261357">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s7-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T01:13:14.058224" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:14.057810" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.058732" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:14.058420" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:14.058807" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:14.058966" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:14.057423" elapsed="0.001569"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.061361" 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-19T01:13:14.061469" 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-19T01:13:14.061215" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:14.063888" level="INFO">${ip_address} = 10.30.171.9</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-19T01:13:14.063423" elapsed="0.000505"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:14.063987" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:13:14.064183" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:14.063094" elapsed="0.001117"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.067673" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:14.066965" elapsed="0.000808"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.070651" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:14.070729" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:14.070375" 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-19T01:13:14.070910" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.072140" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:14.750152" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:07:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:14.071776" elapsed="0.678586"/>
</kw>
<msg time="2026-04-19T01:13:14.750442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.071423" elapsed="0.679099"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:14.069855" elapsed="0.680786"/>
</kw>
<msg time="2026-04-19T01:13:14.750692" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.069465" elapsed="0.681277"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:14.068355" elapsed="0.682558"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:14.751010" elapsed="0.000090"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:14.065828" elapsed="0.685541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.754593" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:14.767090" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:14.767343" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:14.767440" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:14.767533" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:14.754395" elapsed="0.013215"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.769603" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:14.768971" elapsed="0.000733"/>
</kw>
<msg time="2026-04-19T01:13:14.769909" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:14.770003" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:14.768200" elapsed="0.001883"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.771549" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:14.770572" elapsed="0.001080"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.773586" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:14.773215" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.774246" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:14.773871" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.774868" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:14.774526" elapsed="0.000404"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:14.772564" elapsed="0.002443"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:14.771959" elapsed="0.003121"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:14.771908" elapsed="0.003212"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:14.775429" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:14.775279" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:14.775252" elapsed="0.000274"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:14.775838" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T01:13:14.775698" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:14.775670" elapsed="0.000293"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:14.776279" elapsed="0.000034"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:14.753439" elapsed="0.023214"/>
</kw>
<msg time="2026-04-19T01:13:14.776874" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:14.776983" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:14.751670" elapsed="0.025396"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:14.777483" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:14.778302" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T01:13:14.777968" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:14.777939" elapsed="0.000600"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:14.778760" elapsed="0.000033"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:14.064905" elapsed="0.714155"/>
</kw>
<msg time="2026-04-19T01:13:14.779214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.064368" elapsed="0.714923"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:14.062537" elapsed="0.716888"/>
</kw>
<msg time="2026-04-19T01:13:14.779489" 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-19T01:13:14.061652" elapsed="0.717906"/>
</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-19T01:13:14.784291" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:14.784776" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:14.785103" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:14.780023" elapsed="0.005232"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:14.060574" elapsed="0.724741"/>
</kw>
<msg time="2026-04-19T01:13:14.785370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.060119" elapsed="0.725300"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:14.059360" elapsed="0.726144"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:14.059203" elapsed="0.726348"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.787790" 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-19T01:13:14.787890" 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-19T01:13:14.787654" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:14.789973" level="INFO">${ip_address} = 10.30.171.128</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-19T01:13:14.789661" elapsed="0.000339"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:14.790070" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:14.790226" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:14.789338" elapsed="0.000913"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.793729" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:14.793044" elapsed="0.000784"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:14.796452" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:14.796531" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:14.796187" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.796713" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:14.797889" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:15.467099" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:07:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:14.797571" elapsed="0.669964"/>
</kw>
<msg time="2026-04-19T01:13:15.467687" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.797216" elapsed="0.670619"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:14.795676" elapsed="0.672404"/>
</kw>
<msg time="2026-04-19T01:13:15.468197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.795273" elapsed="0.673032"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:14.794385" elapsed="0.674274"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:15.468856" elapsed="0.000106"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:14.791902" elapsed="0.677614"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.476286" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:15.489153" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:15.489410" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:15.489513" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:15.489606" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:15.475837" elapsed="0.013820"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.491679" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:15.490984" elapsed="0.000797"/>
</kw>
<msg time="2026-04-19T01:13:15.491990" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:15.492124" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:15.490211" elapsed="0.001966"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.493670" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:15.492668" elapsed="0.001061"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.496339" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:15.495841" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.496935" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:15.496606" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.497547" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:15.497220" elapsed="0.000386"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:15.494829" elapsed="0.002850"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:15.494055" elapsed="0.003673"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.493976" elapsed="0.003787"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:15.498080" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:15.497915" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.497889" elapsed="0.000284"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:15.498443" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:13:15.498314" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.498290" elapsed="0.000269"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:15.498831" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:15.473732" elapsed="0.025481"/>
</kw>
<msg time="2026-04-19T01:13:15.499454" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:15.499551" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:15.470109" elapsed="0.029492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:15.499960" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:15.500701" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T01:13:15.500449" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.500422" elapsed="0.000492"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:15.501141" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:14.790935" elapsed="0.710459"/>
</kw>
<msg time="2026-04-19T01:13:15.501532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.790410" elapsed="0.711193"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:14.788790" elapsed="0.712934"/>
</kw>
<msg time="2026-04-19T01:13:15.501780" 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-19T01:13:14.788088" elapsed="0.713755"/>
</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-19T01:13:15.506138" elapsed="0.000437"/>
</kw>
<kw name="Open 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-19T01:13:15.506805" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:15.507299" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:15.502280" elapsed="0.005254"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:14.786982" elapsed="0.720632"/>
</kw>
<msg time="2026-04-19T01:13:15.507689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:14.786535" elapsed="0.721221"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:14.785804" elapsed="0.722067"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:14.785646" elapsed="0.722288"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.510293" 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-19T01:13:15.510392" 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-19T01:13:15.510155" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:15.514291" level="INFO">${ip_address} = 10.30.171.206</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-19T01:13:15.513961" elapsed="0.000357"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:15.514367" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:15.514519" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:15.513639" elapsed="0.000904"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.518054" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:15.517348" elapsed="0.000807"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.520776" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:15.520852" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:15.520509" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.521048" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.522220" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:15.834652" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:15.521883" elapsed="0.312919"/>
</kw>
<msg time="2026-04-19T01:13:15.834868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.521532" elapsed="0.313401"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:15.520001" elapsed="0.315021"/>
</kw>
<msg time="2026-04-19T01:13:15.835100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.519614" elapsed="0.315541"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:15.518690" elapsed="0.316618"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:15.835397" elapsed="0.000051"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:15.516216" elapsed="0.319459"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.838645" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:15.851318" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:15.851575" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:15.851674" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:15.851766" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:15.838453" elapsed="0.013364"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.853800" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:15.853192" elapsed="0.000709"/>
</kw>
<msg time="2026-04-19T01:13:15.854143" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:15.854244" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:15.852383" elapsed="0.001912"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.855848" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:15.854784" elapsed="0.001123"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.857648" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:15.857301" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.858317" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:15.857943" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.858976" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:15.858588" elapsed="0.000481"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:15.856704" elapsed="0.002446"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:15.856221" elapsed="0.002979"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.856186" elapsed="0.003052"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:15.859538" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:15.859392" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.859364" elapsed="0.000283"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:15.859923" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:13:15.859792" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.859767" elapsed="0.000294"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:15.860344" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:15.837550" elapsed="0.023132"/>
</kw>
<msg time="2026-04-19T01:13:15.860885" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:15.860982" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:15.835925" elapsed="0.025130"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:15.861416" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:15.862139" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T01:13:15.861865" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:15.861838" elapsed="0.000516"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:15.862558" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:15.515271" elapsed="0.347534"/>
</kw>
<msg time="2026-04-19T01:13:15.862942" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.514700" elapsed="0.348311"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:15.513116" elapsed="0.350053"/>
</kw>
<msg time="2026-04-19T01:13:15.863226" 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-19T01:13:15.510570" elapsed="0.352718"/>
</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-19T01:13:15.868024" elapsed="0.000422"/>
</kw>
<kw name="Open 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-19T01:13:15.868634" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:15.868941" elapsed="0.000159"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:15.863699" elapsed="0.005455"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:15.509529" elapsed="0.359685"/>
</kw>
<msg time="2026-04-19T01:13:15.869270" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.509085" elapsed="0.360234"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:15.508379" elapsed="0.361025"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:13:15.508189" elapsed="0.361261"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:14.059065" elapsed="1.810419"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:13:14.055000" elapsed="1.814541"/>
</kw>
<kw name="Check_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-19T01:13:15.873227" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:15.872810" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.873729" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:15.873419" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:15.873802" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:15.873959" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:15.872432" elapsed="0.001553"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.876289" 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-19T01:13:15.876403" 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-19T01:13:15.876147" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:15.878249" level="INFO">${ip_address} = 10.30.171.9</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-19T01:13:15.877922" elapsed="0.000355"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:15.878327" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:15.878482" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:15.877600" elapsed="0.000972"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.882096" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:15.881388" elapsed="0.000807"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:15.884975" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:15.885069" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:15.884704" 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-19T01:13:15.885254" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:15.886434" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:16.189545" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:15.886113" elapsed="0.303527"/>
</kw>
<msg time="2026-04-19T01:13:16.189708" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.885740" elapsed="0.304035"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:15.884203" elapsed="0.305665"/>
</kw>
<msg time="2026-04-19T01:13:16.189918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.883640" elapsed="0.306328"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:15.882731" elapsed="0.307420"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:16.190242" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:15.880258" elapsed="0.310268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.193542" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:16.205829" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:16.205987" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:16.206073" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:16.206134" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:16.193344" elapsed="0.012822"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.207443" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:16.207019" elapsed="0.000488"/>
</kw>
<msg time="2026-04-19T01:13:16.207637" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:16.207698" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:16.206491" elapsed="0.001238"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.208655" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:16.208056" elapsed="0.000644"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.210348" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.209979" elapsed="0.000427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.210991" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.210621" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.211630" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.211298" elapsed="0.000391"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:16.209402" elapsed="0.002362"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:16.208883" elapsed="0.002930"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.208851" elapsed="0.003061"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:16.212246" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:16.212099" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.212070" elapsed="0.000269"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:16.212609" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:13:16.212480" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.212455" elapsed="0.000273"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:16.213000" elapsed="0.000052"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:16.192433" elapsed="0.020928"/>
</kw>
<msg time="2026-04-19T01:13:16.213565" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:16.213661" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:16.190772" elapsed="0.022940"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:16.214084" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:16.215121" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T01:13:16.214827" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.214797" elapsed="0.000538"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:16.215542" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:15.879319" elapsed="0.336473"/>
</kw>
<msg time="2026-04-19T01:13:16.215874" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.878736" elapsed="0.337207"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:15.877076" elapsed="0.339020"/>
</kw>
<msg time="2026-04-19T01:13:16.216155" 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-19T01:13:15.876588" elapsed="0.339629"/>
</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-19T01:13:16.220484" elapsed="0.000431"/>
</kw>
<kw name="Open 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-19T01:13:16.221166" elapsed="0.000215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:16.221586" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:16.216625" elapsed="0.005168"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:15.875511" elapsed="0.346363"/>
</kw>
<msg time="2026-04-19T01:13:16.221951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:15.875060" elapsed="0.346958"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:15.874341" elapsed="0.347818"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:15.874186" elapsed="0.348036"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.224781" 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-19T01:13:16.224881" 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-19T01:13:16.224648" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:16.226750" level="INFO">${ip_address} = 10.30.171.128</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-19T01:13:16.226440" elapsed="0.000337"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:16.226826" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:16.226994" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:16.226118" elapsed="0.000901"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.230514" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:16.229784" elapsed="0.000828"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.233423" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:16.233500" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:16.233157" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.233684" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.234921" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:16.558880" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:16.234555" elapsed="0.324465"/>
</kw>
<msg time="2026-04-19T01:13:16.559123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.234189" elapsed="0.325023"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:16.232648" elapsed="0.326677"/>
</kw>
<msg time="2026-04-19T01:13:16.559378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.232062" elapsed="0.327366"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:16.231178" elapsed="0.328433"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:16.559708" elapsed="0.000055"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:16.228655" elapsed="0.331356"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.563156" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:16.575965" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:16.576248" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:16.576345" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:16.576434" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:16.562941" elapsed="0.013543"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.578469" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:16.577794" elapsed="0.000774"/>
</kw>
<msg time="2026-04-19T01:13:16.578840" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:16.578944" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:16.576995" elapsed="0.002002"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.580521" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:16.579524" elapsed="0.001055"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.583271" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.582636" elapsed="0.000845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.584420" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.583833" elapsed="0.000680"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.585825" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.584851" elapsed="0.001081"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:16.581677" elapsed="0.004438"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:16.580876" elapsed="0.005327"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.580824" elapsed="0.005438"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:16.586797" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:16.586511" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.586466" elapsed="0.000488"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:16.587388" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:13:16.587280" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.587230" elapsed="0.000246"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:16.587672" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:16.561991" elapsed="0.025932"/>
</kw>
<msg time="2026-04-19T01:13:16.588090" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:16.588162" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:16.560323" elapsed="0.027876"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:16.588459" elapsed="0.000224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:16.588982" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:13:16.588800" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.588781" elapsed="0.000373"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:16.589301" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:16.227735" elapsed="0.361747"/>
</kw>
<msg time="2026-04-19T01:13:16.589542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.227200" elapsed="0.362393"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:16.225582" elapsed="0.364100"/>
</kw>
<msg time="2026-04-19T01:13:16.589723" 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-19T01:13:16.225118" elapsed="0.364651"/>
</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-19T01:13:16.592837" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T01:13:16.593323" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:16.593629" 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-19T01:13:16.590082" elapsed="0.003694"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:16.223971" elapsed="0.369864"/>
</kw>
<msg time="2026-04-19T01:13:16.593889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.223529" elapsed="0.370409"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:16.222563" elapsed="0.371459"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:16.222349" elapsed="0.371771"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.596382" 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-19T01:13:16.596481" 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-19T01:13:16.596243" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:16.598297" level="INFO">${ip_address} = 10.30.171.206</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-19T01:13:16.597973" elapsed="0.000350"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:16.598371" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:13:16.598519" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:16.597655" elapsed="0.000888"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.602183" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:16.601482" elapsed="0.000799"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.605126" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:16.605203" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:16.604846" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.605385" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.606565" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:16.936257" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:16.606244" elapsed="0.330127"/>
</kw>
<msg time="2026-04-19T01:13:16.936447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.605869" elapsed="0.330656"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:16.604355" elapsed="0.332275"/>
</kw>
<msg time="2026-04-19T01:13:16.936681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.603933" elapsed="0.332798"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:16.602839" elapsed="0.334058"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:16.936991" elapsed="0.000075"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:16.600340" elapsed="0.336975"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.940424" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:16.953244" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:16.953364" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:16.953408" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:16.953448" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:16.940226" elapsed="0.013245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.954355" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:16.954071" elapsed="0.000330"/>
</kw>
<msg time="2026-04-19T01:13:16.954492" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:16.954573" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:16.953705" elapsed="0.000894"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.955357" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:16.954885" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.956541" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.956292" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.956971" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.956734" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.957609" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:16.957177" elapsed="0.000477"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:16.955869" elapsed="0.001840"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:16.955519" elapsed="0.002225"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.955495" elapsed="0.002276"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:16.957987" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:16.957883" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.957863" elapsed="0.000207"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:16.958271" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:13:16.958172" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.958155" elapsed="0.000201"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:16.958570" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:16.939298" elapsed="0.019520"/>
</kw>
<msg time="2026-04-19T01:13:16.958963" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:16.959062" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:16.937583" elapsed="0.021519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:16.959445" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:16.960189" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T01:13:16.959902" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:16.959877" elapsed="0.000528"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:16.960608" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:16.599282" elapsed="0.361577"/>
</kw>
<msg time="2026-04-19T01:13:16.960939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.598723" elapsed="0.362285"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:16.597132" elapsed="0.364020"/>
</kw>
<msg time="2026-04-19T01:13:16.961210" 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-19T01:13:16.596662" elapsed="0.364611"/>
</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-19T01:13:16.965589" 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-19T01:13:16.966416" elapsed="0.000253"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:16.966880" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:16.961714" elapsed="0.005411"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:16.595567" elapsed="0.371648"/>
</kw>
<msg time="2026-04-19T01:13:16.967300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.595120" elapsed="0.372234"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:16.594382" elapsed="0.373096"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:13:16.594223" elapsed="0.373304"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:15.874053" elapsed="1.093509"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:13:15.869775" elapsed="1.097846"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.967782" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T01:13:16.971931" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:16.971549" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.972437" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:16.972133" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:16.972508" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:16.972661" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:16.971173" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.974934" 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-19T01:13:16.975047" 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-19T01:13:16.974798" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:16.977071" level="INFO">${ip_address} = 10.30.171.9</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-19T01:13:16.976601" elapsed="0.000533"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:16.977366" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:13:16.977524" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:16.976209" elapsed="0.001340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.981452" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:16.981068" elapsed="0.000410"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:16.983266" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:16.983345" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:16.982978" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.983526" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:16.984706" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:17.304178" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:16.984381" elapsed="0.319963"/>
</kw>
<msg time="2026-04-19T01:13:17.304413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.984010" elapsed="0.320477"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:16.982477" elapsed="0.322107"/>
</kw>
<msg time="2026-04-19T01:13:17.304634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.982087" elapsed="0.322597"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:16.981678" elapsed="0.323080"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:17.304833" elapsed="0.000038"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:16.980379" elapsed="0.324729"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.307752" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:17.320452" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:17.320615" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:17.320676" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:17.320732" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:17.307563" elapsed="0.013201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.322319" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:17.321693" elapsed="0.000772"/>
</kw>
<msg time="2026-04-19T01:13:17.322684" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:17.322783" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:17.321013" elapsed="0.001820"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.324207" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:17.323238" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.326747" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:17.326150" elapsed="0.000689"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.327743" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:17.327208" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.328721" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:17.328193" elapsed="0.000623"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:17.325233" elapsed="0.003699"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:17.324450" elapsed="0.004559"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.324403" elapsed="0.004697"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:17.329451" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:17.329227" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.329188" elapsed="0.000405"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:17.329898" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T01:13:17.329704" elapsed="0.000352"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.329671" elapsed="0.000444"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:17.330491" elapsed="0.000052"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:17.307040" elapsed="0.023718"/>
</kw>
<msg time="2026-04-19T01:13:17.331322" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:17.331408" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:17.306184" elapsed="0.025263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:17.332450" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:17.333174" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T01:13:17.332972" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.332913" elapsed="0.000405"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:17.334296" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:16.978451" elapsed="0.356074"/>
</kw>
<msg time="2026-04-19T01:13:17.334958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.977705" elapsed="0.357307"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:16.975679" elapsed="0.359439"/>
</kw>
<msg time="2026-04-19T01:13:17.335159" 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-19T01:13:16.975228" elapsed="0.359976"/>
</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-19T01:13:17.338315" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:13:17.338815" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:17.339146" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:17.335507" elapsed="0.003790"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:16.974177" elapsed="0.365177"/>
</kw>
<msg time="2026-04-19T01:13:17.339408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.973724" elapsed="0.365731"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:16.973036" elapsed="0.366502"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:16.972870" elapsed="0.366714"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.341783" 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-19T01:13:17.341881" 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-19T01:13:17.341647" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:17.343964" level="INFO">${ip_address} = 10.30.171.128</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-19T01:13:17.343516" elapsed="0.000533"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:17.344287" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:13:17.344444" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:17.343117" elapsed="0.001351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.348580" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:17.348199" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.350382" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:17.350465" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:17.350096" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.350646" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.351970" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:17.671751" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:17.351510" elapsed="0.320479"/>
</kw>
<msg time="2026-04-19T01:13:17.672093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.351157" elapsed="0.321022"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:17.349602" elapsed="0.322688"/>
</kw>
<msg time="2026-04-19T01:13:17.672343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.349215" elapsed="0.323177"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:17.348805" elapsed="0.323665"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:17.672568" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:17.347496" elapsed="0.325354"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.675613" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:17.688496" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:17.688750" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:17.688846" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:17.688936" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:17.675419" elapsed="0.013565"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.694546" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:17.693876" elapsed="0.000775"/>
</kw>
<msg time="2026-04-19T01:13:17.694868" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:17.694968" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:17.689429" elapsed="0.005591"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.696434" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:17.695442" elapsed="0.001052"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.699074" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:17.698481" elapsed="0.000692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.699739" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:17.699405" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.700360" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:17.700004" elapsed="0.000418"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:17.697476" elapsed="0.003021"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:17.696675" elapsed="0.003871"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.696629" elapsed="0.003954"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:17.700802" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:17.700661" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.700637" elapsed="0.000258"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:17.701113" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T01:13:17.700966" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.700945" elapsed="0.000288"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:17.701436" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:17.674859" elapsed="0.026740"/>
</kw>
<msg time="2026-04-19T01:13:17.701943" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:17.702089" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:17.673968" elapsed="0.028179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:17.703555" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:17.704574" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T01:13:17.704317" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:17.704225" elapsed="0.000551"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:17.706195" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:17.345378" elapsed="0.361107"/>
</kw>
<msg time="2026-04-19T01:13:17.707127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.344626" elapsed="0.362577"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:17.342580" elapsed="0.364742"/>
</kw>
<msg time="2026-04-19T01:13:17.707378" 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-19T01:13:17.342076" elapsed="0.365362"/>
</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-19T01:13:17.711655" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:13:17.712142" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:17.712448" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:17.707847" elapsed="0.004747"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:17.341011" elapsed="0.371640"/>
</kw>
<msg time="2026-04-19T01:13:17.712704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.340560" elapsed="0.372190"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:17.339840" elapsed="0.372991"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:17.339681" elapsed="0.373194"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.715382" 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-19T01:13:17.715483" 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-19T01:13:17.715243" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:17.717544" level="INFO">${ip_address} = 10.30.171.206</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-19T01:13:17.717091" elapsed="0.000514"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:17.717827" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:13:17.717983" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:17.716674" elapsed="0.001334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.721924" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:17.721542" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:17.723722" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:17.723798" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:17.723461" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.723979" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:17.725238" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:18.037853" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:17.724896" elapsed="0.313194"/>
</kw>
<msg time="2026-04-19T01:13:18.038178" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.724539" elapsed="0.313723"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:17.722963" elapsed="0.315405"/>
</kw>
<msg time="2026-04-19T01:13:18.038418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.722572" elapsed="0.315896"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:17.722188" elapsed="0.316355"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:18.038628" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:17.720652" elapsed="0.318254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.041599" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:18.054432" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:18.054684" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:18.054781" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:18.054874" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:18.041404" elapsed="0.013521"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.057239" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:18.056163" elapsed="0.001180"/>
</kw>
<msg time="2026-04-19T01:13:18.057558" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:18.057655" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:18.055365" elapsed="0.002340"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.059143" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:18.058145" elapsed="0.001059"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.061670" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.061105" elapsed="0.000657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.062724" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.062150" elapsed="0.000667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.063714" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.063185" elapsed="0.000623"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:18.060178" elapsed="0.003751"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:18.059386" elapsed="0.004622"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.059340" elapsed="0.004760"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:18.064488" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:18.064230" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.064191" elapsed="0.000442"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:18.064947" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:13:18.064748" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.064714" elapsed="0.000454"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:18.065495" elapsed="0.000049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:18.040851" elapsed="0.024907"/>
</kw>
<msg time="2026-04-19T01:13:18.066360" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:18.066444" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:18.039998" elapsed="0.026485"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:18.067476" elapsed="0.000385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:18.068196" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T01:13:18.067993" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.067935" elapsed="0.000410"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:18.069327" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:17.718753" elapsed="0.350781"/>
</kw>
<msg time="2026-04-19T01:13:18.069957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.718195" elapsed="0.351853"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:17.716145" elapsed="0.354001"/>
</kw>
<msg time="2026-04-19T01:13:18.070189" 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-19T01:13:17.715666" elapsed="0.354570"/>
</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-19T01:13:18.073327" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:13:18.073800" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:18.074136" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:18.070539" elapsed="0.003747"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:17.714502" elapsed="0.359844"/>
</kw>
<msg time="2026-04-19T01:13:18.074402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:17.714010" elapsed="0.360441"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:17.713138" elapsed="0.361399"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:13:17.712967" elapsed="0.361616"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:16.972740" elapsed="1.101878"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:13:16.968784" elapsed="1.105891"/>
</kw>
<msg time="2026-04-19T01:13:18.074712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:16.968300" elapsed="1.106457"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:18.074916" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T01:13:14.054571" elapsed="4.020433"/>
</kw>
<kw name="Check_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-19T01:13:18.078525" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:18.078137" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.079013" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:18.078712" elapsed="0.000444"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:18.079204" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:13:18.079359" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:18.077718" elapsed="0.001665"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.081647" 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-19T01:13:18.081745" 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-19T01:13:18.081512" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:18.083856" level="INFO">${ip_address} = 10.30.171.9</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-19T01:13:18.083344" elapsed="0.000538"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:18.083933" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:18.084103" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:18.083003" elapsed="0.001126"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.086752" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:18.085973" elapsed="0.000819"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.089950" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:18.090069" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:18.089678" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.090255" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.091441" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:18.404228" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:18.091117" elapsed="0.313276"/>
</kw>
<msg time="2026-04-19T01:13:18.404490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.090741" elapsed="0.313845"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:18.089196" elapsed="0.315517"/>
</kw>
<msg time="2026-04-19T01:13:18.404820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.088464" elapsed="0.316430"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:18.087160" elapsed="0.317867"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:18.405157" elapsed="0.000047"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:18.085557" elapsed="0.319790"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.409258" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:18.422073" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:18.422446" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T01:13:18.422657" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:18.422864" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:18.408881" elapsed="0.014114"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.425599" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:18.425190" elapsed="0.000474"/>
</kw>
<msg time="2026-04-19T01:13:18.425997" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:18.426239" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:18.424431" elapsed="0.001973"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.428860" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:18.427786" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.431725" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.431365" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.432551" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.432213" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.433170" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.432816" elapsed="0.000416"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:18.430711" elapsed="0.002651"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:18.429263" elapsed="0.004161"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.429185" elapsed="0.004324"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:18.434047" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:18.433724" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.433656" elapsed="0.000573"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:18.434756" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:13:18.434478" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.434409" elapsed="0.000563"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:18.436491" elapsed="0.000078"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:18.406615" elapsed="0.030266"/>
</kw>
<msg time="2026-04-19T01:13:18.437236" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:18.437299" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:18.405607" elapsed="0.031725"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:18.437557" elapsed="0.000353"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:18.438193" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T01:13:18.438012" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.437985" elapsed="0.000325"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:18.438510" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:18.084824" elapsed="0.353853"/>
</kw>
<msg time="2026-04-19T01:13:18.438811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.084289" elapsed="0.354589"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:18.082476" elapsed="0.356734"/>
</kw>
<msg time="2026-04-19T01:13:18.439326" 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-19T01:13:18.081978" elapsed="0.357412"/>
</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-19T01:13:18.443387" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:18.443870" elapsed="0.000269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:18.444293" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:18.439802" elapsed="0.004640"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:18.080872" elapsed="0.363761"/>
</kw>
<msg time="2026-04-19T01:13:18.444730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.080431" elapsed="0.364348"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:18.079727" elapsed="0.365266"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:18.079574" elapsed="0.365484"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.447596" 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-19T01:13:18.447716" 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-19T01:13:18.447430" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:18.449756" level="INFO">${ip_address} = 10.30.171.128</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-19T01:13:18.449476" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:18.449847" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:18.450002" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:18.449145" elapsed="0.000882"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.452855" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:18.452121" elapsed="0.000776"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.456151" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:18.456228" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:18.455844" 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-19T01:13:18.456410" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.457589" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:18.778211" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:18.457274" elapsed="0.321088"/>
</kw>
<msg time="2026-04-19T01:13:18.778447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.456893" elapsed="0.321644"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:18.455361" elapsed="0.323292"/>
</kw>
<msg time="2026-04-19T01:13:18.778756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.454623" elapsed="0.324205"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:18.453179" elapsed="0.325778"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:18.779080" elapsed="0.000049"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:18.451691" elapsed="0.327573"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.782930" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:18.796288" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:18.796661" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T01:13:18.796870" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:18.797106" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:18.782322" elapsed="0.014919"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.801440" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:18.800754" elapsed="0.000790"/>
</kw>
<msg time="2026-04-19T01:13:18.802199" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:18.802544" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:18.799528" elapsed="0.003226"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.806626" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:18.805020" elapsed="0.001704"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.808538" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.808280" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.809127" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.808869" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.809562" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:18.809325" elapsed="0.000280"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:18.807816" elapsed="0.001899"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:18.806891" elapsed="0.002870"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.806836" elapsed="0.003002"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:18.810238" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:18.810001" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.809950" elapsed="0.000415"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:18.810742" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T01:13:18.810540" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.810471" elapsed="0.000428"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:18.811873" elapsed="0.000055"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:18.780374" elapsed="0.031789"/>
</kw>
<msg time="2026-04-19T01:13:18.812408" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:18.812454" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:18.779502" elapsed="0.032976"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:18.812640" elapsed="0.000237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:18.813070" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:13:18.812942" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:18.812924" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:18.813298" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:18.450968" elapsed="0.362448"/>
</kw>
<msg time="2026-04-19T01:13:18.813512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.450203" elapsed="0.363358"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:18.448541" elapsed="0.365270"/>
</kw>
<msg time="2026-04-19T01:13:18.813902" 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-19T01:13:18.447928" elapsed="0.366022"/>
</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-19T01:13:18.817087" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:18.817559" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:18.817894" elapsed="0.000288"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:18.814357" elapsed="0.003881"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:18.446745" elapsed="0.371688"/>
</kw>
<msg time="2026-04-19T01:13:18.818528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.446274" elapsed="0.372316"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:18.445323" elapsed="0.373482"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:18.445164" elapsed="0.373724"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.821099" 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-19T01:13:18.821203" 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-19T01:13:18.820948" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:18.823388" level="INFO">${ip_address} = 10.30.171.206</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-19T01:13:18.823112" elapsed="0.000303"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:18.823464" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:13:18.823611" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:18.822775" elapsed="0.000862"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.826430" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:18.825686" elapsed="0.000784"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:18.829611" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:18.829715" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:18.829343" 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-19T01:13:18.829929" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:18.831141" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:19.134970" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:18.830805" elapsed="0.304334"/>
</kw>
<msg time="2026-04-19T01:13:19.135224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.830452" elapsed="0.304860"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:18.828841" elapsed="0.306583"/>
</kw>
<msg time="2026-04-19T01:13:19.135520" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.827995" elapsed="0.307597"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:18.826732" elapsed="0.308988"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:19.135822" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:18.825258" elapsed="0.310739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.139358" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:13:19.152321" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:19.152916" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T01:13:19.153316" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:19.153648" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:19.138996" elapsed="0.014864"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.158213" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:19.157436" elapsed="0.001007"/>
</kw>
<msg time="2026-04-19T01:13:19.158932" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:19.159297" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:19.156225" elapsed="0.003206"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.161905" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:19.160840" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.164688" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.164331" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.165405" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.165064" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.166132" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.165743" elapsed="0.000455"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:19.163680" elapsed="0.002738"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:19.162320" elapsed="0.004183"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.162228" elapsed="0.004363"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:19.167238" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:19.166817" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.166745" elapsed="0.000659"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:19.167765" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:13:19.167559" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.167510" elapsed="0.000416"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:19.168899" elapsed="0.000059"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:19.137090" elapsed="0.032110"/>
</kw>
<msg time="2026-04-19T01:13:19.169449" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:19.169497" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:19.136254" elapsed="0.033268"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:19.169690" elapsed="0.000239"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:19.170129" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:13:19.169997" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.169979" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:19.170363" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:18.824538" elapsed="0.345979"/>
</kw>
<msg time="2026-04-19T01:13:19.170614" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.823791" elapsed="0.346874"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:18.821899" elapsed="0.348988"/>
</kw>
<msg time="2026-04-19T01:13:19.170968" 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-19T01:13:18.821387" elapsed="0.349628"/>
</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-19T01:13:19.174350" 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-19T01:13:19.174915" elapsed="0.000238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:19.175309" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:19.171472" elapsed="0.003998"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:18.820330" elapsed="0.355334"/>
</kw>
<msg time="2026-04-19T01:13:19.175761" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:18.819868" elapsed="0.355948"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:18.819163" elapsed="0.356877"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:13:18.818988" elapsed="0.357161"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:18.079440" elapsed="1.096748"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:13:18.075359" elapsed="1.100894"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.186171" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:19.183926" elapsed="0.002273"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T01:13:19.187935" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:19.187557" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.188494" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:19.188139" elapsed="0.000382"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:19.188567" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:19.188721" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:19.187187" elapsed="0.001559"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.191429" 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-19T01:13:19.191538" 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-19T01:13:19.191060" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:19.193526" level="INFO">${ip_address} = 10.30.171.9</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-19T01:13:19.193064" elapsed="0.000489"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:19.193603" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:19.193754" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:19.192727" elapsed="0.001053"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.197893" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:19.197302" elapsed="0.000636"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.200262" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:19.200341" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:19.199828" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.200524" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.201712" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:19.522288" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:19.201391" elapsed="0.321154"/>
</kw>
<msg time="2026-04-19T01:13:19.522707" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.201008" elapsed="0.321865"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:19.199350" elapsed="0.323776"/>
</kw>
<msg time="2026-04-19T01:13:19.523373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.198921" elapsed="0.324565"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:19.198398" elapsed="0.325399"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:19.524150" elapsed="0.000183"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:19.195991" elapsed="0.328889"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.528565" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T01:13:19.541628" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:19.541820" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T01:13:19.541888" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:19.541947" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:19.528282" elapsed="0.013698"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.543260" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:19.542825" elapsed="0.000507"/>
</kw>
<msg time="2026-04-19T01:13:19.543465" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:19.543526" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:19.542289" elapsed="0.001272"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.544476" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:19.543812" elapsed="0.000701"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.546228" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.545839" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.546992" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.546509" elapsed="0.000569"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.547642" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.547300" elapsed="0.000404"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:19.545232" elapsed="0.002566"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:19.544654" elapsed="0.003195"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.544609" elapsed="0.003279"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:19.548142" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:19.547968" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.547944" elapsed="0.000292"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:19.548439" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T01:13:19.548315" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.548291" elapsed="0.000269"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:19.548773" elapsed="0.000038"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:19.527424" elapsed="0.021595"/>
</kw>
<msg time="2026-04-19T01:13:19.549318" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:19.549523" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:19.525598" elapsed="0.024014"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:19.550014" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:19.551324" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T01:13:19.550968" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.550939" elapsed="0.000652"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:19.551855" elapsed="0.000080"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:19.194494" elapsed="0.357764"/>
</kw>
<msg time="2026-04-19T01:13:19.552589" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.193936" elapsed="0.358739"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:19.192206" elapsed="0.360670"/>
</kw>
<msg time="2026-04-19T01:13:19.552968" 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-19T01:13:19.191722" elapsed="0.361351"/>
</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-19T01:13:19.557927" elapsed="0.000553"/>
</kw>
<kw name="Open 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-19T01:13:19.558649" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:19.558972" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:19.553591" elapsed="0.005563"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:19.190401" elapsed="0.368820"/>
</kw>
<msg time="2026-04-19T01:13:19.559279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.189939" elapsed="0.369391"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:19.189111" elapsed="0.370307"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:19.188933" elapsed="0.370535"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.561826" 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-19T01:13:19.561927" 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-19T01:13:19.561679" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:19.563993" level="INFO">${ip_address} = 10.30.171.128</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-19T01:13:19.563527" elapsed="0.000492"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:19.564094" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:13:19.564249" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:19.563187" elapsed="0.001086"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.568556" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:19.567846" elapsed="0.000765"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.573044" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:19.573166" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:19.570643" elapsed="0.002547"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.573354" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.574637" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:19.900313" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:19.574302" elapsed="0.326266"/>
</kw>
<msg time="2026-04-19T01:13:19.900652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.573913" elapsed="0.326827"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:19.570143" elapsed="0.330709"/>
</kw>
<msg time="2026-04-19T01:13:19.900904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.569716" elapsed="0.331237"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:19.569145" elapsed="0.331995"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:19.901291" elapsed="0.000085"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:19.566779" elapsed="0.334790"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.903998" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T01:13:19.917158" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:19.917481" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T01:13:19.917589" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:19.917681" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:19.903780" elapsed="0.013951"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.919702" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:19.919081" elapsed="0.000724"/>
</kw>
<msg time="2026-04-19T01:13:19.920101" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:19.920210" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:19.918240" elapsed="0.002021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.921633" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:19.920640" elapsed="0.001051"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.924321" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.923670" elapsed="0.000700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.924763" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.924521" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.925216" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:19.924955" elapsed="0.000304"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:19.922688" elapsed="0.002625"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:19.921875" elapsed="0.003474"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.921825" elapsed="0.003551"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:19.925537" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:19.925432" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.925415" elapsed="0.000190"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:19.925744" elapsed="0.000034"/>
</return>
<status status="PASS" start="2026-04-19T01:13:19.925656" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.925640" elapsed="0.000195"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:19.925980" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:19.903158" elapsed="0.023015"/>
</kw>
<msg time="2026-04-19T01:13:19.926315" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:19.926424" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:19.901933" elapsed="0.024549"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:19.926737" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:19.927657" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:13:19.927408" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.927389" elapsed="0.000479"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:19.928111" elapsed="0.000069"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:19.565015" elapsed="0.363402"/>
</kw>
<msg time="2026-04-19T01:13:19.928563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.564442" elapsed="0.364188"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:19.562640" elapsed="0.366077"/>
</kw>
<msg time="2026-04-19T01:13:19.928759" 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-19T01:13:19.562151" elapsed="0.366654"/>
</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-19T01:13:19.932190" elapsed="0.000369"/>
</kw>
<kw name="Open 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-19T01:13:19.932728" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:19.933132" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:19.929131" elapsed="0.004162"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:19.560923" elapsed="0.372434"/>
</kw>
<msg time="2026-04-19T01:13:19.933415" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.560469" elapsed="0.372997"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:19.559740" elapsed="0.373812"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:19.559574" elapsed="0.374026"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.935960" 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-19T01:13:19.936082" 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-19T01:13:19.935818" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:19.938261" level="INFO">${ip_address} = 10.30.171.206</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-19T01:13:19.937776" elapsed="0.000512"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:19.938338" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:19.938489" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:19.937439" elapsed="0.001075"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.942455" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:19.941799" elapsed="0.000705"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:19.944749" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:19.944827" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:19.944463" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.945069" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:19.946462" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:20.268224" 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 Sun Apr 19 01:12:20 UTC 2026

  System load:  0.34               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:19.946128" elapsed="0.322250"/>
</kw>
<msg time="2026-04-19T01:13:20.268463" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.945742" elapsed="0.322814"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:19.943936" elapsed="0.324732"/>
</kw>
<msg time="2026-04-19T01:13:20.268719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.943546" elapsed="0.325224"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:19.942982" elapsed="0.325953"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:20.269113" elapsed="0.000089"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:19.940797" elapsed="0.328602"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.271811" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T01:13:20.284895" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:20.285015" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T01:13:20.285083" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:20.285126" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.271607" elapsed="0.013541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.285956" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:20.285675" elapsed="0.000326"/>
</kw>
<msg time="2026-04-19T01:13:20.286115" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:20.286160" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:20.285332" elapsed="0.000852"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.286832" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:20.286386" elapsed="0.000472"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.287974" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:20.287715" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.288431" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:20.288190" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.288857" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:20.288622" elapsed="0.000278"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:20.287306" elapsed="0.001647"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:20.286943" elapsed="0.002045"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:20.286920" elapsed="0.002094"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:20.289189" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:20.289087" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:20.289069" elapsed="0.000186"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:20.289397" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:13:20.289306" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:20.289291" elapsed="0.000193"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:20.289630" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:20.270996" elapsed="0.018796"/>
</kw>
<msg time="2026-04-19T01:13:20.289933" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:20.290064" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:20.269770" elapsed="0.020356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:20.290466" elapsed="0.000499"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:20.291353" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:13:20.291122" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:20.291102" elapsed="0.000444"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:20.291731" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:19.939217" elapsed="0.352760"/>
</kw>
<msg time="2026-04-19T01:13:20.292042" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.938669" elapsed="0.353439"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:19.936877" elapsed="0.355322"/>
</kw>
<msg time="2026-04-19T01:13:20.292241" 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-19T01:13:19.936267" elapsed="0.356019"/>
</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-19T01:13:20.295633" 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-19T01:13:20.296128" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:20.296440" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:20.292588" elapsed="0.004002"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:19.935192" elapsed="0.361460"/>
</kw>
<msg time="2026-04-19T01:13:20.296710" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:19.934628" elapsed="0.362131"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:19.933863" elapsed="0.362982"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:13:19.933699" elapsed="0.363193"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:19.188801" elapsed="1.108126"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:13:19.186552" elapsed="1.110431"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:19.186278" elapsed="1.110742"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:19.186259" elapsed="1.110802"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.298369" 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-19T01:13:20.298469" 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-19T01:13:20.298231" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T01:13:20.299697" elapsed="0.000210"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.300894" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:20.300518" elapsed="0.000403"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.301404" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:20.301098" elapsed="0.000367"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:20.301513" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:20.301671" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:20.300141" elapsed="0.001555"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:20.302696" level="INFO">${ip_address} = 10.30.171.9</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-19T01:13:20.302409" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:20.302772" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:13:20.302919" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:20.302082" elapsed="0.000862"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.304512" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:20.304142" elapsed="0.000396"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:20.307205" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:20.307464" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:20.306655" elapsed="0.000910"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:20.307859" elapsed="0.000722"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.309878" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:20.618725" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:20.309554" elapsed="0.309330"/>
</kw>
<msg time="2026-04-19T01:13:20.619059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:20.308885" elapsed="0.310297"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:20.305494" elapsed="0.313865"/>
</kw>
<msg time="2026-04-19T01:13:20.619451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:20.305107" elapsed="0.314397"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:20.304715" elapsed="0.314884"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:20.619662" elapsed="0.000046"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:20.303771" elapsed="0.316071"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.621890" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T01:13:20.634858" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.621490" elapsed="0.013651"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T01:13:20.621344" elapsed="0.013881"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.636723" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T01:13:20.756491" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.635727" elapsed="0.121101"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T01:13:20.635420" elapsed="0.121525"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.758811" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T01:13:20.801207" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.757837" elapsed="0.043701"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T01:13:20.757246" elapsed="0.044571"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.803533" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T01:13:20.848993" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.802546" elapsed="0.046767"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T01:13:20.802130" elapsed="0.047281"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.850947" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T01:13:20.896807" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.850002" elapsed="0.047106"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T01:13:20.849644" elapsed="0.047555"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.898689" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T01:13:20.944909" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.897752" elapsed="0.047492"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T01:13:20.897415" elapsed="0.047937"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.946924" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T01:13:20.993203" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.945969" elapsed="0.047560"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T01:13:20.945601" elapsed="0.048041"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:20.995286" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T01:13:21.041400" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:20.994323" elapsed="0.047435"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T01:13:20.993899" elapsed="0.047979"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T01:13:20.621194" elapsed="0.420769"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T01:13:20.620832" elapsed="0.421370"/>
</kw>
<msg time="2026-04-19T01:13:21.042621" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:21.042731" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:20.620109" elapsed="0.422674"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:21.043292" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:21.044461" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:13:21.044142" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:21.044087" elapsed="0.000611"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:21.045076" elapsed="0.000055"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:20.303223" elapsed="0.742146"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T01:13:20.301895" elapsed="0.743575"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:21.047675" level="INFO">${ip_address} = 10.30.171.128</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-19T01:13:21.047166" elapsed="0.000548"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:21.047785" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T01:13:21.048033" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:21.046182" elapsed="0.001908"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.050478" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:21.049851" elapsed="0.000668"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:21.054500" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:21.055105" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:21.053603" elapsed="0.001648"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:21.055617" elapsed="0.000686"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.057725" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:21.376187" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:21.057364" elapsed="0.319089"/>
</kw>
<msg time="2026-04-19T01:13:21.376596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:21.056653" elapsed="0.320054"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:21.052176" elapsed="0.324694"/>
</kw>
<msg time="2026-04-19T01:13:21.376963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:21.051530" elapsed="0.325486"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:21.050929" elapsed="0.326191"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:21.377174" elapsed="0.000364"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:21.049331" elapsed="0.328342"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.379635" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T01:13:21.392550" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.379237" elapsed="0.013560"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T01:13:21.379082" elapsed="0.013798"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.394350" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T01:13:21.503162" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.393442" elapsed="0.109975"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T01:13:21.393127" elapsed="0.110376"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.504961" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T01:13:21.557839" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.504034" elapsed="0.054133"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T01:13:21.503707" elapsed="0.054551"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.559756" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T01:13:21.605884" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.558825" elapsed="0.047345"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T01:13:21.558485" elapsed="0.047771"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.607725" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T01:13:21.654692" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.606811" elapsed="0.048334"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T01:13:21.606488" elapsed="0.048778"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.657030" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T01:13:21.706198" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.656021" elapsed="0.050344"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T01:13:21.655588" elapsed="0.050836"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.707270" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T01:13:21.762159" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.706794" elapsed="0.055668"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T01:13:21.706572" elapsed="0.055982"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.764427" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T01:13:21.810112" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:21.763136" elapsed="0.047230"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T01:13:21.762758" elapsed="0.047693"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T01:13:21.378919" elapsed="0.431603"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T01:13:21.378603" elapsed="0.432089"/>
</kw>
<msg time="2026-04-19T01:13:21.810934" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:21.811083" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:21.377906" elapsed="0.433238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:21.811566" elapsed="0.000655"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:21.812716" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T01:13:21.812410" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:21.812355" elapsed="0.000743"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:21.813497" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:21.048486" elapsed="0.765293"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T01:13:21.045700" elapsed="0.768178"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:21.816220" level="INFO">${ip_address} = 10.30.171.206</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-19T01:13:21.815518" elapsed="0.000763"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:21.816394" elapsed="0.000066"/>
</return>
<msg time="2026-04-19T01:13:21.816736" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:21.814702" elapsed="0.002089"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.819492" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:21.819071" elapsed="0.000448"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:21.822294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:21.822562" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:21.821708" elapsed="0.000957"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:21.822966" elapsed="0.000887"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:21.825217" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:22.424266" 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 Sun Apr 19 01:13:22 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:21.824867" elapsed="0.599564"/>
</kw>
<msg time="2026-04-19T01:13:22.424582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:21.824187" elapsed="0.600511"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:21.820634" elapsed="0.604235"/>
</kw>
<msg time="2026-04-19T01:13:22.424959" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:21.820115" elapsed="0.604901"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:21.819703" elapsed="0.605490"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:22.425254" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:21.818599" elapsed="0.606840"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.427569" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T01:13:22.440443" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.427163" elapsed="0.013448"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T01:13:22.426987" elapsed="0.013678"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.441603" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T01:13:22.494897" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.440989" elapsed="0.054222"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T01:13:22.440792" elapsed="0.054512"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.496773" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T01:13:22.546891" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.495850" elapsed="0.051357"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T01:13:22.495516" elapsed="0.051785"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.549073" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T01:13:22.598917" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.548160" elapsed="0.051109"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T01:13:22.547773" elapsed="0.051593"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.600888" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T01:13:22.650889" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.599950" elapsed="0.051233"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T01:13:22.599597" elapsed="0.051672"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.652756" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T01:13:22.699076" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.651812" elapsed="0.047530"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T01:13:22.651475" elapsed="0.047961"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.700939" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T01:13:22.746683" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.699986" elapsed="0.046942"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T01:13:22.699649" elapsed="0.047363"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.748495" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T01:13:22.794826" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:22.747580" elapsed="0.047538"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T01:13:22.747261" elapsed="0.047951"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T01:13:22.426793" elapsed="0.368490"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T01:13:22.426439" elapsed="0.368991"/>
</kw>
<msg time="2026-04-19T01:13:22.795811" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:22.795910" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:22.425698" elapsed="0.370263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:22.796384" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:22.797390" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:13:22.797082" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:22.796995" elapsed="0.000635"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:22.797972" elapsed="0.000047"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:21.817490" elapsed="0.980794"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T01:13:21.814230" elapsed="0.984153"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:20.301752" elapsed="2.496700"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T01:13:20.299266" elapsed="2.499304"/>
</kw>
<msg time="2026-04-19T01:13:22.798666" 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-19T01:13:20.298679" elapsed="2.500097"/>
</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-19T01:13:22.804276" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T01:13:22.804829" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:22.805165" 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-19T01:13:22.799505" elapsed="0.005813"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T01:13:20.297739" elapsed="2.507638"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T01:13:20.297235" elapsed="2.508211"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T01:13:22.807324" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:22.806915" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:22.807820" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:22.807517" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:22.807890" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:22.808063" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:22.806532" elapsed="0.001557"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.810403" 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-19T01:13:22.810501" 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-19T01:13:22.810264" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:22.812465" level="INFO">${ip_address} = 10.30.171.9</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-19T01:13:22.811994" elapsed="0.000499"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:22.812543" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:22.812695" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:22.811674" elapsed="0.001046"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.816730" level="INFO">${odl_connection} = 532</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:22.815948" elapsed="0.000827"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:22.818975" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:22.819070" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:22.818694" 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-19T01:13:22.819255" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:22.820447" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:23.138891" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:22.820122" elapsed="0.318952"/>
</kw>
<msg time="2026-04-19T01:13:23.139166" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:22.819747" elapsed="0.319512"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:22.818210" elapsed="0.321183"/>
</kw>
<msg time="2026-04-19T01:13:23.139454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:22.817754" elapsed="0.321755"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:22.817247" elapsed="0.322446"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:23.139883" elapsed="0.000096"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:22.814945" elapsed="0.325270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.143174" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T01:13:23.155825" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:23.155991" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T01:13:23.156088" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:23.156150" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:23.142936" elapsed="0.013246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.158240" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:23.157451" elapsed="0.000941"/>
</kw>
<msg time="2026-04-19T01:13:23.158622" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:23.158919" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:23.156522" elapsed="0.002470"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.160620" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:23.159478" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.163844" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.163237" elapsed="0.000720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.165107" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.164349" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.166196" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.165557" elapsed="0.000742"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:23.161781" elapsed="0.004653"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:23.160870" elapsed="0.005609"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.160821" elapsed="0.005693"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:23.166693" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:23.166578" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.166559" elapsed="0.000202"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:23.166903" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T01:13:23.166813" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.166798" elapsed="0.000194"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:23.167160" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:23.142299" elapsed="0.025033"/>
</kw>
<msg time="2026-04-19T01:13:23.167480" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:23.167591" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:23.140627" elapsed="0.027032"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:23.167916" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:23.168821" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:13:23.168581" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.168560" elapsed="0.000451"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:23.169227" elapsed="0.000047"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:22.813438" elapsed="0.356036"/>
</kw>
<msg time="2026-04-19T01:13:23.169536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:22.812878" elapsed="0.356712"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:22.811157" elapsed="0.358526"/>
</kw>
<msg time="2026-04-19T01:13:23.169731" 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-19T01:13:22.810681" elapsed="0.359098"/>
</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-19T01:13:23.173255" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:23.173811" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:23.174254" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:23.170129" elapsed="0.004290"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:22.809597" elapsed="0.364879"/>
</kw>
<msg time="2026-04-19T01:13:23.174532" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:22.809140" elapsed="0.365441"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:22.808437" elapsed="0.366227"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:22.808282" elapsed="0.366429"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.176988" 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-19T01:13:23.177110" 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-19T01:13:23.176839" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:23.179196" level="INFO">${ip_address} = 10.30.171.128</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-19T01:13:23.178675" elapsed="0.000549"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:23.179273" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:23.179425" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:23.178349" elapsed="0.001101"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.183628" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:23.182797" elapsed="0.000876"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.185857" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:23.185933" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:23.185581" 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-19T01:13:23.186147" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.187384" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:23.500759" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:23.187046" elapsed="0.313840"/>
</kw>
<msg time="2026-04-19T01:13:23.500966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.186671" elapsed="0.314396"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:23.185088" elapsed="0.316092"/>
</kw>
<msg time="2026-04-19T01:13:23.501303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.184663" elapsed="0.316692"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:23.184160" elapsed="0.317344"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:23.501695" elapsed="0.000084"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:23.181709" elapsed="0.320258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.504330" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T01:13:23.516810" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:23.516977" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T01:13:23.517068" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:23.517130" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:23.504129" elapsed="0.013033"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.518336" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:23.517920" elapsed="0.000481"/>
</kw>
<msg time="2026-04-19T01:13:23.518532" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:23.518592" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:23.517415" elapsed="0.001208"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.519490" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:23.518855" elapsed="0.000671"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.523613" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.523253" elapsed="0.000426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.524260" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.523897" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.524858" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.524529" elapsed="0.000390"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:23.520146" elapsed="0.004847"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:23.519644" elapsed="0.005422"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.519613" elapsed="0.005492"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:23.525329" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:23.525186" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.525162" elapsed="0.000264"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:23.525621" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T01:13:23.525497" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.525476" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:23.525955" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:23.503531" elapsed="0.022673"/>
</kw>
<msg time="2026-04-19T01:13:23.526397" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:23.526546" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:23.502345" elapsed="0.024282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:23.526970" elapsed="0.000683"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:23.528173" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T01:13:23.527837" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.527810" elapsed="0.000622"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:23.528688" elapsed="0.000062"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:23.180167" elapsed="0.348856"/>
</kw>
<msg time="2026-04-19T01:13:23.529129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.179607" elapsed="0.349591"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:23.177762" elapsed="0.351611"/>
</kw>
<msg time="2026-04-19T01:13:23.529430" 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-19T01:13:23.177295" elapsed="0.352196"/>
</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-19T01:13:23.532822" 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-19T01:13:23.533314" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:23.533626" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:23.529941" elapsed="0.003835"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:23.176217" elapsed="0.357616"/>
</kw>
<msg time="2026-04-19T01:13:23.533898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.175720" elapsed="0.358227"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:23.174984" elapsed="0.359047"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:23.174818" elapsed="0.359274"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.536320" 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-19T01:13:23.536426" 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-19T01:13:23.536182" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:23.538401" level="INFO">${ip_address} = 10.30.171.206</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-19T01:13:23.537914" elapsed="0.000514"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:13:23.538478" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:23.538629" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:23.537595" elapsed="0.001059"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.542467" level="INFO">${odl_connection} = 536</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:23.541846" elapsed="0.000667"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.544883" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:23.544959" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:23.544617" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.545158" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.546523" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:23.873877" 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 Sun Apr 19 01:13:22 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:23.546197" elapsed="0.327933"/>
</kw>
<msg time="2026-04-19T01:13:23.874214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.545793" elapsed="0.328510"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:23.544132" elapsed="0.330283"/>
</kw>
<msg time="2026-04-19T01:13:23.874467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.543723" elapsed="0.330794"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:13:23.542987" elapsed="0.331688"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:13:23.874823" elapsed="0.000083"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:13:23.540843" elapsed="0.334284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.877802" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T01:13:23.890522" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:23.890644" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T01:13:23.890689" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:13:23.890730" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:13:23.877599" elapsed="0.013154"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.891615" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:13:23.891332" elapsed="0.000329"/>
</kw>
<msg time="2026-04-19T01:13:23.891796" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:13:23.891845" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:23.890935" elapsed="0.000933"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.892495" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:23.892056" elapsed="0.000465"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.893843" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.893364" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.894312" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.894062" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.894758" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.894515" elapsed="0.000288"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:13:23.892944" elapsed="0.001914"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:23.892605" elapsed="0.002289"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.892583" elapsed="0.002337"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:13:23.895098" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:23.894978" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.894960" elapsed="0.000205"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:23.895308" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:13:23.895218" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.895202" elapsed="0.000190"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:23.895538" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:13:23.876945" elapsed="0.018752"/>
</kw>
<msg time="2026-04-19T01:13:23.895836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:13:23.895946" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:13:23.875492" elapsed="0.020512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:23.896282" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:13:23.897199" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:13:23.896951" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.896932" elapsed="0.000458"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:23.897579" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:13:23.539373" elapsed="0.358467"/>
</kw>
<msg time="2026-04-19T01:13:23.897941" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.538810" elapsed="0.359184"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:13:23.537078" elapsed="0.361022"/>
</kw>
<msg time="2026-04-19T01:13:23.898144" 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-19T01:13:23.536605" elapsed="0.361584"/>
</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-19T01:13:23.901341" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:23.901844" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:23.902172" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:23.898531" elapsed="0.003790"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:13:23.535500" elapsed="0.366880"/>
</kw>
<msg time="2026-04-19T01:13:23.902436" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.535054" elapsed="0.367432"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:13:23.534344" elapsed="0.368228"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:13:23.534187" elapsed="0.368433"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:22.808149" elapsed="1.094506"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:13:22.805898" elapsed="1.096817"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:22.805522" elapsed="1.097230"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:22.805504" elapsed="1.097273"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T01:13:19.179766" elapsed="4.723059"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T01:13:14.053922" elapsed="9.849023"/>
</test>
<test id="s1-s7-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.916591" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:23.916208" elapsed="0.000410"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.917166" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:23.916787" elapsed="0.000405"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T01:13:23.917638" level="INFO">${epoch} = 1776561203.91755</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T01:13:23.917358" elapsed="0.000307"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.918273" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:23.917832" elapsed="0.000468"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.918839" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:13:23.918468" elapsed="0.000398"/>
</kw>
<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-19T01:13:23.920455" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:23.920073" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.920951" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:23.920644" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:23.921023" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T01:13:23.921201" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:23.919679" elapsed="0.001546"/>
</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-19T01:13:23.922300" level="INFO">${member_ip} = 10.30.171.9</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-19T01:13:23.922014" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.923107" 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-19T01:13:23.923208" 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-19T01:13:23.922951" elapsed="0.000283"/>
</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-19T01:13:23.926157" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:23.925828" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:23.925808" elapsed="0.000431"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.926519" 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-19T01:13:23.926619" 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-19T01:13:23.926388" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.927283" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:23.926799" elapsed="0.000531"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.927899" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:23.927489" elapsed="0.000437"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:23.929117" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:23.929241" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:23.928589" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.929452" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:23.932223" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:24.246619" 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 Sun Apr 19 01:13:14 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:13:23.931657" elapsed="0.315195"/>
</kw>
<msg time="2026-04-19T01:13:24.246987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.930398" elapsed="0.316800"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:23.928158" elapsed="0.319304"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.247992" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log'.</msg>
<msg time="2026-04-19T01:13:24.270960" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:24.271245" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:24.271344" 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-19T01:13:24.247720" elapsed="0.023674"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:24.271768" elapsed="0.000521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.273434" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:24.272716" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:24.274099" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:24.273755" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:24.273701" elapsed="0.000567"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:24.274625" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:13:24.274387" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:24.274353" elapsed="0.000460"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:24.274888" 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-19T01:13:24.292787" elapsed="0.000532"/>
</kw>
<kw name="Open 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-19T01:13:24.293488" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:24.293811" 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-19T01:13:24.275627" elapsed="0.018334"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:23.925290" elapsed="0.368781"/>
</kw>
<msg time="2026-04-19T01:13:24.294128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:23.924439" elapsed="0.369741"/>
</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-19T01:13:23.923894" elapsed="0.370367"/>
</kw>
<msg time="2026-04-19T01:13:24.294303" 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-19T01:13:23.923389" elapsed="0.370959"/>
</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-19T01:13:24.297469" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:13:24.297974" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:24.298288" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:24.294638" elapsed="0.003798"/>
</kw>
<msg time="2026-04-19T01:13:24.298528" 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-19T01:13:23.922543" elapsed="0.376009"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.298981" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:24.298733" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:24.299310" 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-19T01:13:23.921595" elapsed="0.377844"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:23.921416" elapsed="0.378062"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:24.300486" level="INFO">${member_ip} = 10.30.171.128</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-19T01:13:24.300196" elapsed="0.000317"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.301299" 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-19T01:13:24.301444" 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-19T01:13:24.301161" elapsed="0.000311"/>
</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-19T01:13:24.304273" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:24.303975" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:24.303956" elapsed="0.000396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.304627" 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-19T01:13:24.304727" 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-19T01:13:24.304498" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.305384" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:24.304905" elapsed="0.000527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.306024" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:24.305590" elapsed="0.000475"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.307239" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:24.307361" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:24.306708" elapsed="0.000677"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:24.307569" elapsed="0.000657"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.310539" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:24.623873" 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 Sun Apr 19 01:13:15 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:13:24.309968" elapsed="0.314142"/>
</kw>
<msg time="2026-04-19T01:13:24.624239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:24.308451" elapsed="0.315956"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:24.306281" elapsed="0.318297"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.625147" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log'.</msg>
<msg time="2026-04-19T01:13:24.648381" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:24.648627" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:24.648727" 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-19T01:13:24.624849" elapsed="0.023930"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:24.649245" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.650837" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:24.650173" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:24.651444" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:24.651151" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:24.651091" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:24.651951" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:13:24.651718" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:24.651684" elapsed="0.000520"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:24.652381" 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-19T01:13:24.668368" elapsed="0.000541"/>
</kw>
<kw name="Open 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-19T01:13:24.669317" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:24.669633" 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-19T01:13:24.653182" elapsed="0.016602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:24.303413" elapsed="0.366464"/>
</kw>
<msg time="2026-04-19T01:13:24.669932" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:24.302720" elapsed="0.367265"/>
</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-19T01:13:24.302181" elapsed="0.367902"/>
</kw>
<msg time="2026-04-19T01:13:24.670126" 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-19T01:13:24.301630" elapsed="0.368542"/>
</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-19T01:13:24.673364" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:13:24.673838" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:24.674149" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:13:24.670461" elapsed="0.003836"/>
</kw>
<msg time="2026-04-19T01:13:24.674388" 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-19T01:13:24.300731" elapsed="0.373682"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.674834" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:24.674591" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:24.674918" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:24.299763" elapsed="0.375294"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:24.299578" elapsed="0.375519"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:24.676080" level="INFO">${member_ip} = 10.30.171.206</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-19T01:13:24.675784" elapsed="0.000324"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.676862" 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-19T01:13:24.676960" 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-19T01:13:24.676726" elapsed="0.000260"/>
</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-19T01:13:24.679886" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:24.679614" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:24.679595" elapsed="0.000370"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.680260" 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-19T01:13:24.680360" 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-19T01:13:24.680132" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.681000" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:24.680538" elapsed="0.000566"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.681735" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:13:24.681289" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:13:24.682941" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:13:24.683094" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:13:24.682426" elapsed="0.000695"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:24.683309" elapsed="0.000653"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:13:24.686068" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:13:25.011113" 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 Sun Apr 19 01:13:22 UTC 2026

  System load:  0.3                Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:13:24.685494" elapsed="0.325852"/>
</kw>
<msg time="2026-04-19T01:13:25.011482" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:24.684210" elapsed="0.327444"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:13:24.681980" elapsed="0.329852"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:13:25.012399" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776561203.91755.log'.</msg>
<msg time="2026-04-19T01:13:25.035573" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:13:25.035821" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:13:25.035920" 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-19T01:13:25.012101" elapsed="0.023888"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:25.036424" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:25.038168" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:25.037427" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:25.038808" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:25.038483" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:25.038401" elapsed="0.000569"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:13:25.039451" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T01:13:25.039186" elapsed="0.000404"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:25.039129" elapsed="0.000514"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:13:25.039717" 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-19T01:13:25.056824" elapsed="0.000538"/>
</kw>
<kw name="Open 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-19T01:13:25.057534" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:25.057842" 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-19T01:13:25.040528" elapsed="0.017464"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:13:24.679081" elapsed="0.379021"/>
</kw>
<msg time="2026-04-19T01:13:25.058156" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:24.678466" elapsed="0.379743"/>
</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-19T01:13:24.677905" elapsed="0.380381"/>
</kw>
<msg time="2026-04-19T01:13:25.058386" 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-19T01:13:24.677167" elapsed="0.381266"/>
</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-19T01:13:25.061610" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:13:25.062100" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:13:25.062395" 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-19T01:13:25.058729" elapsed="0.003813"/>
</kw>
<msg time="2026-04-19T01:13:25.062632" 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-19T01:13:24.676322" elapsed="0.386335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:25.063102" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:25.062840" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:13:25.063186" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:13:24.675377" elapsed="0.387938"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:13:24.675194" elapsed="0.388158"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:13:23.921281" elapsed="1.142105"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T01:13:23.919154" elapsed="1.144292"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:25.075544" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:25.075157" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:25.076051" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:25.075732" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:25.076123" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:25.076278" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:25.074766" elapsed="0.001537"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:25.077827" 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-19T01:13:25.077530" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:13:25.077899" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:13:25.078069" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:25.077184" elapsed="0.000911"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:25.085874" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:25.085624" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:25.086692" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:25.086430" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:13:25.092114" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:13:25.088996" elapsed="0.004910">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:25.086805" elapsed="0.007190">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.094203" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:25.094046" elapsed="0.000263"/>
</branch>
<status status="FAIL" start="2026-04-19T01:13:25.086786" elapsed="0.007547">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.094869" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:25.095006" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:25.094968" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:25.094951" elapsed="0.000151"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.095249" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:13:25.095320" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:13:25.081140" elapsed="0.014290">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:25.095507" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:13:25.078306" elapsed="0.017301">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.095830" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:13:25.095956" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:25.095920" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:25.095904" elapsed="0.000114"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.096232" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.096456" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:13:25.096523" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:13:25.076765" elapsed="0.019859">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:13:25.096743" elapsed="0.000018"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:13:25.096703" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:25.096687" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.096951" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T01:13:25.076538" elapsed="0.020529">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:13:25.076357" elapsed="0.020777">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:13:25.074367" elapsed="0.022863">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:25.074056" elapsed="0.023234">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T01:13:25.074022" elapsed="0.023330">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:13:25.097627" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:25.097425" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:25.097408" elapsed="0.000298"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:13:25.097970" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:25.097759" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:25.097743" elapsed="0.000324"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:13:25.073623" elapsed="0.024525">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:35.119011" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:35.118550" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:35.119574" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:35.119252" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:35.119652" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:13:35.119822" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:35.118091" elapsed="0.001757"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:35.121497" 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-19T01:13:35.121159" elapsed="0.000367"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:13:35.121574" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:35.121725" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:35.120759" elapsed="0.000992"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:35.129496" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:35.129217" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:35.129954" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:35.129703" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:13:35.191431" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:13:35.191612" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T01:13:35.191934" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:13:35.132255" elapsed="0.060579">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:35.130085" elapsed="0.063081">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.193637" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:35.193251" elapsed="0.000536"/>
</branch>
<status status="FAIL" start="2026-04-19T01:13:35.130065" elapsed="0.063778">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.195057" elapsed="0.000042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:35.195259" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:35.195204" elapsed="0.000117"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:35.195178" elapsed="0.000180"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.195579" elapsed="0.000034"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:13:35.195683" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:13:35.124561" elapsed="0.071276">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:35.195939" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:13:35.121966" elapsed="0.074144">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.196434" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:13:35.196619" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:35.196567" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:35.196543" elapsed="0.000164"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.196991" elapsed="0.000035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.197330" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:13:35.197441" elapsed="0.000026"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:13:35.120362" elapsed="0.077229">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:13:35.197758" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:13:35.197703" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:35.197679" elapsed="0.000164"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.198071" elapsed="0.000032"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T01:13:35.120115" elapsed="0.078060">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:13:35.119905" elapsed="0.078351">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:13:35.117653" elapsed="0.080738">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:35.117303" elapsed="0.081184">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T01:13:35.117277" elapsed="0.081255">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:13:35.198927" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:35.198646" elapsed="0.000359"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:35.198622" elapsed="0.000438"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:13:35.199505" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:35.199184" elapsed="0.000405"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:35.199118" elapsed="0.000506"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:13:35.116752" elapsed="0.082988">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:45.218724" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:45.218276" elapsed="0.000480"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:45.219314" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:45.218983" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:45.219391" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:13:45.219556" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:45.217852" elapsed="0.001730"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:45.221163" 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-19T01:13:45.220842" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:13:45.221238" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:45.221387" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:45.220493" elapsed="0.000919"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:45.230782" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:45.230514" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:45.231265" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:45.231002" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:13:45.248014" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:13:45.248137" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T01:13:45.248446" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:13:45.233523" elapsed="0.015747">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:45.231380" elapsed="0.018081">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.249889" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:45.249536" elapsed="0.000530"/>
</branch>
<status status="FAIL" start="2026-04-19T01:13:45.231360" elapsed="0.018763">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.251445" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:45.251755" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:45.251670" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:45.251630" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.252252" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:13:45.252411" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:13:45.224159" elapsed="0.028492">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:45.252809" elapsed="0.000034"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:13:45.221624" elapsed="0.031396">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.253549" elapsed="0.000054"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:13:45.253830" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:45.253752" elapsed="0.000167"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:45.253714" elapsed="0.000252"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.254433" elapsed="0.000053"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.254939" elapsed="0.000053"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:13:45.255120" elapsed="0.000034"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:13:45.220110" elapsed="0.035235">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:13:45.255597" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:13:45.255517" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:45.255479" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.256073" elapsed="0.000048"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T01:13:45.219826" elapsed="0.036404">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:13:45.219640" elapsed="0.036716">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:13:45.217436" elapsed="0.039126">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:45.217092" elapsed="0.039593">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T01:13:45.217064" elapsed="0.039687">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:13:45.257365" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:45.256892" elapsed="0.000594"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:45.256857" elapsed="0.000680"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:13:45.258140" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:45.257653" elapsed="0.000613"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:13:45.257619" elapsed="0.000697"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:13:45.216561" elapsed="0.041931">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.274912" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:13:55.274440" elapsed="0.000504"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.275448" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:13:55.275133" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:13:55.275525" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:13:55.275695" level="INFO">${index_list} = [1, 2, 3]</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-19T01:13:55.273993" elapsed="0.001727"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.277527" 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-19T01:13:55.277213" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:13:55.277602" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:55.277752" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:55.276596" elapsed="0.001182"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.285416" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.285152" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.285864" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.285620" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:13:55.519370" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:13:55.519633" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:13:55 GMT', 'Expires': 'Sun, 19 Apr 2026 00:13:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561235,"status":200} 
 </msg>
<msg time="2026-04-19T01:13:55.520061" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:13:55.288231" elapsed="0.231914"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.285990" elapsed="0.234284"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.520835" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.520377" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.285971" elapsed="0.235198"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.531098" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561235,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.524439" elapsed="0.006908"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.523751" elapsed="0.007848"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.523702" elapsed="0.008021"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.536442" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.532453" elapsed="0.004088"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.531868" elapsed="0.004782"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.531829" elapsed="0.004849"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.537458" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.536866" elapsed="0.000622"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.537900" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.537628" elapsed="0.000475"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.538927" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.538319" elapsed="0.000691"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.538131" elapsed="0.001056"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.537607" elapsed="0.001606"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.539967" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.539382" elapsed="0.000613"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.540369" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.540100" elapsed="0.000462"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.541385" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.540762" elapsed="0.000726"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.540591" elapsed="0.001083"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.540079" elapsed="0.001621"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:55.541876" elapsed="0.000806"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:13:55.543754" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.542859" elapsed="0.000926"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.543965" elapsed="0.003495"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:13:55.522567" elapsed="0.024964"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:55.547728" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:55.547602" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.547583" elapsed="0.000247"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:13:55.550919" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:13:55.547982" elapsed="0.002968"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:13:55.551006" elapsed="0.000055"/>
</return>
<msg time="2026-04-19T01:13:55.551198" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:13:55.280607" elapsed="0.270618"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:13:55.551285" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:13:55.551437" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:13:55.278011" elapsed="0.273505"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.552463" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.552163" elapsed="0.000353"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.553546" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.553128" elapsed="0.000448"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:13:55.553628" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:55.553797" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:13:55.552734" elapsed="0.001137"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:55.554377" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.554139" elapsed="0.000267"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:55.554779" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.554564" elapsed="0.000243"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:13:55.554864" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:55.555021" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:13:55.551746" elapsed="0.003319"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:13:55.555248" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:55.555135" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.555117" elapsed="0.000198"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.563117" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.562836" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.563573" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.563322" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:13:55.572355" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:13:55.572448" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:13:55 GMT', 'Expires': 'Sun, 19 Apr 2026 00:13:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561235,"status":200} 
 </msg>
<msg time="2026-04-19T01:13:55.572577" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:13:55.566058" elapsed="0.006546"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.563688" elapsed="0.008966"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.572857" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.572684" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.563669" elapsed="0.009276"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.577185" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561235,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.574257" elapsed="0.003033"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.573989" elapsed="0.003413"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.573969" elapsed="0.003463"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.580569" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.577752" elapsed="0.002910"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.577496" elapsed="0.003272"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.577477" elapsed="0.003318"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.581567" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.580992" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.581927" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.581664" elapsed="0.000453"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.582956" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.582314" elapsed="0.000763"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.582145" elapsed="0.001079"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.581646" elapsed="0.001602"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.583927" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.583412" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.584390" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.584124" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.585336" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.584753" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.584589" elapsed="0.000972"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.584101" elapsed="0.001484"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:55.585742" elapsed="0.000684"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:13:55.587435" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.586594" elapsed="0.000867"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.587621" elapsed="0.003069"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:13:55.573529" elapsed="0.017233"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:55.590948" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:55.590834" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.590815" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:13:55.594058" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:13:55.591258" elapsed="0.002830"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:13:55.594141" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:13:55.594312" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:13:55.558230" elapsed="0.036109"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:13:55.594400" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:13:55.594551" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:13:55.555519" elapsed="0.039060"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.595551" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.595294" elapsed="0.000307"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.596634" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.596181" elapsed="0.000482"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:13:55.596715" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:55.596879" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:13:55.595811" elapsed="0.001095"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:55.597346" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.597103" elapsed="0.000317"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:55.597806" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.597586" elapsed="0.000247"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:13:55.597883" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:55.598059" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:13:55.594802" elapsed="0.003292"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:13:55.598188" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:55.598349" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:13:55.276212" elapsed="0.322163"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:13:55.598561" elapsed="0.000033"/>
</continue>
<status status="PASS" start="2026-04-19T01:13:55.598445" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.598428" elapsed="0.000222"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.598804" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:13:55.275963" elapsed="0.322900"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.600723" level="INFO">${session} = ClusterManagement__session_2</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-19T01:13:55.600382" elapsed="0.000369"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:13:55.600824" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T01:13:55.601003" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:55.599937" elapsed="0.001109"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.608936" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.608626" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.609417" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.609167" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:13:55.925784" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:13:55.925987" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:13:55 GMT', 'Expires': 'Sun, 19 Apr 2026 00:13:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561235,"status":200} 
 </msg>
<msg time="2026-04-19T01:13:55.926329" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:13:55.611755" elapsed="0.314667"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.609537" elapsed="0.317014"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.927065" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.926621" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.609515" elapsed="0.317750"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.935991" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561235,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.930108" elapsed="0.006000"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.929511" elapsed="0.006707"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.929467" elapsed="0.006779"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.939565" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.936550" elapsed="0.003106"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.936304" elapsed="0.003528"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.936286" elapsed="0.003576"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.940667" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.940065" elapsed="0.000630"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.941047" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.940766" elapsed="0.000457"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.941987" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.941416" elapsed="0.000669"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.941249" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.940747" elapsed="0.001511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.942964" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.942424" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.943365" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.943107" elapsed="0.000464"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.944339" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.943760" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.943597" elapsed="0.001010"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.943087" elapsed="0.001543"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:55.944790" elapsed="0.000680"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:13:55.946460" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.945639" elapsed="0.000849"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.946675" elapsed="0.003195"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:13:55.928473" elapsed="0.021467"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:55.950147" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:55.950013" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.949993" elapsed="0.000225"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:13:55.953358" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:13:55.950367" elapsed="0.003022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:13:55.953442" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:13:55.953612" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:13:55.603860" elapsed="0.349779"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:13:55.953697" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:13:55.953847" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:13:55.601298" elapsed="0.352576"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.954791" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.954503" elapsed="0.000337"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.956004" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.955596" elapsed="0.000516"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:13:55.956166" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:55.956331" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:13:55.955198" elapsed="0.001161"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:55.956787" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.956550" elapsed="0.000266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:55.957253" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.956973" elapsed="0.000308"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:13:55.957331" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:55.957483" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:13:55.954125" elapsed="0.003384"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:13:55.957693" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:55.957580" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.957562" elapsed="0.000197"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.965820" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.965541" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.966295" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.966045" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:13:55.975567" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:13:55.975651" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:13:55 GMT', 'Expires': 'Sun, 19 Apr 2026 00:13:55 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561235,"status":200} 
 </msg>
<msg time="2026-04-19T01:13:55.975777" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:13:55.968620" elapsed="0.007185"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.966411" elapsed="0.009444"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.976078" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.975886" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.966391" elapsed="0.009777"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.980493" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561235,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.977483" elapsed="0.003124"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.977202" elapsed="0.003513"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.977181" elapsed="0.003563"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.983800" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.981057" elapsed="0.002834"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.980800" elapsed="0.003197"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.980784" elapsed="0.003240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.984812" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.984225" elapsed="0.000615"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.985254" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.984910" elapsed="0.000523"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.986239" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.985630" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.985460" elapsed="0.001009"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.984892" elapsed="0.001602"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.987207" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.986656" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:55.987593" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:13:55.987304" elapsed="0.000462"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:55.988576" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:13:55.987955" elapsed="0.000703"/>
</kw>
<status status="PASS" start="2026-04-19T01:13:55.987793" elapsed="0.001010"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.987286" elapsed="0.001541"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:13:55.988984" elapsed="0.000676"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:13:55.991753" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:55.989828" elapsed="0.001964"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:13:55.992021" elapsed="0.003268"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:13:55.976719" elapsed="0.018638"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:13:55.995592" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:13:55.995450" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:55.995426" elapsed="0.000237"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:13:55.998742" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:13:55.995810" elapsed="0.002961"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:13:55.998824" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T01:13:55.999027" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:13:55.960865" elapsed="0.038204"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:13:55.999129" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:13:55.999280" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:13:55.957962" elapsed="0.041344"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:56.000241" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561235,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:55.999930" elapsed="0.000362"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:13:56.001263" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:13:56.000840" elapsed="0.000452"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:13:56.001341" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:13:56.001532" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561235, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:13:56.000503" elapsed="0.001135"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:56.002046" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:56.001802" elapsed="0.000273"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:13:56.002451" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:13:56.002233" elapsed="0.000243"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:13:56.002525" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:13:56.002675" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:13:55.999568" elapsed="0.003131"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:13:56.002743" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:13:56.002892" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:13:55.599533" elapsed="0.403384"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:13:56.003133" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-19T01:13:56.003003" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T01:13:56.002984" elapsed="0.000235"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:13:56.003373" elapsed="0.000027"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:13:55.599020" elapsed="0.404427"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:13:56.004986" level="INFO">${session} = ClusterManagement__session_3</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-19T01:13:56.004688" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:13:56.005078" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:13:56.005226" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:13:56.004304" elapsed="0.000948"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:56.013111" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:56.012848" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:13:56.013552" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:13:56.013310" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:16:01.107729" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:13:56.015845" elapsed="125.095778">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:56.013661" elapsed="125.098245">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.112314" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:01.111976" elapsed="0.000443"/>
</branch>
<status status="FAIL" start="2026-04-19T01:13:56.013642" elapsed="125.098813">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.113317" elapsed="0.000042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:16:01.113527" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:01.113469" elapsed="0.000118"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:16:01.113442" elapsed="0.000176"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.113825" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:16:01.113923" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:13:56.008302" elapsed="125.105802">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:16:01.114208" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:13:56.005465" elapsed="125.108883">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.114755" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:16:01.114940" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:01.114888" elapsed="0.000110"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:16:01.114863" elapsed="0.000170"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.115333" elapsed="0.000035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.115645" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:16:01.115769" elapsed="0.000026"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:13:56.003858" elapsed="125.112065">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:16:01.116120" elapsed="0.000024"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:16:01.116060" elapsed="0.000120"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:16:01.116014" elapsed="0.000197"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.116419" elapsed="0.000031"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:13:56.003628" elapsed="125.112896">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:13:55.275777" elapsed="125.840833">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:13:55.273531" elapsed="125.843222">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:13:55.273182" elapsed="125.843654">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:13:55.273156" elapsed="125.843724">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:16:01.117319" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:01.116983" elapsed="0.000418"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:16:01.116958" elapsed="0.000479"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:16:01.117817" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:01.117515" elapsed="0.000385"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:16:01.117493" elapsed="0.000441"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:13:55.272643" elapsed="125.845441">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.138516" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:16:11.138062" elapsed="0.000487"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.139060" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:16:11.138721" elapsed="0.000366"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:16:11.139137" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:16:11.139304" level="INFO">${index_list} = [1, 2, 3]</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-19T01:16:11.137595" elapsed="0.001734"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.140876" 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-19T01:16:11.140577" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:16:11.140948" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:16:11.141118" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:16:11.140211" elapsed="0.000939"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.149734" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.149458" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.150234" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.149964" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:16:11.161017" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:16:11.161150" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:16:11 GMT', 'Expires': 'Sun, 19 Apr 2026 00:16:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561371,"status":200} 
 </msg>
<msg time="2026-04-19T01:16:11.161315" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:16:11.152532" elapsed="0.008820"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.150346" elapsed="0.011068"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.161668" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.161450" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.150328" elapsed="0.011459"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.167201" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561371,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.163499" elapsed="0.003836"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.163155" elapsed="0.004331"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.163129" elapsed="0.004395"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.171816" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.167953" elapsed="0.004039"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.167602" elapsed="0.004583"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.167579" elapsed="0.004646"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.173048" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.172473" elapsed="0.000605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.173423" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.173151" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.174424" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.173796" elapsed="0.000708"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.173630" elapsed="0.001040"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.173133" elapsed="0.001563"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.175423" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.174863" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.175810" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.175539" elapsed="0.000475"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.176789" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.176221" elapsed="0.000647"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.176056" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.175514" elapsed="0.001544"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:16:11.177213" elapsed="0.000664"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:16:11.179022" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.178082" elapsed="0.001027"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.179270" elapsed="0.003338"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:16:11.162533" elapsed="0.020141"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:16:11.182854" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:11.182744" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.182725" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:16:11.185807" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:16:11.183083" elapsed="0.002753"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:16:11.185889" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:16:11.186066" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:16:11.144855" elapsed="0.041239"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:16:11.186151" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:16:11.186298" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:16:11.141507" elapsed="0.044817"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.187346" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.187092" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.188397" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.187980" elapsed="0.000445"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:16:11.188475" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:16:11.188632" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:16:11.187602" elapsed="0.001055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.189049" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.188812" elapsed="0.000266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.189439" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.189230" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:16:11.189511" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:16:11.189657" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:16:11.186536" elapsed="0.003145"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:16:11.189855" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:11.189748" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.189731" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.197560" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.197311" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.197999" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.197758" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:16:11.208006" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:16:11.208101" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:16:11 GMT', 'Expires': 'Sun, 19 Apr 2026 00:16:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561371,"status":200} 
 </msg>
<msg time="2026-04-19T01:16:11.208232" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:16:11.201804" elapsed="0.006456"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.198162" elapsed="0.010144"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.208499" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.208333" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.198143" elapsed="0.010443"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.212657" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561371,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.209831" elapsed="0.002921"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.209582" elapsed="0.003276"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.209562" elapsed="0.003324"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.215922" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.213201" elapsed="0.002856"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.212942" elapsed="0.003223"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.212925" elapsed="0.003268"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.216944" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.216402" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.217316" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.217058" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.218310" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.217675" elapsed="0.000732"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.217511" elapsed="0.001110"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.217023" elapsed="0.001633"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.219662" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.218883" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.220221" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.219797" elapsed="0.000698"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.221578" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.220769" elapsed="0.000945"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.220534" elapsed="0.001389"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.219771" elapsed="0.002215"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:16:11.222268" elapsed="0.001045"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:16:11.224666" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.223549" elapsed="0.001145"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.224853" elapsed="0.003133"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:16:11.209119" elapsed="0.019012"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:16:11.228318" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:11.228205" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.228186" elapsed="0.000201"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:16:11.231341" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:16:11.228533" elapsed="0.002838"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:16:11.231423" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:16:11.231590" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:16:11.192859" elapsed="0.038758"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:16:11.231675" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:16:11.231823" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:16:11.190169" elapsed="0.041680"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.232766" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.232485" elapsed="0.000333"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.233801" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.233396" elapsed="0.000433"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:16:11.233880" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:16:11.234062" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:16:11.233046" elapsed="0.001044"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.234483" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.234250" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.234887" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.234670" elapsed="0.000242"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:16:11.234961" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:16:11.235198" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:16:11.232119" elapsed="0.003105"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:16:11.235271" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:16:11.235420" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:16:11.139817" elapsed="0.095628"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:16:11.235625" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T01:16:11.235513" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.235496" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.235859" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:16:11.139572" elapsed="0.096344"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.237659" level="INFO">${session} = ClusterManagement__session_2</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-19T01:16:11.237352" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:16:11.237771" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:16:11.237927" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:16:11.236976" elapsed="0.000977"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.245558" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.245304" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.246008" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.245761" elapsed="0.000329"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:16:11.255843" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:16:11.255921" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:16:11 GMT', 'Expires': 'Sun, 19 Apr 2026 00:16:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561371,"status":200} 
 </msg>
<msg time="2026-04-19T01:16:11.256050" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:16:11.248323" elapsed="0.007756"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.246160" elapsed="0.009962"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.256424" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.256219" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.246141" elapsed="0.010408"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.261937" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561371,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.258238" elapsed="0.003863"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.257850" elapsed="0.004401"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.257823" elapsed="0.004466"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.266322" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.262842" elapsed="0.003571"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.262412" elapsed="0.004105"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.262377" elapsed="0.004166"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.267258" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.266711" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.267618" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.267356" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.268575" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.267983" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.267819" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.267338" elapsed="0.001486"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.269520" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.268990" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.269873" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.269618" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.270822" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.270272" elapsed="0.000627"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.270111" elapsed="0.000954"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.269600" elapsed="0.001490"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:16:11.271244" elapsed="0.000693"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:16:11.272941" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.272121" elapsed="0.000847"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.273142" elapsed="0.003251"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:16:11.257264" elapsed="0.019196"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:16:11.276639" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:11.276530" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.276511" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:16:11.279693" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:16:11.276850" elapsed="0.002873"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:16:11.279776" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:16:11.279936" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:16:11.240810" elapsed="0.039153"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:16:11.280019" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T01:16:11.280185" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:16:11.238185" elapsed="0.042027"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.281086" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.280816" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.282180" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.281691" elapsed="0.000518"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:16:11.282259" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:16:11.282419" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:16:11.281353" elapsed="0.001092"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.282820" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.282598" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.283231" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.283002" elapsed="0.000255"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:16:11.283303" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:16:11.283452" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:16:11.280450" elapsed="0.003026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:16:11.283649" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:11.283543" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.283526" elapsed="0.000283"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.291588" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.291339" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.292292" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.292015" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:16:11.299811" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:16:11.299889" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:16:11 GMT', 'Expires': 'Sun, 19 Apr 2026 00:16:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561371,"status":200} 
 </msg>
<msg time="2026-04-19T01:16:11.300002" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:16:11.294674" elapsed="0.005382"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.292405" elapsed="0.007697"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.300297" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.300129" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.292386" elapsed="0.008003"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.304256" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561371,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.301596" elapsed="0.002781"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.301354" elapsed="0.003129"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.301335" elapsed="0.003176"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.308381" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.304809" elapsed="0.003699"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.304568" elapsed="0.004101"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.304551" elapsed="0.004159"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.309692" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.308940" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.310211" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.309830" elapsed="0.000623"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.311521" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.310719" elapsed="0.000912"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.310490" elapsed="0.001338"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.309804" elapsed="0.002058"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.312914" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.312166" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.313417" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:16:11.313072" elapsed="0.000514"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.314366" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:16:11.313776" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T01:16:11.313613" elapsed="0.000977"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.313024" elapsed="0.001601"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:16:11.314780" elapsed="0.000668"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:16:11.316440" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.315615" elapsed="0.000853"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.316661" elapsed="0.003024"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:16:11.300896" elapsed="0.018855"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:16:11.319930" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:16:11.319821" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.319803" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:16:11.323016" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:16:11.320257" elapsed="0.002806"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:16:11.323130" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:16:11.323293" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:16:11.286620" elapsed="0.036700"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:16:11.323377" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:16:11.323525" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:16:11.284013" elapsed="0.039538"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.324524" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561371,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.324256" elapsed="0.000318"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.325575" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:16:11.325176" elapsed="0.000429"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:16:11.325653" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:16:11.325813" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561371, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:16:11.324784" elapsed="0.001055"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.326231" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.325992" elapsed="0.000266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:16:11.326622" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:16:11.326413" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:16:11.326694" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:16:11.326844" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:16:11.323762" elapsed="0.003106"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:16:11.326911" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:16:11.327071" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:16:11.236353" elapsed="0.090744"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:16:11.327273" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T01:16:11.327164" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T01:16:11.327147" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:16:11.327497" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:16:11.236109" elapsed="0.091442"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.329276" level="INFO">${session} = ClusterManagement__session_3</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-19T01:16:11.328959" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:16:11.329349" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:16:11.329496" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:16:11.328615" elapsed="0.000906"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.337076" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.336800" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:16:11.337518" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:16:11.337276" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:18:16.430640" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:16:11.339784" elapsed="125.094919">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:16:11.337627" elapsed="125.097285">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.435497" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:16.434998" elapsed="0.000654"/>
</branch>
<status status="FAIL" start="2026-04-19T01:16:11.337608" elapsed="125.098101">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.436985" elapsed="0.000093"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:18:16.437353" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:16.437261" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:18:16.437219" elapsed="0.000278"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.437824" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:18:16.437982" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:16:11.332281" elapsed="125.105976">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:18:16.438419" elapsed="0.000035"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:16:11.329731" elapsed="125.108903">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.439179" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:18:16.439467" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:16.439387" elapsed="0.000172"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:18:16.439349" elapsed="0.000258"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.440080" elapsed="0.000055"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.440573" elapsed="0.000051"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:18:16.440722" elapsed="0.000036"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:16:11.328160" elapsed="125.112829">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:18:16.441284" elapsed="0.000034"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:18:16.441203" elapsed="0.000167"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:18:16.441163" elapsed="0.000253"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.441730" elapsed="0.000031"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:16:11.327696" elapsed="125.114140">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:16:11.139387" elapsed="125.302610">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:16:11.137176" elapsed="125.304982">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:16:11.136813" elapsed="125.305427">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:16:11.136786" elapsed="125.305496">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:18:16.442654" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:16.442372" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:18:16.442349" elapsed="0.000410"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:18:16.443208" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:16.442834" elapsed="0.000458"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:18:16.442812" elapsed="0.000514"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:16:11.136288" elapsed="125.307152">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.463434" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:18:26.462972" elapsed="0.000494"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.463953" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:18:26.463637" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:18:26.464045" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:18:26.464215" level="INFO">${index_list} = [1, 2, 3]</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-19T01:18:26.462556" elapsed="0.001685"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.465764" 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-19T01:18:26.465462" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:18:26.465839" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:18:26.465988" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:18:26.465113" elapsed="0.000900"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.473659" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.473397" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.474128" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.473865" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:18:26.484383" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:18:26.484494" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:18:26 GMT', 'Expires': 'Sun, 19 Apr 2026 00:18:26 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561506,"status":200} 
 </msg>
<msg time="2026-04-19T01:18:26.484655" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:18:26.476387" elapsed="0.008304"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.474268" elapsed="0.010486"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.485008" elapsed="0.000119"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.484790" elapsed="0.000408"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.474248" elapsed="0.010980"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.490656" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561506,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.486948" elapsed="0.003843"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.486605" elapsed="0.004335"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.486578" elapsed="0.004401"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.495318" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.491428" elapsed="0.003986"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.491088" elapsed="0.004433"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.491063" elapsed="0.004485"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.496350" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.495754" elapsed="0.000624"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.496718" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.496450" elapsed="0.000451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.497699" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.497122" elapsed="0.000656"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.496933" elapsed="0.000992"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.496431" elapsed="0.001519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.498661" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.498126" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.499017" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.498759" elapsed="0.000451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.499963" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.499401" elapsed="0.000692"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.499237" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.498741" elapsed="0.001520"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:18:26.500417" elapsed="0.000673"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:18:26.502069" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.501256" elapsed="0.000840"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.502275" elapsed="0.003018"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:18:26.485923" elapsed="0.019436"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:18:26.505540" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:26.505430" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.505411" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:18:26.508581" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:18:26.505753" elapsed="0.002857"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:18:26.508661" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:18:26.508822" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:18:26.468789" elapsed="0.040060"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:18:26.508938" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:18:26.509109" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:18:26.466270" elapsed="0.042867"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.509957" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.509706" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.511010" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.510609" elapsed="0.000445"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:18:26.511106" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:18:26.511268" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:18:26.510264" elapsed="0.001031"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.511674" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.511451" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.512310" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.511857" elapsed="0.000480"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:18:26.512387" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:18:26.512548" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:18:26.509352" elapsed="0.003230"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:18:26.512776" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:26.512664" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.512644" elapsed="0.000198"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.520436" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.520185" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.520877" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.520635" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:18:26.528420" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:18:26.528495" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:18:26 GMT', 'Expires': 'Sun, 19 Apr 2026 00:18:26 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561506,"status":200} 
 </msg>
<msg time="2026-04-19T01:18:26.528606" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:18:26.523137" elapsed="0.005495"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.520986" elapsed="0.007689"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.528852" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.528700" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.520968" elapsed="0.007967"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.532814" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776561506,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.530146" elapsed="0.002761"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.529854" elapsed="0.003160"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.529836" elapsed="0.003221"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.536439" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.533360" elapsed="0.003203"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.533116" elapsed="0.003594"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.533098" elapsed="0.003650"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.537717" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.536975" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.538258" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.537853" elapsed="0.000652"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.539613" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.538768" elapsed="0.000952"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.538540" elapsed="0.001381"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.537828" elapsed="0.002126"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.540922" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.540203" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.541437" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.541080" elapsed="0.000597"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.542785" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.541943" elapsed="0.000954"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.541713" elapsed="0.001440"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.541053" elapsed="0.002126"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:18:26.543333" elapsed="0.000651"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:18:26.544943" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.544167" elapsed="0.000803"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.545141" elapsed="0.003174"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:18:26.529437" elapsed="0.018944"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:18:26.548563" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:26.548450" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.548432" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:18:26.551570" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:18:26.548775" elapsed="0.002824"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:18:26.551653" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:18:26.551811" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:18:26.515580" elapsed="0.036258"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:18:26.551895" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:18:26.552060" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:18:26.513062" elapsed="0.039026"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.552941" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.552689" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.553953" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.553559" elapsed="0.000422"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:18:26.554045" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:18:26.554213" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:18:26.553216" elapsed="0.001046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.554644" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.554420" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.555112" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.554827" elapsed="0.000312"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:18:26.555188" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:18:26.555363" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:18:26.552336" elapsed="0.003053"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:18:26.555433" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:18:26.555580" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:18:26.464720" elapsed="0.090885"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:18:26.555783" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T01:18:26.555674" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.555656" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.556010" elapsed="0.000036"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:18:26.464485" elapsed="0.091597"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.557493" level="INFO">${session} = ClusterManagement__session_2</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-19T01:18:26.557196" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:18:26.557565" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:18:26.557713" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:18:26.556832" elapsed="0.000906"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.565474" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.565224" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.565919" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.565676" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:18:26.576090" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:18:26.576190" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:18:26 GMT', 'Expires': 'Sun, 19 Apr 2026 00:18:26 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561506,"status":200} 
 </msg>
<msg time="2026-04-19T01:18:26.576387" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:18:26.568185" elapsed="0.008239"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.566046" elapsed="0.010438"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.576733" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.576520" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.566012" elapsed="0.010838"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.582237" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561506,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.578562" elapsed="0.003821"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.578203" elapsed="0.004329"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.578177" elapsed="0.004395"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.586799" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.582987" elapsed="0.003938"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.582651" elapsed="0.004444"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.582628" elapsed="0.004507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.587820" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.587304" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.588194" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.587918" elapsed="0.000448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.589128" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.588554" elapsed="0.000653"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.588391" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.587900" elapsed="0.001475"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.590070" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.589536" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.590433" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.590168" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.591368" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.590789" elapsed="0.000657"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.590627" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.590150" elapsed="0.001461"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:18:26.591761" elapsed="0.000679"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:18:26.593384" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.592605" elapsed="0.000806"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.593565" elapsed="0.003306"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:18:26.577555" elapsed="0.019383"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:18:26.597150" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:26.597008" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.596989" elapsed="0.000237"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:18:26.600192" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:18:26.597374" elapsed="0.002847"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:18:26.600274" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:18:26.600433" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:18:26.560766" elapsed="0.039725"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:18:26.600551" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:18:26.600702" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:18:26.557946" elapsed="0.042783"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.601566" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.601312" elapsed="0.000304"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.602636" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.602212" elapsed="0.000452"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:18:26.602714" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:18:26.602873" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:18:26.601851" elapsed="0.001049"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.603336" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.603111" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.603730" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.603519" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:18:26.603803" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:18:26.603951" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:18:26.600939" elapsed="0.003037"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:18:26.604166" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:26.604058" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.604039" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.611669" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.611421" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.612126" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.611869" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:18:26.620997" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:18:26.621127" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:18:26 GMT', 'Expires': 'Sun, 19 Apr 2026 00:18:26 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561506,"status":200} 
 </msg>
<msg time="2026-04-19T01:18:26.621283" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:18:26.614486" elapsed="0.006835"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.612235" elapsed="0.009145"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.621628" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.621416" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.612217" elapsed="0.009575"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.627205" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776561506,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.623489" elapsed="0.003848"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.623150" elapsed="0.004333"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.623119" elapsed="0.004402"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.631687" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.627933" elapsed="0.003879"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.627600" elapsed="0.004357"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.627576" elapsed="0.004419"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.632994" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.632276" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.633517" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.633155" elapsed="0.000598"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.634860" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.634019" elapsed="0.000949"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.633791" elapsed="0.001387"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.633129" elapsed="0.002073"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.635867" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.635362" elapsed="0.000531"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.636256" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:18:26.635961" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.637185" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:18:26.636613" elapsed="0.000650"/>
</kw>
<status status="PASS" start="2026-04-19T01:18:26.636452" elapsed="0.000953"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.635944" elapsed="0.001484"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:18:26.637580" elapsed="0.000657"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:18:26.639212" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.638416" elapsed="0.000822"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.639391" elapsed="0.003157"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:18:26.622537" elapsed="0.020075"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:18:26.642788" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:18:26.642681" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.642662" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:18:26.645764" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:18:26.642999" elapsed="0.002793"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:18:26.645843" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:18:26.645997" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:18:26.606936" elapsed="0.039087"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:18:26.646096" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:18:26.646278" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:18:26.604428" elapsed="0.041899"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.647153" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776561506,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.646887" elapsed="0.000315"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.648250" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:18:26.647742" elapsed="0.000537"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:18:26.648327" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:18:26.648488" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776561506, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:18:26.647407" elapsed="0.001107"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.648888" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.648668" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:18:26.649298" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:18:26.649088" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:18:26.649369" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:18:26.649517" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:18:26.646541" elapsed="0.003000"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:18:26.649584" elapsed="0.000024"/>
</return>
<msg time="2026-04-19T01:18:26.649726" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:18:26.556454" elapsed="0.093297"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:18:26.649922" elapsed="0.000027"/>
</continue>
<status status="PASS" start="2026-04-19T01:18:26.649816" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:18:26.649799" elapsed="0.000201"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:18:26.650159" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:18:26.556225" elapsed="0.093989"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.652952" level="INFO">${session} = ClusterManagement__session_3</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-19T01:18:26.652651" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:18:26.653041" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:18:26.653198" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:18:26.652304" elapsed="0.000919"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.660753" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.660501" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:18:26.661226" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:18:26.660956" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:20:31.766139" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:18:26.663490" elapsed="125.106647">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:18:26.661338" elapsed="125.109037">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.770891" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:31.770463" elapsed="0.000727"/>
</branch>
<status status="FAIL" start="2026-04-19T01:18:26.661319" elapsed="125.109935">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.772675" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:20:31.772994" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:31.772906" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:20:31.772865" elapsed="0.000310"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.773505" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:20:31.773663" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:18:26.655959" elapsed="125.118002">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:20:31.774175" elapsed="0.000034"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:18:26.653436" elapsed="125.120878">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.774545" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:20:31.774677" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:31.774641" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:20:31.774624" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.774938" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.775174" elapsed="0.000027"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:20:31.775247" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:18:26.651864" elapsed="125.123485">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:20:31.775618" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:20:31.775578" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:20:31.775560" elapsed="0.000120"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.775825" elapsed="0.000020"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:18:26.651627" elapsed="125.124268">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:18:26.464299" elapsed="125.311657">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:18:26.462128" elapsed="125.313943">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:18:26.461767" elapsed="125.314365">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:18:26.461742" elapsed="125.314422">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:20:31.776432" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:31.776232" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:20:31.776215" elapsed="0.000293"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:20:31.776769" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:31.776561" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:20:31.776545" elapsed="0.000304"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:18:26.461257" elapsed="125.315671">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:20:31.777060" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:13:25.063611" elapsed="426.713581">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:20:31.781047" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:20:31.780584" elapsed="0.000493"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:20:31.781550" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:20:31.781239" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:20:31.781623" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:20:31.781782" level="INFO">${index_list} = [1, 2, 3]</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-19T01:20:31.780160" elapsed="0.001647"/>
</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-19T01:20:31.782910" level="INFO">${member_ip} = 10.30.171.9</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-19T01:20:31.782639" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:31.783778" 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-19T01:20:31.783880" 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-19T01:20:31.783609" elapsed="0.000297"/>
</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-19T01:20:31.786639" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:31.786356" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:31.786337" elapsed="0.000385"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:31.787000" 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-19T01:20:31.787116" 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-19T01:20:31.786871" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:31.787762" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:31.787296" elapsed="0.000514"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:31.788416" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:31.787967" elapsed="0.000476"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:20:31.789537" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:20:31.789631" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:20:31.789147" elapsed="0.000509"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:31.789819" elapsed="0.000569"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:20:31.791901" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:20:32.375240" 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 Sun Apr 19 01:20:31 UTC 2026

  System load:  0.05               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:13:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:20:31.791284" elapsed="0.584236"/>
</kw>
<msg time="2026-04-19T01:20:32.375772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:31.790563" elapsed="0.585394"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:20:31.788662" elapsed="0.587480"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:20:32.376797" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T01:20:32.389357" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T01:20:32.389514" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:20:32.389576" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:20:32.376458" elapsed="0.013150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:32.389843" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:32.391149" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:32.390562" elapsed="0.000696"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:32.391737" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:32.391434" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:32.391382" elapsed="0.000515"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:20:32.392301" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T01:20:32.392020" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:32.391985" elapsed="0.000511"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:32.392570" 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-19T01:20:32.399371" elapsed="0.000559"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:32.400115" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:32.400427" 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-19T01:20:32.393312" elapsed="0.007266"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:20:31.785740" elapsed="0.614930"/>
</kw>
<msg time="2026-04-19T01:20:32.400724" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:31.785189" elapsed="0.615598"/>
</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-19T01:20:31.784597" elapsed="0.616269"/>
</kw>
<msg time="2026-04-19T01:20:32.400908" 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-19T01:20:31.784079" elapsed="0.616886"/>
</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-19T01:20:32.403957" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:20:32.404450" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:32.404744" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:32.401283" elapsed="0.003611"/>
</kw>
<msg time="2026-04-19T01:20:32.404987" 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-19T01:20:31.783169" elapsed="0.621843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:32.405466" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:32.405215" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:20:32.405552" 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-19T01:20:31.782203" elapsed="0.623474"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:20:31.782006" elapsed="0.623708"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:32.406774" level="INFO">${member_ip} = 10.30.171.128</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-19T01:20:32.406498" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:32.407674" 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-19T01:20:32.407775" 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-19T01:20:32.407536" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:32.410751" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:32.410476" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:32.410457" elapsed="0.000373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:32.411124" 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-19T01:20:32.411224" 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-19T01:20:32.410978" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:32.411864" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:32.411402" elapsed="0.000509"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:32.412505" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:32.412092" elapsed="0.000440"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:20:32.413614" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:20:32.413706" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:20:32.413223" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:32.413888" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:20:32.415810" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:20:32.986164" 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 Sun Apr 19 01:20:32 UTC 2026

  System load:  0.1                Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:13:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:20:32.415198" elapsed="0.571160"/>
</kw>
<msg time="2026-04-19T01:20:32.986475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:32.414638" elapsed="0.572014"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:20:32.412747" elapsed="0.574019"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:20:32.987317" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T01:20:32.999678" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T01:20:32.999929" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:20:33.000063" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:20:32.987051" elapsed="0.013070"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:33.000502" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.002140" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:33.001439" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:33.002774" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:33.002419" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.002368" elapsed="0.000561"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:20:33.003279" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:20:33.003081" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.003013" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:33.003523" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:33.008112" elapsed="0.000762"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:33.009128" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:33.009563" 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-19T01:20:33.003963" elapsed="0.005803"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:20:32.409869" elapsed="0.600023"/>
</kw>
<msg time="2026-04-19T01:20:33.009967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:32.409298" elapsed="0.600778"/>
</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-19T01:20:32.408703" elapsed="0.601482"/>
</kw>
<msg time="2026-04-19T01:20:33.010243" 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-19T01:20:32.407959" elapsed="0.602363"/>
</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-19T01:20:33.013622" 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-19T01:20:33.014115" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:33.014412" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:33.010781" elapsed="0.003796"/>
</kw>
<msg time="2026-04-19T01:20:33.014676" 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-19T01:20:32.407089" elapsed="0.607613"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.015145" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:33.014880" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:20:33.015231" 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-19T01:20:32.405990" elapsed="0.609365"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:20:32.405807" elapsed="0.609587"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:33.016418" level="INFO">${member_ip} = 10.30.171.206</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-19T01:20:33.016143" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.017249" 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-19T01:20:33.017349" 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-19T01:20:33.017113" elapsed="0.000263"/>
</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-19T01:20:33.020040" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:33.019759" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.019740" elapsed="0.000382"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.020415" 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-19T01:20:33.020516" 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-19T01:20:33.020286" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.021200" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:33.020691" elapsed="0.000596"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.021877" level="INFO">${conn_id} = 553</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:33.021463" elapsed="0.000440"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.023006" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:20:33.023117" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:20:33.022619" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:33.023300" elapsed="0.000695"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.025381" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:20:33.614719" 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 Sun Apr 19 01:20:33 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:13:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:20:33.024739" elapsed="0.590211"/>
</kw>
<msg time="2026-04-19T01:20:33.615102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:33.024188" elapsed="0.591062"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:20:33.022134" elapsed="0.593243"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.615976" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T01:20:33.628780" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T01:20:33.628946" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:20:33.629010" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:20:33.615659" elapsed="0.013410"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:33.629371" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.630961" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:33.630275" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:33.631565" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:33.631270" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.631219" elapsed="0.000503"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:20:33.632107" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:20:33.631838" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.631805" elapsed="0.000488"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:33.632366" 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-19T01:20:33.639191" elapsed="0.000581"/>
</kw>
<kw name="Open 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-19T01:20:33.639939" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:33.640273" 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-19T01:20:33.633094" elapsed="0.007327"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:20:33.019202" elapsed="0.621312"/>
</kw>
<msg time="2026-04-19T01:20:33.640567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:33.018634" elapsed="0.621997"/>
</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-19T01:20:33.018052" elapsed="0.622659"/>
</kw>
<msg time="2026-04-19T01:20:33.640752" 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-19T01:20:33.017534" elapsed="0.623348"/>
</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-19T01:20:33.643848" 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-19T01:20:33.644336" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:33.644627" 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-19T01:20:33.641194" elapsed="0.003587"/>
</kw>
<msg time="2026-04-19T01:20:33.644872" 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-19T01:20:33.016661" elapsed="0.628235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.645336" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:33.645088" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:20:33.645419" 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-19T01:20:33.015670" elapsed="0.629875"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:20:33.015487" elapsed="0.630096"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:20:31.781862" elapsed="1.863759"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T01:20:31.777506" elapsed="1.868178"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T01:13:23.908094" elapsed="429.737683">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:33.645954" elapsed="0.000022"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T01:20:33.646229" elapsed="0.000028"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:33.646617" elapsed="0.000022"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:33.646843" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:33.647165" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:33.646943" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:20:33.646926" elapsed="0.000323"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T01:20:33.646437" elapsed="0.000835"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T01:20:33.646318" elapsed="0.000978"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:33.647452" elapsed="0.000021"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:13:23.903288" elapsed="429.744349">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T01:20:33.648266" elapsed="0.000287"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T01:06:08.684068" elapsed="864.964521"/>
</suite>
<suite id="s1-s8" name="Action Provider Partition And Heal" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_partition_and_heal.robot">
<kw name="Setup_Kw" 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-19T01:20:33.736498" 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-19T01:20:33.732452" elapsed="0.004097"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T01:20:33.732229" elapsed="0.004444"/>
</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-19T01:20:33.741676" 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-19T01:20:33.737776" elapsed="0.003928"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T01:20:33.741905" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:33.741790" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.741765" elapsed="0.000210"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.742495" 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-19T01:20:33.742141" elapsed="0.000396"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.743015" level="INFO">${cluster_size} = 3</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-19T01:20:33.742696" elapsed="0.000359"/>
</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-19T01:20:33.743561" elapsed="0.000290"/>
</kw>
<msg time="2026-04-19T01:20:33.743949" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:20:33.743995" level="INFO">${possibly_int_of_members} = 3</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-19T01:20:33.743220" elapsed="0.000799"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.744579" level="INFO">${int_of_members} = 3</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-19T01:20:33.744204" elapsed="0.000401"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.745578" 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-19T01:20:33.745313" elapsed="0.000292"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.746009" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:20:33.745750" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.746495" 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-19T01:20:33.746207" elapsed="0.000315"/>
</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-19T01:20:33.749530" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.750241" level="INFO">${member_ip} = 10.30.171.9</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-19T01:20:33.749896" 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-19T01:20:33.750414" elapsed="0.000229"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.751450" 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-19T01:20:33.751156" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:20:33.751521" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:20:33.751678" 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-19T01:20:33.750834" elapsed="0.000868"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:20:33.752460" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6faff50&gt;, timeout=125, 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-19T01:20:33.751852" elapsed="0.000744"/>
</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-19T01:20:33.752754" elapsed="0.000191"/>
</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-19T01:20:33.748960" elapsed="0.004045"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:20:33.748772" elapsed="0.004293"/>
</iter>
<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-19T01:20:33.753878" elapsed="0.000202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.754588" level="INFO">${member_ip} = 10.30.171.128</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-19T01:20:33.754240" elapsed="0.000374"/>
</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-19T01:20:33.754758" elapsed="0.000244"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.755829" level="INFO">${session} = ClusterManagement__session_2</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-19T01:20:33.755537" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:20:33.755901" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:20:33.756067" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T01:20:33.755211" elapsed="0.000883"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:20:33.756644" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7f85c10&gt;, timeout=125, 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-19T01:20:33.756244" elapsed="0.000500"/>
</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-19T01:20:33.756903" elapsed="0.000204"/>
</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-19T01:20:33.753329" elapsed="0.003838"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:20:33.753152" elapsed="0.004059"/>
</iter>
<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-19T01:20:33.758016" elapsed="0.000206"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.758693" level="INFO">${member_ip} = 10.30.171.206</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-19T01:20:33.758374" elapsed="0.000345"/>
</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-19T01:20:33.758864" elapsed="0.000246"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.759869" level="INFO">${session} = ClusterManagement__session_3</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-19T01:20:33.759580" elapsed="0.000315"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:20:33.759940" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:20:33.760111" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T01:20:33.759296" elapsed="0.000844"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:20:33.760689" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f722cd90&gt;, timeout=125, 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-19T01:20:33.760288" elapsed="0.000504"/>
</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-19T01:20:33.760947" elapsed="0.000205"/>
</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-19T01:20:33.757474" elapsed="0.003736"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:20:33.757295" elapsed="0.003957"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T01:20:33.746580" elapsed="0.014702"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.761831" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T01:20:33.761437" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.762450" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T01:20:33.762049" elapsed="0.000444"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.763069" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T01:20:33.762648" elapsed="0.000464"/>
</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-19T01:20:33.744850" elapsed="0.018318"/>
</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-19T01:20:33.737436" elapsed="0.025797"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:20:33.763450" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:33.763313" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.763291" elapsed="0.000224"/>
</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-19T01:20:33.766727" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:20:33.766348" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.767266" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:20:33.766909" elapsed="0.000383"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:20:33.767337" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:20:33.767492" level="INFO">${index_list} = [1, 2, 3]</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-19T01:20:33.766004" elapsed="0.001513"/>
</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-19T01:20:33.768503" level="INFO">${member_ip} = 10.30.171.9</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-19T01:20:33.768240" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.769260" 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-19T01:20:33.769358" 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-19T01:20:33.769102" elapsed="0.000282"/>
</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-19T01:20:33.772689" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:33.772133" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:33.772114" elapsed="0.000696"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.773450" 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-19T01:20:33.773676" 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-19T01:20:33.773004" elapsed="0.000723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.774652" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:33.773983" elapsed="0.000774"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.775917" 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-19T01:20:33.775046" elapsed="0.000922"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:20:33.777647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:20:33.777820" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:20:33.777290" elapsed="0.000572"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:33.778217" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:20:33.779950" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:20:34.094299" 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 Sun Apr 19 01:20:31 UTC 2026

  System load:  0.05               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:20:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:20:33.779621" elapsed="0.314833"/>
</kw>
<msg time="2026-04-19T01:20:34.094539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:33.779048" elapsed="0.315656"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:20:33.776415" elapsed="0.318443"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.095866" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:20:34.108646" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:20:34.109011" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:20:34.109288" 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-19T01:20:34.095346" elapsed="0.014051"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.110090" elapsed="0.001119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.113679" 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-19T01:20:34.112440" elapsed="0.001468"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:34.114867" elapsed="0.000106"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:34.114321" elapsed="0.000905"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.114263" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:20:34.115981" elapsed="0.000171"/>
</return>
<status status="PASS" start="2026-04-19T01:20:34.115496" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.115458" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:34.116482" 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-19T01:20:34.120986" elapsed="0.000654"/>
</kw>
<kw name="Open 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-19T01:20:34.122017" elapsed="0.000511"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.122880" elapsed="0.000378"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:34.117155" elapsed="0.006201"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:20:33.771190" elapsed="0.352409"/>
</kw>
<msg time="2026-04-19T01:20:34.123677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:33.770524" elapsed="0.353225"/>
</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-19T01:20:33.770048" elapsed="0.353810"/>
</kw>
<msg time="2026-04-19T01:20:34.123914" 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-19T01:20:33.769535" elapsed="0.354441"/>
</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-19T01:20:34.126845" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:20:34.127343" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.127637" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:34.124414" elapsed="0.003368"/>
</kw>
<msg time="2026-04-19T01:20:34.127872" 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-19T01:20:33.768739" elapsed="0.359158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.128330" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:34.128082" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:20:34.128415" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:20:33.767874" elapsed="0.360664"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:20:33.767701" elapsed="0.360875"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:34.129502" level="INFO">${member_ip} = 10.30.171.128</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-19T01:20:34.129225" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.130290" 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-19T01:20:34.130438" 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-19T01:20:34.130152" elapsed="0.000313"/>
</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-19T01:20:34.135578" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:34.134966" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.134945" elapsed="0.000758"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.136356" 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-19T01:20:34.136587" 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-19T01:20:34.135897" elapsed="0.000742"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.137569" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:34.136896" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.138820" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:34.137935" elapsed="0.000935"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.140608" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:20:34.140779" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:20:34.140243" elapsed="0.000579"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:34.141170" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.142753" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:20:34.460041" 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 Sun Apr 19 01:20:32 UTC 2026

  System load:  0.1                Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:20:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:20:34.142429" elapsed="0.317763"/>
</kw>
<msg time="2026-04-19T01:20:34.460276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:34.141968" elapsed="0.318466"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:20:34.139359" elapsed="0.321228"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.461471" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:20:34.474124" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:20:34.474488" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:20:34.474709" 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-19T01:20:34.460960" elapsed="0.013858"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.475559" elapsed="0.001091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.479186" 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-19T01:20:34.477916" elapsed="0.001552"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:34.480355" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:34.479827" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.479773" elapsed="0.000807"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:20:34.481000" elapsed="0.000106"/>
</return>
<status status="PASS" start="2026-04-19T01:20:34.480693" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.480669" elapsed="0.000680"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:34.481434" 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-19T01:20:34.486226" elapsed="0.000633"/>
</kw>
<kw name="Open 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-19T01:20:34.487392" elapsed="0.000395"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.488167" elapsed="0.000247"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:34.482108" elapsed="0.006555"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:20:34.133986" elapsed="0.354851"/>
</kw>
<msg time="2026-04-19T01:20:34.488894" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:34.133351" elapsed="0.355594"/>
</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-19T01:20:34.132822" elapsed="0.356201"/>
</kw>
<msg time="2026-04-19T01:20:34.489080" 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-19T01:20:34.130621" elapsed="0.358507"/>
</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-19T01:20:34.491859" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:20:34.492352" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.492645" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:34.489414" elapsed="0.003380"/>
</kw>
<msg time="2026-04-19T01:20:34.492885" 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-19T01:20:34.129742" elapsed="0.363169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.493358" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:34.493104" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:20:34.493442" 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-19T01:20:34.128852" elapsed="0.364712"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:20:34.128672" elapsed="0.364929"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:34.494585" level="INFO">${member_ip} = 10.30.171.206</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-19T01:20:34.494280" elapsed="0.000332"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.495431" 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-19T01:20:34.495533" 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-19T01:20:34.495265" elapsed="0.000294"/>
</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-19T01:20:34.498761" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:34.498220" elapsed="0.000625"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.498201" elapsed="0.000681"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.499581" 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-19T01:20:34.499808" 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-19T01:20:34.499134" elapsed="0.000724"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.500822" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:34.500173" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.502085" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:34.501207" elapsed="0.000928"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.503825" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:20:34.503998" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:20:34.503467" elapsed="0.000648"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:34.504449" elapsed="0.000637"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.506219" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:20:34.826947" 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 Sun Apr 19 01:20:33 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:20:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:20:34.505875" elapsed="0.321328"/>
</kw>
<msg time="2026-04-19T01:20:34.827357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:34.505429" elapsed="0.322213"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:20:34.502562" elapsed="0.325370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.829714" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:20:34.842828" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:20:34.843228" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:20:34.843450" 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-19T01:20:34.828721" elapsed="0.014860"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.844278" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.848003" 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-19T01:20:34.846663" elapsed="0.001631"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:34.849007" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:34.848600" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.848542" elapsed="0.000761"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:20:34.849802" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-19T01:20:34.849464" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.849435" elapsed="0.000661"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:20:34.850186" 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-19T01:20:34.855159" elapsed="0.000748"/>
</kw>
<kw name="Open 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-19T01:20:34.856411" elapsed="0.000305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.857004" elapsed="0.000251"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:34.850910" elapsed="0.006417"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:20:34.497306" elapsed="0.360227"/>
</kw>
<msg time="2026-04-19T01:20:34.857661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:34.496696" elapsed="0.361022"/>
</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-19T01:20:34.496221" elapsed="0.361580"/>
</kw>
<msg time="2026-04-19T01:20:34.857844" 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-19T01:20:34.495711" elapsed="0.362181"/>
</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-19T01:20:34.860671" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:20:34.861175" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.861474" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:34.858209" elapsed="0.003427"/>
</kw>
<msg time="2026-04-19T01:20:34.861729" 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-19T01:20:34.494845" elapsed="0.366909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.862234" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:34.861950" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:20:34.862321" 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-19T01:20:34.493875" elapsed="0.368574"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:20:34.493696" elapsed="0.368790"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:20:33.767568" elapsed="1.094972"/>
</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-19T01:20:33.763730" elapsed="1.098881"/>
</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-19T01:20:34.862772" elapsed="0.000219"/>
</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-19T01:20:34.877152" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:34.876950" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.876919" elapsed="0.000344"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.877729" 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-19T01:20:34.877889" 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-19T01:20:34.877508" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.878580" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:34.878177" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:34.879338" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:34.878898" elapsed="0.000509"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:34.880942" 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-19T01:20:34.880513" elapsed="0.000648">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T01:20:34.881354" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:20:34.881441" 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-19T01:20:34.879846" elapsed="0.001638"/>
</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-19T01:20:34.882119" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:34.881630" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:34.881593" elapsed="0.000728"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:34.883798" level="INFO">${ip_address} = 10.30.171.9</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-19T01:20:34.883172" elapsed="0.000666"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:20:34.883912" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T01:20:34.884167" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:20:34.882715" elapsed="0.001491"/>
</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-19T01:20:34.884467" elapsed="0.000446"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.885229" level="INFO">index=10
host=10.30.171.9
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-19T01:20:34.885343" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.885104" elapsed="0.000266"/>
</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-19T01:20:34.885548" elapsed="0.002323"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:20:34.888340" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:20:35.798626" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:20:34.888058" elapsed="0.910717"/>
</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-19T01:20:35.802453" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T01:20:35.802988" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:35.803321" elapsed="0.000105"/>
</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-19T01:20:35.799873" elapsed="0.003606"/>
</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-19T01:20:35.799194" elapsed="0.004332"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:20:34.876492" elapsed="0.927086"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:20:34.863753" elapsed="0.939875"/>
</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-19T01:20:34.863358" elapsed="0.940323"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:20:34.863218" elapsed="0.940504"/>
</iter>
<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-19T01:20:35.816687" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:35.816568" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:35.816546" elapsed="0.000215"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:35.817062" 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-19T01:20:35.817169" 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-19T01:20:35.816912" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:35.817603" 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-19T01:20:35.817342" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:35.818049" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:35.817794" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:35.818825" level="FAIL">Dictionary does not contain key '2'.</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-19T01:20:35.818597" elapsed="0.000335">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T01:20:35.819051" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:20:35.819154" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T01:20:35.818247" elapsed="0.000933"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:35.819486" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:35.819258" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:35.819239" elapsed="0.000347"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:35.820370" level="INFO">${ip_address} = 10.30.171.128</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-19T01:20:35.820094" elapsed="0.000303"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:20:35.820446" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:20:35.820600" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:20:35.819785" elapsed="0.000840"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:35.820776" elapsed="0.000412"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:35.821486" level="INFO">index=12
host=10.30.171.128
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-19T01:20:35.821587" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T01:20:35.821376" 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-19T01:20:35.821758" elapsed="0.002389"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:20:35.824574" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:20:36.510082" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:20:35.824313" elapsed="0.685932"/>
</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-19T01:20:36.513745" elapsed="0.000398"/>
</kw>
<kw name="Open 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-19T01:20:36.514308" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:36.514624" 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-19T01:20:36.511399" elapsed="0.003380"/>
</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-19T01:20:36.510672" elapsed="0.004155"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:20:35.816278" elapsed="0.698602"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:20:35.804404" elapsed="0.710525"/>
</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-19T01:20:35.803989" elapsed="0.710993"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:20:35.803831" elapsed="0.711192"/>
</iter>
<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-19T01:20:36.528234" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:36.528112" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:36.528087" elapsed="0.000223"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:36.529522" 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-19T01:20:36.529632" 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-19T01:20:36.529381" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:36.530104" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:36.529811" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:36.530578" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:36.530300" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:36.531389" level="FAIL">Dictionary does not contain key '3'.</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-19T01:20:36.531155" elapsed="0.000337">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T01:20:36.531599" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:20:36.531645" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T01:20:36.530777" elapsed="0.000892"/>
</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-19T01:20:36.531966" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:36.531745" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:36.531726" elapsed="0.000355"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:36.533076" level="INFO">${ip_address} = 10.30.171.206</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-19T01:20:36.532782" elapsed="0.000322"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:20:36.533154" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:20:36.533310" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:20:36.532282" elapsed="0.001053"/>
</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-19T01:20:36.533486" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:36.534179" level="INFO">index=14
host=10.30.171.206
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-19T01:20:36.534278" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T01:20:36.534070" 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-19T01:20:36.534454" elapsed="0.002202"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:20:36.537089" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:20:46.640791" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:20:36.536816" elapsed="10.104850">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:20:46.645322" elapsed="0.000437"/>
</kw>
<kw name="Open 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-19T01:20:46.645935" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:46.646278" 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-19T01:20:46.642954" elapsed="0.003478"/>
</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-19T01:20:46.642233" elapsed="0.004246"/>
</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-19T01:20:36.527797" elapsed="10.118769">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:20:46.646660" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:20:36.515662" elapsed="10.131090">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:20:36.515286" elapsed="10.131621"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:20:36.515145" elapsed="10.131809"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T01:20:34.863066" elapsed="11.783926"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T01:20:33.736971" elapsed="12.910103"/>
</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-19T01:20:46.649951" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:46.649828" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.649804" elapsed="0.000237"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:20:46.654766" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:46.654654" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.654635" elapsed="0.000203"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:20:46.655860" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:20:46.655452" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:20:46.656369" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:20:46.656060" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:20:46.656439" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:20:46.656613" level="INFO">${index_list} = [1, 2, 3]</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-19T01:20:46.655111" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:20:46.662121" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:46.661992" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.661974" elapsed="0.000216"/>
</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-19T01:20:46.663468" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:46.663335" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.663317" elapsed="0.000231"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:46.664059" 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-19T01:20:46.663692" elapsed="0.000396"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:46.664490" 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-19T01:20:46.664246" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:20:46.751354" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:20:46.665230" elapsed="0.086366"/>
</kw>
<msg time="2026-04-19T01:20:46.751809" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:20:46.751859" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.664683" elapsed="0.087214"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:20:46.895942" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:20:46.752884" elapsed="0.143302"/>
</kw>
<msg time="2026-04-19T01:20:46.896332" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:20:46.896380" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.752215" elapsed="0.144202"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:46.896818" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:46.896521" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.896488" elapsed="0.000911"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:46.897981" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:46.897553" elapsed="0.000544"/>
</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-19T01:20:46.898409" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:46.898167" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.898148" elapsed="0.000448"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:20:46.898639" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:46.900865" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:20:46.902267" elapsed="0.000333"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:46.902958" elapsed="0.000275"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:46.899972" elapsed="0.003357"/>
</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-19T01:20:46.898989" elapsed="0.004489"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:20:46.663016" elapsed="0.240565"/>
</kw>
<msg time="2026-04-19T01:20:46.903675" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:20:46.903720" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.662339" elapsed="0.241418"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:20:46.903941" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:20:46.903834" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.903815" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:46.904469" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:46.904807" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:20:46.904879" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:20:46.661683" elapsed="0.243302"/>
</kw>
<msg time="2026-04-19T01:20:46.905181" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:20:46.905225" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.657039" elapsed="0.248223"/>
</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-19T01:20:46.905589" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:46.905340" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.905322" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:20:46.656882" elapsed="0.248807"/>
</iter>
<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-19T01:20:46.911099" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:46.910975" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.910957" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:20:46.912368" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:46.912239" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:46.912221" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:46.912916" level="INFO">${karaf_connection_index} = 12</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-19T01:20:46.912575" elapsed="0.000368"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:46.913388" 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-19T01:20:46.913149" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:20:46.994087" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:20:46.914133" elapsed="0.080218"/>
</kw>
<msg time="2026-04-19T01:20:46.994584" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:20:46.994653" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.913572" elapsed="0.081135"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:20:47.132881" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:20:46.995670" elapsed="0.137496"/>
</kw>
<msg time="2026-04-19T01:20:47.133370" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:20:47.133419" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.995018" elapsed="0.138439"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:47.133939" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:47.133575" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:47.133539" elapsed="0.000627"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:20:47.134780" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "r "[78Cp "[A[78Cc
 "_ "b "r "o "k "e "r "/ "a "c "t "i "o "n "_ "p "r "o "v "i "d "e "r "_ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:20:47.134314" elapsed="0.000559"/>
</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-19T01:20:47.135389" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:47.134940" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:47.134922" elapsed="0.000651"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:20:47.135615" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:20:47.137788" elapsed="0.000512"/>
</kw>
<kw name="Open 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-19T01:20:47.138668" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:20:47.139612" elapsed="0.000255"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:20:47.136920" elapsed="0.003041"/>
</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-19T01:20:47.135942" elapsed="0.004180"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:20:46.911921" elapsed="0.228303"/>
</kw>
<msg time="2026-04-19T01:20:47.140319" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:20:47.140365" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.911316" elapsed="0.229085"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:20:47.140585" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:20:47.140478" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:47.140459" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:47.141105" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:20:47.141704" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:20:47.141845" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:20:46.910675" elapsed="0.231280"/>
</kw>
<msg time="2026-04-19T01:20:47.142075" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:20:47.142121" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:46.905991" elapsed="0.236166"/>
</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-19T01:20:47.142510" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:20:47.142235" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:47.142217" elapsed="0.000372"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:20:46.905820" elapsed="0.236794"/>
</iter>
<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-19T01:20:47.148166" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:47.148056" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:47.148023" 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-19T01:20:47.149416" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:20:47.149288" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T01:20:47.149270" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:20:47.149960" level="INFO">${karaf_connection_index} = 14</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-19T01:20:47.149624" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:20:47.150403" 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-19T01:20:47.150169" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:20:57.152116" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:20:47.151175" elapsed="10.001983">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:20:57.153385" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:20:57.153436" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:20:47.150585" elapsed="10.002877"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:21:07.155247" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:20:57.154457" elapsed="10.001685">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:21:07.156376" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:21:07.156426" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:20:57.153740" elapsed="10.002712"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:21:07.157839" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_partition_and_heal.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-19T01:21:07.156993" elapsed="0.000935">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_partition_and_heal.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:21:07.156583" elapsed="0.001519">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_partition_and_heal.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:21:07.156546" elapsed="0.001595">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_partition_and_heal.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-19T01:21:07.158310" elapsed="0.000024"/>
</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-19T01:21:07.158541" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:07.158400" elapsed="0.000305"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:21:07.158382" elapsed="0.000349"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:21:07.158771" 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-19T01:21:07.161004" elapsed="0.000691"/>
</kw>
<kw name="Open 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-19T01:21:07.162153" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:21:07.162869" elapsed="0.000325"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:21:07.160110" elapsed="0.003183"/>
</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-19T01:21:07.159098" elapsed="0.004346"/>
</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-19T01:20:47.148986" elapsed="20.014546">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_partition_and_heal.robot"</status>
</kw>
<msg time="2026-04-19T01:21:07.163648" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:21:07.163696" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_rpc_broker/action_provider_partition_a...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:20:47.148383" elapsed="20.015339"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:21:07.163913" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:07.163801" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:07.163782" elapsed="0.000197"/>
</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-19T01:21:07.164833" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:07.164723" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:07.164704" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:21:07.165312" 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-19T01:21:07.165419" 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-19T01:21:07.165158" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:21:07.165882" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:21:07.165607" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:21:07.166358" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:21:07.166100" elapsed="0.000304"/>
</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-19T01:21:07.166927" elapsed="0.000368"/>
</kw>
<msg time="2026-04-19T01:21:07.167395" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:21:07.167442" level="INFO">${old_connection_index} = 14</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-19T01:21:07.166562" elapsed="0.000903"/>
</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-19T01:21:07.168656" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:21:17.170948" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:21:07.170057" elapsed="10.001608">No match found for '
' in 10 seconds
Output:
.</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-19T01:21:07.169198" elapsed="10.002602"/>
</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-19T01:21:17.173156" elapsed="0.000332"/>
</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-19T01:21:17.172224" elapsed="0.001345"/>
</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-19T01:21:07.167765" elapsed="10.005895"/>
</kw>
<status status="PASS" start="2026-04-19T01:21:07.167541" elapsed="10.006172"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:07.167523" elapsed="10.006224"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:21:17.174847" level="INFO">${ip_address} = 10.30.171.206</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-19T01:21:17.174352" elapsed="0.000522"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:21:17.174927" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:21:17.175118" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:21:17.174004" elapsed="0.001140"/>
</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-19T01:21:17.175300" elapsed="0.000428"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:21:17.176137" level="INFO">index=19
host=10.30.171.206
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-19T01:21:17.176240" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T01:21:17.175986" 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-19T01:21:17.176422" elapsed="0.002686"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:21:17.179535" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:21:27.242316" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:21:17.179271" elapsed="10.063956">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:21:27.247075" elapsed="0.001043"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:21:27.248402" elapsed="0.000524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:21:27.249221" elapsed="0.000211"/>
</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-19T01:21:27.244475" elapsed="0.005044"/>
</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-19T01:21:27.243744" elapsed="0.005822"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:21:07.164426" elapsed="20.085228">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:21:27.250021" elapsed="0.000053"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:21:27.250127" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:20:47.147740" elapsed="40.102504">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:21:27.250366" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:21:27.250412" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:20:47.142889" elapsed="40.107546"/>
</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-19T01:21:27.250782" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:27.250525" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.250504" elapsed="0.000357"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:20:47.142749" elapsed="40.108141"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:20:46.656696" elapsed="40.594228"/>
</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-19T01:20:46.654354" elapsed="40.596629"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T01:20:46.647687" elapsed="40.603372"/>
</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-19T01:20:46.647234" elapsed="40.603871"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T01:20:33.731891" elapsed="53.519270"/>
</kw>
<kw name="DrbCommons_Init" owner="DrbCommons">
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.256303" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:21:27.255889" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.256801" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:21:27.256490" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:21:27.256874" elapsed="0.000033"/>
</return>
<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-19T01:21:27.252325" elapsed="0.004682"/>
</kw>
<msg time="2026-04-19T01:21:27.257191" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:21:27.251924" elapsed="0.005319"/>
</kw>
<msg time="2026-04-19T01:21:27.257344" level="INFO">${all_indices} = [1, 2, 3]</msg>
<var>${all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T01:21:27.251709" elapsed="0.005660"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.257855" level="INFO">${all_indices} = [1, 2, 3]</msg>
<arg>${all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T01:21:27.257526" elapsed="0.000370"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.261170" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:21:27.260765" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.261659" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:21:27.261354" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:21:27.261730" elapsed="0.000027"/>
</return>
<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-19T01:21:27.258795" elapsed="0.003059"/>
</kw>
<msg time="2026-04-19T01:21:27.261907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:21:27.258421" elapsed="0.003532"/>
</kw>
<msg time="2026-04-19T01:21:27.262063" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<var>${nonregistered_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T01:21:27.258208" elapsed="0.003881"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.262578" level="INFO">${nonregistered_indices} = [1, 2, 3]</msg>
<arg>${nonregistered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T01:21:27.262245" elapsed="0.000375"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.265783" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:21:27.265410" elapsed="0.000399"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.266292" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:21:27.265964" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:21:27.266362" elapsed="0.000028"/>
</return>
<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-19T01:21:27.263459" elapsed="0.003026"/>
</kw>
<msg time="2026-04-19T01:21:27.266522" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:21:27.263021" elapsed="0.003544"/>
</kw>
<msg time="2026-04-19T01:21:27.266662" level="INFO">${active_indices} = [1, 2, 3]</msg>
<var>${active_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T01:21:27.262811" elapsed="0.003875"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.267251" level="INFO">${active_indices} = [1, 2, 3]</msg>
<arg>${active_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T01:21:27.266855" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.267683" level="INFO">${possible_constants} = []</msg>
<var>${possible_constants}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:21:27.267443" elapsed="0.000266"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.268196" level="INFO">${possible_constants} = []</msg>
<arg>${possible_constants}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T01:21:27.267860" elapsed="0.000378"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.268623" level="INFO">${registered_indices} = []</msg>
<var>${registered_indices}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:21:27.268384" elapsed="0.000264"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.269146" level="INFO">${registered_indices} = []</msg>
<arg>${registered_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T01:21:27.268799" elapsed="0.000391"/>
</kw>
<doc>Resouce initial keyword. Creates several suite variables which are
used in other keywords and should be used im the test suites.</doc>
<status status="PASS" start="2026-04-19T01:21:27.251450" elapsed="0.017795"/>
</kw>
<doc>Setup keyword. Create ${possible_constants} list with possible variables of remote constants.</doc>
<status status="PASS" start="2026-04-19T01:20:33.731581" elapsed="53.537712"/>
</kw>
<test id="s1-s8-t1" name="Register_Rpc_On_Two_Nodes" line="33">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:21:27.338247" elapsed="0.000265"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:21:27.337916" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:21:27.339662" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.339525" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.339500" elapsed="0.000306"/>
</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-19T01:21:27.344670" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.344563" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.344545" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.345748" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:21:27.345357" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.346251" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:21:27.345931" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:21:27.346322" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:21:27.346482" level="INFO">${index_list} = [1, 2, 3]</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-19T01:21:27.344969" elapsed="0.001538"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:21:27.352162" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.352049" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.352016" 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-19T01:21:27.353428" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.353321" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.353303" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:21:27.353957" 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-19T01:21:27.353638" elapsed="0.000346"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:21:27.354387" 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-19T01:21:27.354158" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:21:27.417136" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:21:27.354980" elapsed="0.062271"/>
</kw>
<msg time="2026-04-19T01:21:27.417431" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:21:27.417479" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:21:27.354644" elapsed="0.062870"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:21:27.478987" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:21:27.418066" elapsed="0.061050"/>
</kw>
<msg time="2026-04-19T01:21:27.479286" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:21:27.479352" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:21:27.417683" elapsed="0.061706"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.479692" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:27.479469" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.479448" elapsed="0.000321"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.480226" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:21:27.479904" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.480574" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:27.480364" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.480346" elapsed="0.000304"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:21:27.480683" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:21:27.482292" elapsed="0.000889"/>
</kw>
<kw name="Open 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-19T01:21:27.483493" elapsed="0.000524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:21:27.484321" elapsed="0.000411"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:21:27.481550" elapsed="0.003290"/>
</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-19T01:21:27.480962" elapsed="0.003944"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:21:27.352995" elapsed="0.132010"/>
</kw>
<msg time="2026-04-19T01:21:27.485116" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:21:27.485161" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:21:27.352382" elapsed="0.132814"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:21:27.485378" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:21:27.485272" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.485254" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.485850" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.486193" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:21:27.486265" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:21:27.351686" elapsed="0.134686"/>
</kw>
<msg time="2026-04-19T01:21:27.486466" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:21:27.486510" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:21:27.346876" elapsed="0.139669"/>
</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-19T01:21:27.486867" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:27.486620" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.486602" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:21:27.346736" elapsed="0.140232"/>
</iter>
<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-19T01:21:27.492731" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.492624" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.492605" 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-19T01:21:27.493934" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.493828" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.493810" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:21:27.494472" level="INFO">${karaf_connection_index} = 12</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-19T01:21:27.494162" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:21:27.494887" 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-19T01:21:27.494654" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:21:27.555643" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:21:27.495447" elapsed="0.060322"/>
</kw>
<msg time="2026-04-19T01:21:27.555958" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:21:27.556024" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:21:27.495089" elapsed="0.060990"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:21:27.615704" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:21:27.556646" elapsed="0.059410"/>
</kw>
<msg time="2026-04-19T01:21:27.616288" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:21:27.616338" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:21:27.556271" elapsed="0.060112"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.616817" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:27.616502" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.616471" elapsed="0.000432"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:21:27.617465" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "T "w "o "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:21:27.617074" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.617825" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:27.617609" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.617592" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:21:27.617942" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:21:27.619997" elapsed="0.000916"/>
</kw>
<kw name="Open 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-19T01:21:27.621237" elapsed="0.000539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:21:27.622079" elapsed="0.000414"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:21:27.619134" elapsed="0.003470"/>
</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-19T01:21:27.618276" elapsed="0.004395"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:21:27.493527" elapsed="0.129247"/>
</kw>
<msg time="2026-04-19T01:21:27.622870" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:21:27.622916" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:21:27.492947" elapsed="0.130005"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:21:27.623163" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T01:21:27.623047" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.623013" elapsed="0.000243"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.623705" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:21:27.624149" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:21:27.624226" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:21:27.492281" elapsed="0.132064"/>
</kw>
<msg time="2026-04-19T01:21:27.624474" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:21:27.624532" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:21:27.487247" elapsed="0.137323"/>
</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-19T01:21:27.624977" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:27.624661" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.624641" elapsed="0.000477"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:21:27.487110" elapsed="0.138035"/>
</iter>
<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-19T01:21:27.631857" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.631735" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.631711" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:21:27.633515" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:27.633357" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:27.633331" elapsed="0.000273"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:21:27.634210" level="INFO">${karaf_connection_index} = 19</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-19T01:21:27.633777" elapsed="0.000469"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:21:27.634706" 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-19T01:21:27.634406" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:21:37.636138" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:21:27.635362" elapsed="10.001809">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:21:37.637456" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:21:37.637507" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:21:27.634943" elapsed="10.002593"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:21:47.638739" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:21:37.638254" elapsed="10.001342">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:21:47.639856" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:21:47.639911" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:21:37.637797" elapsed="10.002139"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:21:47.641211" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</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-19T01:21:47.640425" elapsed="0.000852">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:21:47.640096" elapsed="0.001253">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:21:47.640023" elapsed="0.001361">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</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-19T01:21:47.641554" 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-19T01:21:47.641782" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:21:47.641642" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:21:47.641625" elapsed="0.000233"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:21:47.641895" elapsed="0.000016"/>
</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-19T01:21:47.643506" elapsed="0.000885"/>
</kw>
<kw name="Open 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-19T01:21:47.644684" elapsed="0.000543"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:21:47.645507" elapsed="0.000401"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:21:47.642798" elapsed="0.003255"/>
</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-19T01:21:47.642225" elapsed="0.003896"/>
</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-19T01:21:27.632914" elapsed="20.013293">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</status>
</kw>
<msg time="2026-04-19T01:21:47.646314" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:21:47.646360" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Register_Rpc_On_Two_Nodes"</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-19T01:21:27.632174" elapsed="20.014211"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:21:47.646573" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:47.646463" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:47.646445" elapsed="0.000193"/>
</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-19T01:21:47.647456" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:21:47.647350" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:47.647332" elapsed="0.000250"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:21:47.648134" 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-19T01:21:47.648249" 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-19T01:21:47.647733" elapsed="0.000544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:21:47.648694" level="INFO">{1: 10, 2: 12, 3: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:21:47.648428" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:21:47.649149" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:21:47.648888" elapsed="0.000306"/>
</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-19T01:21:47.649730" elapsed="0.000288"/>
</kw>
<msg time="2026-04-19T01:21:47.650134" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:21:47.650192" level="INFO">${old_connection_index} = 19</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-19T01:21:47.649349" elapsed="0.000872"/>
</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-19T01:21:47.651024" elapsed="0.000214"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:21:57.652851" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:21:47.651895" elapsed="10.002017">No match found for '
' in 10 seconds
Output:
.</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-19T01:21:47.651401" elapsed="10.002649"/>
</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-19T01:21:57.654944" elapsed="0.000554"/>
</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-19T01:21:57.654346" elapsed="0.001242"/>
</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-19T01:21:47.650518" elapsed="10.005121"/>
</kw>
<status status="PASS" start="2026-04-19T01:21:47.650301" elapsed="10.005391"/>
</branch>
<status status="PASS" start="2026-04-19T01:21:47.650283" elapsed="10.005445"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:21:57.656859" level="INFO">${ip_address} = 10.30.171.206</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-19T01:21:57.656529" elapsed="0.000357"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:21:57.656940" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:21:57.657121" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:21:57.655972" elapsed="0.001175"/>
</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-19T01:21:57.657306" elapsed="0.000430"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:21:57.658022" level="INFO">index=24
host=10.30.171.206
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-19T01:21:57.658315" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.206
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-19T01:21:57.657902" elapsed="0.000440"/>
</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-19T01:21:57.658492" elapsed="0.002333"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:21:57.661267" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:22:07.726533" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:21:57.660988" elapsed="10.066592">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:22:07.741962" elapsed="0.000589"/>
</kw>
<kw name="Open 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-19T01:22:07.742715" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:22:07.743034" elapsed="0.000448"/>
</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-19T01:22:07.728675" elapsed="0.014861"/>
</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-19T01:22:07.727999" elapsed="0.015664"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:21:47.647052" elapsed="20.096700">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:22:07.744127" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:22:07.744206" elapsed="0.000020"/>
</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-19T01:21:27.631222" elapsed="40.113097">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:22:07.744431" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:22:07.744476" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:21:27.625475" elapsed="40.119024"/>
</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-19T01:22:07.744839" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:07.744583" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:07.744563" elapsed="0.000355"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:21:27.625285" elapsed="40.119658"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:21:27.346562" elapsed="40.398414"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:21:27.344196" elapsed="40.400853"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:21:27.339198" elapsed="40.405914"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:21:27.338729" elapsed="40.406430"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:21:27.270146" elapsed="40.475069"/>
</kw>
<kw name="Register_Action_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Register_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.747620" 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-19T01:22:07.747314" elapsed="0.000333"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:22:07.747693" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:22:07.747843" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:22:07.746925" elapsed="0.000943"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.748763" level="INFO">&amp;{mapping} = { CONTEXT=context | CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:07.748027" elapsed="0.000764"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.781754" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:07.781311" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:07.782659" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:07.782300" elapsed="0.000528">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:07.783111" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:07.781940" elapsed="0.001197"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.783751" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:07.783300" elapsed="0.000478"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:07.784154" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:07.784321" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:07.783935" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.784784" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.784502" elapsed="0.000328"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.786609" level="INFO">mapping: {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.785692" elapsed="0.001064"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.787758" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:07.787066" elapsed="0.000735"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.789240" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:22:07.788720" elapsed="0.000557"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:22:07.790494" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:22:07.790233" elapsed="0.000288"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:22:07.790578" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:22:07.790888" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:22:07.789741" elapsed="0.001184"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:07.791360" elapsed="0.000341"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:22:07.788390" elapsed="0.003371"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.792914" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:22:07.792426" elapsed="0.000524"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:22:07.794118" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:22:07.793868" elapsed="0.000277"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:22:07.794195" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:22:07.794510" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:22:07.793431" elapsed="0.001125"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:07.794888" elapsed="0.000527"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-19T01:22:07.792096" elapsed="0.003376"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:22:07.787949" elapsed="0.007632"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:22:07.795787" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:22:07.796084" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:22:07.785268" elapsed="0.010843"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:07.784903" elapsed="0.011241"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.796314" elapsed="0.000181"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:07.796169" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:07.784884" elapsed="0.011670"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.797205" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:07.796698" elapsed="0.000535"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:07.797282" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:07.780687" elapsed="0.016716"/>
</kw>
<msg time="2026-04-19T01:22:07.797456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:07.768389" elapsed="0.029115"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.809691" elapsed="0.000062"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.821584" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.833527" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.833718" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.833888" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.834261" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:07.834121" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:07.834107" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.834474" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.834635" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.834809" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:07.834077" elapsed="0.000787"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:07.833962" elapsed="0.000928"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.835030" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:07.835121" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:22:07.835229" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:07.764258" elapsed="0.070996"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.858939" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:07.858500" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:07.859793" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:07.859495" elapsed="0.000467">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:07.860244" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:07.859166" elapsed="0.001103"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.860915" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:07.860465" elapsed="0.000478"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:07.861280" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:07.861410" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:07.861119" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.861856" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.861590" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:22:07.862329" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:07.861972" elapsed="0.000418"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.863119" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:07.862555" elapsed="0.000591"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:07.862414" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:07.861954" elapsed="0.001249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.863963" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:07.863345" elapsed="0.000648"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:07.864070" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:07.857847" elapsed="0.006348"/>
</kw>
<msg time="2026-04-19T01:22:07.864249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:07.845781" elapsed="0.018515"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.876418" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.888356" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.900247" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.900438" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.900607" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.900994" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:07.900854" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:07.900840" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.901296" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.901458" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.901616" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:07.900812" elapsed="0.000857"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:07.900712" elapsed="0.000982"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.901832" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:07.901907" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:22:07.902027" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:07.844927" elapsed="0.057145"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:07.903341" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:07.903067" elapsed="0.000339">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:07.903498" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:07.902719" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:07.903831" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:07.903591" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.904382" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:07.904092" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:07.903911" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:07.903573" elapsed="0.000891"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.906715" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:07.904608" elapsed="0.002133"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:22:07.906792" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:07.906942" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:22:07.902400" elapsed="0.004566"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.908549" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.908297" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.908977" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.908743" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.909427" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.909187" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.909852" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.909616" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:07.910741" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:22:07.910549" elapsed="0.000218"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:22:07.911236" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:22:07.910916" elapsed="0.000348"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:07.911437" elapsed="0.000198"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:07.912052" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:07.911787" elapsed="0.000312"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:22:07.912143" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:07.912296" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:22:07.910151" elapsed="0.002170"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:22:08.429349" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '317', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:22:08.429509" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node08fb6oqnaf2dd1d6e2hheaunzp0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 01:22:08 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T01:22:08.429790" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:22:07.914552" elapsed="0.515297"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:07.912390" elapsed="0.517583"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.430485" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.430074" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:07.912373" elapsed="0.518317"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.437790" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.433221" elapsed="0.004632"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.432673" elapsed="0.005231"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.432630" elapsed="0.005310"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.441593" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.438358" elapsed="0.003302"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.438018" elapsed="0.003690"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.437994" elapsed="0.003750"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.442542" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:08.441977" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.443078" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.442676" elapsed="0.000487"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.443842" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:08.443417" elapsed="0.000462"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.443196" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.442651" elapsed="0.001298"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.444486" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:08.444122" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.444811" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.444583" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.445366" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:08.445068" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.444892" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.444565" elapsed="0.000884"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:08.445663" elapsed="0.000355"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:22:08.446495" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:08.446200" elapsed="0.000322"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.446673" elapsed="0.002302"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:22:08.431596" elapsed="0.017463"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:22:08.449246" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-19T01:22:08.449135" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.449116" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.449485" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:22:08.449553" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:22:08.451771" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:22:07.907324" elapsed="0.544474"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:08.451873" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:22:08.452080" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:22:07.753339" elapsed="0.698767"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.452443" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.452210" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.452194" elapsed="0.000342"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:08.452569" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:22:08.452716" level="INFO">${text} = </msg>
<var>${text}</var>
<arg>${REGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:22:07.749066" elapsed="0.703676"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Invoke register-bound-constant rpc and register get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T01:22:07.746435" elapsed="0.706371"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.453365" elapsed="0.000229"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:22:08.453745" elapsed="0.000151"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the [] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T01:22:08.453047" elapsed="0.000903"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.454461" elapsed="0.000187"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.454797" elapsed="0.000204"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:22:08.455164" elapsed="0.000150"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:22:08.455456" elapsed="0.000148"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T01:22:08.454148" elapsed="0.001510"/>
</kw>
<arg>${index}</arg>
<doc>Register routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:22:07.745981" elapsed="0.709728"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:22:07.745817" elapsed="0.709924"/>
</iter>
<iter>
<kw name="Register_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Register_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.457789" level="INFO">${session} = ClusterManagement__session_2</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-19T01:22:08.457486" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:22:08.457863" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:08.458011" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:22:08.456899" elapsed="0.001153"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.458653" level="INFO">&amp;{mapping} = { CONTEXT=context | CONSTANT=constant-2 }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.458215" elapsed="0.000466"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.491774" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:08.491326" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:08.492656" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:08.492324" elapsed="0.000518">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:08.493143" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:08.491963" elapsed="0.001206"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.493780" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:08.493332" elapsed="0.000476"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:08.494142" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:08.494283" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:08.493964" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.494724" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.494460" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.496394" level="INFO">mapping: {'CONTEXT': 'context', 'CONSTANT': 'constant-2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.495674" elapsed="0.000873"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.497558" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.496833" elapsed="0.000768"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.499018" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:22:08.498519" elapsed="0.000555"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:22:08.500411" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.500185" elapsed="0.000253"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:22:08.500490" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:22:08.500799" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:22:08.499577" elapsed="0.001260"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.501250" elapsed="0.000332"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:22:08.498184" elapsed="0.003456"/>
</iter>
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.502807" level="INFO">${value} = constant-2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:22:08.502315" elapsed="0.000530"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:22:08.504053" level="INFO">${encoded} = constant-2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.503788" elapsed="0.000294"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:22:08.504133" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:22:08.504438" level="INFO">${encoded_value} = constant-2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:22:08.503344" elapsed="0.001132"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.504854" elapsed="0.000488"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-2</var>
<status status="PASS" start="2026-04-19T01:22:08.501962" elapsed="0.003438"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:22:08.497751" elapsed="0.007761"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:22:08.505725" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:22:08.506006" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:22:08.495247" elapsed="0.010801"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.494835" elapsed="0.011248"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.506254" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.506108" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.494817" elapsed="0.011515"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.506962" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:08.506469" elapsed="0.000522"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:08.507058" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:08.490676" elapsed="0.016507"/>
</kw>
<msg time="2026-04-19T01:22:08.507255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:08.478367" elapsed="0.028939"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.519515" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.531447" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.543356" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.543560" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.543736" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.544105" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.543951" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:08.543937" elapsed="0.000249"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.544321" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.544482" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.544642" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:08.543910" elapsed="0.000818"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:08.543810" elapsed="0.000944"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.544896" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:08.544971" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:22:08.545095" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:08.474219" elapsed="0.070902"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.570262" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:08.569793" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:08.571101" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:08.570783" elapsed="0.000486">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:08.571531" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:08.570452" elapsed="0.001105"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.572207" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:08.571742" elapsed="0.000493"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:08.572551" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:08.572679" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:08.572394" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.573145" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.572860" elapsed="0.000334"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:22:08.573598" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.573261" elapsed="0.000398"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.574375" level="INFO">${mapping_to_use} = {'CONTEXT': 'context', 'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:08.573826" elapsed="0.000576"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.573684" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.573242" elapsed="0.001218"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.575224" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:08.574602" elapsed="0.000652"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:08.575304" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:08.569177" elapsed="0.006252"/>
</kw>
<msg time="2026-04-19T01:22:08.575516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:08.555780" elapsed="0.019785"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.587551" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.599624" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.611532" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.611723" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.611896" elapsed="0.000047"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.612333" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.612158" elapsed="0.000235"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:08.612143" elapsed="0.000274"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.612555" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.612720" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.612883" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:08.612115" elapsed="0.000822"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:08.612000" elapsed="0.000963"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.613120" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:08.613198" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:22:08.613319" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:08.554903" elapsed="0.058444"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:08.614582" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:08.614345" elapsed="0.000300">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:08.614738" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:08.613993" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:08.615129" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:08.614867" elapsed="0.000321"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.615665" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:08.615372" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.615211" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.614849" elapsed="0.000901"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.618227" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:08.615898" elapsed="0.002356"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:22:08.618308" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:22:08.618461" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:22:08.613674" elapsed="0.004813"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.620078" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.619756" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.620524" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.620282" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.620964" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.620720" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.621414" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.621173" elapsed="0.000286"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:08.622289" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:22:08.622096" elapsed="0.000220"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:22:08.622638" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:22:08.622466" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:08.622810" elapsed="0.000199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:08.623429" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:08.623182" elapsed="0.000292"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:22:08.623517" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:22:08.623671" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:22:08.621654" elapsed="0.002043"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:22:09.089148" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '317', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:22:09.089312" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-bound-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node01soeafhtayny41q9azelf5uknm0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 01:22:09 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T01:22:09.089596" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:22:08.625845" elapsed="0.463809"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:08.623767" elapsed="0.466012"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.090307" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.089849" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:08.623750" elapsed="0.466761"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.096622" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:09.092797" elapsed="0.003893"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:09.092446" elapsed="0.004298"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.092416" elapsed="0.004365"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.100511" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:09.097258" elapsed="0.003300"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:09.096862" elapsed="0.003730"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.096838" elapsed="0.003778"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.101329" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:09.100793" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.101661" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.101427" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.102264" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:09.101899" elapsed="0.000392"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:09.101741" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.101409" elapsed="0.000939"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.102861" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:09.102500" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.103218" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.102960" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.103744" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:09.103451" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:09.103299" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.102939" elapsed="0.000887"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:09.103995" elapsed="0.000393"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:22:09.104851" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:09.104551" elapsed="0.000326"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:09.105048" elapsed="0.002363"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:22:09.091451" elapsed="0.016025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:22:09.107659" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T01:22:09.107549" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.107531" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.107902" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:22:09.107971" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T01:22:09.110281" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:22:08.618808" elapsed="0.491499"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:09.110379" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:09.110532" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:22:08.463473" elapsed="0.647084"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.110899" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.110664" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.110647" elapsed="0.000411"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:09.111093" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:22:09.111247" level="INFO">${text} = </msg>
<var>${text}</var>
<arg>${REGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:22:08.458959" elapsed="0.652313"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Invoke register-bound-constant rpc and register get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T01:22:08.456417" elapsed="0.654919"/>
</kw>
<kw name="DrbCommons__Add_Possible_Constant" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:09.111877" elapsed="0.000246"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${possible_constants}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:22:09.112274" elapsed="0.000151"/>
</kw>
<arg>${member_index}</arg>
<doc>Add a constant to the ['constant-1'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T01:22:09.111561" elapsed="0.000919"/>
</kw>
<kw name="DrbCommons__Register_Index" owner="DrbCommons">
<kw name="Append To List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:09.112971" elapsed="0.000203"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:09.113325" elapsed="0.000188"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:22:09.113660" elapsed="0.000148"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:22:09.113959" elapsed="0.000191"/>
</kw>
<arg>${member_index}</arg>
<doc>Add member index to the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T01:22:09.112664" elapsed="0.001541"/>
</kw>
<arg>${index}</arg>
<doc>Register routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:22:08.455997" elapsed="0.658259"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:22:08.455835" elapsed="0.658453"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:22:07.745684" elapsed="1.368639"/>
</for>
<arg>${INSTALLED_RPC_MEMEBER_IDX_LIST}</arg>
<doc>Register global rpc on given nodes of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:22:07.745450" elapsed="1.368947"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.115734" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.115355" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.115337" elapsed="0.000483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:09.115976" elapsed="0.000357"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.121850" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:09.121378" elapsed="0.000501"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T01:22:09.122180" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:22:09.121974" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.121951" elapsed="0.000319"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.122422" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.122602" elapsed="0.000024"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.122813" elapsed="0.000026"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.123020" elapsed="0.000043"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.123278" elapsed="0.000025"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.123484" elapsed="0.000024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.123677" elapsed="0.000026"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:22:09.121051" elapsed="0.002725"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:09.115138" elapsed="0.008748"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:22:09.114678" elapsed="0.009251"/>
</kw>
<doc>Register rpc on two nodes of the odl cluster.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T01:21:27.269358" elapsed="41.854615"/>
</test>
<test id="s1-s8-t2" name="Invoke_Rpc_On_Each_Node" line="37">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:22:09.128881" elapsed="0.000297"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:22:09.128617" elapsed="0.000615"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:22:09.130269" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.130146" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.130125" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:22:09.135360" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.135247" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.135224" elapsed="0.000204"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.136600" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:22:09.136191" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.137163" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:22:09.136789" elapsed="0.000401"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:22:09.137237" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:22:09.137401" level="INFO">${index_list} = [1, 2, 3]</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-19T01:22:09.135657" elapsed="0.001770"/>
</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-19T01:22:09.143243" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.143089" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.143064" elapsed="0.000252"/>
</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-19T01:22:09.144551" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.144445" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.144426" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:09.145107" 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-19T01:22:09.144762" elapsed="0.000373"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:22:09.145521" 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-19T01:22:09.145295" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:22:09.197675" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:22:09.146090" elapsed="0.051776"/>
</kw>
<msg time="2026-04-19T01:22:09.198115" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:22:09.198166" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:22:09.145702" elapsed="0.052501"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:22:09.246637" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:22:09.198861" elapsed="0.047905"/>
</kw>
<msg time="2026-04-19T01:22:09.246942" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:22:09.246992" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:22:09.198431" elapsed="0.048601"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.247423" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.247160" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.247129" elapsed="0.000378"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.247997" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:09.247653" elapsed="0.000512"/>
</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-19T01:22:09.248449" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.248234" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.248215" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:22:09.248565" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:09.250195" elapsed="0.000901"/>
</kw>
<kw name="Open 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-19T01:22:09.251399" elapsed="0.000549"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:22:09.252255" elapsed="0.000421"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:22:09.249478" elapsed="0.003312"/>
</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-19T01:22:09.248888" elapsed="0.003968"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:22:09.144142" elapsed="0.108815"/>
</kw>
<msg time="2026-04-19T01:22:09.253073" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:22:09.253121" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:22:09.143473" elapsed="0.109685"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:22:09.253345" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:22:09.253237" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.253218" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.253843" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.254207" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:22:09.254281" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:22:09.142682" elapsed="0.111711"/>
</kw>
<msg time="2026-04-19T01:22:09.254490" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:22:09.254534" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:22:09.137811" elapsed="0.116762"/>
</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-19T01:22:09.254898" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.254650" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.254631" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:22:09.137667" elapsed="0.117332"/>
</iter>
<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-19T01:22:09.260800" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.260692" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.260672" 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-19T01:22:09.262062" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.261938" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.261920" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:09.262581" level="INFO">${karaf_connection_index} = 12</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-19T01:22:09.262272" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:22:09.262987" 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-19T01:22:09.262761" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:22:09.303556" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:22:09.263515" elapsed="0.040197"/>
</kw>
<msg time="2026-04-19T01:22:09.303892" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:22:09.303941" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:22:09.263184" elapsed="0.040795"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:22:09.362082" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:22:09.304563" elapsed="0.057800"/>
</kw>
<msg time="2026-04-19T01:22:09.362649" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:22:09.362711" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:22:09.304204" elapsed="0.058557"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.363346" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.362901" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.362862" elapsed="0.000595"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:09.364157" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:09.363655" elapsed="0.000605"/>
</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-19T01:22:09.364660" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.364348" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.364324" elapsed="0.000434"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:22:09.364807" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:09.366928" elapsed="0.001326"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:22:09.368719" elapsed="0.000691"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:22:09.369777" elapsed="0.000531"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:22:09.365988" elapsed="0.004468"/>
</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-19T01:22:09.365229" elapsed="0.005315"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:22:09.261637" elapsed="0.109051"/>
</kw>
<msg time="2026-04-19T01:22:09.370818" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:22:09.370878" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:22:09.261016" elapsed="0.109913"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:22:09.371242" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-19T01:22:09.371069" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.371019" elapsed="0.000355"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:09.371946" elapsed="0.000034"/>
</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-19T01:22:09.372425" elapsed="0.000032"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:22:09.372539" elapsed="0.000022"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:22:09.260340" elapsed="0.112345"/>
</kw>
<msg time="2026-04-19T01:22:09.372810" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:22:09.372869" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:22:09.255301" elapsed="0.117618"/>
</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-19T01:22:09.373486" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:09.373124" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.373100" elapsed="0.000484"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:22:09.255159" elapsed="0.118457"/>
</iter>
<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-19T01:22:09.380937" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.380785" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.380754" elapsed="0.000294"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:22:09.382493" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:09.382367" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:09.382347" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:09.383080" level="INFO">${karaf_connection_index} = 24</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-19T01:22:09.382721" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:22:09.383503" 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-19T01:22:09.383273" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:22:19.384911" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:22:09.384087" elapsed="10.001770">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:22:19.386153" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:22:19.386206" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:22:09.383692" elapsed="10.002539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:22:29.387405" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:22:19.386914" elapsed="10.001334">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:22:29.388513" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:22:29.388564" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:22:19.386481" elapsed="10.002110"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:22:29.389965" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</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-19T01:22:29.389035" elapsed="0.001000">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:22:29.388704" elapsed="0.001424">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:22:29.388672" elapsed="0.001494">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</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-19T01:22:29.390335" 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-19T01:22:29.390563" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:29.390424" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:29.390406" elapsed="0.000240"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:22:29.390688" 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-19T01:22:29.392359" elapsed="0.000922"/>
</kw>
<kw name="Open 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-19T01:22:29.393642" elapsed="0.000614"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:22:29.394543" elapsed="0.000421"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:22:29.391628" elapsed="0.003491"/>
</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-19T01:22:29.391000" elapsed="0.004193"/>
</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-19T01:22:09.381998" elapsed="20.013285">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T01:22:29.395485" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:22:29.395533" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node"</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-19T01:22:09.381261" elapsed="20.014296"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:22:29.395750" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:29.395637" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:29.395619" elapsed="0.000198"/>
</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-19T01:22:29.396670" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:22:29.396562" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:29.396545" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:22:29.397297" 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-19T01:22:29.397411" 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-19T01:22:29.396891" elapsed="0.000546"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:29.397891" level="INFO">{1: 10, 2: 12, 3: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:29.397592" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:29.398481" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:29.398225" elapsed="0.000300"/>
</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-19T01:22:29.399259" elapsed="0.000393"/>
</kw>
<msg time="2026-04-19T01:22:29.399796" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:22:29.399863" level="INFO">${old_connection_index} = 24</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-19T01:22:29.398687" elapsed="0.001210"/>
</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-19T01:22:29.401068" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:22:39.403555" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:22:29.402591" elapsed="10.001992">No match found for '
' in 10 seconds
Output:
.</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-19T01:22:29.401639" elapsed="10.003077"/>
</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-19T01:22:39.405568" elapsed="0.000527"/>
</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-19T01:22:39.404979" elapsed="0.001212"/>
</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-19T01:22:29.400350" elapsed="10.005891"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:29.400004" elapsed="10.006290"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:29.399979" elapsed="10.006349"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:39.407522" level="INFO">${ip_address} = 10.30.171.206</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-19T01:22:39.406944" elapsed="0.000606"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:22:39.407604" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:22:39.407764" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:22:39.406572" elapsed="0.001218"/>
</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-19T01:22:39.407946" elapsed="0.000450"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:22:39.408684" level="INFO">index=29
host=10.30.171.206
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-19T01:22:39.408786" level="INFO">${karaf_connection_object} = index=29
host=10.30.171.206
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-19T01:22:39.408568" 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-19T01:22:39.408961" elapsed="0.002568"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:22:39.411958" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:22:49.516359" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:22:39.411695" elapsed="10.105492">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:22:49.532514" elapsed="0.000873"/>
</kw>
<kw name="Open 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-19T01:22:49.533556" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:22:49.533872" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:22:49.518815" elapsed="0.015229"/>
</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-19T01:22:49.517836" elapsed="0.016259"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:22:29.396260" elapsed="20.137924">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:22:49.534553" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:22:49.534631" elapsed="0.000020"/>
</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-19T01:22:09.379958" elapsed="40.154786">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:22:49.534859" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:22:49.534904" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:22:09.373981" elapsed="40.160946"/>
</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-19T01:22:49.535282" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.535010" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.534990" elapsed="0.000369"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:22:09.373787" elapsed="40.161597"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:22:09.137485" elapsed="40.397933"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:22:09.134834" elapsed="40.400644"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:22:09.129824" elapsed="40.405714"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:22:09.129382" elapsed="40.406230"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:22:09.126230" elapsed="40.409440"/>
</kw>
<kw name="Verify_Contexted_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Contexted_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:49.538016" elapsed="0.000331"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.544484" 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-19T01:22:49.544154" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:22:49.544558" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:22:49.544709" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:22:49.543794" elapsed="0.000940"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.545308" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.544892" elapsed="0.000443"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.623873" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:49.623500" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:49.624763" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.624526" elapsed="0.000303">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:49.624923" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:49.624188" elapsed="0.000760"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.625515" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:49.625126" elapsed="0.000417"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:49.625848" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:49.626005" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:49.625705" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.626456" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.626209" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.627455" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.627202" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.627934" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.627654" elapsed="0.000307"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.628622" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:22:49.628321" elapsed="0.000327"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:22:49.629384" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.629160" elapsed="0.000250"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:22:49.629461" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:22:49.629613" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:22:49.628830" elapsed="0.000808"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.629786" elapsed="0.000238"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:22:49.628190" elapsed="0.001893"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:22:49.628010" elapsed="0.002108"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:22:49.630161" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:22:49.630316" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:22:49.626863" elapsed="0.003479"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.626573" elapsed="0.003800"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.630542" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.630397" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.626554" elapsed="0.004065"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.631370" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:49.630760" elapsed="0.000637"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:49.631447" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:49.622871" elapsed="0.008699"/>
</kw>
<msg time="2026-04-19T01:22:49.631658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:49.610286" elapsed="0.021448"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.645365" elapsed="0.000059"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.658917" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.672369" elapsed="0.000058"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.672678" elapsed="0.000049"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.672984" elapsed="0.000095"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.673803" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.673611" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:49.673569" elapsed="0.000343"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.674228" elapsed="0.000082"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.674648" elapsed="0.000081"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.675077" elapsed="0.000082"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:49.673421" elapsed="0.001811"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:49.673167" elapsed="0.002142"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.675562" elapsed="0.000050"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:49.675698" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:22:49.675887" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:49.604881" elapsed="0.071032"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.745837" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:49.745466" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:49.746581" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.746367" elapsed="0.000278">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:49.746737" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:49.746022" elapsed="0.000739"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.747367" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:49.746955" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:49.747692" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:49.747820" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:49.747556" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.748260" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.747999" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:22:49.748682" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.748395" elapsed="0.000345"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.749213" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:49.748905" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.748764" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.748376" elapsed="0.000920"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.749978" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:49.749437" elapsed="0.000571"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:49.750076" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:49.744843" elapsed="0.005358"/>
</kw>
<msg time="2026-04-19T01:22:49.750292" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:49.731749" elapsed="0.018618"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.763914" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.777577" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.790988" elapsed="0.000082"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.791320" elapsed="0.000050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.791626" elapsed="0.000078"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.792459" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.792267" elapsed="0.000294"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:49.792226" elapsed="0.000375"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.792898" elapsed="0.000083"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.793329" elapsed="0.000082"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.793739" elapsed="0.000081"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:49.792077" elapsed="0.001816"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:49.791790" elapsed="0.002179"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.794240" elapsed="0.000048"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:49.794373" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:22:49.794573" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:49.730074" elapsed="0.064528"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:49.796460" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.796217" elapsed="0.000319">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:49.796748" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:49.795509" elapsed="0.001349"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.797560" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.796975" elapsed="0.000673"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.798585" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:49.798096" elapsed="0.000526"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.797745" elapsed="0.000927"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.796941" elapsed="0.001826"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.801797" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:49.799008" elapsed="0.002899"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:22:49.801989" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:22:49.802316" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:22:49.794984" elapsed="0.007358"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.805289" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.804695" elapsed="0.000752"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.806268" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.805680" elapsed="0.000749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.807271" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.806661" elapsed="0.000768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.808334" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.807659" elapsed="0.000835"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:49.810362" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:22:49.810104" elapsed="0.000311"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:22:49.810912" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:22:49.810673" elapsed="0.000291"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.811248" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.812295" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.811795" elapsed="0.000588"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:22:49.812463" elapsed="0.000067"/>
</return>
<msg time="2026-04-19T01:22:49.812847" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:22:49.809175" elapsed="0.003748"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:22:49.845536" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node08fb6oqnaf2dd1d6e2hheaunzp0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:22:49.845811" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:22:49.846318" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:22:49.816844" elapsed="0.029557"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.813067" elapsed="0.033547"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.847588" elapsed="0.000086"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.846839" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.813017" elapsed="0.035008"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.855484" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.852121" elapsed="0.003433"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.851678" elapsed="0.003956"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.851598" elapsed="0.004104"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.859015" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.856396" elapsed="0.002833"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.855946" elapsed="0.003340"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.855869" elapsed="0.003466"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.860104" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:49.859636" elapsed="0.000524"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.860636" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.860320" elapsed="0.000393"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.861348" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:49.861022" elapsed="0.000354"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.860789" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.860262" elapsed="0.001215"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.862226" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:49.861778" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.862751" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.862439" elapsed="0.000387"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.863421" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:49.863117" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.862873" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.862382" elapsed="0.001201"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:49.863871" elapsed="0.000488"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:22:49.865001" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:49.864627" elapsed="0.000443"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.865334" elapsed="0.002383"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:22:49.850130" elapsed="0.017677"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:22:49.868198" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T01:22:49.867926" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.867891" elapsed="0.000580"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.868694" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:22:49.868836" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:22:49.871574" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:22:49.802703" elapsed="0.068901"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:49.871675" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:22:49.871831" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:22:49.550052" elapsed="0.321806"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.872217" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.871964" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.871946" elapsed="0.000366"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:49.872345" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:22:49.872494" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:22:49.545587" elapsed="0.326934"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:22:49.873106" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7377510&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:22:49.872683" elapsed="0.000453"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:22:49.873589" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:22:49.873290" elapsed="0.000326"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:22:49.873664" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:49.873812" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:22:49.543348" elapsed="0.330489"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:22:49.873992" elapsed="0.000368"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:22:49.874409" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:22:49.538965" elapsed="0.335563"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.538681" elapsed="0.335880"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.874768" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.874585" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.538665" elapsed="0.336218"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:22:49.538634" elapsed="0.336275"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.881210" level="INFO">${session} = ClusterManagement__session_2</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-19T01:22:49.880834" elapsed="0.000403"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:22:49.881285" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:22:49.881434" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:22:49.880463" elapsed="0.000997"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.882006" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.881622" elapsed="0.000429"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.960740" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:49.960364" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:49.961529" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.961301" elapsed="0.000295">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:49.961689" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:49.960928" elapsed="0.000785"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.962400" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:49.962000" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:49.962725" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:49.962864" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:49.962588" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.963302" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.963059" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.964297" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:49.964020" elapsed="0.000321"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.964757" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.964496" elapsed="0.000286"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.965621" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:22:49.965163" elapsed="0.000485"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:22:49.966396" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.966172" elapsed="0.000249"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:22:49.966473" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:22:49.966630" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:22:49.965835" elapsed="0.000820"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:49.966805" elapsed="0.000239"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:22:49.964995" elapsed="0.002093"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:22:49.964829" elapsed="0.002294"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:22:49.967167" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:22:49.967323" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:22:49.963702" elapsed="0.003645"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.963412" elapsed="0.004004"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.967591" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:49.967443" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.963394" elapsed="0.004274"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:49.968263" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:49.967806" elapsed="0.000484"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:49.968340" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:49.959737" elapsed="0.008724"/>
</kw>
<msg time="2026-04-19T01:22:49.968555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:49.946576" elapsed="0.022053"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.982079" elapsed="0.000061"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:49.995431" elapsed="0.000058"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.008838" elapsed="0.000058"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.009162" elapsed="0.000048"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.009498" elapsed="0.000050"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.010308" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.010118" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:50.010032" elapsed="0.000384"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.010714" elapsed="0.000082"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.011153" elapsed="0.000081"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.011563" elapsed="0.000082"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:50.009881" elapsed="0.001837"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.009630" elapsed="0.002166"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.012068" elapsed="0.000051"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.012205" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:22:50.012394" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:49.941213" elapsed="0.071208"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.082079" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.081544" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.082804" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.082594" elapsed="0.000274">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:50.082961" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:50.082268" elapsed="0.000717"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.083547" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:50.083163" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.083862" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:50.083988" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:50.083728" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.084426" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.084184" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:22:50.084820" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.084538" elapsed="0.000339"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.085541" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.085054" elapsed="0.000515"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.084901" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.084520" elapsed="0.001108"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.086330" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:50.085773" elapsed="0.000587"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:50.086411" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:50.080893" elapsed="0.005644"/>
</kw>
<msg time="2026-04-19T01:22:50.086627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:50.067614" elapsed="0.019088"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.100162" elapsed="0.000059"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.113598" elapsed="0.000083"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.127039" elapsed="0.000058"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.127345" elapsed="0.000050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.127651" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.128473" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.128284" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:50.128242" elapsed="0.000340"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.128883" elapsed="0.000082"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.129320" elapsed="0.000083"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.129767" elapsed="0.000087"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:50.128092" elapsed="0.001838"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.127782" elapsed="0.002225"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.130283" elapsed="0.000049"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.130419" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:22:50.130624" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:50.065908" elapsed="0.064745"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.132527" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.132271" elapsed="0.000319">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:50.132800" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:50.131553" elapsed="0.001360"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.133638" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.133057" elapsed="0.000691"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.134802" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.134295" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.133851" elapsed="0.001041"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.133005" elapsed="0.001983"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.138316" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:50.135262" elapsed="0.003166"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:22:50.138544" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:22:50.138857" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:22:50.131058" elapsed="0.007825"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.141891" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.141285" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.142888" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.142304" elapsed="0.000766"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.143891" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.143306" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.145013" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.144435" elapsed="0.000753"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:50.147017" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:22:50.146761" elapsed="0.000328"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:22:50.147590" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:22:50.147349" elapsed="0.000294"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:50.147899" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.149011" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.148548" elapsed="0.000571"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:22:50.149201" elapsed="0.000068"/>
</return>
<msg time="2026-04-19T01:22:50.149568" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:22:50.145822" elapsed="0.003824"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:22:50.188068" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01soeafhtayny41q9azelf5uknm0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:22:50.188330" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:22:50.188764" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:22:50.152364" elapsed="0.036482"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.149782" elapsed="0.039203"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.189980" elapsed="0.000118"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.189252" elapsed="0.000990"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.149730" elapsed="0.040723"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.199869" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.195979" elapsed="0.003939"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.195321" elapsed="0.004653"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.195197" elapsed="0.004825"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.202892" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.200506" elapsed="0.002431"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.200210" elapsed="0.002783"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.200155" elapsed="0.002900"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.203786" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:50.203348" elapsed="0.000492"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.204360" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.203995" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.205016" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.204709" elapsed="0.000350"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.204484" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.203940" elapsed="0.001220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.205869" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:50.205444" elapsed="0.000479"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.206448" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.206138" elapsed="0.000386"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.207116" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.206794" elapsed="0.000349"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.206569" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.206081" elapsed="0.001161"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:50.207523" elapsed="0.000433"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:22:50.208576" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:50.208238" elapsed="0.000392"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:22:50.208885" elapsed="0.002423"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:22:50.192804" elapsed="0.018595"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:22:50.211762" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-19T01:22:50.211515" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.211481" elapsed="0.000544"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.212262" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.212387" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:22:50.215111" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:22:50.139257" elapsed="0.075883"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:50.215210" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:50.215363" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:22:49.886565" elapsed="0.328825"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.215725" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.215493" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.215476" elapsed="0.000340"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:22:50.215849" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:22:50.215996" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:22:49.882303" elapsed="0.333720"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:22:50.216525" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7e10400&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:22:50.216199" elapsed="0.000387"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:22:50.217049" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:22:50.216742" elapsed="0.000335"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:22:50.217125" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:50.217274" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:22:49.880020" elapsed="0.337278"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:22:50.217454" elapsed="0.000346"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:22:50.217849" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:22:49.875390" elapsed="0.342578"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:49.875105" elapsed="0.342910"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.218305" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.218119" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:49.875091" elapsed="0.343292"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:22:49.875059" elapsed="0.343348"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.218868" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.218588" elapsed="0.000338"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.224908" level="INFO">${session} = ClusterManagement__session_3</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-19T01:22:50.224583" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:22:50.224982" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:22:50.225155" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:22:50.224239" elapsed="0.000941"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.225719" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:50.225340" elapsed="0.000406"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.304248" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.303854" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.304994" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.304765" elapsed="0.000314">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:50.305174" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:50.304436" elapsed="0.000762"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.305739" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:50.305358" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.306073" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:50.306212" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:50.305920" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.306655" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.306413" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.307642" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.307389" elapsed="0.000337"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.308168" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:22:50.307882" elapsed="0.000311"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.308990" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:22:50.308684" elapsed="0.000332"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:22:50.309757" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:22:50.309535" elapsed="0.000247"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:22:50.309833" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:22:50.309986" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:22:50.309220" elapsed="0.000791"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:50.310178" elapsed="0.000251"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:22:50.308411" elapsed="0.002060"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:22:50.308242" elapsed="0.002264"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:22:50.310548" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:22:50.310707" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:22:50.307072" elapsed="0.003659"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.306765" elapsed="0.003997"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.310931" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.310786" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.306746" elapsed="0.004259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.311593" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:50.311159" elapsed="0.000462"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:50.311668" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:50.303235" elapsed="0.008554"/>
</kw>
<msg time="2026-04-19T01:22:50.311877" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:50.290324" elapsed="0.021627"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.325365" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.338799" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.352447" elapsed="0.000059"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.352757" elapsed="0.000049"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.353123" elapsed="0.000051"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.353895" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.353705" elapsed="0.000264"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:50.353662" elapsed="0.000341"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.354320" elapsed="0.000082"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.354757" elapsed="0.000082"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.355207" elapsed="0.000083"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:50.353514" elapsed="0.001850"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.353259" elapsed="0.002182"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.355699" elapsed="0.000048"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.355833" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:22:50.356021" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:50.284989" elapsed="0.071076"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.425852" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.425479" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.426593" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.426381" elapsed="0.000275">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:50.426777" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:50.426053" elapsed="0.000749"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.427357" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:50.426961" elapsed="0.000423"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.427678" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:22:50.427805" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:22:50.427543" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.428243" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.427982" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:22:50.428640" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.428356" elapsed="0.000342"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.429174" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.428864" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.428722" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.428337" elapsed="0.000920"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.429937" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:22:50.429398" elapsed="0.000603"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:22:50.430071" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:22:50.424852" elapsed="0.005345"/>
</kw>
<msg time="2026-04-19T01:22:50.430286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:22:50.411617" elapsed="0.018744"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.443722" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.457284" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.470796" elapsed="0.000088"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.471159" elapsed="0.000050"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.471471" elapsed="0.000049"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.472300" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.472106" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:22:50.472007" elapsed="0.000401"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.472707" elapsed="0.000083"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.473142" elapsed="0.000083"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.473556" elapsed="0.000083"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:22:50.471858" elapsed="0.001855"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.471602" elapsed="0.002188"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.474057" elapsed="0.000051"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:22:50.474194" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:22:50.474397" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:22:50.409610" elapsed="0.064815"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:22:50.476372" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.476122" elapsed="0.000313">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:22:50.476642" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:22:50.475396" elapsed="0.001358"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:22:50.477469" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:22:50.476869" elapsed="0.000694"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.478503" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:22:50.477996" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-04-19T01:22:50.477663" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-04-19T01:22:50.476835" elapsed="0.001857"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.481861" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:22:50.478963" elapsed="0.003009"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:22:50.482075" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:22:50.482391" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:22:50.474880" elapsed="0.007537"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.485393" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.484791" elapsed="0.000760"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.486373" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.485784" elapsed="0.000749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.487408" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.486766" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.488432" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.487801" elapsed="0.000789"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:22:50.490485" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:22:50.490227" elapsed="0.000317"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:22:50.491079" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:22:50.490802" elapsed="0.000332"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:22:50.491387" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:22:50.492365" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:22:50.491942" elapsed="0.000513"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:22:50.492534" elapsed="0.000069"/>
</return>
<msg time="2026-04-19T01:22:50.493058" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:22:50.489305" elapsed="0.003832"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:24:55.557929" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.495632" elapsed="125.066370">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:22:50.493255" elapsed="125.069030">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.563386" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.562547" elapsed="0.001072"/>
</branch>
<status status="FAIL" start="2026-04-19T01:22:50.493221" elapsed="125.070621">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.566361" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.566723" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.566626" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:24:55.566589" elapsed="0.000369"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.567198" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.567325" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.482773" elapsed="125.084749">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.567608" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.230303" elapsed="125.337408">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.568013" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.567829" elapsed="0.000268"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:24:55.567812" elapsed="0.000309"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.568153" elapsed="0.000014"/>
</return>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.225994" elapsed="125.342260">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.568427" elapsed="0.000022"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.568592" elapsed="0.000020"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.568658" elapsed="0.000014"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.223799" elapsed="125.344959">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.568922" elapsed="0.000021"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.568986" elapsed="0.000015"/>
</return>
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T01:22:50.219137" elapsed="125.350018">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:22:50.218949" elapsed="125.350267">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:22:50.218574" elapsed="125.350677">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:22:50.218545" elapsed="125.350775">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="FAIL" start="2026-04-19T01:22:49.538416" elapsed="126.030968">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>tolerance=0</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.537691" elapsed="126.031789">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:24:55.569579" level="FAIL">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.536770" elapsed="126.032902">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:24:55.569792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.536329" elapsed="126.033515"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.570275" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.570081" elapsed="0.000250"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.570528" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.570355" elapsed="0.000229"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:24:55.570066" elapsed="0.000539"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T01:24:55.570020" elapsed="0.000608"/>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.569911" elapsed="0.000742"/>
</for>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T01:22:49.535970" elapsed="126.034769">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.572326" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.571916" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.571898" elapsed="0.000514"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:24:55.572563" elapsed="0.000366"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.577951" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:24:55.577512" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:24:55.578215" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.578070" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.578050" elapsed="0.000228"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.578721" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:24:55.578421" elapsed="0.000327"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:24:55.579182" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Partition_And_Heal_Invoke_Rpc_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:24:55.578905" elapsed="0.000304"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:24:55.579538" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:24:55.579364" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.580073" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:24:55.579713" elapsed="0.000388"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.580561" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:24:55.580253" elapsed="0.000336"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.581190" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"

Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:24:55.580740" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.581683" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:24:55.581392" elapsed="0.000394"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:24:55.577201" elapsed="0.004642"/>
</kw>
<status status="PASS" start="2026-04-19T01:24:55.571703" elapsed="0.010190"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:24:55.571068" elapsed="0.010867"/>
</kw>
<doc>Invoke get-contexted-constant rpc on every node of the cluster. When requested on the node with
local instance the local value is expected. If invoked on the node with no local instance, any remote
value is expected. From the constant returned from the 3 node (with no rpc instance) an index of
the node to be isolated is derived. And in the tc Invoke_Rpc_On_Remaining_Nodes a different constant
is expected. The second for loop makes the suite suitable for more that 3 nodes cluster.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:22:09.124570" elapsed="166.457405">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node&amp;order=bug_status"

Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s8-t3" name="Isolate_One_Node" line="45">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:24:55.585219" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:24:55.584934" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.586494" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.586385" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.586366" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.591505" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.591398" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.591380" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.592566" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:24:55.592187" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.593061" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:24:55.592748" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:24:55.593132" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:24:55.593285" level="INFO">${index_list} = [1, 2, 3]</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-19T01:24:55.591795" 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-19T01:24:55.598629" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.598523" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.598504" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.600006" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.599900" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.599882" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:24:55.600550" 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-19T01:24:55.600238" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:24:55.600954" 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-19T01:24:55.600734" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:24:55.651889" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:24:55.601494" elapsed="0.050503"/>
</kw>
<msg time="2026-04-19T01:24:55.652213" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:24:55.652262" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:24:55.601160" elapsed="0.051136"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:24:55.699973" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:24:55.652820" elapsed="0.047332"/>
</kw>
<msg time="2026-04-19T01:24:55.700346" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:24:55.700392" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:24:55.652473" elapsed="0.047955"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.700806" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.700527" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.700497" elapsed="0.000392"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.701428" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:24:55.701077" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.701879" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.701582" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.701552" elapsed="0.000429"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:24:55.702050" elapsed="0.000051"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:24:55.703722" elapsed="0.000888"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:24:55.704908" elapsed="0.000546"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:24:55.705736" elapsed="0.000662"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:24:55.703013" elapsed="0.003497"/>
</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-19T01:24:55.702446" elapsed="0.004129"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:24:55.599547" elapsed="0.107127"/>
</kw>
<msg time="2026-04-19T01:24:55.706764" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:24:55.706808" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:24:55.598845" elapsed="0.108000"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:24:55.707078" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T01:24:55.706920" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.706902" elapsed="0.000268"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.707575" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.707910" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.707983" elapsed="0.000020"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:24:55.598187" elapsed="0.109933"/>
</kw>
<msg time="2026-04-19T01:24:55.708216" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:24:55.708261" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:24:55.593664" elapsed="0.114634"/>
</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-19T01:24:55.708626" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.708375" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.708357" elapsed="0.000348"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:24:55.593527" elapsed="0.115202"/>
</iter>
<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-19T01:24:55.714612" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.714501" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.714482" elapsed="0.000258"/>
</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-19T01:24:55.715907" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.715798" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.715780" elapsed="0.000202"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:24:55.716468" level="INFO">${karaf_connection_index} = 12</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-19T01:24:55.716151" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:24:55.716869" 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-19T01:24:55.716649" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:24:55.763357" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:24:55.717456" elapsed="0.046176"/>
</kw>
<msg time="2026-04-19T01:24:55.763963" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:24:55.764066" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:24:55.717119" elapsed="0.047000"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:24:55.816162" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:24:55.765113" elapsed="0.051186"/>
</kw>
<msg time="2026-04-19T01:24:55.816481" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:24:55.816526" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:24:55.764466" elapsed="0.052095"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.816951" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.816667" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.816633" elapsed="0.000428"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:24:55.817553" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "n "e "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:24:55.817211" elapsed="0.000416"/>
</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-19T01:24:55.817918" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.817694" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.817675" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:24:55.818064" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:24:55.819676" elapsed="0.000887"/>
</kw>
<kw name="Open 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-19T01:24:55.820860" elapsed="0.000550"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:24:55.821690" elapsed="0.000472"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:24:55.818970" elapsed="0.003305"/>
</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-19T01:24:55.818395" elapsed="0.003945"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:24:55.715496" elapsed="0.106948"/>
</kw>
<msg time="2026-04-19T01:24:55.822540" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:24:55.822586" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:24:55.714895" elapsed="0.107727"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:24:55.822809" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:24:55.822700" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.822682" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.823407" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:24:55.825389" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:24:55.825466" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:24:55.714148" elapsed="0.111431"/>
</kw>
<msg time="2026-04-19T01:24:55.825674" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:24:55.825718" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:24:55.708998" elapsed="0.116755"/>
</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-19T01:24:55.826120" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:24:55.825842" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.825812" elapsed="0.000386"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:24:55.708860" elapsed="0.117362"/>
</iter>
<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-19T01:24:55.831665" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.831557" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.831538" 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-19T01:24:55.832868" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:24:55.832763" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:24:55.832745" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:24:55.833411" level="INFO">${karaf_connection_index} = 29</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-19T01:24:55.833099" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:24:55.833809" 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-19T01:24:55.833591" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:25:05.835018" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:24:55.834359" elapsed="10.001633">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:25:05.836296" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:25:05.836350" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:24:55.834002" elapsed="10.002373"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:25:15.837524" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:25:05.837124" elapsed="10.001202">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:25:15.838580" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:25:15.838629" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:25:05.836645" elapsed="10.002009"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:25:15.839887" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Isolate_One_Node"</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-19T01:25:15.839095" elapsed="0.000863">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Isolate_One_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:25:15.838765" elapsed="0.001290">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Isolate_One_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:25:15.838731" elapsed="0.001363">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Isolate_One_Node"</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-19T01:25:15.840262" 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-19T01:25:15.840490" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:25:15.840351" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:25:15.840333" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:25:15.840604" elapsed="0.000016"/>
</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-19T01:25:15.842281" elapsed="0.001088"/>
</kw>
<kw name="Open 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-19T01:25:15.843669" elapsed="0.000560"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:25:15.844523" elapsed="0.000406"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:25:15.841575" elapsed="0.003478"/>
</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-19T01:25:15.840985" elapsed="0.004138"/>
</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-19T01:24:55.832463" elapsed="20.012747">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Isolate_One_Node"</status>
</kw>
<msg time="2026-04-19T01:25:15.845314" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:25:15.845360" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Isolate_One_Node"</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-19T01:24:55.831883" elapsed="20.013502"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:25:15.845572" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:25:15.845463" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:25:15.845445" elapsed="0.000194"/>
</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-19T01:25:15.846456" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:25:15.846350" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:25:15.846332" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:25:15.846828" 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-19T01:25:15.846933" 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-19T01:25:15.846678" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:15.847427" level="INFO">{1: 10, 2: 12, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:15.847158" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:15.847896" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:15.847623" elapsed="0.000319"/>
</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-19T01:25:15.848501" elapsed="0.000275"/>
</kw>
<msg time="2026-04-19T01:25:15.848875" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:25:15.848928" level="INFO">${old_connection_index} = 29</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-19T01:25:15.848140" elapsed="0.000811"/>
</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-19T01:25:15.849783" elapsed="0.000200"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:25:25.851859" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:25:15.850661" elapsed="10.002340">No match found for '
' in 10 seconds
Output:
.</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-19T01:25:15.850164" elapsed="10.003022"/>
</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-19T01:25:25.854195" elapsed="0.000543"/>
</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-19T01:25:25.853495" elapsed="0.001349"/>
</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-19T01:25:15.849274" elapsed="10.005627"/>
</kw>
<status status="PASS" start="2026-04-19T01:25:15.849051" elapsed="10.005905"/>
</branch>
<status status="PASS" start="2026-04-19T01:25:15.849009" elapsed="10.005982"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:25:25.856148" level="INFO">${ip_address} = 10.30.171.206</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-19T01:25:25.855800" elapsed="0.000376"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:25:25.856231" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:25:25.856394" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:25:25.855397" elapsed="0.001023"/>
</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-19T01:25:25.856680" elapsed="0.000617"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:25:25.857597" level="INFO">index=34
host=10.30.171.206
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-19T01:25:25.857701" level="INFO">${karaf_connection_object} = index=34
host=10.30.171.206
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-19T01:25:25.857471" elapsed="0.000257"/>
</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-19T01:25:25.857876" elapsed="0.002606"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:25:25.860915" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:25:35.965347" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:25:25.860650" elapsed="10.105539">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:25:35.980698" elapsed="0.000786"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:25:35.981669" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:25:35.981997" elapsed="0.000121"/>
</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-19T01:25:35.967371" elapsed="0.014802"/>
</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-19T01:25:35.966674" elapsed="0.015585"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:25:15.846053" elapsed="20.136347">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:25:35.982805" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:25:35.982885" elapsed="0.000022"/>
</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-19T01:24:55.831211" elapsed="40.151793">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:25:35.983137" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:25:35.983181" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:24:55.826491" elapsed="40.156714"/>
</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-19T01:25:35.983553" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:25:35.983293" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T01:25:35.983272" elapsed="0.000361"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:24:55.826351" elapsed="40.157307"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:24:55.593360" elapsed="40.390333"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:24:55.591038" elapsed="40.392715"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:24:55.586093" elapsed="40.397720"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:24:55.585630" elapsed="40.398230"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:24:55.582809" elapsed="40.401106"/>
</kw>
<kw name="Get_Contexted_Constant_Index_From_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:25:35.990599" level="INFO">${session} = ClusterManagement__session_3</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-19T01:25:35.990291" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:25:35.990673" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:25:35.990826" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:25:35.989925" elapsed="0.000925"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:25:35.991491" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:25:35.991096" elapsed="0.000422"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.027147" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:25:36.026744" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:25:36.027921" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:25:36.027674" elapsed="0.000317">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:25:36.028102" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:25:36.027341" elapsed="0.000786"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.028678" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:25:36.028289" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:25:36.029006" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:25:36.029191" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:25:36.028862" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.029615" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.029370" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.030698" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.030404" elapsed="0.000340"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.031368" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:25:36.030903" elapsed="0.000492"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.032316" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:25:36.031755" elapsed="0.000589"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:25:36.033510" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:25:36.032959" elapsed="0.000595"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:25:36.033755" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:25:36.034051" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:25:36.032532" elapsed="0.001547"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:25:36.034234" elapsed="0.000471"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:25:36.031621" elapsed="0.003136"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:25:36.031447" elapsed="0.003348"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:25:36.034839" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:25:36.034996" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:25:36.030084" elapsed="0.004937"/>
</kw>
<status status="PASS" start="2026-04-19T01:25:36.029760" elapsed="0.005309"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.035238" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:25:36.035093" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T01:25:36.029739" elapsed="0.005575"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.035936" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:25:36.035453" elapsed="0.000511"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:25:36.036013" elapsed="0.000050"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:25:36.025904" elapsed="0.010257"/>
</kw>
<msg time="2026-04-19T01:25:36.036261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:25:36.011503" elapsed="0.024808"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.048347" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.060329" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.072199" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.072392" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.072563" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.072921" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:25:36.072779" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:25:36.072765" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.073153" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.073316" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.073478" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:25:36.072737" elapsed="0.000794"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:25:36.072637" elapsed="0.000920"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.073717" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:25:36.073793" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:25:36.073901" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:25:36.007042" elapsed="0.066885"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.097908" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:25:36.097518" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:25:36.098721" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:25:36.098501" elapsed="0.000286">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:25:36.098880" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:25:36.098150" elapsed="0.000756"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.099474" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:25:36.099085" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:25:36.099838" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:25:36.099987" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:25:36.099670" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.100429" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.100185" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:25:36.100829" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:25:36.100544" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.101360" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:25:36.101067" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T01:25:36.100912" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-19T01:25:36.100525" elapsed="0.000918"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.102165" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:25:36.101583" elapsed="0.000612"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:25:36.102244" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:25:36.096886" elapsed="0.005482"/>
</kw>
<msg time="2026-04-19T01:25:36.102422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:25:36.084575" elapsed="0.017894"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.114334" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.126183" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.137957" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.138163" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.138339" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.138693" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:25:36.138554" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:25:36.138539" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.138939" elapsed="0.000026"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.139132" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.139295" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:25:36.138511" elapsed="0.000837"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:25:36.138413" elapsed="0.000960"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.139513" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:25:36.139587" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T01:25:36.139707" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:25:36.083691" elapsed="0.056044"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:25:36.140981" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:25:36.140738" elapsed="0.000323">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:25:36.141162" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:25:36.140395" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:25:36.141496" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:25:36.141255" elapsed="0.000298"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.142078" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:25:36.141771" elapsed="0.000334"/>
</kw>
<status status="PASS" start="2026-04-19T01:25:36.141598" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T01:25:36.141237" elapsed="0.000923"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.144591" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:25:36.142305" elapsed="0.002312"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:25:36.144669" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:25:36.144822" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:25:36.140075" elapsed="0.004772"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.146429" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.146180" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.146902" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.146661" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.147363" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.147117" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.147793" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.147555" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:25:36.148640" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:25:36.148448" elapsed="0.000218"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:25:36.149129" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:25:36.148815" elapsed="0.000340"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:25:36.149300" elapsed="0.000202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:25:36.149928" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:25:36.149680" elapsed="0.000292"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:25:36.150014" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T01:25:36.150186" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:25:36.148047" elapsed="0.002163"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:27:41.255000" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:25:36.152285" elapsed="125.106516">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:25:36.150279" elapsed="125.108725">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.259532" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.259118" elapsed="0.000566"/>
</branch>
<status status="FAIL" start="2026-04-19T01:25:36.150261" elapsed="125.109477">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.260656" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.260976" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.260889" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:27:41.260847" elapsed="0.000300"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.261462" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.261608" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:25:36.145187" elapsed="125.116656">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.262053" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:25:35.996073" elapsed="125.266202">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.262974" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.262583" elapsed="0.000645"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:27:41.262544" elapsed="0.000719"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.263309" elapsed="0.000021"/>
</return>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:25:35.991773" elapsed="125.271673">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.263685" elapsed="0.000030"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.263918" elapsed="0.000029"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.264009" elapsed="0.000040"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T01:25:35.989463" elapsed="125.274718">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Replace String" owner="String">
<var>${index}</var>
<arg>${constant}</arg>
<arg>${CONSTANT_PREFIX}</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.264448" elapsed="0.000029"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${index}</var>
<arg>${index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.264685" elapsed="0.000030"/>
</kw>
<return>
<value>${index}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.264773" elapsed="0.000020"/>
</return>
<var>${isolated_idx}</var>
<arg>${TESTED_MEMBER_WITHOUT_RPC_IDX}</arg>
<doc>Ivoke get-contexted-constant rpc on given member index. Returns the index of
the node where the constant came from.</doc>
<status status="FAIL" start="2026-04-19T01:25:35.984170" elapsed="125.280733">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${isolated_idx}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.265180" elapsed="0.000037"/>
</kw>
<kw name="Isolate_Node" owner="DrbCommons">
<arg>${isolated_idx}</arg>
<doc>Isolate a member and update appropriate suite variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.265581" elapsed="0.000033"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.267734" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.266882" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.266858" elapsed="0.000999"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:27:41.268077" elapsed="0.000547"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.275464" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:27:41.274951" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:27:41.275713" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.275568" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.275549" elapsed="0.000226"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.276233" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:27:41.275917" elapsed="0.000344"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:27:41.276674" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Partition_And_Heal_Isolate_One_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:27:41.276412" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:27:41.277044" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:27:41.276855" elapsed="0.000216"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.277565" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:27:41.277220" elapsed="0.000372"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.278066" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:27:41.277742" elapsed="0.000353"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.278752" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:27:41.278295" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.279271" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:27:41.278955" elapsed="0.000364"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:27:41.274524" elapsed="0.004851"/>
</kw>
<status status="PASS" start="2026-04-19T01:27:41.266580" elapsed="0.012845"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:27:41.266020" elapsed="0.013447"/>
</kw>
<doc>Isolate one node with registered rpc.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:24:55.582354" elapsed="165.697151">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_isolate_one_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s8-t4" name="Invoke_Rpc_On_Remaining_Nodes" line="51">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:27:41.282913" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:27:41.282653" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.284177" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.284065" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.284045" elapsed="0.000200"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.289199" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.289090" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.289071" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.290265" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:27:41.289862" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.290767" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:27:41.290462" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:27:41.290839" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:27:41.290995" level="INFO">${index_list} = [1, 2, 3]</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-19T01:27:41.289489" elapsed="0.001531"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.296356" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.296248" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.296228" 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-19T01:27:41.297610" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.297502" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.297485" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:27:41.298150" 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-19T01:27:41.297818" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:27:41.298567" 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-19T01:27:41.298334" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:27:41.344914" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:27:41.299098" elapsed="0.045918"/>
</kw>
<msg time="2026-04-19T01:27:41.345259" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:27:41.345308" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:27:41.298748" elapsed="0.046598"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:27:41.400039" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:27:41.345855" elapsed="0.054305"/>
</kw>
<msg time="2026-04-19T01:27:41.400330" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:27:41.400377" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:27:41.345515" elapsed="0.054898"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.400712" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.400489" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.400470" elapsed="0.000320"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.401249" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:27:41.400925" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.401600" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.401391" elapsed="0.000262"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.401373" elapsed="0.000303"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:27:41.401709" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:27:41.403197" elapsed="0.000880"/>
</kw>
<kw name="Open 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-19T01:27:41.404371" elapsed="0.000692"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:27:41.405354" elapsed="0.000405"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:27:41.402527" elapsed="0.003339"/>
</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-19T01:27:41.401971" elapsed="0.003959"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:27:41.297200" elapsed="0.108853"/>
</kw>
<msg time="2026-04-19T01:27:41.406148" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:27:41.406193" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:27:41.296573" elapsed="0.109658"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:27:41.406423" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:27:41.406315" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.406289" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.406894" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.407246" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.407319" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:27:41.295894" elapsed="0.111531"/>
</kw>
<msg time="2026-04-19T01:27:41.407517" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:27:41.407561" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:27:41.291406" elapsed="0.116192"/>
</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-19T01:27:41.407953" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.407673" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.407656" elapsed="0.000390"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:27:41.291267" elapsed="0.116805"/>
</iter>
<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-19T01:27:41.413353" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.413246" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.413227" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.414680" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.414573" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.414555" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:27:41.415208" level="INFO">${karaf_connection_index} = 12</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-19T01:27:41.414884" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:27:41.415605" 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-19T01:27:41.415390" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:27:41.459261" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:27:41.416131" elapsed="0.043237"/>
</kw>
<msg time="2026-04-19T01:27:41.459539" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:27:41.459586" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:27:41.415785" elapsed="0.043837"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:27:41.513416" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:27:41.460151" elapsed="0.053388"/>
</kw>
<msg time="2026-04-19T01:27:41.513708" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:27:41.513753" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:27:41.459790" elapsed="0.053999"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.514102" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.513865" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.513845" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:27:41.514634" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "R "e "m "a "i "n "i "n "g "_ "N "o "d "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:27:41.514336" elapsed="0.000376"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.514987" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.514777" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.514759" elapsed="0.000326"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:27:41.515119" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:27:41.516553" elapsed="0.000870"/>
</kw>
<kw name="Open 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-19T01:27:41.517714" elapsed="0.000516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:27:41.518538" elapsed="0.000402"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:27:41.515888" elapsed="0.003174"/>
</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-19T01:27:41.515370" elapsed="0.003758"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:27:41.414262" elapsed="0.104962"/>
</kw>
<msg time="2026-04-19T01:27:41.519314" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:27:41.519358" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:27:41.413567" elapsed="0.105863"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:27:41.519616" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:27:41.519509" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.519490" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.520108" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:27:41.520611" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.520688" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:27:41.412892" elapsed="0.107905"/>
</kw>
<msg time="2026-04-19T01:27:41.520888" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:27:41.520931" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:27:41.408333" elapsed="0.112635"/>
</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-19T01:27:41.521306" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:27:41.521058" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.521039" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:27:41.408196" elapsed="0.113209"/>
</iter>
<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-19T01:27:41.526644" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.526538" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.526520" elapsed="0.000190"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:27:41.527837" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:27:41.527731" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T01:27:41.527713" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:27:41.528492" level="INFO">${karaf_connection_index} = 34</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-19T01:27:41.528184" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:27:41.528885" 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-19T01:27:41.528671" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:27:51.529990" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:27:41.529407" elapsed="10.001494">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:27:51.531189" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:27:51.531239" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:27:41.529080" elapsed="10.002183"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:28:01.532451" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:27:51.531962" elapsed="10.001338">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:28:01.533584" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:28:01.533635" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:27:51.531515" elapsed="10.002145"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:28:01.534955" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Remaining_Nodes"</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-19T01:28:01.534133" elapsed="0.000889">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Remaining_Nodes"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:28:01.533777" elapsed="0.001335">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Remaining_Nodes"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:28:01.533739" elapsed="0.001409">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Remaining_Nodes"</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-19T01:28:01.535395" elapsed="0.000025"/>
</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-19T01:28:01.535629" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:01.535486" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:28:01.535469" elapsed="0.000237"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:28:01.535746" 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-19T01:28:01.537444" elapsed="0.001144"/>
</kw>
<kw name="Open 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-19T01:28:01.538904" elapsed="0.000567"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:28:01.539763" elapsed="0.000452"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:28:01.536681" elapsed="0.003648"/>
</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-19T01:28:01.536076" elapsed="0.004322"/>
</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-19T01:27:41.527434" elapsed="20.013050">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Remaining_Nodes"</status>
</kw>
<msg time="2026-04-19T01:28:01.540587" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:28:01.540631" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Remaining_Nodes"</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-19T01:27:41.526856" elapsed="20.013799"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:28:01.540849" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:28:01.540738" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:01.540713" elapsed="0.000202"/>
</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-19T01:28:01.541752" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:28:01.541645" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:01.541626" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:28:01.542188" 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-19T01:28:01.542311" 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-19T01:28:01.541973" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:01.542760" level="INFO">{1: 10, 2: 12, 3: 34}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:01.542489" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:01.543222" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:01.542955" elapsed="0.000311"/>
</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-19T01:28:01.543776" elapsed="0.000306"/>
</kw>
<msg time="2026-04-19T01:28:01.544182" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:28:01.544228" 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-19T01:28:01.543420" elapsed="0.000831"/>
</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-19T01:28:01.545092" elapsed="0.000218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:28:11.547111" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:28:01.545988" elapsed="10.002209">No match found for '
' in 10 seconds
Output:
.</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-19T01:28:01.545478" elapsed="10.002855"/>
</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-19T01:28:11.549231" elapsed="0.000477"/>
</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-19T01:28:11.548604" elapsed="0.001197"/>
</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-19T01:28:01.544549" elapsed="10.005298"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:01.544326" elapsed="10.005572"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:01.544307" elapsed="10.005626"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:28:11.550969" level="INFO">${ip_address} = 10.30.171.206</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-19T01:28:11.550644" elapsed="0.000352"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:28:11.551067" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:28:11.551230" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:28:11.550269" elapsed="0.000987"/>
</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-19T01:28:11.551424" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:28:11.552152" level="INFO">index=39
host=10.30.171.206
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-19T01:28:11.552254" level="INFO">${karaf_connection_object} = index=39
host=10.30.171.206
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-19T01:28:11.552017" 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-19T01:28:11.552427" elapsed="0.004336"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:28:11.557285" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:28:21.588348" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:28:11.556929" elapsed="10.032224">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:28:21.605012" elapsed="0.000671"/>
</kw>
<kw name="Open 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-19T01:28:21.605881" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:28:21.606262" elapsed="0.000117"/>
</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-19T01:28:21.590324" elapsed="0.016113"/>
</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-19T01:28:21.589632" elapsed="0.016855"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:28:01.541344" elapsed="20.065262">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:28:21.607080" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.607168" elapsed="0.000022"/>
</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-19T01:27:41.526190" elapsed="40.081124">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:28:21.607437" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:28:21.607481" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:27:41.521661" elapsed="40.085843"/>
</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-19T01:28:21.607909" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.607599" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.607578" elapsed="0.000426"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:27:41.521525" elapsed="40.086997"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:27:41.291090" elapsed="40.317473"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:27:41.288711" elapsed="40.319914"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:27:41.283758" elapsed="40.324928"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:27:41.283339" elapsed="40.325394"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:27:41.280558" elapsed="40.328229"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Contexted_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Contexted_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:21.611638" elapsed="0.000324"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.619535" 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-19T01:28:21.618769" elapsed="0.000797"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:28:21.619692" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T01:28:21.619867" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:28:21.618342" elapsed="0.001551"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.620550" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.620103" elapsed="0.000476"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.663668" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.663185" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.664538" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.664267" elapsed="0.000350">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:21.664715" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:21.663894" elapsed="0.000846"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.665339" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:21.664921" elapsed="0.000445"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.665673" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:28:21.665845" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:28:21.665525" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.666325" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.666052" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.667733" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.667209" elapsed="0.000571"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.668264" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.667958" elapsed="0.000334"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.668990" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:28:21.668668" elapsed="0.000349"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:28:21.669802" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.669569" elapsed="0.000260"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:28:21.669883" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T01:28:21.670084" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:28:21.669240" elapsed="0.000923"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.670327" elapsed="0.000253"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:28:21.668532" elapsed="0.002089"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:28:21.668347" elapsed="0.002311"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:28:21.670703" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:28:21.670933" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:28:21.666829" elapsed="0.004134"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.666457" elapsed="0.004544"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.671196" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.671043" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.666429" elapsed="0.004889"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.671947" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:21.671462" elapsed="0.000517"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:28:21.672049" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:28:21.662358" elapsed="0.009821"/>
</kw>
<msg time="2026-04-19T01:28:21.672235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:21.649562" elapsed="0.022732"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.684610" elapsed="0.000040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.697134" elapsed="0.000044"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.709140" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.709411" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.709644" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.710211" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.710061" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:28:21.710024" elapsed="0.000269"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.710431" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.710597" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.710759" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:28:21.709984" elapsed="0.000829"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.709853" elapsed="0.000987"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.711053" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.711173" elapsed="0.000078"/>
</return>
<msg time="2026-04-19T01:28:21.711581" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:28:21.644374" elapsed="0.067326"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.738137" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.737732" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.738921" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.738663" elapsed="0.000334">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:21.739109" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:21.738326" elapsed="0.000808"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.739698" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:21.739311" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.740022" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:28:21.740194" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:28:21.739882" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.740619" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.740374" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:28:21.741045" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.740737" elapsed="0.000368"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.741571" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.741272" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.741130" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.740718" elapsed="0.000937"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.742373" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:21.741797" elapsed="0.000606"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:28:21.742453" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:28:21.737116" elapsed="0.005470"/>
</kw>
<msg time="2026-04-19T01:28:21.742640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:21.724350" elapsed="0.018340"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.754794" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.766964" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.779130" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.779421" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.779659" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.780143" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.779963" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:28:21.779945" elapsed="0.000283"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.780369" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.780537" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.780700" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:28:21.779910" elapsed="0.000844"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.779788" elapsed="0.000994"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.780986" elapsed="0.000027"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.781133" elapsed="0.000059"/>
</return>
<msg time="2026-04-19T01:28:21.781472" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:28:21.722601" elapsed="0.058992"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.784135" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.783821" elapsed="0.000388">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:21.784306" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:21.783444" elapsed="0.000888"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.784797" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.784525" elapsed="0.000332"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.785443" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.785126" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.784900" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.784461" elapsed="0.001097"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.788193" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:21.785774" elapsed="0.002447"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:28:21.788371" elapsed="0.000102"/>
</return>
<msg time="2026-04-19T01:28:21.788787" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:28:21.782555" elapsed="0.006354"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.792057" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.791775" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.792578" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.792322" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.793213" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.792833" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.793776" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.793520" elapsed="0.000300"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:28:21.794722" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:28:21.794514" elapsed="0.000235"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:28:21.795095" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:28:21.794899" elapsed="0.000223"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.795304" elapsed="0.000216"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.795935" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.795677" elapsed="0.000303"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:28:21.796041" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:28:21.796206" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:28:21.794095" elapsed="0.002137"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:28:21.812432" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node08fb6oqnaf2dd1d6e2hheaunzp0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:28:21.812716" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:28:21.812973" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:28:21.798520" elapsed="0.014543"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.796419" elapsed="0.016756"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.813664" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.813299" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.796360" elapsed="0.017545"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.821092" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.816598" elapsed="0.004565"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.816088" elapsed="0.005124"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.816006" elapsed="0.005242"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.825105" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.821638" elapsed="0.003534"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.821329" elapsed="0.003892"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.821304" elapsed="0.003953"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.826050" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:21.825490" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.826591" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.826191" elapsed="0.000484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.827546" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.827101" elapsed="0.000482"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.826709" elapsed="0.000925"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.826165" elapsed="0.001499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.828411" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:21.827878" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.828868" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.828548" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.829635" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.829219" elapsed="0.000452"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.828982" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.828522" elapsed="0.001228"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:21.829958" elapsed="0.000509"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:28:21.831112" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:21.830690" elapsed="0.000459"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.831398" elapsed="0.002472"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:28:21.814908" elapsed="0.019027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:28:21.834254" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T01:28:21.834138" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.834080" elapsed="0.000286"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.834573" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.834680" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T01:28:21.837171" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:28:21.789938" elapsed="0.047350"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:28:21.837415" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T01:28:21.837723" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:28:21.625711" elapsed="0.212040"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.838651" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.838125" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.838106" elapsed="0.000816"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:28:21.838957" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:28:21.839132" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:28:21.620878" elapsed="0.218281"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:28:21.839726" level="INFO">${xml} = &lt;Element 'output' at 0x7826f7e10d10&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:28:21.839341" elapsed="0.000447"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:28:21.840315" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:28:21.839947" elapsed="0.000396"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:28:21.840392" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:28:21.840545" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:28:21.617848" elapsed="0.222722"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:28:21.840729" elapsed="0.000374"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:28:21.841152" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:28:21.613082" elapsed="0.228194"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.612770" elapsed="0.228541"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.841522" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.841336" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.612752" elapsed="0.228848"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:28:21.612718" elapsed="0.228908"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.848112" level="INFO">${session} = ClusterManagement__session_2</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-19T01:28:21.847488" elapsed="0.000653"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:28:21.848254" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:28:21.848406" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:28:21.846970" elapsed="0.001461"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.849006" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.848594" elapsed="0.000454"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.886816" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.886440" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.887623" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.887375" elapsed="0.000322">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:21.887790" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:21.887007" elapsed="0.000807"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.888374" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:21.887975" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.888696" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:28:21.888846" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:28:21.888557" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.889281" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.889021" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.890285" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.890001" elapsed="0.000328"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.890746" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.890484" elapsed="0.000287"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.891509" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:28:21.891207" elapsed="0.000328"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:28:21.892274" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.892054" elapsed="0.000246"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:28:21.892352" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:28:21.892506" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:28:21.891721" elapsed="0.000810"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:28:21.892683" elapsed="0.000231"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:28:21.891052" elapsed="0.001902"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:28:21.890863" elapsed="0.002128"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:28:21.893049" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:28:21.893210" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:28:21.889683" elapsed="0.003552"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.889393" elapsed="0.003874"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.893437" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.893292" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.889373" elapsed="0.004141"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.894237" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:21.893653" elapsed="0.000613"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:28:21.894317" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:28:21.885812" elapsed="0.008630"/>
</kw>
<msg time="2026-04-19T01:28:21.894495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:21.873550" elapsed="0.020994"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.906786" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.918683" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.930590" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.930834" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.931072" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.931563" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.931419" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:28:21.931404" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.931885" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.932065" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.932231" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:28:21.931373" elapsed="0.000912"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.931223" elapsed="0.001088"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.932505" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:28:21.932619" elapsed="0.000055"/>
</return>
<msg time="2026-04-19T01:28:21.933073" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:28:21.868541" elapsed="0.064646"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.958993" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.958576" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.959820" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.959556" elapsed="0.000336">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:21.959987" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:21.959216" elapsed="0.000795"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.960579" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:21.960190" elapsed="0.000416"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:28:21.960902" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:28:21.961062" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:28:21.960762" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.961495" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:21.961246" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:28:21.961903" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:21.961611" elapsed="0.000352"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.962443" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:21.962146" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.961987" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.961593" elapsed="0.000933"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:21.963271" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:21.962668" elapsed="0.000634"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:28:21.963394" elapsed="0.000034"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:28:21.957917" elapsed="0.005610"/>
</kw>
<msg time="2026-04-19T01:28:21.963583" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:21.945593" elapsed="0.018040"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.975744" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.987661" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.999640" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:21.999889" elapsed="0.000027"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.000156" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.000574" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.000432" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:28:22.000417" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.000787" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.000947" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.001123" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:28:22.000387" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:28:22.000278" elapsed="0.000924"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.001395" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:28:22.001508" elapsed="0.000054"/>
</return>
<msg time="2026-04-19T01:28:22.001817" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:28:21.943927" elapsed="0.058009"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:22.004335" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.004078" elapsed="0.000323">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:22.004493" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:22.003720" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.004945" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.004697" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.005541" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:22.005242" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.005068" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.004640" elapsed="0.001005"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.008011" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:22.005851" elapsed="0.002202"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:28:22.008149" elapsed="0.000095"/>
</return>
<msg time="2026-04-19T01:28:22.008540" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:28:22.002882" elapsed="0.005772"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.011801" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.011525" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.012317" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.012072" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.012811" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.012564" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.013468" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.013223" elapsed="0.000290"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:28:22.014391" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:28:22.014186" elapsed="0.000231"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:28:22.014738" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:28:22.014566" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:28:22.014907" elapsed="0.000224"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.015579" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.015313" elapsed="0.000312"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:28:22.015668" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:28:22.015828" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:28:22.013769" elapsed="0.002085"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:28:22.031903" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01soeafhtayny41q9azelf5uknm0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:28:22.032219" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:28:22.032436" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:28:22.018501" elapsed="0.013995"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.016056" elapsed="0.016628"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.033333" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.032942" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.015982" elapsed="0.017596"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.041586" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.036282" elapsed="0.005414"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.035750" elapsed="0.006024"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.035706" elapsed="0.006125"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.045477" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.042511" elapsed="0.003015"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.041957" elapsed="0.003604"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.041918" elapsed="0.003668"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.046160" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:22.045754" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.046491" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.046258" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.047095" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:22.046730" elapsed="0.000392"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.046573" elapsed="0.000602"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.046239" elapsed="0.000965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.047744" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:22.047367" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.048120" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.047843" elapsed="0.000338"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.048671" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:22.048366" elapsed="0.000331"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.048206" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.047825" elapsed="0.000930"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:22.048904" elapsed="0.000376"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:28:22.049732" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:22.049444" elapsed="0.000315"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:28:22.049911" elapsed="0.002308"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:28:22.034682" elapsed="0.017600"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:28:22.052581" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T01:28:22.052467" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.052409" elapsed="0.000279"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.052893" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:28:22.053003" elapsed="0.000074"/>
</return>
<msg time="2026-04-19T01:28:22.055483" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:28:22.009760" elapsed="0.045867"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:28:22.055807" elapsed="0.000064"/>
</return>
<msg time="2026-04-19T01:28:22.056264" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:28:21.854302" elapsed="0.202055"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.057607" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.056858" elapsed="0.001084"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.056829" elapsed="0.001152"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:28:22.058079" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T01:28:22.058299" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:28:21.849337" elapsed="0.209001"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:28:22.059107" level="INFO">${xml} = &lt;Element 'output' at 0x7826f761cf40&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:28:22.058561" elapsed="0.000586"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:28:22.059881" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:28:22.059394" elapsed="0.000514"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:28:22.059958" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:28:22.060127" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:28:21.846544" elapsed="0.213609"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:28:22.060310" elapsed="0.000354"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:28:22.060713" elapsed="0.000027"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:28:21.842112" elapsed="0.218724"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:21.841812" elapsed="0.219059"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.061100" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.060898" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:21.841798" elapsed="0.219382"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:28:21.841767" elapsed="0.219440"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.061678" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.061395" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.068200" level="INFO">${session} = ClusterManagement__session_3</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-19T01:28:22.067569" elapsed="0.000658"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:28:22.068344" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:28:22.068505" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:28:22.067191" elapsed="0.001343"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.069133" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:28:22.068698" elapsed="0.000463"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.106807" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:22.106435" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:22.107608" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.107360" elapsed="0.000324">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:22.107822" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:22.106993" elapsed="0.000854"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.108413" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:22.108009" elapsed="0.000431"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:28:22.108737" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:28:22.108884" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:28:22.108598" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.109321" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.109077" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.110328" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.110063" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.110950" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:28:22.110532" elapsed="0.000445"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.111660" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:28:22.111355" elapsed="0.000331"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:28:22.112420" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:28:22.112203" elapsed="0.000244"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:28:22.112498" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:28:22.112651" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:28:22.111870" elapsed="0.000807"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:28:22.112826" elapsed="0.000243"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:28:22.111223" elapsed="0.001888"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:28:22.111040" elapsed="0.002106"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:28:22.113189" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:28:22.113345" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:28:22.109726" elapsed="0.003645"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.109435" elapsed="0.003968"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.113577" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.113428" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.109416" elapsed="0.004236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.114251" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:22.113791" elapsed="0.000488"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:28:22.114327" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:28:22.105809" elapsed="0.008640"/>
</kw>
<msg time="2026-04-19T01:28:22.114501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:22.093324" elapsed="0.021227"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.126674" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.138676" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.150532" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.150779" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.151002" elapsed="0.000042"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.151463" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.151321" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:28:22.151306" elapsed="0.000236"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.151678" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.151839" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.152001" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:28:22.151276" elapsed="0.000794"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:28:22.151164" elapsed="0.000932"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.152291" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:28:22.152405" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T01:28:22.152698" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:28:22.088333" elapsed="0.064477"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.180151" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:22.179756" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:22.180893" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.180670" elapsed="0.000290">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:22.181067" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:22.180342" elapsed="0.000751"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.181639" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:22.181253" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:28:22.181963" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:28:22.182152" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:28:22.181824" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.182582" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.182335" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:28:22.182992" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.182703" elapsed="0.000363"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.183549" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:22.183256" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.183091" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.182684" elapsed="0.000948"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.184340" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:28:22.183773" elapsed="0.000598"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:28:22.184421" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:28:22.179123" elapsed="0.005425"/>
</kw>
<msg time="2026-04-19T01:28:22.184602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:28:22.165229" elapsed="0.019423"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.196622" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.208651" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.220725" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.220996" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.221250" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.221690" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.221548" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:28:22.221531" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.221910" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.222095" elapsed="0.000066"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.222309" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:28:22.221495" elapsed="0.000869"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:28:22.221376" elapsed="0.001020"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.222593" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:28:22.222709" elapsed="0.000057"/>
</return>
<msg time="2026-04-19T01:28:22.223062" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:28:22.163540" elapsed="0.059709"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:28:22.225685" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.225395" elapsed="0.000368">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:28:22.225856" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:28:22.225009" elapsed="0.000872"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:28:22.226342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:28:22.226083" elapsed="0.000316"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.226920" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:28:22.226619" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-19T01:28:22.226443" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T01:28:22.226006" elapsed="0.001032"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.229594" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:28:22.227263" elapsed="0.002358"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:28:22.229716" elapsed="0.000241"/>
</return>
<msg time="2026-04-19T01:28:22.230311" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:28:22.224193" elapsed="0.006233"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.233375" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.233109" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.233871" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.233625" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.234519" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.234266" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.235009" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.234764" elapsed="0.000306"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:28:22.235952" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:28:22.235749" elapsed="0.000230"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:28:22.236333" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:28:22.236156" elapsed="0.000203"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:28:22.236505" elapsed="0.000206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:28:22.237181" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:28:22.236864" elapsed="0.000364"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:28:22.237273" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:28:22.237431" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:28:22.235345" elapsed="0.002112"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:30:27.322341" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.239715" elapsed="125.086699">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:28:22.237640" elapsed="125.089009">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.327356" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.326869" elapsed="0.000654"/>
</branch>
<status status="FAIL" start="2026-04-19T01:28:22.237581" elapsed="125.090047">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.328954" elapsed="0.000053"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.329405" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.329338" elapsed="0.000131"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:30:27.329252" elapsed="0.000272"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.329840" elapsed="0.000035"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.329998" elapsed="0.000114"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.231439" elapsed="125.099304">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.330973" elapsed="0.000048"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.074188" elapsed="125.257030">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.332405" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.331781" elapsed="0.000983"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:30:27.331749" elapsed="0.001061"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.332861" elapsed="0.000023"/>
</return>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.069451" elapsed="125.263560">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.333283" elapsed="0.000032"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.333520" elapsed="0.000031"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.333617" elapsed="0.000022"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.066736" elapsed="125.267025">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.334109" elapsed="0.000034"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.334208" elapsed="0.000022"/>
</return>
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T01:28:22.061980" elapsed="125.272371">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:28:22.061761" elapsed="125.272674">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:28:22.061380" elapsed="125.273096">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:28:22.061349" elapsed="125.273201">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="FAIL" start="2026-04-19T01:28:21.612519" elapsed="125.722113">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>tolerance=0</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.611294" elapsed="125.723474">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:30:27.334971" level="FAIL">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.610586" elapsed="125.724541">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:30:27.335210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.610076" elapsed="125.725204"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.335862" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.335585" elapsed="0.000362"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.336328" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.335981" elapsed="0.000430"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:30:27.335565" elapsed="0.000875"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T01:30:27.335525" elapsed="0.000949"/>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.335371" elapsed="0.001137"/>
</for>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.609633" elapsed="125.726997">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:30:27.336747" level="FAIL">Keyword 'DrbCommons.Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>60s</arg>
<arg>5s</arg>
<arg>DrbCommons.Verify_Contexted_Constant_On_Active_Nodes</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:28:21.608978" elapsed="125.727909">Keyword 'DrbCommons.Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.339244" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.338615" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.338589" elapsed="0.000782"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:30:27.339584" elapsed="0.000689"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.345317" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:30:27.344821" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:30:27.345574" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.345426" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.345407" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.346165" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:30:27.345787" elapsed="0.000407"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:30:27.346682" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Partition_And_Heal_Invoke_Rpc_On_Remaining_Nodes</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:30:27.346408" elapsed="0.000302"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:30:27.347110" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:30:27.346901" elapsed="0.000238"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.347652" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:30:27.347295" elapsed="0.000385"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.348181" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:30:27.347835" elapsed="0.000376"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.348818" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes&amp;order=bug_status"

Keyword 'DrbCommons.Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:30:27.348366" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.349365" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:30:27.349048" elapsed="0.000367"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:30:27.344505" elapsed="0.004969"/>
</kw>
<status status="PASS" start="2026-04-19T01:30:27.338298" elapsed="0.011229"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:30:27.337356" elapsed="0.012216"/>
</kw>
<doc>Invoke rpc on non-islolated nodes. As the only instance of rpc remained in the non-isolated
cluster nodes, only this value is expected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:27:41.279879" elapsed="166.069738">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_remaining_nodes&amp;order=bug_status"

Keyword 'DrbCommons.Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 1 minute. The last error was: Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s8-t5" name="Rejoin_Isolated_Member" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:30:27.352933" elapsed="0.000241"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:30:27.352668" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.354266" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.354139" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.354117" 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-19T01:30:27.359417" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.359308" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.359290" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.360513" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:30:27.360110" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.361051" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:30:27.360700" elapsed="0.000386"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:30:27.361136" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:30:27.361353" level="INFO">${index_list} = [1, 2, 3]</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-19T01:30:27.359714" elapsed="0.001665"/>
</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-19T01:30:27.366822" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.366697" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.366678" elapsed="0.000392"/>
</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-19T01:30:27.368275" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.368169" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.368151" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:30:27.368804" 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-19T01:30:27.368488" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:30:27.369260" 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-19T01:30:27.369000" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:30:27.410276" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:30:27.369770" elapsed="0.040613"/>
</kw>
<msg time="2026-04-19T01:30:27.410573" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:30:27.410623" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:30:27.369442" elapsed="0.041219"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:30:27.458413" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:30:27.411241" elapsed="0.047292"/>
</kw>
<msg time="2026-04-19T01:30:27.458703" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:30:27.458808" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:30:27.410859" elapsed="0.047991"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.459190" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.458935" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.458913" elapsed="0.000359"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.459722" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:30:27.459414" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.460102" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.459867" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.459849" elapsed="0.000332"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:30:27.460216" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:30:27.461700" elapsed="0.000874"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:30:27.462880" elapsed="0.000531"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:30:27.463693" elapsed="0.000592"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:30:27.461040" elapsed="0.003357"/>
</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-19T01:30:27.460494" elapsed="0.003968"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:30:27.367844" elapsed="0.096719"/>
</kw>
<msg time="2026-04-19T01:30:27.464657" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:30:27.464741" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:30:27.367225" elapsed="0.097557"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:30:27.464972" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:30:27.464860" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.464841" elapsed="0.000246"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.465487" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.465824" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.465896" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:30:27.366357" elapsed="0.099647"/>
</kw>
<msg time="2026-04-19T01:30:27.466114" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:30:27.466158" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:30:27.361752" elapsed="0.104444"/>
</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-19T01:30:27.466519" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.466272" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.466254" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:30:27.361612" elapsed="0.105008"/>
</iter>
<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-19T01:30:27.471973" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.471848" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.471828" elapsed="0.000228"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.473341" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.473231" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.473212" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:30:27.473860" level="INFO">${karaf_connection_index} = 12</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-19T01:30:27.473549" elapsed="0.000338"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:30:27.474279" 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-19T01:30:27.474057" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:30:27.515083" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:30:27.474805" elapsed="0.040391"/>
</kw>
<msg time="2026-04-19T01:30:27.515393" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:30:27.515441" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:30:27.474463" elapsed="0.041016"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:30:27.566509" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:30:27.516007" elapsed="0.050664"/>
</kw>
<msg time="2026-04-19T01:30:27.566857" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:30:27.566903" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:30:27.515656" elapsed="0.051284"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.567315" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.567053" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.567007" elapsed="0.000391"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:30:27.567866" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "M "e "m "b "e "r "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:30:27.567540" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.568311" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.568095" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.568076" elapsed="0.000313"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:30:27.568426" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:30:27.570008" elapsed="0.000892"/>
</kw>
<kw name="Open 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-19T01:30:27.571211" elapsed="0.000523"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:30:27.572023" elapsed="0.000466"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:30:27.569326" elapsed="0.003277"/>
</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-19T01:30:27.568747" elapsed="0.003922"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:30:27.472775" elapsed="0.099994"/>
</kw>
<msg time="2026-04-19T01:30:27.572863" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:30:27.572908" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:30:27.472208" elapsed="0.100739"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:30:27.573151" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:30:27.573023" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.573005" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.573639" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:30:27.574230" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.574305" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:30:27.471502" elapsed="0.102913"/>
</kw>
<msg time="2026-04-19T01:30:27.574508" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:30:27.574552" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:30:27.466912" elapsed="0.107677"/>
</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-19T01:30:27.574935" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:27.574681" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.574663" elapsed="0.000352"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:30:27.466772" elapsed="0.108290"/>
</iter>
<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-19T01:30:27.580559" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.580450" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.580431" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:30:27.581768" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:27.581662" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:27.581644" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:30:27.582329" level="INFO">${karaf_connection_index} = 39</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-19T01:30:27.581979" elapsed="0.000377"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:30:27.582746" 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-19T01:30:27.582511" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:30:37.583848" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:30:27.583274" elapsed="10.001593">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:30:37.585159" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:30:37.585457" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:30:27.582928" elapsed="10.002558"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:30:47.586751" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:30:37.586266" elapsed="10.001540">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:30:47.588194" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:30:47.588263" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:30:37.585744" elapsed="10.002554"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:30:47.589557" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Rejoin_Isolated_Member"</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-19T01:30:47.588796" elapsed="0.000825">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Rejoin_Isolated_Member"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:30:47.588440" elapsed="0.001256">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Rejoin_Isolated_Member"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:30:47.588399" elapsed="0.001334">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Rejoin_Isolated_Member"</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-19T01:30:47.589895" 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-19T01:30:47.590137" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:30:47.589984" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:30:47.589965" elapsed="0.000249"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:30:47.590252" 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-19T01:30:47.591814" elapsed="0.001115"/>
</kw>
<kw name="Open 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-19T01:30:47.593244" elapsed="0.000527"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:30:47.594071" elapsed="0.000404"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:30:47.591138" elapsed="0.003444"/>
</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-19T01:30:47.590555" elapsed="0.004094"/>
</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-19T01:30:27.581362" elapsed="20.013372">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Rejoin_Isolated_Member"</status>
</kw>
<msg time="2026-04-19T01:30:47.594837" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:30:47.594882" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Rejoin_Isolated_Member"</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-19T01:30:27.580776" elapsed="20.014130"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:30:47.595106" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:47.594981" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:47.594963" elapsed="0.000209"/>
</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-19T01:30:47.596220" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:30:47.595865" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:47.595847" elapsed="0.000445"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:30:47.596583" 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-19T01:30:47.596686" 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-19T01:30:47.596443" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:30:47.597256" level="INFO">{1: 10, 2: 12, 3: 39}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:30:47.596976" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:30:47.597687" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:30:47.597446" 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-19T01:30:47.598249" elapsed="0.000273"/>
</kw>
<msg time="2026-04-19T01:30:47.598681" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:30:47.598727" level="INFO">${old_connection_index} = 39</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-19T01:30:47.597883" elapsed="0.000866"/>
</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-19T01:30:47.599563" elapsed="0.000208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:30:57.601435" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:30:47.600575" elapsed="10.001903">No match found for '
' in 10 seconds
Output:
.</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-19T01:30:47.599935" elapsed="10.002683"/>
</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-19T01:30:57.603497" elapsed="0.000478"/>
</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-19T01:30:57.602890" elapsed="0.001194"/>
</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-19T01:30:47.599059" elapsed="10.005076"/>
</kw>
<status status="PASS" start="2026-04-19T01:30:47.598825" elapsed="10.005365"/>
</branch>
<status status="PASS" start="2026-04-19T01:30:47.598807" elapsed="10.005421"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:30:57.605236" level="INFO">${ip_address} = 10.30.171.206</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-19T01:30:57.604857" elapsed="0.000406"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:30:57.605317" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:30:57.605478" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:30:57.604472" elapsed="0.001031"/>
</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-19T01:30:57.605659" elapsed="0.000478"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:30:57.606424" level="INFO">index=44
host=10.30.171.206
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-19T01:30:57.606526" level="INFO">${karaf_connection_object} = index=44
host=10.30.171.206
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-19T01:30:57.606306" elapsed="0.000247"/>
</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-19T01:30:57.606699" elapsed="0.002760"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:30:57.609888" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:31:07.674570" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:30:57.609623" elapsed="10.065742">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:31:07.690456" elapsed="0.000523"/>
</kw>
<kw name="Open 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-19T01:31:07.691163" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:31:07.691533" 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-19T01:31:07.676536" elapsed="0.015154"/>
</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-19T01:31:07.675840" elapsed="0.015896"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:30:47.595571" elapsed="20.096255">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:31:07.692211" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:31:07.692289" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:30:27.579894" elapsed="40.112512">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:31:07.692589" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:31:07.692635" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:30:27.575339" elapsed="40.117320"/>
</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-19T01:31:07.693004" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.692745" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.692724" elapsed="0.000376"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:30:27.575200" elapsed="40.117937"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:30:27.361435" elapsed="40.331737"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:30:27.358914" elapsed="40.334320"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:30:27.353819" elapsed="40.339473"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:30:27.353381" elapsed="40.339958"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:30:27.350522" elapsed="40.342873"/>
</kw>
<kw name="Rejoin_Node" owner="DrbCommons">
<msg time="2026-04-19T01:31:07.697911" level="FAIL">Variable '${isolated_idx}' not found.</msg>
<arg>${isolated_idx}</arg>
<doc>Rejoin a member and update appropriate suite variables.</doc>
<status status="FAIL" start="2026-04-19T01:31:07.693666" elapsed="0.004284">Variable '${isolated_idx}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.699543" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.699159" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.699141" elapsed="0.000489"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:07.699772" elapsed="0.000331"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.705303" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:07.704789" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:31:07.705550" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.705406" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.705388" elapsed="0.000224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.706067" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:07.705754" elapsed="0.000340"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:31:07.706542" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Partition_And_Heal_Rejoin_Isolated_Member</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:31:07.706249" elapsed="0.000320"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:31:07.706897" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:31:07.706723" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.707438" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:07.707087" elapsed="0.000377"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.707919" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:07.707613" elapsed="0.000334"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.708545" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"

Variable '${isolated_idx}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:31:07.708110" elapsed="0.000484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.709097" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:07.708743" elapsed="0.000444"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:31:07.704484" elapsed="0.004759"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:07.698933" elapsed="0.010359"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:31:07.698572" elapsed="0.010761"/>
</kw>
<doc>Rejoin isolated node</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:30:27.349992" elapsed="40.359378">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_rejoin_isolated_member&amp;order=bug_status"

Variable '${isolated_idx}' not found.</status>
</test>
<test id="s1-s8-t6" name="Invoke_Rpc_On_Each_Node_Again" line="60">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:31:07.712902" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:31:07.712642" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:31:07.714175" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.714060" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.714020" elapsed="0.000224"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:31:07.719078" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.718954" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.718926" elapsed="0.000220"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.720136" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:31:07.719739" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.720620" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:31:07.720319" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:31:07.720691" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:31:07.720846" level="INFO">${index_list} = [1, 2, 3]</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-19T01:31:07.719368" elapsed="0.001503"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:31:07.726340" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.726232" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.726213" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:31:07.727585" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.727479" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.727461" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:31:07.728122" 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-19T01:31:07.727792" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:31:07.728526" 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-19T01:31:07.728305" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:31:07.777564" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:31:07.729052" elapsed="0.048635"/>
</kw>
<msg time="2026-04-19T01:31:07.777895" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:31:07.777970" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:31:07.728705" elapsed="0.049311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:31:07.828199" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:31:07.778622" elapsed="0.049776"/>
</kw>
<msg time="2026-04-19T01:31:07.828579" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:31:07.828627" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:07.778241" elapsed="0.050424"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.829010" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.828758" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.828731" elapsed="0.000387"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.829586" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:07.829260" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.829943" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.829732" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.829714" elapsed="0.000306"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:31:07.830075" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:07.831663" elapsed="0.000873"/>
</kw>
<kw name="Open 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-19T01:31:07.832831" elapsed="0.000549"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:31:07.833660" elapsed="0.000576"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:31:07.830929" elapsed="0.003431"/>
</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-19T01:31:07.830388" elapsed="0.004039"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:31:07.727179" elapsed="0.107347"/>
</kw>
<msg time="2026-04-19T01:31:07.834617" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:31:07.834662" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:07.726586" elapsed="0.108113"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:31:07.834998" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-04-19T01:31:07.834888" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.834870" elapsed="0.000237"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.835523" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.835992" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:31:07.836093" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:31:07.725874" elapsed="0.110331"/>
</kw>
<msg time="2026-04-19T01:31:07.836300" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:31:07.836343" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:07.721255" elapsed="0.115126"/>
</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-19T01:31:07.836703" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.836458" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.836441" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:31:07.721117" elapsed="0.115685"/>
</iter>
<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-19T01:31:07.842583" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.842425" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.842405" elapsed="0.000246"/>
</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-19T01:31:07.843836" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.843727" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.843709" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:31:07.844407" level="INFO">${karaf_connection_index} = 12</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-19T01:31:07.844069" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:31:07.844813" 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-19T01:31:07.844591" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:31:07.885647" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:31:07.845350" elapsed="0.040491"/>
</kw>
<msg time="2026-04-19T01:31:07.886083" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:31:07.886134" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:31:07.844997" elapsed="0.041176"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:31:07.961106" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:31:07.886844" elapsed="0.074392"/>
</kw>
<msg time="2026-04-19T01:31:07.961407" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:31:07.961453" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:07.886432" elapsed="0.075058"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.961840" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.961585" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.961558" elapsed="0.000363"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:07.962421" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "n "v "o "k "e "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "g "a "i "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:07.962089" elapsed="0.000412"/>
</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-19T01:31:07.962779" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.962567" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.962549" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:31:07.962895" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:07.964457" elapsed="0.000861"/>
</kw>
<kw name="Open 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-19T01:31:07.965618" elapsed="0.000532"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:31:07.966448" elapsed="0.000556"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:31:07.963761" elapsed="0.003377"/>
</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-19T01:31:07.963213" elapsed="0.003990"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:31:07.843423" elapsed="0.123879"/>
</kw>
<msg time="2026-04-19T01:31:07.967398" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:31:07.967445" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:07.842801" elapsed="0.124682"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:31:07.967668" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:31:07.967559" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.967541" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.968175" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:07.968702" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:31:07.968774" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:31:07.842058" elapsed="0.126826"/>
</kw>
<msg time="2026-04-19T01:31:07.968979" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:31:07.969023" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:07.837085" elapsed="0.131991"/>
</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-19T01:31:07.969401" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:07.969154" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.969136" elapsed="0.000340"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:31:07.836932" elapsed="0.132568"/>
</iter>
<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-19T01:31:07.975262" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.974970" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.974951" elapsed="0.000381"/>
</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-19T01:31:07.976473" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:07.976366" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:07.976349" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:31:07.976988" level="INFO">${karaf_connection_index} = 44</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-19T01:31:07.976679" elapsed="0.000336"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:31:07.977407" 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-19T01:31:07.977190" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:31:17.978525" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:31:07.977913" elapsed="10.001557">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:31:17.979735" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:31:17.979785" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:31:07.977587" elapsed="10.002222"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:31:27.981062" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:31:17.980502" elapsed="10.001420">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:31:27.982231" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:31:27.982281" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:31:17.980072" elapsed="10.002234"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:31:27.983570" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</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-19T01:31:27.982773" elapsed="0.000862">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:31:27.982435" elapsed="0.001273">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:31:27.982399" elapsed="0.001345">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</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-19T01:31:27.983908" 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-19T01:31:27.984152" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:27.983995" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:31:27.983977" elapsed="0.000253"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:31:27.984267" elapsed="0.000016"/>
</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-19T01:31:27.985872" elapsed="0.000868"/>
</kw>
<kw name="Open 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-19T01:31:27.987181" elapsed="0.000524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:31:27.987989" elapsed="0.000424"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:31:27.985191" elapsed="0.003331"/>
</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-19T01:31:27.984577" elapsed="0.004009"/>
</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-19T01:31:07.976068" elapsed="20.012603">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</status>
</kw>
<msg time="2026-04-19T01:31:27.988802" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:31:27.988848" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Invoke_Rpc_On_Each_Node_Again"</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-19T01:31:07.975482" elapsed="20.013390"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:31:27.989075" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:27.988950" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:27.988931" elapsed="0.000210"/>
</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-19T01:31:27.989938" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:31:27.989834" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:27.989817" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:31:27.992161" 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-19T01:31:27.992274" 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-19T01:31:27.990169" elapsed="0.002133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:27.992723" level="INFO">{1: 10, 2: 12, 3: 44}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:27.992455" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:27.993197" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:27.992935" elapsed="0.000306"/>
</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-19T01:31:27.993751" elapsed="0.000289"/>
</kw>
<msg time="2026-04-19T01:31:27.994141" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:31:27.994188" level="INFO">${old_connection_index} = 44</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-19T01:31:27.993396" elapsed="0.000815"/>
</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-19T01:31:27.995011" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:31:37.997135" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:31:27.995988" elapsed="10.002359">No match found for '
' in 10 seconds
Output:
.</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-19T01:31:27.995496" elapsed="10.002998"/>
</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-19T01:31:37.999468" elapsed="0.000553"/>
</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-19T01:31:37.998814" elapsed="0.001347"/>
</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-19T01:31:27.994506" elapsed="10.005707"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:27.994286" elapsed="10.005981"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:27.994268" elapsed="10.006034"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:31:38.001532" level="INFO">${ip_address} = 10.30.171.206</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-19T01:31:38.000945" elapsed="0.000615"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:31:38.001615" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:31:38.001779" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:31:38.000555" elapsed="0.001251"/>
</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-19T01:31:38.001963" elapsed="0.000459"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:31:38.002835" level="INFO">index=49
host=10.30.171.206
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-19T01:31:38.002940" level="INFO">${karaf_connection_object} = index=49
host=10.30.171.206
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-19T01:31:38.002706" elapsed="0.000261"/>
</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-19T01:31:38.003146" elapsed="0.002351"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:31:38.005930" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:31:48.069365" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:31:38.005663" elapsed="10.065331">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:31:48.085976" elapsed="0.000878"/>
</kw>
<kw name="Open 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-19T01:31:48.087022" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:31:48.087388" 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-19T01:31:48.072889" elapsed="0.014655"/>
</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-19T01:31:48.071862" elapsed="0.015729"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:31:27.989542" elapsed="20.098136">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:31:48.088068" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.088147" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:31:07.974621" elapsed="40.113642">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:31:48.088378" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:31:48.088423" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:31:07.969767" elapsed="40.118680"/>
</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-19T01:31:48.088885" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.088627" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.088606" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:31:07.969631" elapsed="40.119364"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:31:07.720926" elapsed="40.368119"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:31:07.718585" elapsed="40.370521"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:31:07.713747" elapsed="40.375416"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:07.713328" elapsed="40.375880"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:31:07.710562" elapsed="40.378702"/>
</kw>
<kw name="Verify_Keyword_Does_Not_Fail_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Confirm_Keyword_Fails_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Verify_Contexted_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Contexted_Constant_On_Active_Nodes" owner="DrbCommons">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.096500" elapsed="0.000316"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.103193" 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-19T01:31:48.102856" elapsed="0.000369"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:31:48.103273" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:31:48.103427" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:31:48.102512" elapsed="0.000940"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.103996" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.103610" elapsed="0.000413"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.136659" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.136286" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.137562" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.137199" elapsed="0.000430">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.137723" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.136849" elapsed="0.000898"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.138331" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.137908" elapsed="0.000450"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.138658" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:31:48.138826" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:31:48.138516" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.139275" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.139004" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.140622" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.140181" elapsed="0.000502"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.141204" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.140841" elapsed="0.000389"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.142384" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:31:48.141665" elapsed="0.000815"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:31:48.143901" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.143628" elapsed="0.000323"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:31:48.144048" elapsed="0.000064"/>
</return>
<msg time="2026-04-19T01:31:48.144377" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:31:48.142908" elapsed="0.001537"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.144667" elapsed="0.000498"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:31:48.141483" elapsed="0.003747"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:31:48.141278" elapsed="0.004039"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:31:48.145364" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:31:48.145523" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:31:48.139819" elapsed="0.005729"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.139385" elapsed="0.006194"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.145747" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.145603" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.139366" elapsed="0.006499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.146470" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.146009" elapsed="0.000488"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.146546" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:31:48.135649" elapsed="0.011019"/>
</kw>
<msg time="2026-04-19T01:31:48.146721" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.123564" elapsed="0.023209"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.158889" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.170689" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.182426" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.182619" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.182791" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.183182" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.183010" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:31:48.182995" elapsed="0.000272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.183404" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.183569" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.183730" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:31:48.182966" elapsed="0.000818"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.182865" elapsed="0.000945"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.183950" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.184041" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:31:48.184155" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:31:48.119475" elapsed="0.064706"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.208230" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.207835" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.209087" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.208745" elapsed="0.000408">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.209246" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.208417" elapsed="0.000854"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.209812" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.209430" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.210149" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:31:48.210279" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:31:48.209994" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.210705" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.210459" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:31:48.211157" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.210825" elapsed="0.000397"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.211707" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.211391" elapsed="0.000342"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.211248" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.210805" elapsed="0.000984"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.212511" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.211931" elapsed="0.000609"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.212590" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:31:48.207222" elapsed="0.005493"/>
</kw>
<msg time="2026-04-19T01:31:48.212768" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.194931" elapsed="0.017889"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.224757" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.236581" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.248411" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.248604" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.248778" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.249149" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.248994" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:31:48.248978" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.249366" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.249530" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.249692" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:31:48.248950" elapsed="0.000796"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.248852" elapsed="0.000919"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.249912" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.249987" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:31:48.250123" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:31:48.194088" elapsed="0.056064"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.251403" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.251162" elapsed="0.000304">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.251558" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.250801" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.251900" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.251652" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.252455" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.252164" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.251981" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.251634" elapsed="0.000902"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.254976" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.252682" elapsed="0.002321"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:31:48.255071" elapsed="0.000050"/>
</return>
<msg time="2026-04-19T01:31:48.255252" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:31:48.250481" elapsed="0.004797"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.256862" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.256547" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.257365" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.257120" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.257808" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.257563" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.258258" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.257999" elapsed="0.000303"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:31:48.259132" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:31:48.258904" elapsed="0.000260"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:31:48.259501" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:31:48.259326" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.259670" elapsed="0.000202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.260287" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.260040" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:31:48.260378" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:31:48.260532" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:31:48.258499" elapsed="0.002058"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:31:48.271772" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node08fb6oqnaf2dd1d6e2hheaunzp0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:31:48.271906" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:31:48.272016" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:31:48.262645" elapsed="0.009418"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.260627" elapsed="0.011483"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.272287" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.272136" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.260608" elapsed="0.011767"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.275767" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.273409" elapsed="0.002430"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.273188" elapsed="0.002701"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.273169" elapsed="0.002756"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.279734" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.276331" elapsed="0.003469"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.276002" elapsed="0.003848"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.275979" elapsed="0.003905"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.280648" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.280125" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.281132" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.280784" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.281891" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.281471" elapsed="0.000457"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.281250" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.280758" elapsed="0.001250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.282801" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.282292" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.283294" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.282937" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.284053" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.283624" elapsed="0.000468"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.283409" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.282911" elapsed="0.001260"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.284377" elapsed="0.000481"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:31:48.285486" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.285101" elapsed="0.000421"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.285732" elapsed="0.002874"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:31:48.272734" elapsed="0.015934"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:31:48.288849" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:31:48.288742" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.288722" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.289094" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.289164" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:31:48.291396" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:31:48.255601" elapsed="0.035824"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.291495" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:31:48.291648" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:31:48.108635" elapsed="0.183039"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.292008" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.291777" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.291760" elapsed="0.000357"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.292150" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:31:48.292298" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-1&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:31:48.104291" elapsed="0.188034"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:31:48.292819" level="INFO">${xml} = &lt;Element 'output' at 0x7826f72b6840&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:31:48.292490" elapsed="0.000356"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:31:48.293305" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:31:48.292998" elapsed="0.000333"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:31:48.293379" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:31:48.293525" level="INFO">${constant} = constant-1</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:31:48.102082" elapsed="0.191468"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:31:48.293745" elapsed="0.000372"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:31:48.294167" elapsed="0.000029"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:31:48.097661" elapsed="0.196629"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.097141" elapsed="0.197183"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.294534" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.294349" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.097124" elapsed="0.197489"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:31:48.097091" elapsed="0.197547"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.300672" level="INFO">${session} = ClusterManagement__session_2</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-19T01:31:48.300370" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:31:48.300746" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:31:48.300893" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:31:48.300002" elapsed="0.000915"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.301473" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.301091" elapsed="0.000409"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.334381" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.333991" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.335299" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.334896" elapsed="0.000474">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.335463" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.334567" elapsed="0.000920"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.336046" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.335649" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.336372" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:31:48.336509" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:31:48.336233" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.336932" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.336686" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.338161" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.337694" elapsed="0.000529"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.338727" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.338379" elapsed="0.000374"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.339918" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:31:48.339199" elapsed="0.000818"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:31:48.341455" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.341183" elapsed="0.000321"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:31:48.341587" elapsed="0.000064"/>
</return>
<msg time="2026-04-19T01:31:48.341919" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:31:48.340481" elapsed="0.001507"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.342269" elapsed="0.000469"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:31:48.338989" elapsed="0.003816"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:31:48.338802" elapsed="0.004092"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:31:48.343139" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:31:48.343302" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:31:48.337348" elapsed="0.005979"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.337061" elapsed="0.006299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.343531" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.343385" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.337039" elapsed="0.006569"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.344288" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.343745" elapsed="0.000570"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.344364" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:31:48.333374" elapsed="0.011111"/>
</kw>
<msg time="2026-04-19T01:31:48.344538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.321147" elapsed="0.023442"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.356807" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.368824" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.380691" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.380894" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.381084" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.381464" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.381319" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:31:48.381303" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.381683" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.381846" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.382009" elapsed="0.000036"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:31:48.381271" elapsed="0.000809"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.381165" elapsed="0.000990"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.382303" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.382381" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:31:48.382501" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:31:48.316994" elapsed="0.065534"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.406492" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.406109" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.407415" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.407007" elapsed="0.000479">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.407581" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.406677" elapsed="0.000928"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.408179" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.407768" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.408501" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:31:48.408648" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:31:48.408364" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.409090" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.408829" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:31:48.409494" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.409206" elapsed="0.000346"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.410051" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.409717" elapsed="0.000361"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.409576" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.409187" elapsed="0.000947"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.410824" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.410274" elapsed="0.000579"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.410902" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:31:48.405487" elapsed="0.005562"/>
</kw>
<msg time="2026-04-19T01:31:48.411107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.393237" elapsed="0.017923"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.423307" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.435221" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.447222" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.447420" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.447591" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.448099" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.447815" elapsed="0.000343"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:31:48.447800" elapsed="0.000382"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.448318" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.448484" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.448648" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:31:48.447770" elapsed="0.000933"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.447668" elapsed="0.001060"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.448869" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.448944" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T01:31:48.449085" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:31:48.392355" elapsed="0.056759"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.450372" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.450124" elapsed="0.000313">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.450528" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.449768" elapsed="0.000785"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.450910" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.450660" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.451485" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.451194" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.450991" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.450640" elapsed="0.000927"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.453825" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.451714" elapsed="0.002138"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:31:48.453903" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:31:48.454071" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:31:48.449444" elapsed="0.004653"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.455634" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.455389" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.456080" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.455827" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.456516" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.456274" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.456952" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.456707" elapsed="0.000288"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:31:48.457807" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:31:48.457611" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:31:48.458174" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:31:48.457984" elapsed="0.000216"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.458348" elapsed="0.000204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.458955" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.458705" elapsed="0.000308"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:31:48.459074" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:31:48.459232" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:31:48.457207" elapsed="0.002051"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:31:48.474514" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01soeafhtayny41q9azelf5uknm0.node0', 'Content-Length': '282', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:31:48.474656" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '114'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T01:31:48.474834" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:31:48.461527" elapsed="0.013376"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.459330" elapsed="0.015756"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.475528" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.475154" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.459311" elapsed="0.016426"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.483686" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.478287" elapsed="0.005502"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.477722" elapsed="0.006164"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.477677" elapsed="0.006235"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.486472" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.484209" elapsed="0.002309"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.483971" elapsed="0.002580"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.483953" elapsed="0.002622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.487181" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.486746" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.487511" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.487279" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.488062" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.487749" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.487592" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.487260" elapsed="0.000885"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.488656" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.488297" elapsed="0.000386"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.488983" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.488756" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.489527" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.489234" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.489078" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.488738" elapsed="0.000870"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.489752" elapsed="0.000362"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:31:48.490560" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.490273" elapsed="0.000313"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.490735" elapsed="0.002305"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:31:48.476624" elapsed="0.016480"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:31:48.493285" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T01:31:48.493176" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.493157" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.493518" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.493585" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:31:48.495832" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:31:48.454417" elapsed="0.041443"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.495932" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:31:48.496103" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:31:48.306214" elapsed="0.189917"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.496472" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.496237" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.496219" elapsed="0.000380"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.496633" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:31:48.496784" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target"&gt;&lt;constant&gt;constant-2&lt;/constant&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:31:48.301749" elapsed="0.195062"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T01:31:48.497318" level="INFO">${xml} = &lt;Element 'output' at 0x7826f72b61b0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T01:31:48.496969" elapsed="0.000377"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T01:31:48.497796" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T01:31:48.497500" elapsed="0.000323"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:31:48.497871" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:31:48.498037" level="INFO">${constant} = constant-2</msg>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="PASS" start="2026-04-19T01:31:48.299571" elapsed="0.198494"/>
</kw>
<kw name="Should Be Equal As Strings" owner="BuiltIn">
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<arg>${constant}</arg>
<doc>Fails if objects are unequal after converting them to strings.</doc>
<status status="PASS" start="2026-04-19T01:31:48.498221" elapsed="0.000351"/>
</kw>
<return>
<value>${constant}</value>
<status status="PASS" start="2026-04-19T01:31:48.498620" elapsed="0.000028"/>
</return>
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="PASS" start="2026-04-19T01:31:48.295136" elapsed="0.203605"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.294817" elapsed="0.203958"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.499000" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.498800" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.294802" elapsed="0.204294"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:31:48.294772" elapsed="0.204353"/>
</iter>
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.499597" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.499312" elapsed="0.000343"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<kw name="Get_Contexted_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.505508" level="INFO">${session} = ClusterManagement__session_3</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-19T01:31:48.505208" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:31:48.505581" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:31:48.505729" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:31:48.504845" elapsed="0.000908"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.506316" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.505910" elapsed="0.000433"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.539047" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.538634" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.539956" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.539570" elapsed="0.000482">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.540147" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.539236" elapsed="0.000935"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.540713" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.540332" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.541094" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:31:48.541245" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:31:48.540896" elapsed="0.000374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.541669" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.541423" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.542894" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.542448" elapsed="0.000508"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.544959" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.543160" elapsed="0.001827"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.546222" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:31:48.545461" elapsed="0.000863"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:31:48.547798" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.547519" elapsed="0.000331"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:31:48.548094" elapsed="0.000072"/>
</return>
<msg time="2026-04-19T01:31:48.548449" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:31:48.546781" elapsed="0.001740"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.548750" elapsed="0.000498"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:31:48.545269" elapsed="0.004046"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:31:48.545071" elapsed="0.004337"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:31:48.549456" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:31:48.549615" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:31:48.542101" elapsed="0.007539"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.541786" elapsed="0.007886"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.549843" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.549697" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.541767" elapsed="0.008153"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.550549" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.550096" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.550625" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:31:48.538007" elapsed="0.012740"/>
</kw>
<msg time="2026-04-19T01:31:48.550800" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.525700" elapsed="0.025156"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.562967" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.574923" elapsed="0.000037"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.586866" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.587086" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.587266" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.587635" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.587494" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:31:48.587476" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.587851" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.588017" elapsed="0.000035"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.588198" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:31:48.587445" elapsed="0.000807"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.587343" elapsed="0.000935"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.588421" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.588496" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:31:48.588608" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:31:48.521621" elapsed="0.067012"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.612813" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.612433" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.613707" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.613351" elapsed="0.000427">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.613872" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.612999" elapsed="0.000898"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.614466" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.614078" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.614794" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:31:48.614984" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:31:48.614651" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.615442" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.615191" elapsed="0.000341"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:31:48.615894" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.615602" elapsed="0.000351"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.616460" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.616140" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.615978" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.615582" elapsed="0.000963"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.617259" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:31:48.616691" elapsed="0.000598"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:31:48.617340" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:31:48.611807" elapsed="0.005659"/>
</kw>
<msg time="2026-04-19T01:31:48.617521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.599412" elapsed="0.018162"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.629629" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.641680" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.653630" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.653823" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.653997" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.654373" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.654232" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:31:48.654217" elapsed="0.000237"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.654591" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.654754" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.655118" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:31:48.654187" elapsed="0.000987"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.654085" elapsed="0.001115"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.655343" elapsed="0.000059"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:31:48.655461" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T01:31:48.655587" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-com...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:31:48.598517" elapsed="0.057098"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:31:48.656898" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.656639" elapsed="0.000326">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:31:48.657074" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:31:48.656294" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:31:48.657418" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:31:48.657172" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.657967" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:31:48.657672" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-19T01:31:48.657500" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T01:31:48.657153" elapsed="0.000917"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.660741" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:31:48.658221" elapsed="0.002547"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:31:48.660821" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:31:48.660979" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/get_contexted_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:31:48.655948" elapsed="0.005056"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.662567" level="INFO">/rests/operations/odl-mdsal-lowlevel-target:get-contexted-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.662315" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.663046" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:target" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.662764" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.663494" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.663247" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.663930" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.663687" elapsed="0.000287"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:31:48.664805" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:31:48.664605" elapsed="0.000226"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:31:48.665172" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:31:48.664981" elapsed="0.000216"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:31:48.665343" elapsed="0.000205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:31:48.665948" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:31:48.665701" elapsed="0.000289"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:31:48.666048" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:31:48.666205" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:31:48.664201" elapsed="0.002029"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:33:53.751145" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.668613" elapsed="125.087771">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:31:48.666302" elapsed="125.090362">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.757316" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.756826" elapsed="0.000618"/>
</branch>
<status status="FAIL" start="2026-04-19T01:31:48.666283" elapsed="125.091204">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.758215" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.758429" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.758371" elapsed="0.000117"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:33:53.758344" elapsed="0.000176"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.758722" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.758817" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.661349" elapsed="125.097633">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.759126" elapsed="0.000024"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.510910" elapsed="125.248365">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.759700" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.759447" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:33:53.759422" elapsed="0.000407"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.759875" elapsed="0.000021"/>
</return>
<var>${text}</var>
<arg>${GET_CONTEXTED_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.506590" elapsed="125.253433">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.760291" elapsed="0.000031"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${constant}</var>
<arg>${xml}</arg>
<arg>xpath=constant</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.760524" elapsed="0.000031"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.760618" elapsed="0.000022"/>
</return>
<var>${constant}</var>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke get-contexted-constant rpc on the requested member and return the registered constant. The argument context is only the string part
of the whole instance identifier. The ${explicit_status_codes} is a list of http status codes for which the rpc call is considered as passed and is used for
calls with expected failures on odl's side, such as calling the rpc on isolated node etc.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.504415" elapsed="125.256356">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${constant}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.761104" elapsed="0.000055"/>
</kw>
<return>
<value>${constant}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.761221" elapsed="0.000017"/>
</return>
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.499850" elapsed="125.261476">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:31:48.499679" elapsed="125.261709">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:31:48.499297" elapsed="125.262184">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:31:48.499266" elapsed="125.262273">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="FAIL" start="2026-04-19T01:31:48.096886" elapsed="125.664714">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>tolerance=0</arg>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.096169" elapsed="125.665534">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:33:53.761900" level="FAIL">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.095511" elapsed="125.666499">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:33:53.762130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${tolerance}</arg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${tolerance}</arg>
<arg>1s</arg>
<arg>Verify_Contexted_Constant_On_Active_Nodes</arg>
<arg>tolerance=0</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.093870" elapsed="125.668433"/>
</kw>
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="${index} in ${registered_indices}">
<kw name="Verify_Contexted_Constant_On_Registered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the rpc response comes from the local node.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.763087" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.762802" elapsed="0.000358"/>
</branch>
<branch type="ELSE">
<kw name="Verify_Contexted_Constant_On_Unregistered_Node" owner="DrbCommons">
<arg>${index}</arg>
<doc>Verify that the response comes from other nodes with rpc registered. Verification
passes for registered nodes too.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.763456" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.763201" elapsed="0.000323"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:33:53.762738" elapsed="0.000825"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T01:33:53.762679" elapsed="0.000949"/>
</iter>
<var>${index}</var>
<value>@{active_indices}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.762510" elapsed="0.001172"/>
</for>
<doc>Verify that the rpc response comes from the local node for every node in the list.
As a workaround for Bug 8430, ${tolerance} can be set as duration (number of seconds) for WUKS.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.093525" elapsed="125.670334">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:33:53.763981" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:33:53.764031" level="INFO">${output} = Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read ti...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:48.092966" elapsed="125.671105"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:33:53.764274" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:33:53.764146" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.764127" elapsed="0.000231"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.764503" elapsed="0.000022"/>
</kw>
<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-19T01:33:53.764671" elapsed="0.000021"/>
</kw>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="PASS" start="2026-04-19T01:31:48.092635" elapsed="125.672157"/>
</kw>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:31:48.092048" elapsed="125.672812"/>
</kw>
<msg time="2026-04-19T01:33:53.764910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:31:48.091670" elapsed="125.673289"/>
</kw>
<arg>20s</arg>
<arg>3s</arg>
<arg>DrbCommons.Verify_Contexted_Constant_On_Active_Nodes</arg>
<doc>Some Keywords need several tries to finally fail, this keyword passes if and only if the failure ultimately happens.</doc>
<status status="PASS" start="2026-04-19T01:31:48.091345" elapsed="125.673723"/>
</kw>
<msg time="2026-04-19T01:33:53.765169" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:33:53.765213" level="INFO">${output} = Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read ti...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:31:48.090920" elapsed="125.674318"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.765415" elapsed="0.000281"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.765308" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.765291" elapsed="0.000461"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.766302" level="INFO">${output} = Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read ti...</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:33:53.765894" elapsed="0.000435"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.766822" level="FAIL">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-19T01:33:53.766477" elapsed="0.000407">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.090530" elapsed="125.676453">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:33:53.767041" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Invert_Failure</arg>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.089811" elapsed="125.677301"/>
</kw>
<arg>20s</arg>
<arg>3s</arg>
<arg>DrbCommons.Verify_Contexted_Constant_On_Active_Nodes</arg>
<doc>Some positive checks report false success for a short time. This keyword verifies no failure does happen within timeout period.
This implementation needs more complicated logic than, Verify_Keyword_Never_Passes_Within_Timeout,
so use that keyword in case you have a negative check handy.</doc>
<status status="FAIL" start="2026-04-19T01:31:48.089474" elapsed="125.677733">Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.768507" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.768127" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.768109" elapsed="0.000485"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:33:53.768744" elapsed="0.000371"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.774122" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:33:53.773674" elapsed="0.000476"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:33:53.774369" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.774225" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.774207" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.774869" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:33:53.774573" elapsed="0.000322"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:33:53.775336" level="INFO">${reference} = controller_clustering_ask_txt_Action_Provider_Partition_And_Heal_Invoke_Rpc_On_Each_Node_Again</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:33:53.775074" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:33:53.775688" level="INFO">${reference} = controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:33:53.775516" elapsed="0.000197"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.776251" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:33:53.775862" elapsed="0.000416"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.776733" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:33:53.776428" elapsed="0.000333"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.777385" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"

Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:33:53.776910" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.777880" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:33:53.777586" elapsed="0.000385"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:33:53.773367" elapsed="0.004664"/>
</kw>
<status status="PASS" start="2026-04-19T01:33:53.767897" elapsed="0.010203"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:33:53.767521" elapsed="0.010622"/>
</kw>
<doc>Invoke rpc get-contexted-constant on every node. When requested on the node with
local instance the local value is expected. If invoked on the node with no local instance, any remote
value is expected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:31:07.709743" elapsed="166.068440">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_action_provider_partition_and_heal_invoke_rpc_on_each_node_again&amp;order=bug_status"

Keyword 'Verify_Contexted_Constant_On_Active_Nodes' failed after retrying for 10 seconds. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s8-t7" name="Unregister_Rpc_On_Each_Node" line="69">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:33:53.782363" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:33:53.782099" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.783621" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.783510" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.783491" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.788496" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.788390" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.788372" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.789563" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:33:53.789172" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.790063" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:33:53.789744" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:33:53.790136" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:33:53.790289" level="INFO">${index_list} = [1, 2, 3]</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-19T01:33:53.788785" elapsed="0.001529"/>
</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-19T01:33:53.795651" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.795543" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.795523" 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-19T01:33:53.796874" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.796768" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.796750" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:33:53.797445" 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-19T01:33:53.797105" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:33:53.797855" 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-19T01:33:53.797628" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:33:53.836727" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:33:53.798387" elapsed="0.038449"/>
</kw>
<msg time="2026-04-19T01:33:53.837009" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:33:53.837081" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:33:53.798040" elapsed="0.039079"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:33:53.883804" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:33:53.837635" elapsed="0.046384"/>
</kw>
<msg time="2026-04-19T01:33:53.884238" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:33:53.884285" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:33:53.837297" elapsed="0.047026"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.884687" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.884421" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.884392" elapsed="0.000378"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.885264" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:33:53.884908" elapsed="0.000434"/>
</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-19T01:33:53.885624" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.885409" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.885390" elapsed="0.000313"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:33:53.885738" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:33:53.887351" elapsed="0.000883"/>
</kw>
<kw name="Open 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-19T01:33:53.888528" elapsed="0.000544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:33:53.889356" elapsed="0.000412"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:33:53.886604" elapsed="0.003272"/>
</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-19T01:33:53.886053" elapsed="0.003889"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:33:53.796465" elapsed="0.093593"/>
</kw>
<msg time="2026-04-19T01:33:53.890154" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:33:53.890200" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:33:53.795865" elapsed="0.094373"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:33:53.890422" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:33:53.890315" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.890297" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.890934" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.891291" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.891365" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:33:53.795172" elapsed="0.096300"/>
</kw>
<msg time="2026-04-19T01:33:53.891566" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:33:53.891610" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:33:53.790671" elapsed="0.100976"/>
</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-19T01:33:53.891968" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.891723" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.891705" elapsed="0.000358"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:33:53.790535" elapsed="0.101554"/>
</iter>
<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-19T01:33:53.897513" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.897404" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.897385" 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-19T01:33:53.898769" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.898660" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.898642" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:33:53.899343" level="INFO">${karaf_connection_index} = 12</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-19T01:33:53.899006" elapsed="0.000364"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:33:53.899749" 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-19T01:33:53.899527" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:33:53.935838" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:33:53.900288" elapsed="0.035662"/>
</kw>
<msg time="2026-04-19T01:33:53.936154" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:33:53.936203" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:33:53.899932" elapsed="0.036308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:33:53.976952" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:33:53.936758" elapsed="0.040326"/>
</kw>
<msg time="2026-04-19T01:33:53.977254" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:33:53.977301" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:33:53.936413" elapsed="0.040925"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.977636" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.977415" elapsed="0.000276"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.977395" elapsed="0.000319"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:33:53.978183" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "R "p "c "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:33:53.977850" elapsed="0.000412"/>
</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-19T01:33:53.978540" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.978328" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.978310" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:33:53.978648" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:33:53.980311" elapsed="0.000862"/>
</kw>
<kw name="Open 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-19T01:33:53.981467" elapsed="0.000498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:33:53.982273" elapsed="0.000393"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:33:53.979626" elapsed="0.003147"/>
</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-19T01:33:53.978899" elapsed="0.003941"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:33:53.898318" elapsed="0.084622"/>
</kw>
<msg time="2026-04-19T01:33:53.983058" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:33:53.983106" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:33:53.897730" elapsed="0.085415"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:33:53.983329" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:33:53.983222" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.983203" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.983796" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:33:53.984220" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.984295" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:33:53.896868" elapsed="0.087535"/>
</kw>
<msg time="2026-04-19T01:33:53.984495" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:33:53.984539" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "A "c "t "i "o "n "[C "P "r "o "v "i "d "e "r "[C "P "a "r "t "i "t "i "o "n "[C "A "n...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:33:53.892355" elapsed="0.092221"/>
</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-19T01:33:53.984899" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:33:53.984651" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.984634" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:33:53.892217" elapsed="0.092781"/>
</iter>
<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-19T01:33:53.990457" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.990349" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.990330" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:33:53.991704" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:33:53.991597" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:33:53.991580" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:33:53.992270" level="INFO">${karaf_connection_index} = 49</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-19T01:33:53.991908" elapsed="0.000390"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:33:53.992667" 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-19T01:33:53.992452" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:34:03.993910" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:33:53.993193" elapsed="10.001801">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:34:03.995311" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:34:03.995366" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:33:53.992846" elapsed="10.002545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:34:13.996878" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:34:03.996175" elapsed="10.001682">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:34:13.998195" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:34:13.998248" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:34:03.995664" elapsed="10.002610"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:34:13.999706" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</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-19T01:34:13.998773" elapsed="0.001014">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:34:13.998398" elapsed="0.001465">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:34:13.998366" elapsed="0.001533">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</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-19T01:34:14.000084" elapsed="0.000024"/>
</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-19T01:34:14.000610" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:14.000459" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:34:14.000158" elapsed="0.000534"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:34:14.000729" 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-19T01:34:14.002425" elapsed="0.001005"/>
</kw>
<kw name="Open 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-19T01:34:14.003843" elapsed="0.000615"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:14.004753" elapsed="0.000457"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:14.001663" elapsed="0.003662"/>
</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-19T01:34:14.001059" elapsed="0.004334"/>
</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-19T01:33:53.991298" elapsed="20.014182">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T01:34:14.005588" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:34:14.005633" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Action Provider Partition And Heal.Unregister_Rpc_On_Each_Node"</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-19T01:33:53.990669" elapsed="20.014989"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:34:14.005847" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:14.005735" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:14.005716" elapsed="0.000198"/>
</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-19T01:34:14.006747" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:14.006637" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:14.006618" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:14.007224" 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-19T01:34:14.007334" 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-19T01:34:14.006994" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:14.007833" level="INFO">{1: 10, 2: 12, 3: 49}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:14.007551" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:14.008299" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:14.008046" 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-19T01:34:14.008868" elapsed="0.000299"/>
</kw>
<msg time="2026-04-19T01:34:14.009268" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:34:14.009315" level="INFO">${old_connection_index} = 49</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-19T01:34:14.008503" elapsed="0.000836"/>
</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-19T01:34:14.010195" elapsed="0.000211"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:34:24.012466" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:34:14.011290" elapsed="10.002384">No match found for '
' in 10 seconds
Output:
.</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-19T01:34:14.010573" elapsed="10.003250"/>
</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-19T01:34:24.014868" elapsed="0.000508"/>
</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-19T01:34:24.014243" elapsed="0.001223"/>
</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-19T01:34:14.009647" elapsed="10.005869"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:14.009416" elapsed="10.006152"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:14.009398" elapsed="10.006206"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:24.016613" level="INFO">${ip_address} = 10.30.171.206</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-19T01:34:24.016284" elapsed="0.000357"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:34:24.016694" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:34:24.016854" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:34:24.015865" elapsed="0.001015"/>
</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-19T01:34:24.017279" elapsed="0.000435"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:24.018161" level="INFO">index=54
host=10.30.171.206
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-19T01:34:24.018270" level="INFO">${karaf_connection_object} = index=54
host=10.30.171.206
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-19T01:34:24.017986" elapsed="0.000312"/>
</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-19T01:34:24.018447" elapsed="0.002639"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:34:24.021516" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:34:34.084740" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:24.021251" elapsed="10.064412">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:34.100453" elapsed="0.000531"/>
</kw>
<kw name="Open 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-19T01:34:34.101168" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:34.101495" 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-19T01:34:34.086996" elapsed="0.014654"/>
</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-19T01:34:34.086227" elapsed="0.015469"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:34:14.006340" elapsed="20.095444">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:34.102176" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.102255" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:33:53.989975" elapsed="40.112394">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:34:34.102492" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:34:34.102536" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:33:53.985275" elapsed="40.117285"/>
</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-19T01:34:34.102939" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.102677" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.102655" elapsed="0.000362"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:33:53.985139" elapsed="40.118178"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:33:53.790366" elapsed="40.312990"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:33:53.788017" elapsed="40.315401"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:33:53.783219" elapsed="40.320259"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:33:53.782776" elapsed="40.320750"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:33:53.779338" elapsed="40.324247"/>
</kw>
<kw name="Unregister_Action_On_Nodes" owner="DrbCommons">
<for flavor="IN">
<iter>
<kw name="Unregister_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.105874" 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-19T01:34:34.105567" elapsed="0.000333"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:34:34.105946" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:34:34.106117" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:34:34.105215" elapsed="0.000927"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.106946" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.106304" elapsed="0.001046"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.140489" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.140018" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.141392" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:34:34.141011" elapsed="0.000557">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:34:34.141838" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:34:34.140680" elapsed="0.001184"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.142498" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:34:34.142046" elapsed="0.000479"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.142874" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:34:34.143059" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:34:34.142684" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.143516" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.143241" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.145135" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.144416" elapsed="0.000865"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.146266" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.145566" elapsed="0.000743"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.147728" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:34:34.147236" elapsed="0.000529"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:34:34.148917" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.148686" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:34:34.148996" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T01:34:34.149450" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:34:34.148241" elapsed="0.001245"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.149916" elapsed="0.000433"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:34:34.146880" elapsed="0.003527"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:34:34.146455" elapsed="0.004064"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:34:34.150730" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:34:34.151051" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:34:34.143972" elapsed="0.007107"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.143629" elapsed="0.007484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.151285" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.151138" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.143610" elapsed="0.007753"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.151988" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.151502" elapsed="0.000514"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.152083" elapsed="0.000034"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:34:34.139404" elapsed="0.012826"/>
</kw>
<msg time="2026-04-19T01:34:34.152335" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.127142" elapsed="0.025245"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.164664" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.176591" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.188551" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.188744" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.188915" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.189289" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.189148" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:34:34.189134" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.189501" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.189662" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.189822" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:34:34.189104" elapsed="0.000770"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.188988" elapsed="0.000912"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.190055" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.190132" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:34:34.190241" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:34:34.122992" elapsed="0.067275"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.214193" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.213720" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.215075" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:34:34.214744" elapsed="0.000528">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:34:34.215690" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:34:34.214380" elapsed="0.001346"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.216717" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:34:34.215954" elapsed="0.000802"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.217222" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:34:34.217405" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:34:34.216976" elapsed="0.000468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.218115" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.217722" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:34:34.218747" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.218276" elapsed="0.000556"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.219783" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.219099" elapsed="0.000712"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.218867" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.218250" elapsed="0.001619"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.220776" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.220012" elapsed="0.000794"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.220856" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:34:34.213110" elapsed="0.007873"/>
</kw>
<msg time="2026-04-19T01:34:34.221053" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.200938" elapsed="0.020166"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.233073" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.245060" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.256945" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.257184" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.257356" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.257710" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.257571" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:34:34.257556" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.257923" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.258102" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.258266" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:34:34.257528" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.257429" elapsed="0.000917"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.258486" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.258561" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:34:34.258683" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:34:34.200097" elapsed="0.058613"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.259985" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:34:34.259749" elapsed="0.000318">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:34:34.260160" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:34:34.259413" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.260499" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.260254" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.261051" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.260746" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.260579" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.260235" elapsed="0.000899"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.263440" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:34:34.261280" elapsed="0.002188"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:34:34.263519" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:34:34.263673" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:34:34.259062" elapsed="0.004636"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.265218" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.264954" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.265643" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.265409" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.266090" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.265834" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.266566" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.266325" elapsed="0.000284"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:34.267442" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:34:34.267224" elapsed="0.000245"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:34:34.267803" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:34:34.267627" elapsed="0.000202"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.267973" elapsed="0.000219"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.268591" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.268344" elapsed="0.000301"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:34:34.268688" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:34:34.268845" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:34:34.266805" elapsed="0.002065"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:34:34.302455" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node08fb6oqnaf2dd1d6e2hheaunzp0.node0', 'Content-Length': '283', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:34:34.302509" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T01:34:34.302613" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:34:34.272531" elapsed="0.030108"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.270446" elapsed="0.032239"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.302861" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.302711" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.268923" elapsed="0.034024"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.306352" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.304014" elapsed="0.002381"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.303798" elapsed="0.002632"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.303779" elapsed="0.002677"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.309076" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.306728" elapsed="0.002395"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.306510" elapsed="0.002647"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.306494" elapsed="0.002688"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.309731" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.309346" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.310075" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.309827" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.310616" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.310313" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.310156" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.309809" elapsed="0.000890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.311229" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.310853" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.311553" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.311325" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.312137" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.311818" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.311662" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.311306" elapsed="0.000955"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.312414" elapsed="0.000352"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:34:34.313229" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.312926" elapsed="0.000330"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.313408" elapsed="0.002297"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:34:34.303338" elapsed="0.012432"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:34:34.315952" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:34:34.315844" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.315825" elapsed="0.000235"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.316207" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.316273" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:34:34.318457" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:34:34.264018" elapsed="0.054466"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.318553" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:34:34.318706" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:34:34.112086" elapsed="0.206644"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.319081" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.318832" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.318815" elapsed="0.000359"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.319207" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:34:34.107615" elapsed="0.211711"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke unregister-bound-constant rpc and unregister get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T01:34:34.104793" elapsed="0.214592"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.319937" elapsed="0.000246"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-1', 'constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T01:34:34.319596" elapsed="0.000646"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.320737" elapsed="0.000187"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.321088" elapsed="0.000185"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:34:34.321418" elapsed="0.000150"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:34:34.321711" elapsed="0.000149"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T01:34:34.320430" elapsed="0.001484"/>
</kw>
<arg>${index}</arg>
<doc>Unregister routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:34:34.104390" elapsed="0.217573"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:34:34.104219" elapsed="0.217773"/>
</iter>
<iter>
<kw name="Unregister_Action_And_Update_Possible_Constants" owner="DrbCommons">
<kw name="Unregister_Bound_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.323719" level="INFO">${session} = ClusterManagement__session_2</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-19T01:34:34.323408" elapsed="0.000373"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:34:34.323829" elapsed="0.000218"/>
</return>
<msg time="2026-04-19T01:34:34.324176" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:34:34.323072" elapsed="0.001130"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.324750" level="INFO">&amp;{mapping} = { CONTEXT=context }</msg>
<var>&amp;{mapping}</var>
<arg>CONTEXT=${context}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.324364" elapsed="0.000414"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.357851" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.357404" elapsed="0.000476"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.358738" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:34:34.358402" elapsed="0.000520">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:34:34.359216" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:34:34.358062" elapsed="0.001180"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.359893" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:34:34.359406" elapsed="0.000515"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.360257" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:34:34.360412" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:34:34.360095" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.360858" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.360589" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.362470" level="INFO">mapping: {'CONTEXT': 'context'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.361758" elapsed="0.000860"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.363625" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.362910" elapsed="0.000758"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.365110" level="INFO">${value} = context</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:34:34.364601" elapsed="0.000547"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:34:34.366374" level="INFO">${encoded} = context</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.366146" elapsed="0.000256"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:34:34.366454" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:34:34.366762" level="INFO">${encoded_value} = context</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:34:34.365674" elapsed="0.001126"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.367218" elapsed="0.000336"/>
</kw>
<var name="${key}">CONTEXT</var>
<var name="${value}">context</var>
<status status="PASS" start="2026-04-19T01:34:34.364266" elapsed="0.003344"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:34:34.363836" elapsed="0.003891"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:34:34.368014" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T01:34:34.368497" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:34:34.361331" elapsed="0.007192"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.360969" elapsed="0.007586"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.368729" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.368580" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.360950" elapsed="0.007854"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.369453" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.368943" elapsed="0.000577"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.369572" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:34:34.356755" elapsed="0.012941"/>
</kw>
<msg time="2026-04-19T01:34:34.369748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.344313" elapsed="0.025484"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.382072" elapsed="0.000075"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.393910" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.405725" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.405917" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.406107" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.406465" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.406326" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:34:34.406311" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.406678" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.406840" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.407000" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:34:34.406283" elapsed="0.000802"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.406181" elapsed="0.000930"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.407254" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.407330" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:34:34.407438" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:34:34.340179" elapsed="0.067285"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.431327" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.430871" elapsed="0.000484"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.432203" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:34:34.431852" elapsed="0.000522">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:34:34.432640" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:34:34.431519" elapsed="0.001147"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.433299" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:34:34.432829" elapsed="0.000497"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.433643" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:34:34.433776" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:34:34.433484" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.434250" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='$CONTEXT']&lt;/context&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.433959" elapsed="0.000339"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:34:34.434709" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.434367" elapsed="0.000402"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.435478" level="INFO">${mapping_to_use} = {'CONTEXT': 'context'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.434935" elapsed="0.000570"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.434794" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.434348" elapsed="0.001213"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.436318" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.435703" elapsed="0.000645"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.436398" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:34:34.430265" elapsed="0.006257"/>
</kw>
<msg time="2026-04-19T01:34:34.436575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.418115" elapsed="0.018508"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.448921" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.461134" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.473157" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.473380" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.473562" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.473947" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.473792" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:34:34.473776" elapsed="0.000269"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.474186" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.474355" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.474520" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:34:34.473743" elapsed="0.000831"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.473639" elapsed="0.000961"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.474740" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.474817" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:34:34.474950" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-co...</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:34:34.417255" elapsed="0.057724"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:34:34.476309" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:34:34.476045" elapsed="0.000357">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:34:34.476497" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:34:34.475670" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.476839" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.476592" elapsed="0.000304"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.477403" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.477110" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.476919" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.476573" elapsed="0.000912"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.479757" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:34:34.477630" elapsed="0.002154"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:34:34.479836" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:34:34.479991" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_bound_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:34:34.475332" elapsed="0.004683"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.481592" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.481342" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.482090" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.481831" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.482560" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.482313" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.482990" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.482751" elapsed="0.000304"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:34.483854" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:34:34.483657" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:34:34.484227" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:34:34.484049" elapsed="0.000205"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.484429" elapsed="0.000213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.485060" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.484797" elapsed="0.000308"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:34:34.485148" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:34:34.485306" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:34:34.483253" elapsed="0.002078"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:34:34.512133" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01soeafhtayny41q9azelf5uknm0.node0', 'Content-Length': '283', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control" xmlns:odl-mdsal-lowlevel-common="tag:opendaylight.org,2017:controller:yang:lowlevel:common"&gt;
  &lt;context&gt;/odl-mdsal-lowlevel-common:rpc-context[odl-mdsal-lowlevel-common:identifier='context']&lt;/context&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:34:34.512247" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-bound-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T01:34:34.512448" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:34:34.487705" elapsed="0.024832"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.485402" elapsed="0.027237"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.513062" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.512698" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.485384" elapsed="0.027878"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.520817" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.515553" elapsed="0.005361"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.515065" elapsed="0.005927"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.514992" elapsed="0.006101"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.523836" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.521547" elapsed="0.002335"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.521223" elapsed="0.002692"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.521186" elapsed="0.002754"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.524498" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.524115" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.524839" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.524609" elapsed="0.000286"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.525387" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.525089" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.524918" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.524591" elapsed="0.000878"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.525973" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.525619" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.526366" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.526135" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.526898" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:34:34.526604" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.526450" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.526116" elapsed="0.000864"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.527144" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:34:34.527935" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.527655" elapsed="0.000306"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.528129" elapsed="0.002337"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:34:34.514058" elapsed="0.016472"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:34:34.530709" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:34:34.530603" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.530585" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.530941" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.531008" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T01:34:34.533354" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:34:34.480388" elapsed="0.052998"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.533467" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:34:34.533642" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:34:34.329347" elapsed="0.204323"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.534090" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.533791" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.533772" elapsed="0.000414"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:34:34.534219" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_BOUND_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:34:34.325025" elapsed="0.209321"/>
</kw>
<arg>${member_index}</arg>
<arg>${CONTEXT}</arg>
<doc>Invoke unregister-bound-constant rpc and unregister get-contexted-constant rpc. The argument context is only the string part
of the whole instance identifier.</doc>
<status status="PASS" start="2026-04-19T01:34:34.322653" elapsed="0.211772"/>
</kw>
<kw name="DrbCommons__Rem_Possible_Constant" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${possible_constants}</arg>
<arg>${CONSTANT_PREFIX}${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.534992" elapsed="0.000254"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove a constant from the ['constant-2'] list. The list is about to maintain
all valid constants possibly responded from the odl cluster (excluding isolated nodes).</doc>
<status status="PASS" start="2026-04-19T01:34:34.534668" elapsed="0.000639"/>
</kw>
<kw name="DrbCommons__Deregister_Index" owner="DrbCommons">
<kw name="Remove Values From List" owner="Collections">
<arg>${registered_indices}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.535845" elapsed="0.000251"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.536267" elapsed="0.000201"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${registered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:34:34.536663" elapsed="0.000169"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${nonregistered_indices}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:34:34.536978" elapsed="0.000166"/>
</kw>
<arg>${member_index}</arg>
<doc>Remove member index from the list of indices with registered rpc.
Isolated nodes are included in the list.</doc>
<status status="PASS" start="2026-04-19T01:34:34.535525" elapsed="0.001717"/>
</kw>
<arg>${index}</arg>
<doc>Unregister routed rpc on given node of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:34:34.322254" elapsed="0.215041"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:34:34.322095" elapsed="0.215231"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:34:34.104081" elapsed="0.433279"/>
</for>
<arg>${INSTALLED_RPC_MEMEBER_IDX_LIST}</arg>
<doc>Unregister global rpc on given nodes of the cluster.</doc>
<status status="PASS" start="2026-04-19T01:34:34.103826" elapsed="0.433590"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.538654" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.538272" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.538255" elapsed="0.000483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.538879" elapsed="0.000521"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.544270" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:34:34.543823" elapsed="0.000474"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T01:34:34.544513" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:34:34.544371" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.544352" elapsed="0.000240"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.544782" elapsed="0.000026"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.544961" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.545146" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.545307" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.545465" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.545623" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:34.545781" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:34:34.543521" elapsed="0.002336"/>
</kw>
<status status="PASS" start="2026-04-19T01:34:34.538064" elapsed="0.007843"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:34:34.537690" elapsed="0.008258"/>
</kw>
<doc>Inregister rpc on both nodes.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T01:33:53.778769" elapsed="40.767217"/>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T01:34:34.546858" elapsed="0.000402"/>
</kw>
<doc>DOMRpcBroker testing: RPC Action Provider Partition And Heal

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

This tests establishes that the RPC service for actions operates correctly
when faced with node failures.
This suite supports more than three node cluster setup too.</doc>
<status status="FAIL" start="2026-04-19T01:20:33.649395" elapsed="840.897904"/>
</suite>
<suite id="s1-s9" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.653631" 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-19T01:34:34.649292" elapsed="0.004389"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T01:34:34.649016" elapsed="0.004734"/>
</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-19T01:34:34.658987" 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-19T01:34:34.654835" elapsed="0.004181"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T01:34:34.659292" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:34.659176" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.659096" elapsed="0.000290"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.659890" 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-19T01:34:34.659547" elapsed="0.000386"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.660461" level="INFO">${cluster_size} = 3</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-19T01:34:34.660118" elapsed="0.000373"/>
</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-19T01:34:34.661057" elapsed="0.000424"/>
</kw>
<msg time="2026-04-19T01:34:34.661609" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:34:34.661673" level="INFO">${possibly_int_of_members} = 3</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-19T01:34:34.660662" elapsed="0.001042"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.662484" level="INFO">${int_of_members} = 3</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-19T01:34:34.661942" elapsed="0.000575"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.663617" 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-19T01:34:34.663346" elapsed="0.000299"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.664069" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:34:34.663795" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.664574" 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-19T01:34:34.664273" 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-19T01:34:34.667976" elapsed="0.000290"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.668823" level="INFO">${member_ip} = 10.30.171.9</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-19T01:34:34.668482" elapsed="0.000368"/>
</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-19T01:34:34.669007" elapsed="0.000274"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.670106" 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-19T01:34:34.669779" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:34:34.670180" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:34:34.670340" 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-19T01:34:34.669481" elapsed="0.000884"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:34:34.670979" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6e1e650&gt;, timeout=125, 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-19T01:34:34.670524" elapsed="0.000692"/>
</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-19T01:34:34.671436" elapsed="0.000197"/>
</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-19T01:34:34.667392" elapsed="0.004301"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:34:34.667138" elapsed="0.004600"/>
</iter>
<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-19T01:34:34.672862" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.673602" level="INFO">${member_ip} = 10.30.171.128</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-19T01:34:34.673261" elapsed="0.000369"/>
</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-19T01:34:34.673786" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.674839" level="INFO">${session} = ClusterManagement__session_2</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-19T01:34:34.674539" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:34:34.674922" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:34:34.675095" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T01:34:34.674228" elapsed="0.000893"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:34:34.675779" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f72ef110&gt;, timeout=125, 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-19T01:34:34.675364" elapsed="0.000519"/>
</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-19T01:34:34.676066" elapsed="0.000193"/>
</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-19T01:34:34.672289" elapsed="0.004029"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:34:34.671826" elapsed="0.004536"/>
</iter>
<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-19T01:34:34.677251" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.677952" level="INFO">${member_ip} = 10.30.171.206</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-19T01:34:34.677626" elapsed="0.000353"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:34:34.678150" elapsed="0.000222"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.679173" level="INFO">${session} = ClusterManagement__session_3</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-19T01:34:34.678855" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:34:34.679243" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:34:34.679391" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T01:34:34.678560" elapsed="0.000856"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:34:34.679971" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f72adf10&gt;, timeout=125, 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-19T01:34:34.679569" elapsed="0.000523"/>
</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-19T01:34:34.680254" elapsed="0.000189"/>
</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-19T01:34:34.676626" elapsed="0.003874"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:34:34.676447" elapsed="0.004096"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T01:34:34.664657" elapsed="0.015916"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.681145" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T01:34:34.680735" elapsed="0.000453"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.681766" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T01:34:34.681380" elapsed="0.000428"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.682358" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T01:34:34.681968" elapsed="0.000451"/>
</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-19T01:34:34.662832" elapsed="0.019683"/>
</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-19T01:34:34.654493" elapsed="0.028099"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:34:34.682853" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:34.682687" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.682659" elapsed="0.000285"/>
</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-19T01:34:34.687450" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:34:34.687064" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.688120" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:34:34.687795" elapsed="0.000389"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:34:34.688231" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:34:34.688390" level="INFO">${index_list} = [1, 2, 3]</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-19T01:34:34.686714" elapsed="0.001701"/>
</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-19T01:34:34.689440" level="INFO">${member_ip} = 10.30.171.9</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-19T01:34:34.689149" elapsed="0.000318"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:34.690253" 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-19T01:34:34.690355" 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-19T01:34:34.690053" elapsed="0.000330"/>
</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-19T01:34:34.693058" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:34.692725" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:34.692707" elapsed="0.000545"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:34.693575" 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-19T01:34:34.693697" 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-19T01:34:34.693444" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.694786" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:34.693876" elapsed="0.000958"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:34.695634" 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-19T01:34:34.694991" elapsed="0.000669"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:34:34.696941" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:34:34.697165" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:34:34.696410" elapsed="0.000802"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.697503" elapsed="0.000607"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:34:34.699701" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:34:35.287916" 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 Sun Apr 19 01:34:34 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:20:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:34:34.699308" elapsed="0.588849"/>
</kw>
<msg time="2026-04-19T01:34:35.288266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.698430" elapsed="0.590013"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:34:34.695874" elapsed="0.592811"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.289277" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:34:35.302111" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:34:35.302456" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:34:35.302557" 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-19T01:34:35.288938" elapsed="0.013779"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:35.303139" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.305201" 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-19T01:34:35.304103" elapsed="0.001204"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:34:35.305816" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:35.305478" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:35.305429" elapsed="0.000546"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:34:35.306417" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:34:35.306131" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:35.306092" elapsed="0.000516"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:34:35.306683" 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-19T01:34:35.312982" elapsed="0.000737"/>
</kw>
<kw name="Open 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-19T01:34:35.313946" elapsed="0.000427"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:35.314566" elapsed="0.000189"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:35.307406" elapsed="0.007432"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:34:34.692246" elapsed="0.622686"/>
</kw>
<msg time="2026-04-19T01:34:35.314985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:34.691551" elapsed="0.623501"/>
</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-19T01:34:34.691070" elapsed="0.624064"/>
</kw>
<msg time="2026-04-19T01:34:35.315174" 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-19T01:34:34.690545" elapsed="0.624674"/>
</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-19T01:34:35.318165" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:34:35.318644" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:35.318936" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:35.315509" elapsed="0.003593"/>
</kw>
<msg time="2026-04-19T01:34:35.319193" 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-19T01:34:34.689683" elapsed="0.629535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.319640" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:35.319395" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:34:35.319723" 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-19T01:34:34.688773" elapsed="0.631073"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:34:34.688596" elapsed="0.631289"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:35.320842" level="INFO">${member_ip} = 10.30.171.128</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-19T01:34:35.320572" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.321622" 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-19T01:34:35.321722" 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-19T01:34:35.321489" elapsed="0.000259"/>
</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-19T01:34:35.324724" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:35.324419" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:35.324400" elapsed="0.000512"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.325211" 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-19T01:34:35.325331" 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-19T01:34:35.325081" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.326413" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:35.325509" elapsed="0.000951"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.327256" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:34:35.326616" elapsed="0.000666"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.328600" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:34:35.328798" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:34:35.328009" elapsed="0.000836"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:35.329146" elapsed="0.000592"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.331213" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:34:35.896861" 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 Sun Apr 19 01:34:35 UTC 2026

  System load:  0.0                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:20:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:34:35.330810" elapsed="0.566294"/>
</kw>
<msg time="2026-04-19T01:34:35.897213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:35.330072" elapsed="0.567310"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:34:35.327497" elapsed="0.570129"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.898204" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:34:35.910717" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:34:35.910930" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:34:35.910993" 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-19T01:34:35.897877" elapsed="0.013178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:35.911288" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.913219" 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-19T01:34:35.912129" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:34:35.913833" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:35.913499" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:35.913449" elapsed="0.000541"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:34:35.914455" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:34:35.914145" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:35.914109" elapsed="0.000538"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:34:35.914723" 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-19T01:34:35.921758" elapsed="0.000760"/>
</kw>
<kw name="Open 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-19T01:34:35.922799" elapsed="0.000421"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:35.923412" elapsed="0.000186"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:35.915442" elapsed="0.008238"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:34:35.323831" elapsed="0.599942"/>
</kw>
<msg time="2026-04-19T01:34:35.923826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:35.323191" elapsed="0.600684"/>
</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-19T01:34:35.322635" elapsed="0.601319"/>
</kw>
<msg time="2026-04-19T01:34:35.923994" 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-19T01:34:35.321905" elapsed="0.602148"/>
</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-19T01:34:35.926955" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:34:35.927445" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:35.927740" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:35.924345" elapsed="0.003540"/>
</kw>
<msg time="2026-04-19T01:34:35.927974" 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-19T01:34:35.321101" elapsed="0.606898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.928436" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:35.928193" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:34:35.928520" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:34:35.320206" elapsed="0.608435"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:34:35.319977" elapsed="0.608701"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:35.929609" level="INFO">${member_ip} = 10.30.171.206</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-19T01:34:35.929338" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.930373" 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-19T01:34:35.930483" 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-19T01:34:35.930227" elapsed="0.000283"/>
</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-19T01:34:35.933211" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:35.932817" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:35.932798" elapsed="0.000602"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.933687" 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-19T01:34:35.933809" 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-19T01:34:35.933551" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.934926" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:35.933989" elapsed="0.000984"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.935781" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:34:35.935150" elapsed="0.000689"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:34:35.937145" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:34:35.937343" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:34:35.936586" elapsed="0.000804"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:35.937668" elapsed="0.000620"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:34:35.939939" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:34:36.531358" 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 Sun Apr 19 01:34:36 UTC 2026

  System load:  0.04               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:20:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:34:35.939547" elapsed="0.592040"/>
</kw>
<msg time="2026-04-19T01:34:36.531697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:35.938636" elapsed="0.593237"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:34:35.936072" elapsed="0.596071"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:34:36.532767" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:34:36.545552" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:34:36.545909" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:34:36.546012" 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-19T01:34:36.532402" elapsed="0.013714"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:36.546496" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:36.548924" 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-19T01:34:36.547463" elapsed="0.001622"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:34:36.549581" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:36.549274" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:36.549219" elapsed="0.000464"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:34:36.549936" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T01:34:36.549758" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:36.549737" elapsed="0.000343"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:34:36.550127" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:36.554487" elapsed="0.001039"/>
</kw>
<kw name="Open 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-19T01:34:36.555843" elapsed="0.000585"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:36.556728" elapsed="0.000272"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:36.550578" elapsed="0.006559"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:34:35.932329" elapsed="0.624943"/>
</kw>
<msg time="2026-04-19T01:34:36.557349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:35.931684" elapsed="0.625738"/>
</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-19T01:34:35.931192" elapsed="0.626329"/>
</kw>
<msg time="2026-04-19T01:34:36.557563" 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-19T01:34:35.930667" elapsed="0.627002"/>
</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-19T01:34:36.560589" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:34:36.561111" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:36.561406" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:36.557965" elapsed="0.003590"/>
</kw>
<msg time="2026-04-19T01:34:36.561647" 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-19T01:34:35.929850" elapsed="0.631823"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:36.562125" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:36.561860" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:34:36.562211" 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-19T01:34:35.928947" elapsed="0.633390"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:34:35.928767" elapsed="0.633607"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:34:34.688467" elapsed="1.873941"/>
</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-19T01:34:34.683276" elapsed="1.879189"/>
</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-19T01:34:36.562623" elapsed="0.000213"/>
</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-19T01:34:36.577320" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:36.577208" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:36.577189" elapsed="0.000200"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:36.577682" 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-19T01:34:36.577785" 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-19T01:34:36.577544" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:36.578239" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:36.577963" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:36.578678" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:36.578436" elapsed="0.000427"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:36.579624" 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-19T01:34:36.579400" elapsed="0.000329">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T01:34:36.579846" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:34:36.579894" 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-19T01:34:36.579020" elapsed="0.000897"/>
</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-19T01:34:36.580270" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:36.579993" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:36.579975" elapsed="0.000406"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:36.581178" level="INFO">${ip_address} = 10.30.171.9</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-19T01:34:36.580886" elapsed="0.000318"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:34:36.581252" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:34:36.581401" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:34:36.580586" elapsed="0.000840"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:34:36.581581" elapsed="0.000395"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:36.582266" level="INFO">index=10
host=10.30.171.9
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-19T01:34:36.582408" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T01:34:36.582161" elapsed="0.000274"/>
</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-19T01:34:36.582589" elapsed="0.002405"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:34:36.585433" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:34:36.821195" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:34:36.585175" elapsed="0.236147"/>
</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-19T01:34:36.825166" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:34:36.825653" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:36.825962" elapsed="0.000117"/>
</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-19T01:34:36.822404" elapsed="0.003730"/>
</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-19T01:34:36.821718" elapsed="0.004463"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:34:36.576909" elapsed="0.249324"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:34:36.563638" elapsed="0.262645"/>
</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-19T01:34:36.563254" elapsed="0.263084"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:34:36.563110" elapsed="0.263271"/>
</iter>
<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-19T01:34:36.840341" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:36.840222" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:36.840198" elapsed="0.000220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:36.840709" 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-19T01:34:36.840814" 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-19T01:34:36.840574" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:36.841288" 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-19T01:34:36.840991" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:36.841736" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:36.841481" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:36.842545" level="FAIL">Dictionary does not contain key '2'.</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-19T01:34:36.842316" elapsed="0.000337">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T01:34:36.842759" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:34:36.842804" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T01:34:36.841936" elapsed="0.000891"/>
</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-19T01:34:36.843182" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:36.842902" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:36.842884" elapsed="0.000473"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:36.844130" level="INFO">${ip_address} = 10.30.171.128</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-19T01:34:36.843843" elapsed="0.000314"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:34:36.844206" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:34:36.844361" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:34:36.843564" elapsed="0.000822"/>
</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-19T01:34:36.844539" elapsed="0.000400"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:36.845236" level="INFO">index=12
host=10.30.171.128
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-19T01:34:36.845336" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T01:34:36.845129" 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-19T01:34:36.845510" elapsed="0.002707"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:34:36.848637" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:34:37.039112" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:34:36.848380" elapsed="0.190874"/>
</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-19T01:34:37.043084" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:34:37.043573" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:37.043891" 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-19T01:34:37.040392" elapsed="0.003672"/>
</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-19T01:34:37.039657" elapsed="0.004456"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:34:36.839912" elapsed="0.204255"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:34:36.826993" elapsed="0.217239"/>
</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-19T01:34:36.826624" elapsed="0.217674"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:34:36.826482" elapsed="0.217859"/>
</iter>
<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-19T01:34:37.058314" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:37.058194" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:37.058172" elapsed="0.000219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:37.058716" 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-19T01:34:37.058824" 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-19T01:34:37.058576" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:37.059354" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:37.059002" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:37.059794" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:37.059552" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:37.060637" level="FAIL">Dictionary does not contain key '3'.</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-19T01:34:37.060402" elapsed="0.000344">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T01:34:37.060853" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:34:37.060899" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T01:34:37.059993" elapsed="0.000928"/>
</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-19T01:34:37.061240" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:37.060997" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:37.060979" elapsed="0.000359"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:37.062308" level="INFO">${ip_address} = 10.30.171.206</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-19T01:34:37.062018" elapsed="0.000316"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:34:37.062384" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:34:37.062566" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:34:37.061540" elapsed="0.001050"/>
</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-19T01:34:37.062744" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:37.063440" level="INFO">index=14
host=10.30.171.206
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-19T01:34:37.063539" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T01:34:37.063333" elapsed="0.000232"/>
</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-19T01:34:37.063713" elapsed="0.002372"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:34:37.066521" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:34:47.129285" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:37.066248" elapsed="10.064997">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:47.137446" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:34:47.137937" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:47.138277" 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-19T01:34:47.133790" elapsed="0.004642"/>
</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-19T01:34:47.132318" elapsed="0.006160"/>
</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-19T01:34:37.057884" elapsed="10.080714">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:34:47.138716" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:37.044972" elapsed="10.093840">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:37.044598" elapsed="10.094282"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:34:37.044454" elapsed="10.094474"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T01:34:36.562893" elapsed="10.576195"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T01:34:34.654055" elapsed="12.485102"/>
</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-19T01:34:47.142220" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.142087" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.142063" elapsed="0.000231"/>
</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-19T01:34:47.147542" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.147404" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.147386" elapsed="0.000236"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:34:47.148609" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:34:47.148219" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:34:47.149115" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:34:47.148796" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:34:47.149187" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:34:47.149343" level="INFO">${index_list} = [1, 2, 3]</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-19T01:34:47.147870" elapsed="0.001498"/>
</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-19T01:34:47.156233" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.156124" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.156105" 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-19T01:34:47.157417" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.157311" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.157293" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:47.157934" 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-19T01:34:47.157627" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:47.158340" 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-19T01:34:47.158144" elapsed="0.000222"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:34:47.201735" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:34:47.158859" elapsed="0.043027"/>
</kw>
<msg time="2026-04-19T01:34:47.202013" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:34:47.202081" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.158524" elapsed="0.043595"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:34:47.265481" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:34:47.202668" elapsed="0.062993"/>
</kw>
<msg time="2026-04-19T01:34:47.265764" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:34:47.265810" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.202303" elapsed="0.063544"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:47.266188" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:47.265928" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.265907" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:47.266698" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:47.266413" elapsed="0.000431"/>
</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-19T01:34:47.267149" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:47.266911" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.266893" elapsed="0.000334"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:34:47.267261" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:47.268595" 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-19T01:34:47.269710" elapsed="0.000530"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:47.270556" elapsed="0.000221"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:47.268149" elapsed="0.002780"/>
</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-19T01:34:47.267543" elapsed="0.003438"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:34:47.157058" elapsed="0.114052"/>
</kw>
<msg time="2026-04-19T01:34:47.271206" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:34:47.271252" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.156515" elapsed="0.114776"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:34:47.271490" elapsed="0.000031"/>
</return>
<status status="PASS" start="2026-04-19T01:34:47.271370" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.271351" elapsed="0.000241"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:47.272114" elapsed="0.000031"/>
</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-19T01:34:47.272518" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:34:47.272601" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:34:47.155764" elapsed="0.116947"/>
</kw>
<msg time="2026-04-19T01:34:47.272804" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:34:47.272849" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.149756" elapsed="0.123130"/>
</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-19T01:34:47.273229" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:47.272960" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.272942" elapsed="0.000365"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:34:47.149613" elapsed="0.123716"/>
</iter>
<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-19T01:34:47.278934" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.278826" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.278807" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:34:47.280195" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.280087" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.280069" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:47.280668" level="INFO">${karaf_connection_index} = 12</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-19T01:34:47.280405" elapsed="0.000289"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:47.281064" 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-19T01:34:47.280850" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:34:47.319937" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:34:47.281583" elapsed="0.038517"/>
</kw>
<msg time="2026-04-19T01:34:47.320279" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:34:47.320327" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.281251" elapsed="0.039114"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:34:47.375998" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:34:47.320877" elapsed="0.055496"/>
</kw>
<msg time="2026-04-19T01:34:47.376554" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:34:47.376602" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.320537" elapsed="0.056103"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:47.377152" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:47.376769" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.376727" elapsed="0.000515"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:34:47.377768" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:34:47.377394" elapsed="0.000467"/>
</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-19T01:34:47.378166" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:47.377928" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.377910" elapsed="0.000335"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:34:47.378284" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:34:47.379689" elapsed="0.000673"/>
</kw>
<kw name="Open 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-19T01:34:47.380690" elapsed="0.000563"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:34:47.381542" elapsed="0.000216"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:34:47.379221" elapsed="0.002684"/>
</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-19T01:34:47.378617" elapsed="0.003336"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:34:47.279820" elapsed="0.102258"/>
</kw>
<msg time="2026-04-19T01:34:47.382176" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:34:47.382222" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.279296" elapsed="0.102963"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:34:47.382442" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:34:47.382335" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.382317" elapsed="0.000208"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:47.382945" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:34:47.383562" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:34:47.383643" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:34:47.278532" elapsed="0.105221"/>
</kw>
<msg time="2026-04-19T01:34:47.383871" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:34:47.383916" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:34:47.273594" elapsed="0.110358"/>
</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-19T01:34:47.384384" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:34:47.384126" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.384106" elapsed="0.000354"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:34:47.273453" elapsed="0.111030"/>
</iter>
<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-19T01:34:47.391408" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.391300" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.391281" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:34:47.392514" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:34:47.392410" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T01:34:47.392392" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:34:47.392989" level="INFO">${karaf_connection_index} = 14</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-19T01:34:47.392723" elapsed="0.000292"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:34:47.393392" 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-19T01:34:47.393196" elapsed="0.000221"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:34:57.394741" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:34:47.393910" elapsed="10.001564">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:34:57.395683" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:34:57.395735" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:34:47.393575" elapsed="10.002185"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:35:07.397292" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:34:57.396561" elapsed="10.001392">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:35:07.398178" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:35:07.398251" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:34:57.396069" elapsed="10.002207"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:35:07.399496" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T01:35:07.398774" elapsed="0.000786">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:35:07.398410" elapsed="0.001221">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:35:07.398373" elapsed="0.001294">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T01:35:07.399835" 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-19T01:35:07.400082" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:07.399922" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:35:07.399904" elapsed="0.000255"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:35:07.400197" elapsed="0.000019"/>
</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-19T01:35:07.401589" elapsed="0.000867"/>
</kw>
<kw name="Open 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-19T01:35:07.402782" elapsed="0.000540"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:07.403607" elapsed="0.000221"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:07.401126" elapsed="0.002847"/>
</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-19T01:35:07.400517" elapsed="0.003507"/>
</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-19T01:34:47.392161" elapsed="20.012052">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T01:35:07.404320" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:35:07.404366" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T01:34:47.391626" elapsed="20.012765"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:35:07.404576" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:07.404467" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:07.404448" elapsed="0.000195"/>
</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-19T01:35:07.405605" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:07.405499" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:07.405482" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:07.405968" 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-19T01:35:07.406088" 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-19T01:35:07.405825" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:07.406561" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:07.406295" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:07.407004" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:07.406762" elapsed="0.000304"/>
</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-19T01:35:07.407588" elapsed="0.000226"/>
</kw>
<msg time="2026-04-19T01:35:07.407911" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:35:07.407956" level="INFO">${old_connection_index} = 14</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-19T01:35:07.407229" elapsed="0.000749"/>
</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-19T01:35:07.408813" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:35:17.410874" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:35:07.409785" elapsed="10.003049">No match found for '
' in 10 seconds
Output:
.</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-19T01:35:07.409245" elapsed="10.003810"/>
</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-19T01:35:17.414096" elapsed="0.000474"/>
</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-19T01:35:17.413424" elapsed="0.001288"/>
</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-19T01:35:07.408308" elapsed="10.006452"/>
</kw>
<status status="PASS" start="2026-04-19T01:35:07.408086" elapsed="10.006725"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:07.408066" elapsed="10.006780"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:17.416076" level="INFO">${ip_address} = 10.30.171.206</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-19T01:35:17.415774" elapsed="0.000329"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:35:17.416161" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T01:35:17.416325" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:35:17.415429" elapsed="0.000922"/>
</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-19T01:35:17.416513" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:17.417256" level="INFO">index=19
host=10.30.171.206
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-19T01:35:17.417370" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T01:35:17.417131" elapsed="0.000266"/>
</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-19T01:35:17.417551" elapsed="0.003059"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:35:17.421084" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:35:27.527413" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:35:17.420785" elapsed="10.107476">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:35:27.532086" 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-19T01:35:27.532881" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:27.533221" elapsed="0.000117"/>
</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-19T01:35:27.529506" elapsed="0.003886"/>
</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-19T01:35:27.528775" elapsed="0.004663"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:35:07.405255" elapsed="20.128268">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:35:27.533891" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:35:27.533969" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:34:47.390842" elapsed="40.143262">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:35:27.534225" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:35:27.534271" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:34:47.384761" elapsed="40.149534"/>
</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-19T01:35:27.534640" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:27.534380" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:27.534360" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:34:47.384618" elapsed="40.150128"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:34:47.149439" elapsed="40.385343"/>
</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-19T01:34:47.147108" elapsed="40.387733"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T01:34:47.139819" elapsed="40.395082"/>
</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-19T01:34:47.139323" elapsed="40.395623"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T01:34:34.648669" elapsed="52.886332"/>
</kw>
<test id="s1-s9-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:35:27.540875" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:35:27.540482" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:35:27.541442" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:35:27.541135" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:35:27.541518" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:35:27.541676" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T01:35:27.540091" elapsed="0.001611"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:35:27.542669" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:35:27.542298" elapsed="0.000398"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:35:27.543170" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:35:27.542853" elapsed="0.000387"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:35:27.543288" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:35:27.543444" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T01:35:27.541909" elapsed="0.001560"/>
</kw>
<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-19T01:35:27.544908" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:35:27.544537" elapsed="0.000397"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:35:27.545416" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:35:27.545115" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:35:27.545487" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:35:27.545639" level="INFO">${index_list} = [1, 2, 3]</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-19T01:35:27.544172" elapsed="0.001491"/>
</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-19T01:35:27.546710" level="INFO">${member_ip} = 10.30.171.9</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-19T01:35:27.546438" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:27.547513" 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-19T01:35:27.547612" 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-19T01:35:27.547371" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:35:27.551884" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:27.551611" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:27.551591" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:27.552272" 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-19T01:35:27.552374" 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-19T01:35:27.552129" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:27.553085" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:27.552554" elapsed="0.000579"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:27.553834" 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-19T01:35:27.553302" elapsed="0.000559"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:27.555150" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:27.555287" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:27.554538" elapsed="0.000774"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:27.555505" elapsed="0.000763"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:27.558649" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:27.871147" 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 Sun Apr 19 01:34:34 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:34:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:35:27.558039" elapsed="0.313446"/>
</kw>
<msg time="2026-04-19T01:35:27.871614" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:27.556508" elapsed="0.315284"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:27.554096" elapsed="0.317881"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:27.872513" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:35:28.218016" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:28.218480" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:35:28.218586" 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-19T01:35:27.872249" elapsed="0.346393"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:28.219196" elapsed="0.000656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.221216" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:28.220398" elapsed="0.000937"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:28.221862" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:28.221548" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:28.221471" 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-19T01:35:28.222451" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:35:28.222192" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:28.222153" elapsed="0.000497"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:28.222725" 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-19T01:35:28.240986" elapsed="0.000602"/>
</kw>
<kw name="Open 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-19T01:35:28.241767" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:28.242112" 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-19T01:35:28.223506" elapsed="0.018759"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:27.549562" elapsed="0.692797"/>
</kw>
<msg time="2026-04-19T01:35:28.242418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:27.548922" elapsed="0.693555"/>
</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-19T01:35:27.548384" elapsed="0.694173"/>
</kw>
<msg time="2026-04-19T01:35:28.242599" 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-19T01:35:27.547793" elapsed="0.694856"/>
</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-19T01:35:28.246082" 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-19T01:35:28.246575" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:28.246886" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:28.242962" elapsed="0.004333"/>
</kw>
<msg time="2026-04-19T01:35:28.247396" 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-19T01:35:27.546948" elapsed="0.700473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.247874" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:28.247609" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:28.247962" 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-19T01:35:27.546021" elapsed="0.702085"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:35:27.545847" elapsed="0.702300"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:28.249200" level="INFO">${member_ip} = 10.30.171.128</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-19T01:35:28.248873" elapsed="0.000354"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.250106" 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-19T01:35:28.250209" 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-19T01:35:28.249943" elapsed="0.000293"/>
</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-19T01:35:28.253363" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:28.252944" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:28.252919" elapsed="0.000552"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.253856" 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-19T01:35:28.253992" 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-19T01:35:28.253680" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.254786" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:28.254265" elapsed="0.000569"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.255440" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:28.254995" elapsed="0.000471"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.256701" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:28.256834" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:28.256132" elapsed="0.000727"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:28.257087" elapsed="0.000714"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.260338" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:28.583125" 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 Sun Apr 19 01:34:35 UTC 2026

  System load:  0.0                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:34:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:35:28.259697" elapsed="0.323678"/>
</kw>
<msg time="2026-04-19T01:35:28.583533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:28.258060" elapsed="0.325670"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:28.255680" elapsed="0.328244"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.584538" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:35:28.940791" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:28.941221" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:35:28.941322" 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-19T01:35:28.584227" elapsed="0.357150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:28.941865" elapsed="0.000649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.943712" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:28.942947" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:28.944334" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:28.943984" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:28.943931" 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-19T01:35:28.944853" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T01:35:28.944614" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:28.944580" elapsed="0.000651"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:28.945339" 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-19T01:35:28.964552" elapsed="0.000584"/>
</kw>
<kw name="Open 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-19T01:35:28.965312" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:28.965629" 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-19T01:35:28.946182" elapsed="0.019599"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:28.252266" elapsed="0.713625"/>
</kw>
<msg time="2026-04-19T01:35:28.965949" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:28.251623" elapsed="0.714387"/>
</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-19T01:35:28.250921" elapsed="0.715199"/>
</kw>
<msg time="2026-04-19T01:35:28.966164" 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-19T01:35:28.250393" elapsed="0.715818"/>
</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-19T01:35:28.969459" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:35:28.969954" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:28.970275" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:28.966512" elapsed="0.003910"/>
</kw>
<msg time="2026-04-19T01:35:28.970515" 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-19T01:35:28.249514" elapsed="0.721026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.970981" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:28.970732" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:28.971416" 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-19T01:35:28.248443" elapsed="0.723103"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:35:28.248252" elapsed="0.723332"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:28.972573" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:28.972300" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.973418" 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-19T01:35:28.973517" 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-19T01:35:28.973277" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:35:28.976652" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:28.976375" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:28.976356" elapsed="0.000379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.977018" 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-19T01:35:28.977146" 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-19T01:35:28.976887" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.977853" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:28.977329" elapsed="0.000629"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.978584" 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-19T01:35:28.978146" elapsed="0.000465"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:28.979886" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:28.980022" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:28.979301" elapsed="0.000763"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:28.980259" elapsed="0.000738"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:28.983667" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:29.304004" 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 Sun Apr 19 01:34:36 UTC 2026

  System load:  0.04               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:34:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:28.982758" elapsed="0.321505"/>
</kw>
<msg time="2026-04-19T01:35:29.304402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:28.981258" elapsed="0.323333"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:28.978833" elapsed="0.325942"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:29.305367" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:35:29.651509" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T01:35:29.652004" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:35:29.652166" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:35:29.305079" elapsed="0.347150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:29.652718" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:29.654625" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:29.653820" elapsed="0.000913"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:29.655288" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:29.654911" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:29.654859" elapsed="0.000608"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:29.655882" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:35:29.655603" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:29.655565" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:29.656218" 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-19T01:35:29.677667" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:29.678637" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:29.678985" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:29.656951" elapsed="0.022215"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:28.975819" elapsed="0.703442"/>
</kw>
<msg time="2026-04-19T01:35:29.679318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:28.975207" elapsed="0.704169"/>
</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-19T01:35:28.974266" elapsed="0.705201"/>
</kw>
<msg time="2026-04-19T01:35:29.679576" 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-19T01:35:28.973717" elapsed="0.705908"/>
</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-19T01:35:29.682897" 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-19T01:35:29.683444" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:29.683754" 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-19T01:35:29.679945" elapsed="0.003963"/>
</kw>
<msg time="2026-04-19T01:35:29.684011" 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-19T01:35:28.972816" elapsed="0.711242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:29.684520" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:29.684261" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:29.684605" 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-19T01:35:28.971867" elapsed="0.712866"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:35:28.971681" elapsed="0.713090"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:35:27.545718" elapsed="2.139088"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T01:35:27.543673" elapsed="2.141193"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:35:29.685386" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:35:29.685061" elapsed="0.000352"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:35:29.685569" elapsed="0.000250"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T01:35:29.686023" elapsed="0.000084"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:29.685897" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:29.685878" elapsed="0.000291"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:29.688537" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:29.687943" elapsed="0.000621"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:29.689537" level="INFO">${member_ip} = 10.30.171.9</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-19T01:35:29.689260" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:29.690432" 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-19T01:35:29.690533" 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-19T01:35:29.690291" elapsed="0.000269"/>
</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-19T01:35:29.695202" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:29.694681" elapsed="0.000631"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:29.694440" elapsed="0.000939"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:29.697262" 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-19T01:35:29.697540" 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-19T01:35:29.696582" elapsed="0.001072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:29.699457" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:29.698847" elapsed="0.000736"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:29.701545" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:29.700753" elapsed="0.000908"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:29.704416" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:29.704496" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:29.704133" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:29.704747" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:29.706128" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:30.014387" 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 Sun Apr 19 01:34:34 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:35:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:35:29.705729" elapsed="0.308834"/>
</kw>
<msg time="2026-04-19T01:35:30.014651" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:29.705357" elapsed="0.309387"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:29.703256" elapsed="0.311841"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:30.016848" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:30.039415" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:30.039991" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:30.040458" 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-19T01:35:30.016416" elapsed="0.024309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:30.043517" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:30.047328" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:30.046205" elapsed="0.001420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:30.048679" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:30.048027" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:30.047887" elapsed="0.001123"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:30.049978" elapsed="0.000472"/>
</return>
<status status="PASS" start="2026-04-19T01:35:30.049464" elapsed="0.001116"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:30.049325" elapsed="0.001430"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:30.050960" elapsed="0.000126"/>
</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-19T01:35:30.058919" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T01:35:30.059521" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:30.059913" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:30.054797" elapsed="0.005359"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:29.692626" elapsed="0.367788"/>
</kw>
<msg time="2026-04-19T01:35:30.060786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:29.691895" elapsed="0.368951"/>
</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-19T01:35:29.691317" elapsed="0.369613"/>
</kw>
<msg time="2026-04-19T01:35:30.060971" 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-19T01:35:29.690738" elapsed="0.370279"/>
</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-19T01:35:30.064188" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:35:30.064736" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:30.065065" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:30.061346" elapsed="0.003875"/>
</kw>
<msg time="2026-04-19T01:35:30.065315" level="INFO">${output} = 1</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-19T01:35:29.689809" elapsed="0.375532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:30.065777" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:30.065524" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:30.065866" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:35:30.066022" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:29.688792" elapsed="0.377376"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:30.066218" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:35:30.066370" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:29.687570" elapsed="0.378825"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:30.066979" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:30.066576" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:29.687165" elapsed="0.380017">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:32.070733" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:32.069957" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:32.072896" level="INFO">${member_ip} = 10.30.171.9</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-19T01:35:32.072284" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:32.074752" 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-19T01:35:32.074979" 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-19T01:35:32.074425" elapsed="0.000643"/>
</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-19T01:35:32.080155" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:32.079625" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:32.079325" elapsed="0.000984"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:32.082042" 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-19T01:35:32.082319" 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-19T01:35:32.081510" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:32.084197" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:32.083610" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:32.086238" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:32.085465" elapsed="0.000886"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:32.089005" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:32.089152" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:32.088697" elapsed="0.000480"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:32.089397" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:32.090731" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:32.401219" 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 Sun Apr 19 01:34:34 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:35:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:35:32.090402" elapsed="0.310906"/>
</kw>
<msg time="2026-04-19T01:35:32.401372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:32.090019" elapsed="0.311427"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:32.087820" elapsed="0.313882"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:32.403288" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:32.425844" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:32.426465" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:32.426847" 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-19T01:35:32.402904" elapsed="0.024243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:32.429817" elapsed="0.001018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:32.433381" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:32.432352" elapsed="0.001291"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:32.434602" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:32.434019" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:32.433884" elapsed="0.001038"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:32.436148" elapsed="0.000134"/>
</return>
<status status="PASS" start="2026-04-19T01:35:32.435597" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:32.435474" elapsed="0.001081"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:32.436751" elapsed="0.000093"/>
</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-19T01:35:32.443925" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:35:32.444656" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:32.445021" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:32.440515" elapsed="0.004744"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:32.077804" elapsed="0.367704"/>
</kw>
<msg time="2026-04-19T01:35:32.445867" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:32.077099" elapsed="0.368824"/>
</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-19T01:35:32.076546" elapsed="0.369458"/>
</kw>
<msg time="2026-04-19T01:35:32.446061" 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-19T01:35:32.075425" elapsed="0.370683"/>
</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-19T01:35:32.449216" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:35:32.449690" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:32.449985" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:32.446395" elapsed="0.003755"/>
</kw>
<msg time="2026-04-19T01:35:32.450239" level="INFO">${output} = 1</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-19T01:35:32.073472" elapsed="0.376792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:32.450742" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:32.450492" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:32.450830" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:32.450982" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:32.071295" elapsed="0.379712"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:32.451128" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:32.451278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:32.069137" elapsed="0.382166"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:32.451881" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:32.451461" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:32.068000" elapsed="0.384101">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.455693" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:34.454885" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:34.457833" level="INFO">${member_ip} = 10.30.171.9</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-19T01:35:34.457222" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.459760" 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-19T01:35:34.459990" 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-19T01:35:34.459427" elapsed="0.000658"/>
</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-19T01:35:34.466048" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:34.465550" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:34.465268" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.467624" 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-19T01:35:34.467865" 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-19T01:35:34.467186" elapsed="0.000780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.469546" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:34.468973" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.471392" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:34.470654" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.473847" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:34.473926" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:34.473562" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:34.474190" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.475498" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:34.787133" 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 Sun Apr 19 01:34:34 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:35:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:35:34.475171" elapsed="0.312199"/>
</kw>
<msg time="2026-04-19T01:35:34.787454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:34.474786" elapsed="0.312754"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:34.472704" elapsed="0.315104"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.789272" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:34.812280" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:34.812799" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T01:35:34.813179" 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-19T01:35:34.788877" elapsed="0.024513"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:34.815563" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.818696" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:34.817705" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:34.819795" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:34.819303" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:34.819180" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:34.820925" elapsed="0.000148"/>
</return>
<status status="PASS" start="2026-04-19T01:35:34.820483" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:34.820370" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:34.821453" 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-19T01:35:34.826181" 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-19T01:35:34.826718" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:34.827110" 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-19T01:35:34.822833" elapsed="0.004489"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:34.463908" elapsed="0.363667"/>
</kw>
<msg time="2026-04-19T01:35:34.827880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:34.462929" elapsed="0.365007"/>
</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-19T01:35:34.461628" elapsed="0.366388"/>
</kw>
<msg time="2026-04-19T01:35:34.828073" 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-19T01:35:34.460449" elapsed="0.367671"/>
</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-19T01:35:34.831145" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:35:34.831622" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:34.831913" 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-19T01:35:34.828422" elapsed="0.003656"/>
</kw>
<msg time="2026-04-19T01:35:34.832170" level="INFO">${output} = 0</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-19T01:35:34.458433" elapsed="0.373762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.832648" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:34.832395" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:34.832735" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:34.832885" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:34.456268" elapsed="0.376641"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:34.832955" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:35:34.833115" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:34.453980" elapsed="0.379160"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T01:35:34.833349" elapsed="0.000356"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T01:35:34.452910" elapsed="0.380859"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:35:29.686506" elapsed="5.147311"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:35:29.686359" elapsed="5.147498"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.835775" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:34.835480" elapsed="0.000322"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:34.836703" level="INFO">${member_ip} = 10.30.171.128</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-19T01:35:34.836434" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.837506" 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-19T01:35:34.837604" 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-19T01:35:34.837373" elapsed="0.000257"/>
</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-19T01:35:34.841451" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:34.841003" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:34.840952" elapsed="0.000797"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.843166" 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-19T01:35:34.843406" 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-19T01:35:34.842722" elapsed="0.000784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.845411" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:34.844842" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.847324" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:34.846506" elapsed="0.000918"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:34.849897" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:34.849973" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:34.849618" 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-19T01:35:34.850221" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:34.851566" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:35.155928" 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 Sun Apr 19 01:34:35 UTC 2026

  System load:  0.0                Processes:             122
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:35:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:35:34.851238" elapsed="0.304835"/>
</kw>
<msg time="2026-04-19T01:35:35.156151" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:34.850764" elapsed="0.305469"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:34.848685" elapsed="0.307807"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:35.158390" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:35.181172" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:35.181667" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T01:35:35.182077" 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-19T01:35:35.157802" elapsed="0.024495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:35.184509" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.187258" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:35.186613" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:35.187951" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:35.187625" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:35.187546" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:35.188649" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:35:35.188367" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:35.188299" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:35.188979" elapsed="0.000072"/>
</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-19T01:35:35.197708" elapsed="0.000539"/>
</kw>
<kw name="Open 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-19T01:35:35.198522" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:35.198875" 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-19T01:35:35.190848" elapsed="0.008362"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:34.839634" elapsed="0.359796"/>
</kw>
<msg time="2026-04-19T01:35:35.199725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:34.838974" elapsed="0.360807"/>
</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-19T01:35:34.838419" elapsed="0.361441"/>
</kw>
<msg time="2026-04-19T01:35:35.199901" 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-19T01:35:34.837784" elapsed="0.362162"/>
</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-19T01:35:35.202926" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:35:35.203416" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:35.203708" 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-19T01:35:35.200256" elapsed="0.003598"/>
</kw>
<msg time="2026-04-19T01:35:35.203943" level="INFO">${output} = 0</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-19T01:35:34.836943" elapsed="0.367025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.204453" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:35.204206" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:35.204540" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:35.204688" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:34.835997" elapsed="0.368716"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:35.204758" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:35:35.204896" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:34.835109" elapsed="0.369811"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T01:35:35.205090" elapsed="0.000349"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T01:35:34.834706" elapsed="0.370793"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:35:34.834187" elapsed="0.371357"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:35:34.833954" elapsed="0.371678"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.207461" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:35.207169" elapsed="0.000320"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:35.208381" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:35.208111" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:35.209214" 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-19T01:35:35.209313" 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-19T01:35:35.209080" elapsed="0.000259"/>
</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-19T01:35:35.213117" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:35.212681" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:35.212629" elapsed="0.000624"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:35.263190" 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-19T01:35:35.263536" 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-19T01:35:35.214244" elapsed="0.049397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.265350" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:35.264684" elapsed="0.000776"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:35.267313" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:35.266442" elapsed="0.000968"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.269728" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:35.269805" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:35.269441" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:35.270059" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:35.271344" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:35.592895" 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 Sun Apr 19 01:34:36 UTC 2026

  System load:  0.04               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:35.271001" elapsed="0.322016"/>
</kw>
<msg time="2026-04-19T01:35:35.593114" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:35.270639" elapsed="0.322563"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:35.268629" elapsed="0.324840"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:35.594910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:35.618095" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:35.618586" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:35.618941" 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-19T01:35:35.594550" elapsed="0.024648"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:35.621616" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.624809" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:35.623809" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:35.625935" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:35.625440" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:35.625313" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:35.627301" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T01:35:35.626583" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:35.626472" elapsed="0.001146"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:35.627697" 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-19T01:35:35.632491" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:35:35.633049" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:35.633406" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:35.629078" elapsed="0.004544"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:35.211335" elapsed="0.422513"/>
</kw>
<msg time="2026-04-19T01:35:35.634174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:35.210591" elapsed="0.423640"/>
</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-19T01:35:35.210048" elapsed="0.424265"/>
</kw>
<msg time="2026-04-19T01:35:35.634354" 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-19T01:35:35.209494" elapsed="0.424906"/>
</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-19T01:35:35.637601" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:35:35.638096" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:35.638393" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:35.634697" elapsed="0.003845"/>
</kw>
<msg time="2026-04-19T01:35:35.638635" level="INFO">${output} = 1</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-19T01:35:35.208625" elapsed="0.430036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.639213" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:35.638853" elapsed="0.000438"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:35.639337" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:35:35.639513" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:35.207693" elapsed="0.431852"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:35.639601" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:35:35.639748" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:35.206810" elapsed="0.432963"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:35.640344" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:35.639931" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:35.206427" elapsed="0.434120">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:37.644211" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:37.643374" elapsed="0.000908"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:37.646340" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:37.645686" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:37.648420" 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-19T01:35:37.648648" 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-19T01:35:37.648076" elapsed="0.000636"/>
</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-19T01:35:37.657248" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:37.656758" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:37.656700" elapsed="0.000689"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:37.658813" 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-19T01:35:37.659081" 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-19T01:35:37.658377" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:37.660751" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:37.660215" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:37.662539" 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-19T01:35:37.661830" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:37.665020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:37.665115" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:37.664734" 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-19T01:35:37.665347" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:37.666601" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:38.248432" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:37.666277" elapsed="0.582315"/>
</kw>
<msg time="2026-04-19T01:35:38.248704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:37.665896" elapsed="0.582900"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:37.663845" elapsed="0.585263"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:38.250608" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:38.273886" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:38.274451" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:38.274787" 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-19T01:35:38.250207" elapsed="0.024788"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:38.277276" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:38.280682" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:38.279464" elapsed="0.001491"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:38.281851" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:38.281348" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:38.281222" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:38.282962" elapsed="0.000268"/>
</return>
<status status="PASS" start="2026-04-19T01:35:38.282507" elapsed="0.000935"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:38.282399" elapsed="0.001181"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:38.283758" elapsed="0.000087"/>
</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-19T01:35:38.291702" 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-19T01:35:38.292266" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:38.292633" 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-19T01:35:38.286763" elapsed="0.006077"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:37.653164" elapsed="0.639919"/>
</kw>
<msg time="2026-04-19T01:35:38.293395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:37.651628" elapsed="0.641824"/>
</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-19T01:35:37.650269" elapsed="0.643267"/>
</kw>
<msg time="2026-04-19T01:35:38.293578" 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-19T01:35:37.649096" elapsed="0.644529"/>
</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-19T01:35:38.296677" 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-19T01:35:38.297171" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:38.297468" 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-19T01:35:38.293918" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T01:35:38.297707" level="INFO">${output} = 1</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-19T01:35:37.647095" elapsed="0.650638"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:38.298181" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:38.297913" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:38.298273" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:38.298423" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:37.644741" elapsed="0.653708"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:38.298497" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:35:38.298645" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:37.642522" elapsed="0.656148"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:38.299240" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:38.298827" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:37.641423" elapsed="0.657995">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:40.302983" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:40.302240" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:40.305140" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:40.304500" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:40.306949" 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-19T01:35:40.307205" 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-19T01:35:40.306620" elapsed="0.000644"/>
</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-19T01:35:40.312201" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:40.311711" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:40.311654" elapsed="0.000690"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:40.313754" 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-19T01:35:40.313996" 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-19T01:35:40.313321" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:40.315614" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:40.315081" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:40.317407" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:40.316702" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:40.319808" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:40.319885" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:40.319530" 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-19T01:35:40.320159" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:40.321407" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:40.644907" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:40.321084" elapsed="0.323912"/>
</kw>
<msg time="2026-04-19T01:35:40.645071" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:40.320709" elapsed="0.324437"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:40.318691" elapsed="0.326681"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:40.646688" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:40.670483" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:40.670986" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:40.671371" 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-19T01:35:40.646360" elapsed="0.025222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:40.673776" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:40.676942" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:40.675935" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:40.678007" elapsed="0.000096"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:40.677538" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:40.677421" elapsed="0.000906"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:40.679177" elapsed="0.000132"/>
</return>
<status status="PASS" start="2026-04-19T01:35:40.678644" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:40.678537" elapsed="0.001009"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:40.679734" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:40.684430" 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-19T01:35:40.684956" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:40.685318" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:40.681111" elapsed="0.004471"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:40.310117" elapsed="0.375686"/>
</kw>
<msg time="2026-04-19T01:35:40.686122" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:40.309422" elapsed="0.376756"/>
</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-19T01:35:40.308867" elapsed="0.377391"/>
</kw>
<msg time="2026-04-19T01:35:40.686299" 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-19T01:35:40.307750" elapsed="0.378595"/>
</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-19T01:35:40.689356" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:35:40.689827" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:40.690135" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:40.686633" elapsed="0.003650"/>
</kw>
<msg time="2026-04-19T01:35:40.690370" level="INFO">${output} = 1</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-19T01:35:40.305679" elapsed="0.384715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:40.690834" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:40.690567" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:40.690920" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:35:40.691089" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:40.303534" elapsed="0.387580"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:40.691160" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:35:40.691302" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:40.301400" elapsed="0.389926"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:40.691867" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:40.691480" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:40.300329" elapsed="0.391833">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:42.695805" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:42.695001" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:42.697897" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:42.697398" elapsed="0.000537"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:42.699071" 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-19T01:35:42.699216" 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-19T01:35:42.698834" elapsed="0.000420"/>
</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-19T01:35:42.705068" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:42.704222" elapsed="0.000994"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:42.704144" elapsed="0.001187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:42.707424" 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-19T01:35:42.707847" 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-19T01:35:42.706776" elapsed="0.001215"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:42.710094" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:42.709453" elapsed="0.000754"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:42.711927" 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-19T01:35:42.711239" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:42.714303" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:42.714380" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:42.714003" 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-19T01:35:42.714614" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:42.715986" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:43.028683" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:42.715658" elapsed="0.313203"/>
</kw>
<msg time="2026-04-19T01:35:43.028951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:42.715301" elapsed="0.313764"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:42.713254" elapsed="0.316110"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:43.030922" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:43.054090" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:43.054683" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:43.055219" 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-19T01:35:43.030513" elapsed="0.024977"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:43.058384" elapsed="0.001117"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:43.061445" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:43.060787" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:43.062196" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:43.061837" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:43.061752" elapsed="0.000717"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:43.063265" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-19T01:35:43.062795" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:43.062663" elapsed="0.000855"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:43.063690" elapsed="0.000057"/>
</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-19T01:35:43.068901" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T01:35:43.069515" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:43.069890" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:43.065432" elapsed="0.004696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:42.701909" elapsed="0.368458"/>
</kw>
<msg time="2026-04-19T01:35:43.070753" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:42.700963" elapsed="0.369855"/>
</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-19T01:35:42.700208" elapsed="0.370695"/>
</kw>
<msg time="2026-04-19T01:35:43.070946" 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-19T01:35:42.699478" elapsed="0.371516"/>
</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-19T01:35:43.074475" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:35:43.074978" elapsed="0.000267"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:43.075399" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:43.071392" elapsed="0.004188"/>
</kw>
<msg time="2026-04-19T01:35:43.075681" level="INFO">${output} = 1</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-19T01:35:42.698258" elapsed="0.377450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:43.076205" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:43.075917" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:43.076296" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:35:43.076452" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:42.696357" elapsed="0.380121"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:43.076526" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:35:43.076671" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:42.694143" elapsed="0.382553"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:43.077270" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:43.076854" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:42.693008" elapsed="0.384450">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:45.080926" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:45.080168" elapsed="0.000828"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:45.083137" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:45.082479" elapsed="0.000720"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:45.084953" 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-19T01:35:45.085215" 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-19T01:35:45.084625" elapsed="0.000652"/>
</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-19T01:35:45.090826" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:45.090337" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:45.090067" elapsed="0.000897"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:45.092421" 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-19T01:35:45.092661" 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-19T01:35:45.091965" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:45.094318" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:45.093747" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:45.096206" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:45.095490" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:45.098695" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:45.098807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:45.098407" 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-19T01:35:45.099061" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:45.100321" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:45.428932" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:45.099981" elapsed="0.329217"/>
</kw>
<msg time="2026-04-19T01:35:45.429355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:45.099624" elapsed="0.329891"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:45.097531" elapsed="0.332608"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:45.433239" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:45.455833" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:45.456099" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:45.456251" 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-19T01:35:45.432447" elapsed="0.023901"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:45.457378" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:45.459021" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:45.458565" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:45.459556" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:45.459311" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:45.459251" elapsed="0.000441"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:45.460054" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T01:35:45.459836" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:45.459788" elapsed="0.000430"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:45.460298" 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-19T01:35:45.465193" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T01:35:45.465750" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:45.466155" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:45.461637" elapsed="0.004727"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:45.088713" elapsed="0.377872"/>
</kw>
<msg time="2026-04-19T01:35:45.466883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:45.088001" elapsed="0.378939"/>
</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-19T01:35:45.086855" elapsed="0.380331"/>
</kw>
<msg time="2026-04-19T01:35:45.467228" 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-19T01:35:45.085628" elapsed="0.381646"/>
</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-19T01:35:45.470435" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:35:45.470910" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:45.471223" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:45.467563" elapsed="0.003809"/>
</kw>
<msg time="2026-04-19T01:35:45.471463" level="INFO">${output} = 1</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-19T01:35:45.083682" elapsed="0.387806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:45.471916" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:45.471665" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:45.472002" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T01:35:45.472170" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:45.081485" elapsed="0.390710"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:45.472242" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:35:45.472392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:45.079333" elapsed="0.393083"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:45.472963" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:45.472571" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:45.078254" elapsed="0.394936">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:47.476863" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:47.476084" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:47.479125" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:47.478524" elapsed="0.000639"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:47.480283" 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-19T01:35:47.480423" 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-19T01:35:47.480062" elapsed="0.000398"/>
</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-19T01:35:47.486498" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:47.485824" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:47.485457" elapsed="0.001237"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:47.488667" 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-19T01:35:47.489009" 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-19T01:35:47.488056" elapsed="0.001130"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:47.491545" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:47.490714" elapsed="0.000965"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:47.493935" 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-19T01:35:47.492881" elapsed="0.001355"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:47.496729" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:47.496810" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:47.496437" 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-19T01:35:47.497078" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:47.498641" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:47.810371" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:47.498303" elapsed="0.312228"/>
</kw>
<msg time="2026-04-19T01:35:47.810619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:47.497739" elapsed="0.312969"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:47.495608" elapsed="0.315399"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:47.812588" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:47.835187" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:47.835772" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:47.836164" 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-19T01:35:47.812178" elapsed="0.024204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:47.838765" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:47.841999" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:47.840933" elapsed="0.001436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:47.843290" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:47.842723" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:47.842598" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:47.844469" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T01:35:47.843921" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:47.843796" elapsed="0.001036"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:47.845022" elapsed="0.000153"/>
</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-19T01:35:47.850817" elapsed="0.000424"/>
</kw>
<kw name="Open 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-19T01:35:47.851470" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:47.851858" 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-19T01:35:47.847205" elapsed="0.004892"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:47.483595" elapsed="0.368738"/>
</kw>
<msg time="2026-04-19T01:35:47.852654" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:47.482167" elapsed="0.370559"/>
</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-19T01:35:47.481412" elapsed="0.371397"/>
</kw>
<msg time="2026-04-19T01:35:47.852851" 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-19T01:35:47.480679" elapsed="0.372218"/>
</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-19T01:35:47.856144" 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-19T01:35:47.856665" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:47.856976" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:47.853235" elapsed="0.003929"/>
</kw>
<msg time="2026-04-19T01:35:47.857264" level="INFO">${output} = 1</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-19T01:35:47.479468" elapsed="0.377886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:47.857856" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:47.857571" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:47.857946" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:35:47.858198" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:47.477468" elapsed="0.380756"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:47.858276" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:35:47.858428" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:47.475166" elapsed="0.383288"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:47.859022" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:47.858615" elapsed="0.000524">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:47.474000" elapsed="0.385255">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:49.862932" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:49.862026" elapsed="0.000955"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:49.864288" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:49.863885" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:49.865642" 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-19T01:35:49.865785" 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-19T01:35:49.865392" elapsed="0.000431"/>
</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-19T01:35:49.873650" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:49.872956" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:49.870571" elapsed="0.003275"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:49.875868" 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-19T01:35:49.876302" 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-19T01:35:49.875264" elapsed="0.001177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:49.878554" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:49.877783" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:49.880465" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:49.879756" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:49.882822" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:49.882899" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:49.882522" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:49.883148" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:49.884498" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:50.184052" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:49.884172" elapsed="0.300063"/>
</kw>
<msg time="2026-04-19T01:35:50.184308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:49.883692" elapsed="0.300696"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:49.881758" elapsed="0.302877"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:50.186022" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:50.208904" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:50.209437" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:50.209772" 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-19T01:35:50.185670" elapsed="0.024314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:50.212317" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:50.215282" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:50.214532" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:50.215975" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:50.215658" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:50.215578" elapsed="0.000605"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:50.216664" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:35:50.216382" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:50.216317" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:50.217005" elapsed="0.000072"/>
</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-19T01:35:50.223570" elapsed="0.000454"/>
</kw>
<kw name="Open 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-19T01:35:50.224342" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:50.224836" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:50.218929" elapsed="0.006225"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:49.868708" elapsed="0.356757"/>
</kw>
<msg time="2026-04-19T01:35:50.225898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:49.867755" elapsed="0.358228"/>
</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-19T01:35:49.866986" elapsed="0.359287"/>
</kw>
<msg time="2026-04-19T01:35:50.226332" 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-19T01:35:49.866063" elapsed="0.360335"/>
</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-19T01:35:50.229517" 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-19T01:35:50.229995" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:50.230377" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:50.226808" elapsed="0.003724"/>
</kw>
<msg time="2026-04-19T01:35:50.230625" level="INFO">${output} = 1</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-19T01:35:49.864630" elapsed="0.366020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:50.231095" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:50.230832" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:50.231184" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:50.231335" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:49.863308" elapsed="0.368052"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:50.231406" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:35:50.231553" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:49.861212" elapsed="0.370366"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:50.232199" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:50.231787" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:49.860112" elapsed="0.372272">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:52.235868" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:52.235115" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:52.237995" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:52.237401" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:52.239863" 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-19T01:35:52.240150" 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-19T01:35:52.239516" elapsed="0.000701"/>
</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-19T01:35:52.246492" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:52.245999" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:52.245938" elapsed="0.000696"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:52.248376" 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-19T01:35:52.248622" 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-19T01:35:52.247640" elapsed="0.001083"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:52.250272" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:52.249712" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:52.252323" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:52.251369" elapsed="0.001054"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:52.254765" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:52.254843" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:52.254483" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:52.255095" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:52.256388" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:52.598104" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:52.256064" elapsed="0.342180"/>
</kw>
<msg time="2026-04-19T01:35:52.598326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:52.255654" elapsed="0.342756"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:52.253703" elapsed="0.345000"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:52.600216" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:52.623401" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:52.623899" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:52.624282" 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-19T01:35:52.599810" elapsed="0.024685"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:52.626723" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:52.629877" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:52.628886" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:52.630988" elapsed="0.000228"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:52.630492" elapsed="0.000881"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:52.630370" elapsed="0.001131"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:52.632192" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T01:35:52.631824" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:52.631716" elapsed="0.000781"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:52.632575" 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-19T01:35:52.637281" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:52.637821" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:52.638198" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:52.633882" elapsed="0.004522"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:52.244320" elapsed="0.394301"/>
</kw>
<msg time="2026-04-19T01:35:52.638924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:52.242960" elapsed="0.396021"/>
</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-19T01:35:52.241737" elapsed="0.397356"/>
</kw>
<msg time="2026-04-19T01:35:52.639136" 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-19T01:35:52.240570" elapsed="0.398612"/>
</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-19T01:35:52.642306" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:35:52.642780" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:52.643191" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:52.639640" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T01:35:52.643449" level="INFO">${output} = 1</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-19T01:35:52.238572" elapsed="0.404903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:52.643900" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:52.643654" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:52.643986" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:52.644154" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:52.236459" elapsed="0.407720"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:52.644226" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:35:52.644376" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:52.234277" elapsed="0.410123"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:52.644947" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:52.644554" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:52.233217" elapsed="0.411932">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:54.648563" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:54.647798" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:54.650873" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:54.650265" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:54.652715" 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-19T01:35:54.652941" 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-19T01:35:54.652391" elapsed="0.000610"/>
</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-19T01:35:54.657594" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:54.657106" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:54.657047" elapsed="0.000685"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:54.659401" 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-19T01:35:54.659741" 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-19T01:35:54.658744" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:54.661428" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:54.660837" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:54.663249" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:54.662535" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:54.665876" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:54.665954" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:54.665598" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:54.666204" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:54.667460" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:54.980279" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:54.667135" elapsed="0.313243"/>
</kw>
<msg time="2026-04-19T01:35:54.980446" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:54.666760" elapsed="0.313764"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:54.664712" elapsed="0.316044"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:54.982213" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:55.004951" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:55.005485" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:55.005817" 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-19T01:35:54.981802" elapsed="0.024260"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:55.008279" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:55.011440" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:55.010441" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:55.012644" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:55.012018" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:55.011897" elapsed="0.001103"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:55.013602" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:35:55.013315" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:55.013246" elapsed="0.000579"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:55.013936" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:55.020510" elapsed="0.000473"/>
</kw>
<kw name="Open 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-19T01:35:55.021304" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:55.021793" 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-19T01:35:55.015876" elapsed="0.006224"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:54.655701" elapsed="0.366718"/>
</kw>
<msg time="2026-04-19T01:35:55.022845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:54.654983" elapsed="0.367941"/>
</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-19T01:35:54.654447" elapsed="0.368806"/>
</kw>
<msg time="2026-04-19T01:35:55.023326" 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-19T01:35:54.653426" elapsed="0.369970"/>
</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-19T01:35:55.026659" elapsed="0.000305"/>
</kw>
<kw name="Open 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-19T01:35:55.027185" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:55.027479" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:55.023800" elapsed="0.003825"/>
</kw>
<msg time="2026-04-19T01:35:55.027717" level="INFO">${output} = 1</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-19T01:35:54.651451" elapsed="0.376291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:55.028187" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:55.027921" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:55.028273" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:55.028423" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:54.649318" elapsed="0.379129"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:55.028494" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:35:55.028636" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:54.646965" elapsed="0.381695"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:55.029262" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:55.028814" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:54.645916" elapsed="0.383533">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:57.033004" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:57.032248" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:57.035135" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:57.034509" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:57.037060" 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-19T01:35:57.037363" 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-19T01:35:57.036675" elapsed="0.000726"/>
</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-19T01:35:57.042790" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:57.042131" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:57.041992" elapsed="0.000990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:57.045358" 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-19T01:35:57.045697" 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-19T01:35:57.044405" elapsed="0.001430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:57.048005" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:57.047226" elapsed="0.000985"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:57.049984" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:57.049292" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:57.052398" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:57.052477" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:57.052105" 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-19T01:35:57.052713" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:57.054152" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:57.380443" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:57.053766" elapsed="0.326808"/>
</kw>
<msg time="2026-04-19T01:35:57.380658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:57.053394" elapsed="0.327350"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:57.051310" elapsed="0.329698"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:57.382528" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:57.405196" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:57.405692" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:57.406018" 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-19T01:35:57.382138" elapsed="0.024132"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:57.408436" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:57.411603" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:57.410594" elapsed="0.001239"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:57.412715" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:57.412216" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:57.412086" elapsed="0.001013"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:57.413628" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:35:57.413346" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:57.413279" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:57.413959" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:57.420654" 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-19T01:35:57.421529" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:57.422024" elapsed="0.000173"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:57.416000" elapsed="0.006349"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:57.040108" elapsed="0.382554"/>
</kw>
<msg time="2026-04-19T01:35:57.423221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:57.039141" elapsed="0.384161"/>
</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-19T01:35:57.038378" elapsed="0.385039"/>
</kw>
<msg time="2026-04-19T01:35:57.423475" 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-19T01:35:57.037627" elapsed="0.385913"/>
</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-19T01:35:57.427002" 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-19T01:35:57.427552" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:57.427845" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:57.423949" elapsed="0.004044"/>
</kw>
<msg time="2026-04-19T01:35:57.428103" level="INFO">${output} = 1</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-19T01:35:57.035675" elapsed="0.392454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:57.428567" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:57.428307" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:57.428654" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:57.428807" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:57.033574" elapsed="0.395257"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:57.428877" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:35:57.429039" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:57.031389" elapsed="0.397677"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:57.429616" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:57.429226" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:57.030314" elapsed="0.399487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:35:59.433489" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:35:59.432653" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:35:59.435732" level="INFO">${member_ip} = 10.30.171.206</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-19T01:35:59.435091" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:59.437695" 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-19T01:35:59.437949" 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-19T01:35:59.437356" elapsed="0.000656"/>
</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-19T01:35:59.444192" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:35:59.443672" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:59.443377" elapsed="0.001031"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:59.445958" 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-19T01:35:59.446235" 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-19T01:35:59.445451" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:59.447937" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:59.447363" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:35:59.449815" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:35:59.449101" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:35:59.452342" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:35:59.452423" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:35:59.452018" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:59.452693" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:35:59.454016" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:35:59.783904" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:35:59.453672" elapsed="0.330383"/>
</kw>
<msg time="2026-04-19T01:35:59.784140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:59.453302" elapsed="0.330937"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:35:59.451232" elapsed="0.333282"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:35:59.786061" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:35:59.809139" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:35:59.809642" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:35:59.809975" 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-19T01:35:59.785647" elapsed="0.024597"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:59.812522" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:59.815682" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:59.814714" elapsed="0.001221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:59.816822" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:35:59.816323" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:59.816197" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:35:59.817925" elapsed="0.000251"/>
</return>
<status status="PASS" start="2026-04-19T01:35:59.817477" elapsed="0.000908"/>
</branch>
<status status="PASS" start="2026-04-19T01:35:59.817371" elapsed="0.001162"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:35:59.818711" 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-19T01:35:59.823878" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:35:59.824470" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:59.824826" 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-19T01:35:59.820473" elapsed="0.004571"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:35:59.441984" elapsed="0.383284"/>
</kw>
<msg time="2026-04-19T01:35:59.825642" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:35:59.441056" elapsed="0.384645"/>
</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-19T01:35:59.439640" elapsed="0.386143"/>
</kw>
<msg time="2026-04-19T01:35:59.825824" 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-19T01:35:59.438413" elapsed="0.387457"/>
</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-19T01:35:59.828901" 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-19T01:35:59.829393" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:35:59.829690" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:35:59.826226" elapsed="0.003614"/>
</kw>
<msg time="2026-04-19T01:35:59.829930" level="INFO">${output} = 1</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-19T01:35:59.436340" elapsed="0.393615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:35:59.830493" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:35:59.830240" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:35:59.830581" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:35:59.830733" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:35:59.434086" elapsed="0.396673"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:35:59.830806" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:35:59.830950" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:35:59.431768" elapsed="0.399207"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:35:59.831539" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:35:59.831148" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:35:59.430652" elapsed="0.401078">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:01.835211" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:01.834434" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:01.837351" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:01.836725" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:01.838509" 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-19T01:36:01.838654" 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-19T01:36:01.838292" elapsed="0.000399"/>
</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-19T01:36:01.844239" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:01.843577" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:01.843220" elapsed="0.001229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:01.846440" 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-19T01:36:01.846780" 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-19T01:36:01.845806" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:01.849067" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:01.848297" elapsed="0.000922"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:01.850987" 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-19T01:36:01.850292" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:01.853430" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:01.853510" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:01.853133" 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-19T01:36:01.853748" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:01.855259" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:02.181082" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:35:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:01.854894" elapsed="0.326339"/>
</kw>
<msg time="2026-04-19T01:36:02.181319" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:01.854481" elapsed="0.326929"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:01.852357" elapsed="0.329339"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:02.183211" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:02.205996" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:02.206536" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:02.206868" 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-19T01:36:02.182798" elapsed="0.024318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:02.209605" elapsed="0.001104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:02.213006" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:02.211970" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:02.214218" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:02.213651" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:02.213525" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:02.215451" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T01:36:02.214842" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:02.214726" elapsed="0.001081"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:02.215982" elapsed="0.000121"/>
</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-19T01:36:02.221571" 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-19T01:36:02.222135" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:02.222554" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:02.218112" elapsed="0.004649"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:01.841386" elapsed="0.381597"/>
</kw>
<msg time="2026-04-19T01:36:02.223401" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:01.840432" elapsed="0.383035"/>
</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-19T01:36:01.839657" elapsed="0.383892"/>
</kw>
<msg time="2026-04-19T01:36:02.223590" 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-19T01:36:01.838912" elapsed="0.384725"/>
</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-19T01:36:02.226652" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T01:36:02.227232" elapsed="0.000208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:02.227591" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:02.223984" elapsed="0.003755"/>
</kw>
<msg time="2026-04-19T01:36:02.227830" level="INFO">${output} = 1</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-19T01:36:01.837692" elapsed="0.390164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:02.228296" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:02.228045" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:02.228382" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:36:02.228555" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:01.835734" elapsed="0.392850"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:02.228631" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:02.228774" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:01.833577" elapsed="0.395221"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:02.229369" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:02.228954" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:01.832520" elapsed="0.397040">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:04.233122" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:04.232333" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:04.235222" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:04.234591" elapsed="0.000691"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:04.236869" 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-19T01:36:04.237011" 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-19T01:36:04.236651" elapsed="0.000416"/>
</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-19T01:36:04.244574" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:04.243894" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:04.241598" elapsed="0.003169"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:04.246805" 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-19T01:36:04.247161" 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-19T01:36:04.246208" elapsed="0.001122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:04.249203" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:04.248646" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:04.250991" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:04.250300" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:04.253348" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:04.253425" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:04.253066" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:04.253660" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:04.255075" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:04.578026" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:04.254738" elapsed="0.323453"/>
</kw>
<msg time="2026-04-19T01:36:04.578278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:04.254378" elapsed="0.323995"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:04.252301" elapsed="0.326379"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:04.580225" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:04.602761" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:04.603316" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:04.603667" 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-19T01:36:04.579783" elapsed="0.024113"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:04.606305" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:04.609534" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:04.608481" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:04.610679" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:04.610154" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:04.609992" elapsed="0.000979"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:04.611777" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:36:04.611331" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:04.611223" elapsed="0.000942"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:04.612345" elapsed="0.000084"/>
</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-19T01:36:04.620354" 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-19T01:36:04.620923" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:04.621346" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:04.615671" elapsed="0.005883"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:04.239733" elapsed="0.382042"/>
</kw>
<msg time="2026-04-19T01:36:04.622099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:04.238768" elapsed="0.383396"/>
</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-19T01:36:04.237999" elapsed="0.384248"/>
</kw>
<msg time="2026-04-19T01:36:04.622288" 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-19T01:36:04.237289" elapsed="0.385046"/>
</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-19T01:36:04.625394" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:36:04.625873" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:04.626192" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:04.622632" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T01:36:04.626489" level="INFO">${output} = 1</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-19T01:36:04.235813" elapsed="0.390702"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:04.626940" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:04.626690" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:04.627041" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:36:04.627195" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:04.233649" elapsed="0.393572"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:04.627268" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:04.627413" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:04.231462" elapsed="0.395976"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:04.627988" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:04.627596" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:04.230411" elapsed="0.397776">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:06.630567" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:06.630077" elapsed="0.000537"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:06.631887" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:06.631503" elapsed="0.000440"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:06.633749" 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-19T01:36:06.633980" 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-19T01:36:06.633401" elapsed="0.000672"/>
</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-19T01:36:06.642021" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:06.641381" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:06.641303" elapsed="0.000959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:06.644625" 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-19T01:36:06.644881" 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-19T01:36:06.643684" elapsed="0.001300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:06.646561" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:06.645979" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:06.648449" 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-19T01:36:06.647719" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:06.650866" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:06.650944" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:06.650552" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:06.651318" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:06.652581" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:06.968823" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:06.652255" elapsed="0.316857"/>
</kw>
<msg time="2026-04-19T01:36:06.969195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:06.651881" elapsed="0.317410"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:06.649773" elapsed="0.319797"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:06.971044" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:06.993272" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:06.993539" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:06.993689" 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-19T01:36:06.970644" elapsed="0.023141"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:06.994863" elapsed="0.000478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:06.996391" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:06.995916" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:06.996913" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:06.996668" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:06.996606" elapsed="0.000459"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:06.997419" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T01:36:06.997214" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:06.997163" elapsed="0.000425"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:06.997671" 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-19T01:36:07.002442" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:36:07.002992" elapsed="0.000287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:07.003475" 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-19T01:36:06.999091" elapsed="0.004591"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:06.638700" elapsed="0.365204"/>
</kw>
<msg time="2026-04-19T01:36:07.004235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:06.637015" elapsed="0.367282"/>
</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-19T01:36:06.635678" elapsed="0.368703"/>
</kw>
<msg time="2026-04-19T01:36:07.004422" 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-19T01:36:06.634475" elapsed="0.369993"/>
</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-19T01:36:07.007558" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:36:07.008047" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:07.008345" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:07.004755" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T01:36:07.008584" level="INFO">${output} = 1</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-19T01:36:06.632409" elapsed="0.376201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:07.009058" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:07.008791" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:07.009149" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:07.009302" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:06.630905" elapsed="0.378424"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:07.009377" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:07.009525" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:06.629515" elapsed="0.380037"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:07.010211" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:07.009775" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:06.628789" elapsed="0.381610">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:09.013303" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:09.012361" elapsed="0.000994"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:09.014681" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:09.014287" elapsed="0.000432"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:09.015857" 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-19T01:36:09.016002" 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-19T01:36:09.015626" elapsed="0.000432"/>
</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-19T01:36:09.021138" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:09.020660" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:09.020605" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:09.023315" 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-19T01:36:09.023561" 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-19T01:36:09.022438" elapsed="0.001222"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:09.025207" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:09.024644" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:09.026977" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:09.026284" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:09.029454" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:09.029533" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:09.029160" 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-19T01:36:09.029769" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:09.031065" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:09.353612" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:09.030722" elapsed="0.323041"/>
</kw>
<msg time="2026-04-19T01:36:09.353851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:09.030352" elapsed="0.323599"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:09.028354" elapsed="0.325916"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:09.355859" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:09.379181" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:09.379678" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:09.380002" 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-19T01:36:09.355384" elapsed="0.024897"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:09.382482" elapsed="0.000950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:09.385806" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:09.384748" elapsed="0.001319"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:09.386983" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:09.386447" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:09.386319" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:09.388145" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:36:09.387660" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:09.387549" elapsed="0.000954"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:09.388675" elapsed="0.000088"/>
</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-19T01:36:09.395352" 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-19T01:36:09.395920" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:09.396373" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:09.391838" elapsed="0.004769"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:09.018768" elapsed="0.378067"/>
</kw>
<msg time="2026-04-19T01:36:09.397193" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:09.017802" elapsed="0.379454"/>
</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-19T01:36:09.017052" elapsed="0.380289"/>
</kw>
<msg time="2026-04-19T01:36:09.397383" 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-19T01:36:09.016282" elapsed="0.381150"/>
</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-19T01:36:09.400507" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:36:09.400993" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:09.401312" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:09.397726" elapsed="0.003736"/>
</kw>
<msg time="2026-04-19T01:36:09.401554" level="INFO">${output} = 1</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-19T01:36:09.015025" elapsed="0.386558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:09.402024" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:09.401768" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:09.402134" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:09.402290" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:09.013673" elapsed="0.388643"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:09.402364" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:36:09.402510" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:09.011814" elapsed="0.390722"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:09.403187" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:09.402695" elapsed="0.000578">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:09.011072" elapsed="0.392316">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:11.405468" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:11.405094" elapsed="0.000412"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:11.406555" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:11.406280" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:11.407400" 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-19T01:36:11.407502" 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-19T01:36:11.407226" elapsed="0.000302"/>
</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-19T01:36:11.411321" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:11.410821" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:11.410763" elapsed="0.000694"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:11.413217" 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-19T01:36:11.413461" 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-19T01:36:11.412515" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:11.415124" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:11.414524" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:11.416907" 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-19T01:36:11.416212" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:11.419354" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:11.419431" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:11.418966" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:11.419665" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:11.420947" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:11.738292" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:11.420621" elapsed="0.317836"/>
</kw>
<msg time="2026-04-19T01:36:11.738547" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:11.420261" elapsed="0.318378"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:11.418210" elapsed="0.320735"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:11.740474" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:11.763671" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:11.764245" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:11.764571" 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-19T01:36:11.740070" elapsed="0.024710"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:11.767336" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:11.770585" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:11.769581" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:11.771808" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:11.771204" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:11.771080" elapsed="0.001057"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:11.772895" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T01:36:11.772451" elapsed="0.000885"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:11.772346" elapsed="0.001119"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:11.773644" elapsed="0.000081"/>
</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-19T01:36:11.779560" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:36:11.780157" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:11.780521" 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-19T01:36:11.776117" elapsed="0.004612"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:11.409466" elapsed="0.371487"/>
</kw>
<msg time="2026-04-19T01:36:11.781323" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:11.408777" elapsed="0.372607"/>
</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-19T01:36:11.408236" elapsed="0.373231"/>
</kw>
<msg time="2026-04-19T01:36:11.781509" 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-19T01:36:11.407689" elapsed="0.373865"/>
</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-19T01:36:11.784507" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:11.784979" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:11.785379" 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-19T01:36:11.781843" elapsed="0.003683"/>
</kw>
<msg time="2026-04-19T01:36:11.785618" level="INFO">${output} = 1</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-19T01:36:11.406798" elapsed="0.378846"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:11.786082" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:11.785821" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:11.786171" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:11.786323" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:11.405847" elapsed="0.380501"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:11.786395" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:11.786538" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:11.404692" elapsed="0.381870"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:11.787155" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:11.786745" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:11.404131" elapsed="0.383219">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:13.791026" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:13.790261" elapsed="0.000876"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:13.793296" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:13.792542" elapsed="0.000856"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:13.795280" 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-19T01:36:13.795645" 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-19T01:36:13.794890" elapsed="0.000817"/>
</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-19T01:36:13.800938" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:13.800468" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:13.800192" elapsed="0.000905"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:13.802527" 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-19T01:36:13.802773" 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-19T01:36:13.802088" elapsed="0.000785"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:13.804392" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:13.803841" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:13.806248" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:13.805539" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:13.808601" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:13.808680" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:13.808322" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:13.808917" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:13.810288" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:14.128154" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:13.809951" elapsed="0.318404"/>
</kw>
<msg time="2026-04-19T01:36:14.128465" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:13.809593" elapsed="0.318987"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:13.807552" elapsed="0.321373"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:14.130810" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:14.154176" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:14.154629" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:14.154853" 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-19T01:36:14.130326" elapsed="0.024671"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:14.156519" elapsed="0.000734"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:14.158739" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:14.158090" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:14.159482" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:14.159138" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:14.159050" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:14.160195" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T01:36:14.159874" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:14.159803" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:14.160566" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:14.167268" 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-19T01:36:14.168218" elapsed="0.000265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:14.168763" elapsed="0.000154"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:14.162467" elapsed="0.006750"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:13.798853" elapsed="0.370676"/>
</kw>
<msg time="2026-04-19T01:36:14.169957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:13.798142" elapsed="0.371926"/>
</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-19T01:36:13.797313" elapsed="0.372882"/>
</kw>
<msg time="2026-04-19T01:36:14.170258" 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-19T01:36:13.796100" elapsed="0.374226"/>
</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-19T01:36:14.174758" 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-19T01:36:14.175487" elapsed="0.000215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:14.175921" elapsed="0.000179"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:14.170758" elapsed="0.005419"/>
</kw>
<msg time="2026-04-19T01:36:14.176341" level="INFO">${output} = 1</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-19T01:36:13.793936" elapsed="0.382443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:14.177297" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:14.176673" elapsed="0.000692"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:14.177432" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T01:36:14.177668" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:13.791597" elapsed="0.386109"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:14.177775" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T01:36:14.177990" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:13.789364" elapsed="0.388680"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:14.178872" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:14.178287" elapsed="0.000903">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:13.788227" elapsed="0.391132">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:16.182845" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:16.182115" elapsed="0.000801"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:16.184943" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:16.184339" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:16.186784" 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-19T01:36:16.187009" 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-19T01:36:16.186459" elapsed="0.000641"/>
</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-19T01:36:16.193396" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:16.192729" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:16.192359" elapsed="0.001347"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:16.195759" 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-19T01:36:16.196157" 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-19T01:36:16.195139" elapsed="0.001158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:16.198432" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:16.197659" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:16.200968" 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-19T01:36:16.199958" elapsed="0.001127"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:16.203363" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:16.203441" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:16.203081" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:16.203676" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:16.204962" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:16.526529" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:16.204638" elapsed="0.322053"/>
</kw>
<msg time="2026-04-19T01:36:16.526778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:16.204276" elapsed="0.322590"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:16.202302" elapsed="0.324893"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:16.528790" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:16.551541" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:16.552090" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:16.552430" 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-19T01:36:16.528364" elapsed="0.024277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:16.554899" elapsed="0.000935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:16.557308" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:16.556650" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:16.558018" elapsed="0.000113"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:16.557686" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:16.557603" elapsed="0.000679"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:16.558785" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:36:16.558483" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:16.558416" elapsed="0.000584"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:16.559132" elapsed="0.000051"/>
</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-19T01:36:16.565505" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:36:16.566172" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:16.566546" 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-19T01:36:16.560976" elapsed="0.005774"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:16.190454" elapsed="0.376514"/>
</kw>
<msg time="2026-04-19T01:36:16.567375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:16.189494" elapsed="0.377942"/>
</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-19T01:36:16.188679" elapsed="0.378841"/>
</kw>
<msg time="2026-04-19T01:36:16.567561" 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-19T01:36:16.187452" elapsed="0.380155"/>
</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-19T01:36:16.570685" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:16.571173" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:16.571495" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:16.567900" elapsed="0.003743"/>
</kw>
<msg time="2026-04-19T01:36:16.571733" level="INFO">${output} = 1</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-19T01:36:16.185520" elapsed="0.386238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:16.572200" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:16.571937" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:16.572287" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:16.572438" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:16.183394" elapsed="0.389069"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:16.572509" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:16.572651" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:16.181279" elapsed="0.391397"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:16.573266" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:16.572831" elapsed="0.000515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:16.180239" elapsed="0.393220">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:18.576955" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:18.576208" elapsed="0.000817"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:18.579080" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:18.578453" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:18.580915" 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-19T01:36:18.581174" 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-19T01:36:18.580591" elapsed="0.000644"/>
</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-19T01:36:18.588906" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:18.588419" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:18.586596" elapsed="0.002464"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:18.590493" 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-19T01:36:18.590734" 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-19T01:36:18.590026" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:18.592401" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:18.591833" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:18.594261" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:18.593539" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:18.596707" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:18.596801" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:18.596425" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:18.597049" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:18.598298" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:18.910923" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:18.597951" elapsed="0.313106"/>
</kw>
<msg time="2026-04-19T01:36:18.911146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:18.597598" elapsed="0.313631"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:18.595633" elapsed="0.315860"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:18.913014" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:18.935708" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:18.936275" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:18.936614" 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-19T01:36:18.912614" elapsed="0.024214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:18.939162" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:18.941575" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:18.940902" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:18.942345" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:18.941966" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:18.941884" elapsed="0.000656"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:18.943087" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-19T01:36:18.942766" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:18.942687" elapsed="0.000654"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:18.943498" elapsed="0.000063"/>
</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-19T01:36:18.950391" 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-19T01:36:18.951221" elapsed="0.000269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:18.951780" 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-19T01:36:18.945532" elapsed="0.006533"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:18.585283" elapsed="0.367019"/>
</kw>
<msg time="2026-04-19T01:36:18.952610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:18.583964" elapsed="0.368704"/>
</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-19T01:36:18.582748" elapsed="0.370017"/>
</kw>
<msg time="2026-04-19T01:36:18.952808" 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-19T01:36:18.581585" elapsed="0.371271"/>
</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-19T01:36:18.956060" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:18.956548" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:18.956846" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:18.953373" elapsed="0.003623"/>
</kw>
<msg time="2026-04-19T01:36:18.957124" level="INFO">${output} = 1</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-19T01:36:18.579624" elapsed="0.377526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:18.957632" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:18.957333" elapsed="0.000345"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:18.957723" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:18.957877" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:18.577511" elapsed="0.380390"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:18.957948" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:18.958112" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:18.575356" elapsed="0.382782"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:18.958696" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:18.958298" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:18.574286" elapsed="0.384601">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:20.962388" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:20.961628" elapsed="0.000828"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:20.964488" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:20.963852" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:20.966426" 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-19T01:36:20.966657" 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-19T01:36:20.966010" elapsed="0.000706"/>
</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-19T01:36:20.972357" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:20.971877" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:20.971819" elapsed="0.000677"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:20.974157" 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-19T01:36:20.974404" 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-19T01:36:20.973489" elapsed="0.001015"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:20.976088" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:20.975485" elapsed="0.000715"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:20.977870" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:20.977182" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:20.980348" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:20.980427" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:20.979945" elapsed="0.000506"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:20.980663" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:20.982009" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:21.309576" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:20.981684" elapsed="0.328073"/>
</kw>
<msg time="2026-04-19T01:36:21.309853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:20.981318" elapsed="0.328634"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:20.979187" elapsed="0.331096"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:21.311862" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:21.335088" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:21.335648" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:21.335987" 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-19T01:36:21.311431" elapsed="0.024808"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:21.338628" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:21.341557" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:21.340827" elapsed="0.000875"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:21.342320" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:21.341923" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:21.341845" elapsed="0.000657"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:21.342981" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T01:36:21.342701" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:21.342634" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:21.343342" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:21.349989" elapsed="0.000460"/>
</kw>
<kw name="Open 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-19T01:36:21.350660" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:21.351013" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:21.345236" elapsed="0.006001"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:20.970500" elapsed="0.380958"/>
</kw>
<msg time="2026-04-19T01:36:21.351765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:20.969542" elapsed="0.382286"/>
</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-19T01:36:20.968273" elapsed="0.383636"/>
</kw>
<msg time="2026-04-19T01:36:21.351950" 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-19T01:36:20.967104" elapsed="0.384891"/>
</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-19T01:36:21.355023" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:36:21.355545" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:21.355845" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:21.352310" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T01:36:21.356157" level="INFO">${output} = 1</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-19T01:36:20.965091" elapsed="0.391093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:21.356662" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:21.356377" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:21.356753" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:21.356907" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:20.962908" elapsed="0.394024"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:21.356981" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:21.357158" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:20.960763" elapsed="0.396420"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:21.357736" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:21.357342" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:20.959688" elapsed="0.398234">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:23.361528" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:23.360743" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:23.363655" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:23.363020" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:23.365512" 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-19T01:36:23.365738" 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-19T01:36:23.365179" elapsed="0.000618"/>
</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-19T01:36:23.370324" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:23.369823" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:23.369765" elapsed="0.000695"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:23.372123" 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-19T01:36:23.372367" 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-19T01:36:23.371437" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:23.374008" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:23.373464" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:23.375870" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:23.375184" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:23.378254" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:23.378332" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:23.377918" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:23.378570" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:23.379990" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:23.732088" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:23.379667" elapsed="0.352621"/>
</kw>
<msg time="2026-04-19T01:36:23.732363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:23.379306" elapsed="0.353140"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:23.377164" elapsed="0.355540"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:23.734176" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:23.756661" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:23.757206" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:23.757541" 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-19T01:36:23.733768" elapsed="0.024005"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:23.760010" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:23.763316" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:23.762256" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:23.764426" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:23.763884" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:23.763764" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:23.765527" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:36:23.765056" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:23.764924" elapsed="0.001008"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:23.766197" elapsed="0.000058"/>
</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-19T01:36:23.770867" elapsed="0.000397"/>
</kw>
<kw name="Open 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-19T01:36:23.771474" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:23.771824" 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-19T01:36:23.767607" elapsed="0.004434"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:23.368456" elapsed="0.403806"/>
</kw>
<msg time="2026-04-19T01:36:23.772583" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:23.367767" elapsed="0.404875"/>
</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-19T01:36:23.367231" elapsed="0.405494"/>
</kw>
<msg time="2026-04-19T01:36:23.772766" 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-19T01:36:23.366225" elapsed="0.406588"/>
</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-19T01:36:23.775794" 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-19T01:36:23.776288" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:23.776582" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:23.773126" elapsed="0.003604"/>
</kw>
<msg time="2026-04-19T01:36:23.776820" level="INFO">${output} = 1</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-19T01:36:23.364230" elapsed="0.412616"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:23.777288" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:23.777023" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:23.777378" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:23.777529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:23.362103" elapsed="0.415451"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:23.777601" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:23.777975" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:23.359832" elapsed="0.418177"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:23.778691" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:23.778281" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:23.358738" elapsed="0.420135">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:25.782432" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:25.781666" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:25.784418" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:25.783949" elapsed="0.000507"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:25.785571" 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-19T01:36:25.785714" 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-19T01:36:25.785353" elapsed="0.000397"/>
</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-19T01:36:25.791314" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:25.790661" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:25.790584" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:25.793833" 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-19T01:36:25.794216" 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-19T01:36:25.792897" elapsed="0.001463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:25.796597" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:25.795941" elapsed="0.000768"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:25.798431" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:25.797706" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:25.800947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:25.801025" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:25.800633" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:25.801274" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:25.802534" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:26.130757" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:25.802211" elapsed="0.328683"/>
</kw>
<msg time="2026-04-19T01:36:26.130975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:25.801824" elapsed="0.329260"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:25.799862" elapsed="0.331498"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:26.132824" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:26.156118" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:26.156610" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:26.156941" 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-19T01:36:26.132442" elapsed="0.024749"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:26.159419" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:26.162685" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:26.161658" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:26.163829" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:26.163311" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:26.163184" elapsed="0.000974"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:26.164936" elapsed="0.000263"/>
</return>
<status status="PASS" start="2026-04-19T01:36:26.164485" elapsed="0.000929"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:26.164378" elapsed="0.001172"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:26.165726" elapsed="0.000085"/>
</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-19T01:36:26.170663" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:36:26.171220" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:26.171585" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:26.167329" elapsed="0.004466"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:25.788554" elapsed="0.383466"/>
</kw>
<msg time="2026-04-19T01:36:26.172342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:25.787485" elapsed="0.384915"/>
</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-19T01:36:25.786709" elapsed="0.385774"/>
</kw>
<msg time="2026-04-19T01:36:26.172525" 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-19T01:36:25.785971" elapsed="0.386601"/>
</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-19T01:36:26.175606" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:36:26.176096" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:26.176391" 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-19T01:36:26.172865" elapsed="0.003673"/>
</kw>
<msg time="2026-04-19T01:36:26.176627" level="INFO">${output} = 1</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-19T01:36:25.784760" elapsed="0.391894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:26.177182" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:26.176832" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:26.177271" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:26.177426" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:25.782959" elapsed="0.394492"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:26.177498" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:36:26.177640" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:25.780830" elapsed="0.396835"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:26.178231" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:26.177818" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:25.779721" elapsed="0.398706">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:28.182279" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:28.181285" elapsed="0.001063"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:28.184780" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:28.184161" elapsed="0.000680"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:28.186532" 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-19T01:36:28.186676" 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-19T01:36:28.186295" elapsed="0.000418"/>
</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-19T01:36:28.192275" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:28.191614" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:28.191244" elapsed="0.001224"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:28.194455" 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-19T01:36:28.194790" 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-19T01:36:28.193828" elapsed="0.001101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:28.197052" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:28.196286" elapsed="0.000922"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:28.199366" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:28.198539" elapsed="0.000923"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:28.201706" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:28.201784" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:28.201426" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:28.202017" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:28.203403" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:28.530408" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:28.202956" elapsed="0.327568"/>
</kw>
<msg time="2026-04-19T01:36:28.530602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:28.202596" elapsed="0.328089"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:28.200642" elapsed="0.330289"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:28.532379" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:28.555851" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:28.556508" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:28.556952" 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-19T01:36:28.531995" elapsed="0.025247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:28.559474" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:28.562727" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:28.561743" elapsed="0.001214"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:28.564002" elapsed="0.000104"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:28.563339" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:28.563214" elapsed="0.001127"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:28.565274" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:36:28.564664" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:28.564557" elapsed="0.001076"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:28.565809" elapsed="0.000140"/>
</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-19T01:36:28.570706" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:36:28.571264" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:28.571618" 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-19T01:36:28.567402" elapsed="0.004423"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:28.189397" elapsed="0.382665"/>
</kw>
<msg time="2026-04-19T01:36:28.572372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:28.188431" elapsed="0.383999"/>
</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-19T01:36:28.187664" elapsed="0.384849"/>
</kw>
<msg time="2026-04-19T01:36:28.572555" 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-19T01:36:28.186933" elapsed="0.385668"/>
</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-19T01:36:28.575628" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:36:28.576117" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:28.576413" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:28.572892" elapsed="0.003666"/>
</kw>
<msg time="2026-04-19T01:36:28.576650" level="INFO">${output} = 1</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-19T01:36:28.185357" elapsed="0.391318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:28.577210" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:28.576854" elapsed="0.000407"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:28.577304" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:28.577457" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:28.183169" elapsed="0.394313"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:28.577529" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:28.577673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:28.180440" elapsed="0.397257"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:28.578289" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:28.577873" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:28.179387" elapsed="0.399094">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:30.582215" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:30.581424" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:30.584367" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:30.583730" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:30.586313" 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-19T01:36:30.586721" 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-19T01:36:30.585909" elapsed="0.000874"/>
</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-19T01:36:30.593072" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:30.592550" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:30.592222" elapsed="0.001016"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:30.594772" 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-19T01:36:30.595046" 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-19T01:36:30.594278" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:30.596739" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:30.596172" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:30.598716" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:30.597961" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:30.601356" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:30.601437" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:30.600912" 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-19T01:36:30.601681" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:30.603017" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:30.932301" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:30.602677" elapsed="0.329767"/>
</kw>
<msg time="2026-04-19T01:36:30.932528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:30.602309" elapsed="0.330305"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:30.600108" elapsed="0.332781"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:30.934393" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:30.957137" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:30.957669" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:30.958024" 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-19T01:36:30.933977" elapsed="0.024320"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:30.960783" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:30.964368" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:30.963244" elapsed="0.001371"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:30.965544" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:30.964985" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:30.964855" elapsed="0.001008"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:30.966795" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T01:36:30.966248" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:30.966131" elapsed="0.001116"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:30.967419" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:30.972174" 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-19T01:36:30.972774" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:30.973151" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:30.968834" elapsed="0.004526"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:30.590797" elapsed="0.382787"/>
</kw>
<msg time="2026-04-19T01:36:30.973895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:30.589786" elapsed="0.384167"/>
</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-19T01:36:30.588404" elapsed="0.385645"/>
</kw>
<msg time="2026-04-19T01:36:30.974093" 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-19T01:36:30.587175" elapsed="0.386966"/>
</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-19T01:36:30.977260" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:36:30.977751" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:30.978071" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:30.974439" elapsed="0.003784"/>
</kw>
<msg time="2026-04-19T01:36:30.978314" level="INFO">${output} = 1</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-19T01:36:30.584924" elapsed="0.393415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:30.978801" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:30.978551" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:30.978890" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:30.979073" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:30.582761" elapsed="0.396339"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:30.979148" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:36:30.979292" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:30.580527" elapsed="0.398793"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:30.979871" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:30.979480" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:30.579432" elapsed="0.400701">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:32.983728" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:32.982927" elapsed="0.000919"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:32.985968" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:32.985338" elapsed="0.000742"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:32.988000" 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-19T01:36:32.988320" 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-19T01:36:32.987607" elapsed="0.000777"/>
</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-19T01:36:32.999073" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:32.998528" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:32.995757" elapsed="0.003524"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:33.000759" 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-19T01:36:33.001005" 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-19T01:36:33.000284" elapsed="0.000840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:33.002672" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:33.002115" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:33.004522" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:33.003798" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:33.006952" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:33.007214" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:33.006659" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:33.007459" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:33.009065" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:33.319934" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:33.008580" elapsed="0.311543"/>
</kw>
<msg time="2026-04-19T01:36:33.320234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:33.008207" elapsed="0.312144"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:33.005825" elapsed="0.314850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:33.322228" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:33.344787" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:33.345337" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:33.345697" 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-19T01:36:33.321790" elapsed="0.024119"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:33.348200" elapsed="0.000769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:33.350421" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:33.349781" elapsed="0.000784"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:33.351141" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:33.350791" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:33.350710" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:33.351841" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:36:33.351561" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:33.351480" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:33.352196" elapsed="0.000066"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:33.358925" elapsed="0.000495"/>
</kw>
<kw name="Open 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-19T01:36:33.359743" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:33.360287" elapsed="0.000160"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:33.354188" elapsed="0.006382"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:32.993297" elapsed="0.367498"/>
</kw>
<msg time="2026-04-19T01:36:33.361179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:32.991357" elapsed="0.369879"/>
</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-19T01:36:32.989937" elapsed="0.371382"/>
</kw>
<msg time="2026-04-19T01:36:33.361361" 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-19T01:36:32.988747" elapsed="0.372660"/>
</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-19T01:36:33.364483" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:36:33.364958" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:33.365273" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:33.361699" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T01:36:33.365517" level="INFO">${output} = 1</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-19T01:36:32.986624" elapsed="0.378919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:33.365971" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:33.365724" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:33.366090" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:33.366244" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:32.984344" elapsed="0.381926"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:33.366316" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:36:33.366459" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:32.982025" elapsed="0.384459"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:33.367116" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:33.366639" elapsed="0.000551">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:32.980944" elapsed="0.386354">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:35.371371" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:35.370329" elapsed="0.001133"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:35.373882" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:35.373097" elapsed="0.000864"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:35.375415" 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-19T01:36:35.375560" 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-19T01:36:35.375180" elapsed="0.000428"/>
</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-19T01:36:35.381382" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:35.380703" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:35.380621" elapsed="0.000961"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:35.384140" 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-19T01:36:35.384393" 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-19T01:36:35.383133" elapsed="0.001364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:35.386227" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:35.385656" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:35.388294" 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-19T01:36:35.387490" elapsed="0.000906"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:35.390723" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:35.390804" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:35.390432" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:35.391163" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:35.392630" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:35.707187" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:35.392292" elapsed="0.314996"/>
</kw>
<msg time="2026-04-19T01:36:35.707357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:35.391762" elapsed="0.315671"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:35.389625" elapsed="0.318045"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:35.709070" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:35.731859" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:35.732397" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:35.732728" 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-19T01:36:35.708693" elapsed="0.024245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:35.735217" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:35.738376" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:35.737358" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:35.739464" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:35.738944" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:35.738825" elapsed="0.000926"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:35.740550" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T01:36:35.740101" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:35.739965" elapsed="0.000928"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:35.741095" elapsed="0.000086"/>
</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-19T01:36:35.748827" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:35.749380" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:35.749746" 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-19T01:36:35.744128" elapsed="0.005826"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:35.378618" elapsed="0.371632"/>
</kw>
<msg time="2026-04-19T01:36:35.750552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:35.377648" elapsed="0.372960"/>
</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-19T01:36:35.376849" elapsed="0.373839"/>
</kw>
<msg time="2026-04-19T01:36:35.750729" 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-19T01:36:35.375897" elapsed="0.374878"/>
</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-19T01:36:35.753820" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T01:36:35.754373" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:35.754666" 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-19T01:36:35.751146" elapsed="0.003666"/>
</kw>
<msg time="2026-04-19T01:36:35.754903" level="INFO">${output} = 1</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-19T01:36:35.374514" elapsed="0.380414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:35.755367" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:35.755120" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:35.755455" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:35.755606" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:35.372097" elapsed="0.383534"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:35.755677" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:36:35.755821" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:35.369256" elapsed="0.386589"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:35.756527" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:35.756001" elapsed="0.000601">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:35.368095" elapsed="0.388621">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:37.760732" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:37.759922" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:37.762934" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:37.762259" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:37.764423" 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-19T01:36:37.764564" 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-19T01:36:37.764200" elapsed="0.000402"/>
</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-19T01:36:37.769963" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:37.769338" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:37.769264" elapsed="0.000912"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:37.772475" 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-19T01:36:37.772819" 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-19T01:36:37.771540" elapsed="0.001416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:37.775135" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:37.774319" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:37.777113" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:37.776410" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:37.779569" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:37.779648" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:37.779272" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:37.779883" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:37.781357" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:38.101049" 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 Sun Apr 19 01:35:37 UTC 2026

  System load:  0.05               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:37.781009" elapsed="0.320135"/>
</kw>
<msg time="2026-04-19T01:36:38.101211" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:37.780636" elapsed="0.320649"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:37.778441" elapsed="0.323080"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:38.102910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:38.125909" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:38.126452" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:38.126821" 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-19T01:36:38.102565" elapsed="0.024505"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:38.129277" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:38.132444" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:38.131442" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:38.133568" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:38.133058" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:38.132911" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:38.134666" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:36:38.134218" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:38.134107" elapsed="0.000906"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:38.135343" elapsed="0.000085"/>
</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-19T01:36:38.141901" 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-19T01:36:38.142476" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:38.142834" 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-19T01:36:38.138386" elapsed="0.004740"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:37.767411" elapsed="0.375966"/>
</kw>
<msg time="2026-04-19T01:36:38.143685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:37.766403" elapsed="0.377339"/>
</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-19T01:36:37.765558" elapsed="0.378266"/>
</kw>
<msg time="2026-04-19T01:36:38.143864" 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-19T01:36:37.764822" elapsed="0.379088"/>
</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-19T01:36:38.146873" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T01:36:38.147451" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:38.147753" 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-19T01:36:38.144217" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T01:36:38.148056" level="INFO">${output} = 1</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-19T01:36:37.763516" elapsed="0.384568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:38.148511" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:38.148262" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:38.148603" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:38.148754" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:37.761323" elapsed="0.387456"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:38.148826" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:38.148970" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:37.758888" elapsed="0.390106"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:38.149587" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:38.149166" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:37.757593" elapsed="0.392182">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:40.153293" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:40.152526" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:40.155440" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:40.154804" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:40.157092" 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-19T01:36:40.157238" 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-19T01:36:40.156853" elapsed="0.000422"/>
</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-19T01:36:40.162515" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:40.161868" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:40.161791" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:40.165098" 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-19T01:36:40.165453" 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-19T01:36:40.164089" elapsed="0.001504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:40.167734" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:40.166947" elapsed="0.000955"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:40.169959" 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-19T01:36:40.169250" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:40.172451" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:40.172531" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:40.172147" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:40.172776" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:40.174216" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:40.739850" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:40.173864" elapsed="0.566349"/>
</kw>
<msg time="2026-04-19T01:36:40.740336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:40.173487" elapsed="0.566973"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:40.171342" elapsed="0.569441"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:40.742401" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:40.765965" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:40.766600" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:40.766971" 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-19T01:36:40.741941" elapsed="0.025296"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:40.769561" elapsed="0.001009"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:40.773006" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:40.771936" elapsed="0.001351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:40.774244" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:40.773678" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:40.773542" elapsed="0.001036"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:40.775605" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:36:40.774974" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:40.774856" elapsed="0.001017"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:40.775987" elapsed="0.000074"/>
</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-19T01:36:40.782724" elapsed="0.000560"/>
</kw>
<kw name="Open 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-19T01:36:40.783583" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:40.784115" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:40.777871" elapsed="0.006539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:40.159924" elapsed="0.624799"/>
</kw>
<msg time="2026-04-19T01:36:40.785175" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:40.158975" elapsed="0.626285"/>
</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-19T01:36:40.158234" elapsed="0.627144"/>
</kw>
<msg time="2026-04-19T01:36:40.785436" 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-19T01:36:40.157496" elapsed="0.628007"/>
</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-19T01:36:40.789240" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:36:40.789724" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:40.790037" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:40.785913" elapsed="0.004277"/>
</kw>
<msg time="2026-04-19T01:36:40.790284" level="INFO">${output} = 1</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-19T01:36:40.155983" elapsed="0.634326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:40.790745" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:40.790490" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:40.790845" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:40.791001" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:40.153853" elapsed="0.637213"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:40.791119" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:36:40.791268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:40.151664" elapsed="0.639629"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:40.791932" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:40.791518" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:40.150601" elapsed="0.641546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:42.795691" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:42.794880" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:42.797881" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:42.797253" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:42.799834" 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-19T01:36:42.800093" 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-19T01:36:42.799488" elapsed="0.000668"/>
</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-19T01:36:42.808558" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:42.808063" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:42.807729" elapsed="0.000974"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:42.810210" 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-19T01:36:42.810466" 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-19T01:36:42.809731" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:42.812150" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:42.811589" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:42.813958" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:42.813270" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:42.816627" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:42.816734" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:42.816236" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:42.817232" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:42.819042" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:43.140627" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:42.818524" elapsed="0.322260"/>
</kw>
<msg time="2026-04-19T01:36:43.140871" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:42.818003" elapsed="0.322957"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:42.815317" elapsed="0.325965"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:43.142855" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:43.165645" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:43.166418" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:43.166812" 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-19T01:36:43.142443" elapsed="0.024500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:43.168296" elapsed="0.000556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:43.170339" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:43.169655" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:43.171086" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:43.170731" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:43.170649" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:43.171808" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:36:43.171514" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:43.171444" elapsed="0.000607"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:43.172144" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:43.177347" elapsed="0.000482"/>
</kw>
<kw name="Open 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-19T01:36:43.178187" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:43.178699" 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-19T01:36:43.173570" elapsed="0.005428"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:42.804551" elapsed="0.374992"/>
</kw>
<msg time="2026-04-19T01:36:43.179975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:42.802999" elapsed="0.377078"/>
</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-19T01:36:42.801688" elapsed="0.378507"/>
</kw>
<msg time="2026-04-19T01:36:43.180254" 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-19T01:36:42.800509" elapsed="0.379810"/>
</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-19T01:36:43.184610" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T01:36:43.185302" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:43.185734" 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-19T01:36:43.180788" elapsed="0.005153"/>
</kw>
<msg time="2026-04-19T01:36:43.186127" level="INFO">${output} = 1</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-19T01:36:42.798495" elapsed="0.387675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:43.186767" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:43.186437" elapsed="0.000373"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:43.186853" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:43.187005" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:42.796261" elapsed="0.390826"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:43.187138" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:36:43.187285" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:42.793943" elapsed="0.393366"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:43.187868" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:43.187468" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:42.792793" elapsed="0.395283">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:45.191684" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:45.190874" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:45.193939" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:45.193339" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:45.195866" 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-19T01:36:45.196131" 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-19T01:36:45.195503" elapsed="0.000690"/>
</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-19T01:36:45.202212" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:45.201716" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:45.201449" elapsed="0.000906"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:45.203813" 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-19T01:36:45.204075" 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-19T01:36:45.203372" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:45.205714" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:45.205171" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:45.207531" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:45.206810" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:45.209973" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:45.210087" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:45.209693" 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-19T01:36:45.210325" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:45.211601" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:45.534449" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:45.211274" elapsed="0.323348"/>
</kw>
<msg time="2026-04-19T01:36:45.534708" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:45.210876" elapsed="0.323928"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:45.208838" elapsed="0.326283"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:45.536640" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:45.559445" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:45.559964" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:45.560355" 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-19T01:36:45.536209" elapsed="0.024390"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:45.562983" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:45.566250" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:45.565263" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:45.567542" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:45.566867" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:45.566735" elapsed="0.001122"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:45.568723" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T01:36:45.568235" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:45.568117" elapsed="0.001160"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:45.569495" elapsed="0.000093"/>
</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-19T01:36:45.575227" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:45.575773" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:45.576150" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:45.571736" elapsed="0.004625"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:45.200136" elapsed="0.376452"/>
</kw>
<msg time="2026-04-19T01:36:45.576898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:45.198975" elapsed="0.377984"/>
</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-19T01:36:45.197713" elapsed="0.379367"/>
</kw>
<msg time="2026-04-19T01:36:45.577123" 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-19T01:36:45.196547" elapsed="0.380622"/>
</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-19T01:36:45.580140" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:36:45.580616" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:45.580909" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:45.577460" elapsed="0.003640"/>
</kw>
<msg time="2026-04-19T01:36:45.581193" level="INFO">${output} = 1</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-19T01:36:45.194512" elapsed="0.386707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:45.581643" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:45.581396" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:45.581731" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:45.581882" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:45.192384" elapsed="0.389524"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:45.581956" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:36:45.582182" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:45.190062" elapsed="0.392145"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:45.582780" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:45.582364" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:45.188955" elapsed="0.394005">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:47.586564" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:47.585789" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:47.588755" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:47.588142" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:47.589955" 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-19T01:36:47.590220" 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-19T01:36:47.589737" elapsed="0.000522"/>
</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-19T01:36:47.597915" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:47.597144" elapsed="0.000932"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:47.594787" elapsed="0.003376"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:47.600232" 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-19T01:36:47.600570" 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-19T01:36:47.599561" elapsed="0.001149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:47.602414" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:47.601800" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:47.604231" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:47.603498" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:47.606660" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:47.606738" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:47.606378" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:47.606971" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:47.608248" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:47.921567" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:47.607910" elapsed="0.313805"/>
</kw>
<msg time="2026-04-19T01:36:47.921803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:47.607543" elapsed="0.314348"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:47.605538" elapsed="0.316673"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:47.923751" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:47.946600" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:47.947162" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:47.947565" 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-19T01:36:47.923321" elapsed="0.024463"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:47.950105" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:47.953489" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:47.952413" elapsed="0.001332"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:47.954667" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:47.954139" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:47.953976" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:47.956000" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T01:36:47.955565" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:47.955363" elapsed="0.000923"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:47.956399" elapsed="0.000055"/>
</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-19T01:36:47.963297" elapsed="0.000511"/>
</kw>
<kw name="Open 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-19T01:36:47.964247" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:47.964763" elapsed="0.000159"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:47.958443" elapsed="0.006778"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:47.592930" elapsed="0.372609"/>
</kw>
<msg time="2026-04-19T01:36:47.965986" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:47.591978" elapsed="0.374115"/>
</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-19T01:36:47.591220" elapsed="0.374992"/>
</kw>
<msg time="2026-04-19T01:36:47.966271" 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-19T01:36:47.590482" elapsed="0.375854"/>
</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-19T01:36:47.969984" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:36:47.970492" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:47.970792" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:47.966751" elapsed="0.004202"/>
</kw>
<msg time="2026-04-19T01:36:47.971064" level="INFO">${output} = 1</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-19T01:36:47.589158" elapsed="0.381934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:47.971576" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:47.971296" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:47.971665" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:36:47.971819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:47.587119" elapsed="0.384726"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:47.971891" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:36:47.972076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:47.584891" elapsed="0.387212"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:47.972665" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:47.972266" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:47.583742" elapsed="0.389109">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:49.976393" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:49.975618" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:49.978861" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:49.977928" elapsed="0.000994"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:49.980098" 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-19T01:36:49.980242" 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-19T01:36:49.979851" elapsed="0.000428"/>
</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-19T01:36:49.985621" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:49.984943" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:49.984863" elapsed="0.001044"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:49.988254" 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-19T01:36:49.988603" 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-19T01:36:49.987303" elapsed="0.001440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:49.990747" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:49.990197" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:49.992580" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:49.991850" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:49.995090" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:49.995169" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:49.994788" 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-19T01:36:49.995405" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:49.996680" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:50.357372" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:49.996354" elapsed="0.361180"/>
</kw>
<msg time="2026-04-19T01:36:50.357623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:49.995958" elapsed="0.361756"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:49.994010" elapsed="0.364009"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:50.359543" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:50.382718" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:50.383362" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:50.383696" 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-19T01:36:50.359149" elapsed="0.024760"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:50.386311" elapsed="0.000997"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:50.389648" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:50.388584" elapsed="0.001291"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:50.390746" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:50.390253" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:50.390129" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:50.391830" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:36:50.391392" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:50.391285" elapsed="0.000960"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:50.392420" elapsed="0.000081"/>
</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-19T01:36:50.398206" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:36:50.398772" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:50.399162" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:50.394715" elapsed="0.004661"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:49.982978" elapsed="0.416626"/>
</kw>
<msg time="2026-04-19T01:36:50.400084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:49.982013" elapsed="0.418141"/>
</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-19T01:36:49.981244" elapsed="0.418993"/>
</kw>
<msg time="2026-04-19T01:36:50.400279" 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-19T01:36:49.980503" elapsed="0.419822"/>
</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-19T01:36:50.403528" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:36:50.404021" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:50.404357" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:50.400625" elapsed="0.003883"/>
</kw>
<msg time="2026-04-19T01:36:50.404601" level="INFO">${output} = 1</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-19T01:36:49.979268" elapsed="0.425359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:50.405219" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:50.404832" elapsed="0.000433"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:50.405312" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:36:50.405472" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:49.976922" elapsed="0.428576"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:50.405545" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:36:50.405690" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:49.974760" elapsed="0.430955"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:50.406287" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:50.405874" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:49.973693" elapsed="0.432780">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:52.410003" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:52.409289" elapsed="0.000810"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:52.412231" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:52.411704" elapsed="0.000567"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:52.413449" 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-19T01:36:52.413600" 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-19T01:36:52.413218" elapsed="0.000422"/>
</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-19T01:36:52.419222" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:52.418516" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:52.418436" elapsed="0.000989"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:52.421916" 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-19T01:36:52.422329" 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-19T01:36:52.420858" elapsed="0.001618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:52.424581" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:52.424006" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:52.426489" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:52.425760" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:52.429001" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:52.429097" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:52.428714" 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-19T01:36:52.429339" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:52.430638" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:52.806969" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:52.430311" elapsed="0.376823"/>
</kw>
<msg time="2026-04-19T01:36:52.807216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:52.429916" elapsed="0.377386"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:52.427922" elapsed="0.379664"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:52.809094" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:52.832222" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:52.832701" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:52.833023" 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-19T01:36:52.808683" elapsed="0.024592"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:52.835492" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:52.838611" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:52.837622" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:52.839748" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:52.839256" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:52.839135" elapsed="0.000926"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:52.840831" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:36:52.840386" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:52.840279" elapsed="0.000932"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:52.841498" elapsed="0.000086"/>
</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-19T01:36:52.849313" 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-19T01:36:52.849854" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:52.850453" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:52.844597" elapsed="0.006065"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:52.416472" elapsed="0.434424"/>
</kw>
<msg time="2026-04-19T01:36:52.851221" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:52.415478" elapsed="0.435801"/>
</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-19T01:36:52.414657" elapsed="0.436704"/>
</kw>
<msg time="2026-04-19T01:36:52.851403" 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-19T01:36:52.413875" elapsed="0.437748"/>
</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-19T01:36:52.854748" 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-19T01:36:52.855243" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:52.855537" 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-19T01:36:52.851972" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T01:36:52.855774" level="INFO">${output} = 1</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-19T01:36:52.412587" elapsed="0.443212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:52.856243" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:52.855973" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:52.856330" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:52.856480" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:52.410608" elapsed="0.445897"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:52.856551" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:52.856695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:52.408449" elapsed="0.448270"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:52.857280" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:52.856874" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:52.407347" elapsed="0.450118">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:54.861001" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:54.860247" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:54.863165" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:54.862528" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:54.864977" 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-19T01:36:54.865285" 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-19T01:36:54.864640" elapsed="0.000707"/>
</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-19T01:36:54.870860" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:54.870232" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:54.870155" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:54.873372" 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-19T01:36:54.873710" 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-19T01:36:54.872425" elapsed="0.001422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:54.875950" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:54.875207" elapsed="0.000915"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:54.878416" 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-19T01:36:54.877560" elapsed="0.000954"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:54.880751" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:54.880828" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:54.880467" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:54.881210" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:54.882541" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:55.204607" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:54.882216" elapsed="0.322542"/>
</kw>
<msg time="2026-04-19T01:36:55.204845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:54.881834" elapsed="0.323114"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:54.879700" elapsed="0.325559"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:55.206737" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:55.229679" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:55.230220" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:55.230552" 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-19T01:36:55.206346" elapsed="0.024420"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:55.233004" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:55.236165" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:55.235187" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:55.237288" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:55.236740" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:55.236619" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:55.238376" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:36:55.237897" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:55.237788" elapsed="0.000943"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:55.238904" elapsed="0.000085"/>
</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-19T01:36:55.245144" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:55.245687" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:55.246056" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:55.241643" elapsed="0.004621"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:54.868310" elapsed="0.378178"/>
</kw>
<msg time="2026-04-19T01:36:55.246797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:54.867345" elapsed="0.379510"/>
</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-19T01:36:54.866578" elapsed="0.380361"/>
</kw>
<msg time="2026-04-19T01:36:55.246980" 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-19T01:36:54.865697" elapsed="0.381343"/>
</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-19T01:36:55.250015" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:36:55.250565" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:55.250860" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:55.247331" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T01:36:55.251176" level="INFO">${output} = 1</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-19T01:36:54.863703" elapsed="0.387506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:55.251634" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:55.251387" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:55.251720" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:36:55.251871" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:54.861588" elapsed="0.390309"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:55.251943" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:36:55.252172" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:54.859396" elapsed="0.392802"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:55.252751" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:55.252355" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:54.858304" elapsed="0.394668">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:57.256455" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:57.255690" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:57.258550" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:57.257917" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:57.260370" 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-19T01:36:57.260511" 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-19T01:36:57.260126" elapsed="0.000423"/>
</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-19T01:36:57.266085" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:57.265431" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:57.265059" elapsed="0.001220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:57.268276" 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-19T01:36:57.268615" 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-19T01:36:57.267646" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:57.270863" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:57.270113" elapsed="0.000899"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:57.273370" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:36:57.272660" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:57.275728" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:57.275805" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:57.275444" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:57.276196" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:57.277462" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:57.578448" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:57.277137" elapsed="0.301493"/>
</kw>
<msg time="2026-04-19T01:36:57.578702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:57.276759" elapsed="0.302022"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:57.274658" elapsed="0.304363"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:57.580504" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:57.602921" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:57.603481" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:57.603817" 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-19T01:36:57.580113" elapsed="0.023954"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:57.606278" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:57.608953" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:57.608368" 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-19T01:36:57.609664" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:36:57.609346" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:57.609268" elapsed="0.000579"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:36:57.610346" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:36:57.610066" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:57.609979" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:36:57.610679" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:57.617257" 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-19T01:36:57.618000" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:57.618510" 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-19T01:36:57.612595" elapsed="0.006200"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:57.263225" elapsed="0.355898"/>
</kw>
<msg time="2026-04-19T01:36:57.619581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:57.262268" elapsed="0.357392"/>
</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-19T01:36:57.261503" elapsed="0.358269"/>
</kw>
<msg time="2026-04-19T01:36:57.619827" 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-19T01:36:57.260772" elapsed="0.359118"/>
</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-19T01:36:57.623037" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T01:36:57.623524" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:36:57.623818" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:36:57.620378" elapsed="0.003588"/>
</kw>
<msg time="2026-04-19T01:36:57.624095" level="INFO">${output} = 1</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-19T01:36:57.259130" elapsed="0.364993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:57.624546" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:57.624299" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:36:57.624634" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:36:57.624786" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:57.256974" elapsed="0.367837"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:36:57.624857" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:36:57.625001" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:57.254817" elapsed="0.370223"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:36:57.625637" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:36:57.625242" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:57.253770" elapsed="0.372049">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:36:59.629481" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:36:59.628681" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:36:59.631631" level="INFO">${member_ip} = 10.30.171.206</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-19T01:36:59.630981" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:59.633505" 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-19T01:36:59.633729" 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-19T01:36:59.633169" elapsed="0.000618"/>
</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-19T01:36:59.639940" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:36:59.639290" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-19T01:36:59.638901" elapsed="0.001254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:59.642318" 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-19T01:36:59.642663" 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-19T01:36:59.641645" elapsed="0.001156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:36:59.644476" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:36:59.643925" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:36:59.646338" 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-19T01:36:59.645559" elapsed="0.000876"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:36:59.648655" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:36:59.648731" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:36:59.648371" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:59.648965" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:36:59.650356" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:36:59.972182" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:36:59.649887" elapsed="0.322445"/>
</kw>
<msg time="2026-04-19T01:36:59.972418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:59.649530" elapsed="0.322979"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:36:59.647609" elapsed="0.325182"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:36:59.974307" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:36:59.997100" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:36:59.997602" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:36:59.997929" 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-19T01:36:59.973879" elapsed="0.024316"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:00.000400" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:00.003533" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:00.002572" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:00.004695" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:00.004201" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:00.003983" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:00.005869" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:37:00.005422" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:00.005311" elapsed="0.001004"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:00.006500" elapsed="0.000086"/>
</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-19T01:37:00.011728" elapsed="0.000410"/>
</kw>
<kw name="Open 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-19T01:37:00.012350" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:00.012705" 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-19T01:37:00.008325" elapsed="0.004586"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:36:59.637065" elapsed="0.376085"/>
</kw>
<msg time="2026-04-19T01:37:00.013456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:36:59.636101" elapsed="0.377414"/>
</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-19T01:36:59.635338" elapsed="0.378257"/>
</kw>
<msg time="2026-04-19T01:37:00.013635" 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-19T01:36:59.634211" elapsed="0.379470"/>
</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-19T01:37:00.016720" 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-19T01:37:00.017205" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:00.017498" 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-19T01:37:00.013968" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T01:37:00.017730" level="INFO">${output} = 1</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-19T01:36:59.632228" elapsed="0.385527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:00.018207" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:00.017927" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:00.018295" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:00.018447" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:36:59.630007" elapsed="0.388465"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:00.018517" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:00.018660" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:36:59.627825" elapsed="0.390859"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:00.019249" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:00.018839" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:36:59.626725" elapsed="0.392706">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:02.023003" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:02.022265" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:02.025306" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:02.024665" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:02.027174" 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-19T01:37:02.027404" 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-19T01:37:02.026815" elapsed="0.000649"/>
</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-19T01:37:02.034836" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:02.034350" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:02.032420" elapsed="0.002557"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:02.036446" 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-19T01:37:02.036691" 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-19T01:37:02.035972" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:02.038382" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:02.037814" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:02.040200" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:02.039473" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:02.042680" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:02.042756" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:02.042397" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:02.042988" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:02.044277" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:02.352866" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:36:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:02.043921" elapsed="0.309273"/>
</kw>
<msg time="2026-04-19T01:37:02.353368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:02.043564" elapsed="0.309996"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:02.041598" elapsed="0.312605"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:02.356935" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:02.380665" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:02.381218" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:02.381559" 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-19T01:37:02.356519" elapsed="0.025255"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:02.384069" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:02.387283" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:02.386278" elapsed="0.001237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:02.388608" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:02.387907" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:02.387752" elapsed="0.001156"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:02.389733" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:37:02.389282" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:02.389170" elapsed="0.001077"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:02.390429" 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-19T01:37:02.396421" 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-19T01:37:02.396966" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:02.397350" 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-19T01:37:02.392894" elapsed="0.004662"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:02.031089" elapsed="0.366689"/>
</kw>
<msg time="2026-04-19T01:37:02.398150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:02.030368" elapsed="0.367841"/>
</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-19T01:37:02.028985" elapsed="0.369309"/>
</kw>
<msg time="2026-04-19T01:37:02.398335" 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-19T01:37:02.027813" elapsed="0.370568"/>
</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-19T01:37:02.401447" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:02.401928" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:02.402330" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:02.398671" elapsed="0.003807"/>
</kw>
<msg time="2026-04-19T01:37:02.402571" level="INFO">${output} = 1</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-19T01:37:02.025869" elapsed="0.376727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:02.403017" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:02.402770" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:02.403121" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:02.403275" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:02.023713" elapsed="0.379586"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:02.403347" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:02.403491" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:02.021390" elapsed="0.382125"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:02.404112" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:02.403670" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:02.020327" elapsed="0.383983">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:04.408197" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:04.407426" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:04.410327" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:04.409689" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:04.412198" 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-19T01:37:04.412581" 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-19T01:37:04.411812" elapsed="0.000829"/>
</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-19T01:37:04.417793" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:04.417134" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:04.417078" elapsed="0.000857"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:04.419665" 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-19T01:37:04.419918" 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-19T01:37:04.418965" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:04.421573" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:04.421003" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:04.423413" 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-19T01:37:04.422698" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:04.425886" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:04.425965" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:04.425575" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:04.426221" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:04.427489" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:04.741704" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:04.427164" elapsed="0.314661"/>
</kw>
<msg time="2026-04-19T01:37:04.741902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:04.426785" elapsed="0.315200"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:04.424727" elapsed="0.317555"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:04.743766" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:04.766008" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:04.766713" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:04.767122" 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-19T01:37:04.743389" elapsed="0.023958"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:04.769554" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:04.772368" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:04.771690" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:04.773098" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:04.772749" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:04.772668" 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-19T01:37:04.773781" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T01:37:04.773493" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:04.773426" elapsed="0.000584"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:04.774168" elapsed="0.000055"/>
</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-19T01:37:04.780531" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:04.781230" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:04.781605" 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-19T01:37:04.776136" elapsed="0.005694"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:04.415718" elapsed="0.366368"/>
</kw>
<msg time="2026-04-19T01:37:04.782414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:04.415013" elapsed="0.367464"/>
</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-19T01:37:04.414314" elapsed="0.368247"/>
</kw>
<msg time="2026-04-19T01:37:04.782604" 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-19T01:37:04.413083" elapsed="0.369568"/>
</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-19T01:37:04.785736" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:37:04.786249" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:04.786548" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:04.782947" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T01:37:04.786792" level="INFO">${output} = 1</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-19T01:37:04.410862" elapsed="0.375955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:04.787351" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:04.786999" elapsed="0.000397"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:04.787441" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:04.787595" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:04.408721" elapsed="0.378899"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:04.787667" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:04.787819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:04.406585" elapsed="0.381258"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:04.788429" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:04.788001" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:04.405471" elapsed="0.383146">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:06.792401" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:06.791505" elapsed="0.000969"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:06.794649" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:06.793917" elapsed="0.000795"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:06.796161" 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-19T01:37:06.796308" 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-19T01:37:06.795916" elapsed="0.000430"/>
</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-19T01:37:06.801827" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:06.801175" elapsed="0.000883"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:06.801095" elapsed="0.001057"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:06.804255" 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-19T01:37:06.804506" 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-19T01:37:06.803562" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:06.806150" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:06.805592" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:06.807966" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:06.807259" elapsed="0.000886"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:06.810441" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:06.810525" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:06.810134" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:06.810764" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:06.812177" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:07.125781" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:06.811701" elapsed="0.314223"/>
</kw>
<msg time="2026-04-19T01:37:07.126008" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:06.811338" elapsed="0.314775"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:06.809353" elapsed="0.317039"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:07.127860" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:07.141372" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:07.141763" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:07.141978" 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-19T01:37:07.127474" elapsed="0.014681"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:07.143583" elapsed="0.001101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:07.146218" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:07.145549" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:07.146942" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:07.146597" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:07.146508" elapsed="0.000668"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:07.147729" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:37:07.147391" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:07.147320" elapsed="0.000643"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:07.148145" elapsed="0.000056"/>
</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-19T01:37:07.153223" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:37:07.153767" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:07.154139" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:07.149631" elapsed="0.004718"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:06.799168" elapsed="0.355410"/>
</kw>
<msg time="2026-04-19T01:37:07.154947" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:06.798130" elapsed="0.356876"/>
</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-19T01:37:06.797330" elapsed="0.357885"/>
</kw>
<msg time="2026-04-19T01:37:07.155256" 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-19T01:37:06.796572" elapsed="0.358731"/>
</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-19T01:37:07.158300" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:37:07.158780" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:07.159094" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:07.155621" elapsed="0.003626"/>
</kw>
<msg time="2026-04-19T01:37:07.159336" level="INFO">${output} = 1</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-19T01:37:06.795235" elapsed="0.364127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:07.159798" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:07.159549" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:07.159887" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:07.160118" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:06.792940" elapsed="0.367206"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:07.160196" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:07.160345" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:06.790636" elapsed="0.369734"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:07.160921" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:07.160527" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:06.789499" elapsed="0.371626">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:09.164661" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:09.163879" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:09.166817" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:09.166207" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:09.168661" 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-19T01:37:09.168892" 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-19T01:37:09.168333" elapsed="0.000638"/>
</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-19T01:37:09.178236" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:09.177463" elapsed="0.000891"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:09.177327" elapsed="0.001115"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:09.180903" 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-19T01:37:09.181300" 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-19T01:37:09.179887" elapsed="0.001558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:09.183626" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:09.182833" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:09.186198" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:09.185364" elapsed="0.000932"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:09.188720" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:09.188801" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:09.188422" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:09.189080" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:09.190367" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:09.504546" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:09.190022" elapsed="0.314675"/>
</kw>
<msg time="2026-04-19T01:37:09.504780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:09.189657" elapsed="0.315214"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:09.187488" elapsed="0.317690"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:09.506697" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:09.529667" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:09.530244" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:09.530579" 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-19T01:37:09.506303" elapsed="0.024489"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:09.532977" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:09.535580" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:09.534951" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:09.536295" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:09.535946" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:09.535868" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:09.536966" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T01:37:09.536690" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:09.536622" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:09.537328" elapsed="0.000051"/>
</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-19T01:37:09.543682" 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-19T01:37:09.544256" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:09.544622" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:09.539292" elapsed="0.005538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:09.173670" elapsed="0.371395"/>
</kw>
<msg time="2026-04-19T01:37:09.545372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:09.171947" elapsed="0.373486"/>
</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-19T01:37:09.170515" elapsed="0.375001"/>
</kw>
<msg time="2026-04-19T01:37:09.545557" 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-19T01:37:09.169353" elapsed="0.376250"/>
</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-19T01:37:09.548752" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:37:09.549246" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:09.549543" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:09.545972" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T01:37:09.549784" level="INFO">${output} = 1</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-19T01:37:09.167391" elapsed="0.382419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:09.550300" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:09.550046" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:09.550388" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:37:09.550543" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:09.165256" elapsed="0.385313"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:09.550616" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:09.550763" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:09.163019" elapsed="0.387770"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:09.551461" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:09.550947" elapsed="0.000588">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:09.161922" elapsed="0.389724">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:11.555178" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:11.554403" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:11.557283" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:11.556647" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:11.559157" 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-19T01:37:11.559386" 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-19T01:37:11.558789" elapsed="0.000656"/>
</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-19T01:37:11.564793" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:11.564320" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:11.564011" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:11.566413" 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-19T01:37:11.566658" 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-19T01:37:11.565930" elapsed="0.000831"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:11.568322" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:11.567744" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:11.570156" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:11.569413" elapsed="0.000845"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:11.572610" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:11.572689" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:11.572326" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:11.572926" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:11.574293" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:11.885889" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:11.573936" elapsed="0.312122"/>
</kw>
<msg time="2026-04-19T01:37:11.886296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:11.573568" elapsed="0.312816"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:11.571472" elapsed="0.315228"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:11.888387" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:11.911327" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:11.911897" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:11.912336" 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-19T01:37:11.887979" elapsed="0.024580"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:11.914912" elapsed="0.000975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:11.918296" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:11.917254" elapsed="0.001282"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:11.919610" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:11.918990" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:11.918824" elapsed="0.000980"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:11.920242" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T01:37:11.919979" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:11.919922" elapsed="0.000496"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:11.920501" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:11.925505" 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-19T01:37:11.926115" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:11.926489" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:11.921968" elapsed="0.004780"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:11.562676" elapsed="0.364302"/>
</kw>
<msg time="2026-04-19T01:37:11.927313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:11.561939" elapsed="0.365440"/>
</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-19T01:37:11.560961" elapsed="0.366503"/>
</kw>
<msg time="2026-04-19T01:37:11.927505" 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-19T01:37:11.559797" elapsed="0.367756"/>
</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-19T01:37:11.930667" 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-19T01:37:11.931183" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:11.931487" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:11.927855" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T01:37:11.931834" level="INFO">${output} = 1</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-19T01:37:11.557823" elapsed="0.374041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:11.932386" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:11.932109" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:11.932480" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:37:11.932640" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:11.555703" elapsed="0.376966"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:11.932720" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:11.932870" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:11.553529" elapsed="0.379367"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:11.933577" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:11.933164" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:11.552480" elapsed="0.381322">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:13.937382" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:13.936596" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:13.939519" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:13.938882" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:13.941361" 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-19T01:37:13.941691" 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-19T01:37:13.940990" elapsed="0.000764"/>
</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-19T01:37:13.947736" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:13.947091" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:13.946694" elapsed="0.001239"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:13.949936" 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-19T01:37:13.950312" 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-19T01:37:13.949302" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:13.952057" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:13.951501" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:13.953839" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:13.953142" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:13.956259" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:13.956336" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:13.955957" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:13.956570" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:13.957820" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:14.263212" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:13.957493" elapsed="0.305914"/>
</kw>
<msg time="2026-04-19T01:37:14.263481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:13.957133" elapsed="0.306424"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:13.955192" elapsed="0.308617"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:14.265240" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:14.288211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:14.288704" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:14.289089" 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-19T01:37:14.264857" elapsed="0.024449"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:14.291543" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:14.294722" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:14.293661" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:14.295451" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:14.295132" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:14.295051" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:14.296135" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:37:14.295835" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:14.295769" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:14.296467" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:14.302949" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T01:37:14.303505" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:14.303856" 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-19T01:37:14.298377" elapsed="0.005700"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:13.944658" elapsed="0.359640"/>
</kw>
<msg time="2026-04-19T01:37:14.304598" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:13.943524" elapsed="0.361130"/>
</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-19T01:37:13.942757" elapsed="0.361978"/>
</kw>
<msg time="2026-04-19T01:37:14.304775" 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-19T01:37:13.942015" elapsed="0.362806"/>
</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-19T01:37:14.307891" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:37:14.308380" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:14.308676" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:14.305127" elapsed="0.003696"/>
</kw>
<msg time="2026-04-19T01:37:14.308912" level="INFO">${output} = 1</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-19T01:37:13.940085" elapsed="0.368853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:14.309386" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:14.309130" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:14.309475" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:14.309626" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:13.937938" elapsed="0.371713"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:14.309698" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:14.309846" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:13.935742" elapsed="0.374129"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:14.310522" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:14.310106" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:13.934639" elapsed="0.376064">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:16.314255" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:16.313489" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:16.316354" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:16.315718" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:16.318098" 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-19T01:37:16.318241" 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-19T01:37:16.317861" elapsed="0.000418"/>
</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-19T01:37:16.325861" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:16.325213" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:16.322876" elapsed="0.003127"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:16.327463" 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-19T01:37:16.327717" 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-19T01:37:16.327006" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:16.329397" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:16.328800" elapsed="0.000707"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:16.331371" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:16.330555" elapsed="0.000915"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:16.333802" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:16.333879" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:16.333519" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:16.334223" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:16.335485" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:16.647786" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:16.335164" elapsed="0.312724"/>
</kw>
<msg time="2026-04-19T01:37:16.647959" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:16.334785" elapsed="0.313264"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:16.332692" elapsed="0.315599"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:16.649707" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:16.672637" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:16.673207" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:16.673569" 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-19T01:37:16.649356" elapsed="0.024424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:16.676046" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:16.678713" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:16.678127" elapsed="0.000727"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:16.679424" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:16.679097" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:16.678995" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:16.680109" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:37:16.679808" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:16.679741" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:16.680442" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:16.686733" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T01:37:16.687287" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:16.687638" 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-19T01:37:16.682368" elapsed="0.005475"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:16.321022" elapsed="0.367058"/>
</kw>
<msg time="2026-04-19T01:37:16.688412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:16.319974" elapsed="0.368494"/>
</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-19T01:37:16.319232" elapsed="0.369318"/>
</kw>
<msg time="2026-04-19T01:37:16.688592" 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-19T01:37:16.318498" elapsed="0.370139"/>
</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-19T01:37:16.691699" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:37:16.692197" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:16.692492" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:16.688933" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T01:37:16.692731" level="INFO">${output} = 1</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-19T01:37:16.316937" elapsed="0.375819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:16.693199" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:16.692934" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:16.693377" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:16.693531" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:16.314781" elapsed="0.378775"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:16.693603" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:37:16.693744" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:16.312600" elapsed="0.381168"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:16.694355" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:16.693924" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:16.311560" elapsed="0.382979">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:18.698128" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:18.697365" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:18.700423" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:18.699782" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:18.702619" 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-19T01:37:18.702844" 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-19T01:37:18.702117" elapsed="0.000787"/>
</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-19T01:37:18.707294" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:18.706799" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:18.706742" elapsed="0.000693"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:18.709110" 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-19T01:37:18.709360" 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-19T01:37:18.708429" elapsed="0.001033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:18.710982" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:18.710445" elapsed="0.000704"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:18.712830" 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-19T01:37:18.712136" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:18.715271" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:18.715351" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:18.714878" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:18.715585" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:18.716834" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:19.032483" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:18.716509" elapsed="0.316108"/>
</kw>
<msg time="2026-04-19T01:37:19.032697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:18.716150" elapsed="0.316633"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:18.714124" elapsed="0.318946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:19.034529" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:19.057638" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:19.058191" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:19.058522" 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-19T01:37:19.034143" elapsed="0.024588"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:19.060945" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:19.064043" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:19.063108" elapsed="0.001081"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:19.064796" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:19.064415" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:19.064336" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:19.065493" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:37:19.065208" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:19.065140" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:19.065823" elapsed="0.000051"/>
</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-19T01:37:19.072397" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:19.072942" elapsed="0.000328"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:19.073473" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:19.067735" elapsed="0.005946"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:18.705408" elapsed="0.368497"/>
</kw>
<msg time="2026-04-19T01:37:19.074327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:18.704713" elapsed="0.369673"/>
</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-19T01:37:18.704175" elapsed="0.370295"/>
</kw>
<msg time="2026-04-19T01:37:19.074512" 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-19T01:37:18.703334" elapsed="0.371224"/>
</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-19T01:37:19.077533" 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-19T01:37:19.078010" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:19.078327" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:19.074851" elapsed="0.003628"/>
</kw>
<msg time="2026-04-19T01:37:19.078573" level="INFO">${output} = 1</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-19T01:37:18.700968" elapsed="0.377631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:19.079043" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:19.078776" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:19.079133" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:19.079287" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:18.698813" elapsed="0.380500"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:19.079361" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:19.079507" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:18.696514" elapsed="0.383019"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:19.080123" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:19.079715" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:18.695437" elapsed="0.384870">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:21.083799" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:21.083066" elapsed="0.000801"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:21.085988" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:21.085371" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:21.087190" 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-19T01:37:21.087435" 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-19T01:37:21.086947" elapsed="0.000527"/>
</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-19T01:37:21.092716" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:21.092091" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:21.091996" elapsed="0.000911"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:21.095131" 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-19T01:37:21.095377" 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-19T01:37:21.094441" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:21.096997" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:21.096454" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:21.098804" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:21.098114" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:21.101417" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:21.101501" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:21.101068" elapsed="0.000458"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:21.101745" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:21.103016" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:21.409678" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:21.102691" elapsed="0.307077"/>
</kw>
<msg time="2026-04-19T01:37:21.409834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:21.102327" elapsed="0.307579"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:21.100293" elapsed="0.309871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:21.411514" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:21.434308" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:21.434796" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:21.435182" 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-19T01:37:21.411180" elapsed="0.024219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:21.437676" elapsed="0.000685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:21.439710" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:21.439137" elapsed="0.000715"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:21.440419" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:21.440106" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:21.439990" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:21.441157" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:37:21.440799" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:21.440731" elapsed="0.000648"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:21.441501" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:21.448062" elapsed="0.000453"/>
</kw>
<kw name="Open 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-19T01:37:21.448953" elapsed="0.000292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:21.449444" 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-19T01:37:21.443322" elapsed="0.006348"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:21.090190" elapsed="0.359700"/>
</kw>
<msg time="2026-04-19T01:37:21.450214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:21.089230" elapsed="0.361040"/>
</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-19T01:37:21.088446" elapsed="0.361907"/>
</kw>
<msg time="2026-04-19T01:37:21.450394" 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-19T01:37:21.087699" elapsed="0.362742"/>
</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-19T01:37:21.453437" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:37:21.453930" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:21.454246" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:21.450733" elapsed="0.003665"/>
</kw>
<msg time="2026-04-19T01:37:21.454488" level="INFO">${output} = 1</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-19T01:37:21.086370" elapsed="0.368144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:21.454934" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:21.454689" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:21.455040" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:37:21.455196" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:21.084357" elapsed="0.370864"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:21.455267" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:37:21.455408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:21.082232" elapsed="0.373200"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:21.455980" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:21.455586" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:21.081171" elapsed="0.375024">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:23.459940" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:23.459196" elapsed="0.000814"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:23.462090" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:23.461457" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:23.463944" 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-19T01:37:23.464203" 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-19T01:37:23.463596" elapsed="0.000669"/>
</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-19T01:37:23.469619" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:23.469156" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:23.469097" elapsed="0.000736"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:23.471523" 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-19T01:37:23.471768" 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-19T01:37:23.470810" elapsed="0.001060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:23.473404" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:23.472838" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:23.475288" 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-19T01:37:23.474533" elapsed="0.000855"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:23.477653" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:23.477731" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:23.477374" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:23.477965" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:23.479350" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:23.784232" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:23.479009" elapsed="0.305313"/>
</kw>
<msg time="2026-04-19T01:37:23.784387" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:23.478629" elapsed="0.305828"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:23.476579" elapsed="0.308109"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:23.786049" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:23.808691" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:23.809003" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:23.809248" 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-19T01:37:23.785701" elapsed="0.023681"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:23.810758" elapsed="0.000590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:23.812698" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:23.812125" elapsed="0.000719"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:23.813393" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:23.813083" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:23.812983" elapsed="0.000592"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:23.814091" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:37:23.813777" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:23.813708" elapsed="0.000604"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:23.814424" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:23.820645" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:37:23.821198" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:23.821547" 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-19T01:37:23.816270" elapsed="0.005483"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:23.467761" elapsed="0.354217"/>
</kw>
<msg time="2026-04-19T01:37:23.822453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:23.467062" elapsed="0.355448"/>
</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-19T01:37:23.465775" elapsed="0.356817"/>
</kw>
<msg time="2026-04-19T01:37:23.822633" 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-19T01:37:23.464614" elapsed="0.358065"/>
</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-19T01:37:23.825649" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:37:23.826203" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:23.826501" 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-19T01:37:23.822973" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T01:37:23.826739" level="INFO">${output} = 1</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-19T01:37:23.462636" elapsed="0.364129"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:23.827232" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:23.826943" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:23.827322" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:37:23.827472" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:23.460513" elapsed="0.366986"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:23.827546" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:23.827691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:23.458190" elapsed="0.369526"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:23.828278" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:23.827872" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:23.457023" elapsed="0.371436">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:25.832054" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:25.831263" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:25.834204" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:25.833561" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:25.836081" 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-19T01:37:25.836361" 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-19T01:37:25.835702" elapsed="0.000722"/>
</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-19T01:37:25.841000" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:25.840510" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:25.840146" elapsed="0.001014"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:25.842677" 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-19T01:37:25.842925" 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-19T01:37:25.842228" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:25.844617" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:25.844016" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:25.846507" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:25.845788" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:25.849317" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:25.849393" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:25.849014" 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-19T01:37:25.849626" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:25.850869" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:26.157066" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:25.850546" elapsed="0.306687"/>
</kw>
<msg time="2026-04-19T01:37:26.157322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:25.850190" elapsed="0.307229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:25.848002" elapsed="0.309708"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:26.159316" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:26.181843" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:26.182517" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:26.182876" 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-19T01:37:26.158873" elapsed="0.024283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:26.185629" elapsed="0.001011"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:26.189255" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:26.188060" elapsed="0.001336"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:26.189824" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:26.189571" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:26.189508" elapsed="0.000454"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:26.190373" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:37:26.190162" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:26.190108" elapsed="0.000433"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:26.190626" 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-19T01:37:26.195499" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:37:26.196072" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:26.196467" 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-19T01:37:26.192014" elapsed="0.004670"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:25.838784" elapsed="0.358122"/>
</kw>
<msg time="2026-04-19T01:37:26.197229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:25.838074" elapsed="0.359218"/>
</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-19T01:37:25.837521" elapsed="0.359856"/>
</kw>
<msg time="2026-04-19T01:37:26.197419" 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-19T01:37:25.836780" elapsed="0.360687"/>
</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-19T01:37:26.200649" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:37:26.201149" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:26.201449" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:26.197829" elapsed="0.003771"/>
</kw>
<msg time="2026-04-19T01:37:26.201692" level="INFO">${output} = 1</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-19T01:37:25.834744" elapsed="0.366974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:26.202189" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:26.201896" elapsed="0.000341"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:26.202282" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:26.202435" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:25.832621" elapsed="0.369840"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:26.202508" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:26.202655" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:25.830411" elapsed="0.372270"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:26.203339" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:26.202839" elapsed="0.000578">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:25.829297" elapsed="0.374233">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:28.207223" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:28.206413" elapsed="0.000902"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:28.209489" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:28.208795" elapsed="0.000764"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:28.211442" 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-19T01:37:28.211674" 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-19T01:37:28.211078" elapsed="0.000655"/>
</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-19T01:37:28.217487" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:28.216845" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:28.216554" elapsed="0.001102"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:28.219179" 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-19T01:37:28.219436" 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-19T01:37:28.218691" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:28.221135" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:28.220547" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:28.223022" 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-19T01:37:28.222281" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:28.225577" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:28.225666" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:28.225273" 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-19T01:37:28.225916" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:28.227331" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:28.544679" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:28.226971" elapsed="0.317865"/>
</kw>
<msg time="2026-04-19T01:37:28.544922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:28.226589" elapsed="0.318425"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:28.224446" elapsed="0.320873"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:28.546836" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:28.569789" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:28.570333" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:28.570662" 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-19T01:37:28.546428" elapsed="0.024447"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:28.573108" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:28.576268" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:28.575292" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:28.577395" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:28.576852" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:28.576728" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:28.578389" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T01:37:28.578105" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:28.577962" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:28.578634" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:28.583424" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:28.583965" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:28.584343" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:28.580016" elapsed="0.004641"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:28.215189" elapsed="0.369697"/>
</kw>
<msg time="2026-04-19T01:37:28.585214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:28.214454" elapsed="0.370817"/>
</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-19T01:37:28.213405" elapsed="0.371948"/>
</kw>
<msg time="2026-04-19T01:37:28.585393" 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-19T01:37:28.212182" elapsed="0.373256"/>
</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-19T01:37:28.588551" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:37:28.589052" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:28.589354" 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-19T01:37:28.585752" elapsed="0.003749"/>
</kw>
<msg time="2026-04-19T01:37:28.589671" level="INFO">${output} = 1</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-19T01:37:28.210092" elapsed="0.379606"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:28.590165" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:28.589898" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:28.590253" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:37:28.590406" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:28.207793" elapsed="0.382638"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:28.590477" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:28.590621" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:28.205523" elapsed="0.385122"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:28.591307" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:28.590800" elapsed="0.000582">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:28.204386" elapsed="0.387108">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:30.594874" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:30.594120" elapsed="0.000822"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:30.596949" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:30.596352" elapsed="0.000657"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:30.598864" 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-19T01:37:30.599126" 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-19T01:37:30.598472" elapsed="0.000715"/>
</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-19T01:37:30.607262" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:30.606499" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:30.604009" elapsed="0.003420"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:30.608903" 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-19T01:37:30.609162" 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-19T01:37:30.608451" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:30.610791" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:30.610223" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:30.612631" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:30.611924" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:30.614977" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:30.615134" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:30.614692" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:30.615372" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:30.616628" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:30.941206" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:30.616308" elapsed="0.325147"/>
</kw>
<msg time="2026-04-19T01:37:30.941537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:30.615931" elapsed="0.325698"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:30.613912" elapsed="0.327990"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:30.943417" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:30.966579" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:30.967152" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:30.967518" 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-19T01:37:30.943016" elapsed="0.024713"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:30.969948" elapsed="0.001007"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:30.973242" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:30.972257" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:30.974357" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:30.973821" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:30.973700" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:30.975514" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T01:37:30.975066" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:30.974926" elapsed="0.000747"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:30.975754" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:30.980573" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:30.981129" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:30.981482" 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-19T01:37:30.977154" elapsed="0.004534"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:30.602087" elapsed="0.379822"/>
</kw>
<msg time="2026-04-19T01:37:30.982234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:30.601087" elapsed="0.381204"/>
</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-19T01:37:30.600277" elapsed="0.382098"/>
</kw>
<msg time="2026-04-19T01:37:30.982416" 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-19T01:37:30.599479" elapsed="0.382983"/>
</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-19T01:37:30.985590" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:30.986077" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:30.986372" 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-19T01:37:30.982869" elapsed="0.003794"/>
</kw>
<msg time="2026-04-19T01:37:30.986767" level="INFO">${output} = 1</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-19T01:37:30.597518" elapsed="0.389275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:30.987237" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:30.986975" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:30.987325" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:30.987477" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:30.595427" elapsed="0.392075"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:30.987549" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:30.987693" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:30.593281" elapsed="0.394437"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:30.988411" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:30.987918" elapsed="0.000567">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:30.592264" elapsed="0.396331">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:32.991137" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:32.990556" elapsed="0.000633"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:32.992571" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:32.992175" elapsed="0.000434"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:32.993780" 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-19T01:37:32.993952" 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-19T01:37:32.993555" elapsed="0.000432"/>
</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-19T01:37:32.998981" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:32.998359" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:32.998288" elapsed="0.000900"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:33.001438" 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-19T01:37:33.001792" 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-19T01:37:33.000406" elapsed="0.001517"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:33.004000" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:33.003222" elapsed="0.000949"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:33.006546" 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-19T01:37:33.005423" elapsed="0.001246"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:33.009542" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:33.009626" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:33.009131" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:33.009885" elapsed="0.000652"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:33.011528" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:33.316713" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:33.011167" elapsed="0.305693"/>
</kw>
<msg time="2026-04-19T01:37:33.316946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:33.010770" elapsed="0.306292"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:33.008138" elapsed="0.309205"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:33.318823" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:33.341571" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:33.342120" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:33.342457" 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-19T01:37:33.318429" elapsed="0.024239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:33.344899" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:33.348116" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:33.347098" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:33.349242" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:33.348704" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:33.348580" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:33.350329" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:37:33.349850" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:33.349744" elapsed="0.000938"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:33.350898" elapsed="0.000097"/>
</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-19T01:37:33.356557" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:37:33.357129" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:33.357490" 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-19T01:37:33.353149" elapsed="0.004547"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:32.996583" elapsed="0.361358"/>
</kw>
<msg time="2026-04-19T01:37:33.358266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:32.995681" elapsed="0.362644"/>
</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-19T01:37:32.994919" elapsed="0.363489"/>
</kw>
<msg time="2026-04-19T01:37:33.358448" 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-19T01:37:32.994225" elapsed="0.364269"/>
</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-19T01:37:33.361628" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:37:33.362126" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:33.362422" 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-19T01:37:33.358785" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T01:37:33.362659" level="INFO">${output} = 1</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-19T01:37:32.992925" elapsed="0.369759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:33.363217" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:33.362873" elapsed="0.000389"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:33.363306" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:37:33.363463" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:32.991504" elapsed="0.371984"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:33.363547" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:33.363695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:32.990053" elapsed="0.373669"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:33.364320" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:33.363892" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:32.989244" elapsed="0.375262">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:35.368122" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:35.367338" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:35.370634" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:35.369979" elapsed="0.000715"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:35.372569" 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-19T01:37:35.372799" 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-19T01:37:35.372170" elapsed="0.000689"/>
</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-19T01:37:35.378450" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:35.377790" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:35.377711" elapsed="0.000931"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:35.380974" 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-19T01:37:35.381348" 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-19T01:37:35.380011" elapsed="0.001480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:35.383677" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:35.382875" elapsed="0.000958"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:35.385819" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:35.385105" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:35.388431" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:35.388509" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:35.387925" elapsed="0.000607"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:35.388744" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:35.390041" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:35.720157" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:35.389686" elapsed="0.330611"/>
</kw>
<msg time="2026-04-19T01:37:35.720379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:35.389325" elapsed="0.331148"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:35.387152" elapsed="0.333592"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:35.722267" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:35.745226" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:35.745726" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:35.746106" 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-19T01:37:35.721847" elapsed="0.024474"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:35.748538" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:35.751738" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:35.750721" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:35.752986" elapsed="0.000113"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:35.752357" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:35.752230" elapsed="0.001106"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:35.754145" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T01:37:35.753658" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:35.753551" elapsed="0.000954"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:35.754680" elapsed="0.000082"/>
</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-19T01:37:35.761117" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:37:35.761664" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:35.762017" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:35.757708" elapsed="0.004533"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:35.375837" elapsed="0.386631"/>
</kw>
<msg time="2026-04-19T01:37:35.762772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:35.374880" elapsed="0.387950"/>
</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-19T01:37:35.374134" elapsed="0.388779"/>
</kw>
<msg time="2026-04-19T01:37:35.762954" 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-19T01:37:35.373248" elapsed="0.389752"/>
</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-19T01:37:35.766050" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:37:35.766524" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:35.766817" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:35.763358" elapsed="0.003606"/>
</kw>
<msg time="2026-04-19T01:37:35.767147" level="INFO">${output} = 1</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-19T01:37:35.371210" elapsed="0.395964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:35.767642" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:35.767353" elapsed="0.000336"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:35.767733" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:35.767887" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:35.369003" elapsed="0.398910"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:35.767961" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:37:35.768123" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:35.366477" elapsed="0.401671"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:35.768723" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:35.768306" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:35.365335" elapsed="0.403575">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:37.772499" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:37.771734" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:37.774615" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:37.773970" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:37.775820" 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-19T01:37:37.776117" 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-19T01:37:37.775568" elapsed="0.000590"/>
</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-19T01:37:37.782051" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:37.781402" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:37.781327" elapsed="0.000940"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:37.784587" 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-19T01:37:37.784927" 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-19T01:37:37.783645" elapsed="0.001467"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:37.787103" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:37.786497" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:37.788907" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:37.788194" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:37.791381" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:37.791462" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:37.791090" 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-19T01:37:37.791699" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:37.792977" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:38.111048" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:37.792648" elapsed="0.318587"/>
</kw>
<msg time="2026-04-19T01:37:38.111343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:37.792283" elapsed="0.319175"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:37.790285" elapsed="0.321531"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:38.113712" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:38.136953" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:38.137319" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:38.137508" 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-19T01:37:38.113209" elapsed="0.024421"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:38.138934" elapsed="0.000546"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:38.140583" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:38.140090" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:38.141165" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:38.140882" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:38.140821" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:38.141755" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T01:37:38.141537" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:38.141483" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:38.142011" elapsed="0.000058"/>
</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-19T01:37:38.146916" 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-19T01:37:38.147603" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:38.147992" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:38.143397" elapsed="0.004830"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:37.779459" elapsed="0.369022"/>
</kw>
<msg time="2026-04-19T01:37:38.149516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:37.778362" elapsed="0.371248"/>
</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-19T01:37:37.777382" elapsed="0.372334"/>
</kw>
<msg time="2026-04-19T01:37:38.149759" 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-19T01:37:37.776404" elapsed="0.373406"/>
</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-19T01:37:38.153172" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T01:37:38.153727" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:38.154092" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:38.150337" elapsed="0.003912"/>
</kw>
<msg time="2026-04-19T01:37:38.154344" level="INFO">${output} = 1</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-19T01:37:37.774960" elapsed="0.379410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:38.154920" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:38.154608" elapsed="0.000379"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:38.155052" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:37:38.155219" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:37.773025" elapsed="0.382220"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:38.155294" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:38.155449" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:37.770885" elapsed="0.384591"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:38.156267" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:38.155637" elapsed="0.000705">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:37.769795" elapsed="0.386744">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:40.160296" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:40.159454" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:40.161757" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:40.161371" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:40.162919" 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-19T01:37:40.163085" 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-19T01:37:40.162691" elapsed="0.000433"/>
</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-19T01:37:40.168930" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:40.168268" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:40.167811" elapsed="0.001423"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:40.171252" 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-19T01:37:40.171639" 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-19T01:37:40.170598" elapsed="0.001187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:40.173337" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:40.172764" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:40.175193" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:40.174420" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:40.177583" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:40.177666" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:40.177279" 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-19T01:37:40.177902" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:40.179326" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:40.512816" 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 Sun Apr 19 01:36:40 UTC 2026

  System load:  0.25               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:40.178839" elapsed="0.334137"/>
</kw>
<msg time="2026-04-19T01:37:40.513087" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:40.178475" elapsed="0.334706"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:40.176500" elapsed="0.336968"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:40.514950" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:40.538091" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:40.538583" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:40.538913" 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-19T01:37:40.514555" elapsed="0.024606"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:40.541386" elapsed="0.000881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:40.544541" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:40.543564" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:40.545634" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:40.545144" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:40.544993" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:40.546721" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:37:40.546271" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:40.546164" elapsed="0.001098"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:40.547442" elapsed="0.000082"/>
</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-19T01:37:40.554952" elapsed="0.000589"/>
</kw>
<kw name="Open 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-19T01:37:40.555850" elapsed="0.000257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:40.556395" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:40.549814" elapsed="0.006885"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:40.165817" elapsed="0.391228"/>
</kw>
<msg time="2026-04-19T01:37:40.557580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:40.164841" elapsed="0.392824"/>
</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-19T01:37:40.164102" elapsed="0.393683"/>
</kw>
<msg time="2026-04-19T01:37:40.557844" 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-19T01:37:40.163347" elapsed="0.394563"/>
</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-19T01:37:40.561547" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:37:40.562022" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:40.562338" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:40.558361" elapsed="0.004126"/>
</kw>
<msg time="2026-04-19T01:37:40.562578" level="INFO">${output} = 1</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-19T01:37:40.162118" elapsed="0.400485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:40.563073" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:40.562786" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:40.563176" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:37:40.563341" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:40.160766" elapsed="0.402601"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:40.563426" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:40.563571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:40.158597" elapsed="0.404998"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:40.564168" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:40.563751" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:40.157465" elapsed="0.406888">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:42.567896" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:42.567106" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:42.569930" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:42.569453" elapsed="0.000515"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:42.571115" 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-19T01:37:42.571261" 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-19T01:37:42.570876" elapsed="0.000424"/>
</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-19T01:37:42.576822" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:42.576188" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:42.575800" elapsed="0.001257"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:42.579060" 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-19T01:37:42.579399" 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-19T01:37:42.578422" elapsed="0.001117"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:42.581707" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:42.580894" elapsed="0.000922"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:42.583686" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:42.582885" elapsed="0.000900"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:42.586115" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:42.586196" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:42.585810" 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-19T01:37:42.586433" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:42.587848" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:43.183384" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:42.587516" elapsed="0.596018"/>
</kw>
<msg time="2026-04-19T01:37:43.183616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:42.586997" elapsed="0.596702"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:42.584998" elapsed="0.598980"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:43.185496" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:43.208509" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:43.209007" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:43.209394" 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-19T01:37:43.185099" elapsed="0.024506"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:43.211802" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:43.214265" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:43.213597" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:43.214959" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:43.214635" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:43.214556" elapsed="0.000662"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:43.215697" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:37:43.215418" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:43.215352" elapsed="0.000564"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:43.216072" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:43.222911" elapsed="0.000664"/>
</kw>
<kw name="Open 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-19T01:37:43.223868" elapsed="0.000289"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:43.224426" 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-19T01:37:43.217880" elapsed="0.006832"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:42.573974" elapsed="0.650959"/>
</kw>
<msg time="2026-04-19T01:37:43.225249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:42.573016" elapsed="0.652291"/>
</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-19T01:37:42.572260" elapsed="0.653128"/>
</kw>
<msg time="2026-04-19T01:37:43.225428" 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-19T01:37:42.571523" elapsed="0.653950"/>
</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-19T01:37:43.228763" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:37:43.229256" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:43.229551" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:43.225822" elapsed="0.003878"/>
</kw>
<msg time="2026-04-19T01:37:43.229790" level="INFO">${output} = 1</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-19T01:37:42.570298" elapsed="0.659519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:43.230277" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:43.230000" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:43.230365" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:43.230516" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:42.568460" elapsed="0.662081"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:43.230587" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:43.230730" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:42.566265" elapsed="0.664489"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:43.231379" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:43.230910" elapsed="0.000543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:42.565196" elapsed="0.666368">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:45.234998" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:45.234232" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:45.237160" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:45.236525" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:45.238999" 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-19T01:37:45.239257" 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-19T01:37:45.238642" elapsed="0.000674"/>
</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-19T01:37:45.247564" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:45.247076" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:45.245108" elapsed="0.002598"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:45.249139" 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-19T01:37:45.249382" 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-19T01:37:45.248680" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:45.251076" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:45.250480" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:45.252862" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:45.252176" elapsed="0.000784"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:45.255294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:45.255372" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:45.254985" 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-19T01:37:45.255607" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:45.257041" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:45.583767" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:45.256697" elapsed="0.327215"/>
</kw>
<msg time="2026-04-19T01:37:45.583995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:45.256334" elapsed="0.327773"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:45.254196" elapsed="0.330225"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:45.585952" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:45.608657" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:45.609271" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:45.609616" 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-19T01:37:45.585552" elapsed="0.024284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:45.612156" elapsed="0.001028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:45.615476" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:45.614478" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:45.616750" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:45.616099" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:45.615942" elapsed="0.001203"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:45.617877" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T01:37:45.617508" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:45.617397" elapsed="0.000774"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:45.618253" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:45.623107" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T01:37:45.623668" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:45.624048" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:45.619593" elapsed="0.004672"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:45.243666" elapsed="0.380828"/>
</kw>
<msg time="2026-04-19T01:37:45.624829" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:45.242067" elapsed="0.382820"/>
</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-19T01:37:45.240827" elapsed="0.384144"/>
</kw>
<msg time="2026-04-19T01:37:45.625015" 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-19T01:37:45.239669" elapsed="0.385425"/>
</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-19T01:37:45.628146" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:45.628659" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:45.628961" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:45.625401" elapsed="0.003748"/>
</kw>
<msg time="2026-04-19T01:37:45.629299" level="INFO">${output} = 1</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-19T01:37:45.237709" elapsed="0.391617"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:45.629779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:45.629521" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:45.629869" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:37:45.630125" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:45.235557" elapsed="0.394598"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:45.630204" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:45.630355" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:45.233401" elapsed="0.396979"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:45.630942" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:45.630538" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:45.232362" elapsed="0.398797">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:47.634610" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:47.633838" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:47.636748" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:47.636143" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:47.638597" 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-19T01:37:47.638870" 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-19T01:37:47.638272" elapsed="0.000662"/>
</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-19T01:37:47.644534" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:47.643880" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:47.643802" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:47.647015" 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-19T01:37:47.647416" 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-19T01:37:47.646090" elapsed="0.001466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:47.649676" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:47.648901" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:47.652167" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:47.651306" elapsed="0.000958"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:47.654512" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:47.654590" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:47.654229" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:47.654867" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:47.656251" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:47.991202" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:47.655910" elapsed="0.335545"/>
</kw>
<msg time="2026-04-19T01:37:47.991538" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:47.655546" elapsed="0.336084"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:47.653453" elapsed="0.338452"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:47.993425" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:48.016570" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:48.016806" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:48.016957" 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-19T01:37:47.992986" elapsed="0.024090"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:48.018106" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:48.019553" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:48.019115" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:48.020085" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:48.019822" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:48.019764" elapsed="0.000456"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:48.020569" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:37:48.020365" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:48.020317" elapsed="0.000411"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:48.020808" 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-19T01:37:48.025599" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:37:48.026317" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:48.026679" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:48.022233" elapsed="0.004657"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:47.641950" elapsed="0.385179"/>
</kw>
<msg time="2026-04-19T01:37:48.027434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:47.641009" elapsed="0.386483"/>
</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-19T01:37:47.640268" elapsed="0.387306"/>
</kw>
<msg time="2026-04-19T01:37:48.027614" 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-19T01:37:47.639319" elapsed="0.388341"/>
</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-19T01:37:48.030717" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:37:48.031210" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:48.031506" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:48.027953" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T01:37:48.031746" level="INFO">${output} = 1</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-19T01:37:47.637329" elapsed="0.394442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:48.032217" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:48.031952" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:48.032307" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:37:48.032469" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:47.635201" elapsed="0.397294"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:48.032542" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:48.032688" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:47.633001" elapsed="0.399711"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:48.033356" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:48.032929" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:47.631915" elapsed="0.401626">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:50.037072" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:50.036295" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:50.038768" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:50.038366" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:50.039998" 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-19T01:37:50.040172" 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-19T01:37:50.039758" elapsed="0.000453"/>
</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-19T01:37:50.045756" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:50.045067" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:50.044962" elapsed="0.000998"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:50.048576" 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-19T01:37:50.048935" 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-19T01:37:50.047566" elapsed="0.001535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:50.051066" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:50.050502" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:50.052914" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:50.052221" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:50.055297" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:50.055374" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:50.054988" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:50.055614" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:50.057021" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:50.389493" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:50.056693" elapsed="0.332961"/>
</kw>
<msg time="2026-04-19T01:37:50.389738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:50.056327" elapsed="0.333501"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:50.054233" elapsed="0.335918"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:50.391605" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:50.414960" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:50.415612" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:50.415950" 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-19T01:37:50.391222" elapsed="0.024975"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:50.418647" elapsed="0.001020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:50.421951" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:50.420966" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:50.423097" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:50.422562" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:50.422436" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:50.424299" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T01:37:50.423704" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:50.423597" elapsed="0.001095"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:50.424869" elapsed="0.000084"/>
</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-19T01:37:50.432183" elapsed="0.000420"/>
</kw>
<kw name="Open 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-19T01:37:50.432829" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:50.433260" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:50.427864" elapsed="0.005610"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:50.043066" elapsed="0.390636"/>
</kw>
<msg time="2026-04-19T01:37:50.434021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:50.042042" elapsed="0.392066"/>
</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-19T01:37:50.041220" elapsed="0.392972"/>
</kw>
<msg time="2026-04-19T01:37:50.434234" 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-19T01:37:50.040445" elapsed="0.393836"/>
</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-19T01:37:50.437491" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:37:50.438010" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:50.438342" 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-19T01:37:50.434594" elapsed="0.003902"/>
</kw>
<msg time="2026-04-19T01:37:50.438590" level="INFO">${output} = 1</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-19T01:37:50.039144" elapsed="0.399472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:50.439102" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:50.438827" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:50.439196" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:37:50.439361" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:50.037595" elapsed="0.401792"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:50.439435" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:50.439582" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:50.035460" elapsed="0.404147"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:50.440224" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:50.439763" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:50.034407" elapsed="0.406002">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:52.442933" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:52.442402" elapsed="0.000580"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:52.444538" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:52.444132" elapsed="0.000446"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:52.445766" 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-19T01:37:52.445915" 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-19T01:37:52.445526" elapsed="0.000427"/>
</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-19T01:37:52.451528" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:52.450823" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:52.450741" elapsed="0.000992"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:52.454254" 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-19T01:37:52.454621" 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-19T01:37:52.453183" elapsed="0.001586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:52.457151" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:52.456263" elapsed="0.001051"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:52.460046" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:52.458941" elapsed="0.001209"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:52.462775" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:52.462881" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:52.462424" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:52.463191" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:52.464551" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:52.834908" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:52.464192" elapsed="0.370912"/>
</kw>
<msg time="2026-04-19T01:37:52.835197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:52.463803" elapsed="0.371524"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:52.461383" elapsed="0.374248"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:52.837173" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:52.860186" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:52.860775" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:52.861152" 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-19T01:37:52.836744" elapsed="0.024619"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:52.863724" elapsed="0.000987"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:52.866945" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:52.865983" elapsed="0.001220"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:52.868220" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:52.867543" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:52.867423" elapsed="0.001094"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:52.869426" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:37:52.868838" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:52.868727" elapsed="0.001053"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:52.870014" elapsed="0.000112"/>
</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-19T01:37:52.877518" elapsed="0.000560"/>
</kw>
<kw name="Open 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-19T01:37:52.878397" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:52.878925" elapsed="0.000173"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:52.872355" elapsed="0.006902"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:52.448806" elapsed="0.430785"/>
</kw>
<msg time="2026-04-19T01:37:52.880075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:52.447815" elapsed="0.432352"/>
</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-19T01:37:52.447006" elapsed="0.433283"/>
</kw>
<msg time="2026-04-19T01:37:52.880350" 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-19T01:37:52.446208" elapsed="0.434210"/>
</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-19T01:37:52.884131" 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-19T01:37:52.884624" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:52.884926" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:52.880864" elapsed="0.004261"/>
</kw>
<msg time="2026-04-19T01:37:52.885220" level="INFO">${output} = 1</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-19T01:37:52.444898" elapsed="0.440348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:52.885705" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:52.885452" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:52.885796" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T01:37:52.885970" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:52.443504" elapsed="0.442491"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:52.886063" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:37:52.886211" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:52.441835" elapsed="0.444401"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:52.886793" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:52.886395" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:52.441119" elapsed="0.445861">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:54.890692" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:54.889921" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:54.892801" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:54.892183" elapsed="0.000681"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:54.894501" 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-19T01:37:54.894750" 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-19T01:37:54.894283" elapsed="0.000505"/>
</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-19T01:37:54.900384" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:54.899720" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:54.899345" elapsed="0.001233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:54.902717" 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-19T01:37:54.903092" 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-19T01:37:54.901939" elapsed="0.001289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:54.905466" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:54.904702" elapsed="0.000946"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:54.907515" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:54.906757" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:54.909883" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:54.909961" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:54.909590" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:54.910210" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:54.911600" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:55.244719" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:54.911275" elapsed="0.333616"/>
</kw>
<msg time="2026-04-19T01:37:55.244987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:54.910761" elapsed="0.334339"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:54.908799" elapsed="0.336595"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:55.246902" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:55.269913" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:55.270460" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:55.270794" 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-19T01:37:55.246498" elapsed="0.024507"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:55.273298" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:55.276458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:55.275479" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:55.277458" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:55.277124" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:55.276968" elapsed="0.000678"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:37:55.278150" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T01:37:55.277847" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:55.277780" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:55.278490" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:55.285146" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T01:37:55.285989" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:55.286516" 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-19T01:37:55.280464" elapsed="0.006344"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:54.897474" elapsed="0.389706"/>
</kw>
<msg time="2026-04-19T01:37:55.287617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:54.896526" elapsed="0.391174"/>
</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-19T01:37:54.895752" elapsed="0.392064"/>
</kw>
<msg time="2026-04-19T01:37:55.287874" 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-19T01:37:54.895011" elapsed="0.392928"/>
</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-19T01:37:55.291488" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:37:55.291973" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:55.292293" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:55.288443" elapsed="0.004005"/>
</kw>
<msg time="2026-04-19T01:37:55.292540" level="INFO">${output} = 1</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-19T01:37:54.893385" elapsed="0.399181"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:55.293020" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:55.292751" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:55.293126" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:37:55.293281" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:54.891245" elapsed="0.402062"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:55.293354" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:37:55.293503" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:54.888987" elapsed="0.404541"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:55.294131" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:55.293687" elapsed="0.000524">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:54.887788" elapsed="0.406538">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:57.298281" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:57.297318" elapsed="0.001039"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:57.299884" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:57.299307" elapsed="0.000617"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:57.301148" 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-19T01:37:57.301291" 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-19T01:37:57.300886" elapsed="0.000441"/>
</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-19T01:37:57.307206" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:57.306542" elapsed="0.000885"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:57.306142" elapsed="0.001371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:57.309580" 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-19T01:37:57.309921" 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-19T01:37:57.308857" elapsed="0.001225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:57.311687" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:57.311149" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:57.313615" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:57.312789" elapsed="0.000926"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:57.315974" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:57.316068" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:57.315689" 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-19T01:37:57.316333" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:57.317713" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:37:57.642765" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:57.317387" elapsed="0.325532"/>
</kw>
<msg time="2026-04-19T01:37:57.643004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:57.316890" elapsed="0.326226"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:57.314900" elapsed="0.328498"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:37:57.644912" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:37:57.668243" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:37:57.668798" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:37:57.669238" 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-19T01:37:57.644478" elapsed="0.024989"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:57.672531" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:57.674894" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:57.674287" 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-19T01:37:57.675615" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:37:57.675291" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:57.675211" 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-19T01:37:57.676311" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:37:57.676004" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:57.675936" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:37:57.676646" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:57.683496" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T01:37:57.684276" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:57.684773" elapsed="0.000172"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:57.678671" elapsed="0.006450"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:57.304282" elapsed="0.381128"/>
</kw>
<msg time="2026-04-19T01:37:57.685782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:57.303284" elapsed="0.382559"/>
</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-19T01:37:57.302350" elapsed="0.383576"/>
</kw>
<msg time="2026-04-19T01:37:57.685968" 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-19T01:37:57.301565" elapsed="0.384450"/>
</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-19T01:37:57.689157" 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-19T01:37:57.689672" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:37:57.689967" elapsed="0.000137"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:37:57.686427" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T01:37:57.690250" level="INFO">${output} = 1</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-19T01:37:57.300281" elapsed="0.389994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:57.690703" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:57.690456" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:37:57.690790" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:37:57.690940" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:57.298707" elapsed="0.392258"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:37:57.691012" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T01:37:57.691173" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:57.296474" elapsed="0.394724"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:37:57.691746" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:37:57.691354" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:57.295342" elapsed="0.396619">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:37:59.695642" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:37:59.694839" elapsed="0.000877"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:37:59.697812" level="INFO">${member_ip} = 10.30.171.206</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-19T01:37:59.697184" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:59.699394" 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-19T01:37:59.699731" 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-19T01:37:59.699168" elapsed="0.000607"/>
</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-19T01:37:59.707854" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:37:59.707178" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-19T01:37:59.704610" elapsed="0.003496"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:59.710163" 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-19T01:37:59.710512" 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-19T01:37:59.709472" elapsed="0.001182"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:37:59.712471" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:37:59.711845" elapsed="0.000734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:37:59.714406" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:37:59.713661" elapsed="0.000843"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:37:59.716844" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:37:59.716921" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:37:59.716557" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:59.717183" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:37:59.718519" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:00.026675" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:37:59.718184" elapsed="0.308652"/>
</kw>
<msg time="2026-04-19T01:38:00.026923" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:59.717741" elapsed="0.309276"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:37:59.715701" elapsed="0.311638"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:00.028896" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:00.051574" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:00.052121" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:00.052465" 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-19T01:38:00.028470" elapsed="0.024207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:00.054979" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:00.058226" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:00.057192" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:00.059422" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:00.058814" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:00.058687" elapsed="0.001032"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:00.060594" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:38:00.060133" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:00.059970" elapsed="0.000976"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:00.061217" elapsed="0.000084"/>
</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-19T01:38:00.069027" elapsed="0.000410"/>
</kw>
<kw name="Open 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-19T01:38:00.069675" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:00.070089" 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-19T01:38:00.064278" elapsed="0.006022"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:37:59.702718" elapsed="0.367801"/>
</kw>
<msg time="2026-04-19T01:38:00.070823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:37:59.701704" elapsed="0.369177"/>
</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-19T01:37:59.700810" elapsed="0.370159"/>
</kw>
<msg time="2026-04-19T01:38:00.071011" 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-19T01:37:59.699998" elapsed="0.371092"/>
</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-19T01:38:00.074275" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:00.074758" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:00.075067" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:00.071454" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T01:38:00.075310" level="INFO">${output} = 1</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-19T01:37:59.698524" elapsed="0.376811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:00.075771" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:00.075521" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:00.075858" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:00.076014" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:37:59.696215" elapsed="0.379839"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:00.076104" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:38:00.076255" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:37:59.693937" elapsed="0.382344"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:00.076875" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:00.076461" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:37:59.692833" elapsed="0.384285">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:02.081093" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:02.080323" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:02.083338" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:02.082606" elapsed="0.000794"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:02.085094" 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-19T01:38:02.085236" 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-19T01:38:02.084847" elapsed="0.000426"/>
</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-19T01:38:02.090808" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:02.090171" elapsed="0.000796"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:02.090088" elapsed="0.000990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:02.093442" 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-19T01:38:02.093794" 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-19T01:38:02.092490" elapsed="0.001447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:02.096297" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:02.095505" elapsed="0.000947"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:02.098887" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:02.097828" elapsed="0.001197"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:02.101856" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:02.101933" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:02.101571" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:02.102196" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:02.103691" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:02.411244" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:37:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:02.103342" elapsed="0.308061"/>
</kw>
<msg time="2026-04-19T01:38:02.411491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:02.102828" elapsed="0.308756"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:02.100790" elapsed="0.311081"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:02.413414" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:02.436488" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:02.437004" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:02.437407" 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-19T01:38:02.412974" elapsed="0.024653"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:02.439953" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:02.443394" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:02.442267" elapsed="0.001364"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:02.444532" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:02.443992" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:02.443867" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:02.445627" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T01:38:02.445184" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:02.445070" elapsed="0.000943"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:02.446257" elapsed="0.000084"/>
</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-19T01:38:02.454156" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T01:38:02.454714" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:02.455200" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:02.449609" elapsed="0.005810"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:02.088211" elapsed="0.367429"/>
</kw>
<msg time="2026-04-19T01:38:02.455946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:02.086979" elapsed="0.369026"/>
</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-19T01:38:02.086238" elapsed="0.369868"/>
</kw>
<msg time="2026-04-19T01:38:02.456146" 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-19T01:38:02.085493" elapsed="0.370700"/>
</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-19T01:38:02.459223" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:02.459703" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:02.459995" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:02.456486" elapsed="0.003681"/>
</kw>
<msg time="2026-04-19T01:38:02.460381" level="INFO">${output} = 1</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-19T01:38:02.083941" elapsed="0.376467"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:02.460850" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:02.460597" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:02.460937" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:02.461109" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:02.081650" elapsed="0.379485"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:02.461183" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:02.461330" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:02.079448" elapsed="0.381907"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:02.461909" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:02.461511" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:02.078251" elapsed="0.383877">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:04.464748" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:04.464215" elapsed="0.000580"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:04.466221" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:04.465756" elapsed="0.000510"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:04.467492" 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-19T01:38:04.467645" 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-19T01:38:04.467247" elapsed="0.000440"/>
</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-19T01:38:04.473514" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:04.472663" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:04.472582" elapsed="0.001153"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:04.476334" 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-19T01:38:04.476772" 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-19T01:38:04.475107" elapsed="0.001805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:04.479229" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:04.478303" elapsed="0.001098"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:04.482167" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:04.480850" elapsed="0.001459"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:04.485981" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:04.486118" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:04.485529" elapsed="0.000626"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:04.486460" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:04.488415" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:04.792610" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:04.487882" elapsed="0.304973"/>
</kw>
<msg time="2026-04-19T01:38:04.792942" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:04.487341" elapsed="0.305692"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:04.484018" elapsed="0.309313"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:04.794896" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:04.818167" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:04.818854" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:04.819323" 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-19T01:38:04.794499" elapsed="0.025064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:04.822083" elapsed="0.001007"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:04.825515" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:04.824499" elapsed="0.001166"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:04.826335" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:04.825926" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:04.825817" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:04.827029" elapsed="0.000102"/>
</return>
<status status="PASS" start="2026-04-19T01:38:04.826732" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:04.826663" elapsed="0.000625"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:04.827400" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:04.834034" 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-19T01:38:04.834640" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:04.835046" elapsed="0.000126"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:04.829375" elapsed="0.005910"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:04.470576" elapsed="0.364944"/>
</kw>
<msg time="2026-04-19T01:38:04.835886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:04.469555" elapsed="0.366396"/>
</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-19T01:38:04.468773" elapsed="0.367379"/>
</kw>
<msg time="2026-04-19T01:38:04.836200" 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-19T01:38:04.467925" elapsed="0.368326"/>
</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-19T01:38:04.839335" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:04.839821" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:04.840264" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:04.836627" elapsed="0.003792"/>
</kw>
<msg time="2026-04-19T01:38:04.840513" level="INFO">${output} = 1</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-19T01:38:04.466598" elapsed="0.373941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:04.840993" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:04.840722" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:04.841104" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:38:04.841306" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:04.465130" elapsed="0.376204"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:04.841386" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:38:04.841535" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:04.463612" elapsed="0.377948"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:04.842217" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:04.841779" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:04.462825" elapsed="0.379638">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:06.846250" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:06.845397" elapsed="0.000928"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:06.848584" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:06.847914" elapsed="0.000734"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:06.850577" 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-19T01:38:06.850820" 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-19T01:38:06.850228" elapsed="0.000654"/>
</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-19T01:38:06.858003" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:06.857356" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:06.857275" elapsed="0.000995"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:06.860155" 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-19T01:38:06.860408" 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-19T01:38:06.859422" elapsed="0.001089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:06.862109" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:06.861520" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:06.863963" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:06.863250" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:06.866607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:06.866686" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:06.866267" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:06.866931" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:06.868393" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:07.160637" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:06.867892" elapsed="0.292898"/>
</kw>
<msg time="2026-04-19T01:38:07.160876" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:06.867524" elapsed="0.293442"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:06.865371" elapsed="0.295918"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:07.162793" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:07.185773" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:07.186321" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:07.186650" 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-19T01:38:07.162394" elapsed="0.024464"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:07.189279" elapsed="0.000975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:07.192678" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:07.191602" elapsed="0.001318"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:07.193854" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:07.193328" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:07.193196" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:07.195193" elapsed="0.000134"/>
</return>
<status status="PASS" start="2026-04-19T01:38:07.194554" elapsed="0.000891"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:07.194439" elapsed="0.001143"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:07.195770" elapsed="0.000092"/>
</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-19T01:38:07.202593" elapsed="0.000541"/>
</kw>
<kw name="Open 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-19T01:38:07.203430" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:07.203920" elapsed="0.000164"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:07.197928" elapsed="0.006307"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:06.855375" elapsed="0.349204"/>
</kw>
<msg time="2026-04-19T01:38:07.204882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:06.854040" elapsed="0.350901"/>
</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-19T01:38:06.852603" elapsed="0.352419"/>
</kw>
<msg time="2026-04-19T01:38:07.205082" 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-19T01:38:06.851280" elapsed="0.353850"/>
</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-19T01:38:07.208203" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:38:07.208701" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:07.208994" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:07.205421" elapsed="0.003739"/>
</kw>
<msg time="2026-04-19T01:38:07.209251" level="INFO">${output} = 1</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-19T01:38:06.849182" elapsed="0.360094"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:07.209703" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:07.209455" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:07.209789" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:07.209942" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:06.846905" elapsed="0.363062"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:07.210014" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T01:38:07.210179" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:06.844482" elapsed="0.365721"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:07.210760" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:07.210359" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:06.843368" elapsed="0.367577">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:09.215347" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:09.214369" elapsed="0.001052"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:09.217661" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:09.217010" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:09.219608" 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-19T01:38:09.219838" 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-19T01:38:09.219259" elapsed="0.000640"/>
</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-19T01:38:09.226167" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:09.225678" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:09.225378" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:09.227754" 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-19T01:38:09.227995" 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-19T01:38:09.227302" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:09.229650" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:09.229094" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:09.231484" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:09.230758" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:09.234078" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:09.234158" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:09.233766" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:09.234478" elapsed="0.000390"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:09.235815" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:09.537353" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:09.235484" elapsed="0.302021"/>
</kw>
<msg time="2026-04-19T01:38:09.537591" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:09.235121" elapsed="0.302563"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:09.232781" elapsed="0.305189"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:09.539494" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:09.563252" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:09.563752" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:09.564137" 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-19T01:38:09.539096" elapsed="0.025254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:09.566579" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:09.569772" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:09.568757" elapsed="0.001241"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:09.571107" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:09.570391" elapsed="0.000909"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:09.570265" elapsed="0.001164"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:09.571923" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T01:38:09.571711" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:09.571650" elapsed="0.000455"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:09.572187" 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-19T01:38:09.577124" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:09.577673" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:09.578031" 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-19T01:38:09.573583" elapsed="0.004670"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:09.224064" elapsed="0.354413"/>
</kw>
<msg time="2026-04-19T01:38:09.578784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:09.222850" elapsed="0.355991"/>
</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-19T01:38:09.221577" elapsed="0.357348"/>
</kw>
<msg time="2026-04-19T01:38:09.578966" 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-19T01:38:09.220385" elapsed="0.358628"/>
</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-19T01:38:09.582124" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:38:09.582596" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:09.582886" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:09.579363" elapsed="0.003672"/>
</kw>
<msg time="2026-04-19T01:38:09.583142" level="INFO">${output} = 1</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-19T01:38:09.218247" elapsed="0.364931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:09.583621" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:09.583358" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:09.583729" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:09.583883" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:09.216077" elapsed="0.367831"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:09.583955" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:09.584120" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:09.213344" elapsed="0.370808"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:09.584707" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:09.584310" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:09.212156" elapsed="0.372765">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:11.588565" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:11.587750" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:11.590793" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:11.590165" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:11.592024" 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-19T01:38:11.592311" 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-19T01:38:11.591789" elapsed="0.000564"/>
</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-19T01:38:11.598379" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:11.597677" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:11.597249" elapsed="0.001334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:11.600077" 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-19T01:38:11.600321" 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-19T01:38:11.599597" elapsed="0.000823"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:11.602127" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:11.601519" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:11.603944" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:11.603241" elapsed="0.000886"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:11.606462" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:11.606542" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:11.606175" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:11.606780" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:11.608237" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:11.967543" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:11.607725" elapsed="0.359970"/>
</kw>
<msg time="2026-04-19T01:38:11.967782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:11.607364" elapsed="0.360509"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:11.605337" elapsed="0.362856"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:11.969734" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:11.992794" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:11.993344" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:11.993704" 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-19T01:38:11.969327" elapsed="0.024589"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:11.996172" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:11.999228" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:11.998485" elapsed="0.000900"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:11.999967" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:11.999622" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:11.999538" elapsed="0.000649"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:12.000706" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:38:12.000405" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:12.000333" elapsed="0.000609"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:12.001084" elapsed="0.000058"/>
</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-19T01:38:12.007682" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:38:12.008349" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:12.008717" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:12.003174" elapsed="0.005754"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:11.595282" elapsed="0.413892"/>
</kw>
<msg time="2026-04-19T01:38:12.009488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:11.594273" elapsed="0.415275"/>
</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-19T01:38:11.593409" elapsed="0.416241"/>
</kw>
<msg time="2026-04-19T01:38:12.009693" 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-19T01:38:11.592590" elapsed="0.417151"/>
</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-19T01:38:12.012748" 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-19T01:38:12.013239" elapsed="0.000249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:12.013677" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:12.010111" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T01:38:12.013920" level="INFO">${output} = 1</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-19T01:38:11.591186" elapsed="0.422759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:12.014448" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:12.014198" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:12.014535" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:12.014687" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:11.589155" elapsed="0.425558"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:12.014760" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:38:12.014904" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:11.586882" elapsed="0.428046"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:12.015559" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:12.015165" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:11.585783" elapsed="0.429959">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:14.019281" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:14.018478" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:14.021388" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:14.020744" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:14.023108" 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-19T01:38:14.023254" 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-19T01:38:14.022866" elapsed="0.000426"/>
</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-19T01:38:14.030988" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:14.030397" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:14.027891" elapsed="0.003323"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:14.032663" 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-19T01:38:14.032910" 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-19T01:38:14.032215" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:14.034566" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:14.033993" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:14.036428" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:14.035720" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:14.038827" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:14.038905" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:14.038548" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:14.039329" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:14.040600" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:14.349790" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:14.040273" elapsed="0.309651"/>
</kw>
<msg time="2026-04-19T01:38:14.350007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:14.039897" elapsed="0.310223"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:14.037740" elapsed="0.312670"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:14.351910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:14.374912" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:14.375539" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:14.375877" 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-19T01:38:14.351507" elapsed="0.024687"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:14.378603" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:14.381886" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:14.380897" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:14.382991" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:14.382499" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:14.382374" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:14.384270" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T01:38:14.383632" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:14.383528" elapsed="0.001099"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:14.384857" elapsed="0.000084"/>
</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-19T01:38:14.431351" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T01:38:14.431981" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:14.432381" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:14.386694" elapsed="0.045904"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:14.025941" elapsed="0.406889"/>
</kw>
<msg time="2026-04-19T01:38:14.433250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:14.025000" elapsed="0.408317"/>
</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-19T01:38:14.024251" elapsed="0.409148"/>
</kw>
<msg time="2026-04-19T01:38:14.433440" 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-19T01:38:14.023513" elapsed="0.409972"/>
</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-19T01:38:14.436544" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:38:14.437023" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:14.437374" 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-19T01:38:14.433795" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T01:38:14.437614" level="INFO">${output} = 1</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-19T01:38:14.021936" elapsed="0.415703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:14.438105" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:14.437835" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:14.438196" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:38:14.438356" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:14.019805" elapsed="0.418577"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:14.438427" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:38:14.438569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:14.017583" elapsed="0.421011"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:14.439168" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:14.438749" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:14.016551" elapsed="0.422799">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:16.443153" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:16.442302" elapsed="0.000924"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:16.445322" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:16.444654" elapsed="0.000797"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:16.446728" 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-19T01:38:16.446881" 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-19T01:38:16.446506" elapsed="0.000413"/>
</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-19T01:38:16.452664" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:16.451944" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:16.451867" elapsed="0.000990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:16.454590" 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-19T01:38:16.454832" 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-19T01:38:16.454152" elapsed="0.000780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:16.456465" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:16.455908" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:16.458376" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:16.457624" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:16.460983" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:16.461080" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:16.460702" 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-19T01:38:16.461315" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:16.462774" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:16.859688" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:16.462442" elapsed="0.397400"/>
</kw>
<msg time="2026-04-19T01:38:16.859927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:16.461924" elapsed="0.398094"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:16.459733" elapsed="0.400594"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:16.861798" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:16.884344" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:16.884878" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:16.885262" 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-19T01:38:16.861408" elapsed="0.024061"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:16.887787" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:16.890395" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:16.889588" elapsed="0.000950"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:16.891324" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:16.890765" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:16.890684" 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-19T01:38:16.892087" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T01:38:16.891737" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:16.891647" elapsed="0.000696"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:16.892467" elapsed="0.000056"/>
</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-19T01:38:16.899689" 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-19T01:38:16.900423" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:16.900837" elapsed="0.000134"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:16.894625" elapsed="0.006475"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:16.449970" elapsed="0.451356"/>
</kw>
<msg time="2026-04-19T01:38:16.901638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:16.448662" elapsed="0.453040"/>
</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-19T01:38:16.447888" elapsed="0.453897"/>
</kw>
<msg time="2026-04-19T01:38:16.901826" 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-19T01:38:16.447168" elapsed="0.454705"/>
</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-19T01:38:16.905077" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:38:16.905571" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:16.905875" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:16.902319" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T01:38:16.906167" level="INFO">${output} = 1</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-19T01:38:16.445901" elapsed="0.460292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:16.906640" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:16.906389" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:16.906728" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:16.906881" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:16.443695" elapsed="0.463210"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:16.906953" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:16.907184" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:16.441391" elapsed="0.465818"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:16.907789" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:16.907366" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:16.440257" elapsed="0.467721">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:18.911486" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:18.910725" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:18.913618" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:18.912980" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:18.915466" 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-19T01:38:18.915694" 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-19T01:38:18.915135" elapsed="0.000619"/>
</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-19T01:38:18.923442" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:18.922955" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:18.922897" elapsed="0.000685"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:18.925077" 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-19T01:38:18.925329" 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-19T01:38:18.924584" elapsed="0.000847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:18.926974" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:18.926431" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:18.928794" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:18.928092" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:18.931258" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:18.931336" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:18.930957" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:18.931573" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:18.932903" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:19.244519" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:18.932578" elapsed="0.312088"/>
</kw>
<msg time="2026-04-19T01:38:19.244750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:18.932214" elapsed="0.312624"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:18.930192" elapsed="0.314959"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:19.246635" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:19.269391" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:19.270007" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:19.270510" 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-19T01:38:19.246220" elapsed="0.024673"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:19.273391" elapsed="0.001067"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:19.276085" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:19.275435" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:19.276780" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:19.276452" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:19.276372" elapsed="0.000592"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:19.277477" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T01:38:19.277193" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:19.277122" elapsed="0.000582"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:19.277816" elapsed="0.000051"/>
</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-19T01:38:19.284084" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:38:19.284635" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:19.284995" 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-19T01:38:19.279776" elapsed="0.005448"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:18.920137" elapsed="0.365309"/>
</kw>
<msg time="2026-04-19T01:38:19.285750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:18.918597" elapsed="0.367214"/>
</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-19T01:38:18.917365" elapsed="0.368528"/>
</kw>
<msg time="2026-04-19T01:38:19.285934" 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-19T01:38:18.916136" elapsed="0.369845"/>
</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-19T01:38:19.289078" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:38:19.289557" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:19.289850" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:19.286295" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T01:38:19.290204" level="INFO">${output} = 1</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-19T01:38:18.914193" elapsed="0.376038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:19.290689" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:19.290436" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:19.290778" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:19.290947" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:18.912007" elapsed="0.378972"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:19.291094" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:38:19.291248" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:18.909882" elapsed="0.381392"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:19.291828" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:19.291433" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:18.908774" elapsed="0.383236">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:21.295723" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:21.294906" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:21.298018" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:21.297343" elapsed="0.000777"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:21.299891" 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-19T01:38:21.300162" 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-19T01:38:21.299532" elapsed="0.000736"/>
</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-19T01:38:21.305846" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:21.305378" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:21.305305" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:21.307495" 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-19T01:38:21.307754" 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-19T01:38:21.307044" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:21.309504" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:21.308870" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:21.311374" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:21.310642" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:21.313884" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:21.313965" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:21.313593" 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-19T01:38:21.314245" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:21.315581" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:21.679830" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:21.315249" elapsed="0.364828"/>
</kw>
<msg time="2026-04-19T01:38:21.680160" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:21.314857" elapsed="0.365386"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:21.312676" elapsed="0.367839"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:21.681984" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:21.704427" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:21.704920" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:21.705294" 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-19T01:38:21.681600" elapsed="0.023904"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:21.707709" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:21.710915" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:21.709891" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:21.712096" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:21.711567" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:21.711443" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:21.713204" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:38:21.712717" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:21.712607" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:21.713775" elapsed="0.000088"/>
</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-19T01:38:21.719581" 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-19T01:38:21.720180" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:21.720550" 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-19T01:38:21.715925" elapsed="0.004838"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:21.303694" elapsed="0.417293"/>
</kw>
<msg time="2026-04-19T01:38:21.721315" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:21.302788" elapsed="0.418588"/>
</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-19T01:38:21.302015" elapsed="0.419444"/>
</kw>
<msg time="2026-04-19T01:38:21.721502" 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-19T01:38:21.300634" elapsed="0.420914"/>
</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-19T01:38:21.724594" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:38:21.725088" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:21.725388" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:21.721840" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T01:38:21.725630" level="INFO">${output} = 1</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-19T01:38:21.298599" elapsed="0.427057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:21.726201" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:21.725856" elapsed="0.000392"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:21.726292" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:21.726446" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:21.296289" elapsed="0.430182"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:21.726519" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:21.726695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:21.294021" elapsed="0.432701"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:21.727370" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:21.726948" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:21.292867" elapsed="0.434685">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:23.731290" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:23.730478" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:23.733421" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:23.732924" elapsed="0.000537"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:23.734621" 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-19T01:38:23.734780" 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-19T01:38:23.734391" elapsed="0.000427"/>
</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-19T01:38:23.740669" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:23.739977" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:23.739861" elapsed="0.001019"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:23.742465" 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-19T01:38:23.742707" 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-19T01:38:23.741993" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:23.744385" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:23.743796" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:23.746220" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:23.745491" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:23.748741" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:23.748819" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:23.748450" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:23.749073" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:23.750337" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:24.066216" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:23.749993" elapsed="0.316391"/>
</kw>
<msg time="2026-04-19T01:38:24.066475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:23.749629" elapsed="0.316936"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:23.747581" elapsed="0.319293"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:24.068464" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:24.091579" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:24.092213" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:24.092618" 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-19T01:38:24.068022" elapsed="0.024876"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:24.095491" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:24.099330" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:24.097974" elapsed="0.001648"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:24.100647" elapsed="0.000083"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:24.099998" elapsed="0.000910"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:24.099869" elapsed="0.001208"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:24.101541" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T01:38:24.101327" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:24.101273" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:24.101817" 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-19T01:38:24.106889" elapsed="0.000488"/>
</kw>
<kw name="Open 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-19T01:38:24.107603" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:24.107998" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:24.103289" elapsed="0.004945"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:23.737599" elapsed="0.370889"/>
</kw>
<msg time="2026-04-19T01:38:24.108859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:23.736602" elapsed="0.372324"/>
</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-19T01:38:23.735803" elapsed="0.373208"/>
</kw>
<msg time="2026-04-19T01:38:24.109070" 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-19T01:38:23.735063" elapsed="0.374056"/>
</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-19T01:38:24.112317" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:38:24.112870" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:24.113230" 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-19T01:38:24.109437" elapsed="0.003946"/>
</kw>
<msg time="2026-04-19T01:38:24.113506" level="INFO">${output} = 1</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-19T01:38:23.733785" elapsed="0.379747"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:24.113995" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:24.113713" elapsed="0.000345"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:24.114104" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:24.114263" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:23.731870" elapsed="0.382418"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:24.114337" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:24.114509" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:23.729599" elapsed="0.384937"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:24.115199" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:24.114698" elapsed="0.000579">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:23.728481" elapsed="0.386909">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:26.119924" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:26.119144" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:26.121897" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:26.121515" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:26.123096" 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-19T01:38:26.123242" 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-19T01:38:26.122841" elapsed="0.000439"/>
</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-19T01:38:26.128920" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:26.128282" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:26.127877" elapsed="0.001317"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:26.130662" 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-19T01:38:26.130904" 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-19T01:38:26.130218" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:26.132557" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:26.132002" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:26.134411" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:26.133680" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:26.136871" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:26.136948" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:26.136574" 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-19T01:38:26.137223" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:26.138470" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:26.468238" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:26.138143" elapsed="0.330194"/>
</kw>
<msg time="2026-04-19T01:38:26.468404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:26.137773" elapsed="0.330709"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:26.135793" elapsed="0.332927"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:26.470132" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:26.493271" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:26.493798" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:26.494187" 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-19T01:38:26.469764" elapsed="0.024640"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:26.496612" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:26.499221" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:26.498592" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:26.500081" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:26.499589" elapsed="0.000610"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:26.499511" elapsed="0.000767"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:26.500770" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:38:26.500486" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:26.500418" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:26.501123" elapsed="0.000055"/>
</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-19T01:38:26.507347" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:38:26.507887" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:26.508256" 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-19T01:38:26.502973" elapsed="0.005489"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:26.125992" elapsed="0.382693"/>
</kw>
<msg time="2026-04-19T01:38:26.508993" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:26.125045" elapsed="0.384018"/>
</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-19T01:38:26.124256" elapsed="0.384891"/>
</kw>
<msg time="2026-04-19T01:38:26.509188" 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-19T01:38:26.123503" elapsed="0.385731"/>
</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-19T01:38:26.512307" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T01:38:26.512776" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:26.513083" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:26.509522" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T01:38:26.513328" level="INFO">${output} = 1</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-19T01:38:26.122266" elapsed="0.391087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:26.513806" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:26.513530" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:26.513893" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:38:26.514058" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:26.120702" elapsed="0.393386"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:26.514140" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:26.514283" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:26.118277" elapsed="0.396030"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:26.514851" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:26.514461" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:26.116998" elapsed="0.398089">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:28.518703" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:28.517928" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:28.520895" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:28.520278" elapsed="0.000724"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:28.522329" 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-19T01:38:28.522586" 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-19T01:38:28.522081" elapsed="0.000544"/>
</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-19T01:38:28.528258" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:28.527590" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:28.527220" elapsed="0.001229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:28.530159" 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-19T01:38:28.530400" 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-19T01:38:28.529697" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:28.532006" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:28.531464" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:28.533803" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:28.533112" elapsed="0.000790"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:28.536240" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:28.536319" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:28.535943" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:28.536552" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:28.537824" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:28.854010" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:28.537501" elapsed="0.316677"/>
</kw>
<msg time="2026-04-19T01:38:28.854265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:28.537141" elapsed="0.317213"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:28.535185" elapsed="0.319454"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:28.856177" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:28.879948" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:28.880586" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:28.880915" 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-19T01:38:28.855750" elapsed="0.025417"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:28.883510" elapsed="0.001007"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:28.886914" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:28.885824" elapsed="0.001373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:28.888175" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:28.887592" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:28.887440" elapsed="0.001054"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:28.889575" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T01:38:28.888867" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:28.888749" elapsed="0.001233"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:28.890217" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:28.897085" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T01:38:28.897844" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:28.898234" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:28.891617" elapsed="0.006831"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:28.525383" elapsed="0.373291"/>
</kw>
<msg time="2026-04-19T01:38:28.899062" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:28.524403" elapsed="0.374722"/>
</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-19T01:38:28.523610" elapsed="0.375597"/>
</kw>
<msg time="2026-04-19T01:38:28.899249" 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-19T01:38:28.522849" elapsed="0.376446"/>
</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-19T01:38:28.902448" 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-19T01:38:28.902947" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:28.903276" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:28.899589" elapsed="0.003840"/>
</kw>
<msg time="2026-04-19T01:38:28.903524" level="INFO">${output} = 1</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-19T01:38:28.521478" elapsed="0.382071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:28.904008" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:28.903735" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:28.904118" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:28.904274" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:28.519257" elapsed="0.385043"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:28.904346" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:38:28.904490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:28.517074" elapsed="0.387441"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:28.905124" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:28.904672" elapsed="0.000527">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:28.515903" elapsed="0.389407">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:30.908338" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:30.907729" elapsed="0.000658"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:30.909913" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:30.909459" elapsed="0.000498"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:30.911222" 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-19T01:38:30.911378" 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-19T01:38:30.910965" elapsed="0.000452"/>
</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-19T01:38:30.916757" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:30.916088" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:30.915988" elapsed="0.001079"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:30.919436" 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-19T01:38:30.919780" 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-19T01:38:30.918450" elapsed="0.001473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:30.921901" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:30.921355" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:30.923770" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:30.922997" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:30.926177" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:30.926257" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:30.925877" 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-19T01:38:30.926534" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:30.928145" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:31.241412" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:30.927633" elapsed="0.313884"/>
</kw>
<msg time="2026-04-19T01:38:31.241588" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:30.927231" elapsed="0.314434"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:30.925109" elapsed="0.316792"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:31.243308" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:31.256173" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:31.256715" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:31.257094" 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-19T01:38:31.242937" elapsed="0.014373"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:31.259483" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:31.262203" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:31.261588" elapsed="0.000761"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:31.262880" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:31.262566" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:31.262490" 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-19T01:38:31.263562" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:38:31.263283" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:31.263217" elapsed="0.000561"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:31.263888" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:31.270283" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:38:31.270822" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:31.271231" 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-19T01:38:31.265798" elapsed="0.005651"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:30.914156" elapsed="0.357522"/>
</kw>
<msg time="2026-04-19T01:38:31.272216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:30.913181" elapsed="0.359095"/>
</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-19T01:38:30.912417" elapsed="0.359942"/>
</kw>
<msg time="2026-04-19T01:38:31.272400" 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-19T01:38:30.911644" elapsed="0.360803"/>
</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-19T01:38:31.275620" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:38:31.276326" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:31.276700" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:31.272770" elapsed="0.004082"/>
</kw>
<msg time="2026-04-19T01:38:31.276944" level="INFO">${output} = 1</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-19T01:38:30.910352" elapsed="0.366617"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:31.277425" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:31.277172" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:31.277513" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:31.277667" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:30.908735" elapsed="0.368957"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:31.277739" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:31.277884" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:30.907051" elapsed="0.370858"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:31.278536" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:31.278137" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:30.906155" elapsed="0.372566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:33.282255" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:33.281491" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:33.284545" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:33.283755" elapsed="0.000852"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:33.286411" 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-19T01:38:33.286643" 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-19T01:38:33.286075" elapsed="0.000628"/>
</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-19T01:38:33.292555" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:33.291892" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:33.291816" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:33.295261" 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-19T01:38:33.295552" 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-19T01:38:33.294187" elapsed="0.001468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:33.297224" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:33.296648" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:33.299262" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:33.298391" elapsed="0.000971"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:33.301633" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:33.301719" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:33.301352" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:33.301955" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:33.303395" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:33.659690" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:33.302916" elapsed="0.356973"/>
</kw>
<msg time="2026-04-19T01:38:33.659987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:33.302535" elapsed="0.357577"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:33.300569" elapsed="0.359854"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:33.661938" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:33.684362" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:33.684936" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:33.685342" 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-19T01:38:33.661525" elapsed="0.024037"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:33.688017" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:33.690426" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:33.689724" elapsed="0.000849"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:33.691225" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:33.690838" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:33.690751" elapsed="0.000688"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:33.691967" elapsed="0.000106"/>
</return>
<status status="PASS" start="2026-04-19T01:38:33.691668" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:33.691584" elapsed="0.000647"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:33.692350" elapsed="0.000056"/>
</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-19T01:38:33.698502" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:38:33.699063" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:33.699454" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:33.694385" elapsed="0.005283"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:33.289854" elapsed="0.410037"/>
</kw>
<msg time="2026-04-19T01:38:33.700250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:33.288854" elapsed="0.411463"/>
</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-19T01:38:33.287954" elapsed="0.412458"/>
</kw>
<msg time="2026-04-19T01:38:33.700454" 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-19T01:38:33.287135" elapsed="0.413366"/>
</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-19T01:38:33.703758" 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-19T01:38:33.704292" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:33.704595" 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-19T01:38:33.700918" elapsed="0.003841"/>
</kw>
<msg time="2026-04-19T01:38:33.704852" level="INFO">${output} = 1</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-19T01:38:33.285126" elapsed="0.419760"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:33.705355" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:33.705098" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:33.705445" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:33.705604" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:33.282779" elapsed="0.422859"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:33.705688" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:38:33.705839" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:33.280644" elapsed="0.425221"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:33.706474" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:33.706070" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:33.279576" elapsed="0.427111">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:35.710373" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:35.709518" elapsed="0.000928"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:35.712503" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:35.711858" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:35.714155" 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-19T01:38:35.714312" 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-19T01:38:35.713870" elapsed="0.000479"/>
</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-19T01:38:35.719689" elapsed="0.000246"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:35.719055" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:35.718957" elapsed="0.001143"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:35.722280" 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-19T01:38:35.722530" 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-19T01:38:35.721560" elapsed="0.001071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:35.724234" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:35.723654" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:35.726356" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:35.725398" elapsed="0.001056"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:35.728793" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:35.728872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:35.728492" 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-19T01:38:35.729148" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:35.730684" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:36.043334" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:35.730347" elapsed="0.313131"/>
</kw>
<msg time="2026-04-19T01:38:36.043560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:35.729827" elapsed="0.313817"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:35.727702" elapsed="0.316219"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:36.045397" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:36.068191" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:36.068691" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:36.069022" 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-19T01:38:36.044996" elapsed="0.024280"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:36.071540" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:36.074738" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:36.073716" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:36.075862" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:36.075358" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:36.075236" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:36.076979" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T01:38:36.076527" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:36.076414" elapsed="0.000956"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:36.077602" elapsed="0.000102"/>
</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-19T01:38:36.082930" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:38:36.083495" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:36.083854" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:36.079520" elapsed="0.004561"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:35.717049" elapsed="0.367259"/>
</kw>
<msg time="2026-04-19T01:38:36.084616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:35.716088" elapsed="0.368585"/>
</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-19T01:38:35.715320" elapsed="0.369438"/>
</kw>
<msg time="2026-04-19T01:38:36.084799" 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-19T01:38:35.714575" elapsed="0.370272"/>
</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-19T01:38:36.087916" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:38:36.088488" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:36.088788" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:36.085159" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T01:38:36.089110" level="INFO">${output} = 1</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-19T01:38:35.713077" elapsed="0.376060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:36.089587" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:36.089319" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:36.089677" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:36.089830" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:35.710908" elapsed="0.378949"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:36.089905" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:36.090141" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:35.708644" elapsed="0.381524"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:36.090723" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:36.090328" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:35.707547" elapsed="0.383358">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:38.094877" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:38.094007" elapsed="0.000946"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:38.097281" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:38.096502" elapsed="0.000838"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:38.099403" 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-19T01:38:38.099625" 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-19T01:38:38.099076" elapsed="0.000606"/>
</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-19T01:38:38.107564" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:38.106824" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:38.106767" elapsed="0.000936"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:38.109141" 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-19T01:38:38.109382" 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-19T01:38:38.108680" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:38.111000" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:38.110459" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:38.112786" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:38.112094" elapsed="0.000792"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:38.115216" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:38.115295" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:38.114911" 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-19T01:38:38.115535" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:38.116789" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:38.462802" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:38.116464" elapsed="0.346654"/>
</kw>
<msg time="2026-04-19T01:38:38.463212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:38.116104" elapsed="0.347212"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:38.114153" elapsed="0.349459"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:38.465158" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:38.487964" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:38.488503" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:38.488862" 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-19T01:38:38.464721" elapsed="0.024397"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:38.491346" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:38.494558" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:38.493553" elapsed="0.001238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:38.495719" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:38.495182" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:38.495052" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:38.496891" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T01:38:38.496387" elapsed="0.000891"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:38.496277" elapsed="0.001134"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:38.497572" 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-19T01:38:38.502405" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:38.502954" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:38.503330" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:38.498909" elapsed="0.004629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:38.103895" elapsed="0.399861"/>
</kw>
<msg time="2026-04-19T01:38:38.504076" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:38.102440" elapsed="0.401694"/>
</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-19T01:38:38.101195" elapsed="0.403022"/>
</kw>
<msg time="2026-04-19T01:38:38.504258" 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-19T01:38:38.100055" elapsed="0.404251"/>
</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-19T01:38:38.507342" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:38:38.507821" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:38.508131" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:38.504611" elapsed="0.003670"/>
</kw>
<msg time="2026-04-19T01:38:38.508374" level="INFO">${output} = 1</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-19T01:38:38.098111" elapsed="0.410289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:38.508852" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:38.508603" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:38.508940" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:38.509202" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:38.095483" elapsed="0.413745"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:38.509276" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:38:38.509424" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:38.093136" elapsed="0.416313"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:38.510073" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:38.509650" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:38.091906" elapsed="0.418364">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:40.513960" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:40.513150" elapsed="0.000917"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:40.516475" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:40.515685" elapsed="0.000856"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:40.517817" 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-19T01:38:40.518051" 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-19T01:38:40.517552" elapsed="0.000550"/>
</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-19T01:38:40.524383" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:40.523643" elapsed="0.000859"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:40.523201" elapsed="0.001389"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:40.526725" 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-19T01:38:40.527125" 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-19T01:38:40.526074" elapsed="0.001200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:40.529159" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:40.528542" elapsed="0.000734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:40.531112" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:40.530367" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:40.533645" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:40.533725" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:40.533333" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:40.533965" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:40.535455" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:40.863354" 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 Sun Apr 19 01:37:42 UTC 2026

  System load:  0.21               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:40.535072" elapsed="0.328466"/>
</kw>
<msg time="2026-04-19T01:38:40.863629" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:40.534685" elapsed="0.329040"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:40.532499" elapsed="0.331586"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:40.865835" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:40.889200" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:40.889820" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:40.890227" 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-19T01:38:40.865317" elapsed="0.025127"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:40.892861" elapsed="0.001044"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:40.896485" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:40.895298" elapsed="0.001425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:40.897645" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:40.897128" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:40.896956" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:40.898779" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T01:38:40.898325" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:40.898212" elapsed="0.001026"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:40.899475" elapsed="0.000096"/>
</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-19T01:38:40.904798" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T01:38:40.905446" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:40.905832" 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-19T01:38:40.901117" elapsed="0.004951"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:40.521139" elapsed="0.385170"/>
</kw>
<msg time="2026-04-19T01:38:40.906631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:40.520105" elapsed="0.386595"/>
</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-19T01:38:40.519145" elapsed="0.387640"/>
</kw>
<msg time="2026-04-19T01:38:40.906827" 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-19T01:38:40.518339" elapsed="0.388535"/>
</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-19T01:38:40.910136" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:40.910654" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:40.910960" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:40.907219" elapsed="0.003926"/>
</kw>
<msg time="2026-04-19T01:38:40.911242" level="INFO">${output} = 1</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-19T01:38:40.516925" elapsed="0.394343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:40.911771" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:40.911507" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:40.911864" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:38:40.912125" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:40.514551" elapsed="0.397603"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:40.912202" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:38:40.912352" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:40.512240" elapsed="0.400137"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:40.912935" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:40.912535" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:40.511087" elapsed="0.402046">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:42.916730" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:42.915937" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:42.919103" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:42.918463" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:42.920980" 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-19T01:38:42.921251" 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-19T01:38:42.920598" elapsed="0.000713"/>
</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-19T01:38:42.925670" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:42.925196" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:42.924868" elapsed="0.000943"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:42.927251" 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-19T01:38:42.927489" 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-19T01:38:42.926792" elapsed="0.000797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:42.929140" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:42.928549" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:42.930912" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:42.930213" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:42.933400" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:42.933478" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:42.933010" elapsed="0.000493"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:42.933719" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:42.934991" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:43.497919" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:42.934664" elapsed="0.563422"/>
</kw>
<msg time="2026-04-19T01:38:43.498173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:42.934300" elapsed="0.563964"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:42.932216" elapsed="0.566333"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:43.500059" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:43.522782" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:43.523328" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:43.523661" 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-19T01:38:43.499649" elapsed="0.024222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:43.526188" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:43.529414" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:43.528381" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:43.530635" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:43.529989" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:43.529869" elapsed="0.001066"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:43.531750" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:38:43.531298" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:43.531187" elapsed="0.000958"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:43.532369" elapsed="0.000087"/>
</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-19T01:38:43.541487" 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-19T01:38:43.542286" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:43.542786" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:43.534449" elapsed="0.008658"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:42.923532" elapsed="0.619885"/>
</kw>
<msg time="2026-04-19T01:38:43.543853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:42.922829" elapsed="0.621104"/>
</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-19T01:38:42.922230" elapsed="0.621835"/>
</kw>
<msg time="2026-04-19T01:38:43.544123" 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-19T01:38:42.921666" elapsed="0.622548"/>
</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-19T01:38:43.547348" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:38:43.547822" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:43.548141" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:43.544624" elapsed="0.003672"/>
</kw>
<msg time="2026-04-19T01:38:43.548388" level="INFO">${output} = 1</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-19T01:38:42.919652" elapsed="0.628761"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:43.548845" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:43.548596" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:43.548932" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:43.549121" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:42.917506" elapsed="0.631641"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:43.549195" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:43.549339" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:42.915119" elapsed="0.634244"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:43.549910" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:43.549519" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:42.913959" elapsed="0.636163">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:45.553542" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:45.552784" elapsed="0.000826"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:45.555662" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:45.554989" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:45.556935" 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-19T01:38:45.557217" 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-19T01:38:45.556702" elapsed="0.000556"/>
</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-19T01:38:45.562866" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:45.562196" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:45.562116" elapsed="0.000993"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:45.565566" 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-19T01:38:45.565933" 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-19T01:38:45.564554" elapsed="0.001568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:45.568311" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:45.567694" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:45.570131" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:45.569391" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:45.572667" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:45.572747" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:45.572378" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:45.572993" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:45.574314" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:45.891955" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:45.573958" elapsed="0.318176"/>
</kw>
<msg time="2026-04-19T01:38:45.892225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:45.573595" elapsed="0.318723"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:45.571588" elapsed="0.321019"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:45.894167" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:45.917175" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:45.917677" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:45.918008" 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-19T01:38:45.893732" elapsed="0.024532"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:45.920510" elapsed="0.000935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:45.923729" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:45.922682" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:45.924831" elapsed="0.000081"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:45.924337" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:45.924214" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:45.925924" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-19T01:38:45.925485" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:45.925382" elapsed="0.000914"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:45.926473" elapsed="0.000087"/>
</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-19T01:38:45.933646" 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-19T01:38:45.934364" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:45.934738" 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-19T01:38:45.929599" elapsed="0.005362"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:45.560138" elapsed="0.375122"/>
</kw>
<msg time="2026-04-19T01:38:45.935572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:45.559129" elapsed="0.376502"/>
</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-19T01:38:45.558292" elapsed="0.377425"/>
</kw>
<msg time="2026-04-19T01:38:45.935761" 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-19T01:38:45.557498" elapsed="0.378310"/>
</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-19T01:38:45.938845" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T01:38:45.939425" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:45.939722" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:45.936125" elapsed="0.003747"/>
</kw>
<msg time="2026-04-19T01:38:45.939963" level="INFO">${output} = 1</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-19T01:38:45.556082" elapsed="0.383906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:45.940442" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:45.940190" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:45.940530" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:45.940684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:45.554087" elapsed="0.386622"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:45.940756" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:38:45.940927" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:45.551943" elapsed="0.389008"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:45.941530" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:45.941130" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:45.550885" elapsed="0.390838">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:47.943680" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:47.943288" elapsed="0.000427"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:47.944959" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:47.944569" elapsed="0.000428"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:47.946177" 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-19T01:38:47.946322" 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-19T01:38:47.945920" elapsed="0.000442"/>
</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-19T01:38:47.952659" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:47.951954" elapsed="0.000928"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:47.951872" elapsed="0.001098"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:47.955491" 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-19T01:38:47.955875" 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-19T01:38:47.954430" elapsed="0.001635"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:47.958271" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:47.957461" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:47.960692" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:47.959920" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:47.963299" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:47.963378" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:47.962856" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:47.963619" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:47.964891" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:48.317262" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:47.964564" elapsed="0.352852"/>
</kw>
<msg time="2026-04-19T01:38:48.317514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:47.964201" elapsed="0.353412"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:47.962061" elapsed="0.355849"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:48.319462" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:48.342317" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:48.342900" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:48.343335" 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-19T01:38:48.319055" elapsed="0.024520"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:48.346148" elapsed="0.001044"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:48.349871" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:48.348601" elapsed="0.001576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:48.351197" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:48.350568" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:48.350430" elapsed="0.001105"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:48.352501" elapsed="0.000145"/>
</return>
<status status="PASS" start="2026-04-19T01:38:48.351929" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:48.351804" elapsed="0.001124"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:48.353428" elapsed="0.000102"/>
</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-19T01:38:48.358663" 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-19T01:38:48.359257" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:48.359639" 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-19T01:38:48.355084" elapsed="0.004779"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:47.949628" elapsed="0.410548"/>
</kw>
<msg time="2026-04-19T01:38:48.360624" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:47.948277" elapsed="0.412424"/>
</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-19T01:38:47.947379" elapsed="0.413421"/>
</kw>
<msg time="2026-04-19T01:38:48.360844" 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-19T01:38:47.946592" elapsed="0.414300"/>
</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-19T01:38:48.364466" 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-19T01:38:48.365204" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:48.365629" elapsed="0.000127"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:48.361313" elapsed="0.004511"/>
</kw>
<msg time="2026-04-19T01:38:48.365943" level="INFO">${output} = 1</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-19T01:38:47.945330" elapsed="0.420648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:48.366472" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:48.366205" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:48.366566" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:38:48.366823" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:47.943975" elapsed="0.422879"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:48.366906" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:38:48.367080" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:47.942840" elapsed="0.424267"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:48.367683" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:48.367271" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:47.942279" elapsed="0.425590">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:50.371598" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:50.370761" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:50.373845" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:50.373213" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:50.376211" 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-19T01:38:50.376361" 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-19T01:38:50.375899" elapsed="0.000498"/>
</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-19T01:38:50.386234" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:50.384995" elapsed="0.001432"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:50.384861" elapsed="0.001707"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:50.389138" 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-19T01:38:50.389493" 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-19T01:38:50.388140" elapsed="0.001492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:50.391685" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:50.391117" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:50.393561" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:50.392832" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:50.396121" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:50.396206" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:50.395805" 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-19T01:38:50.396475" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:50.397826" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:50.709457" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:50.397494" elapsed="0.312093"/>
</kw>
<msg time="2026-04-19T01:38:50.709664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:50.397116" elapsed="0.312634"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:50.394893" elapsed="0.315154"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:50.711528" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:50.733816" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:50.734386" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:50.734729" 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-19T01:38:50.711142" elapsed="0.023802"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:50.737328" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:50.740714" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:50.739637" elapsed="0.001337"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:50.741892" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:50.741364" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:50.741241" elapsed="0.000989"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:50.743059" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T01:38:50.742561" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:50.742445" elapsed="0.000984"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:50.743622" elapsed="0.000091"/>
</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-19T01:38:50.749963" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:50.750542" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:50.750911" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:50.746429" elapsed="0.004714"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:50.381498" elapsed="0.370051"/>
</kw>
<msg time="2026-04-19T01:38:50.751864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:50.379509" elapsed="0.372415"/>
</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-19T01:38:50.377818" elapsed="0.374192"/>
</kw>
<msg time="2026-04-19T01:38:50.752121" 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-19T01:38:50.376627" elapsed="0.375546"/>
</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-19T01:38:50.755449" 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-19T01:38:50.755955" elapsed="0.000288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:50.756400" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:50.752726" elapsed="0.003827"/>
</kw>
<msg time="2026-04-19T01:38:50.756648" level="INFO">${output} = 1</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-19T01:38:50.374495" elapsed="0.382179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:50.757196" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:50.756906" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:50.757288" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:50.757443" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:50.372214" elapsed="0.385254"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:50.757517" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:38:50.757693" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:50.369843" elapsed="0.387874"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:50.758321" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:50.757895" elapsed="0.000542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:50.368691" elapsed="0.389861">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:52.762225" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:52.761430" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:52.764431" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:52.763788" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:52.766291" 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-19T01:38:52.766517" 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-19T01:38:52.765924" elapsed="0.000652"/>
</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-19T01:38:52.771575" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:52.770832" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:52.770774" elapsed="0.000943"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:52.773147" 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-19T01:38:52.773385" 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-19T01:38:52.772696" elapsed="0.000788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:52.774985" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:52.774447" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:52.776823" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:52.776133" elapsed="0.000792"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:52.779342" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:52.779419" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:52.778942" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:52.779652" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:52.780974" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:53.097981" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:52.780649" elapsed="0.317491"/>
</kw>
<msg time="2026-04-19T01:38:53.098225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:52.780289" elapsed="0.318044"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:52.778191" elapsed="0.320421"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:53.100106" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:53.123004" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:53.123545" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:53.123876" 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-19T01:38:53.099696" elapsed="0.024434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:53.126413" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:53.129862" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:53.128844" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:53.131013" elapsed="0.000105"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:53.130505" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:53.130382" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:53.132158" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:38:53.131670" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:53.131563" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:53.132690" elapsed="0.000087"/>
</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-19T01:38:53.141014" 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-19T01:38:53.141614" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:53.141979" 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-19T01:38:53.135799" elapsed="0.006440"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:52.769452" elapsed="0.373013"/>
</kw>
<msg time="2026-04-19T01:38:53.142774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:52.768741" elapsed="0.374091"/>
</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-19T01:38:52.768199" elapsed="0.374717"/>
</kw>
<msg time="2026-04-19T01:38:53.142956" 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-19T01:38:52.766931" elapsed="0.376071"/>
</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-19T01:38:53.146156" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:38:53.146660" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:53.146954" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:53.143312" elapsed="0.003813"/>
</kw>
<msg time="2026-04-19T01:38:53.147278" level="INFO">${output} = 1</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-19T01:38:52.764971" elapsed="0.382333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:53.147737" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:53.147486" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:53.147825" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:38:53.147979" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:52.762780" elapsed="0.385225"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:53.148069" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:38:53.148219" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:52.760583" elapsed="0.387661"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:53.148797" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:53.148402" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:52.759507" elapsed="0.389473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:55.152470" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:55.151675" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:55.154475" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:55.154054" elapsed="0.000461"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:55.155694" 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-19T01:38:55.155843" 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-19T01:38:55.155467" elapsed="0.000416"/>
</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-19T01:38:55.161670" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:55.161001" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:55.160609" elapsed="0.001269"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:55.164080" 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-19T01:38:55.164441" 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-19T01:38:55.163374" elapsed="0.001212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:55.166653" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:55.166091" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:55.168573" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:55.167747" elapsed="0.000924"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:55.170987" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:55.171083" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:55.170699" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:55.171324" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:55.172759" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:55.513849" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:55.172431" elapsed="0.341656"/>
</kw>
<msg time="2026-04-19T01:38:55.514170" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:55.171895" elapsed="0.342366"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:55.169898" elapsed="0.344641"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:55.516016" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:55.538697" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:55.539253" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:55.539590" 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-19T01:38:55.515620" elapsed="0.024187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:55.542107" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:55.545324" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:55.544281" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:55.546433" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:55.545899" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:55.545777" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:55.547519" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:38:55.547070" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:55.546933" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:55.548100" elapsed="0.000093"/>
</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-19T01:38:55.554013" 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-19T01:38:55.554580" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:55.554939" 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-19T01:38:55.550682" elapsed="0.004482"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:55.158742" elapsed="0.396642"/>
</kw>
<msg time="2026-04-19T01:38:55.555690" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:55.157741" elapsed="0.398007"/>
</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-19T01:38:55.156893" elapsed="0.398936"/>
</kw>
<msg time="2026-04-19T01:38:55.555869" 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-19T01:38:55.156139" elapsed="0.399776"/>
</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-19T01:38:55.558997" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:38:55.559490" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:55.559785" 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-19T01:38:55.556235" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T01:38:55.560022" level="INFO">${output} = 1</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-19T01:38:55.154834" elapsed="0.405241"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:55.560508" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:55.560256" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:55.560597" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:55.560748" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:55.152992" elapsed="0.407782"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:55.560821" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:38:55.560966" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:55.150842" elapsed="0.410148"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:55.561697" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:55.561297" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:55.149758" elapsed="0.412122">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:57.565369" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:57.564602" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:57.567507" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:57.566861" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:57.569404" 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-19T01:38:57.569633" 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-19T01:38:57.569053" elapsed="0.000640"/>
</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-19T01:38:57.575516" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:57.574853" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:57.574466" elapsed="0.001241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:57.577849" 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-19T01:38:57.578233" 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-19T01:38:57.577087" elapsed="0.001284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:57.580229" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:57.579667" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:57.582087" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:57.581325" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:57.584472" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:57.584548" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:57.584189" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:57.584782" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:57.586229" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:38:57.904465" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:57.585742" elapsed="0.318809"/>
</kw>
<msg time="2026-04-19T01:38:57.904615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:57.585365" elapsed="0.319319"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:57.583415" elapsed="0.321491"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:38:57.906254" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:38:57.928591" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:38:57.929153" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:38:57.929535" 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-19T01:38:57.905906" elapsed="0.023855"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:57.932127" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:57.935378" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:57.934383" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:57.936444" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:38:57.935939" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:57.935823" elapsed="0.000907"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:38:57.937570" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:38:57.937077" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:57.936937" elapsed="0.000978"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:38:57.938222" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:57.944591" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:38:57.945166" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:57.945521" 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-19T01:38:57.939495" elapsed="0.006232"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:57.572571" elapsed="0.373375"/>
</kw>
<msg time="2026-04-19T01:38:57.946319" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:57.571625" elapsed="0.374752"/>
</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-19T01:38:57.570861" elapsed="0.375596"/>
</kw>
<msg time="2026-04-19T01:38:57.946498" 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-19T01:38:57.570132" elapsed="0.376410"/>
</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-19T01:38:57.949577" 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-19T01:38:57.950203" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:38:57.950502" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:38:57.946895" elapsed="0.003755"/>
</kw>
<msg time="2026-04-19T01:38:57.950739" level="INFO">${output} = 1</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-19T01:38:57.568077" elapsed="0.382686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:57.951207" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:57.950944" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:38:57.951293" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:38:57.951442" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:57.565917" elapsed="0.385549"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:38:57.951511" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:38:57.951650" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:57.563764" elapsed="0.387909"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:38:57.952340" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:38:57.951842" elapsed="0.000580">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:57.562707" elapsed="0.389835">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:38:59.956238" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:38:59.955417" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:38:59.958683" level="INFO">${member_ip} = 10.30.171.206</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-19T01:38:59.957955" elapsed="0.000798"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:59.960128" 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-19T01:38:59.960280" 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-19T01:38:59.959882" elapsed="0.000437"/>
</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-19T01:38:59.966564" elapsed="0.000067"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:38:59.965681" elapsed="0.001029"/>
</branch>
<status status="PASS" start="2026-04-19T01:38:59.965594" elapsed="0.001221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:59.968691" 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-19T01:38:59.968935" 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-19T01:38:59.968011" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:38:59.970586" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:38:59.970018" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:38:59.972424" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:38:59.971665" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:38:59.974801" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:38:59.974879" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:38:59.974519" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:59.975127" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:38:59.976540" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:00.284836" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:38:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:38:59.976200" elapsed="0.308797"/>
</kw>
<msg time="2026-04-19T01:39:00.285109" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:59.975699" elapsed="0.309505"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:38:59.973728" elapsed="0.311772"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:00.287066" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:00.310286" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:00.310804" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:00.311207" 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-19T01:39:00.286643" elapsed="0.024781"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:00.313705" elapsed="0.000967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:00.317057" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:00.315993" elapsed="0.001307"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:00.318359" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:00.317658" elapsed="0.000883"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:00.317532" elapsed="0.001137"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:00.319479" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:39:00.318994" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:00.318889" elapsed="0.000941"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:00.320001" elapsed="0.000242"/>
</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-19T01:39:00.326145" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:39:00.326702" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:00.327079" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:00.322700" elapsed="0.004586"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:38:59.963222" elapsed="0.364285"/>
</kw>
<msg time="2026-04-19T01:39:00.327809" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:38:59.962141" elapsed="0.365726"/>
</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-19T01:38:59.961335" elapsed="0.366615"/>
</kw>
<msg time="2026-04-19T01:39:00.327991" 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-19T01:38:59.960547" elapsed="0.367552"/>
</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-19T01:39:00.331113" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:39:00.331589" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:00.331884" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:00.328393" elapsed="0.003736"/>
</kw>
<msg time="2026-04-19T01:39:00.332225" level="INFO">${output} = 1</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-19T01:38:59.959283" elapsed="0.372968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:00.332678" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:00.332430" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:00.332764" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:00.332916" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:38:59.956953" elapsed="0.375988"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:00.332988" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:39:00.333150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:38:59.954521" elapsed="0.378654"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:00.333726" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:00.333332" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:38:59.953384" elapsed="0.380528">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:02.337473" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:02.336707" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:02.339676" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:02.339069" elapsed="0.000864"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:02.341273" 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-19T01:39:02.341594" 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-19T01:39:02.341047" elapsed="0.000588"/>
</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-19T01:39:02.347007" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:02.346381" elapsed="0.000832"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:02.346303" elapsed="0.000995"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:02.349616" 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-19T01:39:02.349956" 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-19T01:39:02.348669" elapsed="0.001448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:02.352438" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:02.351607" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:02.354331" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:02.353554" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:02.356911" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:02.356991" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:02.356618" 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-19T01:39:02.357360" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:02.358628" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:02.678571" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:02.358301" elapsed="0.320422"/>
</kw>
<msg time="2026-04-19T01:39:02.678808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:02.357923" elapsed="0.320974"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:02.355839" elapsed="0.323375"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:02.680754" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:02.703253" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:02.703936" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:02.704351" 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-19T01:39:02.680352" elapsed="0.024231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:02.707187" elapsed="0.001099"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:02.710889" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:02.709661" elapsed="0.001512"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:02.712181" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:02.711611" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:02.711478" elapsed="0.001037"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:02.713015" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T01:39:02.712728" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:02.712660" elapsed="0.000629"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:02.713403" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:02.720241" elapsed="0.000566"/>
</kw>
<kw name="Open 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-19T01:39:02.721310" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:02.721742" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:02.715507" elapsed="0.006448"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:02.344415" elapsed="0.377864"/>
</kw>
<msg time="2026-04-19T01:39:02.722588" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:02.343426" elapsed="0.379223"/>
</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-19T01:39:02.342645" elapsed="0.380089"/>
</kw>
<msg time="2026-04-19T01:39:02.722776" 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-19T01:39:02.341865" elapsed="0.380958"/>
</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-19T01:39:02.725872" 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-19T01:39:02.726418" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:02.726715" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:02.723133" elapsed="0.003732"/>
</kw>
<msg time="2026-04-19T01:39:02.726956" level="INFO">${output} = 1</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-19T01:39:02.340444" elapsed="0.386537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:02.727447" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:02.727176" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:02.727537" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:02.727691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:02.338103" elapsed="0.389613"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:02.727763" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:02.727909" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:02.335855" elapsed="0.392078"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:02.728510" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:02.728107" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:02.334740" elapsed="0.393955">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:04.732147" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:04.731394" elapsed="0.000823"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:04.734446" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:04.733806" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:04.735846" 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-19T01:39:04.736000" 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-19T01:39:04.735614" elapsed="0.000445"/>
</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-19T01:39:04.742117" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:04.741311" elapsed="0.001046"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:04.741225" elapsed="0.001225"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:04.745194" 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-19T01:39:04.745649" 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-19T01:39:04.743984" elapsed="0.001823"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:04.747714" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:04.747065" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:04.749703" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:04.748861" elapsed="0.000945"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:04.752311" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:04.752394" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:04.751970" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:04.752668" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:04.754126" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:05.074637" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:04.753755" elapsed="0.321028"/>
</kw>
<msg time="2026-04-19T01:39:05.074869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:04.753329" elapsed="0.321628"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:04.751130" elapsed="0.324138"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:05.076712" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:05.099714" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:05.100302" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:05.100664" 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-19T01:39:05.076328" elapsed="0.024563"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:05.103454" elapsed="0.001010"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:05.106970" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:05.105917" elapsed="0.001458"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:05.108655" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:05.107900" elapsed="0.000992"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:05.107718" elapsed="0.001618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:05.109856" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T01:39:05.109638" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:05.109587" elapsed="0.000457"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:05.110130" 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-19T01:39:05.114988" 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-19T01:39:05.115579" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:05.115950" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:05.111484" elapsed="0.004699"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:04.739129" elapsed="0.377278"/>
</kw>
<msg time="2026-04-19T01:39:05.116808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:04.737976" elapsed="0.378897"/>
</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-19T01:39:04.737088" elapsed="0.379871"/>
</kw>
<msg time="2026-04-19T01:39:05.117003" 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-19T01:39:04.736301" elapsed="0.380808"/>
</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-19T01:39:05.120156" 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-19T01:39:05.120667" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:05.120974" elapsed="0.000248"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:05.117413" elapsed="0.003865"/>
</kw>
<msg time="2026-04-19T01:39:05.121372" level="INFO">${output} = 1</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-19T01:39:04.734980" elapsed="0.386419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:05.121862" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:05.121599" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:05.121953" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:39:05.122127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:04.732666" elapsed="0.389489"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:05.122203" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:39:05.122354" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:04.730560" elapsed="0.391821"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:05.122969" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:05.122563" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:04.729519" elapsed="0.393655">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:07.126743" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:07.125933" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:07.129020" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:07.128473" elapsed="0.000603"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:07.130204" 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-19T01:39:07.130348" 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-19T01:39:07.129955" elapsed="0.000431"/>
</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-19T01:39:07.136059" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:07.135006" elapsed="0.001167"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:07.134930" elapsed="0.001326"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:07.138236" 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-19T01:39:07.138580" 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-19T01:39:07.137611" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:07.140837" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:07.140182" elapsed="0.000764"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:07.142691" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:07.141985" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:07.145144" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:07.145224" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:07.144838" 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-19T01:39:07.145463" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:07.146733" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:07.436549" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:07.146400" elapsed="0.290302"/>
</kw>
<msg time="2026-04-19T01:39:07.436787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:07.146020" elapsed="0.290857"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:07.144053" elapsed="0.293136"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:07.438689" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:07.451521" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:07.451837" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:07.452077" 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-19T01:39:07.438285" elapsed="0.013926"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:07.453576" elapsed="0.000589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:07.455606" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:07.454941" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:07.456320" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:07.455973" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:07.455893" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:07.456992" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:39:07.456711" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:07.456642" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:07.457368" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:07.464005" elapsed="0.000693"/>
</kw>
<kw name="Open 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-19T01:39:07.464989" elapsed="0.000249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:07.465509" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:07.459221" elapsed="0.006578"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:07.133093" elapsed="0.333035"/>
</kw>
<msg time="2026-04-19T01:39:07.466545" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:07.132131" elapsed="0.334493"/>
</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-19T01:39:07.131346" elapsed="0.335391"/>
</kw>
<msg time="2026-04-19T01:39:07.466795" 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-19T01:39:07.130610" elapsed="0.336248"/>
</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-19T01:39:07.470139" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:39:07.470625" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:07.470926" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:07.467400" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T01:39:07.471233" level="INFO">${output} = 1</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-19T01:39:07.129379" elapsed="0.341882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:07.471701" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:07.471442" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:07.471791" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:39:07.471946" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:07.127321" elapsed="0.344651"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:07.472020" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T01:39:07.472187" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:07.125111" elapsed="0.347102"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:07.472767" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:07.472372" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:07.123996" elapsed="0.348953">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:09.476949" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:09.476101" elapsed="0.000957"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:09.479478" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:09.478707" elapsed="0.000837"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:09.481605" 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-19T01:39:09.481936" 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-19T01:39:09.481212" elapsed="0.000803"/>
</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-19T01:39:09.488427" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:09.487704" elapsed="0.000841"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:09.487269" elapsed="0.001386"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:09.490815" 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-19T01:39:09.491092" 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-19T01:39:09.490206" elapsed="0.001015"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:09.492833" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:09.492250" elapsed="0.000697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:09.494830" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:09.493997" elapsed="0.000937"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:09.497369" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:09.497453" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:09.497055" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:09.497698" elapsed="0.000623"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:09.499327" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:09.812011" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:09.498956" elapsed="0.313218"/>
</kw>
<msg time="2026-04-19T01:39:09.812259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:09.498556" elapsed="0.313791"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:09.496209" elapsed="0.316439"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:09.814137" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:09.837209" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:09.837699" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:09.838025" 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-19T01:39:09.813731" elapsed="0.024567"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:09.840509" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:09.843694" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:09.842678" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:09.844970" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:09.844422" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:09.844290" elapsed="0.001003"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:09.845847" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T01:39:09.845608" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:09.845504" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:09.846102" 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-19T01:39:09.850859" 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-19T01:39:09.851437" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:09.851795" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:09.847426" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:09.485212" elapsed="0.367124"/>
</kw>
<msg time="2026-04-19T01:39:09.852635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:09.484150" elapsed="0.368542"/>
</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-19T01:39:09.483312" elapsed="0.369498"/>
</kw>
<msg time="2026-04-19T01:39:09.852852" 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-19T01:39:09.482431" elapsed="0.370467"/>
</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-19T01:39:09.855862" 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-19T01:39:09.856412" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:09.856709" 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-19T01:39:09.853208" elapsed="0.003662"/>
</kw>
<msg time="2026-04-19T01:39:09.857034" level="INFO">${output} = 1</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-19T01:39:09.480127" elapsed="0.376949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:09.857505" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:09.857255" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:09.857593" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:09.857747" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:09.477585" elapsed="0.380187"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:09.857820" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:09.857966" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:09.475116" elapsed="0.382874"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:09.858564" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:09.858168" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:09.473854" elapsed="0.384896">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:11.862276" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:11.861485" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:11.864419" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:11.863773" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:11.866316" 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-19T01:39:11.866546" 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-19T01:39:11.865907" elapsed="0.000699"/>
</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-19T01:39:11.872327" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:11.871651" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:11.871287" elapsed="0.001234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:11.874568" 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-19T01:39:11.874864" 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-19T01:39:11.873906" elapsed="0.001061"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:11.876529" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:11.875962" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:11.878367" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:11.877631" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:11.880920" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:11.880998" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:11.880638" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:11.881251" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:11.882528" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:12.192652" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:11.882183" elapsed="0.310627"/>
</kw>
<msg time="2026-04-19T01:39:12.192878" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:11.881803" elapsed="0.311149"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:11.879693" elapsed="0.313518"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:12.194579" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:12.217251" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:12.217751" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:12.218144" 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-19T01:39:12.194236" elapsed="0.024129"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:12.220654" elapsed="0.000587"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:12.222610" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:12.222008" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:12.223323" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:12.222971" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:12.222897" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:12.223983" elapsed="0.000156"/>
</return>
<status status="PASS" start="2026-04-19T01:39:12.223705" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:12.223639" elapsed="0.000664"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:12.224413" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:12.231883" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:12.232573" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:12.232932" 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-19T01:39:12.226246" elapsed="0.006911"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:11.869417" elapsed="0.363960"/>
</kw>
<msg time="2026-04-19T01:39:12.233715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:11.868350" elapsed="0.365421"/>
</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-19T01:39:11.867587" elapsed="0.366265"/>
</kw>
<msg time="2026-04-19T01:39:12.233892" 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-19T01:39:11.866852" elapsed="0.367085"/>
</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-19T01:39:12.236944" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T01:39:12.237512" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:12.237818" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:12.234246" elapsed="0.003722"/>
</kw>
<msg time="2026-04-19T01:39:12.238080" level="INFO">${output} = 1</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-19T01:39:11.864958" elapsed="0.373148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:12.238535" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:12.238288" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:12.238623" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:12.238842" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:11.862799" elapsed="0.376069"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:12.238915" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:12.239076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:11.860639" elapsed="0.378462"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:12.239690" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:12.239304" elapsed="0.000456">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:11.859580" elapsed="0.380285">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:14.243424" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:14.242658" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:14.245564" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:14.244906" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:14.247295" 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-19T01:39:14.247456" 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-19T01:39:14.247016" elapsed="0.000480"/>
</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-19T01:39:14.252749" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:14.252203" elapsed="0.000651"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:14.252142" elapsed="0.000773"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:14.254842" 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-19T01:39:14.255145" 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-19T01:39:14.253936" elapsed="0.001312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:14.256952" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:14.256300" elapsed="0.000884"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:14.259067" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:14.258193" elapsed="0.000975"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:14.261947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:14.262063" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:14.261597" elapsed="0.000493"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:14.262316" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:14.263674" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:14.581407" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:14.263323" elapsed="0.318247"/>
</kw>
<msg time="2026-04-19T01:39:14.581658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:14.262933" elapsed="0.318821"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:14.260462" elapsed="0.321601"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:14.583573" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:14.607390" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:14.607922" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:14.608295" 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-19T01:39:14.583174" elapsed="0.025329"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:14.610708" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:14.613852" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:14.612838" elapsed="0.001269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:14.614936" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:14.614446" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:14.614327" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:14.616078" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:39:14.615565" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:14.615461" elapsed="0.000968"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:14.616601" elapsed="0.000082"/>
</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-19T01:39:14.621685" 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-19T01:39:14.622245" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:14.622601" 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-19T01:39:14.618097" elapsed="0.004709"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:14.250623" elapsed="0.372421"/>
</kw>
<msg time="2026-04-19T01:39:14.623462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:14.249398" elapsed="0.374125"/>
</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-19T01:39:14.248557" elapsed="0.375050"/>
</kw>
<msg time="2026-04-19T01:39:14.623648" 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-19T01:39:14.247736" elapsed="0.375958"/>
</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-19T01:39:14.626900" 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-19T01:39:14.627394" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:14.627685" 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-19T01:39:14.624011" elapsed="0.003821"/>
</kw>
<msg time="2026-04-19T01:39:14.627933" level="INFO">${output} = 1</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-19T01:39:14.246154" elapsed="0.381805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:14.628398" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:14.628151" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:14.628484" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:14.628637" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:14.243949" elapsed="0.384713"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:14.628708" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:39:14.628850" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:14.241784" elapsed="0.387090"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:14.629521" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:14.629124" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:14.240707" elapsed="0.388999">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:16.633328" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:16.632574" elapsed="0.000823"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:16.635691" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:16.634984" elapsed="0.000782"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:16.636996" 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-19T01:39:16.637177" 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-19T01:39:16.636746" elapsed="0.000470"/>
</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-19T01:39:16.643087" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:16.642362" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:16.642275" elapsed="0.001022"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:16.645298" 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-19T01:39:16.645560" 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-19T01:39:16.644547" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:16.647301" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:16.646706" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:16.649269" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:16.648456" elapsed="0.000916"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:16.651754" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:16.651834" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:16.651431" 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-19T01:39:16.652098" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:16.653543" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:17.004773" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:16.653198" elapsed="0.351738"/>
</kw>
<msg time="2026-04-19T01:39:17.005022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:16.652678" elapsed="0.352463"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:16.650616" elapsed="0.354810"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:17.006981" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:17.029719" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:17.030262" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:17.030600" 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-19T01:39:17.006554" elapsed="0.024257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:17.033110" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:17.035428" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:17.034769" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:17.036301" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:17.035816" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:17.035732" elapsed="0.000767"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:17.037069" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T01:39:17.036715" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:17.036643" elapsed="0.000665"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:17.037426" elapsed="0.000056"/>
</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-19T01:39:17.043666" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:17.044318" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:17.044687" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:17.039410" elapsed="0.005505"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:16.640222" elapsed="0.405115"/>
</kw>
<msg time="2026-04-19T01:39:17.045642" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:16.639137" elapsed="0.406563"/>
</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-19T01:39:16.638281" elapsed="0.407502"/>
</kw>
<msg time="2026-04-19T01:39:17.045824" 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-19T01:39:16.637454" elapsed="0.408416"/>
</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-19T01:39:17.049168" 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-19T01:39:17.049694" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:17.050005" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:17.046179" elapsed="0.004000"/>
</kw>
<msg time="2026-04-19T01:39:17.050276" level="INFO">${output} = 1</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-19T01:39:16.636134" elapsed="0.414168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:17.050753" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:17.050501" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:17.050843" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:39:17.051001" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:16.633997" elapsed="0.417032"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:17.051093" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:17.051240" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:16.631722" elapsed="0.419542"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:17.051816" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:17.051420" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:16.630575" elapsed="0.421428">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:19.055545" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:19.054771" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:19.057673" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:19.057058" elapsed="0.000676"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:19.059366" 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-19T01:39:19.059628" 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-19T01:39:19.059144" elapsed="0.000523"/>
</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-19T01:39:19.065121" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:19.064364" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:19.064289" elapsed="0.001032"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:19.067657" 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-19T01:39:19.067903" 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-19T01:39:19.066752" elapsed="0.001252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:19.069534" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:19.068979" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:19.071329" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:19.070618" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:19.073727" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:19.073806" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:19.073441" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:19.074060" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:19.075361" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:19.437371" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:19.075018" elapsed="0.362504"/>
</kw>
<msg time="2026-04-19T01:39:19.437606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:19.074646" elapsed="0.363049"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:19.072664" elapsed="0.365316"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:19.439521" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:19.462477" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:19.462973" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:19.463352" 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-19T01:39:19.439103" elapsed="0.024506"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:19.465822" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:19.469005" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:19.468019" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:19.470241" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:19.469671" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:19.469548" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:19.471335" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:39:19.470851" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:19.470746" elapsed="0.000986"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:19.471908" elapsed="0.000095"/>
</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-19T01:39:19.476800" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T01:39:19.477512" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:19.477872" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:19.473479" elapsed="0.004631"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:19.062396" elapsed="0.415936"/>
</kw>
<msg time="2026-04-19T01:39:19.478635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:19.061432" elapsed="0.417260"/>
</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-19T01:39:19.060657" elapsed="0.418120"/>
</kw>
<msg time="2026-04-19T01:39:19.478819" 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-19T01:39:19.059892" elapsed="0.418977"/>
</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-19T01:39:19.481962" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:39:19.482461" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:19.482824" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:19.479187" elapsed="0.003788"/>
</kw>
<msg time="2026-04-19T01:39:19.483087" level="INFO">${output} = 1</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-19T01:39:19.058252" elapsed="0.424861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:19.483557" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:19.483296" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:19.483648" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:19.483801" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:19.056105" elapsed="0.427721"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:19.483872" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:19.484018" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:19.053906" elapsed="0.430164"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:19.484625" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:19.484230" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:19.052838" elapsed="0.431971">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:21.488411" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:21.487569" elapsed="0.000912"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:21.490534" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:21.489891" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:21.492403" 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-19T01:39:21.492513" 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-19T01:39:21.492120" elapsed="0.000420"/>
</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-19T01:39:21.496697" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:21.495941" elapsed="0.000910"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:21.495848" elapsed="0.001064"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:21.498371" 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-19T01:39:21.498618" 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-19T01:39:21.497911" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:21.500298" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:21.499709" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:21.502177" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:21.501461" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:21.504596" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:21.504674" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:21.504314" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:21.504911" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:21.506358" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:21.802936" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:21.506016" elapsed="0.297073"/>
</kw>
<msg time="2026-04-19T01:39:21.803173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:21.505653" elapsed="0.297603"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:21.503484" elapsed="0.300044"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:21.805065" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:21.827689" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:21.828321" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:21.828739" 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-19T01:39:21.804658" elapsed="0.024296"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:21.831288" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:21.834797" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:21.833813" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:21.835912" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:21.835410" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:21.835286" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:21.837106" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T01:39:21.836602" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:21.836446" elapsed="0.000823"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:21.837349" 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-19T01:39:21.842054" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:39:21.842605" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:21.842962" elapsed="0.000170"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:21.838651" elapsed="0.004589"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:21.494515" elapsed="0.348947"/>
</kw>
<msg time="2026-04-19T01:39:21.843825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:21.493804" elapsed="0.350082"/>
</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-19T01:39:21.493258" elapsed="0.350713"/>
</kw>
<msg time="2026-04-19T01:39:21.844012" 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-19T01:39:21.492709" elapsed="0.351366"/>
</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-19T01:39:21.847173" 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-19T01:39:21.847658" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:21.847956" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:21.844373" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T01:39:21.848215" level="INFO">${output} = 1</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-19T01:39:21.491116" elapsed="0.357124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:21.848690" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:21.848418" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:21.848781" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:39:21.848937" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:21.488939" elapsed="0.360023"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:21.849009" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T01:39:21.849172" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:21.486610" elapsed="0.362587"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:21.849756" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:21.849355" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:21.485575" elapsed="0.364366">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:23.853490" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:23.852721" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:23.855588" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:23.854956" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:23.857465" 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-19T01:39:23.857694" 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-19T01:39:23.857135" elapsed="0.000619"/>
</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-19T01:39:23.863676" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:23.863205" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:23.862893" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:23.865268" 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-19T01:39:23.865517" 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-19T01:39:23.864810" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:23.867186" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:23.866628" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:23.869156" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:23.868403" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:23.871618" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:23.871696" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:23.871333" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:23.871930" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:23.873539" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:24.190433" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:23.873008" elapsed="0.317578"/>
</kw>
<msg time="2026-04-19T01:39:24.190671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:23.872532" elapsed="0.318243"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:23.870554" elapsed="0.320525"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:24.192619" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:24.215467" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:24.215961" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:24.216347" 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-19T01:39:24.192193" elapsed="0.024412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:24.218863" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:24.222161" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:24.221089" elapsed="0.001310"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:24.223309" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:24.222760" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:24.222635" elapsed="0.000968"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:24.224421" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:39:24.223938" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:24.223827" elapsed="0.001003"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:24.225006" elapsed="0.000127"/>
</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-19T01:39:24.230356" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:39:24.230927" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:24.231304" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:24.226666" elapsed="0.004859"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:23.861584" elapsed="0.370169"/>
</kw>
<msg time="2026-04-19T01:39:24.232094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:23.860632" elapsed="0.371521"/>
</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-19T01:39:23.859356" elapsed="0.372881"/>
</kw>
<msg time="2026-04-19T01:39:24.232279" 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-19T01:39:23.858150" elapsed="0.374185"/>
</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-19T01:39:24.235649" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:39:24.236141" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:24.236439" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:24.232767" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T01:39:24.236694" level="INFO">${output} = 1</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-19T01:39:23.856188" elapsed="0.380532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:24.237175" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:24.236898" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:24.237265" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:24.237417" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:23.854010" elapsed="0.383433"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:24.237490" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:24.237737" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:23.851826" elapsed="0.385936"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:24.238420" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:24.237919" elapsed="0.000582">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:23.850759" elapsed="0.387853">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:26.242130" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:26.241337" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:26.244290" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:26.243647" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:26.246161" 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-19T01:39:26.246391" 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-19T01:39:26.245785" elapsed="0.000667"/>
</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-19T01:39:26.254976" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:26.254270" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:26.253808" elapsed="0.001413"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:26.257590" 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-19T01:39:26.257984" 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-19T01:39:26.256878" elapsed="0.001292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:26.260684" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:26.260119" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:26.262515" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:26.261796" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:26.265112" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:26.265202" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:26.264782" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:26.265452" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:26.266843" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:26.569863" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:26.266508" elapsed="0.303514"/>
</kw>
<msg time="2026-04-19T01:39:26.570146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:26.266131" elapsed="0.304112"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:26.263968" elapsed="0.306549"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:26.572125" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:26.594653" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:26.595219" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:26.595553" 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-19T01:39:26.571658" elapsed="0.024125"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:26.598003" elapsed="0.000870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:26.600793" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:26.600194" 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-19T01:39:26.601535" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:26.601214" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:26.601135" elapsed="0.000581"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:26.602217" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:39:26.601918" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:26.601850" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:26.602547" elapsed="0.000051"/>
</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-19T01:39:26.610546" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:39:26.611113" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:26.611647" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:26.604390" elapsed="0.007479"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:26.251647" elapsed="0.360473"/>
</kw>
<msg time="2026-04-19T01:39:26.612423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:26.249989" elapsed="0.362492"/>
</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-19T01:39:26.248718" elapsed="0.363841"/>
</kw>
<msg time="2026-04-19T01:39:26.612599" 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-19T01:39:26.246807" elapsed="0.365837"/>
</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-19T01:39:26.615772" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:26.616276" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:26.616569" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:26.612942" elapsed="0.003773"/>
</kw>
<msg time="2026-04-19T01:39:26.616876" level="INFO">${output} = 1</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-19T01:39:26.244834" elapsed="0.372067"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:26.617393" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:26.617146" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:26.617481" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:26.617630" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:26.242659" elapsed="0.374995"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:26.617699" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:39:26.617839" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:26.240489" elapsed="0.377375"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:26.618426" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:26.618016" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:26.239444" elapsed="0.379163">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:28.622116" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:28.621322" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:28.624216" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:28.623587" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:28.626067" 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-19T01:39:28.626297" 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-19T01:39:28.625701" elapsed="0.000654"/>
</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-19T01:39:28.633304" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:28.632646" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:28.632568" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:28.635280" 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-19T01:39:28.635531" 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-19T01:39:28.634585" elapsed="0.001047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:28.637432" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:28.636729" elapsed="0.000819"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:28.639542" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:28.638755" elapsed="0.000899"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:28.642304" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:28.642382" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:28.641972" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:28.642617" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:28.643881" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:28.949959" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:28.643556" elapsed="0.306640"/>
</kw>
<msg time="2026-04-19T01:39:28.950281" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:28.643188" elapsed="0.307200"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:28.641132" elapsed="0.309529"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:28.952191" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:28.974668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:28.975224" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:28.975569" 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-19T01:39:28.951777" elapsed="0.024007"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:28.978078" elapsed="0.000998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:28.981612" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:28.980515" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:28.982757" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:28.982234" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:28.982107" elapsed="0.000976"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:28.983850" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:39:28.983408" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:28.983301" elapsed="0.000973"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:28.984452" 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-19T01:39:28.990904" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T01:39:28.991468" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:28.991824" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:28.987503" elapsed="0.004555"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:28.630499" elapsed="0.361785"/>
</kw>
<msg time="2026-04-19T01:39:28.992586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:28.629141" elapsed="0.363503"/>
</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-19T01:39:28.627880" elapsed="0.364844"/>
</kw>
<msg time="2026-04-19T01:39:28.992765" 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-19T01:39:28.626708" elapsed="0.366103"/>
</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-19T01:39:28.995981" elapsed="0.000379"/>
</kw>
<kw name="Open 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-19T01:39:28.996526" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:28.996822" 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-19T01:39:28.993206" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T01:39:28.997114" level="INFO">${output} = 1</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-19T01:39:28.624760" elapsed="0.372381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:28.997573" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:28.997326" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:28.997660" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:28.997811" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:28.622645" elapsed="0.375191"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:28.997882" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:39:28.998041" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:28.620475" elapsed="0.377592"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:28.998689" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:28.998271" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:28.619431" elapsed="0.379446">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:31.002324" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:31.001550" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:31.004480" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:31.003829" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:31.006585" 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-19T01:39:31.006835" 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-19T01:39:31.006230" elapsed="0.000664"/>
</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-19T01:39:31.012212" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:31.011699" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:31.011640" elapsed="0.000746"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:31.014112" 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-19T01:39:31.014371" 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-19T01:39:31.013392" elapsed="0.001083"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:31.016057" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:31.015483" elapsed="0.000707"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:31.017951" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:31.017233" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:31.020498" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:31.020577" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:31.020176" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:31.020816" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:31.022127" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:31.329571" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:31.021764" elapsed="0.307971"/>
</kw>
<msg time="2026-04-19T01:39:31.329825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:31.021397" elapsed="0.308532"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:31.019391" elapsed="0.310859"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:31.331812" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:31.354554" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:31.355170" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:31.355556" 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-19T01:39:31.331389" elapsed="0.024401"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:31.358182" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:31.361695" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:31.360481" elapsed="0.001454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:31.362916" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:31.362370" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:31.362231" elapsed="0.001032"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:31.364215" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T01:39:31.363599" elapsed="0.000858"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:31.363488" elapsed="0.001174"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:31.364852" elapsed="0.000114"/>
</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-19T01:39:31.370165" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T01:39:31.370735" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:31.371121" 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-19T01:39:31.366550" elapsed="0.004790"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:31.010307" elapsed="0.361304"/>
</kw>
<msg time="2026-04-19T01:39:31.371932" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:31.009571" elapsed="0.362424"/>
</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-19T01:39:31.008593" elapsed="0.363553"/>
</kw>
<msg time="2026-04-19T01:39:31.372191" 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-19T01:39:31.007282" elapsed="0.364957"/>
</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-19T01:39:31.375289" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:39:31.375774" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:31.376189" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:31.372564" elapsed="0.003786"/>
</kw>
<msg time="2026-04-19T01:39:31.376445" level="INFO">${output} = 1</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-19T01:39:31.005022" elapsed="0.371449"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:31.376941" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:31.376683" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:31.377048" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:39:31.377212" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:31.002846" elapsed="0.374391"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:31.377286" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:39:31.377438" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:31.000720" elapsed="0.376744"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:31.378048" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:31.377624" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:30.999651" elapsed="0.378600">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:33.381871" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:33.381113" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:33.383602" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:33.383211" elapsed="0.000430"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:33.384764" 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-19T01:39:33.384907" 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-19T01:39:33.384546" elapsed="0.000399"/>
</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-19T01:39:33.390334" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:33.389659" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:33.389579" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:33.392910" 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-19T01:39:33.393280" 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-19T01:39:33.391919" elapsed="0.001523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:33.395700" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:33.394835" elapsed="0.001018"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:33.398451" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:33.397238" elapsed="0.001350"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:33.401078" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:33.401158" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:33.400767" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:33.401397" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:33.402681" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:33.714638" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:33.402351" elapsed="0.312441"/>
</kw>
<msg time="2026-04-19T01:39:33.714877" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:33.401954" elapsed="0.313012"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:33.399957" elapsed="0.315319"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:33.716752" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:33.739743" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:33.740293" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:33.740626" 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-19T01:39:33.716364" elapsed="0.024474"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:33.743632" elapsed="0.001330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:33.747433" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:33.746357" elapsed="0.001180"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:33.748048" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:33.747704" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:33.747645" elapsed="0.000545"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:33.748557" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T01:39:33.748349" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:33.748298" elapsed="0.000435"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:33.748817" 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-19T01:39:33.753608" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:39:33.754178" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:33.754589" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:33.750228" elapsed="0.004573"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:33.387626" elapsed="0.367442"/>
</kw>
<msg time="2026-04-19T01:39:33.755371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:33.386686" elapsed="0.368749"/>
</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-19T01:39:33.385907" elapsed="0.369610"/>
</kw>
<msg time="2026-04-19T01:39:33.755558" 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-19T01:39:33.385189" elapsed="0.370415"/>
</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-19T01:39:33.758649" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:39:33.759141" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:33.759437" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:33.755895" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T01:39:33.759677" level="INFO">${output} = 1</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-19T01:39:33.383947" elapsed="0.375756"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:33.760248" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:33.759893" elapsed="0.000399"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:33.760336" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:33.760504" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:33.382602" elapsed="0.377928"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:33.760579" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:33.760725" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:33.380228" elapsed="0.380522"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:33.761430" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:33.760909" elapsed="0.000604">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:33.379125" elapsed="0.382500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:35.765184" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:35.764369" elapsed="0.000885"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:35.767365" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:35.766733" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:35.769266" 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-19T01:39:35.769691" 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-19T01:39:35.768867" elapsed="0.000887"/>
</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-19T01:39:35.775434" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:35.774704" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:35.774647" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:35.777041" 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-19T01:39:35.777289" 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-19T01:39:35.776583" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:35.778929" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:35.778383" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:35.780751" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:35.780051" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:35.783260" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:35.783339" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:35.782960" 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-19T01:39:35.783574" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:35.784857" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:36.100189" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:35.784535" elapsed="0.315795"/>
</kw>
<msg time="2026-04-19T01:39:36.100411" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:35.784169" elapsed="0.316332"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:35.782205" elapsed="0.318592"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:36.102355" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:36.125106" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:36.125616" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:36.125946" 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-19T01:39:36.101918" elapsed="0.024276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:36.128446" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:36.131555" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:36.130580" elapsed="0.001200"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:36.132681" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:36.132177" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:36.132005" elapsed="0.000965"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:36.133770" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:39:36.133326" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:36.133219" elapsed="0.001054"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:36.134453" 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-19T01:39:36.140400" 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-19T01:39:36.141420" elapsed="0.000359"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:36.142345" elapsed="0.000229"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:36.137022" elapsed="0.005788"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:35.773313" elapsed="0.370073"/>
</kw>
<msg time="2026-04-19T01:39:36.144132" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:35.772611" elapsed="0.371651"/>
</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-19T01:39:35.771332" elapsed="0.373112"/>
</kw>
<msg time="2026-04-19T01:39:36.144536" 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-19T01:39:35.770150" elapsed="0.374488"/>
</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-19T01:39:36.151671" elapsed="0.000758"/>
</kw>
<kw name="Open 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-19T01:39:36.152616" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:36.152911" 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-19T01:39:36.145318" elapsed="0.007758"/>
</kw>
<msg time="2026-04-19T01:39:36.153169" level="INFO">${output} = 1</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-19T01:39:35.767927" elapsed="0.385267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:36.153626" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:36.153379" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:36.153713" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:36.153894" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:35.765775" elapsed="0.388146"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:36.153972" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:39:36.154181" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:35.763446" elapsed="0.390760"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:36.154764" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:36.154366" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:35.762416" elapsed="0.392536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:38.158457" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:38.157690" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:38.160569" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:38.159930" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:38.162176" 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-19T01:39:38.162319" 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-19T01:39:38.161938" elapsed="0.000418"/>
</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-19T01:39:38.167920" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:38.167276" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:38.166869" elapsed="0.001348"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:38.170073" 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-19T01:39:38.170320" 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-19T01:39:38.169607" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:38.171935" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:38.171400" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:38.173853" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:38.173143" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:38.176251" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:38.176328" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:38.175948" 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-19T01:39:38.176561" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:38.177843" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:38.531980" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:38.177514" elapsed="0.354633"/>
</kw>
<msg time="2026-04-19T01:39:38.532230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:38.177127" elapsed="0.355192"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:38.175198" elapsed="0.357401"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:38.534132" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:38.557218" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:38.557807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:38.558190" 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-19T01:39:38.533728" elapsed="0.024676"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:38.560658" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:38.563887" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:38.562868" elapsed="0.001286"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:38.565080" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:38.564506" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:38.564382" elapsed="0.000994"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:38.566196" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:39:38.565715" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:38.565605" elapsed="0.000945"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:38.566727" 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-19T01:39:38.573747" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:39:38.574308" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:38.574667" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:38.569901" elapsed="0.004984"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:38.164998" elapsed="0.410179"/>
</kw>
<msg time="2026-04-19T01:39:38.575541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:38.164072" elapsed="0.411530"/>
</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-19T01:39:38.163312" elapsed="0.412371"/>
</kw>
<msg time="2026-04-19T01:39:38.575725" 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-19T01:39:38.162576" elapsed="0.413194"/>
</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-19T01:39:38.578724" elapsed="0.000397"/>
</kw>
<kw name="Open 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-19T01:39:38.579288" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:38.579582" 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-19T01:39:38.576075" elapsed="0.003654"/>
</kw>
<msg time="2026-04-19T01:39:38.579821" level="INFO">${output} = 1</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-19T01:39:38.161144" elapsed="0.418703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:38.580284" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:38.580021" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:38.580371" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:39:38.580523" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:38.158982" elapsed="0.421566"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:38.580594" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:39:38.580737" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:38.156820" elapsed="0.423942"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:38.581328" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:38.580916" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:38.155745" elapsed="0.425770">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:40.584259" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:40.583435" elapsed="0.000921"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:40.586446" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:40.585805" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:40.588381" 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-19T01:39:40.588526" 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-19T01:39:40.587988" elapsed="0.000575"/>
</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-19T01:39:40.594387" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:40.593727" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:40.593349" elapsed="0.001234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:40.596564" 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-19T01:39:40.596830" 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-19T01:39:40.596064" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:40.598506" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:40.597922" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:40.600798" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:40.599924" elapsed="0.000975"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:40.603294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:40.603371" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:40.602950" 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-19T01:39:40.603611" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:40.605046" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:40.920871" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:40.604705" elapsed="0.316336"/>
</kw>
<msg time="2026-04-19T01:39:40.921129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:40.604345" elapsed="0.316875"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:40.602144" elapsed="0.319356"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:40.923061" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:40.946225" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:40.946756" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:40.947129" 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-19T01:39:40.922639" elapsed="0.024707"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:40.949578" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:40.952944" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:40.951851" elapsed="0.001456"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:40.954188" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:40.953657" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:40.953535" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:40.955342" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T01:39:40.954858" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:40.954745" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:40.955792" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:40.965165" elapsed="0.000619"/>
</kw>
<kw name="Open 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-19T01:39:40.966227" elapsed="0.000315"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:40.966981" elapsed="0.000233"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:40.957777" elapsed="0.009655"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:40.591465" elapsed="0.376915"/>
</kw>
<msg time="2026-04-19T01:39:40.969112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:40.590303" elapsed="0.378938"/>
</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-19T01:39:40.589527" elapsed="0.379833"/>
</kw>
<msg time="2026-04-19T01:39:40.969418" 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-19T01:39:40.588786" elapsed="0.380698"/>
</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-19T01:39:40.973902" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:40.974626" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:40.975070" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:40.969985" elapsed="0.005304"/>
</kw>
<msg time="2026-04-19T01:39:40.975418" level="INFO">${output} = 1</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-19T01:39:40.587069" elapsed="0.388384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:40.976129" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:40.975739" elapsed="0.000457"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:40.976259" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T01:39:40.976483" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:40.584851" elapsed="0.391669"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:40.976586" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:39:40.976789" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:40.582881" elapsed="0.393943"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:40.977647" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:40.977097" elapsed="0.000636">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:40.582165" elapsed="0.395684">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:42.981270" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:42.980508" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:42.982817" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:42.982418" elapsed="0.000437"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:42.984057" 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-19T01:39:42.984209" 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-19T01:39:42.983802" elapsed="0.000444"/>
</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-19T01:39:42.989817" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:42.989140" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:42.989025" elapsed="0.000992"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:42.992523" 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-19T01:39:42.992891" 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-19T01:39:42.991474" elapsed="0.001674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:42.994840" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:42.994287" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:42.996630" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:42.995911" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:42.999174" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:42.999252" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:42.998867" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:42.999490" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:43.000917" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:43.322632" 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 Sun Apr 19 01:38:43 UTC 2026

  System load:  0.15               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:43.000575" elapsed="0.322201"/>
</kw>
<msg time="2026-04-19T01:39:43.322855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:43.000210" elapsed="0.322729"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:42.998093" elapsed="0.325153"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:43.324718" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:43.347211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:43.347725" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:43.348135" 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-19T01:39:43.324331" elapsed="0.024039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:43.350838" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:43.354271" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:43.353218" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:43.355455" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:43.354887" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:43.354757" elapsed="0.001008"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:43.356623" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T01:39:43.356142" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:43.355992" elapsed="0.001016"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:43.357303" elapsed="0.000138"/>
</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-19T01:39:43.362445" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:43.363003" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:43.363385" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:43.358924" elapsed="0.004674"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:42.987099" elapsed="0.376725"/>
</kw>
<msg time="2026-04-19T01:39:43.364154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:42.986079" elapsed="0.378137"/>
</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-19T01:39:42.985256" elapsed="0.379042"/>
</kw>
<msg time="2026-04-19T01:39:43.364341" 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-19T01:39:42.984478" elapsed="0.379909"/>
</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-19T01:39:43.367518" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:43.368045" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:43.368348" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:43.364682" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T01:39:43.368652" level="INFO">${output} = 1</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-19T01:39:42.983192" elapsed="0.385486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:43.369172" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:43.368870" elapsed="0.000347"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:43.369262" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:43.369416" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:42.981787" elapsed="0.387654"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:43.369489" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:43.369636" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:42.979687" elapsed="0.389974"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:43.370237" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:43.369819" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:42.978660" elapsed="0.391771">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:45.373859" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:45.373126" elapsed="0.000803"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:45.375967" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:45.375357" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:45.377837" 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-19T01:39:45.377979" 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-19T01:39:45.377532" elapsed="0.000484"/>
</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-19T01:39:45.383306" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:45.382640" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:45.382564" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:45.385820" 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-19T01:39:45.386192" 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-19T01:39:45.384867" elapsed="0.001462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:45.388543" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:45.387676" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:45.390710" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:45.389999" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:45.393188" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:45.393268" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:45.392884" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:45.393507" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:45.394810" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:46.007096" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:45.394478" elapsed="0.612890"/>
</kw>
<msg time="2026-04-19T01:39:46.007458" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:45.394114" elapsed="0.613436"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:45.392001" elapsed="0.615828"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:46.009455" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:46.032536" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:46.033137" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:46.033531" 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-19T01:39:46.009027" elapsed="0.024736"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:46.036309" elapsed="0.000979"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:46.039752" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:46.038664" elapsed="0.001335"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:46.040964" elapsed="0.000106"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:46.040404" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:46.040275" elapsed="0.001163"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:46.042125" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T01:39:46.041833" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:46.041715" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:46.042369" 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-19T01:39:46.047119" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:39:46.047667" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:46.048025" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:46.043691" elapsed="0.004562"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:45.380705" elapsed="0.667769"/>
</kw>
<msg time="2026-04-19T01:39:46.048776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:45.379749" elapsed="0.669087"/>
</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-19T01:39:45.378977" elapsed="0.669943"/>
</kw>
<msg time="2026-04-19T01:39:46.048961" 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-19T01:39:45.378259" elapsed="0.670749"/>
</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-19T01:39:46.052077" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:39:46.052557" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:46.052855" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:46.049345" elapsed="0.003660"/>
</kw>
<msg time="2026-04-19T01:39:46.053120" level="INFO">${output} = 1</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-19T01:39:45.376544" elapsed="0.676602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:46.053579" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:46.053328" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:46.053668" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:39:46.053823" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:45.374413" elapsed="0.679436"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:46.053897" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:39:46.054150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:45.372269" elapsed="0.681908"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:46.054791" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:46.054391" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:45.371223" elapsed="0.683753">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:48.058468" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:48.057667" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:48.060679" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:48.060018" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:48.062715" 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-19T01:39:48.062930" 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-19T01:39:48.062375" elapsed="0.000593"/>
</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-19T01:39:48.068311" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:48.067656" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:48.067578" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:48.070857" 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-19T01:39:48.071240" 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-19T01:39:48.069841" elapsed="0.001536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:48.073494" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:48.072723" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:48.075789" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:48.075026" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:48.078210" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:48.078287" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:48.077897" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:48.078522" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:48.079914" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:48.422642" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:48.079586" elapsed="0.343211"/>
</kw>
<msg time="2026-04-19T01:39:48.422891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:48.079221" elapsed="0.343778"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:48.077092" elapsed="0.346243"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:48.424905" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:48.447504" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:48.448087" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:48.448431" 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-19T01:39:48.424483" elapsed="0.024164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:48.450901" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:48.454180" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:48.453176" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:48.455318" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:48.454770" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:48.454642" elapsed="0.000982"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:48.456484" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:39:48.455995" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:48.455887" elapsed="0.000955"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:48.456979" elapsed="0.000157"/>
</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-19T01:39:48.463878" elapsed="0.000516"/>
</kw>
<kw name="Open 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-19T01:39:48.464688" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:48.465214" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:48.458959" elapsed="0.006548"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:48.065658" elapsed="0.400161"/>
</kw>
<msg time="2026-04-19T01:39:48.466390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:48.064696" elapsed="0.401783"/>
</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-19T01:39:48.063924" elapsed="0.402673"/>
</kw>
<msg time="2026-04-19T01:39:48.466654" 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-19T01:39:48.063212" elapsed="0.403508"/>
</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-19T01:39:48.470226" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:39:48.470706" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:48.471004" elapsed="0.000180"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:48.467148" elapsed="0.004089"/>
</kw>
<msg time="2026-04-19T01:39:48.471334" level="INFO">${output} = 1</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-19T01:39:48.061365" elapsed="0.409995"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:48.471826" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:48.471572" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:48.471913" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:48.472094" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:48.059083" elapsed="0.413036"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:48.472168" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:39:48.472317" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:48.056792" elapsed="0.415549"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:48.472909" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:48.472501" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:48.055753" elapsed="0.417369">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:50.476639" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:50.475874" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:50.478929" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:50.478318" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:50.480583" 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-19T01:39:50.480729" 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-19T01:39:50.480366" elapsed="0.000400"/>
</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-19T01:39:50.486496" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:50.485536" elapsed="0.001073"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:50.485459" elapsed="0.001233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:50.488713" 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-19T01:39:50.489099" 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-19T01:39:50.488097" elapsed="0.001143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:50.491451" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:50.490625" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:50.493499" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:50.492737" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:50.495891" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:50.495972" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:50.495610" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:50.496228" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:50.497702" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:50.813244" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:50.497376" elapsed="0.316014"/>
</kw>
<msg time="2026-04-19T01:39:50.813483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:50.496829" elapsed="0.316755"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:50.494805" elapsed="0.319089"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:50.815458" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:50.838210" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:50.838739" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:50.839118" 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-19T01:39:50.815070" elapsed="0.024263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:50.841687" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:50.844965" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:50.843960" elapsed="0.001278"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:50.846226" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:50.845587" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:50.845465" elapsed="0.001206"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:50.847335" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:39:50.847002" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:50.846912" elapsed="0.000647"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:50.847669" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:50.854303" 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-19T01:39:50.855108" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:50.855600" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:50.849639" elapsed="0.006246"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:50.483551" elapsed="0.372736"/>
</kw>
<msg time="2026-04-19T01:39:50.856704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:50.482571" elapsed="0.374211"/>
</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-19T01:39:50.481723" elapsed="0.375171"/>
</kw>
<msg time="2026-04-19T01:39:50.856951" 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-19T01:39:50.480989" elapsed="0.376031"/>
</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-19T01:39:50.861167" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:39:50.861649" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:50.861942" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:50.857444" elapsed="0.004664"/>
</kw>
<msg time="2026-04-19T01:39:50.862201" level="INFO">${output} = 1</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-19T01:39:50.479627" elapsed="0.382599"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:50.862676" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:50.862429" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:50.862762" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:39:50.862915" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:50.477354" elapsed="0.385586"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:50.862993" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:39:50.863162" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:50.475000" elapsed="0.388186"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:50.863742" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:50.863344" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:50.473938" elapsed="0.389991">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:52.867428" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:52.866664" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:52.869573" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:52.868893" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:52.870911" 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-19T01:39:52.871191" 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-19T01:39:52.870687" elapsed="0.000543"/>
</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-19T01:39:52.876765" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:52.876128" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:52.875747" elapsed="0.001208"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:52.879008" 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-19T01:39:52.879365" 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-19T01:39:52.878408" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:52.881670" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:52.880853" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:52.883558" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:52.882854" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:52.886113" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:52.886191" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:52.885814" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:52.886421" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:52.887666" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:53.207333" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:52.887343" elapsed="0.320119"/>
</kw>
<msg time="2026-04-19T01:39:53.207540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:52.886968" elapsed="0.320653"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:52.884864" elapsed="0.323009"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:53.209343" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:53.231496" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:53.231979" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:53.232364" 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-19T01:39:53.208930" elapsed="0.023644"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:53.235466" elapsed="0.001295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:53.239563" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:53.238451" elapsed="0.001351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:53.240907" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:53.240324" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:53.240170" elapsed="0.001084"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:53.242174" elapsed="0.000189"/>
</return>
<status status="PASS" start="2026-04-19T01:39:53.241609" elapsed="0.000887"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:53.241497" elapsed="0.001137"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:53.242814" elapsed="0.000113"/>
</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-19T01:39:53.248241" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:53.248918" elapsed="0.000288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:53.249406" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:53.244522" elapsed="0.005110"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:52.873895" elapsed="0.375966"/>
</kw>
<msg time="2026-04-19T01:39:53.250217" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:52.872938" elapsed="0.377353"/>
</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-19T01:39:52.872197" elapsed="0.378181"/>
</kw>
<msg time="2026-04-19T01:39:53.250434" 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-19T01:39:52.871455" elapsed="0.379063"/>
</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-19T01:39:53.253610" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:39:53.254175" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:53.254518" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:53.250848" elapsed="0.003846"/>
</kw>
<msg time="2026-04-19T01:39:53.254799" level="INFO">${output} = 1</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-19T01:39:52.870114" elapsed="0.384711"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:53.255310" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:53.255047" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:53.255397" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:39:53.255555" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:52.867949" elapsed="0.387631"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:53.255628" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:39:53.255786" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:52.865791" elapsed="0.390020"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:53.256521" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:53.256043" elapsed="0.000588">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:52.864670" elapsed="0.392106">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:55.260257" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:55.259502" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:55.262382" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:55.261742" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:55.263870" 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-19T01:39:55.264011" 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-19T01:39:55.263652" elapsed="0.000415"/>
</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-19T01:39:55.269598" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:55.268941" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:55.268571" elapsed="0.001298"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:55.271854" 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-19T01:39:55.272211" 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-19T01:39:55.271252" elapsed="0.001097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:55.274518" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:55.273753" elapsed="0.000916"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:55.276486" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:55.275786" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:55.278886" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:55.278964" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:55.278590" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:55.279217" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:55.280471" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:55.602620" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:55.280145" elapsed="0.322647"/>
</kw>
<msg time="2026-04-19T01:39:55.602883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:55.279769" elapsed="0.323209"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:55.277812" elapsed="0.325479"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:55.604865" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:55.627527" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:55.628083" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:55.628450" 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-19T01:39:55.604423" elapsed="0.024244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:55.630915" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:55.633789" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:55.633175" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:55.634574" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:55.634235" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:55.634150" elapsed="0.000610"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:55.635259" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:39:55.634959" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:55.634894" elapsed="0.000583"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:55.635588" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:55.644891" 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-19T01:39:55.645561" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:55.645928" elapsed="0.000190"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:55.637494" elapsed="0.008740"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:55.266707" elapsed="0.379898"/>
</kw>
<msg time="2026-04-19T01:39:55.646981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:55.265758" elapsed="0.381305"/>
</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-19T01:39:55.264997" elapsed="0.382150"/>
</kw>
<msg time="2026-04-19T01:39:55.647189" 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-19T01:39:55.264289" elapsed="0.382947"/>
</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-19T01:39:55.650350" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:39:55.650835" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:55.651154" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:55.647540" elapsed="0.003768"/>
</kw>
<msg time="2026-04-19T01:39:55.651400" level="INFO">${output} = 1</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-19T01:39:55.262975" elapsed="0.388450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:55.651858" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:55.651608" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:55.651946" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:39:55.652115" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:55.260775" elapsed="0.391366"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:55.652198" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:39:55.652361" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:55.258645" elapsed="0.393741"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:55.652953" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:55.652542" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:55.257612" elapsed="0.395557">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:39:57.656697" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:39:57.655927" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:39:57.659005" level="INFO">${member_ip} = 10.30.171.206</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-19T01:39:57.658402" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:57.660888" 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-19T01:39:57.661156" 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-19T01:39:57.660525" elapsed="0.000692"/>
</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-19T01:39:57.667296" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:39:57.666801" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:57.666746" elapsed="0.000691"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:57.669250" 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-19T01:39:57.669497" 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-19T01:39:57.668549" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:57.671574" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:57.670705" elapsed="0.000979"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:39:57.673517" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:39:57.672784" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:39:57.675861" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:39:57.675940" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:39:57.675571" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:57.676358" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:39:57.677627" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:39:57.981666" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:39:57.677302" elapsed="0.304499"/>
</kw>
<msg time="2026-04-19T01:39:57.981883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:57.676924" elapsed="0.305040"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:39:57.674792" elapsed="0.307467"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:39:57.983774" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:39:58.005980" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:39:58.006558" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:39:58.006903" 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-19T01:39:57.983384" elapsed="0.023813"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:58.009597" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:58.012894" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:58.011882" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:58.014097" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:39:58.013523" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:58.013396" elapsed="0.001006"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:39:58.015408" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T01:39:58.014746" elapsed="0.000936"/>
</branch>
<status status="PASS" start="2026-04-19T01:39:58.014630" elapsed="0.001222"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:39:58.016074" elapsed="0.000091"/>
</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-19T01:39:58.023519" 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-19T01:39:58.024130" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:58.024511" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:58.019600" elapsed="0.005122"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:39:57.665418" elapsed="0.359556"/>
</kw>
<msg time="2026-04-19T01:39:58.025308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:39:57.663994" elapsed="0.361377"/>
</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-19T01:39:57.662770" elapsed="0.362687"/>
</kw>
<msg time="2026-04-19T01:39:58.025499" 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-19T01:39:57.661569" elapsed="0.363976"/>
</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-19T01:39:58.028776" 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-19T01:39:58.029309" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:39:58.029615" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:39:58.025923" elapsed="0.003842"/>
</kw>
<msg time="2026-04-19T01:39:58.029859" level="INFO">${output} = 1</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-19T01:39:57.659578" elapsed="0.370306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:39:58.030413" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:39:58.030126" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:39:58.030505" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:39:58.030661" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:39:57.657434" elapsed="0.373251"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:39:58.030733" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:39:58.030878" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:39:57.655118" elapsed="0.375784"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:39:58.031603" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:39:58.031183" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:39:57.653959" elapsed="0.377836">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:00.035582" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:00.034779" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:00.037851" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:00.037190" elapsed="0.000723"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:00.039821" 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-19T01:40:00.040104" 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-19T01:40:00.039474" elapsed="0.000697"/>
</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-19T01:40:00.045244" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:00.044756" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:00.044699" elapsed="0.000686"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:00.047106" 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-19T01:40:00.047358" 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-19T01:40:00.046371" elapsed="0.001089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:00.048991" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:00.048438" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:00.050830" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:00.050099" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:00.053307" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:00.053386" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:00.052991" 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-19T01:40:00.053624" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:00.055078" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:00.369637" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:39:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:00.054703" elapsed="0.315089"/>
</kw>
<msg time="2026-04-19T01:40:00.369879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:00.054315" elapsed="0.315655"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:00.052233" elapsed="0.318048"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:00.371781" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:00.394578" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:00.395136" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:00.395478" 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-19T01:40:00.371386" elapsed="0.024305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:00.398179" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:00.401493" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:00.400404" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:00.402676" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:00.402126" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:00.401960" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:00.403773" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:40:00.403323" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:00.403214" elapsed="0.001080"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:00.404472" elapsed="0.000085"/>
</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-19T01:40:00.412560" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:40:00.413135" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:00.413498" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:00.407477" elapsed="0.006255"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:00.042931" elapsed="0.371024"/>
</kw>
<msg time="2026-04-19T01:40:00.414282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:00.042180" elapsed="0.372164"/>
</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-19T01:40:00.041569" elapsed="0.372857"/>
</kw>
<msg time="2026-04-19T01:40:00.414468" 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-19T01:40:00.040542" elapsed="0.373972"/>
</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-19T01:40:00.417623" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:40:00.418113" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:00.418412" 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-19T01:40:00.414808" elapsed="0.003751"/>
</kw>
<msg time="2026-04-19T01:40:00.418777" level="INFO">${output} = 1</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-19T01:40:00.038468" elapsed="0.380337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:00.419257" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:00.418988" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:00.419346" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:00.419500" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:00.036206" elapsed="0.383319"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:00.419574" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:00.419722" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:00.033869" elapsed="0.385878"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:00.420527" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:00.419905" elapsed="0.000698">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:00.032715" elapsed="0.388002">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:02.424222" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:02.423440" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:02.426338" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:02.425699" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:02.428410" 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-19T01:40:02.428649" 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-19T01:40:02.427926" elapsed="0.000783"/>
</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-19T01:40:02.435049" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:02.434364" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:02.434285" elapsed="0.000958"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:02.437129" 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-19T01:40:02.437373" 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-19T01:40:02.436400" elapsed="0.001074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:02.439274" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:02.438503" elapsed="0.000881"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:02.441102" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:02.440362" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:02.443555" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:02.443633" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:02.443266" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:02.443868" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:02.445156" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:02.755836" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:02.444814" elapsed="0.311283"/>
</kw>
<msg time="2026-04-19T01:40:02.756182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:02.444454" elapsed="0.311814"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:02.442395" elapsed="0.314148"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:02.758064" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:02.780368" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:02.780870" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:02.781252" 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-19T01:40:02.757624" elapsed="0.023844"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:02.783707" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:02.786972" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:02.785976" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:02.788117" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:02.787585" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:02.787462" elapsed="0.000980"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:02.789321" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:40:02.788768" elapsed="0.000865"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:02.788656" elapsed="0.001166"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:02.790009" elapsed="0.000252"/>
</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-19T01:40:02.797109" elapsed="0.000491"/>
</kw>
<kw name="Open 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-19T01:40:02.797934" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:02.798480" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:02.792260" elapsed="0.006433"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:02.432446" elapsed="0.366467"/>
</kw>
<msg time="2026-04-19T01:40:02.799236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:02.431481" elapsed="0.367812"/>
</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-19T01:40:02.430269" elapsed="0.369107"/>
</kw>
<msg time="2026-04-19T01:40:02.799418" 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-19T01:40:02.429096" elapsed="0.370369"/>
</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-19T01:40:02.802509" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:40:02.803000" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:02.803316" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:02.799753" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T01:40:02.803558" level="INFO">${output} = 1</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-19T01:40:02.426963" elapsed="0.376620"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:02.804005" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:02.803759" elapsed="0.000344"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:02.804148" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:02.804301" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:02.424750" elapsed="0.379577"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:02.804373" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:40:02.804518" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:02.422532" elapsed="0.382010"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:02.805161" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:02.804746" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:02.421492" elapsed="0.383855">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:04.809062" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:04.808244" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:04.811168" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:04.810534" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:04.813273" 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-19T01:40:04.813480" 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-19T01:40:04.812883" elapsed="0.000634"/>
</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-19T01:40:04.819176" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:04.818207" elapsed="0.001082"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:04.818126" elapsed="0.001257"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:04.821431" 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-19T01:40:04.821774" 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-19T01:40:04.820777" elapsed="0.001137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:04.824136" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:04.823342" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:04.826525" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:04.825641" elapsed="0.000991"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:04.828902" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:04.828979" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:04.828617" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:04.829241" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:04.830627" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:05.138045" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:04.830298" elapsed="0.307917"/>
</kw>
<msg time="2026-04-19T01:40:05.138306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:04.829795" elapsed="0.308606"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:04.827834" elapsed="0.310860"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:05.140327" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:05.163830" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:05.164456" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:05.164806" 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-19T01:40:05.139821" elapsed="0.025197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:05.167364" elapsed="0.001020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:05.169911" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:05.169259" elapsed="0.000867"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:05.170759" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:05.170366" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:05.170280" elapsed="0.000676"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:05.171493" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T01:40:05.171193" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:05.171120" elapsed="0.000613"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:05.171874" elapsed="0.000059"/>
</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-19T01:40:05.180947" elapsed="0.000473"/>
</kw>
<kw name="Open 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-19T01:40:05.181709" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:05.182343" 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-19T01:40:05.174476" elapsed="0.008138"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:04.816225" elapsed="0.366667"/>
</kw>
<msg time="2026-04-19T01:40:05.183293" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:04.815249" elapsed="0.368128"/>
</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-19T01:40:04.814479" elapsed="0.369007"/>
</kw>
<msg time="2026-04-19T01:40:05.183542" 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-19T01:40:04.813740" elapsed="0.369863"/>
</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-19T01:40:05.187683" 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-19T01:40:05.188348" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:05.188744" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:05.184049" elapsed="0.004887"/>
</kw>
<msg time="2026-04-19T01:40:05.189072" level="INFO">${output} = 1</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-19T01:40:04.811774" elapsed="0.377332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:05.189703" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:05.189376" elapsed="0.000386"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:05.189819" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T01:40:05.190019" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:04.809597" elapsed="0.380530"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:05.190191" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:40:05.190470" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:04.807391" elapsed="0.383115"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:05.191260" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:05.190723" elapsed="0.000633">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:04.806255" elapsed="0.385249">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:07.195140" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:07.194369" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:07.197193" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:07.196789" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:07.198347" 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-19T01:40:07.198491" 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-19T01:40:07.198128" elapsed="0.000403"/>
</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-19T01:40:07.204162" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:07.203436" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:07.203062" elapsed="0.001298"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:07.205880" 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-19T01:40:07.206143" 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-19T01:40:07.205436" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:07.207777" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:07.207239" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:07.209615" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:07.208900" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:07.211994" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:07.212087" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:07.211704" 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-19T01:40:07.212322" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:07.213572" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:07.505958" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:07.213249" elapsed="0.292862"/>
</kw>
<msg time="2026-04-19T01:40:07.506193" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:07.212875" elapsed="0.293410"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:07.210925" elapsed="0.295633"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:07.508047" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:07.531338" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:07.532284" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:07.532644" 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-19T01:40:07.507640" elapsed="0.025248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:07.535466" elapsed="0.001105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:07.538992" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:07.537916" elapsed="0.001349"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:07.539962" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:07.539616" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:07.539546" 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-19T01:40:07.540495" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T01:40:07.540283" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:07.540233" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:07.540762" 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-19T01:40:07.545726" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T01:40:07.546319" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:07.546700" 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-19T01:40:07.542203" elapsed="0.004711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:07.201229" elapsed="0.345966"/>
</kw>
<msg time="2026-04-19T01:40:07.547526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:07.200267" elapsed="0.347326"/>
</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-19T01:40:07.199488" elapsed="0.348191"/>
</kw>
<msg time="2026-04-19T01:40:07.547722" 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-19T01:40:07.198754" elapsed="0.349017"/>
</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-19T01:40:07.550789" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:40:07.551320" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:07.551629" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:07.548085" elapsed="0.003696"/>
</kw>
<msg time="2026-04-19T01:40:07.551877" level="INFO">${output} = 1</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-19T01:40:07.197537" elapsed="0.354366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:07.552353" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:07.552099" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:07.552443" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:40:07.552600" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:07.195980" elapsed="0.356646"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:07.552674" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:07.552819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:07.193529" elapsed="0.359315"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:07.553510" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:07.553002" elapsed="0.000594">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:07.192466" elapsed="0.361246">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:09.557626" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:09.556792" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:09.559831" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:09.559209" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:09.561784" 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-19T01:40:09.562223" 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-19T01:40:09.561438" elapsed="0.000851"/>
</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-19T01:40:09.568952" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:09.568416" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:09.567966" elapsed="0.001147"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:09.570709" 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-19T01:40:09.570963" 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-19T01:40:09.570173" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:09.572679" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:09.572081" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:09.574523" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:09.573786" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:09.577058" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:09.577139" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:09.576756" 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-19T01:40:09.577378" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:09.578649" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:09.878393" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:09.578316" elapsed="0.300238"/>
</kw>
<msg time="2026-04-19T01:40:09.878643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:09.577938" elapsed="0.300808"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:09.575935" elapsed="0.303127"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:09.880575" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:09.903699" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:09.904266" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:09.904601" 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-19T01:40:09.880181" elapsed="0.024633"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:09.907058" elapsed="0.001047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:09.910471" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:09.909441" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:09.911628" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:09.911102" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:09.910941" elapsed="0.001037"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:09.912687" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T01:40:09.912339" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:09.912231" elapsed="0.000624"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:09.912934" 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-19T01:40:09.919590" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:09.920271" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:09.920634" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:09.914418" elapsed="0.006427"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:09.566092" elapsed="0.355053"/>
</kw>
<msg time="2026-04-19T01:40:09.921457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:09.565068" elapsed="0.356449"/>
</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-19T01:40:09.563862" elapsed="0.357735"/>
</kw>
<msg time="2026-04-19T01:40:09.921639" 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-19T01:40:09.562654" elapsed="0.359030"/>
</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-19T01:40:09.924766" 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-19T01:40:09.925342" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:09.925637" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:09.921977" elapsed="0.003809"/>
</kw>
<msg time="2026-04-19T01:40:09.925878" level="INFO">${output} = 1</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-19T01:40:09.560454" elapsed="0.365448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:09.926366" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:09.926117" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:09.926454" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:40:09.926608" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:09.558222" elapsed="0.368412"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:09.926680" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:09.926822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:09.555823" elapsed="0.371024"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:09.927474" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:09.927004" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:09.554562" elapsed="0.373104">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:11.931245" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:11.930474" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:11.933398" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:11.932697" elapsed="0.000766"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:11.935392" 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-19T01:40:11.935632" 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-19T01:40:11.934998" elapsed="0.000696"/>
</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-19T01:40:11.940711" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:11.940241" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:11.940181" elapsed="0.000776"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:11.942663" 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-19T01:40:11.942914" 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-19T01:40:11.941985" elapsed="0.001033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:11.944584" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:11.944020" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:11.946421" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:11.945700" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:11.948874" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:11.948952" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:11.948583" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:11.949224" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:11.950493" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:12.265919" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:11.950168" elapsed="0.315858"/>
</kw>
<msg time="2026-04-19T01:40:12.266115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:11.949785" elapsed="0.316411"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:11.947737" elapsed="0.318712"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:12.267847" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:12.290018" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:12.290553" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:12.290886" 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-19T01:40:12.267493" elapsed="0.023644"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:12.293372" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:12.296517" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:12.295516" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:12.297631" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:12.297144" elapsed="0.000651"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:12.296986" elapsed="0.000932"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:12.298723" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:40:12.298275" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:12.298167" elapsed="0.000942"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:12.299288" elapsed="0.000084"/>
</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-19T01:40:12.305375" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:12.305927" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:12.306299" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:12.301985" elapsed="0.004521"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:11.938836" elapsed="0.367893"/>
</kw>
<msg time="2026-04-19T01:40:12.307173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:11.938136" elapsed="0.369098"/>
</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-19T01:40:11.937391" elapsed="0.369927"/>
</kw>
<msg time="2026-04-19T01:40:12.307360" 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-19T01:40:11.936099" elapsed="0.371307"/>
</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-19T01:40:12.310439" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:40:12.310913" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:12.311227" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:12.307698" elapsed="0.003679"/>
</kw>
<msg time="2026-04-19T01:40:12.311467" level="INFO">${output} = 1</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-19T01:40:11.933986" elapsed="0.377506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:12.311923" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:12.311667" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:12.312010" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T01:40:12.312183" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:11.931760" elapsed="0.380449"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:12.312254" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:40:12.312400" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:11.929579" elapsed="0.382846"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:12.313007" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:12.312579" elapsed="0.000522">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:11.928515" elapsed="0.384700">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:14.317462" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:14.316164" elapsed="0.001396"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:14.319711" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:14.319108" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:14.321595" 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-19T01:40:14.321820" 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-19T01:40:14.321249" elapsed="0.000629"/>
</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-19T01:40:14.327894" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:14.327424" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:14.327365" elapsed="0.000670"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:14.329859" 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-19T01:40:14.330133" 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-19T01:40:14.329025" elapsed="0.001211"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:14.331775" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:14.331231" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:14.333766" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:14.333012" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:14.336324" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:14.336405" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:14.336015" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:14.336649" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:14.337964" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:14.651226" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:14.337628" elapsed="0.313716"/>
</kw>
<msg time="2026-04-19T01:40:14.651424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:14.337252" elapsed="0.314256"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:14.335224" elapsed="0.316539"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:14.653211" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:14.676780" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:14.677324" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:14.677656" 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-19T01:40:14.652826" elapsed="0.025065"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:14.680191" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:14.683315" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:14.682355" elapsed="0.001184"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:14.684478" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:14.683894" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:14.683770" elapsed="0.001001"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:14.685573" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:40:14.685123" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:14.684982" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:14.686249" elapsed="0.000088"/>
</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-19T01:40:14.692549" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:40:14.693115" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:14.693471" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:14.689082" elapsed="0.004597"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:14.326015" elapsed="0.367894"/>
</kw>
<msg time="2026-04-19T01:40:14.694282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:14.324636" elapsed="0.369703"/>
</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-19T01:40:14.323417" elapsed="0.371006"/>
</kw>
<msg time="2026-04-19T01:40:14.694464" 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-19T01:40:14.322257" elapsed="0.372253"/>
</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-19T01:40:14.697953" 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-19T01:40:14.698581" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:14.698885" 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-19T01:40:14.694921" elapsed="0.004122"/>
</kw>
<msg time="2026-04-19T01:40:14.699153" level="INFO">${output} = 1</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-19T01:40:14.320277" elapsed="0.378904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:14.699622" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:14.699364" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:14.699712" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:40:14.699872" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:14.318110" elapsed="0.381788"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:14.699946" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:14.700114" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:14.315317" elapsed="0.384823"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:14.700720" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:14.700297" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:14.314243" elapsed="0.386678">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:16.702874" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:16.702506" elapsed="0.000424"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:16.703872" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:16.703593" elapsed="0.000306"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:16.704721" 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-19T01:40:16.704823" 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-19T01:40:16.704549" elapsed="0.000300"/>
</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-19T01:40:16.708699" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:16.708221" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:16.708164" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:16.710570" 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-19T01:40:16.710835" 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-19T01:40:16.709842" elapsed="0.001097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:16.712654" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:16.712085" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:16.714555" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:16.713811" elapsed="0.000849"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:16.717153" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:16.717234" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:16.716846" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:16.717474" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:16.718870" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:17.066801" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:16.718537" elapsed="0.348362"/>
</kw>
<msg time="2026-04-19T01:40:17.066970" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:16.718167" elapsed="0.348899"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:16.715962" elapsed="0.351347"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:17.068722" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:17.091674" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:17.092533" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:17.092937" 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-19T01:40:17.068371" elapsed="0.024828"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:17.095498" elapsed="0.001014"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:17.098045" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:17.097437" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:17.098743" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:17.098431" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:17.098354" elapsed="0.000575"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:17.099444" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:40:17.099161" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:17.099090" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:17.099776" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:17.106001" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T01:40:17.106558" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:17.106910" 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-19T01:40:17.101743" elapsed="0.005394"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:16.706795" elapsed="0.400568"/>
</kw>
<msg time="2026-04-19T01:40:17.107669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:16.706096" elapsed="0.401630"/>
</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-19T01:40:16.705541" elapsed="0.402266"/>
</kw>
<msg time="2026-04-19T01:40:17.107849" 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-19T01:40:16.705009" elapsed="0.402889"/>
</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-19T01:40:17.111291" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:40:17.111774" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:17.112086" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:17.108348" elapsed="0.003889"/>
</kw>
<msg time="2026-04-19T01:40:17.112450" level="INFO">${output} = 1</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-19T01:40:16.704135" elapsed="0.408342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:17.112929" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:17.112678" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:17.113017" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T01:40:17.113191" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:16.703180" elapsed="0.410037"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:17.113264" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:17.113408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:16.702120" elapsed="0.411312"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:17.113988" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:17.113588" elapsed="0.000562">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:16.701557" elapsed="0.412710">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:19.118406" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:19.117477" elapsed="0.001011"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:19.120674" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:19.119943" elapsed="0.000798"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:19.122701" 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-19T01:40:19.123013" 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-19T01:40:19.122317" elapsed="0.000826"/>
</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-19T01:40:19.128216" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:19.127476" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:19.127420" elapsed="0.000938"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:19.129821" 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-19T01:40:19.130092" 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-19T01:40:19.129383" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:19.131719" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:19.131176" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:19.133605" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:19.132887" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:19.136487" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:19.136573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:19.135826" elapsed="0.000773"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:19.136823" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:19.138156" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:19.457951" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:19.137809" elapsed="0.320437"/>
</kw>
<msg time="2026-04-19T01:40:19.458331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:19.137444" elapsed="0.320976"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:19.135031" elapsed="0.323659"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:19.460200" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:19.483200" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:19.483699" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:19.484036" 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-19T01:40:19.459776" elapsed="0.024524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:19.486570" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:19.489912" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:19.488801" elapsed="0.001385"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:19.491129" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:19.490541" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:19.490417" elapsed="0.001010"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:19.492230" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:40:19.491747" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:19.491639" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:19.492759" elapsed="0.000082"/>
</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-19T01:40:19.499787" 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-19T01:40:19.500355" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:19.500711" 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-19T01:40:19.496123" elapsed="0.004795"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:19.126102" elapsed="0.375056"/>
</kw>
<msg time="2026-04-19T01:40:19.501469" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:19.125408" elapsed="0.376117"/>
</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-19T01:40:19.124783" elapsed="0.376823"/>
</kw>
<msg time="2026-04-19T01:40:19.501647" 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-19T01:40:19.123515" elapsed="0.378179"/>
</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-19T01:40:19.504884" 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-19T01:40:19.505376" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:19.505669" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:19.501986" elapsed="0.003829"/>
</kw>
<msg time="2026-04-19T01:40:19.505907" level="INFO">${output} = 1</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-19T01:40:19.121301" elapsed="0.384632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:19.506373" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:19.506125" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:19.506460" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:19.506612" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:19.118969" elapsed="0.387667"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:19.506682" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:19.506828" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:19.116592" elapsed="0.390261"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:19.507524" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:19.507118" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:19.115278" elapsed="0.392436">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:21.511470" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:21.510674" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:21.513660" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:21.513012" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:21.515568" 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-19T01:40:21.515803" 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-19T01:40:21.515236" elapsed="0.000629"/>
</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-19T01:40:21.520690" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:21.520196" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:21.519886" elapsed="0.000986"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:21.522436" 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-19T01:40:21.522685" 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-19T01:40:21.521952" elapsed="0.000835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:21.524376" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:21.523780" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:21.526228" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:21.525502" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:21.528692" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:21.528782" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:21.528405" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:21.529015" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:21.530299" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:21.852147" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:21.529948" elapsed="0.322403"/>
</kw>
<msg time="2026-04-19T01:40:21.852490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:21.529593" elapsed="0.323043"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:21.527544" elapsed="0.325705"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:21.855550" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:21.878792" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:21.879368" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:21.879699" 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-19T01:40:21.855011" elapsed="0.024900"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:21.882241" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:21.885490" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:21.884471" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:21.886399" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:21.886056" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:21.885944" elapsed="0.000652"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:21.887209" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T01:40:21.886807" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:21.886736" elapsed="0.000715"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:21.887569" elapsed="0.000058"/>
</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-19T01:40:21.894778" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T01:40:21.895334" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:21.895690" 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-19T01:40:21.889808" elapsed="0.006088"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:21.518539" elapsed="0.377596"/>
</kw>
<msg time="2026-04-19T01:40:21.896437" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:21.517811" elapsed="0.378687"/>
</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-19T01:40:21.517267" elapsed="0.379310"/>
</kw>
<msg time="2026-04-19T01:40:21.896618" 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-19T01:40:21.516252" elapsed="0.380411"/>
</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-19T01:40:21.899684" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:40:21.900175" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:21.900652" 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-19T01:40:21.896948" elapsed="0.003850"/>
</kw>
<msg time="2026-04-19T01:40:21.900888" level="INFO">${output} = 1</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-19T01:40:21.514274" elapsed="0.386641"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:21.901385" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:21.901136" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:21.901471" elapsed="0.000054"/>
</return>
<msg time="2026-04-19T01:40:21.901653" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:21.512002" elapsed="0.389676"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:21.901725" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:40:21.901870" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:21.509752" elapsed="0.392143"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:21.902617" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:21.902071" elapsed="0.000618">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:21.508662" elapsed="0.394138">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:23.906358" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:23.905577" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:23.908444" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:23.908036" elapsed="0.000447"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:23.909606" 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-19T01:40:23.909750" 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-19T01:40:23.909386" elapsed="0.000402"/>
</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-19T01:40:23.915382" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:23.914686" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:23.914334" elapsed="0.001246"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:23.917150" 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-19T01:40:23.917393" 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-19T01:40:23.916700" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:23.919006" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:23.918472" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:23.920851" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:23.920151" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:23.923273" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:23.923350" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:23.922975" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:23.923614" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:23.924868" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:24.239070" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:23.924544" elapsed="0.314678"/>
</kw>
<msg time="2026-04-19T01:40:24.239308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:23.924184" elapsed="0.315217"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:23.922219" elapsed="0.317488"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:24.241231" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:24.264149" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:24.264789" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:24.265293" 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-19T01:40:24.240814" elapsed="0.024755"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:24.268371" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:24.271571" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:24.270890" 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-19T01:40:24.272187" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:24.271840" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:24.271780" elapsed="0.000546"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:24.272673" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:40:24.272472" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:24.272423" elapsed="0.000410"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:24.272913" 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-19T01:40:24.280337" 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-19T01:40:24.280950" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:24.281387" 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-19T01:40:24.274405" elapsed="0.007219"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:23.912491" elapsed="0.369383"/>
</kw>
<msg time="2026-04-19T01:40:24.282223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:23.911547" elapsed="0.370746"/>
</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-19T01:40:23.910756" elapsed="0.371635"/>
</kw>
<msg time="2026-04-19T01:40:24.282432" 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-19T01:40:23.910012" elapsed="0.372467"/>
</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-19T01:40:24.285930" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T01:40:24.286495" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:24.286903" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:24.282825" elapsed="0.004275"/>
</kw>
<msg time="2026-04-19T01:40:24.287209" level="INFO">${output} = 1</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-19T01:40:23.908787" elapsed="0.378451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:24.287734" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:24.287450" elapsed="0.000346"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:24.287853" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T01:40:24.288076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:23.907025" elapsed="0.381079"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:24.288151" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:40:24.288322" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:23.904731" elapsed="0.383616"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:24.288932" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:24.288504" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:23.903679" elapsed="0.385546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:26.292801" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:26.292023" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:26.294926" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:26.294316" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:26.296913" 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-19T01:40:26.297323" 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-19T01:40:26.296471" elapsed="0.000915"/>
</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-19T01:40:26.302772" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:26.302304" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:26.302248" elapsed="0.000665"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:26.304618" 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-19T01:40:26.304869" 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-19T01:40:26.303928" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:26.306518" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:26.305953" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:26.308361" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:26.307642" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:26.310829" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:26.310908" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:26.310542" 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-19T01:40:26.311170" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:26.312437" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:26.656072" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:26.312107" elapsed="0.344099"/>
</kw>
<msg time="2026-04-19T01:40:26.656287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:26.311731" elapsed="0.344642"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:26.309679" elapsed="0.346960"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:26.658146" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:26.670751" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:26.671287" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:26.671615" 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-19T01:40:26.657737" elapsed="0.014085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:26.674027" elapsed="0.000876"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:26.677147" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:26.676179" elapsed="0.001201"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:26.678228" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:26.677772" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:26.677643" elapsed="0.000718"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:26.678708" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T01:40:26.678504" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:26.678456" elapsed="0.000411"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:26.678946" 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-19T01:40:26.683630" 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-19T01:40:26.684337" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:26.684695" 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-19T01:40:26.680326" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:26.300906" elapsed="0.384234"/>
</kw>
<msg time="2026-04-19T01:40:26.685441" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:26.300212" elapsed="0.385287"/>
</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-19T01:40:26.298910" elapsed="0.386670"/>
</kw>
<msg time="2026-04-19T01:40:26.685621" 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-19T01:40:26.297742" elapsed="0.387949"/>
</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-19T01:40:26.688772" 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-19T01:40:26.689267" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:26.689562" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:26.685984" elapsed="0.003741"/>
</kw>
<msg time="2026-04-19T01:40:26.689817" level="INFO">${output} = 1</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-19T01:40:26.295519" elapsed="0.394328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:26.690289" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:26.690024" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:26.690377" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:26.690530" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:26.293365" elapsed="0.397190"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:26.690602" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:26.690747" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:26.291209" elapsed="0.399564"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:26.691338" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:26.690928" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:26.290110" elapsed="0.401407">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:28.695180" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:28.694381" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:28.697283" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:28.696646" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:28.699065" 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-19T01:40:28.699212" 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-19T01:40:28.698811" elapsed="0.000437"/>
</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-19T01:40:28.704702" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:28.704051" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:28.703951" elapsed="0.001037"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:28.707066" 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-19T01:40:28.707316" 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-19T01:40:28.706367" elapsed="0.001050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:28.708936" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:28.708393" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:28.710769" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:28.710072" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:28.713151" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:28.713229" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:28.712847" 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-19T01:40:28.713466" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:28.714761" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:29.023864" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:28.714436" elapsed="0.309582"/>
</kw>
<msg time="2026-04-19T01:40:29.024123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:28.714060" elapsed="0.310155"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:28.712085" elapsed="0.312417"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:29.026076" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:29.049219" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:29.049722" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:29.050098" 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-19T01:40:29.025624" elapsed="0.024760"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:29.052706" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:29.055921" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:29.054882" elapsed="0.001408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:29.057282" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:29.056727" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:29.056594" elapsed="0.000983"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:29.058390" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:40:29.057897" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:29.057792" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:29.058914" elapsed="0.000081"/>
</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-19T01:40:29.064625" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:40:29.065189" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:29.065544" 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-19T01:40:29.061168" elapsed="0.004584"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:28.701943" elapsed="0.364032"/>
</kw>
<msg time="2026-04-19T01:40:29.066386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:28.700960" elapsed="0.365486"/>
</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-19T01:40:28.700212" elapsed="0.366317"/>
</kw>
<msg time="2026-04-19T01:40:29.066580" 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-19T01:40:28.699473" elapsed="0.367184"/>
</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-19T01:40:29.069682" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:40:29.070174" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:29.070497" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:29.066961" elapsed="0.003699"/>
</kw>
<msg time="2026-04-19T01:40:29.070752" level="INFO">${output} = 1</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-19T01:40:28.697864" elapsed="0.372914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:29.071225" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:29.070955" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:29.071313" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:40:29.071467" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:28.695704" elapsed="0.375788"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:29.071539" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:29.071684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:28.693478" elapsed="0.378231"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:29.072356" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:29.071879" elapsed="0.000549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:28.692397" elapsed="0.380141">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:31.076125" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:31.075283" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:31.078277" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:31.077636" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:31.080130" 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-19T01:40:31.080366" 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-19T01:40:31.079770" elapsed="0.000655"/>
</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-19T01:40:31.084939" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:31.084452" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:31.084395" elapsed="0.000702"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:31.086788" 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-19T01:40:31.087059" 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-19T01:40:31.086097" elapsed="0.001065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:31.088691" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:31.088154" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:31.090592" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:31.089873" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:31.093081" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:31.093160" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:31.092757" 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-19T01:40:31.093399" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:31.094674" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:31.448803" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:31.094346" elapsed="0.354615"/>
</kw>
<msg time="2026-04-19T01:40:31.449074" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:31.093961" elapsed="0.355205"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:31.091892" elapsed="0.357567"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:31.451080" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:31.474004" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:31.474574" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:31.474915" 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-19T01:40:31.450609" elapsed="0.024560"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:31.477386" elapsed="0.001167"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:31.480601" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:31.479819" elapsed="0.000970"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:31.481535" elapsed="0.000056"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:31.481105" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:31.480975" elapsed="0.000811"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:31.482346" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T01:40:31.482019" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:31.481943" elapsed="0.000648"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:31.482700" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:31.488787" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T01:40:31.489353" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:31.489712" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:31.484639" elapsed="0.005282"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:31.082956" elapsed="0.407210"/>
</kw>
<msg time="2026-04-19T01:40:31.490485" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:31.082268" elapsed="0.408276"/>
</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-19T01:40:31.081716" elapsed="0.408911"/>
</kw>
<msg time="2026-04-19T01:40:31.490669" 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-19T01:40:31.080778" elapsed="0.409937"/>
</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-19T01:40:31.493825" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:31.494324" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:31.494661" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:31.491157" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T01:40:31.494911" level="INFO">${output} = 1</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-19T01:40:31.078815" elapsed="0.416122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:31.495469" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:31.495215" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:31.495559" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:31.495713" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:31.076659" elapsed="0.419080"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:31.495786" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:40:31.496027" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:31.074442" elapsed="0.421630"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:31.496642" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:31.496235" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:31.073397" elapsed="0.423426">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:33.501155" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:33.500364" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:33.502955" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:33.502572" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:33.504140" 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-19T01:40:33.504285" 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-19T01:40:33.503898" elapsed="0.000424"/>
</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-19T01:40:33.510088" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:33.509081" elapsed="0.001122"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:33.508982" elapsed="0.001306"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:33.511777" 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-19T01:40:33.512022" 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-19T01:40:33.511330" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:33.513687" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:33.513129" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:33.515504" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:33.514790" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:33.517971" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:33.518065" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:33.517691" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:33.518300" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:33.519633" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:33.865710" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:33.519306" elapsed="0.346520"/>
</kw>
<msg time="2026-04-19T01:40:33.865900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:33.518924" elapsed="0.347068"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:33.516879" elapsed="0.349399"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:33.867759" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:33.890698" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:33.891234" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:33.891569" 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-19T01:40:33.867387" elapsed="0.024397"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:33.894014" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:33.896531" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:33.895924" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:33.897231" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:33.896894" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:33.896816" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:33.897891" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:40:33.897613" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:33.897546" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:33.898247" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:33.904422" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:40:33.904956" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:33.905325" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:33.900232" elapsed="0.005314"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:33.507144" elapsed="0.398623"/>
</kw>
<msg time="2026-04-19T01:40:33.906083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:33.506054" elapsed="0.400086"/>
</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-19T01:40:33.505289" elapsed="0.400932"/>
</kw>
<msg time="2026-04-19T01:40:33.906262" 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-19T01:40:33.504545" elapsed="0.401762"/>
</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-19T01:40:33.909361" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:40:33.909835" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:33.910148" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:33.906619" elapsed="0.003680"/>
</kw>
<msg time="2026-04-19T01:40:33.910462" level="INFO">${output} = 1</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-19T01:40:33.503321" elapsed="0.407168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:33.910938" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:33.910689" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:33.911025" elapsed="0.000103"/>
</return>
<msg time="2026-04-19T01:40:33.911255" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:33.501734" elapsed="0.409546"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:33.911327" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:33.911480" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:33.499293" elapsed="0.412213"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:33.912072" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:33.911663" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:33.497863" elapsed="0.414394">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:35.915777" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:35.914976" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:35.917894" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:35.917286" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:35.919822" 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-19T01:40:35.920085" 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-19T01:40:35.919453" elapsed="0.000694"/>
</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-19T01:40:35.924443" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:35.923952" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:35.923654" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:35.926047" 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-19T01:40:35.926294" 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-19T01:40:35.925589" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:35.927970" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:35.927383" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:35.929783" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:35.929087" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:35.932291" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:35.932370" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:35.931966" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:35.932672" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:35.933928" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:36.248260" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:35.933608" elapsed="0.314893"/>
</kw>
<msg time="2026-04-19T01:40:36.248605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:35.933250" elapsed="0.315442"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:35.931187" elapsed="0.317771"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:36.250448" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:36.272838" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:36.273372" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:36.273746" 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-19T01:40:36.250057" elapsed="0.023899"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:36.276261" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:36.279491" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:36.278463" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:36.280648" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:36.280103" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:36.279946" elapsed="0.001000"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:36.281645" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T01:40:36.281298" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:36.281192" elapsed="0.000628"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:36.281901" 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-19T01:40:36.286602" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:40:36.287212" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:36.287595" 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-19T01:40:36.283322" elapsed="0.004481"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:35.922260" elapsed="0.365789"/>
</kw>
<msg time="2026-04-19T01:40:36.288364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:35.921552" elapsed="0.366868"/>
</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-19T01:40:35.920998" elapsed="0.367503"/>
</kw>
<msg time="2026-04-19T01:40:36.288542" 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-19T01:40:35.920486" elapsed="0.368101"/>
</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-19T01:40:36.291646" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T01:40:36.292267" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:36.292566" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:36.288910" elapsed="0.003815"/>
</kw>
<msg time="2026-04-19T01:40:36.292814" level="INFO">${output} = 1</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-19T01:40:35.918464" elapsed="0.374375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:36.293276" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:36.293013" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:36.293362" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:40:36.293521" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:35.916342" elapsed="0.377205"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:36.293593" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:36.293737" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:35.914162" elapsed="0.379599"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:36.294382" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:36.293965" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:35.913122" elapsed="0.381446">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:38.298198" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:38.297426" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:38.300314" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:38.299676" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:38.302206" 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-19T01:40:38.302437" 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-19T01:40:38.301851" elapsed="0.000645"/>
</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-19T01:40:38.312845" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:38.311650" elapsed="0.001447"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:38.310974" elapsed="0.002259"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:38.315100" 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-19T01:40:38.315367" 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-19T01:40:38.314538" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:38.317146" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:38.316480" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:38.318963" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:38.318237" elapsed="0.000908"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:38.321526" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:38.321606" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:38.321233" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:38.321853" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:38.323281" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:38.623293" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:38.322807" elapsed="0.300613"/>
</kw>
<msg time="2026-04-19T01:40:38.623499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:38.322442" elapsed="0.301140"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:38.320357" elapsed="0.303489"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:38.625314" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:38.647735" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:38.648287" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:38.648622" 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-19T01:40:38.624916" elapsed="0.023918"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:38.651252" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:38.654555" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:38.653484" elapsed="0.001302"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:38.655671" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:38.655169" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:38.655011" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:38.656758" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:40:38.656312" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:38.656205" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:38.657320" elapsed="0.000145"/>
</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-19T01:40:38.664729" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:40:38.665303" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:38.665693" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:38.659552" elapsed="0.006365"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:38.307804" elapsed="0.358351"/>
</kw>
<msg time="2026-04-19T01:40:38.666463" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:38.305933" elapsed="0.360587"/>
</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-19T01:40:38.304072" elapsed="0.362528"/>
</kw>
<msg time="2026-04-19T01:40:38.666640" 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-19T01:40:38.302876" elapsed="0.363809"/>
</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-19T01:40:38.669748" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:40:38.670247" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:38.670541" 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-19T01:40:38.666972" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T01:40:38.670781" level="INFO">${output} = 1</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-19T01:40:38.300883" elapsed="0.369922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:38.671241" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:38.670978" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:38.671326" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:38.671475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:38.298727" elapsed="0.372773"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:38.671544" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:40:38.671684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:38.296509" elapsed="0.375198"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:38.672333" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:38.671859" elapsed="0.000547">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:38.295423" elapsed="0.377091">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:40.675980" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:40.675235" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:40.678338" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:40.677666" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:40.680182" 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-19T01:40:40.680412" 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-19T01:40:40.679827" elapsed="0.000645"/>
</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-19T01:40:40.686338" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:40.685685" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:40.685609" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:40.688852" 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-19T01:40:40.689238" 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-19T01:40:40.687900" elapsed="0.001479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:40.691082" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:40.690502" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:40.692886" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:40.692173" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:40.695396" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:40.695474" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:40.695112" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:40.695709" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:40.696990" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:41.012293" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:40.696634" elapsed="0.315813"/>
</kw>
<msg time="2026-04-19T01:40:41.012533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:40.696275" elapsed="0.316347"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:40.694340" elapsed="0.318564"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:41.014439" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:41.037466" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:41.037974" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:41.038367" 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-19T01:40:41.014017" elapsed="0.024564"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:41.040843" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:41.043275" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:41.042580" 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-19T01:40:41.044132" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:41.043650" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:41.043569" elapsed="0.000753"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:41.044812" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:40:41.044526" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:41.044458" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:41.045173" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:41.051269" 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-19T01:40:41.051815" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:41.052304" 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-19T01:40:41.047078" elapsed="0.005439"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:40.683708" elapsed="0.369036"/>
</kw>
<msg time="2026-04-19T01:40:41.053065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:40.682668" elapsed="0.370459"/>
</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-19T01:40:40.681906" elapsed="0.371303"/>
</kw>
<msg time="2026-04-19T01:40:41.053250" 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-19T01:40:40.680909" elapsed="0.372408"/>
</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-19T01:40:41.056371" 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-19T01:40:41.056849" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:41.057163" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:41.053616" elapsed="0.003722"/>
</kw>
<msg time="2026-04-19T01:40:41.057429" level="INFO">${output} = 1</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-19T01:40:40.678883" elapsed="0.378572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:41.057885" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:41.057634" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:41.057973" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:40:41.058142" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:40.676721" elapsed="0.381448"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:41.058216" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:41.058364" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:40.674403" elapsed="0.383985"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:41.058940" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:41.058544" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:40.673339" elapsed="0.385812">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:43.062663" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:43.061889" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:43.064814" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:43.064184" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:43.066786" 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-19T01:40:43.067180" 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-19T01:40:43.066461" elapsed="0.000782"/>
</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-19T01:40:43.073144" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:43.072445" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:43.072369" elapsed="0.000968"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:43.075702" 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-19T01:40:43.076100" 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-19T01:40:43.074763" elapsed="0.001480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:43.078055" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:43.077457" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:43.079847" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:43.079142" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:43.082334" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:43.082412" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:43.082049" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:43.082647" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:43.083922" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:43.395289" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:43.083576" elapsed="0.311854"/>
</kw>
<msg time="2026-04-19T01:40:43.395513" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:43.083216" elapsed="0.312385"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:43.081283" elapsed="0.314594"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:43.397471" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:43.420564" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:43.421110" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:43.421451" 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-19T01:40:43.397074" elapsed="0.024589"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:43.423970" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:43.427291" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:43.426309" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:43.428447" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:43.427865" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:43.427742" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:43.429308" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T01:40:43.429099" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:43.428886" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:43.429556" 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-19T01:40:43.434558" 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-19T01:40:43.435187" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:43.435545" 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-19T01:40:43.431104" elapsed="0.004647"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:43.070490" elapsed="0.365485"/>
</kw>
<msg time="2026-04-19T01:40:43.436297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:43.069542" elapsed="0.366816"/>
</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-19T01:40:43.068775" elapsed="0.367691"/>
</kw>
<msg time="2026-04-19T01:40:43.436512" 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-19T01:40:43.067601" elapsed="0.368959"/>
</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-19T01:40:43.439586" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:43.440083" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:43.440378" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:43.436852" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T01:40:43.440630" level="INFO">${output} = 1</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-19T01:40:43.065506" elapsed="0.375150"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:43.441093" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:43.440830" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:43.441185" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:43.441338" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:43.063219" elapsed="0.378144"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:43.441409" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:43.441556" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:43.060985" elapsed="0.380596"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:43.442227" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:43.441737" elapsed="0.000567">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:43.059901" elapsed="0.382517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:45.445908" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:45.445139" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:45.448020" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:45.447418" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:45.449916" 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-19T01:40:45.450178" 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-19T01:40:45.449541" elapsed="0.000698"/>
</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-19T01:40:45.455841" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:45.455211" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:45.455135" elapsed="0.001016"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:45.458503" 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-19T01:40:45.458847" 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-19T01:40:45.457526" elapsed="0.001462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:45.461157" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:45.460378" elapsed="0.000934"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:45.463753" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:45.462798" elapsed="0.001053"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:45.466117" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:45.466196" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:45.465820" 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-19T01:40:45.466433" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:45.467691" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:45.782422" 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 Sun Apr 19 01:39:45 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:45.467365" elapsed="0.315139"/>
</kw>
<msg time="2026-04-19T01:40:45.782565" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:45.466987" elapsed="0.315650"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:45.465056" elapsed="0.317806"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:45.784208" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:45.807070" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:45.807563" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:45.807893" 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-19T01:40:45.783868" elapsed="0.024277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:45.810389" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:45.813442" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:45.812480" elapsed="0.001190"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:45.814506" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:45.813999" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:45.813883" elapsed="0.000911"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:45.815587" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T01:40:45.815140" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:45.815002" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:45.816258" elapsed="0.000087"/>
</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-19T01:40:45.823960" 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-19T01:40:45.824558" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:45.824902" 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-19T01:40:45.819138" elapsed="0.005984"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:45.453255" elapsed="0.372105"/>
</kw>
<msg time="2026-04-19T01:40:45.825729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:45.452217" elapsed="0.373569"/>
</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-19T01:40:45.451452" elapsed="0.374420"/>
</kw>
<msg time="2026-04-19T01:40:45.825913" 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-19T01:40:45.450592" elapsed="0.375367"/>
</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-19T01:40:45.829003" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T01:40:45.829519" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:45.829816" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:45.826264" elapsed="0.003701"/>
</kw>
<msg time="2026-04-19T01:40:45.830072" level="INFO">${output} = 1</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-19T01:40:45.448595" elapsed="0.381504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:45.830521" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:45.830273" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:45.830608" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:45.830759" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:45.446474" elapsed="0.384439"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:45.830964" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:40:45.831127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:45.444295" elapsed="0.386857"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:45.831700" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:45.831310" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:45.443248" elapsed="0.388633">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:47.835350" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:47.834588" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:47.837457" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:47.836818" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:47.839321" 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-19T01:40:47.839546" 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-19T01:40:47.838968" elapsed="0.000637"/>
</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-19T01:40:47.845595" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:47.844870" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:47.844812" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:47.847213" 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-19T01:40:47.847456" 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-19T01:40:47.846742" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:47.849112" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:47.848543" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:47.851188" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:47.850479" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:47.853521" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:47.853600" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:47.853238" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:47.853833" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:47.855518" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:48.426058" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:47.854953" elapsed="0.571256"/>
</kw>
<msg time="2026-04-19T01:40:48.426296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:47.854590" elapsed="0.571798"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:47.852466" elapsed="0.574206"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:48.428174" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:48.450777" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:48.451021" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:48.451190" 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-19T01:40:48.427772" elapsed="0.023513"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:48.452264" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:48.453694" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:48.453236" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:48.454217" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:48.453960" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:48.453903" elapsed="0.000446"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:48.454695" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:40:48.454493" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:48.454444" elapsed="0.000410"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:48.454935" 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-19T01:40:48.459630" elapsed="0.000974"/>
</kw>
<kw name="Open 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-19T01:40:48.461119" elapsed="0.000368"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:48.462154" 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-19T01:40:48.456269" elapsed="0.006110"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:47.843476" elapsed="0.619125"/>
</kw>
<msg time="2026-04-19T01:40:48.462902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:47.842528" elapsed="0.620433"/>
</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-19T01:40:47.841233" elapsed="0.621837"/>
</kw>
<msg time="2026-04-19T01:40:48.463120" 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-19T01:40:47.839954" elapsed="0.623214"/>
</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-19T01:40:48.466218" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:40:48.466702" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:48.467007" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:48.463519" elapsed="0.003665"/>
</kw>
<msg time="2026-04-19T01:40:48.467279" level="INFO">${output} = 1</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-19T01:40:47.838001" elapsed="0.629304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:48.467747" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:48.467492" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:48.467835" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:40:48.467991" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:47.835875" elapsed="0.632141"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:48.468088" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:40:48.468237" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:47.833719" elapsed="0.634543"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:48.468817" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:48.468420" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:47.832666" elapsed="0.636335">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:50.472526" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:50.471754" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:50.474622" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:50.473983" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:50.476504" 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-19T01:40:50.476733" 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-19T01:40:50.476174" elapsed="0.000620"/>
</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-19T01:40:50.485102" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:50.484615" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:50.484313" elapsed="0.000930"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:50.486693" 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-19T01:40:50.486936" 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-19T01:40:50.486223" elapsed="0.000841"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:50.488646" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:50.488104" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:50.490435" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:50.489719" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:50.492918" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:50.492996" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:50.492637" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:50.493247" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:50.494570" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:50.806958" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:50.494242" elapsed="0.312837"/>
</kw>
<msg time="2026-04-19T01:40:50.807149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:50.493864" elapsed="0.313362"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:50.491735" elapsed="0.315733"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:50.808844" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:50.831672" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:50.832207" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:50.832538" 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-19T01:40:50.808491" elapsed="0.024259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:50.835073" elapsed="0.000856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:50.837432" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:50.836770" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:50.838188" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:50.837817" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:50.837734" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:50.838892" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T01:40:50.838588" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:50.838519" elapsed="0.000726"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:50.839360" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:50.846229" elapsed="0.000488"/>
</kw>
<kw name="Open 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-19T01:40:50.847114" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:50.847641" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:50.841281" elapsed="0.006663"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:50.481415" elapsed="0.366775"/>
</kw>
<msg time="2026-04-19T01:40:50.848497" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:50.479825" elapsed="0.368732"/>
</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-19T01:40:50.478432" elapsed="0.370207"/>
</kw>
<msg time="2026-04-19T01:40:50.848680" 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-19T01:40:50.477225" elapsed="0.371501"/>
</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-19T01:40:50.851781" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:40:50.852276" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:50.852649" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:50.849015" elapsed="0.003781"/>
</kw>
<msg time="2026-04-19T01:40:50.852949" level="INFO">${output} = 1</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-19T01:40:50.475198" elapsed="0.377777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:50.853435" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:50.853175" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:50.853523" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:40:50.853677" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:50.473076" elapsed="0.380626"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:50.853749" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:40:50.853893" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:50.470876" elapsed="0.383041"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:50.854486" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:50.854090" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:50.469815" elapsed="0.384857">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:52.858324" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:52.857537" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:52.860449" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:52.859801" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:52.862305" 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-19T01:40:52.862465" 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-19T01:40:52.862046" elapsed="0.000457"/>
</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-19T01:40:52.869082" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:52.868268" elapsed="0.000960"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:52.867748" elapsed="0.001568"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:52.871623" 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-19T01:40:52.872044" 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-19T01:40:52.870815" elapsed="0.001380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:52.874535" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:52.873769" elapsed="0.000889"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:52.876573" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:52.875728" elapsed="0.000947"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:52.879361" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:52.879440" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:52.878819" elapsed="0.000645"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:52.879680" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:52.880996" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:53.182871" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:52.880654" elapsed="0.302437"/>
</kw>
<msg time="2026-04-19T01:40:53.183171" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:52.880287" elapsed="0.302967"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:52.877983" elapsed="0.305532"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:53.184998" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:53.207048" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:53.207276" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:53.207426" 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-19T01:40:53.184583" elapsed="0.022937"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:53.208519" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:53.209966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:53.209525" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:53.210501" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:53.210251" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:53.210193" elapsed="0.000445"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:53.210982" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T01:40:53.210782" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:53.210733" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:53.211236" 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-19T01:40:53.217540" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:53.218102" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:53.218454" 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-19T01:40:53.212540" elapsed="0.006118"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:52.865628" elapsed="0.353249"/>
</kw>
<msg time="2026-04-19T01:40:53.219201" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:52.864555" elapsed="0.354702"/>
</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-19T01:40:52.863706" elapsed="0.355630"/>
</kw>
<msg time="2026-04-19T01:40:53.219375" 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-19T01:40:52.862840" elapsed="0.356580"/>
</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-19T01:40:53.222494" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:40:53.222967" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:53.223278" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:53.219706" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T01:40:53.223515" level="INFO">${output} = 1</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-19T01:40:52.861106" elapsed="0.362433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:53.223959" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:53.223714" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:53.224060" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:40:53.224211" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:52.858850" elapsed="0.365386"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:53.224280" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:40:53.224419" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:52.856675" elapsed="0.367768"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:53.225131" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:53.224651" elapsed="0.000557">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:52.855634" elapsed="0.369683">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:55.229059" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:55.228232" elapsed="0.000905"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:55.231259" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:55.230565" elapsed="0.000754"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:55.232782" 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-19T01:40:55.232934" 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-19T01:40:55.232526" elapsed="0.000445"/>
</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-19T01:40:55.238486" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:55.237816" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:55.237733" elapsed="0.000948"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:55.296578" 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-19T01:40:55.296945" 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-19T01:40:55.240098" elapsed="0.056975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:55.298849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:55.298172" elapsed="0.000791"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:55.300716" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:55.299982" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:55.303275" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:55.303354" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:55.302922" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:55.303597" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:55.304906" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:55.668575" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:55.304581" elapsed="0.364249"/>
</kw>
<msg time="2026-04-19T01:40:55.668995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:55.304212" elapsed="0.365000"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:55.302118" elapsed="0.367697"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:55.672162" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:55.695340" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:55.695858" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:55.696249" 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-19T01:40:55.671727" elapsed="0.024740"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:55.698706" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:55.700947" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:55.700319" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:55.701719" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:55.701370" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:55.701286" 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-19T01:40:55.702419" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T01:40:55.702135" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:55.702063" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:55.702775" elapsed="0.000056"/>
</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-19T01:40:55.709512" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T01:40:55.710292" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:55.710821" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:55.704662" elapsed="0.006484"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:55.235857" elapsed="0.475556"/>
</kw>
<msg time="2026-04-19T01:40:55.711723" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:55.234804" elapsed="0.476980"/>
</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-19T01:40:55.234059" elapsed="0.477808"/>
</kw>
<msg time="2026-04-19T01:40:55.711910" 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-19T01:40:55.233304" elapsed="0.478652"/>
</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-19T01:40:55.715166" 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-19T01:40:55.715645" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:55.715938" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:55.712262" elapsed="0.003841"/>
</kw>
<msg time="2026-04-19T01:40:55.716193" level="INFO">${output} = 1</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-19T01:40:55.231800" elapsed="0.484418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:55.716688" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:55.716399" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:55.716777" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:40:55.716928" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:55.229621" elapsed="0.487332"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:55.717000" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:40:55.717160" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:55.227368" elapsed="0.489816"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:55.717748" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:55.717342" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:55.226210" elapsed="0.491734">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:40:57.721993" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:40:57.720880" elapsed="0.001215"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:40:57.724341" level="INFO">${member_ip} = 10.30.171.206</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-19T01:40:57.723702" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:57.726332" 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-19T01:40:57.726481" 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-19T01:40:57.725980" elapsed="0.000538"/>
</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-19T01:40:57.732252" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:40:57.731584" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:57.731506" elapsed="0.000937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:57.734476" 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-19T01:40:57.734817" 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-19T01:40:57.733839" elapsed="0.001121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:57.737128" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:57.736347" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:40:57.739306" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:40:57.738590" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:40:57.741755" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:40:57.741834" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:40:57.741445" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:57.742213" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:40:57.743469" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:40:58.073941" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:40:57.743143" elapsed="0.330969"/>
</kw>
<msg time="2026-04-19T01:40:58.074198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:57.742770" elapsed="0.331519"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:40:57.740619" elapsed="0.333951"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:40:58.076092" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:40:58.099149" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:40:58.099651" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:40:58.099981" 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-19T01:40:58.075683" elapsed="0.024554"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:58.102526" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:58.105994" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:58.104672" elapsed="0.001702"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:58.107381" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:40:58.106727" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:58.106602" elapsed="0.001078"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:40:58.108495" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:40:58.108008" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T01:40:58.107897" elapsed="0.000956"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:40:58.109089" elapsed="0.000101"/>
</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-19T01:40:58.116751" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T01:40:58.117347" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:58.117709" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:58.112277" elapsed="0.005646"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:40:57.729301" elapsed="0.388945"/>
</kw>
<msg time="2026-04-19T01:40:58.118701" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:40:57.728264" elapsed="0.390497"/>
</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-19T01:40:57.727494" elapsed="0.391350"/>
</kw>
<msg time="2026-04-19T01:40:58.118885" 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-19T01:40:57.726748" elapsed="0.392184"/>
</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-19T01:40:58.122157" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:40:58.122637" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:40:58.122941" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:40:58.119241" elapsed="0.003868"/>
</kw>
<msg time="2026-04-19T01:40:58.123203" level="INFO">${output} = 1</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-19T01:40:57.724890" elapsed="0.398339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:40:58.123663" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:40:58.123414" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:40:58.123750" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:40:58.123901" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:40:57.722734" elapsed="0.401191"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:40:58.123973" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:40:58.124134" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:40:57.720018" elapsed="0.404141"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:40:58.124703" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:40:58.124313" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:40:57.718805" elapsed="0.406083">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:00.128482" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:00.127689" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:00.130589" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:00.129950" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:00.132483" 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-19T01:41:00.132859" 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-19T01:41:00.132105" elapsed="0.000816"/>
</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-19T01:41:00.138687" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:00.138023" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:00.137946" elapsed="0.000939"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:00.140925" 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-19T01:41:00.141307" 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-19T01:41:00.140287" elapsed="0.001166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:00.143646" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:00.142869" elapsed="0.000933"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:00.146189" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:00.145345" elapsed="0.000945"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:00.148602" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:00.148681" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:00.148275" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:00.148921" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:00.150339" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:00.502715" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:40:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:00.149865" elapsed="0.353011"/>
</kw>
<msg time="2026-04-19T01:41:00.502965" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:00.149506" elapsed="0.353573"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:00.147487" elapsed="0.355887"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:00.504912" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:00.527555" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:00.528096" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:00.528476" 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-19T01:41:00.504505" elapsed="0.024179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:00.530896" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:00.534166" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:00.533103" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:00.535292" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:00.534750" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:00.534625" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:00.536424" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:41:00.535902" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:00.535796" elapsed="0.000976"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:00.536947" elapsed="0.000139"/>
</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-19T01:41:00.541972" 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-19T01:41:00.542683" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:00.543064" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:00.538610" elapsed="0.004663"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:00.135745" elapsed="0.407746"/>
</kw>
<msg time="2026-04-19T01:41:00.543792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:00.134794" elapsed="0.409055"/>
</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-19T01:41:00.134018" elapsed="0.409916"/>
</kw>
<msg time="2026-04-19T01:41:00.543976" 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-19T01:41:00.133295" elapsed="0.410742"/>
</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-19T01:41:00.547120" 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-19T01:41:00.547700" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:00.548009" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:00.544355" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T01:41:00.548286" level="INFO">${output} = 1</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-19T01:41:00.131162" elapsed="0.417149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:00.548737" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:00.548490" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:00.548825" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:00.548978" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:00.129004" elapsed="0.419999"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:00.549078" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:41:00.549224" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:00.126853" elapsed="0.422395"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:00.549797" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:00.549404" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:00.125783" elapsed="0.424200">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:02.553616" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:02.552851" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:02.555767" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:02.555102" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:02.557283" 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-19T01:41:02.557427" 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-19T01:41:02.557053" elapsed="0.000412"/>
</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-19T01:41:02.563124" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:02.562468" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:02.562389" elapsed="0.001033"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:02.565459" 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-19T01:41:02.565800" 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-19T01:41:02.564811" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:02.568181" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:02.567366" elapsed="0.000972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:02.570160" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:02.569346" elapsed="0.000916"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:02.572549" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:02.572633" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:02.572259" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:02.572874" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:02.574302" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:02.896054" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:02.573818" elapsed="0.322370"/>
</kw>
<msg time="2026-04-19T01:41:02.896269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:02.573457" elapsed="0.322901"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:02.571476" elapsed="0.325146"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:02.898088" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:02.920512" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:02.921012" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:02.921397" 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-19T01:41:02.897686" elapsed="0.023923"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:02.923874" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:02.927011" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:02.926071" elapsed="0.001334"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:02.928287" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:02.927757" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:02.927634" elapsed="0.000949"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:02.929381" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:41:02.928901" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:02.928794" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:02.929907" elapsed="0.000081"/>
</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-19T01:41:02.936141" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:41:02.936690" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:02.937062" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:02.932745" elapsed="0.004526"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:02.560171" elapsed="0.377319"/>
</kw>
<msg time="2026-04-19T01:41:02.937964" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:02.559180" elapsed="0.378844"/>
</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-19T01:41:02.558418" elapsed="0.379719"/>
</kw>
<msg time="2026-04-19T01:41:02.938179" 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-19T01:41:02.557688" elapsed="0.380538"/>
</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-19T01:41:02.941279" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:41:02.941757" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:02.942080" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:02.938518" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T01:41:02.942324" level="INFO">${output} = 1</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-19T01:41:02.556348" elapsed="0.386005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:02.942782" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:02.942533" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:02.942873" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:02.943099" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:02.554168" elapsed="0.388961"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:02.943178" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:41:02.943352" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:02.551985" elapsed="0.391393"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:02.943929" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:02.943535" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:02.550887" elapsed="0.393240">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:04.947928" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:04.947162" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:04.950065" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:04.949423" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:04.951773" 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-19T01:41:04.951920" 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-19T01:41:04.951534" elapsed="0.000423"/>
</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-19T01:41:04.957792" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:04.957107" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:04.956657" elapsed="0.001351"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:04.960138" 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-19T01:41:04.960481" 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-19T01:41:04.959481" elapsed="0.001142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:04.962898" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:04.962106" elapsed="0.000970"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:04.964956" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:04.964247" elapsed="0.000932"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:04.967476" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:04.967553" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:04.967185" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:04.967788" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:04.969222" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:05.317611" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:04.968744" elapsed="0.348948"/>
</kw>
<msg time="2026-04-19T01:41:05.317752" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:04.968376" elapsed="0.349446"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:04.966386" elapsed="0.351681"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:05.319419" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:05.342153" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:05.342670" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:05.343001" 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-19T01:41:05.319098" elapsed="0.024151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:05.345429" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:05.348465" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:05.347679" elapsed="0.000929"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:05.349203" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:05.348817" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:05.348744" elapsed="0.000646"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:05.349897" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T01:41:05.349616" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:05.349547" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:05.350245" elapsed="0.000050"/>
</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-19T01:41:05.356710" elapsed="0.000632"/>
</kw>
<kw name="Open 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-19T01:41:05.357644" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:05.358149" 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-19T01:41:05.352019" elapsed="0.006419"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:04.954730" elapsed="0.404048"/>
</kw>
<msg time="2026-04-19T01:41:05.359212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:04.953725" elapsed="0.405565"/>
</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-19T01:41:04.952958" elapsed="0.406444"/>
</kw>
<msg time="2026-04-19T01:41:05.359451" 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-19T01:41:04.952204" elapsed="0.407293"/>
</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-19T01:41:05.362549" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T01:41:05.363053" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:05.363351" 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-19T01:41:05.359863" elapsed="0.003635"/>
</kw>
<msg time="2026-04-19T01:41:05.363587" level="INFO">${output} = 1</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-19T01:41:04.950601" elapsed="0.413011"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:05.364056" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:05.363786" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:05.364147" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:05.364296" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:04.948486" elapsed="0.415834"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:05.364367" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:41:05.364508" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:04.946286" elapsed="0.418246"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:05.365152" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:05.364686" elapsed="0.000542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:04.945022" elapsed="0.420316">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:07.369125" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:07.368307" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:07.371276" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:07.370635" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:07.373181" 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-19T01:41:07.373442" 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-19T01:41:07.372803" elapsed="0.000703"/>
</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-19T01:41:07.382740" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:07.381800" elapsed="0.001060"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:07.381245" elapsed="0.001703"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:07.385148" 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-19T01:41:07.385491" 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-19T01:41:07.384474" elapsed="0.001158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:07.387847" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:07.387060" elapsed="0.000945"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:07.390589" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:07.389546" elapsed="0.001181"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:07.394129" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:07.394267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:07.393709" elapsed="0.000594"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:07.394621" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:07.395983" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:07.693013" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:07.395657" elapsed="0.297520"/>
</kw>
<msg time="2026-04-19T01:41:07.693262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:07.395293" elapsed="0.298055"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:07.392637" elapsed="0.300994"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:07.695138" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:07.718268" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:07.718891" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:07.719310" 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-19T01:41:07.694733" elapsed="0.024812"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:07.722108" elapsed="0.000840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:07.724524" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:07.723786" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:07.725423" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:07.724974" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:07.724873" elapsed="0.000740"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:07.726132" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T01:41:07.725822" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:07.725752" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:07.726528" elapsed="0.000055"/>
</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-19T01:41:07.733290" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T01:41:07.734246" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:07.734756" 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-19T01:41:07.728474" elapsed="0.006503"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:07.378263" elapsed="0.356959"/>
</kw>
<msg time="2026-04-19T01:41:07.735542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:07.376647" elapsed="0.358958"/>
</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-19T01:41:07.375343" elapsed="0.360347"/>
</kw>
<msg time="2026-04-19T01:41:07.735733" 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-19T01:41:07.373896" elapsed="0.361884"/>
</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-19T01:41:07.738819" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:41:07.739324" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:07.739625" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:07.736108" elapsed="0.003667"/>
</kw>
<msg time="2026-04-19T01:41:07.739936" level="INFO">${output} = 1</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-19T01:41:07.371835" elapsed="0.368128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:07.740445" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:07.740182" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:07.740538" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:41:07.740702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:07.369658" elapsed="0.371070"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:07.740778" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:41:07.740929" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:07.367432" elapsed="0.373523"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:07.741609" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:07.741200" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:07.366306" elapsed="0.375489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:09.745284" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:09.744525" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:09.747199" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:09.746792" elapsed="0.000445"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:09.748361" 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-19T01:41:09.748504" 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-19T01:41:09.748141" elapsed="0.000400"/>
</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-19T01:41:09.756696" elapsed="0.000097"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:09.755768" elapsed="0.001126"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:09.753072" elapsed="0.003952"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:09.760814" 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-19T01:41:09.761406" 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-19T01:41:09.759617" elapsed="0.002018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:09.765167" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:09.763867" elapsed="0.001541"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:09.769374" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:09.767632" elapsed="0.001958"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:09.773472" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:09.773589" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:09.773060" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:09.773972" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:09.775462" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:10.079474" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:09.775137" elapsed="0.304679"/>
</kw>
<msg time="2026-04-19T01:41:10.079962" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:09.774760" elapsed="0.305376"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:09.771746" elapsed="0.308922"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:10.083444" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:10.106553" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:10.107087" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:10.107419" 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-19T01:41:10.082899" elapsed="0.024729"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:10.109841" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:10.113258" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:10.112094" elapsed="0.001393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:10.114390" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:10.113837" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:10.113714" elapsed="0.000968"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:10.115637" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:41:10.115188" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:10.115073" elapsed="0.000923"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:10.116386" 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-19T01:41:10.122416" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:10.122968" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:10.123354" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:10.118997" elapsed="0.004567"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:09.751249" elapsed="0.372538"/>
</kw>
<msg time="2026-04-19T01:41:10.124157" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:09.750291" elapsed="0.373925"/>
</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-19T01:41:09.749500" elapsed="0.374800"/>
</kw>
<msg time="2026-04-19T01:41:10.124341" 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-19T01:41:09.748764" elapsed="0.375624"/>
</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-19T01:41:10.127367" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:41:10.127843" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:10.128239" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:10.124677" elapsed="0.003713"/>
</kw>
<msg time="2026-04-19T01:41:10.128486" level="INFO">${output} = 1</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-19T01:41:09.747544" elapsed="0.380968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:10.128951" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:10.128699" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:10.129059" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:10.129215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:09.745806" elapsed="0.383434"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:10.129287" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:41:10.129431" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:09.743656" elapsed="0.385800"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:10.130142" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:10.129690" elapsed="0.000528">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:09.742610" elapsed="0.387722">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:12.133968" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:12.133181" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:12.136111" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:12.135478" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:12.137950" 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-19T01:41:12.138212" 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-19T01:41:12.137596" elapsed="0.000675"/>
</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-19T01:41:12.144625" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:12.144150" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:12.144090" elapsed="0.000679"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:12.146495" 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-19T01:41:12.146742" 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-19T01:41:12.145777" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:12.148405" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:12.147833" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:12.150234" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:12.149493" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:12.152692" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:12.152768" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:12.152403" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:12.153000" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:12.154318" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:12.457282" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:12.153957" elapsed="0.303485"/>
</kw>
<msg time="2026-04-19T01:41:12.457556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:12.153571" elapsed="0.304094"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:12.151547" elapsed="0.306562"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:12.459792" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:12.482567" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:12.483172" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:12.483510" 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-19T01:41:12.459395" elapsed="0.024337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:12.486070" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:12.489347" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:12.488328" elapsed="0.001254"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:12.490535" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:12.489970" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:12.489842" elapsed="0.001017"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:12.491704" elapsed="0.000141"/>
</return>
<status status="PASS" start="2026-04-19T01:41:12.491232" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:12.491104" elapsed="0.001160"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:12.492453" elapsed="0.000089"/>
</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-19T01:41:12.500803" 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-19T01:41:12.501376" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:12.501788" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:12.495486" elapsed="0.006515"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:12.142740" elapsed="0.359507"/>
</kw>
<msg time="2026-04-19T01:41:12.502564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:12.141070" elapsed="0.361555"/>
</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-19T01:41:12.139787" elapsed="0.362924"/>
</kw>
<msg time="2026-04-19T01:41:12.502753" 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-19T01:41:12.138621" elapsed="0.364179"/>
</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-19T01:41:12.505926" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:41:12.506429" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:12.506738" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:12.503117" elapsed="0.003771"/>
</kw>
<msg time="2026-04-19T01:41:12.506982" level="INFO">${output} = 1</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-19T01:41:12.136650" elapsed="0.370357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:12.507461" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:12.507209" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:12.507560" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:41:12.507720" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:12.134530" elapsed="0.373216"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:12.507793" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:41:12.507939" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:12.132330" elapsed="0.375634"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:12.508600" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:12.508140" elapsed="0.000542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:12.131233" elapsed="0.377587">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:14.512333" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:14.511566" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:14.514643" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:14.513976" elapsed="0.000727"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:14.516557" 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-19T01:41:14.516788" 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-19T01:41:14.516226" elapsed="0.000622"/>
</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-19T01:41:14.522944" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:14.522313" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:14.522236" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:14.525436" 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-19T01:41:14.525808" 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-19T01:41:14.524502" elapsed="0.001453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:14.528101" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:14.527319" elapsed="0.000944"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:14.530731" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:14.529739" elapsed="0.001127"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:14.533232" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:14.533312" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:14.532831" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:14.533545" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:14.534813" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:14.883299" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:14.534488" elapsed="0.348903"/>
</kw>
<msg time="2026-04-19T01:41:14.883457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:14.534122" elapsed="0.349418"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:14.532065" elapsed="0.351718"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:14.885161" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:14.907706" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:14.908276" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:14.908606" 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-19T01:41:14.884803" elapsed="0.024034"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:14.911106" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:14.914285" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:14.913275" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:14.915255" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:14.914829" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:14.914740" elapsed="0.000704"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:14.915939" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T01:41:14.915648" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:14.915579" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:14.916306" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:14.923202" elapsed="0.000447"/>
</kw>
<kw name="Open 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-19T01:41:14.923943" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:14.924456" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:14.918488" elapsed="0.006260"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:14.520373" elapsed="0.404807"/>
</kw>
<msg time="2026-04-19T01:41:14.925601" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:14.519413" elapsed="0.406268"/>
</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-19T01:41:14.518564" elapsed="0.407274"/>
</kw>
<msg time="2026-04-19T01:41:14.925896" 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-19T01:41:14.517235" elapsed="0.408728"/>
</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-19T01:41:14.929259" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:41:14.929751" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:14.930066" 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-19T01:41:14.926394" elapsed="0.003826"/>
</kw>
<msg time="2026-04-19T01:41:14.930312" level="INFO">${output} = 1</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-19T01:41:14.515271" elapsed="0.415067"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:14.930769" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:14.930519" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:14.930857" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:14.931012" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:14.513009" elapsed="0.418043"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:14.931101" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:41:14.931248" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:14.510732" elapsed="0.420541"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:14.931827" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:14.931430" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:14.509668" elapsed="0.422340">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:16.935657" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:16.934862" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:16.937820" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:16.937158" elapsed="0.000735"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:16.939387" 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-19T01:41:16.939746" 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-19T01:41:16.939166" elapsed="0.000619"/>
</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-19T01:41:16.945226" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:16.944562" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:16.944484" elapsed="0.000937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:16.947798" 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-19T01:41:16.948192" 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-19T01:41:16.946842" elapsed="0.001489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:16.950694" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:16.949692" elapsed="0.001178"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:16.952859" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:16.951901" elapsed="0.001057"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:16.955277" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:16.955356" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:16.954975" 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-19T01:41:16.955593" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:16.956980" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:17.263781" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:16.956654" elapsed="0.307274"/>
</kw>
<msg time="2026-04-19T01:41:17.264012" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:16.956295" elapsed="0.307826"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:16.954202" elapsed="0.310198"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:17.266104" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:17.289143" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:17.289638" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:17.290019" 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-19T01:41:17.265671" elapsed="0.024603"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:17.292496" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:17.295705" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:17.294686" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:17.296827" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:17.296325" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:17.296197" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:17.297976" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T01:41:17.297479" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:17.297371" elapsed="0.000993"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:17.298539" 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-19T01:41:17.305281" 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-19T01:41:17.306177" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:17.306677" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:17.300652" elapsed="0.006351"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:16.942632" elapsed="0.364671"/>
</kw>
<msg time="2026-04-19T01:41:17.307610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:16.941649" elapsed="0.366020"/>
</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-19T01:41:16.940837" elapsed="0.366916"/>
</kw>
<msg time="2026-04-19T01:41:17.307796" 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-19T01:41:16.940085" elapsed="0.367759"/>
</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-19T01:41:17.310824" 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-19T01:41:17.311397" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:17.311695" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:17.308153" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T01:41:17.311943" level="INFO">${output} = 1</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-19T01:41:16.938415" elapsed="0.373554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:17.312413" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:17.312163" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:17.312500" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:17.312653" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:16.936214" elapsed="0.376464"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:17.312725" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:41:17.312868" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:16.934013" elapsed="0.378879"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:17.313461" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:17.313067" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:16.932863" elapsed="0.380782">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:19.317156" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:19.316394" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:19.319312" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:19.318674" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:19.321173" 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-19T01:41:19.321402" 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-19T01:41:19.320789" elapsed="0.000673"/>
</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-19T01:41:19.326675" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:19.326043" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:19.325714" elapsed="0.001156"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:19.328328" 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-19T01:41:19.328573" 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-19T01:41:19.327867" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:19.330253" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:19.329640" elapsed="0.000721"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:19.332020" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:19.331331" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:19.334470" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:19.334549" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:19.334185" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:19.334782" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:19.336060" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:19.644852" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:19.335719" elapsed="0.309248"/>
</kw>
<msg time="2026-04-19T01:41:19.645056" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:19.335355" elapsed="0.309783"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:19.333318" elapsed="0.312072"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:19.646844" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:19.669693" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:19.670286" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:19.670621" 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-19T01:41:19.646479" elapsed="0.024351"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:19.673166" elapsed="0.001022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:19.676064" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:19.675422" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:19.676776" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:19.676442" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:19.676358" elapsed="0.000608"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:19.677499" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:41:19.677208" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:19.677136" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:19.677846" elapsed="0.000056"/>
</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-19T01:41:19.684538" 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-19T01:41:19.685327" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:19.685829" elapsed="0.000246"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:19.679833" elapsed="0.006410"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:19.324372" elapsed="0.362203"/>
</kw>
<msg time="2026-04-19T01:41:19.687185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:19.323663" elapsed="0.363586"/>
</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-19T01:41:19.323052" elapsed="0.364281"/>
</kw>
<msg time="2026-04-19T01:41:19.687374" 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-19T01:41:19.321812" elapsed="0.365608"/>
</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-19T01:41:19.690376" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:41:19.690852" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:19.691212" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:19.687710" elapsed="0.003654"/>
</kw>
<msg time="2026-04-19T01:41:19.691455" level="INFO">${output} = 1</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-19T01:41:19.319852" elapsed="0.371628"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:19.691907" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:19.691660" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:19.691994" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:19.692227" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:19.317677" elapsed="0.374577"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:19.692303" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:41:19.692450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:19.315554" elapsed="0.376921"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:19.693042" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:19.692631" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:19.314519" elapsed="0.378710">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:21.696991" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:21.696211" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:21.699221" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:21.698579" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:21.701111" 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-19T01:41:21.701543" 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-19T01:41:21.700734" elapsed="0.000872"/>
</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-19T01:41:21.707731" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:21.707087" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:21.706671" elapsed="0.001255"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:21.709939" 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-19T01:41:21.710362" 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-19T01:41:21.709324" elapsed="0.001182"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:21.712319" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:21.711710" elapsed="0.000721"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:21.714580" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:21.713685" elapsed="0.000992"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:21.716954" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:21.717047" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:21.716657" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:21.717289" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:21.718633" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:22.036858" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:21.718306" elapsed="0.318699"/>
</kw>
<msg time="2026-04-19T01:41:22.037106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:21.717848" elapsed="0.319347"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:21.715879" elapsed="0.321597"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:22.038981" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:22.062235" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:22.062819" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:22.063294" 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-19T01:41:22.038591" elapsed="0.024945"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:22.065812" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:22.069081" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:22.068076" elapsed="0.001241"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:22.070304" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:22.069675" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:22.069549" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:22.071514" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T01:41:22.070938" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:22.070830" elapsed="0.001049"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:22.072225" elapsed="0.000095"/>
</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-19T01:41:22.079623" 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-19T01:41:22.080249" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:22.080617" 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-19T01:41:22.075316" elapsed="0.005516"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:21.704761" elapsed="0.376315"/>
</kw>
<msg time="2026-04-19T01:41:22.081404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:21.703670" elapsed="0.377796"/>
</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-19T01:41:21.702878" elapsed="0.378674"/>
</kw>
<msg time="2026-04-19T01:41:22.081594" 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-19T01:41:21.702103" elapsed="0.379539"/>
</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-19T01:41:22.084839" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T01:41:22.085352" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:22.085652" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:22.082070" elapsed="0.003734"/>
</kw>
<msg time="2026-04-19T01:41:22.085898" level="INFO">${output} = 1</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-19T01:41:21.699766" elapsed="0.386158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:22.086552" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:22.086123" elapsed="0.000475"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:22.086643" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:22.086803" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:21.697565" elapsed="0.389264"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:22.086879" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:41:22.087041" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:21.695365" elapsed="0.391703"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:22.087630" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:22.087227" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:21.694282" elapsed="0.393570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:24.091425" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:24.090656" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:24.093537" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:24.092901" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:24.095372" 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-19T01:41:24.095518" 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-19T01:41:24.095113" elapsed="0.000443"/>
</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-19T01:41:24.103511" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:24.102820" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:24.100189" elapsed="0.003518"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:24.105678" 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-19T01:41:24.106016" 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-19T01:41:24.105070" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:24.108010" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:24.107466" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:24.109789" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:24.109100" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:24.112243" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:24.112323" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:24.111940" 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-19T01:41:24.112560" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:24.113891" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:24.419271" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:24.113566" elapsed="0.305850"/>
</kw>
<msg time="2026-04-19T01:41:24.419500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:24.113199" elapsed="0.306391"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:24.111184" elapsed="0.308683"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:24.421362" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:24.444223" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:24.444712" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:24.445090" 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-19T01:41:24.420959" elapsed="0.024349"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:24.447508" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:24.450684" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:24.449622" elapsed="0.001291"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:24.451536" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:24.451215" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:24.451135" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:24.452224" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:41:24.451922" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:24.451856" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:24.452554" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:24.459166" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T01:41:24.459924" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:24.460441" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:24.454506" elapsed="0.006221"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:24.098248" elapsed="0.362806"/>
</kw>
<msg time="2026-04-19T01:41:24.461474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:24.097286" elapsed="0.364268"/>
</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-19T01:41:24.096516" elapsed="0.365151"/>
</kw>
<msg time="2026-04-19T01:41:24.461725" 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-19T01:41:24.095779" elapsed="0.366009"/>
</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-19T01:41:24.465342" 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-19T01:41:24.465821" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:24.466133" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:24.462358" elapsed="0.003925"/>
</kw>
<msg time="2026-04-19T01:41:24.466435" level="INFO">${output} = 1</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-19T01:41:24.094109" elapsed="0.372352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:24.466908" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:24.466657" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:24.466995" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:24.467229" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:24.091954" elapsed="0.375300"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:24.467300" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:41:24.467442" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:24.089780" elapsed="0.377686"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:24.468013" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:24.467622" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:24.088716" elapsed="0.379497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:26.471765" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:26.470982" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:26.473914" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:26.473311" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:26.475787" 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-19T01:41:26.476012" 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-19T01:41:26.475463" elapsed="0.000639"/>
</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-19T01:41:26.481145" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:26.480655" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:26.480597" elapsed="0.000688"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:26.482985" 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-19T01:41:26.483257" 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-19T01:41:26.482282" elapsed="0.001077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:26.485210" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:26.484640" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:26.487057" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:26.486313" elapsed="0.000849"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:26.489496" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:26.489572" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:26.489215" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:26.489805" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:26.491100" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:26.811760" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:26.490746" elapsed="0.321242"/>
</kw>
<msg time="2026-04-19T01:41:26.812085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:26.490382" elapsed="0.321788"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:26.488443" elapsed="0.323993"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:26.813961" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:26.836895" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:26.837605" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:26.837975" 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-19T01:41:26.813551" elapsed="0.024694"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:26.840609" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:26.843918" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:26.842913" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:26.845138" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:26.844587" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:26.844460" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:26.846437" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T01:41:26.845797" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:26.845684" elapsed="0.001128"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:26.847088" elapsed="0.000101"/>
</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-19T01:41:26.852068" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T01:41:26.852628" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:26.852994" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:26.848546" elapsed="0.004682"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:26.479258" elapsed="0.374203"/>
</kw>
<msg time="2026-04-19T01:41:26.853856" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:26.478517" elapsed="0.375413"/>
</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-19T01:41:26.477726" elapsed="0.376293"/>
</kw>
<msg time="2026-04-19T01:41:26.854129" 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-19T01:41:26.476457" elapsed="0.377726"/>
</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-19T01:41:26.857198" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:41:26.857677" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:26.857987" elapsed="0.000216"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:26.854482" elapsed="0.003776"/>
</kw>
<msg time="2026-04-19T01:41:26.858352" level="INFO">${output} = 1</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-19T01:41:26.474488" elapsed="0.383890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:26.858811" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:26.858557" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:26.858915" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:26.859090" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:26.472354" elapsed="0.386763"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:26.859166" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T01:41:26.859355" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:26.470108" elapsed="0.389279"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:26.860055" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:26.859601" elapsed="0.000541">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:26.469001" elapsed="0.391271">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:28.863740" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:28.862947" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:28.865858" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:28.865248" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:28.867911" 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-19T01:41:28.868173" 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-19T01:41:28.867432" elapsed="0.000792"/>
</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-19T01:41:28.873449" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:28.872801" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:28.872724" elapsed="0.000918"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:28.875953" 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-19T01:41:28.876360" 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-19T01:41:28.874988" elapsed="0.001511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:28.878626" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:28.877839" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:28.880931" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:28.880245" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:28.883469" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:28.883548" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:28.882995" elapsed="0.000577"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:28.883782" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:28.885058" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:29.201050" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:28.884718" elapsed="0.316476"/>
</kw>
<msg time="2026-04-19T01:41:29.201278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:28.884356" elapsed="0.317006"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:28.882236" elapsed="0.319402"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:29.203119" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:29.226113" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:29.226340" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:29.226488" 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-19T01:41:29.202718" elapsed="0.023863"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:29.227584" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:29.228985" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:29.228550" elapsed="0.000556"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:29.229510" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:29.229271" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:29.229212" elapsed="0.000431"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:29.229986" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:41:29.229786" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:29.229738" elapsed="0.000428"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:29.230252" 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-19T01:41:29.234932" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:29.235594" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:29.235950" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:29.231666" elapsed="0.004517"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:28.870884" elapsed="0.365519"/>
</kw>
<msg time="2026-04-19T01:41:29.236705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:28.869929" elapsed="0.366833"/>
</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-19T01:41:28.869177" elapsed="0.367668"/>
</kw>
<msg time="2026-04-19T01:41:29.236885" 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-19T01:41:28.868445" elapsed="0.368486"/>
</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-19T01:41:29.239984" 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-19T01:41:29.240475" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:29.240768" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:29.237235" elapsed="0.003681"/>
</kw>
<msg time="2026-04-19T01:41:29.241007" level="INFO">${output} = 1</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-19T01:41:28.866437" elapsed="0.374610"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:29.241477" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:29.241228" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:29.241564" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:29.241717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:28.864302" elapsed="0.377440"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:29.241789" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:41:29.241935" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:28.862133" elapsed="0.379826"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:29.242524" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:29.242132" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:28.861087" elapsed="0.381622">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:31.246447" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:31.245641" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:31.248782" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:31.248341" elapsed="0.000481"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:31.250073" 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-19T01:41:31.250223" 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-19T01:41:31.249809" elapsed="0.000451"/>
</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-19T01:41:31.255938" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:31.255254" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:31.255171" elapsed="0.001033"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:31.258727" 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-19T01:41:31.259150" 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-19T01:41:31.257624" elapsed="0.001676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:31.261340" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:31.260729" elapsed="0.000724"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:31.263202" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:31.262448" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:31.265749" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:31.265832" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:31.265435" 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-19T01:41:31.266116" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:31.267691" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:31.580417" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:31.267303" elapsed="0.313274"/>
</kw>
<msg time="2026-04-19T01:41:31.580667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:31.266734" elapsed="0.314030"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:31.264599" elapsed="0.316474"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:31.582583" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:31.605130" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:31.605464" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:31.605676" 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-19T01:41:31.582175" elapsed="0.023633"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:31.607248" elapsed="0.000604"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:31.609296" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:31.608659" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:31.610109" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:31.609665" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:31.609584" elapsed="0.000716"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:31.610784" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T01:41:31.610499" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:31.610433" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:31.611201" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:31.617557" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:41:31.618124" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:31.618486" 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-19T01:41:31.613049" elapsed="0.005642"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:31.253196" elapsed="0.365719"/>
</kw>
<msg time="2026-04-19T01:41:31.619344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:31.252186" elapsed="0.367226"/>
</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-19T01:41:31.251307" elapsed="0.368193"/>
</kw>
<msg time="2026-04-19T01:41:31.619543" 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-19T01:41:31.250491" elapsed="0.369099"/>
</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-19T01:41:31.622739" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T01:41:31.623341" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:31.623641" elapsed="0.000128"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:31.619898" elapsed="0.003925"/>
</kw>
<msg time="2026-04-19T01:41:31.623916" level="INFO">${output} = 1</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-19T01:41:31.249162" elapsed="0.374780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:31.624403" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:31.624138" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:31.624491" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:31.624646" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:31.247184" elapsed="0.377488"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:31.624720" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:41:31.624866" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:31.244744" elapsed="0.380147"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:31.625500" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:31.625067" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:31.243579" elapsed="0.382121">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:33.629318" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:33.628549" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:33.631438" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:33.630799" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:33.633301" 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-19T01:41:33.633685" 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-19T01:41:33.632940" elapsed="0.000808"/>
</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-19T01:41:33.641290" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:33.640620" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:33.640241" elapsed="0.001244"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:33.643530" 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-19T01:41:33.643869" 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-19T01:41:33.642867" elapsed="0.001144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:33.646196" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:33.645408" elapsed="0.000942"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:33.648729" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:33.647782" elapsed="0.001047"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:33.651220" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:33.651301" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:33.650833" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:33.651536" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:33.652811" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:33.973565" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:33.652489" elapsed="0.321192"/>
</kw>
<msg time="2026-04-19T01:41:33.973756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:33.652106" elapsed="0.321733"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:33.650065" elapsed="0.324060"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:33.975547" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:33.998546" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:33.998772" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:33.998921" 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-19T01:41:33.975177" elapsed="0.023840"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:34.000012" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:34.001485" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:34.001055" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:34.002006" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:34.001753" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:34.001695" elapsed="0.000465"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:34.002520" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T01:41:34.002311" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:34.002258" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:34.002770" 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-19T01:41:34.007601" 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-19T01:41:34.008273" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:34.008639" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:34.004127" elapsed="0.004724"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:33.637914" elapsed="0.371177"/>
</kw>
<msg time="2026-04-19T01:41:34.009398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:33.636599" elapsed="0.372858"/>
</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-19T01:41:33.635313" elapsed="0.374227"/>
</kw>
<msg time="2026-04-19T01:41:34.009583" 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-19T01:41:33.634138" elapsed="0.375492"/>
</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-19T01:41:34.012734" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:41:34.013230" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:34.013527" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:34.009923" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T01:41:34.013766" level="INFO">${output} = 1</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-19T01:41:33.631979" elapsed="0.381813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:34.014245" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:34.013980" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:34.014332" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:34.014489" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:33.629844" elapsed="0.384670"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:34.014561" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:41:34.014704" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:33.627673" elapsed="0.387056"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:34.015308" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:34.014885" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:33.626571" elapsed="0.388923">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.019055" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:41:36.018292" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:36.021182" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:36.020528" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.022999" 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-19T01:41:36.023293" 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-19T01:41:36.022674" elapsed="0.000693"/>
</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-19T01:41:36.028776" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:36.028271" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:36.027950" elapsed="0.001034"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.030457" 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-19T01:41:36.030717" 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-19T01:41:36.029985" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.032465" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:36.031846" elapsed="0.000732"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.034285" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:36.033575" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.036744" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:36.036824" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:36.036423" 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-19T01:41:36.037075" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.038389" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:36.357185" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:36.037999" elapsed="0.319338"/>
</kw>
<msg time="2026-04-19T01:41:36.357425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:36.037639" elapsed="0.319876"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:36.035577" elapsed="0.322226"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.359302" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:41:36.382300" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:36.383009" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:41:36.383404" 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-19T01:41:36.358902" elapsed="0.024721"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:36.385852" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.388071" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:36.387398" elapsed="0.000823"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:36.388808" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:36.388450" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:36.388367" 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-19T01:41:36.389521" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-19T01:41:36.389232" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:36.389163" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:36.389871" elapsed="0.000051"/>
</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-19T01:41:36.396624" elapsed="0.000636"/>
</kw>
<kw name="Open 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-19T01:41:36.397576" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:36.397943" 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-19T01:41:36.391748" elapsed="0.006549"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:36.026637" elapsed="0.371907"/>
</kw>
<msg time="2026-04-19T01:41:36.398939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:36.025937" elapsed="0.373071"/>
</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-19T01:41:36.025112" elapsed="0.373998"/>
</kw>
<msg time="2026-04-19T01:41:36.399152" 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-19T01:41:36.023722" elapsed="0.375477"/>
</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-19T01:41:36.402192" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T01:41:36.402670" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:36.402963" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:36.399492" elapsed="0.003644"/>
</kw>
<msg time="2026-04-19T01:41:36.403228" level="INFO">${output} = 1</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-19T01:41:36.021727" elapsed="0.381526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.403677" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:36.403430" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:36.403764" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:36.403916" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:41:36.019588" elapsed="0.384353"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:41:36.403988" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:41:36.404155" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:41:36.017452" elapsed="0.386728"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.404767" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:41:36.404337" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:41:36.016371" elapsed="0.388594">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T01:41:36.405080" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:35:35.205890" elapsed="361.199286">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:35:35.205742" elapsed="361.199511">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T01:35:29.686216" elapsed="366.719106">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:36.405555" elapsed="0.000024"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T01:41:36.405622" elapsed="0.000015"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T01:35:27.535724" elapsed="368.869995">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:35:27.535099" elapsed="368.870775">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s9-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T01:41:36.410514" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:36.410122" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.411007" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:36.410702" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:36.411094" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:41:36.411252" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:36.409687" elapsed="0.001589"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.414067" 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-19T01:41:36.414169" 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-19T01:41:36.413908" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:36.417936" level="INFO">${ip_address} = 10.30.171.9</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-19T01:41:36.417624" elapsed="0.000338"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:36.418012" elapsed="0.000052"/>
</return>
<msg time="2026-04-19T01:41:36.418189" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:36.417305" elapsed="0.000909"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.421737" level="INFO">${odl_connection} = 495</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:36.421009" elapsed="0.000827"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:36.424490" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:36.424568" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:36.424209" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:36.424981" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:36.426361" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:37.101770" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:35:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:36.425876" elapsed="0.676043"/>
</kw>
<msg time="2026-04-19T01:41:37.102007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:36.425516" elapsed="0.676599"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:36.423687" elapsed="0.678549"/>
</kw>
<msg time="2026-04-19T01:41:37.102290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:36.423297" elapsed="0.679044"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:36.422398" elapsed="0.680130"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:37.102632" elapsed="0.000060"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:36.419839" elapsed="0.683112"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.106223" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:37.118647" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:37.118902" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:37.118999" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:37.119134" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:37.106004" elapsed="0.013184"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.121234" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:37.120526" elapsed="0.000810"/>
</kw>
<msg time="2026-04-19T01:41:37.121544" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:37.121640" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:37.119709" elapsed="0.001981"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.123352" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:37.122338" elapsed="0.001074"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.126084" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:37.125495" elapsed="0.000686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.127090" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:37.126525" elapsed="0.000661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.128094" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:37.127528" elapsed="0.000664"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:37.124516" elapsed="0.003797"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:37.123716" elapsed="0.004677"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.123664" elapsed="0.004786"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:37.128996" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:37.128694" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.128650" elapsed="0.000548"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:37.129625" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:41:37.129428" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.129388" elapsed="0.000324"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:37.129911" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:37.105055" elapsed="0.025116"/>
</kw>
<msg time="2026-04-19T01:41:37.130319" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:37.130388" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:37.103278" elapsed="0.027147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:37.130685" elapsed="0.000244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:37.131242" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:41:37.131061" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.131040" elapsed="0.000358"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:37.131545" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:36.418913" elapsed="0.712812"/>
</kw>
<msg time="2026-04-19T01:41:37.131785" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:36.418377" elapsed="0.713459"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:36.416757" elapsed="0.715167"/>
</kw>
<msg time="2026-04-19T01:41:37.131967" 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-19T01:41:36.414351" elapsed="0.717662"/>
</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-19T01:41:37.135192" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:41:37.135669" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:37.135975" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:37.132343" elapsed="0.003800"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:36.413172" elapsed="0.723032"/>
</kw>
<msg time="2026-04-19T01:41:37.136259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:36.412523" elapsed="0.723784"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:36.411815" elapsed="0.724618"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:41:36.411514" elapsed="0.724967"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.138701" 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-19T01:41:37.138802" 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-19T01:41:37.138562" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:37.140909" level="INFO">${ip_address} = 10.30.171.128</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-19T01:41:37.140576" elapsed="0.000362"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:37.140993" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:37.141215" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:37.140252" elapsed="0.000989"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.144688" level="INFO">${odl_connection} = 497</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:37.143985" elapsed="0.000800"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.147410" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:37.147487" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:37.147147" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.147673" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.148843" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:37.821983" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:35:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:37.148529" elapsed="0.673636"/>
</kw>
<msg time="2026-04-19T01:41:37.822254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.148173" elapsed="0.674178"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:37.146642" elapsed="0.675833"/>
</kw>
<msg time="2026-04-19T01:41:37.822529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.146251" elapsed="0.676330"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:37.145362" elapsed="0.677413"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:37.822878" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:37.142850" elapsed="0.680376"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.826495" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:37.839000" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:37.839182" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:37.839226" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:37.839366" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:37.826286" elapsed="0.013106"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.840439" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:37.840127" elapsed="0.000359"/>
</kw>
<msg time="2026-04-19T01:41:37.840582" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:37.840627" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:37.839693" elapsed="0.000958"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.841374" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:37.840877" elapsed="0.000524"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.842656" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:37.842400" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.843108" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:37.842853" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.843539" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:37.843301" elapsed="0.000281"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:37.841938" elapsed="0.001701"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:37.841547" elapsed="0.002129"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.841519" elapsed="0.002185"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:37.843923" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:37.843815" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.843795" elapsed="0.000200"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:37.844224" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T01:41:37.844120" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.844101" elapsed="0.000219"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:37.844521" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:37.825326" elapsed="0.019443"/>
</kw>
<msg time="2026-04-19T01:41:37.844922" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:37.844997" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:37.823537" elapsed="0.021533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:37.845336" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:37.845923" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:41:37.845739" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:37.845719" elapsed="0.000388"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:37.846255" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:37.141928" elapsed="0.704511"/>
</kw>
<msg time="2026-04-19T01:41:37.846501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.141399" elapsed="0.705160"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:37.139711" elapsed="0.706937"/>
</kw>
<msg time="2026-04-19T01:41:37.846692" 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-19T01:41:37.138983" elapsed="0.707755"/>
</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-19T01:41:37.849879" 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-19T01:41:37.850391" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:37.850712" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:37.847055" elapsed="0.003808"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:37.137930" elapsed="0.713059"/>
</kw>
<msg time="2026-04-19T01:41:37.851061" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.137483" elapsed="0.713630"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:37.136745" elapsed="0.714457"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:41:37.136588" elapsed="0.714663"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.853561" 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-19T01:41:37.853664" 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-19T01:41:37.853419" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:37.855875" level="INFO">${ip_address} = 10.30.171.206</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-19T01:41:37.855543" elapsed="0.000359"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:37.855955" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:41:37.856134" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:37.855214" elapsed="0.000947"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.859742" level="INFO">${odl_connection} = 499</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:37.859016" elapsed="0.000826"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:37.862509" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:37.862625" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:37.862226" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.862822" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:37.864011" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:38.166339" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:37.863693" elapsed="0.302764"/>
</kw>
<msg time="2026-04-19T01:41:38.166533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.863340" elapsed="0.303271"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:37.861714" elapsed="0.305000"/>
</kw>
<msg time="2026-04-19T01:41:38.166765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.861322" elapsed="0.305491"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:37.860407" elapsed="0.306574"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:38.167095" elapsed="0.000054"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:37.857853" elapsed="0.309634"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.170662" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:38.183483" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:38.183736" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:38.183834" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:38.183923" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:38.170464" elapsed="0.013509"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.185989" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:38.185366" elapsed="0.000760"/>
</kw>
<msg time="2026-04-19T01:41:38.186340" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:38.186437" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:38.184521" elapsed="0.001965"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.187961" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:38.186972" elapsed="0.001048"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.190671" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.190110" elapsed="0.000654"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.191671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.191137" elapsed="0.000623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.192649" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.192123" elapsed="0.000621"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:38.189166" elapsed="0.003695"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:38.188344" elapsed="0.004595"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.188293" elapsed="0.004702"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:38.193532" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:38.193317" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.193271" elapsed="0.000354"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:38.193892" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T01:41:38.193765" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.193741" elapsed="0.000268"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:38.194299" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:38.169533" elapsed="0.025101"/>
</kw>
<msg time="2026-04-19T01:41:38.194836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:38.194933" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:38.167820" elapsed="0.027163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:38.195369" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:38.196090" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T01:41:38.195820" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.195793" elapsed="0.000512"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:38.196508" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:37.856867" elapsed="0.339891"/>
</kw>
<msg time="2026-04-19T01:41:38.196839" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.856321" elapsed="0.340587"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:37.854655" elapsed="0.342393"/>
</kw>
<msg time="2026-04-19T01:41:38.197109" 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-19T01:41:37.853845" elapsed="0.343339"/>
</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-19T01:41:38.201556" elapsed="0.000431"/>
</kw>
<kw name="Open 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-19T01:41:38.202236" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:38.202659" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:38.197652" elapsed="0.005214"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:37.852691" elapsed="0.350254"/>
</kw>
<msg time="2026-04-19T01:41:38.203023" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:37.852240" elapsed="0.350872"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:37.851519" elapsed="0.351714"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:41:37.851352" elapsed="0.351945"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:36.411374" elapsed="1.791970"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:41:36.407271" elapsed="1.796151"/>
</kw>
<kw name="Check_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-19T01:41:38.207648" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:38.207267" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.208162" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:38.207835" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:38.208232" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:38.208387" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:38.206878" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.210685" 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-19T01:41:38.210783" 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-19T01:41:38.210548" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:38.212591" level="INFO">${ip_address} = 10.30.171.9</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-19T01:41:38.212282" elapsed="0.000336"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:38.212668" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:38.212819" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:38.211949" elapsed="0.000895"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.216314" level="INFO">${odl_connection} = 501</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:38.215607" elapsed="0.000803"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.219209" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:38.219286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:38.218912" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.219467" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.220719" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:38.526909" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:38.220399" elapsed="0.306614"/>
</kw>
<msg time="2026-04-19T01:41:38.527100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.220025" elapsed="0.307157"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:38.218419" elapsed="0.308863"/>
</kw>
<msg time="2026-04-19T01:41:38.527333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.217854" elapsed="0.309527"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:38.216949" elapsed="0.310587"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:38.527625" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:38.214485" elapsed="0.313418"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.530927" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:38.543658" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:38.543771" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:38.543814" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:38.543854" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:38.530735" elapsed="0.013142"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.544755" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:38.544473" elapsed="0.000326"/>
</kw>
<msg time="2026-04-19T01:41:38.544893" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:38.544936" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:38.544125" elapsed="0.000833"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.545638" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:38.545195" elapsed="0.000470"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.546824" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.546578" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.547265" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.547014" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.547871" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.547458" elapsed="0.000458"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:38.546173" elapsed="0.001796"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:38.545797" elapsed="0.002209"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.545775" elapsed="0.002271"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:38.548267" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:38.548161" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.548137" elapsed="0.000196"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:38.548527" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:41:38.548435" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.548417" elapsed="0.000195"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:38.548806" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:38.529832" elapsed="0.019234"/>
</kw>
<msg time="2026-04-19T01:41:38.549236" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:38.549359" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:38.528189" elapsed="0.021208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:38.549695" elapsed="0.000204"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:38.550217" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:41:38.550024" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.550004" elapsed="0.000367"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:38.550516" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:38.213560" elapsed="0.337133"/>
</kw>
<msg time="2026-04-19T01:41:38.550752" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.213000" elapsed="0.337801"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:38.211435" elapsed="0.339450"/>
</kw>
<msg time="2026-04-19T01:41:38.550925" 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-19T01:41:38.210962" elapsed="0.340007"/>
</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-19T01:41:38.553994" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:41:38.554493" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:38.554805" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:38.551279" elapsed="0.003676"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:38.209908" elapsed="0.345106"/>
</kw>
<msg time="2026-04-19T01:41:38.555086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.209463" elapsed="0.345672"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:38.208752" elapsed="0.346469"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:41:38.208599" elapsed="0.346668"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.557509" 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-19T01:41:38.557615" 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-19T01:41:38.557365" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:38.559418" level="INFO">${ip_address} = 10.30.171.128</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-19T01:41:38.559113" elapsed="0.000331"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:38.559492" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:41:38.559640" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:38.558782" elapsed="0.000883"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.563111" level="INFO">${odl_connection} = 503</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:38.562415" elapsed="0.000793"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.566085" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:38.566164" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:38.565792" 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-19T01:41:38.566350" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.567540" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:38.882465" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:38.567223" elapsed="0.315342"/>
</kw>
<msg time="2026-04-19T01:41:38.882637" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.566844" elapsed="0.315867"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:38.565293" elapsed="0.317512"/>
</kw>
<msg time="2026-04-19T01:41:38.882856" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.564858" elapsed="0.318045"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:38.563779" elapsed="0.319306"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:38.883186" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:38.561309" elapsed="0.322164"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.886509" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:38.899447" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:38.899689" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:38.899785" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:38.899873" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:38.886315" elapsed="0.013607"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.901924" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:38.901273" elapsed="0.000749"/>
</kw>
<msg time="2026-04-19T01:41:38.902260" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:38.902355" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:38.900471" elapsed="0.001933"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.903932" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:38.902929" elapsed="0.001060"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.906315" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.905944" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.907179" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.906584" elapsed="0.000653"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.907788" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:38.907451" elapsed="0.000398"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:38.905100" elapsed="0.002825"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:38.904309" elapsed="0.003666"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.904261" elapsed="0.003750"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:38.908335" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:38.908184" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.908157" elapsed="0.000272"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:38.908702" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:41:38.908570" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.908546" elapsed="0.000335"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:38.909186" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:38.885403" elapsed="0.024146"/>
</kw>
<msg time="2026-04-19T01:41:38.909755" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:38.909852" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:38.883734" elapsed="0.026169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:38.910284" elapsed="0.000273"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:38.910969" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T01:41:38.910719" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:38.910693" elapsed="0.000513"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:38.911408" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:38.560356" elapsed="0.351305"/>
</kw>
<msg time="2026-04-19T01:41:38.911741" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.559820" elapsed="0.351988"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:38.558267" elapsed="0.353656"/>
</kw>
<msg time="2026-04-19T01:41:38.911978" 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-19T01:41:38.557795" elapsed="0.354262"/>
</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-19T01:41:38.916279" 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-19T01:41:38.916934" elapsed="0.000288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:38.917469" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:38.912466" elapsed="0.005180"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:38.556673" elapsed="0.361029"/>
</kw>
<msg time="2026-04-19T01:41:38.917756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.556230" elapsed="0.361574"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:38.555516" elapsed="0.362369"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:41:38.555360" elapsed="0.362570"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.920102" 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-19T01:41:38.920201" 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-19T01:41:38.919955" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:38.922095" level="INFO">${ip_address} = 10.30.171.206</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-19T01:41:38.921754" elapsed="0.000369"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:38.922220" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:41:38.922377" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:38.921436" elapsed="0.000966"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.925915" level="INFO">${odl_connection} = 505</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:38.925178" elapsed="0.000839"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:38.928930" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:38.929006" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:38.928647" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.929206" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:38.930524" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:39.243477" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:38.930078" elapsed="0.313493"/>
</kw>
<msg time="2026-04-19T01:41:39.243641" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.929707" elapsed="0.314000"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:38.928087" elapsed="0.315714"/>
</kw>
<msg time="2026-04-19T01:41:39.243849" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.927681" elapsed="0.316216"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:38.926589" elapsed="0.317485"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:39.244165" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:38.924027" elapsed="0.320413"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.247424" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:39.260553" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:39.260794" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:39.260890" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:39.260980" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:39.247234" elapsed="0.013832"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.262992" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:39.262394" elapsed="0.000739"/>
</kw>
<msg time="2026-04-19T01:41:39.263344" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:39.263440" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:39.261598" elapsed="0.001892"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.264945" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:39.263970" elapsed="0.001033"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.266917" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.266576" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.269980" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.267212" elapsed="0.002848"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.270623" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.270283" elapsed="0.000401"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:39.265988" elapsed="0.004833"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:39.265326" elapsed="0.005547"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.265276" elapsed="0.005634"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:39.271236" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:39.271091" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.271064" elapsed="0.000264"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:39.271594" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:41:39.271468" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.271444" elapsed="0.000269"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:39.271981" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:39.246331" elapsed="0.026013"/>
</kw>
<msg time="2026-04-19T01:41:39.272549" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:39.272648" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:39.244688" elapsed="0.028013"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:39.273078" elapsed="0.000278"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:39.273779" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T01:41:39.273532" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.273505" elapsed="0.000489"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:39.274220" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:38.923115" elapsed="0.351355"/>
</kw>
<msg time="2026-04-19T01:41:39.274548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.922559" elapsed="0.352056"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:38.920864" elapsed="0.353865"/>
</kw>
<msg time="2026-04-19T01:41:39.274784" 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-19T01:41:38.920380" elapsed="0.354464"/>
</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-19T01:41:39.278656" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T01:41:39.279150" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:39.279521" 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-19T01:41:39.275273" elapsed="0.004400"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:38.919339" elapsed="0.360390"/>
</kw>
<msg time="2026-04-19T01:41:39.279782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:38.918884" elapsed="0.360945"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:38.918193" elapsed="0.361716"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:41:38.918023" elapsed="0.361931"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:38.208466" elapsed="1.071519"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:41:38.203742" elapsed="1.076313"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.280213" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T01:41:39.284454" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:39.284079" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.284940" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:39.284640" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:39.285011" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T01:41:39.285182" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:39.283690" elapsed="0.001517"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.287664" 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-19T01:41:39.287762" 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-19T01:41:39.287531" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:39.289804" level="INFO">${ip_address} = 10.30.171.9</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-19T01:41:39.289348" elapsed="0.000515"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:39.290104" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:41:39.290260" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:39.288935" elapsed="0.001350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.294155" level="INFO">${odl_connection} = 507</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:39.293757" elapsed="0.000425"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.295924" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:39.296001" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:39.295659" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.296200" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.297406" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:39.609845" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:39.297069" elapsed="0.312874"/>
</kw>
<msg time="2026-04-19T01:41:39.610009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.296697" elapsed="0.313401"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:39.295168" elapsed="0.315027"/>
</kw>
<msg time="2026-04-19T01:41:39.610244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.294759" elapsed="0.315535"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:39.294381" elapsed="0.316007"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:39.610525" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:39.293070" elapsed="0.317717"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.613390" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:39.625931" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:39.626065" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:39.626112" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:39.626153" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:39.613198" elapsed="0.012978"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.627512" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:39.626881" elapsed="0.000733"/>
</kw>
<msg time="2026-04-19T01:41:39.627821" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:39.627919" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:39.626358" elapsed="0.001613"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.629345" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:39.628376" elapsed="0.001028"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.632091" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.631474" elapsed="0.000715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.633218" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.632610" elapsed="0.000701"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.634317" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.633699" elapsed="0.000717"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:39.630545" elapsed="0.003990"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:39.629630" elapsed="0.004962"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.629581" elapsed="0.005038"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:39.634775" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:39.634675" elapsed="0.000144"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.634657" elapsed="0.000184"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:39.634981" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:41:39.634892" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.634877" elapsed="0.000204"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:39.635227" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:39.612660" elapsed="0.022684"/>
</kw>
<msg time="2026-04-19T01:41:39.635587" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:39.635667" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:39.611851" elapsed="0.023856"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:39.636708" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:39.637429" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T01:41:39.637242" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.637182" elapsed="0.000433"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:39.638618" elapsed="0.000038"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:39.291189" elapsed="0.347641"/>
</kw>
<msg time="2026-04-19T01:41:39.639234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.290442" elapsed="0.348846"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:39.288416" elapsed="0.350962"/>
</kw>
<msg time="2026-04-19T01:41:39.639419" 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-19T01:41:39.287944" elapsed="0.351520"/>
</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-19T01:41:39.642658" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:41:39.643148" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:39.643451" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:39.639801" elapsed="0.003798"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:39.286841" elapsed="0.356816"/>
</kw>
<msg time="2026-04-19T01:41:39.643712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.286402" elapsed="0.357357"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:39.285675" elapsed="0.358169"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:41:39.285510" elapsed="0.358380"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.646208" 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-19T01:41:39.646316" 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-19T01:41:39.646073" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:39.648364" level="INFO">${ip_address} = 10.30.171.128</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-19T01:41:39.647895" elapsed="0.000530"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:39.648659" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:41:39.648817" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:39.647498" elapsed="0.001345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.652908" level="INFO">${odl_connection} = 509</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:39.652526" elapsed="0.000409"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.654765" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:39.654841" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:39.654502" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.655021" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.656213" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:39.974708" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:39.655874" elapsed="0.318931"/>
</kw>
<msg time="2026-04-19T01:41:39.974869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.655521" elapsed="0.319413"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:39.653957" elapsed="0.321153"/>
</kw>
<msg time="2026-04-19T01:41:39.975161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.653563" elapsed="0.321647"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:39.653153" elapsed="0.322130"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:39.975353" elapsed="0.000037"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:39.651810" elapsed="0.323799"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:39.978203" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:39.990821" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:39.990937" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:39.990980" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:39.991021" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:39.977997" elapsed="0.013068"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.992710" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:39.992094" elapsed="0.000719"/>
</kw>
<msg time="2026-04-19T01:41:39.993025" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:39.993157" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:39.991247" elapsed="0.001962"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.994588" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:39.993615" elapsed="0.001031"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.997110" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.996528" elapsed="0.000678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.998133" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.997561" elapsed="0.000665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:39.999116" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:39.998559" elapsed="0.000654"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:39.995610" elapsed="0.003722"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:39.994824" elapsed="0.004586"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.994778" elapsed="0.004688"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:39.999817" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:39.999594" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:39.999552" elapsed="0.000411"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:40.000311" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:41:40.000109" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.000072" elapsed="0.000428"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:40.000829" elapsed="0.000050"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:39.977459" elapsed="0.023665"/>
</kw>
<msg time="2026-04-19T01:41:40.001709" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:40.001893" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:39.976672" elapsed="0.025311"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:40.003348" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:40.004075" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:41:40.003873" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.003813" elapsed="0.000409"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:40.005221" elapsed="0.000037"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:39.649634" elapsed="0.355795"/>
</kw>
<msg time="2026-04-19T01:41:40.005827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.649000" elapsed="0.356881"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:39.646957" elapsed="0.359051"/>
</kw>
<msg time="2026-04-19T01:41:40.006066" 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-19T01:41:39.646498" elapsed="0.359614"/>
</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-19T01:41:40.009269" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:40.009755" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:40.010076" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:40.006410" elapsed="0.003819"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:39.645406" elapsed="0.364882"/>
</kw>
<msg time="2026-04-19T01:41:40.010343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.644847" elapsed="0.365546"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:39.644152" elapsed="0.366327"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:41:39.643981" elapsed="0.366544"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.012837" 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-19T01:41:40.012936" 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-19T01:41:40.012702" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:40.015067" level="INFO">${ip_address} = 10.30.171.206</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-19T01:41:40.014595" elapsed="0.000536"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:40.015356" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:41:40.015514" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:40.014195" elapsed="0.001343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.019434" level="INFO">${odl_connection} = 511</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:40.019021" elapsed="0.000440"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.021241" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:40.021318" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:40.020957" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.021501" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.022702" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:40.336077" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:40.022381" elapsed="0.313958"/>
</kw>
<msg time="2026-04-19T01:41:40.336429" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.022010" elapsed="0.314512"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:40.020471" elapsed="0.316175"/>
</kw>
<msg time="2026-04-19T01:41:40.336702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.020075" elapsed="0.316678"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:40.019663" elapsed="0.317170"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:40.336936" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:40.018143" elapsed="0.319112"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.340156" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:40.352412" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:40.352531" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:40.352575" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:40.352646" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:40.339940" elapsed="0.012749"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.353970" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:40.353681" elapsed="0.000334"/>
</kw>
<msg time="2026-04-19T01:41:40.354126" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:40.354170" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:40.353025" elapsed="0.001168"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.354811" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:40.354364" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.356250" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:40.355977" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.356691" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:40.356448" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.357142" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:40.356886" elapsed="0.000301"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:40.355289" elapsed="0.001952"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:40.354926" elapsed="0.002351"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.354901" elapsed="0.002405"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:40.357467" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:40.357366" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.357348" elapsed="0.000185"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:40.357705" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:41:40.357585" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.357570" elapsed="0.000220"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:40.357982" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:40.339387" elapsed="0.018733"/>
</kw>
<msg time="2026-04-19T01:41:40.358364" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:40.358445" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:40.338441" elapsed="0.020044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:40.359493" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:40.360256" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:41:40.360066" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.359978" elapsed="0.000426"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:40.361413" elapsed="0.000037"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:40.016236" elapsed="0.345398"/>
</kw>
<msg time="2026-04-19T01:41:40.362089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.015694" elapsed="0.346451"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:40.013615" elapsed="0.348619"/>
</kw>
<msg time="2026-04-19T01:41:40.362276" 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-19T01:41:40.013131" elapsed="0.349191"/>
</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-19T01:41:40.365512" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T01:41:40.366043" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:40.366365" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:40.362626" elapsed="0.003889"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:40.011939" elapsed="0.354635"/>
</kw>
<msg time="2026-04-19T01:41:40.366642" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.011497" elapsed="0.355205"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:40.010779" elapsed="0.356013"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:41:40.010623" elapsed="0.356216"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:39.285262" elapsed="1.081613"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:41:39.281220" elapsed="1.085714"/>
</kw>
<msg time="2026-04-19T01:41:40.366973" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:39.280719" elapsed="1.086299"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:40.367194" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T01:41:36.406721" elapsed="3.960561"/>
</kw>
<kw name="Check_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-19T01:41:40.370772" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:40.370391" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.371281" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:40.370959" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:40.371351" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:41:40.371503" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:40.370000" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.373813" 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-19T01:41:40.373912" 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-19T01:41:40.373674" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:40.375767" level="INFO">${ip_address} = 10.30.171.9</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-19T01:41:40.375495" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:40.375842" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:40.375991" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:40.375172" elapsed="0.000844"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.378934" level="INFO">${odl_connection} = 513</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:40.378195" elapsed="0.000779"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.382221" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:40.382299" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:40.381925" 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-19T01:41:40.382485" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.383673" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:40.691635" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:40.383358" elapsed="0.308433"/>
</kw>
<msg time="2026-04-19T01:41:40.691898" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.382986" elapsed="0.309015"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:40.381422" elapsed="0.310751"/>
</kw>
<msg time="2026-04-19T01:41:40.692285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.380662" elapsed="0.311726"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:40.379260" elapsed="0.313313"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:40.692709" elapsed="0.000062"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:40.377761" elapsed="0.315190"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.698225" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:40.710943" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:40.711577" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T01:41:40.711927" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:40.712291" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:40.697309" elapsed="0.015194"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.715997" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:40.715581" elapsed="0.000511"/>
</kw>
<msg time="2026-04-19T01:41:40.716408" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:40.716628" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:40.714767" elapsed="0.002003"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.719437" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:40.718330" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.722700" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:40.722301" elapsed="0.000549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.723458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:40.723099" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.724260" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:40.723743" elapsed="0.000582"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:40.721561" elapsed="0.002906"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:40.719828" elapsed="0.004707"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.719748" elapsed="0.004878"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:40.725213" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:40.724862" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.724788" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:40.726255" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T01:41:40.725692" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.725607" elapsed="0.000884"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:40.727564" elapsed="0.000057"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:40.694517" elapsed="0.033326"/>
</kw>
<msg time="2026-04-19T01:41:40.728337" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:40.728383" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:40.693293" elapsed="0.035115"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:40.728571" elapsed="0.000212"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:40.728961" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:41:40.728849" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:40.728831" elapsed="0.000229"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:40.729206" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:40.377004" elapsed="0.352323"/>
</kw>
<msg time="2026-04-19T01:41:40.729423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.376189" elapsed="0.353284"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:40.374631" elapsed="0.355062"/>
</kw>
<msg time="2026-04-19T01:41:40.729797" 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-19T01:41:40.374149" elapsed="0.355696"/>
</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-19T01:41:40.732930" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T01:41:40.733423" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:40.733742" 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-19T01:41:40.730156" elapsed="0.003739"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:40.373046" elapsed="0.361076"/>
</kw>
<msg time="2026-04-19T01:41:40.734219" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.372586" elapsed="0.361681"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:40.371877" elapsed="0.362602"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:41:40.371721" elapsed="0.362806"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.736811" 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-19T01:41:40.736911" 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-19T01:41:40.736674" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:40.738776" level="INFO">${ip_address} = 10.30.171.128</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-19T01:41:40.738501" elapsed="0.000301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:40.738850" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:40.738999" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:40.738178" elapsed="0.000845"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.741829" level="INFO">${odl_connection} = 515</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:40.741095" elapsed="0.000775"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:40.745003" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:40.745101" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:40.744730" 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-19T01:41:40.745285" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:40.746518" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:41.048213" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:40.746195" elapsed="0.302166"/>
</kw>
<msg time="2026-04-19T01:41:41.048447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.745808" elapsed="0.302724"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:40.744234" elapsed="0.304420"/>
</kw>
<msg time="2026-04-19T01:41:41.048748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.743493" elapsed="0.305328"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:40.742172" elapsed="0.306778"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:41.049075" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:40.740667" elapsed="0.308593"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.052640" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:41.065966" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:41.066598" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T01:41:41.066934" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:41.067302" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:41.052294" elapsed="0.015216"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.071288" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:41.070857" elapsed="0.000495"/>
</kw>
<msg time="2026-04-19T01:41:41.071648" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:41.071852" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:41.069745" elapsed="0.002237"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.074439" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:41.073385" elapsed="0.001188"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.077170" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.076792" elapsed="0.000613"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.077988" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.077625" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.078615" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.078282" elapsed="0.000394"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:41.076166" elapsed="0.002643"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:41.074799" elapsed="0.004072"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.074725" elapsed="0.004227"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:41.079605" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:41.079313" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.079244" elapsed="0.000536"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:41.080290" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:41:41.079987" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.079921" elapsed="0.000585"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:41.081865" elapsed="0.000084"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:41.050382" elapsed="0.031890"/>
</kw>
<msg time="2026-04-19T01:41:41.082605" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:41.082663" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:41.049490" elapsed="0.033197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:41.082849" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:41.083389" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:41:41.083277" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.083259" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:41.083614" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:40.739931" elapsed="0.343806"/>
</kw>
<msg time="2026-04-19T01:41:41.083835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.739195" elapsed="0.344689"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:40.737565" elapsed="0.346557"/>
</kw>
<msg time="2026-04-19T01:41:41.084204" 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-19T01:41:40.737106" elapsed="0.347143"/>
</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-19T01:41:41.087337" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:41:41.087809" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:41.088129" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:41.084542" elapsed="0.003736"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:40.735930" elapsed="0.352536"/>
</kw>
<msg time="2026-04-19T01:41:41.088559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:40.735486" elapsed="0.353121"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:40.734779" elapsed="0.354044"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:41:40.734622" elapsed="0.354288"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.091164" 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-19T01:41:41.091265" 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-19T01:41:41.090982" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:41.093139" level="INFO">${ip_address} = 10.30.171.206</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-19T01:41:41.092853" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:41.093214" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:41.093362" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:41.092534" elapsed="0.000853"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.096175" level="INFO">${odl_connection} = 517</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:41.095431" elapsed="0.000785"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.099297" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:41.099374" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:41.099010" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.099556" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.100833" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:41.413168" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:41.100414" elapsed="0.312879"/>
</kw>
<msg time="2026-04-19T01:41:41.413375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.100058" elapsed="0.313406"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:41.098521" elapsed="0.315063"/>
</kw>
<msg time="2026-04-19T01:41:41.413671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.097771" elapsed="0.315972"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:41.096481" elapsed="0.317387"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:41.413992" elapsed="0.000062"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:41.095001" elapsed="0.319179"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.417425" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T01:41:41.430112" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:41.430721" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T01:41:41.431115" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:41.431442" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:41.417083" elapsed="0.014569"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.439260" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:41.438753" elapsed="0.000666"/>
</kw>
<msg time="2026-04-19T01:41:41.439721" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:41.439927" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:41.433939" elapsed="0.006140"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.442497" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:41.441447" elapsed="0.001186"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.445268" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.444883" elapsed="0.000525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.445996" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.445623" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.446661" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.446330" elapsed="0.000376"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:41.444251" elapsed="0.002550"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:41.442860" elapsed="0.003986"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.442785" elapsed="0.004121"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:41.447296" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:41.447086" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.447011" elapsed="0.000411"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:41.447770" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:41:41.447569" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.447521" elapsed="0.000408"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:41.448886" elapsed="0.000056"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:41.415217" elapsed="0.033957"/>
</kw>
<msg time="2026-04-19T01:41:41.449411" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:41.449456" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:41.414400" elapsed="0.035081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:41.449640" elapsed="0.000238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:41.450086" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:41:41.449956" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.449938" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:41.450310" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:41.094101" elapsed="0.356325"/>
</kw>
<msg time="2026-04-19T01:41:41.450519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.093542" elapsed="0.357024"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:41.091904" elapsed="0.358875"/>
</kw>
<msg time="2026-04-19T01:41:41.450858" 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-19T01:41:41.091446" elapsed="0.359455"/>
</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-19T01:41:41.454046" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:41:41.454529" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:41.454835" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:41.451327" elapsed="0.003657"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:41.090371" elapsed="0.364961"/>
</kw>
<msg time="2026-04-19T01:41:41.455428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.089908" elapsed="0.365568"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:41.089184" elapsed="0.366508"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:41:41.089009" elapsed="0.366774"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:40.371584" elapsed="1.084235"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:41:40.367519" elapsed="1.088357"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.465702" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:41.463450" elapsed="0.002279"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T01:41:41.467486" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:41.467104" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.467978" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:41.467673" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:41.468072" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:41.468239" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:41.466713" elapsed="0.001551"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.470527" 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-19T01:41:41.470630" 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-19T01:41:41.470384" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:41.472816" level="INFO">${ip_address} = 10.30.171.9</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-19T01:41:41.472366" elapsed="0.000477"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:41.472893" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:41:41.473067" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:41.472026" elapsed="0.001068"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.477134" level="INFO">${odl_connection} = 519</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:41.476520" elapsed="0.000660"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.479442" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:41.479520" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:41.479171" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.479705" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.480888" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:41.776275" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:41.480565" elapsed="0.295845"/>
</kw>
<msg time="2026-04-19T01:41:41.776487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.480209" elapsed="0.296360"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:41.478591" elapsed="0.298085"/>
</kw>
<msg time="2026-04-19T01:41:41.776817" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.478192" elapsed="0.298675"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:41.477624" elapsed="0.299399"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:41.777200" elapsed="0.000086"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:41.475523" elapsed="0.301956"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.779872" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T01:41:41.792522" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:41.792786" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T01:41:41.792892" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:41.792981" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:41.779674" elapsed="0.013391"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.795080" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:41.794335" elapsed="0.000887"/>
</kw>
<msg time="2026-04-19T01:41:41.795478" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:41.795582" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:41.793496" elapsed="0.002141"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.797098" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:41.796027" elapsed="0.001133"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.799480" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.799084" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.800181" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.799789" elapsed="0.000455"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.800853" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:41.800476" elapsed="0.000445"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:41.798274" elapsed="0.002730"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:41.797345" elapsed="0.003736"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.797296" elapsed="0.003826"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:41.801368" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:41.801211" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.801185" elapsed="0.000287"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:41.801712" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-04-19T01:41:41.801569" elapsed="0.000239"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.801543" elapsed="0.000301"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:41.802112" elapsed="0.000035"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:41.779087" elapsed="0.023280"/>
</kw>
<msg time="2026-04-19T01:41:41.802589" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:41.802756" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:41.777839" elapsed="0.025005"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:41.803253" elapsed="0.000722"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:41.804535" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:41:41.804199" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.804170" elapsed="0.000662"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:41.805134" elapsed="0.000071"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:41.474054" elapsed="0.331449"/>
</kw>
<msg time="2026-04-19T01:41:41.805597" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.473465" elapsed="0.332219"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:41.471292" elapsed="0.334604"/>
</kw>
<msg time="2026-04-19T01:41:41.805961" 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-19T01:41:41.470812" elapsed="0.335301"/>
</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-19T01:41:41.809500" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:41:41.810022" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:41.810363" 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-19T01:41:41.806577" elapsed="0.003940"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:41.469745" elapsed="0.340832"/>
</kw>
<msg time="2026-04-19T01:41:41.810634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.469304" elapsed="0.341384"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:41.468603" elapsed="0.342185"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:41:41.468451" elapsed="0.342386"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.813172" 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-19T01:41:41.813276" 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-19T01:41:41.813012" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:41.815593" level="INFO">${ip_address} = 10.30.171.128</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-19T01:41:41.815134" elapsed="0.000486"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:41.815672" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:41:41.815842" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:41.814773" elapsed="0.001095"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.819832" level="INFO">${odl_connection} = 521</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:41.819222" elapsed="0.000661"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:41.822132" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:41.822214" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:41.821797" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.822401" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:41.823631" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:42.138096" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:41.823304" elapsed="0.315027"/>
</kw>
<msg time="2026-04-19T01:41:42.138414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.822914" elapsed="0.315588"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:41.821304" elapsed="0.317310"/>
</kw>
<msg time="2026-04-19T01:41:42.138666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.820864" elapsed="0.317857"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:41.820350" elapsed="0.318534"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:42.139067" elapsed="0.000091"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:41.818202" elapsed="0.321151"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.141806" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T01:41:42.154748" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:42.155006" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T01:41:42.155168" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:42.155269" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:42.141600" elapsed="0.013719"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.157238" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:42.156558" elapsed="0.000791"/>
</kw>
<msg time="2026-04-19T01:41:42.157562" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:42.157658" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:42.155728" elapsed="0.001979"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.159025" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:42.158230" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.160613" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:42.160265" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.161246" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:42.160886" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.161846" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:42.161512" elapsed="0.000392"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:42.159686" elapsed="0.002290"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:42.159207" elapsed="0.002818"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.159176" elapsed="0.002929"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:42.162334" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:42.162193" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.162169" elapsed="0.000255"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:42.162618" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:41:42.162494" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.162473" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:42.162938" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:42.140986" elapsed="0.022197"/>
</kw>
<msg time="2026-04-19T01:41:42.163378" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:42.163529" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:42.139728" elapsed="0.023882"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:42.163959" elapsed="0.000701"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:42.165184" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T01:41:42.164845" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.164819" elapsed="0.000623"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:42.165700" elapsed="0.000063"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:41.816600" elapsed="0.349473"/>
</kw>
<msg time="2026-04-19T01:41:42.166223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.816051" elapsed="0.350244"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:41.813935" elapsed="0.352484"/>
</kw>
<msg time="2026-04-19T01:41:42.166478" 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-19T01:41:41.813460" elapsed="0.353082"/>
</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-19T01:41:42.170785" 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-19T01:41:42.171274" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:42.171581" 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-19T01:41:42.166959" elapsed="0.004769"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:41.812363" elapsed="0.359424"/>
</kw>
<msg time="2026-04-19T01:41:42.171844" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:41.811890" elapsed="0.360003"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:41.811170" elapsed="0.360809"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:41:41.810940" elapsed="0.361086"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.174299" 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-19T01:41:42.174400" 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-19T01:41:42.174163" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:42.176634" level="INFO">${ip_address} = 10.30.171.206</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-19T01:41:42.176180" elapsed="0.000481"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:42.176717" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:42.176872" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:42.175838" elapsed="0.001059"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.180745" level="INFO">${odl_connection} = 523</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:42.180134" elapsed="0.000658"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.183110" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:42.183189" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:42.182702" elapsed="0.000511"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.183371" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.184556" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:42.504390" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:42.184235" elapsed="0.320298"/>
</kw>
<msg time="2026-04-19T01:41:42.504615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.183854" elapsed="0.320848"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:42.182209" elapsed="0.322603"/>
</kw>
<msg time="2026-04-19T01:41:42.504866" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.181764" elapsed="0.323151"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:42.181260" elapsed="0.323835"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:42.505245" elapsed="0.000091"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:42.179130" elapsed="0.326395"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.507935" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T01:41:42.520745" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:42.521002" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T01:41:42.521144" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:42.521238" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:42.507733" elapsed="0.013556"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.523148" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:42.522518" elapsed="0.000731"/>
</kw>
<msg time="2026-04-19T01:41:42.523456" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:42.523554" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:42.521684" elapsed="0.001919"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.524949" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:42.523982" elapsed="0.001025"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.527496" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:42.526911" elapsed="0.000687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.528500" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:42.527931" elapsed="0.000659"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.529484" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:42.528922" elapsed="0.000658"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:42.525978" elapsed="0.003720"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:42.525221" elapsed="0.004555"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.525174" elapsed="0.004658"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:42.530256" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:42.529955" elapsed="0.000401"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.529919" elapsed="0.000488"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:42.530701" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:41:42.530521" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.530487" elapsed="0.000298"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:42.530929" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:42.507138" elapsed="0.023964"/>
</kw>
<msg time="2026-04-19T01:41:42.531242" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:42.531352" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:42.505886" elapsed="0.025525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:42.531721" elapsed="0.000514"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:42.532594" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T01:41:42.532369" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:42.532350" elapsed="0.000430"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:42.532965" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:42.177600" elapsed="0.355628"/>
</kw>
<msg time="2026-04-19T01:41:42.533288" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.177075" elapsed="0.356264"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:42.175060" elapsed="0.358368"/>
</kw>
<msg time="2026-04-19T01:41:42.533470" 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-19T01:41:42.174582" elapsed="0.358933"/>
</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-19T01:41:42.536574" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:41:42.537104" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:42.537413" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:42.533814" elapsed="0.003748"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:42.173518" elapsed="0.364103"/>
</kw>
<msg time="2026-04-19T01:41:42.537677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.173005" elapsed="0.364720"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:42.172303" elapsed="0.365506"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:41:42.172141" elapsed="0.365716"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:41.468319" elapsed="1.069573"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:41:41.466114" elapsed="1.071837"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:41.465805" elapsed="1.072183"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:41.465786" elapsed="1.072227"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.539336" 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-19T01:41:42.539437" 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-19T01:41:42.539202" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T01:41:42.540551" elapsed="0.000441"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.542049" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:42.541655" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.542579" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:42.542270" elapsed="0.000377"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:42.542697" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:42.542856" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:42.541273" elapsed="0.001608"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:42.543871" level="INFO">${ip_address} = 10.30.171.9</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-19T01:41:42.543598" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:42.543946" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:42.544113" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:42.543266" elapsed="0.000872"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.545695" level="INFO">${odl_connection} = 525</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:42.545323" elapsed="0.000398"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:42.548321" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:42.548588" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:42.547655" elapsed="0.001031"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.548980" elapsed="0.000616"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.550910" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:42.851682" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:42.550590" elapsed="0.301207"/>
</kw>
<msg time="2026-04-19T01:41:42.851910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.549901" elapsed="0.302108"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:42.546707" elapsed="0.305475"/>
</kw>
<msg time="2026-04-19T01:41:42.852270" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:42.546314" elapsed="0.306007"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:42.545900" elapsed="0.306498"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:42.852447" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:42.544950" elapsed="0.307657"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.854520" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T01:41:42.866613" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:42.854121" elapsed="0.012655"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T01:41:42.853958" elapsed="0.012869"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.867801" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T01:41:42.985846" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:42.867220" elapsed="0.118956"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T01:41:42.866949" elapsed="0.119365"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:42.987851" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T01:41:43.030934" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:42.986931" elapsed="0.044286"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T01:41:42.986559" elapsed="0.044863"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.032838" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T01:41:43.078684" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.031939" elapsed="0.046981"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T01:41:43.031626" elapsed="0.047376"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.080441" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T01:41:43.126779" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.079556" elapsed="0.047461"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T01:41:43.079244" elapsed="0.047892"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.128542" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T01:41:43.174733" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.127658" elapsed="0.047311"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T01:41:43.127338" elapsed="0.047750"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.176490" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T01:41:43.222954" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.175605" elapsed="0.047641"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T01:41:43.175290" elapsed="0.048044"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.224757" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T01:41:43.270972" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.223855" elapsed="0.047392"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T01:41:43.223532" elapsed="0.047798"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T01:41:42.853812" elapsed="0.417585"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T01:41:42.853487" elapsed="0.418049"/>
</kw>
<msg time="2026-04-19T01:41:43.271765" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:43.271866" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:42.852820" elapsed="0.419097"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:43.272327" elapsed="0.000463"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:43.273299" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T01:41:43.272962" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:43.272914" elapsed="0.000594"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:43.273837" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:42.544400" elapsed="0.729739"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T01:41:42.543096" elapsed="0.731140"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:43.276372" level="INFO">${ip_address} = 10.30.171.128</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-19T01:41:43.275710" elapsed="0.000722"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:43.276543" elapsed="0.000064"/>
</return>
<msg time="2026-04-19T01:41:43.276880" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:43.274900" elapsed="0.002035"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.279704" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:43.279309" elapsed="0.000422"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:43.282537" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:43.282794" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:43.281938" elapsed="0.000953"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:43.283200" elapsed="0.000609"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.285101" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:43.597183" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:43.284760" elapsed="0.312674"/>
</kw>
<msg time="2026-04-19T01:41:43.597582" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:43.284128" elapsed="0.313567"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:43.280751" elapsed="0.317113"/>
</kw>
<msg time="2026-04-19T01:41:43.597959" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:43.280314" elapsed="0.317697"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:43.279912" elapsed="0.318205"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:43.598175" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:43.278915" elapsed="0.319444"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.600465" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T01:41:43.613318" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.600062" elapsed="0.013406"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T01:41:43.599900" elapsed="0.013620"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.614482" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T01:41:43.722796" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.613881" elapsed="0.109217"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T01:41:43.613645" elapsed="0.109544"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.724642" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T01:41:43.778444" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.723729" elapsed="0.055005"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T01:41:43.723404" elapsed="0.055416"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.780327" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T01:41:43.826489" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.779405" elapsed="0.047354"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T01:41:43.779076" elapsed="0.047770"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.828342" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T01:41:43.874500" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.827424" elapsed="0.047340"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T01:41:43.827098" elapsed="0.047754"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.876378" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T01:41:43.922483" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.875457" elapsed="0.047308"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T01:41:43.875129" elapsed="0.047720"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.924321" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T01:41:43.970723" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.923417" elapsed="0.047555"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T01:41:43.923093" elapsed="0.048004"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:43.972576" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T01:41:44.018209" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:43.971618" elapsed="0.046857"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T01:41:43.971300" elapsed="0.047287"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T01:41:43.599750" elapsed="0.418909"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T01:41:43.599408" elapsed="0.419394"/>
</kw>
<msg time="2026-04-19T01:41:44.019074" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:44.019182" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:43.598649" elapsed="0.420584"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:44.019613" elapsed="0.000524"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:44.020600" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T01:41:44.020306" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:44.020259" elapsed="0.000640"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:44.021275" elapsed="0.000052"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:43.277557" elapsed="0.743990"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T01:41:43.274478" elapsed="0.747164"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:44.023703" level="INFO">${ip_address} = 10.30.171.206</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-19T01:41:44.023084" elapsed="0.000681"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:44.023874" elapsed="0.000062"/>
</return>
<msg time="2026-04-19T01:41:44.024250" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:44.022291" elapsed="0.002015"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.027812" level="INFO">${odl_connection} = 527</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:44.027056" elapsed="0.000783"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:44.030339" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:44.030614" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:44.029781" elapsed="0.000930"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.031003" elapsed="0.000613"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.032887" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:44.356590" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:44.032565" elapsed="0.324164"/>
</kw>
<msg time="2026-04-19T01:41:44.356875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.031917" elapsed="0.325064"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:44.028840" elapsed="0.328327"/>
</kw>
<msg time="2026-04-19T01:41:44.357262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.028412" elapsed="0.328901"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:44.028016" elapsed="0.329370"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:44.357437" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:44.026180" elapsed="0.331424"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.359642" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T01:41:44.372611" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.359239" elapsed="0.013620"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T01:41:44.359089" elapsed="0.013853"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.374419" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T01:41:44.423528" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.373494" elapsed="0.050284"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T01:41:44.373180" elapsed="0.050679"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.425314" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T01:41:44.471166" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.424415" elapsed="0.046995"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T01:41:44.424098" elapsed="0.047395"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.473088" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T01:41:44.519844" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.472187" elapsed="0.048012"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T01:41:44.471822" elapsed="0.048468"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.521751" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T01:41:44.567615" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.520835" elapsed="0.047025"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T01:41:44.520505" elapsed="0.047439"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.569406" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T01:41:44.619430" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.568502" elapsed="0.051193"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T01:41:44.568187" elapsed="0.051596"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.621239" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T01:41:44.667373" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.620352" elapsed="0.047261"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T01:41:44.619982" elapsed="0.047712"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.669132" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T01:41:44.715583" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:44.668251" elapsed="0.047591"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T01:41:44.667891" elapsed="0.048047"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T01:41:44.358908" elapsed="0.357098"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T01:41:44.358551" elapsed="0.357793"/>
</kw>
<msg time="2026-04-19T01:41:44.716581" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:44.716680" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:44.357843" elapsed="0.358890"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:44.717144" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:44.718142" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T01:41:44.717808" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:44.717760" elapsed="0.000589"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:44.718679" elapsed="0.000078"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:44.024889" elapsed="0.694092"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T01:41:44.021848" elapsed="0.697259"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:42.542936" elapsed="2.176243"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T01:41:42.540129" elapsed="2.179170"/>
</kw>
<msg time="2026-04-19T01:41:44.719395" 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-19T01:41:42.539618" elapsed="2.179887"/>
</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-19T01:41:44.726406" elapsed="0.000854"/>
</kw>
<kw name="Open 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-19T01:41:44.727633" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:44.728008" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:44.720228" elapsed="0.007944"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T01:41:42.538716" elapsed="2.189515"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T01:41:42.538211" elapsed="2.190086"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T01:41:44.730182" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:44.729765" elapsed="0.000444"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:44.730674" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:44.730370" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:44.730764" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:44.730918" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:44.729362" elapsed="0.001580"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.735374" 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-19T01:41:44.735474" 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-19T01:41:44.735228" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:44.737433" level="INFO">${ip_address} = 10.30.171.9</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-19T01:41:44.736966" elapsed="0.000495"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:44.737510" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:44.737661" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:44.736651" elapsed="0.001035"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.741577" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:44.740923" elapsed="0.000700"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:44.743823" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:44.743901" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:44.743530" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.744098" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:44.745279" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:45.094424" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:44.744942" elapsed="0.349637"/>
</kw>
<msg time="2026-04-19T01:41:45.094666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.744588" elapsed="0.350178"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:44.743023" elapsed="0.351889"/>
</kw>
<msg time="2026-04-19T01:41:45.094966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.742603" elapsed="0.352415"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:44.742100" elapsed="0.353106"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:45.095362" elapsed="0.000091"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:44.739924" elapsed="0.355732"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.098259" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T01:41:45.111012" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:45.111298" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T01:41:45.111400" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:45.111490" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:45.098050" elapsed="0.013491"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.113386" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:45.112745" elapsed="0.000742"/>
</kw>
<msg time="2026-04-19T01:41:45.113695" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:45.113791" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:45.111939" elapsed="0.001903"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.115286" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:45.114246" elapsed="0.001099"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.117801" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.117244" elapsed="0.000660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.118852" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.118270" elapsed="0.000681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.119811" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.119318" elapsed="0.000553"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:45.116322" elapsed="0.003622"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:45.115527" elapsed="0.004465"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.115480" elapsed="0.004547"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:45.120268" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:45.120127" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.120103" elapsed="0.000257"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:45.120553" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T01:41:45.120431" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.120411" elapsed="0.000258"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:45.120872" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:45.097425" elapsed="0.023698"/>
</kw>
<msg time="2026-04-19T01:41:45.121321" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:45.121474" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:45.096095" elapsed="0.025462"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:45.121903" elapsed="0.000686"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:45.123122" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T01:41:45.122773" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.122746" elapsed="0.000636"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:45.123642" elapsed="0.000063"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:44.738403" elapsed="0.385611"/>
</kw>
<msg time="2026-04-19T01:41:45.124131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.737846" elapsed="0.386358"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:44.736132" elapsed="0.388196"/>
</kw>
<msg time="2026-04-19T01:41:45.124386" 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-19T01:41:44.735655" elapsed="0.388796"/>
</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-19T01:41:45.129093" elapsed="0.000500"/>
</kw>
<kw name="Open 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-19T01:41:45.129826" elapsed="0.000317"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:45.130358" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:45.124873" elapsed="0.005696"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:44.732453" elapsed="0.398201"/>
</kw>
<msg time="2026-04-19T01:41:45.130735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:44.731991" elapsed="0.398844"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:44.731300" elapsed="0.399660"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:41:44.731144" elapsed="0.399882"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.133454" 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-19T01:41:45.133553" 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-19T01:41:45.133316" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:45.135551" level="INFO">${ip_address} = 10.30.171.128</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-19T01:41:45.135103" elapsed="0.000475"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:45.135627" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:45.135785" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:45.134751" elapsed="0.001059"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.139604" level="INFO">${odl_connection} = 531</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:45.138998" elapsed="0.000651"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.141773" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:45.141854" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:45.141507" 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-19T01:41:45.142054" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.143457" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:45.458561" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:45.143128" elapsed="0.315556"/>
</kw>
<msg time="2026-04-19T01:41:45.458764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.142724" elapsed="0.316123"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:45.140994" elapsed="0.317972"/>
</kw>
<msg time="2026-04-19T01:41:45.459111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.140600" elapsed="0.318563"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:45.140103" elapsed="0.319207"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:45.459451" elapsed="0.000083"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:45.137989" elapsed="0.321736"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.462077" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T01:41:45.474339" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:45.474454" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T01:41:45.474500" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:45.474540" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:45.461858" elapsed="0.012705"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.476188" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:45.475555" elapsed="0.000734"/>
</kw>
<msg time="2026-04-19T01:41:45.476497" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:45.476593" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:45.474744" elapsed="0.001898"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.478000" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:45.477017" elapsed="0.001072"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.480559" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.479979" elapsed="0.000682"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.481560" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.480995" elapsed="0.000655"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.482538" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.481978" elapsed="0.000656"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:45.479087" elapsed="0.003664"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:45.478273" elapsed="0.004558"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.478226" elapsed="0.004702"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:45.483327" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:45.483091" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.483023" elapsed="0.000454"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:45.483783" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:41:45.483593" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.483558" elapsed="0.000310"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:45.484012" elapsed="0.000035"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:45.461274" elapsed="0.022916"/>
</kw>
<msg time="2026-04-19T01:41:45.484329" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:45.484441" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:45.460089" elapsed="0.024410"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:45.484749" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:45.485620" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T01:41:45.485393" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.485373" elapsed="0.000439"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:45.486001" elapsed="0.000063"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:45.136518" elapsed="0.349749"/>
</kw>
<msg time="2026-04-19T01:41:45.486327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.135967" elapsed="0.350411"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:45.134231" elapsed="0.352277"/>
</kw>
<msg time="2026-04-19T01:41:45.486550" 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-19T01:41:45.133733" elapsed="0.352863"/>
</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-19T01:41:45.489930" 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-19T01:41:45.490482" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:45.490790" elapsed="0.000109"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:45.486923" elapsed="0.004030"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:45.132676" elapsed="0.358338"/>
</kw>
<msg time="2026-04-19T01:41:45.491086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.132229" elapsed="0.358908"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:45.131403" elapsed="0.359821"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:41:45.131182" elapsed="0.360090"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.493449" 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-19T01:41:45.493550" 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-19T01:41:45.493312" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:45.495580" level="INFO">${ip_address} = 10.30.171.206</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-19T01:41:45.495131" elapsed="0.000476"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:41:45.495656" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:45.495807" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:45.494770" elapsed="0.001061"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.499636" level="INFO">${odl_connection} = 533</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:45.499022" elapsed="0.000660"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.501838" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:45.501914" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:45.501575" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.502113" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.503520" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:45.813897" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:45.503191" elapsed="0.310945"/>
</kw>
<msg time="2026-04-19T01:41:45.814794" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.502778" elapsed="0.312369"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:45.501084" elapsed="0.314251"/>
</kw>
<msg time="2026-04-19T01:41:45.815398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.500654" elapsed="0.314796"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T01:41:45.500151" elapsed="0.315477"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T01:41:45.815795" elapsed="0.000091"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T01:41:45.498011" elapsed="0.318106"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.818609" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T01:41:45.831414" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:45.831672" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T01:41:45.831775" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T01:41:45.831866" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:41:45.818399" elapsed="0.013520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.833805" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T01:41:45.833184" elapsed="0.000725"/>
</kw>
<msg time="2026-04-19T01:41:45.834183" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T01:41:45.834284" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:45.832359" elapsed="0.001975"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.835760" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:45.834715" elapsed="0.001093"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.837386" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.836982" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.838057" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.837696" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.838656" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.838327" elapsed="0.000388"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T01:41:45.836424" elapsed="0.002364"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:45.835923" elapsed="0.002914"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.835893" elapsed="0.002980"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T01:41:45.839134" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:45.838950" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.838927" elapsed="0.000299"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:45.839424" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T01:41:45.839299" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.839278" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:45.839739" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T01:41:45.817785" elapsed="0.022177"/>
</kw>
<msg time="2026-04-19T01:41:45.840185" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:41:45.840339" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:41:45.816515" elapsed="0.023906"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:45.840767" elapsed="0.000723"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T01:41:45.841989" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T01:41:45.841675" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.841648" elapsed="0.000625"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:45.842530" elapsed="0.000064"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T01:41:45.496533" elapsed="0.346335"/>
</kw>
<msg time="2026-04-19T01:41:45.843073" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.495987" elapsed="0.347161"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T01:41:45.494249" elapsed="0.349021"/>
</kw>
<msg time="2026-04-19T01:41:45.843328" 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-19T01:41:45.493732" elapsed="0.349660"/>
</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-19T01:41:45.847985" 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-19T01:41:45.848482" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:45.848792" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:45.843808" elapsed="0.005138"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T01:41:45.492680" elapsed="0.356326"/>
</kw>
<msg time="2026-04-19T01:41:45.849091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.492236" elapsed="0.356906"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T01:41:45.491525" elapsed="0.357704"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:41:45.491369" elapsed="0.357911"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:44.730997" elapsed="1.118320"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T01:41:44.728721" elapsed="1.120655"/>
</kw>
<status status="PASS" start="2026-04-19T01:41:44.728370" elapsed="1.121043"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:44.728353" elapsed="1.121085"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T01:41:41.459224" elapsed="4.390263"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T01:41:36.406136" elapsed="9.443477"/>
</test>
<test id="s1-s9-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.863648" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:45.863253" elapsed="0.000424"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.864354" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:45.863845" elapsed="0.000536"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T01:41:45.864819" level="INFO">${epoch} = 1776562905.864734</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T01:41:45.864545" elapsed="0.000301"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.865433" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:45.865015" elapsed="0.000444"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.866140" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:41:45.865740" elapsed="0.000426"/>
</kw>
<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-19T01:41:45.867766" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:45.867389" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.868377" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:45.867952" elapsed="0.000451"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:45.868448" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:45.868603" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:45.866967" elapsed="0.001661"/>
</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-19T01:41:45.869679" level="INFO">${member_ip} = 10.30.171.9</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-19T01:41:45.869409" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.870486" 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-19T01:41:45.870585" 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-19T01:41:45.870340" elapsed="0.000271"/>
</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-19T01:41:45.873255" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:45.872955" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:45.872936" elapsed="0.000399"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.873790" 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-19T01:41:45.873893" 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-19T01:41:45.873481" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.874560" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:45.874092" elapsed="0.000516"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.875248" level="INFO">${conn_id} = 535</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:45.874765" elapsed="0.000510"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:45.876487" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:45.876611" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:45.875933" elapsed="0.000702"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.877101" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:45.879893" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:46.188072" 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 Sun Apr 19 01:41:36 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:41:45.879333" elapsed="0.308918"/>
</kw>
<msg time="2026-04-19T01:41:46.188368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.878008" elapsed="0.310517"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:45.875499" elapsed="0.313251"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.189231" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log'.</msg>
<msg time="2026-04-19T01:41:46.212010" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:46.212323" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:46.212425" 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-19T01:41:46.188962" elapsed="0.023523"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.212865" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.214503" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.213811" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:46.215161" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:46.214770" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.214718" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:46.215690" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T01:41:46.215451" elapsed="0.000367"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.215416" elapsed="0.000435"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:46.215897" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:46.232565" elapsed="0.000537"/>
</kw>
<kw name="Open 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-19T01:41:46.233270" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.233575" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:46.216362" elapsed="0.017362"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:45.872432" elapsed="0.361384"/>
</kw>
<msg time="2026-04-19T01:41:46.233871" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:45.871819" elapsed="0.362105"/>
</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-19T01:41:45.871293" elapsed="0.362712"/>
</kw>
<msg time="2026-04-19T01:41:46.234064" 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-19T01:41:45.870766" elapsed="0.363343"/>
</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-19T01:41:46.237158" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:41:46.237630" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.237920" 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-19T01:41:46.234398" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T01:41:46.238175" 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-19T01:41:45.869918" elapsed="0.368282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.238624" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.238380" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:46.238809" elapsed="0.000033"/>
</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-19T01:41:45.868993" elapsed="0.369947"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:41:45.868816" elapsed="0.370163"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:46.240189" level="INFO">${member_ip} = 10.30.171.128</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-19T01:41:46.239900" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.240970" 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-19T01:41:46.241137" 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-19T01:41:46.240836" elapsed="0.000328"/>
</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-19T01:41:46.243886" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:46.243619" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.243600" elapsed="0.000365"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.244256" 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-19T01:41:46.244355" 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-19T01:41:46.244128" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.244990" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.244532" elapsed="0.000522"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.245621" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:46.245211" elapsed="0.000436"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.246813" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:46.246936" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:46.246303" elapsed="0.000658"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:46.247185" elapsed="0.000876"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.250133" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:46.553342" 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 Sun Apr 19 01:41:37 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:41:46.249566" elapsed="0.303998"/>
</kw>
<msg time="2026-04-19T01:41:46.553698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:46.248297" elapsed="0.305575"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:46.245860" elapsed="0.308224"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.554715" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log'.</msg>
<msg time="2026-04-19T01:41:46.577688" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:46.577972" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:46.578115" 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-19T01:41:46.554414" elapsed="0.023756"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.578558" elapsed="0.000589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.580578" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.579775" 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-19T01:41:46.581281" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:46.580859" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.580801" elapsed="0.000687"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:46.581968" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:41:46.581655" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.581608" elapsed="0.000619"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:46.582421" 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-19T01:41:46.601828" elapsed="0.000633"/>
</kw>
<kw name="Open 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-19T01:41:46.602652" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.603008" elapsed="0.000384"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:46.583222" elapsed="0.020228"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:46.242986" elapsed="0.360564"/>
</kw>
<msg time="2026-04-19T01:41:46.603612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:46.242399" elapsed="0.361279"/>
</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-19T01:41:46.241832" elapsed="0.361932"/>
</kw>
<msg time="2026-04-19T01:41:46.603806" 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-19T01:41:46.241322" elapsed="0.362531"/>
</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-19T01:41:46.607650" 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-19T01:41:46.608276" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.608680" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:46.604188" elapsed="0.004695"/>
</kw>
<msg time="2026-04-19T01:41:46.609014" 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-19T01:41:46.240431" elapsed="0.368642"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.609693" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.609367" elapsed="0.000373"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:46.609790" elapsed="0.000034"/>
</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-19T01:41:46.239481" elapsed="0.370446"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:41:46.239289" elapsed="0.370679"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:41:46.610984" level="INFO">${member_ip} = 10.30.171.206</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-19T01:41:46.610706" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.611952" 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-19T01:41:46.612069" 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-19T01:41:46.611807" elapsed="0.000290"/>
</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-19T01:41:46.615056" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:46.614757" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.614736" elapsed="0.000456"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.615581" 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-19T01:41:46.615717" 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-19T01:41:46.615410" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.616623" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.615963" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.617642" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:41:46.617124" elapsed="0.000553"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.619511" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:41:46.619686" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:41:46.618623" elapsed="0.001098"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:46.620023" elapsed="0.000854"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.623106" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:41:46.934760" 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 Sun Apr 19 01:40:48 UTC 2026

  System load:  0.02               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:41:46.622507" elapsed="0.312480"/>
</kw>
<msg time="2026-04-19T01:41:46.935147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:46.621143" elapsed="0.314206"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:41:46.617920" elapsed="0.317612"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:41:46.936090" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776562905.864734.log'.</msg>
<msg time="2026-04-19T01:41:46.958992" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:41:46.959295" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:41:46.959410" 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-19T01:41:46.935786" elapsed="0.023677"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.959826" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.961458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.960754" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:46.962120" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:46.961776" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.961723" elapsed="0.000557"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:41:46.962634" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T01:41:46.962399" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-19T01:41:46.962366" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:41:46.962891" 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-19T01:41:46.980415" elapsed="0.000541"/>
</kw>
<kw name="Open 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-19T01:41:46.981137" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.981449" 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-19T01:41:46.963693" elapsed="0.017907"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:41:46.614207" elapsed="0.367484"/>
</kw>
<msg time="2026-04-19T01:41:46.981744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:41:46.613597" elapsed="0.368198"/>
</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-19T01:41:46.613047" elapsed="0.368826"/>
</kw>
<msg time="2026-04-19T01:41:46.981978" 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-19T01:41:46.612252" elapsed="0.369775"/>
</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-19T01:41:46.985252" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:41:46.985728" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:41:46.986018" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:41:46.982343" elapsed="0.003840"/>
</kw>
<msg time="2026-04-19T01:41:46.986274" 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-19T01:41:46.611389" elapsed="0.374910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.986722" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:46.986478" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:41:46.986806" 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-19T01:41:46.610280" elapsed="0.376653"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:41:46.610089" elapsed="0.376881"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:41:45.868683" elapsed="1.118323"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T01:41:45.866444" elapsed="1.120653"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.999341" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:46.998861" elapsed="0.000508"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:46.999848" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:46.999536" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:46.999918" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:47.000091" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:46.998434" elapsed="0.001684"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:47.001874" 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-19T01:41:47.001552" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:41:47.001948" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:41:47.002173" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:47.000969" elapsed="0.001231"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:47.011678" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:47.011422" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:47.012302" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:47.011922" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:41:47.017817" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:41:47.014548" elapsed="0.005114">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T01:41:47.012417" elapsed="0.007337">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.019953" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:47.019790" elapsed="0.000315"/>
</branch>
<status status="FAIL" start="2026-04-19T01:41:47.012398" elapsed="0.007733">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.020675" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:41:47.020818" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:47.020778" elapsed="0.000086"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:47.020760" elapsed="0.000125"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.021049" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:41:47.021122" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:41:47.006896" elapsed="0.014337">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:41:47.021306" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:41:47.002416" elapsed="0.018990">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.021629" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:41:47.021758" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:47.021722" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:47.021705" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.022018" elapsed="0.000040"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.022258" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:41:47.022324" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:41:47.000591" elapsed="0.021835">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:41:47.022546" elapsed="0.000019"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:41:47.022506" elapsed="0.000084"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:47.022489" elapsed="0.000122"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.022754" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T01:41:47.000359" elapsed="0.022466">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:41:47.000173" elapsed="0.022711">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:41:46.998003" elapsed="0.024977">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T01:41:46.997669" elapsed="0.025399">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T01:41:46.997650" elapsed="0.025483">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:41:47.023434" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:47.023207" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:47.023189" elapsed="0.000324"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:41:47.023773" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:47.023566" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:47.023551" elapsed="0.000301"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:41:46.997251" elapsed="0.026680">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:41:57.043302" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:41:57.042806" elapsed="0.000529"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:41:57.043834" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:41:57.043514" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:41:57.043911" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:41:57.044100" level="INFO">${index_list} = [1, 2, 3]</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-19T01:41:57.042375" elapsed="0.001751"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:41:57.045690" 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-19T01:41:57.045380" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:41:57.045766" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:41:57.045927" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:41:57.045009" elapsed="0.000944"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:57.053755" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:57.053487" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:41:57.054272" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:41:57.053969" elapsed="0.000348"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:41:57.147431" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:41:57.147544" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T01:41:57.147763" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:41:57.056564" elapsed="0.091809">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:41:57.054397" elapsed="0.094192">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.148875" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:57.148641" elapsed="0.000326"/>
</branch>
<status status="FAIL" start="2026-04-19T01:41:57.054374" elapsed="0.094626">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.149760" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:41:57.149953" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:57.149901" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:57.149876" elapsed="0.000186"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.150298" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:41:57.150399" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:41:57.048791" elapsed="0.101759">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:41:57.150651" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:41:57.046222" elapsed="0.104566">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.151116" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:41:57.151299" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:41:57.151248" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:57.151224" elapsed="0.000161"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.151658" elapsed="0.000033"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.151964" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:41:57.152080" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:41:57.044621" elapsed="0.107600">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:41:57.152382" elapsed="0.000021"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:41:57.152330" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:57.152307" elapsed="0.000157"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.152663" elapsed="0.000028"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T01:41:57.044386" elapsed="0.108373">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:41:57.044191" elapsed="0.108648">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:41:57.041904" elapsed="0.111065">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:41:57.041527" elapsed="0.111553">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T01:41:57.041500" elapsed="0.111625">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:41:57.153489" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:57.153217" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:57.153194" elapsed="0.000404"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:41:57.154024" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:41:57.153723" elapsed="0.000405"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:41:57.153650" elapsed="0.000521"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:41:57.040983" elapsed="0.113301">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:42:07.173847" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:42:07.173337" elapsed="0.000543"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:42:07.174381" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:42:07.174068" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:42:07.174457" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:42:07.174626" level="INFO">${index_list} = [1, 2, 3]</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-19T01:42:07.172723" elapsed="0.001929"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:07.176236" 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-19T01:42:07.175906" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:42:07.176311" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:42:07.176460" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:42:07.175526" elapsed="0.000960"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:07.184276" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:07.184004" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:07.184757" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:07.184486" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:42:07.198005" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:42:07.198112" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T01:42:07.198256" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:42:07.187011" elapsed="0.011640">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:42:07.184867" elapsed="0.013874">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.198956" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:07.198778" elapsed="0.000265"/>
</branch>
<status status="FAIL" start="2026-04-19T01:42:07.184849" elapsed="0.014221">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.199688" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:42:07.199831" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:07.199792" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:42:07.199772" elapsed="0.000124"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.200058" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:42:07.200130" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:42:07.179271" elapsed="0.020969">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:42:07.200312" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:42:07.176703" elapsed="0.023707">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.200633" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:42:07.200762" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:07.200725" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:42:07.200707" elapsed="0.000117"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.201020" elapsed="0.000040"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.201295" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:42:07.201361" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:42:07.175141" elapsed="0.026321">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:42:07.201706" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:42:07.201627" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:42:07.201589" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.202188" elapsed="0.000047"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T01:42:07.174894" elapsed="0.027449">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:42:07.174710" elapsed="0.027759">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:42:07.172097" elapsed="0.030580">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T01:42:07.171573" elapsed="0.031228">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T01:42:07.171534" elapsed="0.031333">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:42:07.203491" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:07.203011" elapsed="0.000600"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:42:07.202974" elapsed="0.000688"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:42:07.204269" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:07.203778" elapsed="0.000617"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:42:07.203744" elapsed="0.000702"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:42:07.170847" elapsed="0.033775">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.226877" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:42:17.226427" elapsed="0.000483"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.227410" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:42:17.227097" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:42:17.227486" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:42:17.227656" level="INFO">${index_list} = [1, 2, 3]</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-19T01:42:17.226004" elapsed="0.001677"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.229232" 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-19T01:42:17.228913" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:42:17.229306" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:42:17.229455" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:42:17.228561" elapsed="0.000919"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.237134" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.236851" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.237581" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.237336" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:42:17.465103" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:42:17.465290" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:42:17 GMT', 'Expires': 'Sun, 19 Apr 2026 00:42:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776562937,"status":200} 
 </msg>
<msg time="2026-04-19T01:42:17.465561" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:42:17.239807" elapsed="0.225816"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.237692" elapsed="0.228035"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.466220" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.465788" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.237672" elapsed="0.228748"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.473992" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776562937,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.469179" elapsed="0.004939"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.468596" elapsed="0.005630"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.468554" elapsed="0.005700"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.477263" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.474558" elapsed="0.002799"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.474312" elapsed="0.003150"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.474295" elapsed="0.003194"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.478244" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.477670" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.478664" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.478401" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.479621" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.479053" elapsed="0.000648"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.478869" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.478382" elapsed="0.001490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.480573" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.480045" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.480932" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.480670" elapsed="0.000451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.481876" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.481312" elapsed="0.000642"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.481148" elapsed="0.000980"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.480652" elapsed="0.001501"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:42:17.482311" elapsed="0.000659"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:42:17.484009" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.483201" elapsed="0.000851"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.484232" elapsed="0.003174"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:42:17.467567" elapsed="0.019904"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:42:17.487654" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:17.487541" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.487523" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:42:17.490611" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:42:17.487873" elapsed="0.002768"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:42:17.490695" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:42:17.490857" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:42:17.232239" elapsed="0.258646"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:42:17.490943" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:42:17.491186" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:42:17.229690" elapsed="0.261523"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.492048" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.491780" elapsed="0.000341"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.493130" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.492681" elapsed="0.000478"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:42:17.493209" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:42:17.493369" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:42:17.492341" elapsed="0.001089"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.493818" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.493591" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.494244" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.494002" elapsed="0.000268"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:42:17.494318" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.494469" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:42:17.491425" elapsed="0.003069"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:42:17.494671" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:17.494563" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.494545" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.502226" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.501959" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.502669" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.502427" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:42:17.511442" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:42:17.511518" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:42:17 GMT', 'Expires': 'Sun, 19 Apr 2026 00:42:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776562937,"status":200} 
 </msg>
<msg time="2026-04-19T01:42:17.511629" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:42:17.505068" elapsed="0.006587"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.502780" elapsed="0.008918"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.511878" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.511724" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.502762" elapsed="0.009201"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.515807" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776562937,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.513170" elapsed="0.002735"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.512915" elapsed="0.003099"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.512897" elapsed="0.003200"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.520216" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.516400" elapsed="0.003949"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.516157" elapsed="0.004343"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.516140" elapsed="0.004398"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.521634" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.520765" elapsed="0.000908"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.522151" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.521771" elapsed="0.000621"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.523537" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.522657" elapsed="0.000992"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.522429" elapsed="0.001422"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.521746" elapsed="0.002140"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.524888" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.524195" elapsed="0.000721"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.525257" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.524985" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.526191" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.525617" elapsed="0.000653"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.525454" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.524967" elapsed="0.001472"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:42:17.526591" elapsed="0.000678"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:42:17.528273" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.527435" elapsed="0.000866"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.528460" elapsed="0.003004"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:42:17.512492" elapsed="0.019038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:42:17.531708" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:17.531600" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.531581" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:42:17.534727" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:42:17.531926" elapsed="0.002830"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:42:17.534809" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:42:17.534967" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:42:17.497486" elapsed="0.037507"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:42:17.535080" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:42:17.535230" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:42:17.494935" elapsed="0.040322"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.536158" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.535818" elapsed="0.000391"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.537169" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.536757" elapsed="0.000440"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:42:17.537247" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.537406" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:42:17.536417" elapsed="0.001016"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.537809" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.537588" elapsed="0.000280"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.538255" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.538025" elapsed="0.000256"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:42:17.538328" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.538479" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:42:17.535466" elapsed="0.003038"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:42:17.538546" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:42:17.538691" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:42:17.228180" elapsed="0.310536"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:42:17.538897" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T01:42:17.538783" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.538766" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.539154" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:42:17.227924" elapsed="0.311288"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.540855" level="INFO">${session} = ClusterManagement__session_2</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-19T01:42:17.540553" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:42:17.540929" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.541093" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:42:17.540207" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.548552" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.548297" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.548994" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.548751" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:42:17.892270" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:42:17.892458" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:42:17 GMT', 'Expires': 'Sun, 19 Apr 2026 00:42:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776562937,"status":200} 
 </msg>
<msg time="2026-04-19T01:42:17.892723" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:42:17.551225" elapsed="0.341558"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.549121" elapsed="0.343764"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.893373" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.892945" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.549103" elapsed="0.344465"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.901679" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776562937,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.896312" elapsed="0.005463"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.895713" elapsed="0.006171"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.895670" elapsed="0.006242"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.904915" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.902245" elapsed="0.002762"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.901968" elapsed="0.003214"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.901951" elapsed="0.003261"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.905921" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.905387" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.906299" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.906019" elapsed="0.000449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.907248" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.906657" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.906494" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.906001" elapsed="0.001496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.908182" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.907659" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.908558" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.908300" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.909503" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.908917" elapsed="0.000665"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.908756" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.908282" elapsed="0.001466"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:42:17.909902" elapsed="0.000703"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:42:17.911569" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.910772" elapsed="0.000824"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.911752" elapsed="0.003067"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:42:17.894714" elapsed="0.020171"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:42:17.915078" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:17.914954" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.914936" elapsed="0.000210"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:42:17.917998" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:42:17.915289" elapsed="0.002738"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:42:17.918189" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:42:17.918350" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:42:17.543823" elapsed="0.374553"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:42:17.918433" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:42:17.918578" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:42:17.541330" elapsed="0.377274"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.919434" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.919183" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.920448" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.920025" elapsed="0.000483"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:42:17.920560" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:42:17.920721" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:42:17.919690" elapsed="0.001058"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.921156" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.920902" elapsed="0.000282"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.921549" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.921339" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:42:17.921622" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.921770" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:42:17.918814" elapsed="0.002980"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:42:17.921968" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:17.921860" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.921843" elapsed="0.000240"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.929699" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.929449" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.930164" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.929899" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:42:17.937973" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:42:17.938075" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:42:17 GMT', 'Expires': 'Sun, 19 Apr 2026 00:42:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776562937,"status":200} 
 </msg>
<msg time="2026-04-19T01:42:17.938188" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:42:17.932409" elapsed="0.005805"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.930274" elapsed="0.007982"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.938434" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.938282" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.930256" elapsed="0.008262"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.942949" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776562937,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.939682" elapsed="0.003450"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.939438" elapsed="0.003841"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.939420" elapsed="0.003898"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.947557" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.943732" elapsed="0.003951"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.943397" elapsed="0.004432"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.943373" elapsed="0.004494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.948859" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.948111" elapsed="0.000777"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.949262" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.948958" elapsed="0.000477"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.950215" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.949624" elapsed="0.000669"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.949462" elapsed="0.000975"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.948939" elapsed="0.001523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.951169" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.950626" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.951520" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:42:17.951267" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.952457" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:42:17.951875" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-19T01:42:17.951715" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.951249" elapsed="0.001453"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:42:17.952855" elapsed="0.000663"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:42:17.954530" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.953684" elapsed="0.000873"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.954714" elapsed="0.004443"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:42:17.939002" elapsed="0.020222"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:42:17.959484" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:42:17.959373" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.959350" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:42:17.962521" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:42:17.959701" elapsed="0.002850"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:42:17.962604" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:42:17.962763" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:42:17.924978" elapsed="0.037812"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:42:17.962848" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:42:17.962993" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:42:17.922289" elapsed="0.040731"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.963857" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776562937,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.963601" elapsed="0.000305"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.964895" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:42:17.964497" elapsed="0.000427"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:42:17.964974" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.965218" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776562937, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:42:17.964144" elapsed="0.001134"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.965660" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.965437" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:42:17.966070" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:42:17.965844" elapsed="0.000259"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:42:17.966151" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.966302" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:42:17.963247" elapsed="0.003080"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:42:17.966370" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:42:17.966515" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:42:17.539766" elapsed="0.426773"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:42:17.966712" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T01:42:17.966605" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T01:42:17.966588" elapsed="0.000204"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:42:17.966939" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:42:17.539532" elapsed="0.427463"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.968449" level="INFO">${session} = ClusterManagement__session_3</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-19T01:42:17.968124" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:42:17.968523" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:42:17.968672" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:42:17.967757" elapsed="0.000941"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.976377" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.976098" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:42:17.976825" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:42:17.976578" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:44:23.029001" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:42:17.979076" elapsed="125.054796">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:42:17.976937" elapsed="125.057260">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.034852" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:23.034345" elapsed="0.000793"/>
</branch>
<status status="FAIL" start="2026-04-19T01:42:17.976917" elapsed="125.058295">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.036860" elapsed="0.000073"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:44:23.037386" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:23.037249" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:44:23.037194" elapsed="0.000367"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.037897" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:44:23.038164" elapsed="0.000052"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:42:17.971600" elapsed="125.066897">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:44:23.038681" elapsed="0.000042"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:42:17.968909" elapsed="125.070007">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.039750" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:44:23.040075" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:23.039979" elapsed="0.000154"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:44:23.039938" elapsed="0.000218"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.040384" elapsed="0.000039"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.040645" elapsed="0.000026"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:44:23.040724" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:42:17.967380" elapsed="125.073449">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:44:23.040953" elapsed="0.000019"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:44:23.040911" elapsed="0.000086"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:44:23.040893" elapsed="0.000126"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.041213" elapsed="0.000032"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:42:17.967151" elapsed="125.074153">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:42:17.227739" elapsed="125.813627">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:42:17.225587" elapsed="125.815904">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:42:17.225247" elapsed="125.816313">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:42:17.225221" elapsed="125.816372">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:44:23.041872" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:23.041662" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:44:23.041645" elapsed="0.000307"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:44:23.042277" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:23.042006" elapsed="0.000337"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:44:23.041990" elapsed="0.000376"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:42:17.224674" elapsed="125.817790">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.059531" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:44:33.059064" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.060073" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:44:33.059738" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:44:33.060172" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T01:44:33.060356" level="INFO">${index_list} = [1, 2, 3]</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-19T01:44:33.058625" elapsed="0.001757"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.061975" 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-19T01:44:33.061668" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:44:33.062068" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:44:33.062225" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:44:33.061293" elapsed="0.000958"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.070199" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.069922" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.070734" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.070474" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:44:33.084940" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:44:33.085078" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:44:33 GMT', 'Expires': 'Sun, 19 Apr 2026 00:44:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563073,"status":200} 
 </msg>
<msg time="2026-04-19T01:44:33.085253" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:44:33.073110" elapsed="0.012181"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.070850" elapsed="0.014528"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.085638" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.085419" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.070831" elapsed="0.014927"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.091314" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563073,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.087483" elapsed="0.003973"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.087136" elapsed="0.004472"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.087110" elapsed="0.004537"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.096061" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.092087" elapsed="0.004111"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.091728" elapsed="0.004625"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.091704" elapsed="0.004690"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.097496" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.096638" elapsed="0.000907"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.098027" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.097652" elapsed="0.000685"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.099176" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.098557" elapsed="0.000699"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.098381" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.097624" elapsed="0.001808"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.100133" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.099595" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.100495" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.100233" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.101470" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.100863" elapsed="0.000687"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.100697" elapsed="0.001001"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.100214" elapsed="0.001508"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:44:33.101878" elapsed="0.000702"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:44:33.103581" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.102747" elapsed="0.000909"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.103817" elapsed="0.003076"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:44:33.086507" elapsed="0.020451"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:44:33.107185" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:33.107070" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.107010" elapsed="0.000245"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:44:33.110304" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:44:33.107444" elapsed="0.002891"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:44:33.110389" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:44:33.110554" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:44:33.065112" elapsed="0.045469"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:44:33.110641" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:44:33.110790" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:44:33.062542" elapsed="0.048276"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.111729" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.111475" elapsed="0.000305"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.112750" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.112352" elapsed="0.000427"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:44:33.112830" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:44:33.112993" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:44:33.111991" elapsed="0.001030"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.113452" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.113198" elapsed="0.000284"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.114061" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.113644" elapsed="0.000447"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:44:33.114142" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:44:33.114297" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:44:33.111116" elapsed="0.003206"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:44:33.114502" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:33.114392" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.114374" elapsed="0.000195"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.122146" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.121874" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.122599" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.122355" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:44:33.130050" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:44:33.130129" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:44:33 GMT', 'Expires': 'Sun, 19 Apr 2026 00:44:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563073,"status":200} 
 </msg>
<msg time="2026-04-19T01:44:33.130244" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:44:33.124896" elapsed="0.005378"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.122750" elapsed="0.007578"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.130603" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.130371" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.122730" elapsed="0.007996"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.136349" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563073,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.132415" elapsed="0.004067"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.132071" elapsed="0.004560"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.132022" elapsed="0.004647"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.140266" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.137107" elapsed="0.003261"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.136749" elapsed="0.003724"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.136725" elapsed="0.003776"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.141224" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.140676" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.141618" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.141325" elapsed="0.000467"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.142575" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.141984" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.141818" elapsed="0.000980"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.141304" elapsed="0.001519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.143571" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.142984" elapsed="0.000614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.143922" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.143667" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.145006" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.144298" elapsed="0.000804"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.144136" elapsed="0.001110"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.143649" elapsed="0.001621"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:44:33.145430" elapsed="0.000713"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:44:33.147147" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.146310" elapsed="0.000863"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.147329" elapsed="0.003183"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:44:33.131449" elapsed="0.019176"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:44:33.150809" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:33.150697" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.150678" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:44:33.153875" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:44:33.151025" elapsed="0.002879"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:44:33.153957" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:44:33.154151" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:44:33.117353" elapsed="0.036825"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:44:33.154237" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:44:33.154386" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:44:33.114774" elapsed="0.039639"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.155321" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.154988" elapsed="0.000382"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.156339" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.155922" elapsed="0.000445"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:44:33.156418" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:44:33.156578" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:44:33.155581" elapsed="0.001024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.156985" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.156761" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.157405" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.157186" elapsed="0.000245"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:44:33.157480" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:44:33.157662" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:44:33.154632" elapsed="0.003056"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:44:33.157733" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:44:33.157880" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:44:33.060861" elapsed="0.097044"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:44:33.158110" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T01:44:33.157974" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.157956" elapsed="0.000238"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.158343" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:44:33.060626" elapsed="0.097772"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.159829" level="INFO">${session} = ClusterManagement__session_2</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-19T01:44:33.159531" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:44:33.159935" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:44:33.160108" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:44:33.159188" elapsed="0.000945"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.168111" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.167844" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.168558" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.168313" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:44:33.178753" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:44:33.178859" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:44:33 GMT', 'Expires': 'Sun, 19 Apr 2026 00:44:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563073,"status":200} 
 </msg>
<msg time="2026-04-19T01:44:33.179012" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:44:33.170818" elapsed="0.008256"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.168668" elapsed="0.010469"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.179388" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.179174" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.168650" elapsed="0.010858"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.184929" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563073,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.181246" elapsed="0.003852"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.180833" elapsed="0.004415"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.180806" elapsed="0.004481"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.189500" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.185717" elapsed="0.003912"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.185366" elapsed="0.004455"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.185344" elapsed="0.004516"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.190730" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.190115" elapsed="0.000643"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.191106" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.190828" elapsed="0.000449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.192025" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.191466" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.191304" elapsed="0.000976"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.190810" elapsed="0.001495"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.192973" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.192469" elapsed="0.000532"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.193366" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.193111" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.194311" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.193740" elapsed="0.000648"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.193559" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.193093" elapsed="0.001475"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:44:33.194721" elapsed="0.000719"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:44:33.196428" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.195607" elapsed="0.000848"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.196613" elapsed="0.003173"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:44:33.180246" elapsed="0.019603"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:44:33.200130" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:33.199920" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.199901" elapsed="0.000298"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:44:33.203154" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:44:33.200345" elapsed="0.002838"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:44:33.203235" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:44:33.203390" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:44:33.163058" elapsed="0.040360"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:44:33.203474" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:44:33.203620" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:44:33.160352" elapsed="0.043295"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.204486" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.204236" elapsed="0.000298"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.205545" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.205150" elapsed="0.000424"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:44:33.205623" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:44:33.205824" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:44:33.204740" elapsed="0.001111"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.206239" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.206004" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.206624" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.206418" elapsed="0.000232"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:44:33.206695" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:44:33.206842" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:44:33.203854" elapsed="0.003012"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:44:33.207054" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:33.206931" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.206914" elapsed="0.000205"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.214548" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.214299" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.215049" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.214788" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:44:33.226053" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:44:33.226162" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:44:33 GMT', 'Expires': 'Sun, 19 Apr 2026 00:44:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563073,"status":200} 
 </msg>
<msg time="2026-04-19T01:44:33.226321" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:44:33.217424" elapsed="0.008935"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.215162" elapsed="0.011256"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.226669" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.226455" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.215143" elapsed="0.011643"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.232195" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563073,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.228442" elapsed="0.003887"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.228108" elapsed="0.004368"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.228080" elapsed="0.004434"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.236764" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.232928" elapsed="0.003962"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.232595" elapsed="0.004462"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.232571" elapsed="0.004527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.238112" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.237324" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.238564" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.238252" elapsed="0.000480"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.239516" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.238923" elapsed="0.000672"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.238759" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.238226" elapsed="0.001536"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.240481" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.239923" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.240836" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:44:33.240579" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.241765" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:44:33.241211" elapsed="0.000647"/>
</kw>
<status status="PASS" start="2026-04-19T01:44:33.241045" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.240561" elapsed="0.001464"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:44:33.242192" elapsed="0.000640"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:44:33.243799" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.242998" elapsed="0.000828"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.244015" elapsed="0.003071"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:44:33.227499" elapsed="0.019652"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:44:33.247329" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:44:33.247221" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.247202" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:44:33.250335" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:44:33.247539" elapsed="0.002825"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:44:33.250417" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:44:33.250571" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:44:33.209850" elapsed="0.040747"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:44:33.250654" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:44:33.250800" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:44:33.207319" elapsed="0.043507"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.251665" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563073,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.251417" elapsed="0.000297"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.252742" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:44:33.252352" elapsed="0.000419"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:44:33.252819" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:44:33.252976" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563073, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:44:33.251919" elapsed="0.001083"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.253395" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.253174" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:44:33.253782" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:44:33.253576" elapsed="0.000231"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:44:33.253856" elapsed="0.000066"/>
</return>
<msg time="2026-04-19T01:44:33.254208" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:44:33.251063" elapsed="0.003173"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:44:33.254281" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:44:33.254426" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:44:33.158770" elapsed="0.095680"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:44:33.254625" elapsed="0.000026"/>
</continue>
<status status="PASS" start="2026-04-19T01:44:33.254518" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T01:44:33.254501" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:44:33.254872" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:44:33.158542" elapsed="0.096385"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.256566" level="INFO">${session} = ClusterManagement__session_3</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-19T01:44:33.256269" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:44:33.256637" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:44:33.256782" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:44:33.255905" elapsed="0.000901"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.264291" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.264025" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:44:33.264735" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:44:33.264492" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:46:38.329251" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:44:33.267295" elapsed="125.065814">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:44:33.264845" elapsed="125.068478">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.333733" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:38.333410" elapsed="0.000422"/>
</branch>
<status status="FAIL" start="2026-04-19T01:44:33.264827" elapsed="125.069040">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.334705" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:46:38.334910" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:38.334853" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:46:38.334827" elapsed="0.000173"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.335245" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:46:38.335345" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:44:33.259546" elapsed="125.075954">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:46:38.335600" elapsed="0.000021"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:44:33.257013" elapsed="125.078720">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.336062" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:46:38.336241" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:38.336192" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:46:38.336168" elapsed="0.000160"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.336619" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.336926" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:46:38.337019" elapsed="0.000039"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:44:33.255491" elapsed="125.081688">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:46:38.337341" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:46:38.337290" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:46:38.337267" elapsed="0.000159"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.337628" elapsed="0.000029"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:44:33.255090" elapsed="125.082636">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:44:33.060440" elapsed="125.277445">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:44:33.058096" elapsed="125.279928">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:44:33.057607" elapsed="125.280524">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:44:33.057574" elapsed="125.280600">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:46:38.338547" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:38.338267" elapsed="0.000356"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:46:38.338244" elapsed="0.000412"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:46:38.339025" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:38.338732" elapsed="0.000410"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:46:38.338710" elapsed="0.000465"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:44:33.056843" elapsed="125.282446">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.357837" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:46:48.357391" elapsed="0.000478"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.358380" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:46:48.358069" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:46:48.358455" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:46:48.358617" level="INFO">${index_list} = [1, 2, 3]</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-19T01:46:48.356966" elapsed="0.001676"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.360177" 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-19T01:46:48.359853" elapsed="0.000351"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:46:48.360251" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.360397" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:46:48.359507" elapsed="0.000915"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.368229" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.367953" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.368673" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.368431" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:46:48.380828" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:46:48.380907" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:46:48 GMT', 'Expires': 'Sun, 19 Apr 2026 00:46:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563208,"status":200} 
 </msg>
<msg time="2026-04-19T01:46:48.381019" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:46:48.370902" elapsed="0.010166"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.368783" elapsed="0.012330"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.381291" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.381138" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.368765" elapsed="0.012672"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.388605" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563208,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.382670" elapsed="0.006149"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.382425" elapsed="0.006663"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.382406" elapsed="0.006746"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.393069" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.389822" elapsed="0.003340"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.389280" elapsed="0.003990"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.389243" elapsed="0.004054"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.394024" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.393478" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.394413" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.394151" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.395371" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.394779" elapsed="0.000672"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.394611" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.394133" elapsed="0.001490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.396316" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.395790" elapsed="0.000554"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.396675" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.396419" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.397828" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.397095" elapsed="0.000852"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.396879" elapsed="0.001290"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.396401" elapsed="0.001801"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:46:48.398417" elapsed="0.000859"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:46:48.400264" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.399447" elapsed="0.000844"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.400449" elapsed="0.004489"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:46:48.381969" elapsed="0.023034"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:46:48.405201" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:48.405091" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.405071" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:46:48.408257" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:46:48.405414" elapsed="0.002873"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:46:48.408340" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:46:48.408499" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:46:48.363356" elapsed="0.045169"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:46:48.408619" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:46:48.408768" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:46:48.360635" elapsed="0.048159"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.409628" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.409375" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.410694" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.410294" elapsed="0.000429"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:46:48.410774" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.410932" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:46:48.409889" elapsed="0.001070"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.411389" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.411163" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.411781" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.411571" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:46:48.411855" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:46:48.412005" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:46:48.409006" elapsed="0.003038"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:46:48.412223" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:48.412114" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.412097" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.419720" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.419470" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.420187" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.419924" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:46:48.428584" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:46:48.428662" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:46:48 GMT', 'Expires': 'Sun, 19 Apr 2026 00:46:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563208,"status":200} 
 </msg>
<msg time="2026-04-19T01:46:48.428779" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:46:48.422578" elapsed="0.006227"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.420298" elapsed="0.008550"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.429040" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.428873" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.420280" elapsed="0.008847"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.433968" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776563208,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.430362" elapsed="0.003768"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.430085" elapsed="0.004196"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.430065" elapsed="0.004254"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.438614" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.434736" elapsed="0.004005"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.434399" elapsed="0.004450"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.434376" elapsed="0.004501"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.439581" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.439057" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.439934" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.439679" elapsed="0.000457"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.440897" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.440326" elapsed="0.000652"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.440163" elapsed="0.000998"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.439660" elapsed="0.001526"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.441858" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.441348" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.442242" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.441971" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.443178" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.442604" elapsed="0.000655"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.442442" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.441950" elapsed="0.001478"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:46:48.443581" elapsed="0.000692"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:46:48.445259" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.444440" elapsed="0.000845"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.445441" elapsed="0.003050"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:46:48.429621" elapsed="0.018935"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:46:48.448732" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:48.448625" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.448607" elapsed="0.000190"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:46:48.451736" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:46:48.448941" elapsed="0.002824"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:46:48.451817" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:46:48.451972" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:46:48.415000" elapsed="0.036998"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:46:48.452089" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.452238" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:46:48.412489" elapsed="0.039775"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.453220" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.452858" elapsed="0.000415"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.454376" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.453827" elapsed="0.000578"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:46:48.454457" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:46:48.454651" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:46:48.453486" elapsed="0.001193"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.455090" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.454844" elapsed="0.000274"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.455487" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.455275" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:46:48.455561" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:46:48.455716" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:46:48.452508" elapsed="0.003233"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:46:48.455784" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:46:48.455928" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:46:48.359132" elapsed="0.096820"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:46:48.456162" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T01:46:48.456021" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.456004" elapsed="0.000244"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.456396" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:46:48.358887" elapsed="0.097564"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.458176" level="INFO">${session} = ClusterManagement__session_2</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-19T01:46:48.457829" elapsed="0.000374"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:46:48.458249" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:46:48.458397" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:46:48.457484" elapsed="0.000938"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.465952" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.465679" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.466416" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.466171" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:46:48.476078" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:46:48.476185" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:46:48 GMT', 'Expires': 'Sun, 19 Apr 2026 00:46:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563208,"status":200} 
 </msg>
<msg time="2026-04-19T01:46:48.476394" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:46:48.468654" elapsed="0.007778"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.466527" elapsed="0.009967"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.476745" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.476529" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.466509" elapsed="0.010357"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.482533" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563208,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.478583" elapsed="0.004084"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.478248" elapsed="0.004570"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.478221" elapsed="0.004635"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.487283" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.483307" elapsed="0.004108"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.482937" elapsed="0.004631"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.482913" elapsed="0.004694"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.488614" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.487846" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.489140" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.488757" elapsed="0.000626"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.490567" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.489651" elapsed="0.001047"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.489420" elapsed="0.001442"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.488727" elapsed="0.002160"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.491599" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.491081" elapsed="0.000545"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.491976" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.491697" elapsed="0.000472"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.492926" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.492358" elapsed="0.000648"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.492195" elapsed="0.000975"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.491679" elapsed="0.001515"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:46:48.493350" elapsed="0.000674"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:46:48.495229" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.494347" elapsed="0.000909"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.495412" elapsed="0.003026"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:46:48.477588" elapsed="0.020916"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:46:48.498682" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:48.498574" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.498555" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:46:48.501672" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:46:48.498893" elapsed="0.002807"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:46:48.501752" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:46:48.501907" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:46:48.461163" elapsed="0.040825"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:46:48.502065" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.502216" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:46:48.458633" elapsed="0.043609"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.503161" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.502804" elapsed="0.000408"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.504212" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.503801" elapsed="0.000440"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:46:48.504291" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.504448" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:46:48.503461" elapsed="0.001013"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.504848" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.504628" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.505257" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.505045" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:46:48.505330" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.505477" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:46:48.502453" elapsed="0.003048"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:46:48.505675" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:48.505568" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.505551" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.513463" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.513214" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.513909" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.513664" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:46:48.521888" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:46:48.521994" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 01:46:48 GMT', 'Expires': 'Sun, 19 Apr 2026 00:46:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563208,"status":200} 
 </msg>
<msg time="2026-04-19T01:46:48.522163" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:46:48.516192" elapsed="0.006000"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.514056" elapsed="0.008179"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.522412" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.522260" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.514023" elapsed="0.008507"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.527821" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776563208,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.524108" elapsed="0.003846"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.523752" elapsed="0.004373"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.523727" elapsed="0.004438"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.532001" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.528581" elapsed="0.003529"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.528245" elapsed="0.003973"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.528222" elapsed="0.004023"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.532932" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.532410" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.533305" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.533045" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.534275" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.533666" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.533503" elapsed="0.000999"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.533012" elapsed="0.001514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.535274" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.534688" elapsed="0.000614"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.535628" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:46:48.535372" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.536569" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:46:48.535993" elapsed="0.000655"/>
</kw>
<status status="PASS" start="2026-04-19T01:46:48.535830" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.535353" elapsed="0.001466"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:46:48.536973" elapsed="0.000667"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:46:48.538633" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.537807" elapsed="0.000853"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.538816" elapsed="0.003134"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:46:48.523166" elapsed="0.018849"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:46:48.542209" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:46:48.542101" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.542082" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T01:46:48.545220" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T01:46:48.542418" elapsed="0.002831"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T01:46:48.545302" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:46:48.545457" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T01:46:48.508675" elapsed="0.036809"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:46:48.545546" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:46:48.545728" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T01:46:48.505954" elapsed="0.039801"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.546615" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776563208,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.546364" elapsed="0.000300"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.547650" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:46:48.547257" elapsed="0.000422"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T01:46:48.547730" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.547892" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776563208, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T01:46:48.546872" elapsed="0.001045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.548399" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.548174" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:46:48.548794" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T01:46:48.548581" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T01:46:48.548866" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:46:48.549013" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T01:46:48.545991" elapsed="0.003062"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T01:46:48.549098" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:46:48.549242" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T01:46:48.457085" elapsed="0.092181"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T01:46:48.549439" elapsed="0.000026"/>
</continue>
<status status="PASS" start="2026-04-19T01:46:48.549332" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T01:46:48.549315" elapsed="0.000203"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:46:48.549663" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:46:48.456600" elapsed="0.093117"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.551365" level="INFO">${session} = ClusterManagement__session_3</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-19T01:46:48.551015" elapsed="0.000377"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:46:48.551438" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:46:48.551585" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:46:48.550675" elapsed="0.000934"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.559314" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.559064" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:46:48.559756" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:46:48.559514" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:48:53.664233" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:46:48.562004" elapsed="125.105989">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:46:48.559865" elapsed="125.108364">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.668737" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:53.668314" elapsed="0.000694"/>
</branch>
<status status="FAIL" start="2026-04-19T01:46:48.559847" elapsed="125.109263">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.670415" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:48:53.670736" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:53.670650" elapsed="0.000227"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:48:53.670608" elapsed="0.000319"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.671318" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:48:53.671480" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:46:48.554548" elapsed="125.117179">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:48:53.671890" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T01:46:48.551818" elapsed="125.120326">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.672642" elapsed="0.000054"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T01:48:53.672933" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:53.672851" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:48:53.672809" elapsed="0.000297"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.673551" elapsed="0.000058"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.674077" elapsed="0.000055"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T01:48:53.674232" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T01:46:48.550299" elapsed="125.124160">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T01:48:53.674718" elapsed="0.000034"/>
</continue>
<status status="NOT RUN" start="2026-04-19T01:48:53.674636" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:48:53.674596" elapsed="0.000260"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.675223" elapsed="0.000103"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:46:48.549853" elapsed="125.125590">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:46:48.358699" elapsed="125.316874">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T01:46:48.356553" elapsed="125.319234">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:46:48.356212" elapsed="125.319673">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T01:46:48.356187" elapsed="125.319740">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T01:48:53.676318" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:53.676018" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:48:53.675994" elapsed="0.000431"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T01:48:53.676787" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:53.676498" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:48:53.676476" elapsed="0.000421"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T01:46:48.355681" elapsed="125.321325">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T01:48:53.677182" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:41:46.987415" elapsed="426.689952">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:48:53.681908" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:48:53.681451" elapsed="0.000485"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:48:53.682431" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:48:53.682116" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:48:53.682504" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:48:53.682662" level="INFO">${index_list} = [1, 2, 3]</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-19T01:48:53.681009" elapsed="0.001679"/>
</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-19T01:48:53.683792" level="INFO">${member_ip} = 10.30.171.9</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-19T01:48:53.683521" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:53.684656" 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-19T01:48:53.684757" 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-19T01:48:53.684495" elapsed="0.000289"/>
</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-19T01:48:53.687485" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:53.687179" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:53.687160" elapsed="0.000406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:53.687839" 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-19T01:48:53.687940" 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-19T01:48:53.687713" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:53.688611" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:53.688135" elapsed="0.000523"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:53.689315" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:53.688815" elapsed="0.000531"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:48:53.690694" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:48:53.690792" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:48:53.690233" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:53.690985" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:48:53.693148" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:48:54.261362" 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 Sun Apr 19 01:48:53 UTC 2026

  System load:  0.02               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:41:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:48:53.692452" elapsed="0.569117"/>
</kw>
<msg time="2026-04-19T01:48:54.261773" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:53.691740" elapsed="0.570172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:48:53.689619" elapsed="0.572405"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.262559" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T01:48:54.274954" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T01:48:54.275137" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:48:54.275200" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:48:54.262289" elapsed="0.012961"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:54.275513" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.276969" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:54.276300" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:54.277591" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:54.277293" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:54.277242" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:48:54.278142" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:48:54.277870" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:54.277836" elapsed="0.000494"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:54.278404" 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-19T01:48:54.284586" elapsed="0.000568"/>
</kw>
<kw name="Open 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-19T01:48:54.285321" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:54.285629" 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-19T01:48:54.279130" elapsed="0.006645"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:48:53.686607" elapsed="0.599263"/>
</kw>
<msg time="2026-04-19T01:48:54.285924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:53.686047" elapsed="0.599938"/>
</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-19T01:48:53.685471" elapsed="0.600608"/>
</kw>
<msg time="2026-04-19T01:48:54.286122" 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-19T01:48:53.684947" elapsed="0.601231"/>
</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-19T01:48:54.289138" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:48:54.289611" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:54.289902" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:54.286467" elapsed="0.003597"/>
</kw>
<msg time="2026-04-19T01:48:54.290159" 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-19T01:48:53.684054" elapsed="0.606130"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.290604" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:54.290359" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:48:54.290686" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:48:53.683068" elapsed="0.607741"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:48:53.682876" elapsed="0.607971"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:54.291879" level="INFO">${member_ip} = 10.30.171.128</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-19T01:48:54.291600" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.292768" 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-19T01:48:54.292866" 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-19T01:48:54.292631" elapsed="0.000261"/>
</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-19T01:48:54.295799" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:54.295523" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:54.295504" elapsed="0.000377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.296175" 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-19T01:48:54.296277" 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-19T01:48:54.296044" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.296924" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:54.296455" elapsed="0.000516"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.297578" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:54.297165" elapsed="0.000440"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.298688" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:48:54.298781" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:48:54.298301" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:54.298969" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.300878" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:48:54.865736" 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 Sun Apr 19 01:48:54 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:41:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:48:54.300270" elapsed="0.565873"/>
</kw>
<msg time="2026-04-19T01:48:54.866392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:54.299705" elapsed="0.566961"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:48:54.297823" elapsed="0.569070"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.868023" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T01:48:54.880491" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T01:48:54.880609" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:48:54.880653" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:48:54.867401" elapsed="0.013276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:54.880846" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.881640" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:54.881319" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:54.881927" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:54.881774" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:54.881747" elapsed="0.000254"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:48:54.882188" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:48:54.882081" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:54.882065" elapsed="0.000268"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:54.882371" 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-19T01:48:54.885636" elapsed="0.000571"/>
</kw>
<kw name="Open 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-19T01:48:54.886373" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:54.886680" 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-19T01:48:54.882698" elapsed="0.004132"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:48:54.294926" elapsed="0.591999"/>
</kw>
<msg time="2026-04-19T01:48:54.886980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:54.294344" elapsed="0.592725"/>
</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-19T01:48:54.293767" elapsed="0.593382"/>
</kw>
<msg time="2026-04-19T01:48:54.887190" 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-19T01:48:54.293062" elapsed="0.594184"/>
</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-19T01:48:54.890201" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T01:48:54.890672" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:54.890960" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:54.887534" elapsed="0.003589"/>
</kw>
<msg time="2026-04-19T01:48:54.891214" 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-19T01:48:54.292194" elapsed="0.599045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.891683" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:54.891414" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:48:54.891773" 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-19T01:48:54.291144" elapsed="0.600751"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:48:54.290945" elapsed="0.600988"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:54.892948" level="INFO">${member_ip} = 10.30.171.206</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-19T01:48:54.892677" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.893770" 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-19T01:48:54.893867" 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-19T01:48:54.893636" elapsed="0.000257"/>
</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-19T01:48:54.896540" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:54.896264" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:54.896246" elapsed="0.000374"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.896893" 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-19T01:48:54.896993" 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-19T01:48:54.896766" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.897652" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:54.897185" elapsed="0.000548"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.898516" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:54.897891" elapsed="0.000653"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:48:54.899621" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:48:54.899739" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:48:54.899237" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:54.899924" elapsed="0.000890"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:48:54.902187" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:48:55.483431" 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 Sun Apr 19 01:48:55 UTC 2026

  System load:  0.01               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:41:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:48:54.901555" elapsed="0.582204"/>
</kw>
<msg time="2026-04-19T01:48:55.484068" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:54.900988" elapsed="0.583338"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:48:54.898760" elapsed="0.585767"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:48:55.485465" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T01:48:55.498287" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T01:48:55.498503" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:48:55.498584" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:48:55.484959" elapsed="0.013669"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:55.498962" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.500641" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:55.499942" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:55.501250" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:55.500916" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.500863" elapsed="0.000544"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:48:55.501763" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T01:48:55.501527" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.501492" elapsed="0.000463"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:55.502062" 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-19T01:48:55.509671" elapsed="0.000582"/>
</kw>
<kw name="Open 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-19T01:48:55.510419" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:55.510723" 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-19T01:48:55.502760" elapsed="0.008112"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:48:54.895699" elapsed="0.615264"/>
</kw>
<msg time="2026-04-19T01:48:55.511017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:54.895134" elapsed="0.615967"/>
</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-19T01:48:54.894564" elapsed="0.616616"/>
</kw>
<msg time="2026-04-19T01:48:55.511221" 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-19T01:48:54.894061" elapsed="0.617280"/>
</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-19T01:48:55.514299" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:48:55.514780" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:55.515085" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:55.511634" elapsed="0.003598"/>
</kw>
<msg time="2026-04-19T01:48:55.515321" 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-19T01:48:54.893204" elapsed="0.622142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.515766" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:55.515523" elapsed="0.000283"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:48:55.515848" elapsed="0.000057"/>
</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-19T01:48:54.892243" elapsed="0.623759"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:48:54.892058" elapsed="0.623996"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:48:53.682744" elapsed="1.833345"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T01:48:53.677801" elapsed="1.838348"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T01:41:45.855275" elapsed="429.660957">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:55.516409" elapsed="0.000022"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T01:48:55.516649" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:55.517009" elapsed="0.000038"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:55.517246" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:55.517519" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:55.517336" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:48:55.517319" elapsed="0.000282"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T01:48:55.516834" elapsed="0.000791"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T01:48:55.516726" elapsed="0.000923"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:55.517802" elapsed="0.000021"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:41:45.850229" elapsed="429.667748">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T01:48:55.518574" elapsed="0.000265"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T01:34:34.548067" elapsed="860.970808"/>
</suite>
<suite id="s1-s10" name="Master Stability" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/master_stability.robot">
<kw name="Setup_Keyword" 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-19T01:48:55.607922" 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-19T01:48:55.603852" elapsed="0.004123"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T01:48:55.603623" elapsed="0.004435"/>
</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-19T01:48:55.612912" 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-19T01:48:55.609201" elapsed="0.003742"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T01:48:55.613162" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:55.613040" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.613004" elapsed="0.000228"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.613730" 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-19T01:48:55.613380" elapsed="0.000393"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.614258" level="INFO">${cluster_size} = 3</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-19T01:48:55.613930" elapsed="0.000353"/>
</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-19T01:48:55.614780" elapsed="0.000296"/>
</kw>
<msg time="2026-04-19T01:48:55.615174" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:48:55.615221" level="INFO">${possibly_int_of_members} = 3</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-19T01:48:55.614444" elapsed="0.000800"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.615776" level="INFO">${int_of_members} = 3</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-19T01:48:55.615408" elapsed="0.000394"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.616846" 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-19T01:48:55.616586" elapsed="0.000287"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.617287" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:48:55.617016" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.617751" 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-19T01:48:55.617466" elapsed="0.000312"/>
</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-19T01:48:55.620786" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.621487" level="INFO">${member_ip} = 10.30.171.9</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-19T01:48:55.621167" elapsed="0.000347"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:48:55.621664" elapsed="0.000228"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.622680" 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-19T01:48:55.622386" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:48:55.622753" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:48:55.622911" 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-19T01:48:55.622096" elapsed="0.000840"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:48:55.623696" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6e5a550&gt;, timeout=125, 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-19T01:48:55.623106" elapsed="0.000727"/>
</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-19T01:48:55.624007" elapsed="0.000207"/>
</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-19T01:48:55.620231" elapsed="0.004043"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:48:55.620044" elapsed="0.004274"/>
</iter>
<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-19T01:48:55.625153" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.625818" level="INFO">${member_ip} = 10.30.171.128</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-19T01:48:55.625495" elapsed="0.000350"/>
</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-19T01:48:55.625991" elapsed="0.000239"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.627057" level="INFO">${session} = ClusterManagement__session_2</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-19T01:48:55.626703" elapsed="0.000382"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:48:55.627131" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:48:55.627281" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T01:48:55.626416" elapsed="0.000890"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:48:55.627856" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f769d4d0&gt;, timeout=125, 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-19T01:48:55.627454" elapsed="0.000527"/>
</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-19T01:48:55.628159" elapsed="0.000192"/>
</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-19T01:48:55.624582" elapsed="0.003829"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:48:55.624404" elapsed="0.004051"/>
</iter>
<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-19T01:48:55.629284" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.629947" level="INFO">${member_ip} = 10.30.171.206</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-19T01:48:55.629625" elapsed="0.000348"/>
</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-19T01:48:55.630141" elapsed="0.000222"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.631148" level="INFO">${session} = ClusterManagement__session_3</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-19T01:48:55.630837" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:48:55.631220" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:48:55.631369" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T01:48:55.630549" elapsed="0.000845"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:48:55.631967" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f70da390&gt;, timeout=125, 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-19T01:48:55.631544" elapsed="0.000548"/>
</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-19T01:48:55.632250" elapsed="0.000187"/>
</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-19T01:48:55.628719" elapsed="0.003776"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:48:55.628540" elapsed="0.003998"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T01:48:55.617832" elapsed="0.014736"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.633143" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T01:48:55.632725" elapsed="0.000461"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.633744" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T01:48:55.633344" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.634346" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T01:48:55.633945" elapsed="0.000444"/>
</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-19T01:48:55.616139" elapsed="0.018306"/>
</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-19T01:48:55.608842" elapsed="0.025659"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:48:55.634679" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:55.634566" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.634548" elapsed="0.000197"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.637987" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:48:55.637606" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.638496" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:48:55.638189" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:48:55.638566" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:48:55.638721" level="INFO">${index_list} = [1, 2, 3]</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-19T01:48:55.637280" elapsed="0.001466"/>
</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-19T01:48:55.639726" level="INFO">${member_ip} = 10.30.171.9</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-19T01:48:55.639463" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:55.640500" 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-19T01:48:55.640600" 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-19T01:48:55.640342" elapsed="0.000284"/>
</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-19T01:48:55.643893" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:55.643340" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.643321" elapsed="0.000731"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:55.644682" 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-19T01:48:55.644908" 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-19T01:48:55.644255" elapsed="0.000705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.645883" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:55.645237" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:55.647170" 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-19T01:48:55.646274" elapsed="0.000945"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.648981" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:48:55.649175" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:48:55.648633" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:55.649550" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:48:55.651265" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:48:55.960868" 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 Sun Apr 19 01:48:53 UTC 2026

  System load:  0.02               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:48:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:48:55.650792" elapsed="0.310258"/>
</kw>
<msg time="2026-04-19T01:48:55.961145" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:55.650360" elapsed="0.310959"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:48:55.647644" elapsed="0.313834"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:48:55.962479" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:48:55.974940" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:48:55.975392" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:48:55.975700" 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-19T01:48:55.961947" elapsed="0.013871"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:55.976565" elapsed="0.001089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.980218" 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-19T01:48:55.978890" elapsed="0.001560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:55.981234" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:55.980816" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.980757" elapsed="0.000702"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:48:55.981872" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T01:48:55.981570" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.981546" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:55.982222" 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-19T01:48:55.986830" elapsed="0.000783"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:55.987995" elapsed="0.000468"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:55.988822" elapsed="0.000267"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:55.982873" elapsed="0.006286"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:48:55.642409" elapsed="0.346935"/>
</kw>
<msg time="2026-04-19T01:48:55.989402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:55.641774" elapsed="0.347680"/>
</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-19T01:48:55.641297" elapsed="0.348239"/>
</kw>
<msg time="2026-04-19T01:48:55.989577" 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-19T01:48:55.640779" elapsed="0.348843"/>
</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-19T01:48:55.992363" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T01:48:55.992844" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:55.993159" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:55.989912" elapsed="0.003395"/>
</kw>
<msg time="2026-04-19T01:48:55.993412" 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-19T01:48:55.639973" elapsed="0.353466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:55.993858" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:55.993611" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:48:55.993941" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:48:55.639112" elapsed="0.354970"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:48:55.638923" elapsed="0.355200"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:55.995087" level="INFO">${member_ip} = 10.30.171.128</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-19T01:48:55.994777" elapsed="0.000337"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:55.995838" 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-19T01:48:55.995979" 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-19T01:48:55.995700" elapsed="0.000306"/>
</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-19T01:48:55.999928" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:55.999370" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:55.999349" elapsed="0.000785"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.000771" 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-19T01:48:56.000998" 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-19T01:48:56.000336" elapsed="0.000738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.002011" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:56.001338" elapsed="0.000796"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.003297" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:56.002398" elapsed="0.000949"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.005106" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:48:56.005282" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:48:56.004719" elapsed="0.000606"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:56.005670" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.007296" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:48:56.314118" 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 Sun Apr 19 01:48:54 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:48:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:48:56.006938" elapsed="0.307352"/>
</kw>
<msg time="2026-04-19T01:48:56.314376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:56.006484" elapsed="0.308043"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:48:56.003783" elapsed="0.310892"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.315545" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:48:56.328213" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:48:56.328448" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:48:56.328586" 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-19T01:48:56.315062" elapsed="0.013591"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.329198" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.333061" 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-19T01:48:56.331748" elapsed="0.001546"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:56.334253" elapsed="0.000109"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:56.333653" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:56.333599" elapsed="0.001009"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:48:56.335583" elapsed="0.000165"/>
</return>
<status status="PASS" start="2026-04-19T01:48:56.334789" elapsed="0.001392"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:56.334751" elapsed="0.001571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:56.336506" elapsed="0.000055"/>
</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-19T01:48:56.340659" elapsed="0.000507"/>
</kw>
<kw name="Open 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-19T01:48:56.341437" elapsed="0.000297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.341988" elapsed="0.000258"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:56.337424" elapsed="0.004891"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:48:55.998397" elapsed="0.344088"/>
</kw>
<msg time="2026-04-19T01:48:56.342541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:55.997772" elapsed="0.344821"/>
</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-19T01:48:55.996873" elapsed="0.345798"/>
</kw>
<msg time="2026-04-19T01:48:56.342711" 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-19T01:48:55.996359" elapsed="0.346398"/>
</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-19T01:48:56.345470" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:48:56.345997" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.346385" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:56.343101" elapsed="0.003430"/>
</kw>
<msg time="2026-04-19T01:48:56.346619" 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-19T01:48:55.995328" elapsed="0.351315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.347136" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:56.346815" elapsed="0.000363"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:48:56.347220" 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-19T01:48:55.994415" elapsed="0.352929"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:48:55.994222" elapsed="0.353160"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:56.348329" level="INFO">${member_ip} = 10.30.171.206</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-19T01:48:56.348022" elapsed="0.000333"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.349075" 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-19T01:48:56.349175" 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-19T01:48:56.348918" elapsed="0.000282"/>
</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-19T01:48:56.352451" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:56.351877" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:56.351858" elapsed="0.000714"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.353218" 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-19T01:48:56.353443" 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-19T01:48:56.352764" elapsed="0.000730"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.354474" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:56.353802" elapsed="0.000776"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.355742" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:56.354839" elapsed="0.000961"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.357506" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:48:56.357678" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:48:56.357146" elapsed="0.000573"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:56.358063" elapsed="0.000606"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.359983" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:48:56.663464" 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 Sun Apr 19 01:48:55 UTC 2026

  System load:  0.01               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:48:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:48:56.359572" elapsed="0.304046"/>
</kw>
<msg time="2026-04-19T01:48:56.663711" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:56.359014" elapsed="0.304853"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:48:56.356266" elapsed="0.307751"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.664905" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:48:56.678061" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:48:56.678295" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:48:56.678438" 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-19T01:48:56.664428" elapsed="0.014078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.678920" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.681419" 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-19T01:48:56.680603" elapsed="0.000964"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:56.682210" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:56.681800" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:56.681763" elapsed="0.000677"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:48:56.682862" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T01:48:56.682552" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:56.682528" elapsed="0.000607"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:48:56.683215" 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-19T01:48:56.687717" elapsed="0.000742"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:56.688838" elapsed="0.000419"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.689615" elapsed="0.000310"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:56.683861" elapsed="0.006195"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:48:56.350944" elapsed="0.339358"/>
</kw>
<msg time="2026-04-19T01:48:56.690451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:48:56.350346" elapsed="0.340189"/>
</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-19T01:48:56.349844" elapsed="0.340808"/>
</kw>
<msg time="2026-04-19T01:48:56.690710" 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-19T01:48:56.349352" elapsed="0.341422"/>
</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-19T01:48:56.694179" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:48:56.694648" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.694940" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:48:56.691202" elapsed="0.003903"/>
</kw>
<msg time="2026-04-19T01:48:56.695195" 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-19T01:48:56.348566" elapsed="0.346653"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.695636" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:56.695391" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:48:56.695718" 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-19T01:48:56.347658" elapsed="0.348182"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:48:56.347479" elapsed="0.348397"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:48:55.638797" elapsed="1.057116"/>
</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-19T01:48:55.634959" elapsed="1.061013"/>
</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-19T01:48:56.696159" elapsed="0.000226"/>
</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-19T01:48:56.709700" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:56.709590" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:56.709569" elapsed="0.000201"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.710074" 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-19T01:48:56.710178" 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-19T01:48:56.709921" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.710613" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:56.710354" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:56.711063" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:56.710806" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:56.711839" 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-19T01:48:56.711616" elapsed="0.000335">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T01:48:56.712074" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:48:56.712122" 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-19T01:48:56.711262" 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-19T01:48:56.712472" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:56.712221" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:56.712202" elapsed="0.000368"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:56.713319" level="INFO">${ip_address} = 10.30.171.9</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-19T01:48:56.713052" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:48:56.713391" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:48:56.713540" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:48:56.712768" elapsed="0.000797"/>
</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-19T01:48:56.713755" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.714451" level="INFO">index=10
host=10.30.171.9
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-19T01:48:56.714551" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.714345" 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-19T01:48:56.714723" elapsed="0.002189"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:48:56.717350" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:48:57.698011" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:48:56.717090" elapsed="0.981099"/>
</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-19T01:48:57.701925" 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-19T01:48:57.702479" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:57.702790" 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-19T01:48:57.699372" elapsed="0.003570"/>
</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-19T01:48:57.698636" elapsed="0.004358"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:48:56.709307" elapsed="0.993764"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:48:56.697106" elapsed="1.006016"/>
</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-19T01:48:56.696727" elapsed="1.006446"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:48:56.696590" elapsed="1.006631"/>
</iter>
<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-19T01:48:57.716109" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:57.715978" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:57.715954" elapsed="0.000235"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:57.716485" 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-19T01:48:57.716604" 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-19T01:48:57.716346" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:57.717061" 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-19T01:48:57.716783" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:57.717498" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:57.717255" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:57.718303" level="FAIL">Dictionary does not contain key '2'.</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-19T01:48:57.718067" elapsed="0.000339">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T01:48:57.718511" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:48:57.718628" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T01:48:57.717695" elapsed="0.000959"/>
</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-19T01:48:57.718956" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:57.718732" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:57.718713" elapsed="0.000366"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:57.719822" level="INFO">${ip_address} = 10.30.171.128</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-19T01:48:57.719556" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:48:57.719895" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:48:57.720068" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:48:57.719285" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:48:57.720245" elapsed="0.000426"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:57.720943" level="INFO">index=12
host=10.30.171.128
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-19T01:48:57.721057" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T01:48:57.720837" 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-19T01:48:57.721229" elapsed="0.003498"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:48:57.725177" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:48:58.496446" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:48:57.724891" elapsed="0.771718"/>
</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-19T01:48:58.500094" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T01:48:58.500628" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:48:58.500957" elapsed="0.000122"/>
</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-19T01:48:58.497784" elapsed="0.003349"/>
</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-19T01:48:58.497074" elapsed="0.004106"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:48:57.715686" elapsed="0.785546"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:48:57.703836" elapsed="0.797443"/>
</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-19T01:48:57.703464" elapsed="0.797867"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:48:57.703326" elapsed="0.798045"/>
</iter>
<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-19T01:48:58.514464" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:48:58.514345" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:58.514322" elapsed="0.000216"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:58.514887" 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-19T01:48:58.514995" 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-19T01:48:58.514750" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:58.515452" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:58.515187" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:48:58.515932" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:48:58.515683" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:58.516739" level="FAIL">Dictionary does not contain key '3'.</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-19T01:48:58.516507" elapsed="0.000341">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T01:48:58.516972" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:48:58.517017" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T01:48:58.516152" elapsed="0.000902"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-19T01:48:58.517351" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:48:58.517131" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T01:48:58.517113" elapsed="0.000335"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:48:58.518398" level="INFO">${ip_address} = 10.30.171.206</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-19T01:48:58.517910" elapsed="0.000514"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:48:58.518472" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:48:58.518627" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:48:58.517643" elapsed="0.001008"/>
</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-19T01:48:58.518800" elapsed="0.000417"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:48:58.519487" level="INFO">index=14
host=10.30.171.206
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-19T01:48:58.519584" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T01:48:58.519381" 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-19T01:48:58.519753" elapsed="0.002174"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:48:58.522395" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:49:08.545451" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:48:58.522135" elapsed="10.024211">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:49:08.549987" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T01:49:08.550560" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:49:08.550877" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:49:08.547633" elapsed="0.003425"/>
</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-19T01:49:08.546870" elapsed="0.004238"/>
</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-19T01:48:58.514052" elapsed="10.037143">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:49:08.551300" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:48:58.501982" elapsed="10.049414">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:48:58.501613" elapsed="10.049945"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:48:58.501473" elapsed="10.050133"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T01:48:56.696442" elapsed="11.855201"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T01:48:55.608406" elapsed="12.943301"/>
</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-19T01:49:08.554569" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.554448" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.554425" elapsed="0.000219"/>
</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-19T01:49:08.559349" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.559239" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.559221" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:49:08.560415" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:49:08.559980" elapsed="0.000463"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:49:08.560907" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:49:08.560601" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:49:08.560979" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:49:08.561155" level="INFO">${index_list} = [1, 2, 3]</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-19T01:49:08.559646" elapsed="0.001534"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:49:08.566342" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.566234" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.566215" 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-19T01:49:08.567628" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.567498" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.567480" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:49:08.568218" 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-19T01:49:08.567837" elapsed="0.000409"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:08.568639" 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-19T01:49:08.568405" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:49:08.651016" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:49:08.569360" elapsed="0.081902"/>
</kw>
<msg time="2026-04-19T01:49:08.651434" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:49:08.651527" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.568823" elapsed="0.082743"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:49:08.775017" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "m "a "s "t "e "r "_ "s "t "a "b "i "l "i "t "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:49:08.652447" elapsed="0.122758"/>
</kw>
<msg time="2026-04-19T01:49:08.775342" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:49:08.775388" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.651789" elapsed="0.123635"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:08.775791" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:08.775515" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.775488" elapsed="0.000579"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:49:08.776625" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "m "a "s "t "e "r "_ "s "t "a "b "i "l "i "t "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:49:08.776214" elapsed="0.000503"/>
</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-19T01:49:08.777024" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:08.776785" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.776767" elapsed="0.000474"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:49:08.777281" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:49:08.779803" 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-19T01:49:08.780884" elapsed="0.000352"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:49:08.781590" elapsed="0.000254"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:49:08.778935" elapsed="0.003005"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T01:49:08.777591" elapsed="0.004701"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:49:08.567208" elapsed="0.215194"/>
</kw>
<msg time="2026-04-19T01:49:08.782496" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:08.782541" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.566559" elapsed="0.216020"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:49:08.782765" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:49:08.782656" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.782637" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:08.783288" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:08.783629" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:49:08.783701" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:49:08.565929" elapsed="0.217880"/>
</kw>
<msg time="2026-04-19T01:49:08.783902" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:08.783947" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.561559" elapsed="0.222425"/>
</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-19T01:49:08.784346" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:08.784073" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.784055" elapsed="0.000380"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:49:08.561419" elapsed="0.223053"/>
</iter>
<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-19T01:49:08.789787" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.789680" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.789661" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:49:08.791335" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.791193" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.791174" elapsed="0.000237"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:49:08.791902" level="INFO">${karaf_connection_index} = 12</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-19T01:49:08.791564" elapsed="0.000365"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:08.792363" 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-19T01:49:08.792102" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:49:08.872019" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:49:08.793121" elapsed="0.079136"/>
</kw>
<msg time="2026-04-19T01:49:08.872494" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:49:08.872543" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.792590" elapsed="0.079992"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:49:08.980702" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "m "a "s "t "e "r "_ "s "t "a "b "i "l "i "t "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:49:08.873446" elapsed="0.107447"/>
</kw>
<msg time="2026-04-19T01:49:08.981051" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:49:08.981103" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.872811" elapsed="0.108330"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:08.981545" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:08.981237" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.981210" elapsed="0.000534"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:49:08.982461" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "m "a "s "t "e "r "_ "s "t "a "b "i "l "i "t "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:49:08.981895" elapsed="0.000665"/>
</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-19T01:49:08.982880" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:08.982632" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.982612" elapsed="0.000487"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:49:08.983141" elapsed="0.000041"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:49:08.985380" elapsed="0.000518"/>
</kw>
<kw name="Open 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-19T01:49:08.986738" elapsed="0.000353"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:49:08.987477" elapsed="0.000277"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:49:08.984484" elapsed="0.003370"/>
</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-19T01:49:08.983464" elapsed="0.004543"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:49:08.790863" elapsed="0.197275"/>
</kw>
<msg time="2026-04-19T01:49:08.988238" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:08.988286" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.790001" elapsed="0.198351"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:49:08.988557" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:49:08.988436" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.988417" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:08.989078" elapsed="0.000028"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:08.989682" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:49:08.989760" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:49:08.789385" elapsed="0.200577"/>
</kw>
<msg time="2026-04-19T01:49:08.990152" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:08.990201" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:08.784758" elapsed="0.205482"/>
</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-19T01:49:08.990594" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:08.990323" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.990304" elapsed="0.000373"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:49:08.784617" elapsed="0.206084"/>
</iter>
<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-19T01:49:08.996147" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.996016" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.995998" elapsed="0.000221"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:49:08.997502" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:08.997362" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:08.997343" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:49:08.998340" level="INFO">${karaf_connection_index} = 14</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-19T01:49:08.997870" elapsed="0.000498"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:08.998915" 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-19T01:49:08.998527" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:49:19.000714" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:49:08.999647" elapsed="10.002181">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:49:19.002095" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:49:19.002155" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:49:08.999120" elapsed="10.003060"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:49:29.003995" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:49:19.003140" elapsed="10.001784">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:49:29.005185" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:49:29.005236" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:49:19.002472" elapsed="10.002788"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:49:29.006607" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/master_stability.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-19T01:49:29.005767" elapsed="0.000926">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/master_stability.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:49:29.005393" elapsed="0.001449">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/master_stability.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:49:29.005357" elapsed="0.001524">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/master_stability.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-19T01:49:29.007092" elapsed="0.000024"/>
</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-19T01:49:29.007324" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:29.007183" elapsed="0.000299"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:49:29.007165" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:49:29.007547" 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-19T01:49:29.009856" elapsed="0.000752"/>
</kw>
<kw name="Open 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-19T01:49:29.010985" elapsed="0.000500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:49:29.011932" elapsed="0.000290"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:49:29.008978" elapsed="0.003373"/>
</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-19T01:49:29.007850" elapsed="0.004653"/>
</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-19T01:49:08.997051" elapsed="20.015540">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/master_stability.robot"</status>
</kw>
<msg time="2026-04-19T01:49:29.012743" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:49:29.012791" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/master_stability.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-19T01:49:08.996395" elapsed="20.016420"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:49:29.013006" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:29.012894" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:29.012875" elapsed="0.000217"/>
</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-19T01:49:29.013911" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:29.013804" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:29.013786" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:29.014306" 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-19T01:49:29.014412" 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-19T01:49:29.014148" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:49:29.014852" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:49:29.014585" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:49:29.015436" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:49:29.015180" elapsed="0.000301"/>
</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-19T01:49:29.015992" elapsed="0.000314"/>
</kw>
<msg time="2026-04-19T01:49:29.016403" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:29.016448" level="INFO">${old_connection_index} = 14</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-19T01:49:29.015637" elapsed="0.000833"/>
</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-19T01:49:29.017630" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:49:39.020023" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:49:29.018994" elapsed="10.001919">No match found for '
' in 10 seconds
Output:
.</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-19T01:49:29.018164" elapsed="10.002921"/>
</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-19T01:49:39.022555" elapsed="0.000409"/>
</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-19T01:49:39.021503" elapsed="0.001560"/>
</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-19T01:49:29.016788" elapsed="10.006369"/>
</kw>
<status status="PASS" start="2026-04-19T01:49:29.016545" elapsed="10.006665"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:29.016526" elapsed="10.006721"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:49:39.024390" level="INFO">${ip_address} = 10.30.171.206</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-19T01:49:39.023860" elapsed="0.000558"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:49:39.024471" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:49:39.024644" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:49:39.023512" elapsed="0.001174"/>
</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-19T01:49:39.024896" elapsed="0.000505"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:39.025880" level="INFO">index=19
host=10.30.171.206
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-19T01:49:39.026139" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T01:49:39.025582" elapsed="0.000587"/>
</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-19T01:49:39.026334" elapsed="0.002766"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:49:39.029553" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:49:49.056649" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:49:39.029270" elapsed="10.028278">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:49:49.061349" elapsed="0.000731"/>
</kw>
<kw name="Open 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-19T01:49:49.062347" elapsed="0.000495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:49:49.063082" elapsed="0.000200"/>
</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-19T01:49:49.058759" elapsed="0.004610"/>
</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-19T01:49:49.058078" elapsed="0.005339"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:49:29.013549" elapsed="20.049956">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:49:49.063872" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:49:49.063950" elapsed="0.000020"/>
</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-19T01:49:08.995709" elapsed="40.068380">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:49:49.064209" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:49:49.064253" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:49:08.990975" elapsed="40.073302"/>
</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-19T01:49:49.064630" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:49.064373" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.064352" elapsed="0.000356"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:49:08.990833" elapsed="40.073906"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:49:08.561236" elapsed="40.503538"/>
</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-19T01:49:08.558928" elapsed="40.505905"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T01:49:08.552370" elapsed="40.512522"/>
</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-19T01:49:08.551868" elapsed="40.513069"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T01:48:55.603305" elapsed="53.461692"/>
</kw>
<kw name="Cluster_Singleton_Init" owner="CsCommon">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.065722" level="INFO">${cs_exp_candidates} = []</msg>
<var>${cs_exp_candidates}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:49:49.065469" elapsed="0.000280"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.066265" level="INFO">${cs_exp_candidates} = []</msg>
<arg>${cs_exp_candidates}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T01:49:49.065912" elapsed="0.000395"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.069728" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:49:49.069341" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.070241" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:49:49.069913" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:49:49.070314" elapsed="0.000031"/>
</return>
<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-19T01:49:49.067132" elapsed="0.003476"/>
</kw>
<msg time="2026-04-19T01:49:49.070649" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:49:49.066713" elapsed="0.003983"/>
</kw>
<msg time="2026-04-19T01:49:49.070795" level="INFO">${cs_all_indices} = [1, 2, 3]</msg>
<var>${cs_all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T01:49:49.066500" elapsed="0.004320"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.071322" level="INFO">${cs_all_indices} = [1, 2, 3]</msg>
<arg>${cs_all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T01:49:49.070977" elapsed="0.000387"/>
</kw>
<doc>Resouce initial keyword. Creates {cs_exp_candidates} and {cs_all_indices} suite variables which are
used in other keywords.</doc>
<status status="PASS" start="2026-04-19T01:49:49.065252" elapsed="0.006167"/>
</kw>
<status status="PASS" start="2026-04-19T01:48:55.602988" elapsed="53.468481"/>
</kw>
<test id="s1-s10-t1" name="Register_Singleton_Constant_On_Each_Node_And_Verify" line="35">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:49:49.074720" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:49:49.074461" elapsed="0.000521"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:49:49.075966" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.075855" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.075833" elapsed="0.000216"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:49:49.080821" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.080715" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.080696" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.081900" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:49:49.081518" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.082400" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:49:49.082097" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:49:49.082470" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:49:49.082623" level="INFO">${index_list} = [1, 2, 3]</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-19T01:49:49.081123" elapsed="0.001525"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:49:49.088062" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.087940" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.087920" 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-19T01:49:49.089295" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.089169" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.089151" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:49:49.089819" 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-19T01:49:49.089509" elapsed="0.000336"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:49.090235" 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-19T01:49:49.090000" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:49:49.148949" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:49:49.090745" elapsed="0.058324"/>
</kw>
<msg time="2026-04-19T01:49:49.149258" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:49:49.149304" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:49:49.090416" elapsed="0.058925"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:49:49.207357" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "n "d "_ "V "e "r "i "f "[78Cy "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:49:49.149856" elapsed="0.057625"/>
</kw>
<msg time="2026-04-19T01:49:49.207696" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:49:49.207766" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:49.149521" elapsed="0.058286"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.208136" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:49.207886" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.207866" elapsed="0.000350"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.208669" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "n "d "_ "V "e "r "i "f "[78Cy "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:49:49.208355" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.209049" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:49.208813" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.208796" elapsed="0.000333"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:49:49.209163" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:49:49.210641" elapsed="0.000874"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:49:49.211808" elapsed="0.000529"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:49:49.212619" elapsed="0.000405"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:49:49.209967" elapsed="0.003190"/>
</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-19T01:49:49.209422" elapsed="0.003800"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:49:49.088843" elapsed="0.124477"/>
</kw>
<msg time="2026-04-19T01:49:49.213411" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:49.213455" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:49.088280" elapsed="0.125234"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:49:49.213725" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:49:49.213615" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.213596" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.214219" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.214554" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:49:49.214624" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:49:49.087600" elapsed="0.127131"/>
</kw>
<msg time="2026-04-19T01:49:49.214829" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:49.214877" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:49.083013" elapsed="0.131900"/>
</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-19T01:49:49.215249" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:49.214988" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.214970" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:49:49.082874" elapsed="0.132473"/>
</iter>
<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-19T01:49:49.220848" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.220737" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.220718" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:49:49.222241" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.222128" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.222110" elapsed="0.000236"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:49:49.222800" level="INFO">${karaf_connection_index} = 12</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-19T01:49:49.222490" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:49.223217" 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-19T01:49:49.222983" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:49:49.279264" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:49:49.223732" elapsed="0.055632"/>
</kw>
<msg time="2026-04-19T01:49:49.279546" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:49:49.279593" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:49:49.223400" elapsed="0.056230"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:49:49.336726" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "n "d "_ "V "e "r "i "f "[78Cy "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:49:49.280162" elapsed="0.056686"/>
</kw>
<msg time="2026-04-19T01:49:49.337025" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:49:49.337094" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:49.279798" elapsed="0.057335"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.337439" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:49.337211" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.337191" elapsed="0.000327"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:49:49.337992" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "_ "A "n "d "_ "V "e "r "i "f "[78Cy "[A[78C"[K
[K
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:49:49.337656" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.338371" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:49.338156" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.338138" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:49:49.338483" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:49:49.339946" elapsed="0.000876"/>
</kw>
<kw name="Open 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-19T01:49:49.341132" elapsed="0.000503"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:49:49.341929" elapsed="0.000422"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:49:49.339288" elapsed="0.003171"/>
</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-19T01:49:49.338742" elapsed="0.003782"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:49:49.221803" elapsed="0.120822"/>
</kw>
<msg time="2026-04-19T01:49:49.342718" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:49.342763" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:49.221211" elapsed="0.121590"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:49:49.342985" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:49:49.342877" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.342859" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.343485" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:49:49.343865" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:49:49.343937" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:49:49.220395" elapsed="0.123853"/>
</kw>
<msg time="2026-04-19T01:49:49.344344" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:49:49.344388" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "g "i "s "t "e "r "_ "S "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:49.215607" elapsed="0.128818"/>
</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-19T01:49:49.344750" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:49:49.344501" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.344484" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:49:49.215467" elapsed="0.129383"/>
</iter>
<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-19T01:49:49.350659" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.350551" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.350532" 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-19T01:49:49.351876" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:49:49.351769" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:49:49.351751" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:49:49.352416" level="INFO">${karaf_connection_index} = 19</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-19T01:49:49.352107" elapsed="0.000336"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:49:49.352813" 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-19T01:49:49.352597" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:49:59.354110" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:49:49.353346" elapsed="10.001804">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:49:59.355442" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:49:59.355495" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:49:49.352995" elapsed="10.002526"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:50:09.356960" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:49:59.356317" elapsed="10.001560">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:50:09.358201" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:50:09.358253" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:49:59.355798" elapsed="10.002481"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:50:09.359537" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Register_Singleton_Constant_On_Each_Node_And_Verify"</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-19T01:50:09.358743" elapsed="0.000857">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Register_Singleton_Constant_On_Each_Node_And_Verify"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:50:09.358402" elapsed="0.001273">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Register_Singleton_Constant_On_Each_Node_And_Verify"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:50:09.358369" elapsed="0.001340">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Register_Singleton_Constant_On_Each_Node_And_Verify"</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-19T01:50:09.359893" 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-19T01:50:09.360135" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:09.359980" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:50:09.359963" elapsed="0.000249"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:50:09.360254" 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-19T01:50:09.361841" elapsed="0.000883"/>
</kw>
<kw name="Open 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-19T01:50:09.363172" elapsed="0.000518"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:50:09.363986" elapsed="0.000448"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:50:09.361152" elapsed="0.003390"/>
</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-19T01:50:09.360557" elapsed="0.004058"/>
</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-19T01:49:49.351466" elapsed="20.013235">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Register_Singleton_Constant_On_Each_Node_And_Verify"</status>
</kw>
<msg time="2026-04-19T01:50:09.364806" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:50:09.364850" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Register_Singleton_Constant_On_Each_Node_And_Verify"</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-19T01:49:49.350879" elapsed="20.013995"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:50:09.365076" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:50:09.364951" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:09.364932" elapsed="0.000208"/>
</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-19T01:50:09.365948" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:50:09.365844" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:09.365825" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:50:09.366509" 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-19T01:50:09.366616" 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-19T01:50:09.366180" elapsed="0.000462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:09.367113" level="INFO">{1: 10, 2: 12, 3: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:09.366790" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:09.367550" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:09.367309" 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-19T01:50:09.368133" elapsed="0.000275"/>
</kw>
<msg time="2026-04-19T01:50:09.368505" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:50:09.368551" level="INFO">${old_connection_index} = 19</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-19T01:50:09.367763" elapsed="0.000810"/>
</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-19T01:50:09.369385" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:50:19.371341" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:50:09.370300" elapsed="10.002228">No match found for '
' in 10 seconds
Output:
.</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-19T01:50:09.369784" elapsed="10.002884"/>
</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-19T01:50:19.373657" elapsed="0.000515"/>
</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-19T01:50:19.372967" elapsed="0.001309"/>
</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-19T01:50:09.368866" elapsed="10.005463"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:09.368648" elapsed="10.005734"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:09.368630" elapsed="10.005789"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:50:19.375675" level="INFO">${ip_address} = 10.30.171.206</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-19T01:50:19.375335" elapsed="0.000368"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:50:19.375757" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:50:19.375921" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:50:19.374675" elapsed="0.001272"/>
</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-19T01:50:19.376150" elapsed="0.000452"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:50:19.376971" level="INFO">index=24
host=10.30.171.206
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-19T01:50:19.377180" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.206
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-19T01:50:19.376847" elapsed="0.000363"/>
</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-19T01:50:19.377371" elapsed="0.002346"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:50:19.380181" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:50:29.447672" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:50:19.379883" elapsed="10.068623">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:50:29.464490" elapsed="0.000528"/>
</kw>
<kw name="Open 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-19T01:50:29.465215" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:50:29.465531" 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-19T01:50:29.451348" elapsed="0.014342"/>
</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-19T01:50:29.449003" elapsed="0.016735"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:50:09.365544" elapsed="20.100283">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:50:29.466546" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:50:29.466625" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:49:49.350018" elapsed="40.116720">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:50:29.466855" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:50:29.466919" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:49:49.345302" elapsed="40.121643"/>
</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-19T01:50:29.467304" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:29.467044" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:29.467008" elapsed="0.000376"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:49:49.344977" elapsed="40.122431"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:49:49.082700" elapsed="40.384739"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:49:49.080356" elapsed="40.387139"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:49:49.075560" elapsed="40.391990"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:49:49.075144" elapsed="40.392451"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:49:49.072360" elapsed="40.395288"/>
</kw>
<kw name="Register_Singleton_Constant_On_Nodes" owner="CsCommon">
<for flavor="IN">
<iter>
<kw name="Register_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Register_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.470005" 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-19T01:50:29.469694" elapsed="0.000625"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:50:29.470368" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:50:29.470523" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:50:29.469346" elapsed="0.001202"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.471144" level="INFO">&amp;{mapping} = { CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:50:29.470708" elapsed="0.000534"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.571520" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:29.571050" elapsed="0.000503"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:29.572476" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:29.572084" elapsed="0.000575">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:29.572933" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:29.571721" elapsed="0.001239"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.573596" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:29.573141" elapsed="0.000482"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:50:29.573950" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:50:29.574138" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:50:29.573783" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.574595" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.574321" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.576259" level="INFO">mapping: {'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.575540" elapsed="0.000867"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.577428" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:50:29.576697" elapsed="0.000775"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.578894" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:50:29.578396" elapsed="0.000538"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:50:29.580172" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:50:29.579910" elapsed="0.000289"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:50:29.580254" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:50:29.580566" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:50:29.579458" elapsed="0.001144"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:50:29.580946" elapsed="0.000459"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-19T01:50:29.578055" elapsed="0.003410"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:50:29.577625" elapsed="0.003954"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:50:29.581844" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:50:29.582152" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:50:29.575112" elapsed="0.007067"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:29.574718" elapsed="0.007494"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.582385" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:29.582237" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:29.574695" elapsed="0.007768"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.583122" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:29.582603" elapsed="0.000548"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:50:29.583199" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:50:29.570401" elapsed="0.012920"/>
</kw>
<msg time="2026-04-19T01:50:29.583422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:29.557991" elapsed="0.025485"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.595737" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.607455" elapsed="0.000034"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.619249" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.619457" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.619634" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.620017" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:29.619873" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:50:29.619856" elapsed="0.000257"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.620253" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.620417" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.620580" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:50:29.619823" elapsed="0.000810"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:50:29.619714" elapsed="0.000946"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.620804" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:50:29.620882" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:50:29.621002" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:50:29.553723" elapsed="0.067324"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.645172" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:29.644686" elapsed="0.000516"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:29.646048" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:29.645697" elapsed="0.000534">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:29.646555" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:29.645362" elapsed="0.001220"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.647356" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:29.646880" elapsed="0.000504"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:50:29.647709" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:50:29.647861" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:50:29.647544" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.648330" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.648058" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:50:29.648796" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:29.648447" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.649601" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:29.649052" elapsed="0.000576"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:29.648883" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:29.648429" elapsed="0.001258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.650441" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:29.649831" elapsed="0.000640"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:50:29.650522" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:50:29.644064" elapsed="0.006586"/>
</kw>
<msg time="2026-04-19T01:50:29.650704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:29.631618" elapsed="0.019134"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.662892" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.674660" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.686320" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.686551" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.686721" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.687112" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:29.686936" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:50:29.686922" elapsed="0.000270"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.687328" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.687491" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.687652" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:50:29.686894" elapsed="0.000810"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:50:29.686794" elapsed="0.000936"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.687870" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:50:29.687944" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:50:29.688074" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:50:29.630728" elapsed="0.057375"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:29.689358" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:29.689100" elapsed="0.000324">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:29.689516" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:29.688750" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:29.689849" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:29.689609" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.690405" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:29.690113" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:29.689928" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:29.689590" elapsed="0.000898"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.692727" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:29.690633" elapsed="0.002120"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:50:29.692804" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:50:29.692955" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:50:29.688431" elapsed="0.004549"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.694619" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.694255" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.695120" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.694826" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.695562" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.695318" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.695991" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.695752" elapsed="0.000298"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:50:29.696898" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:50:29.696698" elapsed="0.000227"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:50:29.697268" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:50:29.697091" elapsed="0.000204"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:50:29.697443" elapsed="0.000210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:29.698071" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:29.697807" elapsed="0.000308"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:50:29.698159" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:50:29.698314" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:50:29.696288" elapsed="0.002052"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:50:30.148604" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:50:30.148762" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node01xh4mfsd5nelv1e3k7ma7pqjdg0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 01:50:30 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T01:50:30.149065" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:50:29.700577" elapsed="0.448553"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:29.698411" elapsed="0.450838"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.149721" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.149314" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:29.698393" elapsed="0.451532"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.157272" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.152441" elapsed="0.004877"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.151892" elapsed="0.005462"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.151848" elapsed="0.005531"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.159949" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.157655" elapsed="0.002341"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.157434" elapsed="0.002613"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.157418" elapsed="0.002657"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.160648" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.160249" elapsed="0.000426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.160976" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.160744" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.161534" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.161235" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.161074" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.160726" elapsed="0.000890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.162157" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.161770" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.162482" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.162252" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.163014" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.162721" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.162567" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.162234" elapsed="0.000892"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:30.163277" elapsed="0.000382"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:50:30.164201" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.163880" elapsed="0.000348"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.164377" elapsed="0.002239"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:50:30.150792" elapsed="0.015888"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:50:30.166861" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T01:50:30.166752" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.166734" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.167128" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.167199" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:50:30.169395" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:50:29.693314" elapsed="0.476108"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.169495" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:50:30.169650" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:50:29.475773" elapsed="0.693901"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.170011" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.169779" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.169762" elapsed="0.000366"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.170165" elapsed="0.000025"/>
</return>
<arg>${REGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:50:29.471502" elapsed="0.698785"/>
</kw>
<arg>${member_index}</arg>
<arg>${constant}</arg>
<doc>Register singleton application on given node by invoking register-singleton-constant rpc.</doc>
<status status="PASS" start="2026-04-19T01:50:29.468906" elapsed="0.701446"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.170500" elapsed="0.000197"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:50:30.170844" elapsed="0.000149"/>
</kw>
<arg>${index}</arg>
<arg>${CS_CONSTANT_PREFIX}${index}</arg>
<doc>Register the singleton candidate and add it to the list of [].</doc>
<status status="PASS" start="2026-04-19T01:50:29.468461" elapsed="0.702606"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:50:29.468257" elapsed="0.702847"/>
</iter>
<iter>
<kw name="Register_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Register_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.173017" level="INFO">${session} = ClusterManagement__session_2</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-19T01:50:30.172710" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:50:30.173109" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:50:30.173257" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:50:30.172313" elapsed="0.000969"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.173822" level="INFO">&amp;{mapping} = { CONSTANT=constant-2 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.173439" elapsed="0.000410"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.206569" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.206127" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.207511" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.207155" elapsed="0.000545">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:30.207977" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:30.206797" elapsed="0.001205"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.208647" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:30.208183" elapsed="0.000491"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.208993" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:50:30.209162" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:50:30.208833" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.209611" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.209340" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.211239" level="INFO">mapping: {'CONSTANT': 'constant-2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.210507" elapsed="0.000907"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.212451" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.211708" elapsed="0.000786"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.213913" level="INFO">${value} = constant-2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:50:30.213421" elapsed="0.000530"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:50:30.215141" level="INFO">${encoded} = constant-2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.214886" elapsed="0.000281"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:50:30.215219" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:50:30.215540" level="INFO">${encoded_value} = constant-2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:50:30.214438" elapsed="0.001139"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.215933" elapsed="0.000457"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-2</var>
<status status="PASS" start="2026-04-19T01:50:30.213081" elapsed="0.003368"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:50:30.212650" elapsed="0.003909"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:50:30.216772" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:50:30.217069" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:50:30.210077" elapsed="0.007019"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.209723" elapsed="0.007406"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.217300" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.217154" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.209705" elapsed="0.007671"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.218167" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.217513" elapsed="0.000682"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.218245" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:50:30.205508" elapsed="0.012858"/>
</kw>
<msg time="2026-04-19T01:50:30.218419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:30.193354" elapsed="0.025113"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.230613" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.242507" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.254593" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.254789" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.254961" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.255332" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.255193" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:50:30.255178" elapsed="0.000258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.255576" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.255738" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.255899" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:50:30.255151" elapsed="0.000801"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.255051" elapsed="0.000927"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.256135" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.256211" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:50:30.256319" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:50:30.189305" elapsed="0.067040"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.281102" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.280637" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.281915" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.281617" elapsed="0.000485">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:30.282366" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:30.281290" elapsed="0.001132"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.283053" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:30.282590" elapsed="0.000491"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.283407" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:50:30.283537" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:50:30.283238" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.283985" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.283718" elapsed="0.000328"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:50:30.284451" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.284117" elapsed="0.000395"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.285230" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.284676" elapsed="0.000582"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.284536" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.284097" elapsed="0.001219"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.286048" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.285457" elapsed="0.000622"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.286130" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:50:30.280021" elapsed="0.006232"/>
</kw>
<msg time="2026-04-19T01:50:30.286306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:30.268022" elapsed="0.018331"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.298360" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.310221" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.321960" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.322163" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.322335" elapsed="0.000050"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.322721" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.322584" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:50:30.322569" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.322932" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.323108" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.323272" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:50:30.322541" elapsed="0.000784"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.322441" elapsed="0.000910"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.323503" elapsed="0.000023"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.323582" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:50:30.323695" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:50:30.267174" elapsed="0.056548"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.324955" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.324722" elapsed="0.000296">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:30.325126" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:30.324386" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.325461" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.325222" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.325983" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.325696" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.325540" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.325204" elapsed="0.000878"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.328338" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:30.326227" elapsed="0.002138"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:50:30.328416" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:50:30.328568" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:50:30.324064" elapsed="0.004528"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.330098" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.329840" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.330526" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.330291" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.330953" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.330715" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.331398" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.331158" elapsed="0.000294"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:50:30.332255" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:50:30.332062" elapsed="0.000252"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:50:30.332641" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:50:30.332467" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.332810" elapsed="0.000198"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.333420" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.333174" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:50:30.333507" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:50:30.333660" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:50:30.331648" elapsed="0.002036"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:50:30.768704" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T01:50:30.768870" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node079x8yon7qdbr17gv2xrmhru5x0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 01:50:30 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T01:50:30.769175" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:50:30.335926" elapsed="0.433319"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.333755" elapsed="0.435626"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.769920" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.769457" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.333737" elapsed="0.436458"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.777577" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.772904" elapsed="0.004719"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.772328" elapsed="0.005331"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.772281" elapsed="0.005404"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.780274" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.777961" elapsed="0.002360"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.777742" elapsed="0.002613"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.777725" elapsed="0.002655"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.780953" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.780557" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.781300" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.781067" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.781834" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.781535" elapsed="0.000325"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.781381" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.781047" elapsed="0.000868"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.782456" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.782096" elapsed="0.000387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.782777" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.782551" elapsed="0.000282"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.783326" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.783009" elapsed="0.000344"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.782856" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.782533" elapsed="0.000877"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:30.783560" elapsed="0.000369"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:50:30.784466" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.784169" elapsed="0.000324"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.784645" elapsed="0.002261"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:50:30.771136" elapsed="0.015835"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:50:30.787175" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T01:50:30.787062" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.787042" elapsed="0.000233"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.787483" elapsed="0.000026"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.787609" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:50:30.790998" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:50:30.328912" elapsed="0.462140"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.791154" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T01:50:30.791367" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:50:30.178518" elapsed="0.612884"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.791906" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.791545" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.791522" elapsed="0.000534"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.792105" elapsed="0.000035"/>
</return>
<arg>${REGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:50:30.174312" elapsed="0.617963"/>
</kw>
<arg>${member_index}</arg>
<arg>${constant}</arg>
<doc>Register singleton application on given node by invoking register-singleton-constant rpc.</doc>
<status status="PASS" start="2026-04-19T01:50:30.171878" elapsed="0.620481"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.792563" elapsed="0.000273"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T01:50:30.793061" elapsed="0.000166"/>
</kw>
<arg>${index}</arg>
<arg>${CS_CONSTANT_PREFIX}${index}</arg>
<doc>Register the singleton candidate and add it to the list of [1].</doc>
<status status="PASS" start="2026-04-19T01:50:30.171430" elapsed="0.621852"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:50:30.171197" elapsed="0.622120"/>
</iter>
<iter>
<kw name="Register_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Register_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.795137" level="INFO">${session} = ClusterManagement__session_3</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-19T01:50:30.794822" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:50:30.795210" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:50:30.795355" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:50:30.794488" elapsed="0.000891"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.796125" level="INFO">&amp;{mapping} = { CONSTANT=constant-3 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.795537" elapsed="0.000615"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.828557" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.828115" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.829688" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.829345" elapsed="0.000722">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:30.830344" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:30.828938" elapsed="0.001432"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.830982" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:30.830532" elapsed="0.000477"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.831350" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:50:30.831500" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:50:30.831186" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.831959" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.831678" elapsed="0.000325"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.833728" level="INFO">mapping: {'CONSTANT': 'constant-3'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.833001" elapsed="0.000874"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.834876" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.834188" elapsed="0.000732"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.836362" level="INFO">${value} = constant-3</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T01:50:30.835859" elapsed="0.000543"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:50:30.837600" level="INFO">${encoded} = constant-3</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.837335" elapsed="0.000294"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T01:50:30.837682" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:50:30.837998" level="INFO">${encoded_value} = constant-3</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T01:50:30.836867" elapsed="0.001251"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.838470" elapsed="0.000516"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-3</var>
<status status="PASS" start="2026-04-19T01:50:30.835497" elapsed="0.003567"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T01:50:30.835090" elapsed="0.004093"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:50:30.839400" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:50:30.839696" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:50:30.832426" elapsed="0.007299"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.832087" elapsed="0.007686"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.839953" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.839800" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.832068" elapsed="0.007981"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.840713" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.840196" elapsed="0.000548"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.840795" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:50:30.827474" elapsed="0.013448"/>
</kw>
<msg time="2026-04-19T01:50:30.840976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:30.815447" elapsed="0.025611"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.853358" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.865190" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.876928" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.877133" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.877305" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.877660" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.877521" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:50:30.877506" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.877873" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.878049" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.878213" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:50:30.877479" elapsed="0.000788"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.877378" elapsed="0.000915"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.878433" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.878510" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T01:50:30.878622" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:50:30.811308" elapsed="0.067340"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.902167" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.901703" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.902977" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.902680" elapsed="0.000484">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:30.903425" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:30.902353" elapsed="0.001097"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.904137" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:30.903648" elapsed="0.000516"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.904482" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:50:30.904613" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:50:30.904322" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.905075" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.904792" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:50:30.905526" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.905189" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.906311" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-3'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.905756" elapsed="0.000581"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.905615" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.905171" elapsed="0.001223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.907137" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-3&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:50:30.906541" elapsed="0.000625"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:50:30.907217" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:50:30.901100" elapsed="0.006242"/>
</kw>
<msg time="2026-04-19T01:50:30.907394" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:50:30.889111" elapsed="0.018330"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.919466" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.931137" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.942914" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.943118" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.943288" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.943669" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.943501" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:50:30.943487" elapsed="0.000260"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.943902" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.944081" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.944245" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:50:30.943459" elapsed="0.000839"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.943361" elapsed="0.000963"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.944462" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:50:30.944537" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:50:30.944651" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-3&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:50:30.888258" elapsed="0.056420"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:50:30.945906" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.945673" elapsed="0.000297">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:50:30.946085" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:50:30.945341" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:50:30.946423" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:50:30.946180" elapsed="0.000299"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.946949" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:50:30.946660" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T01:50:30.946502" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T01:50:30.946162" elapsed="0.000886"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.949298" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:50:30.947196" elapsed="0.002128"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:50:30.949382" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:50:30.949534" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:50:30.945005" elapsed="0.004553"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.951068" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.950809" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.951550" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-3&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.951261" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.952017" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.951745" elapsed="0.000339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.952469" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.952231" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:50:30.953308" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:50:30.953115" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:50:30.953659" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:50:30.953483" elapsed="0.000237"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:50:30.953869" elapsed="0.000217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:50:30.954483" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:50:30.954237" elapsed="0.000290"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:50:30.954570" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:50:30.954722" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:50:30.952704" elapsed="0.002043"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:52:36.032380" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.956974" elapsed="125.079558">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:50:30.954816" elapsed="125.081945">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.037317" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.036850" elapsed="0.000638"/>
</branch>
<status status="FAIL" start="2026-04-19T01:50:30.954799" elapsed="125.082747">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.038531" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.038871" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.038778" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:52:36.038736" elapsed="0.000287"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.039413" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.039578" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.949875" elapsed="125.090085">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.040188" elapsed="0.000038"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.800613" elapsed="125.239810">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.041294" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.040848" elapsed="0.000607"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:52:36.040809" elapsed="0.000700"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.041585" elapsed="0.000033"/>
</return>
<arg>${REGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.796400" elapsed="125.245412">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>${member_index}</arg>
<arg>${constant}</arg>
<doc>Register singleton application on given node by invoking register-singleton-constant rpc.</doc>
<status status="FAIL" start="2026-04-19T01:50:30.794077" elapsed="125.248001">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.042458" elapsed="0.000052"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.042843" elapsed="0.000048"/>
</kw>
<arg>${index}</arg>
<arg>${CS_CONSTANT_PREFIX}${index}</arg>
<doc>Register the singleton candidate and add it to the list of [1, 2].</doc>
<status status="FAIL" start="2026-04-19T01:50:30.793618" elapsed="125.249672">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:50:30.793412" elapsed="125.250026">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:50:29.468124" elapsed="126.575374">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${cs_all_indices}</arg>
<doc>Register a candidate application on given nodes.</doc>
<status status="FAIL" start="2026-04-19T01:50:29.467879" elapsed="126.575731">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Get_And_Save_Present_CsOwner_And_CsCandidates" owner="CsCommon">
<var>${owner}</var>
<var>${candidates}</var>
<arg>1</arg>
<doc>Store owner index into suite variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.043852" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>15s</arg>
<arg>2s</arg>
<arg>CsCommon.Verify_Singleton_Constant_On_Nodes</arg>
<arg>${cs_all_indices}</arg>
<arg>${CS_CONSTANT_PREFIX}${owner}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.044061" elapsed="0.000022"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.045404" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.044995" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.044977" elapsed="0.000514"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:52:36.045634" elapsed="0.000370"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.052148" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:52:36.051695" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:52:36.052397" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.052253" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.052235" elapsed="0.000225"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.052905" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:52:36.052603" elapsed="0.000328"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:52:36.053365" level="INFO">${reference} = controller_clustering_ask_txt_Master_Stability_Register_Singleton_Constant_On_Each_Node_And_Verify</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:52:36.053102" elapsed="0.000290"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:52:36.053724" level="INFO">${reference} = controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:52:36.053548" elapsed="0.000202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.054265" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify"
reference somewhere insi...</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:52:36.053900" elapsed="0.000392"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.054753" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:52:36.054443" elapsed="0.000339"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.055409" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:52:36.054931" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.055902" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:52:36.055608" elapsed="0.000342"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:52:36.051388" elapsed="0.004618"/>
</kw>
<status status="PASS" start="2026-04-19T01:52:36.044785" elapsed="0.011327"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:52:36.044397" elapsed="0.011758"/>
</kw>
<doc>Register a candidate application on each node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:49:49.071534" elapsed="166.984660">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_register_singleton_constant_on_each_node_and_verify&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s10-t2" name="Unregister_Singleton_Constant_On_Non_Master_Node" line="46">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:52:36.059305" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:52:36.059019" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.060579" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.060469" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.060451" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.065387" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.065281" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.065263" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.066445" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:52:36.066064" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.066926" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:52:36.066626" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:52:36.066996" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T01:52:36.067169" level="INFO">${index_list} = [1, 2, 3]</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-19T01:52:36.065680" elapsed="0.001514"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.072664" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.072557" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.072538" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.073902" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.073797" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.073779" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:52:36.074447" 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-19T01:52:36.074132" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:52:36.074855" 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-19T01:52:36.074630" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:52:36.128184" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:52:36.075398" elapsed="0.052903"/>
</kw>
<msg time="2026-04-19T01:52:36.128489" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:52:36.128539" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:52:36.075052" elapsed="0.053523"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:52:36.172473" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "N "o "n "_ "M "a "s "t "e "r "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:52:36.129157" elapsed="0.043484"/>
</kw>
<msg time="2026-04-19T01:52:36.172895" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:52:36.172990" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:52:36.128756" elapsed="0.044336"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.173597" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.173268" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.173238" elapsed="0.000473"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.174443" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "N "o "n "_ "M "a "s "t "e "r "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:52:36.173918" elapsed="0.000634"/>
</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-19T01:52:36.174976" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.174650" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.174624" elapsed="0.000528"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:52:36.175220" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:52:36.177616" elapsed="0.001356"/>
</kw>
<kw name="Open 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-19T01:52:36.179518" elapsed="0.000582"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:52:36.180422" elapsed="0.000423"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:52:36.176454" elapsed="0.004510"/>
</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-19T01:52:36.175606" elapsed="0.005446"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:52:36.073498" elapsed="0.107704"/>
</kw>
<msg time="2026-04-19T01:52:36.181310" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:52:36.181359" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "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-19T01:52:36.072879" elapsed="0.108517"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:52:36.181594" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:52:36.181479" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.181459" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.182172" elapsed="0.000036"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.182545" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.182620" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:52:36.072220" elapsed="0.110512"/>
</kw>
<msg time="2026-04-19T01:52:36.182830" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:52:36.182874" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:52:36.067578" elapsed="0.115332"/>
</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-19T01:52:36.183319" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.182988" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.182970" elapsed="0.000436"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:52:36.067441" elapsed="0.115989"/>
</iter>
<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-19T01:52:36.189281" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.189139" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.189020" elapsed="0.000345"/>
</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-19T01:52:36.190600" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.190487" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.190468" elapsed="0.000201"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:52:36.191271" level="INFO">${karaf_connection_index} = 12</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-19T01:52:36.190814" elapsed="0.000498"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:52:36.191768" 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-19T01:52:36.191534" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:52:36.248782" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:52:36.192353" elapsed="0.056563"/>
</kw>
<msg time="2026-04-19T01:52:36.249162" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:52:36.249239" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:52:36.191957" elapsed="0.057323"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:52:36.298536" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "N "o "n "_ "M "a "s "t "e "r "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:52:36.249850" elapsed="0.048813"/>
</kw>
<msg time="2026-04-19T01:52:36.298838" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:52:36.298887" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:52:36.249476" elapsed="0.049453"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.299328" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.299023" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.298998" elapsed="0.000414"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:52:36.299888" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "N "o "n "_ "M "a "s "t "e "r "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:52:36.299559" elapsed="0.000417"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.300292" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.300067" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.300046" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:52:36.300412" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:52:36.302019" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:52:36.303271" elapsed="0.000536"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:52:36.304134" elapsed="0.000420"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:52:36.301312" elapsed="0.003360"/>
</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-19T01:52:36.300713" elapsed="0.004028"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:52:36.190132" elapsed="0.114713"/>
</kw>
<msg time="2026-04-19T01:52:36.304943" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:52:36.304991" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "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-19T01:52:36.189523" elapsed="0.115527"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:52:36.305247" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:52:36.305135" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.305116" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.305747" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:52:36.306120" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.306197" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:52:36.188677" elapsed="0.117633"/>
</kw>
<msg time="2026-04-19T01:52:36.306471" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:52:36.306518" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:52:36.183706" elapsed="0.122849"/>
</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-19T01:52:36.306892" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:36.306634" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.306616" elapsed="0.000355"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:52:36.183564" elapsed="0.123432"/>
</iter>
<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-19T01:52:36.312811" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.312698" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.312679" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:52:36.314167" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:36.313974" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:36.313956" elapsed="0.000286"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:52:36.314711" level="INFO">${karaf_connection_index} = 24</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-19T01:52:36.314387" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:52:36.315139" 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-19T01:52:36.314896" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:52:46.316570" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:52:36.315702" elapsed="10.001973">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:52:46.317979" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:52:46.318061" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:52:36.315355" elapsed="10.002733"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:52:56.319796" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:52:46.318811" elapsed="10.002404">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:52:56.321621" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:52:56.321696" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:52:46.318366" elapsed="10.003378"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:52:56.323559" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Non_Master_Node"</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-19T01:52:56.322438" elapsed="0.001213">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Non_Master_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:52:56.321922" elapsed="0.001843">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Non_Master_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:52:56.321873" elapsed="0.001947">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Non_Master_Node"</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-19T01:52:56.324100" elapsed="0.000037"/>
</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-19T01:52:56.324466" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:52:56.324240" elapsed="0.000311"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:52:56.324213" elapsed="0.000377"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:52:56.324649" elapsed="0.000026"/>
</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-19T01:52:56.327080" elapsed="0.001393"/>
</kw>
<kw name="Open 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-19T01:52:56.328942" elapsed="0.000831"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:52:56.330288" elapsed="0.000580"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:52:56.325981" elapsed="0.005071"/>
</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-19T01:52:56.325132" elapsed="0.006135"/>
</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-19T01:52:36.313662" elapsed="20.017740">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Non_Master_Node"</status>
</kw>
<msg time="2026-04-19T01:52:56.331562" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:52:56.331634" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Non_Master_Node"</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-19T01:52:36.313053" elapsed="20.018624"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:52:56.331979" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:56.331805" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:56.331776" elapsed="0.000333"/>
</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-19T01:52:56.333453" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:52:56.333294" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:56.333264" elapsed="0.000290"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:52:56.334321" 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-19T01:52:56.334481" 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-19T01:52:56.333792" elapsed="0.000730"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:52:56.335156" level="INFO">{1: 10, 2: 12, 3: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:52:56.334743" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:52:56.335643" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:52:56.335382" 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-19T01:52:56.336251" elapsed="0.000289"/>
</kw>
<msg time="2026-04-19T01:52:56.336640" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:52:56.336686" level="INFO">${old_connection_index} = 24</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-19T01:52:56.335852" elapsed="0.000856"/>
</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-19T01:52:56.337725" elapsed="0.000208"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:53:06.340235" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:52:56.338942" elapsed="10.002466">No match found for '
' in 10 seconds
Output:
.</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-19T01:52:56.338157" elapsed="10.003397"/>
</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-19T01:53:06.342487" elapsed="0.000514"/>
</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-19T01:53:06.341857" elapsed="0.001264"/>
</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-19T01:52:56.337015" elapsed="10.006179"/>
</kw>
<status status="PASS" start="2026-04-19T01:52:56.336785" elapsed="10.006473"/>
</branch>
<status status="PASS" start="2026-04-19T01:52:56.336767" elapsed="10.006527"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:06.344350" level="INFO">${ip_address} = 10.30.171.206</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-19T01:53:06.343941" elapsed="0.000438"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:53:06.344435" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T01:53:06.344632" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:53:06.343550" elapsed="0.001116"/>
</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-19T01:53:06.344863" elapsed="0.000486"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:06.345645" level="INFO">index=29
host=10.30.171.206
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-19T01:53:06.345748" level="INFO">${karaf_connection_object} = index=29
host=10.30.171.206
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-19T01:53:06.345522" elapsed="0.000339"/>
</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-19T01:53:06.346163" elapsed="0.002530"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:53:06.349144" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:53:16.455167" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:06.348860" elapsed="10.107151">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:16.470712" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:53:16.471677" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:53:16.471995" elapsed="0.000120"/>
</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-19T01:53:16.457548" elapsed="0.014635"/>
</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-19T01:53:16.456545" elapsed="0.015687"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:52:56.332740" elapsed="20.139584">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:16.472694" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:53:16.472772" elapsed="0.000020"/>
</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-19T01:52:36.312337" elapsed="40.160546">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:53:16.473005" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:53:16.473065" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:52:36.307315" elapsed="40.165775"/>
</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-19T01:53:16.473430" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.473174" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.473154" elapsed="0.000354"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:52:36.307171" elapsed="40.166362"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:52:36.067268" elapsed="40.406296"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:52:36.064909" elapsed="40.408714"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:52:36.060180" elapsed="40.413503"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:52:36.059717" elapsed="40.414011"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:52:36.056958" elapsed="40.416823"/>
</kw>
<kw name="Get_Node_Idx_To_Unregister">
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${index}&quot; != &quot;${cs_owner}&quot;">
<return>
<value>${index}</value>
<status status="NOT RUN" start="2026-04-19T01:53:16.477642" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.477602" elapsed="0.000084"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:53:16.477587" elapsed="0.000121"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T01:53:16.477553" elapsed="0.000178"/>
</iter>
<msg time="2026-04-19T01:53:16.477761" level="FAIL">Variable '@{cs_candidates}' not found. Did you mean:
    @{cs_exp_candidates}</msg>
<var>${index}</var>
<value>@{cs_candidates}</value>
<status status="FAIL" start="2026-04-19T01:53:16.474175" elapsed="0.003622">Variable '@{cs_candidates}' not found. Did you mean:
    @{cs_exp_candidates}</status>
</for>
<var>${unregistered_node}</var>
<doc>Return the first non owner node from the stored candidate list.</doc>
<status status="FAIL" start="2026-04-19T01:53:16.473985" elapsed="0.003909">Variable '@{cs_candidates}' not found. Did you mean:
    @{cs_exp_candidates}</status>
</kw>
<kw name="Unregister_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<arg>${unregistered_node}</arg>
<doc>Unregister the singleton candidate. Also remove it from the list of [1, 2].</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.478174" elapsed="0.000025"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${unregistered_node}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.478357" elapsed="0.000021"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.479978" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.479521" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.479504" elapsed="0.000576"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:53:16.480234" elapsed="0.000321"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.485370" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:53:16.484927" elapsed="0.000471"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:53:16.485615" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.485472" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.485454" elapsed="0.000224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.486135" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:53:16.485820" elapsed="0.000342"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:53:16.486578" level="INFO">${reference} = controller_clustering_ask_txt_Master_Stability_Unregister_Singleton_Constant_On_Non_Master_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:53:16.486316" elapsed="0.000289"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:53:16.486935" level="INFO">${reference} = controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:53:16.486760" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.487470" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:53:16.487124" elapsed="0.000373"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.487955" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:53:16.487647" elapsed="0.000336"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.488598" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node&amp;order=bug_status"

Variable '@{cs_candidates}' not found. Did you mean:
    @{cs_exp_candidates}</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:53:16.488149" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.489104" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:16.488796" elapsed="0.000357"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:53:16.484624" elapsed="0.004583"/>
</kw>
<status status="PASS" start="2026-04-19T01:53:16.479011" elapsed="0.010245"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:53:16.478653" elapsed="0.010645"/>
</kw>
<doc>Unregister the application on a non master node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:52:36.056427" elapsed="40.432909">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_non_master_node&amp;order=bug_status"

Variable '@{cs_candidates}' not found. Did you mean:
    @{cs_exp_candidates}</status>
</test>
<test id="s1-s10-t3" name="Monitor_Stability_While_Unregistered" line="52">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:53:16.492916" elapsed="0.000228"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:53:16.492653" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:16.494381" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.494270" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.494250" elapsed="0.000235"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:16.499261" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.499153" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.499134" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.500346" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:53:16.499925" elapsed="0.000449"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.500833" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:53:16.500529" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:53:16.500902" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:53:16.501082" level="INFO">${index_list} = [1, 2, 3]</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-19T01:53:16.499552" elapsed="0.001556"/>
</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-19T01:53:16.506323" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.506215" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.506196" 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-19T01:53:16.507552" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.507445" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.507426" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:16.508093" 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-19T01:53:16.507763" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:16.508521" 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-19T01:53:16.508298" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:53:16.553100" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:53:16.509053" elapsed="0.044271"/>
</kw>
<msg time="2026-04-19T01:53:16.553704" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:53:16.553811" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:53:16.508704" elapsed="0.045184"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:53:16.590898" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "b "i "l "i "t "y "_ "W "h "i "l "e "_ "U "n "r "e "g "i "s "t "e "r "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:53:16.555108" elapsed="0.035905"/>
</kw>
<msg time="2026-04-19T01:53:16.591206" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:53:16.591252" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:16.554310" elapsed="0.036978"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.591595" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.591367" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.591347" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.592172" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "b "i "l "i "t "y "_ "W "h "i "l "e "_ "U "n "r "e "g "i "s "t "e "r "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:16.591825" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.592536" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.592322" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.592304" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:53:16.592647" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:53:16.594117" elapsed="0.000883"/>
</kw>
<kw name="Open 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-19T01:53:16.595311" elapsed="0.000507"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:53:16.596118" elapsed="0.000425"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:53:16.593456" elapsed="0.003194"/>
</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-19T01:53:16.592909" elapsed="0.003806"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:53:16.507140" elapsed="0.089675"/>
</kw>
<msg time="2026-04-19T01:53:16.596906" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:16.596950" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:16.506539" elapsed="0.090446"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:53:16.597188" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:53:16.597078" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.597059" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.597666" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.597996" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:53:16.598082" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:53:16.505865" elapsed="0.092325"/>
</kw>
<msg time="2026-04-19T01:53:16.598281" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:16.598325" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:16.501465" elapsed="0.096894"/>
</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-19T01:53:16.598677" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.598434" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.598416" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:53:16.501327" elapsed="0.097448"/>
</iter>
<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-19T01:53:16.603982" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.603875" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.603857" elapsed="0.000407"/>
</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-19T01:53:16.605411" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.605305" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.605287" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:16.605925" level="INFO">${karaf_connection_index} = 12</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-19T01:53:16.605617" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:16.606341" 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-19T01:53:16.606123" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:53:16.654728" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:53:16.606847" elapsed="0.047979"/>
</kw>
<msg time="2026-04-19T01:53:16.654995" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:53:16.655063" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:53:16.606519" elapsed="0.048581"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:53:16.695969" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "b "i "l "i "t "y "_ "W "h "i "l "e "_ "U "n "r "e "g "i "s "t "e "r "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:53:16.655630" elapsed="0.040500"/>
</kw>
<msg time="2026-04-19T01:53:16.696312" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:53:16.696363" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:16.655296" elapsed="0.041102"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.696689" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.696473" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.696455" elapsed="0.000311"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:16.697222" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "b "i "l "i "t "y "_ "W "h "i "l "e "_ "U "n "r "e "g "i "s "t "e "r "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:16.696903" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.697569" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.697357" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.697340" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:53:16.697680" elapsed="0.000027"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:53:16.699315" elapsed="0.000859"/>
</kw>
<kw name="Open 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-19T01:53:16.700493" elapsed="0.000494"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:53:16.701310" elapsed="0.000399"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:53:16.698626" elapsed="0.003191"/>
</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-19T01:53:16.697928" elapsed="0.003954"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:53:16.604981" elapsed="0.097002"/>
</kw>
<msg time="2026-04-19T01:53:16.702093" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:16.702138" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:16.604417" elapsed="0.097756"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:53:16.702357" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:53:16.702250" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.702232" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.702825" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:16.703169" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:53:16.703242" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:53:16.603537" elapsed="0.099811"/>
</kw>
<msg time="2026-04-19T01:53:16.703440" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:16.703482" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "M "o "n "i "t "o "r "_ "S "t "a "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:16.599044" elapsed="0.104473"/>
</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-19T01:53:16.703835" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:16.703592" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.703574" elapsed="0.000337"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:53:16.598896" elapsed="0.105038"/>
</iter>
<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-19T01:53:16.709286" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.708982" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.708962" elapsed="0.000391"/>
</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-19T01:53:16.710536" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:16.710429" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:16.710410" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:16.711070" level="INFO">${karaf_connection_index} = 29</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-19T01:53:16.710745" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:16.711468" 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-19T01:53:16.711253" elapsed="0.000241"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:53:26.712729" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:53:16.711976" elapsed="10.002810">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:53:26.715353" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:53:26.715467" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:53:16.711649" elapsed="10.003870"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:53:36.717784" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:53:26.716887" elapsed="10.001846">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:53:36.719016" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:53:36.719099" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:53:26.715987" elapsed="10.003138"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:53:36.720387" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Monitor_Stability_While_Unregistered"</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-19T01:53:36.719603" elapsed="0.000849">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Monitor_Stability_While_Unregistered"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:53:36.719259" elapsed="0.001264">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Monitor_Stability_While_Unregistered"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:53:36.719226" elapsed="0.001331">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Monitor_Stability_While_Unregistered"</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-19T01:53:36.720735" elapsed="0.000027"/>
</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-19T01:53:36.721270" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:36.721118" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:53:36.720810" elapsed="0.000539"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:53:36.721386" 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-19T01:53:36.722969" elapsed="0.000896"/>
</kw>
<kw name="Open 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-19T01:53:36.724211" elapsed="0.000582"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:53:36.725111" elapsed="0.000417"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:53:36.722280" elapsed="0.003358"/>
</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-19T01:53:36.721683" elapsed="0.004021"/>
</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-19T01:53:16.710085" elapsed="20.015705">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Monitor_Stability_While_Unregistered"</status>
</kw>
<msg time="2026-04-19T01:53:36.725896" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:53:36.725940" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Monitor_Stability_While_Unregistered"</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-19T01:53:16.709502" elapsed="20.016463"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:53:36.726170" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:36.726059" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:36.726024" elapsed="0.000213"/>
</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-19T01:53:36.727055" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:36.726922" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:36.726903" elapsed="0.000296"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:36.727506" 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-19T01:53:36.727612" 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-19T01:53:36.727363" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:36.728147" level="INFO">{1: 10, 2: 12, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:36.727792" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:36.728589" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:36.728343" elapsed="0.000289"/>
</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-19T01:53:36.729181" elapsed="0.000279"/>
</kw>
<msg time="2026-04-19T01:53:36.729558" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:36.729605" level="INFO">${old_connection_index} = 29</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-19T01:53:36.728797" elapsed="0.000832"/>
</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-19T01:53:36.730450" elapsed="0.000205"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:53:46.732583" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:53:36.731354" elapsed="10.002416">No match found for '
' in 10 seconds
Output:
.</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-19T01:53:36.730823" elapsed="10.003090"/>
</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-19T01:53:46.735109" elapsed="0.000680"/>
</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-19T01:53:46.734488" elapsed="0.001393"/>
</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-19T01:53:36.729925" elapsed="10.006004"/>
</kw>
<status status="PASS" start="2026-04-19T01:53:36.729705" elapsed="10.006278"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:36.729687" elapsed="10.006331"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:46.737149" level="INFO">${ip_address} = 10.30.171.206</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-19T01:53:46.736803" elapsed="0.000373"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:53:46.737231" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:53:46.737393" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:53:46.736412" elapsed="0.001005"/>
</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-19T01:53:46.737576" elapsed="0.000426"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:46.738323" level="INFO">index=34
host=10.30.171.206
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-19T01:53:46.738426" level="INFO">${karaf_connection_object} = index=34
host=10.30.171.206
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-19T01:53:46.738197" elapsed="0.000256"/>
</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-19T01:53:46.738602" elapsed="0.002651"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:53:46.741680" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:53:56.769871" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:46.741416" elapsed="10.029241">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:56.784872" elapsed="0.000794"/>
</kw>
<kw name="Open 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-19T01:53:56.785830" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:53:56.786164" elapsed="0.000105"/>
</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-19T01:53:56.771804" elapsed="0.014518"/>
</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-19T01:53:56.771117" elapsed="0.015332"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:53:36.726630" elapsed="20.059911">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:56.786911" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:53:56.786989" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:53:16.708647" elapsed="40.078470">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:53:56.787231" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:53:56.787276" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:16.704204" elapsed="40.083096"/>
</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-19T01:53:56.787644" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:56.787384" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.787364" elapsed="0.000374"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:53:16.704068" elapsed="40.083702"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:53:16.501160" elapsed="40.286644"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:53:16.498745" elapsed="40.289124"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:53:16.493961" elapsed="40.293968"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:16.493525" elapsed="40.294452"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:53:16.490157" elapsed="40.297892"/>
</kw>
<kw name="Monitor_Owner_And_Candidates_Stability" owner="CsCommon">
<msg time="2026-04-19T01:53:56.792209" level="FAIL">Variable '${cs_owner}' not found.</msg>
<arg>${STABILITY_TIMEOUT}</arg>
<arg>${cs_owner}</arg>
<doc>Verify that the owner remains on the same node after non-owner candidate is unregistered.</doc>
<status status="FAIL" start="2026-04-19T01:53:56.788263" elapsed="0.003985">Variable '${cs_owner}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:56.793804" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:56.793427" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.793409" elapsed="0.000480"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:53:56.794048" elapsed="0.000317"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.799584" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:53:56.799073" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:53:56.799850" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:56.799703" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.799684" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.800375" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:53:56.800074" elapsed="0.000327"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:53:56.800818" level="INFO">${reference} = controller_clustering_ask_txt_Master_Stability_Monitor_Stability_While_Unregistered</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:53:56.800556" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:53:56.801188" level="INFO">${reference} = controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:53:56.800997" elapsed="0.000217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.801712" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:53:56.801364" elapsed="0.000374"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.802259" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:53:56.801928" elapsed="0.000359"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.802875" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered&amp;order=bug_status"

Variable '${cs_owner}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:53:56.802436" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.803385" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:56.803089" elapsed="0.000343"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:53:56.798754" elapsed="0.004733"/>
</kw>
<status status="PASS" start="2026-04-19T01:53:56.792903" elapsed="0.010633"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:53:56.792548" elapsed="0.011030"/>
</kw>
<doc>Verify that the owner remains on the same node after non-owner candidate is unregistered.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:53:16.489576" elapsed="40.314039">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_monitor_stability_while_unregistered&amp;order=bug_status"

Variable '${cs_owner}' not found.</status>
</test>
<test id="s1-s10-t4" name="Reregister_Singleton_Constant" line="56">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:53:56.806897" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:53:56.806639" elapsed="0.000537"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:56.808169" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:56.808060" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.808039" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:56.812966" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:56.812861" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.812843" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.814023" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:53:56.813647" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.814525" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:53:56.814221" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:53:56.814595" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:53:56.814751" level="INFO">${index_list} = [1, 2, 3]</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-19T01:53:56.813273" elapsed="0.001503"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:56.821760" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:56.821651" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.821631" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:56.822986" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:56.822879" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.822861" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:56.823535" 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-19T01:53:56.823221" elapsed="0.000342"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:56.823958" 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-19T01:53:56.823739" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:53:56.869443" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:53:56.824526" elapsed="0.045026"/>
</kw>
<msg time="2026-04-19T01:53:56.869743" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:53:56.869789" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:53:56.824196" elapsed="0.045628"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:53:56.902649" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:53:56.870365" elapsed="0.032393"/>
</kw>
<msg time="2026-04-19T01:53:56.902924" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:53:56.902970" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:56.869997" elapsed="0.033008"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:56.903337" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:56.903112" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.903092" elapsed="0.000323"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.903867" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:56.903565" elapsed="0.000370"/>
</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-19T01:53:56.904230" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:56.904000" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.903982" elapsed="0.000324"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:53:56.904339" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:53:56.905803" elapsed="0.000868"/>
</kw>
<kw name="Open 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-19T01:53:56.906960" elapsed="0.000533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:53:56.907788" elapsed="0.000430"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:53:56.905156" elapsed="0.003170"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T01:53:56.904613" elapsed="0.003778"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:53:56.822580" elapsed="0.085910"/>
</kw>
<msg time="2026-04-19T01:53:56.908580" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:56.908625" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "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-19T01:53:56.821977" elapsed="0.086684"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:53:56.908843" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:53:56.908735" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.908717" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:56.909340" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:56.909669" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:53:56.909739" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:53:56.821307" elapsed="0.088539"/>
</kw>
<msg time="2026-04-19T01:53:56.909938" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:56.909981" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:56.815156" elapsed="0.094912"/>
</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-19T01:53:56.910394" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:56.910147" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.910129" elapsed="0.000341"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:53:56.815003" elapsed="0.095491"/>
</iter>
<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-19T01:53:56.915963" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:56.915853" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.915835" elapsed="0.000212"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:56.917186" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:56.917078" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.917058" elapsed="0.000196"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:56.917703" level="INFO">${karaf_connection_index} = 12</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-19T01:53:56.917392" elapsed="0.000338"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:56.918115" 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-19T01:53:56.917882" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:53:56.962682" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:53:56.918624" elapsed="0.044209"/>
</kw>
<msg time="2026-04-19T01:53:56.963077" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:53:56.963167" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:53:56.918297" elapsed="0.044910"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:53:56.995017" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:53:56.963825" elapsed="0.031314"/>
</kw>
<msg time="2026-04-19T01:53:56.995305" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:53:56.995351" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:56.963418" elapsed="0.031968"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:56.995739" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:56.995499" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.995473" elapsed="0.000346"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:53:56.996343" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:53:56.995990" elapsed="0.000424"/>
</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-19T01:53:56.996694" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:56.996480" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:56.996463" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:53:56.996805" elapsed="0.000036"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:53:56.998341" elapsed="0.000879"/>
</kw>
<kw name="Open 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-19T01:53:56.999534" elapsed="0.000537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:53:57.000355" elapsed="0.000414"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:53:56.997656" elapsed="0.003229"/>
</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-19T01:53:56.997115" elapsed="0.003836"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:53:56.916756" elapsed="0.084431"/>
</kw>
<msg time="2026-04-19T01:53:57.001282" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:57.001328" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "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-19T01:53:56.916197" elapsed="0.085167"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:53:57.001550" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:53:57.001442" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:57.001424" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:57.002050" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:53:57.002387" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:53:57.002458" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:53:56.915496" elapsed="0.087070"/>
</kw>
<msg time="2026-04-19T01:53:57.002661" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:53:57.002705" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "R "e "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:56.910756" elapsed="0.091985"/>
</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-19T01:53:57.003080" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:53:57.002817" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:57.002799" elapsed="0.000359"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:53:56.910620" elapsed="0.092562"/>
</iter>
<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-19T01:53:57.008764" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:57.008655" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:57.008635" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:53:57.010239" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:53:57.010129" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:53:57.010111" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:53:57.010762" level="INFO">${karaf_connection_index} = 34</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-19T01:53:57.010445" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:53:57.011194" 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-19T01:53:57.010952" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:54:07.012339" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:53:57.011731" elapsed="10.001569">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:54:07.013589" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:54:07.013639" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:53:57.011377" elapsed="10.002285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:54:17.014873" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:54:07.014410" elapsed="10.001276">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:54:17.015942" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:54:17.015990" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:54:07.013930" elapsed="10.002085"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:54:17.017231" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Reregister_Singleton_Constant"</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-19T01:54:17.016463" elapsed="0.000831">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Reregister_Singleton_Constant"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:54:17.016148" elapsed="0.001287">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Reregister_Singleton_Constant"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:54:17.016114" elapsed="0.001358">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Reregister_Singleton_Constant"</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-19T01:54:17.017636" 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-19T01:54:17.017860" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:17.017722" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:54:17.017705" elapsed="0.000232"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:54:17.017974" elapsed="0.000016"/>
</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-19T01:54:17.019590" elapsed="0.000875"/>
</kw>
<kw name="Open 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-19T01:54:17.020766" elapsed="0.000558"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:54:17.021610" elapsed="0.000412"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:54:17.018886" elapsed="0.003268"/>
</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-19T01:54:17.018286" elapsed="0.003933"/>
</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-19T01:53:57.009795" elapsed="20.012512">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Reregister_Singleton_Constant"</status>
</kw>
<msg time="2026-04-19T01:54:17.022411" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:54:17.022457" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Reregister_Singleton_Constant"</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-19T01:53:57.008985" elapsed="20.013497"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:54:17.022698" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:17.022587" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:17.022568" elapsed="0.000196"/>
</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-19T01:54:17.023608" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:17.023503" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:17.023484" elapsed="0.000192"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:54:17.023970" 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-19T01:54:17.024151" 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-19T01:54:17.023826" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:54:17.024791" level="INFO">{1: 10, 2: 12, 3: 34}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:54:17.024330" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:54:17.025248" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:54:17.024986" elapsed="0.000310"/>
</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-19T01:54:17.025803" elapsed="0.000291"/>
</kw>
<msg time="2026-04-19T01:54:17.026191" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:54:17.026237" 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-19T01:54:17.025451" 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-19T01:54:17.027076" elapsed="0.000200"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:54:27.028969" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:54:17.027927" elapsed="10.002071">No match found for '
' in 10 seconds
Output:
.</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-19T01:54:17.027438" elapsed="10.002708"/>
</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-19T01:54:27.031204" elapsed="0.000462"/>
</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-19T01:54:27.030415" elapsed="0.001345"/>
</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-19T01:54:17.026564" elapsed="10.005243"/>
</kw>
<status status="PASS" start="2026-04-19T01:54:17.026335" elapsed="10.005602"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:17.026317" elapsed="10.005657"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:54:27.032986" level="INFO">${ip_address} = 10.30.171.206</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-19T01:54:27.032657" elapsed="0.000357"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:54:27.033087" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:54:27.033250" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:54:27.032266" elapsed="0.001010"/>
</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-19T01:54:27.033430" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:54:27.034161" level="INFO">index=39
host=10.30.171.206
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-19T01:54:27.034261" level="INFO">${karaf_connection_object} = index=39
host=10.30.171.206
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-19T01:54:27.034038" elapsed="0.000251"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:54:27.034435" elapsed="0.002299"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:54:27.037351" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:54:37.101853" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:54:27.037085" elapsed="10.065669">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:54:37.117270" 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-19T01:54:37.117982" elapsed="0.000559"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:54:37.118691" 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-19T01:54:37.104025" elapsed="0.014822"/>
</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-19T01:54:37.103315" elapsed="0.015579"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:54:17.023200" elapsed="20.095783">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:54:37.119390" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.119470" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:53:57.008241" elapsed="40.111343">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:54:37.119712" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:54:37.119758" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:53:57.003466" elapsed="40.116315"/>
</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-19T01:54:37.120141" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.119865" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.119845" elapsed="0.000377"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:53:57.003310" elapsed="40.116942"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:53:56.814831" elapsed="40.305455"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:53:56.812502" elapsed="40.307842"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:53:56.807756" elapsed="40.312646"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:53:56.807320" elapsed="40.313128"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:53:56.804597" elapsed="40.315997"/>
</kw>
<kw name="Register_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<msg time="2026-04-19T01:54:37.125228" level="FAIL">Variable '${unregistered_node}' not found.</msg>
<arg>${unregistered_node}</arg>
<arg>${CS_CONSTANT_PREFIX}${unregistered_node}</arg>
<doc>Register the singleton candidate and add it to the list of [1, 2].</doc>
<status status="FAIL" start="2026-04-19T01:54:37.120860" elapsed="0.004407">Variable '${unregistered_node}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:54:37.126802" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.126424" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.126406" elapsed="0.000482"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:54:37.127056" elapsed="0.000319"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.132263" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:54:37.131745" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:54:37.132510" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.132367" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.132349" elapsed="0.000224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.133015" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:54:37.132716" elapsed="0.000344"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:54:37.133474" level="INFO">${reference} = controller_clustering_ask_txt_Master_Stability_Reregister_Singleton_Constant</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:54:37.133215" elapsed="0.000286"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:54:37.133830" level="INFO">${reference} = controller_clustering_ask_txt_master_stability_reregister_singleton_constant</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:54:37.133655" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.134366" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_reregister_singleton_constant"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:54:37.134005" elapsed="0.000388"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.134882" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_reregister_singleton_constant&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:54:37.134543" elapsed="0.000368"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.135536" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_reregister_singleton_constant"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_reregister_singleton_constant&amp;order=bug_status"

Variable '${unregistered_node}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:54:37.135091" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.136051" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_reregister_singleton_constant"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_reregister_singleton_constant&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:54:37.135740" elapsed="0.000361"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:54:37.131443" elapsed="0.004713"/>
</kw>
<status status="PASS" start="2026-04-19T01:54:37.125923" elapsed="0.010282"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:54:37.125566" elapsed="0.010681"/>
</kw>
<doc>Re-register the unregistered candidate.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:53:56.804056" elapsed="40.332229">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_reregister_singleton_constant"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_reregister_singleton_constant&amp;order=bug_status"

Variable '${unregistered_node}' not found.</status>
</test>
<test id="s1-s10-t5" name="Verify_Stability_After_Reregistration" line="62">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:54:37.139985" elapsed="0.000233"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:54:37.139723" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.141270" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.141160" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.141141" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.146146" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.146036" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.146006" elapsed="0.000207"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.147213" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:54:37.146803" elapsed="0.000437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.147696" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:54:37.147394" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:54:37.147766" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:54:37.147922" level="INFO">${index_list} = [1, 2, 3]</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-19T01:54:37.146434" elapsed="0.001512"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.153213" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.153106" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.153086" 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-19T01:54:37.154418" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.154311" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.154293" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:54:37.154932" 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-19T01:54:37.154625" elapsed="0.000335"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:54:37.155385" 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-19T01:54:37.155162" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:54:37.193924" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:54:37.155894" elapsed="0.038129"/>
</kw>
<msg time="2026-04-19T01:54:37.194223" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:54:37.194270" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:54:37.155566" elapsed="0.038739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:54:37.226041" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "i "l "i "t "y "_ "A "f "t "e "r "_ "R "e "r "e "g "i "s "t "r "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:54:37.194805" elapsed="0.031348"/>
</kw>
<msg time="2026-04-19T01:54:37.226321" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:54:37.226366" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "...</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-19T01:54:37.194470" elapsed="0.031932"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:54:37.226696" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.226478" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.226459" elapsed="0.000315"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.227270" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "i "l "i "t "y "_ "A "f "t "e "r "_ "R "e "r "e "g "i "s "t "r "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:54:37.226911" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:54:37.227621" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.227409" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.227391" elapsed="0.000343"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:54:37.227768" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:54:37.229236" elapsed="0.000854"/>
</kw>
<kw name="Open 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-19T01:54:37.230383" elapsed="0.000500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:54:37.231187" elapsed="0.000397"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:54:37.228577" elapsed="0.003115"/>
</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-19T01:54:37.228047" elapsed="0.003710"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:54:37.153987" elapsed="0.077870"/>
</kw>
<msg time="2026-04-19T01:54:37.231948" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:54:37.231993" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "...</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-19T01:54:37.153428" elapsed="0.078626"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:54:37.232240" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:54:37.232132" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.232114" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:54:37.232714" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:54:37.233059" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.233132" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:54:37.152756" elapsed="0.080481"/>
</kw>
<msg time="2026-04-19T01:54:37.233330" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:54:37.233373" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "...</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-19T01:54:37.148334" elapsed="0.085074"/>
</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-19T01:54:37.233726" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.233482" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.233465" elapsed="0.000337"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:54:37.148195" elapsed="0.085630"/>
</iter>
<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-19T01:54:37.239153" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.239041" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.238989" elapsed="0.000231"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.240388" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.240281" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.240263" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:54:37.240902" level="INFO">${karaf_connection_index} = 12</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-19T01:54:37.240595" elapsed="0.000333"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:54:37.241403" 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-19T01:54:37.241185" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:54:37.281633" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:54:37.241970" elapsed="0.039761"/>
</kw>
<msg time="2026-04-19T01:54:37.281914" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:54:37.281962" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:54:37.241585" elapsed="0.040463"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:54:37.312907" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "i "l "i "t "y "_ "A "f "t "e "r "_ "R "e "r "e "g "i "s "t "r "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:54:37.282559" elapsed="0.030500"/>
</kw>
<msg time="2026-04-19T01:54:37.313243" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:54:37.313290" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "...</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-19T01:54:37.282222" elapsed="0.031104"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:54:37.313657" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.313413" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.313389" elapsed="0.000348"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:54:37.314227" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "i "l "i "t "y "_ "A "f "t "e "r "_ "R "e "r "e "g "i "s "t "r "a "t "i "o "n "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:54:37.313877" elapsed="0.000423"/>
</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-19T01:54:37.314579" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.314366" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.314348" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:54:37.314691" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:54:37.316413" elapsed="0.000867"/>
</kw>
<kw name="Open 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-19T01:54:37.317575" elapsed="0.000544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:54:37.318401" elapsed="0.000441"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:54:37.315534" elapsed="0.003420"/>
</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-19T01:54:37.314970" elapsed="0.004100"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:54:37.239927" elapsed="0.079252"/>
</kw>
<msg time="2026-04-19T01:54:37.319272" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:54:37.319317" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "...</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-19T01:54:37.239369" elapsed="0.079984"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:54:37.319541" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:54:37.319432" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.319413" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:54:37.320018" elapsed="0.000040"/>
</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-19T01:54:37.320368" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.320440" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:54:37.238674" elapsed="0.081874"/>
</kw>
<msg time="2026-04-19T01:54:37.320642" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:54:37.320686" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "V "e "r "i "f "y "_ "S "t "a "b "...</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-19T01:54:37.234103" elapsed="0.086618"/>
</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-19T01:54:37.321058" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:37.320797" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.320780" elapsed="0.000357"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:54:37.233946" elapsed="0.087286"/>
</iter>
<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-19T01:54:37.326626" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.326517" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.326497" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:54:37.327912" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:37.327805" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:37.327787" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:54:37.328458" level="INFO">${karaf_connection_index} = 39</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-19T01:54:37.328145" elapsed="0.000340"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:54:37.328855" 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-19T01:54:37.328639" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:54:47.330090" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:54:37.329382" elapsed="10.001745">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:54:47.331411" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:54:47.331462" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:54:37.329052" elapsed="10.002434"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:54:57.332680" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:54:47.332218" elapsed="10.001308">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:54:57.333783" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:54:57.333832" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:54:47.331755" elapsed="10.002102"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:54:57.335112" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Verify_Stability_After_Reregistration"</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-19T01:54:57.334315" elapsed="0.000862">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Verify_Stability_After_Reregistration"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:54:57.333968" elapsed="0.001282">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Verify_Stability_After_Reregistration"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:54:57.333934" elapsed="0.001352">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Verify_Stability_After_Reregistration"</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-19T01:54:57.335451" elapsed="0.000024"/>
</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-19T01:54:57.335688" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:54:57.335543" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:54:57.335524" elapsed="0.000241"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:54:57.335810" elapsed="0.000021"/>
</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-19T01:54:57.337763" elapsed="0.000939"/>
</kw>
<kw name="Open 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-19T01:54:57.339016" elapsed="0.000581"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:54:57.339942" elapsed="0.000462"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:54:57.337066" elapsed="0.003455"/>
</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-19T01:54:57.336141" elapsed="0.004449"/>
</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-19T01:54:37.327504" elapsed="20.013174">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Verify_Stability_After_Reregistration"</status>
</kw>
<msg time="2026-04-19T01:54:57.340787" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:54:57.340833" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Verify_Stability_After_Reregistration"</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-19T01:54:37.326843" elapsed="20.014014"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:54:57.341184" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:57.341067" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:57.341045" elapsed="0.000207"/>
</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-19T01:54:57.342099" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:54:57.341959" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:57.341940" elapsed="0.000232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:54:57.342478" 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-19T01:54:57.342591" 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-19T01:54:57.342326" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:54:57.343167" level="INFO">{1: 10, 2: 12, 3: 39}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:54:57.342795" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:54:57.343621" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:54:57.343367" 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-19T01:54:57.344226" elapsed="0.000285"/>
</kw>
<msg time="2026-04-19T01:54:57.344614" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:54:57.344662" level="INFO">${old_connection_index} = 39</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-19T01:54:57.343839" elapsed="0.000847"/>
</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-19T01:54:57.345522" elapsed="0.000206"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:55:07.347968" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:54:57.346431" elapsed="10.002695">No match found for '
' in 10 seconds
Output:
.</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-19T01:54:57.345892" elapsed="10.003379"/>
</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-19T01:55:07.350206" elapsed="0.000558"/>
</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-19T01:55:07.349590" elapsed="0.001271"/>
</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-19T01:54:57.344993" elapsed="10.005915"/>
</kw>
<status status="PASS" start="2026-04-19T01:54:57.344764" elapsed="10.006197"/>
</branch>
<status status="PASS" start="2026-04-19T01:54:57.344745" elapsed="10.006251"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:07.351986" level="INFO">${ip_address} = 10.30.171.206</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-19T01:55:07.351660" elapsed="0.000354"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:55:07.352095" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T01:55:07.352258" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:55:07.351271" elapsed="0.001012"/>
</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-19T01:55:07.352452" elapsed="0.000430"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:55:07.353226" level="INFO">index=44
host=10.30.171.206
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-19T01:55:07.353328" level="INFO">${karaf_connection_object} = index=44
host=10.30.171.206
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-19T01:55:07.353094" elapsed="0.000260"/>
</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-19T01:55:07.353502" elapsed="0.002714"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:55:07.356645" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:55:17.421359" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:55:07.356380" elapsed="10.066819">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:55:17.438744" elapsed="0.000598"/>
</kw>
<kw name="Open 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-19T01:55:17.439636" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:55:17.439958" elapsed="0.000530"/>
</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-19T01:55:17.425633" elapsed="0.014914"/>
</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-19T01:55:17.424289" elapsed="0.016305"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:54:57.341657" elapsed="20.099027">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:55:17.441118" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.441200" elapsed="0.000022"/>
</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-19T01:54:37.326173" elapsed="40.115144">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:55:17.441460" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:55:17.441506" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:54:37.321503" elapsed="40.120027"/>
</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-19T01:55:17.442075" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.441671" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.441640" elapsed="0.000554"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:54:37.321364" elapsed="40.120865"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:54:37.148001" elapsed="40.294285"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:54:37.145668" elapsed="40.296710"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:54:37.140851" elapsed="40.301625"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:54:37.140421" elapsed="40.302124"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:54:37.137386" elapsed="40.305239"/>
</kw>
<kw name="Verify_Keyword_Does_Not_Fail_Within_Timeout" owner="WaitForFailure">
<msg time="2026-04-19T01:55:17.448092" level="FAIL">Variable '${cs_owner}' not found.</msg>
<arg>5x</arg>
<arg>3s</arg>
<arg>CsCommon.Verify_Owner_And_Candidates_Stable</arg>
<arg>${cs_owner}</arg>
<doc>Some positive checks report false success for a short time. This keyword verifies no failure does happen within timeout period.
This implementation needs more complicated logic than, Verify_Keyword_Never_Passes_Within_Timeout,
so use that keyword in case you have a negative check handy.</doc>
<status status="FAIL" start="2026-04-19T01:55:17.442936" elapsed="0.005195">Variable '${cs_owner}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.449437" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.449029" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.449008" elapsed="0.000519"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:17.449667" elapsed="0.000314"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.456032" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:17.455494" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:55:17.456303" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.456157" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.456137" elapsed="0.000230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.456816" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:17.456513" elapsed="0.000330"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:55:17.457321" level="INFO">${reference} = controller_clustering_ask_txt_Master_Stability_Verify_Stability_After_Reregistration</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:55:17.456999" elapsed="0.000409"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:55:17.457826" level="INFO">${reference} = controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:55:17.457584" elapsed="0.000270"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.458389" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:17.458012" elapsed="0.000405"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.458888" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:17.458571" elapsed="0.000344"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.459538" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration&amp;order=bug_status"

Variable '${cs_owner}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:55:17.459087" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.460043" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:17.459741" elapsed="0.000365"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:55:17.455094" elapsed="0.005069"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:17.448796" elapsed="0.011419"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:55:17.448439" elapsed="0.011817"/>
</kw>
<doc>Verify that the owner remains on the same node after the unregistered candidate re-registration.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:54:37.136731" elapsed="40.323566">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_verify_stability_after_reregistration&amp;order=bug_status"

Variable '${cs_owner}' not found.</status>
</test>
<test id="s1-s10-t6" name="Unregister_Singleton_Constant_On_Each_Node" line="70">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T01:55:17.464615" elapsed="0.000218"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T01:55:17.464340" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.466043" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.465923" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.465903" elapsed="0.000230"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.471014" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.470905" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.470887" elapsed="0.000215"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.472133" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:55:17.471723" elapsed="0.000437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.472625" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:55:17.472316" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:55:17.472696" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:55:17.472856" level="INFO">${index_list} = [1, 2, 3]</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-19T01:55:17.471340" elapsed="0.001541"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.478500" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.478388" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.478368" elapsed="0.000239"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.479947" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.479837" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.479819" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:17.480527" 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-19T01:55:17.480192" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:55:17.480936" 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-19T01:55:17.480711" elapsed="0.000252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:55:17.520345" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:55:17.481479" elapsed="0.038974"/>
</kw>
<msg time="2026-04-19T01:55:17.520668" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:55:17.520716" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:55:17.481140" elapsed="0.039612"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:55:17.557284" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:55:17.521309" elapsed="0.036097"/>
</kw>
<msg time="2026-04-19T01:55:17.557584" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:55:17.557631" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:55:17.520926" elapsed="0.036741"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.557984" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.557749" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.557727" elapsed="0.000362"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.558549" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:17.558232" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.558906" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.558691" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.558673" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:55:17.559015" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:17.560563" elapsed="0.000870"/>
</kw>
<kw name="Open 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-19T01:55:17.561729" elapsed="0.000538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:55:17.562550" elapsed="0.000414"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:55:17.559884" elapsed="0.003220"/>
</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-19T01:55:17.559315" elapsed="0.003855"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:55:17.479526" elapsed="0.083743"/>
</kw>
<msg time="2026-04-19T01:55:17.563366" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:55:17.563425" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "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-19T01:55:17.478894" elapsed="0.084568"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:55:17.563648" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T01:55:17.563539" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.563520" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.564148" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.564525" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.564598" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:55:17.478022" elapsed="0.086683"/>
</kw>
<msg time="2026-04-19T01:55:17.564799" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:55:17.564843" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:55:17.473284" elapsed="0.091596"/>
</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-19T01:55:17.565225" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.564956" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.564938" elapsed="0.000366"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:55:17.473143" elapsed="0.092185"/>
</iter>
<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-19T01:55:17.572343" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.572229" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.572038" elapsed="0.000374"/>
</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-19T01:55:17.573581" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.573473" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.573455" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:17.574123" level="INFO">${karaf_connection_index} = 12</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-19T01:55:17.573789" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:55:17.574529" 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-19T01:55:17.574307" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:55:17.614824" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:55:17.575062" elapsed="0.039864"/>
</kw>
<msg time="2026-04-19T01:55:17.615132" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:55:17.615179" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T01:55:17.574715" elapsed="0.040499"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:55:17.649793" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:55:17.615718" elapsed="0.034185"/>
</kw>
<msg time="2026-04-19T01:55:17.650092" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:55:17.650140" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:55:17.615382" elapsed="0.034793"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.650485" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.650256" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.650234" elapsed="0.000328"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:17.651007" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:17.650700" elapsed="0.000399"/>
</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-19T01:55:17.651378" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.651165" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.651148" elapsed="0.000307"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:55:17.651488" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:17.652978" elapsed="0.000972"/>
</kw>
<kw name="Open 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-19T01:55:17.654265" elapsed="0.000501"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:55:17.655070" elapsed="0.000402"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:55:17.652313" elapsed="0.003271"/>
</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-19T01:55:17.651763" elapsed="0.003885"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:55:17.573169" elapsed="0.082578"/>
</kw>
<msg time="2026-04-19T01:55:17.655840" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:55:17.655885" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "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-19T01:55:17.572568" elapsed="0.083352"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:55:17.656124" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T01:55:17.655997" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.655979" elapsed="0.000229"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.656601" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:17.656933" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.657004" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:55:17.571709" elapsed="0.085420"/>
</kw>
<msg time="2026-04-19T01:55:17.657224" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:55:17.657268" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "M "a "s "t "e "r "[C "S "t "a "b "i "l "i "t "y ". "U "n "r "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:55:17.565594" elapsed="0.091710"/>
</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-19T01:55:17.657718" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:17.657383" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.657365" elapsed="0.000434"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:55:17.565454" elapsed="0.092370"/>
</iter>
<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-19T01:55:17.663576" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.663465" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.663446" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:55:17.664792" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:17.664684" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:17.664665" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:17.665333" level="INFO">${karaf_connection_index} = 44</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-19T01:55:17.665000" elapsed="0.000360"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:55:17.665753" 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-19T01:55:17.665516" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:55:27.667172" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:55:17.666290" elapsed="10.002043">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:55:27.668679" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:55:27.668738" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:55:17.665935" elapsed="10.002831"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:55:37.670327" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:55:27.669582" elapsed="10.001744">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:55:37.671635" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:55:37.671790" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:55:27.669084" elapsed="10.002733"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:55:37.673146" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Each_Node"</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-19T01:55:37.672343" elapsed="0.000868">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:55:37.671943" elapsed="0.001340">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:55:37.671909" elapsed="0.001409">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Each_Node"</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-19T01:55:37.673482" 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-19T01:55:37.673716" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:37.673576" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:55:37.673559" elapsed="0.000232"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:55:37.673830" 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-19T01:55:37.675492" elapsed="0.000900"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:55:37.676690" elapsed="0.000567"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:55:37.677535" elapsed="0.000418"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:55:37.674782" elapsed="0.003330"/>
</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-19T01:55:37.674180" elapsed="0.004003"/>
</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-19T01:55:17.664382" elapsed="20.013888">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T01:55:37.678376" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:55:37.678421" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Master Stability.Unregister_Singleton_Constant_On_Each_Node"</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-19T01:55:17.663797" elapsed="20.014648"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:55:37.678635" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:37.678525" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:37.678506" elapsed="0.000196"/>
</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-19T01:55:37.679531" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:55:37.679426" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:37.679407" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:55:37.679918" 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-19T01:55:37.680023" 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-19T01:55:37.679761" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:37.680698" level="INFO">{1: 10, 2: 12, 3: 44}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:37.680230" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:37.681255" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:37.680893" elapsed="0.000406"/>
</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-19T01:55:37.681812" elapsed="0.000301"/>
</kw>
<msg time="2026-04-19T01:55:37.682212" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:55:37.682258" level="INFO">${old_connection_index} = 44</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-19T01:55:37.681458" elapsed="0.000825"/>
</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-19T01:55:37.683098" elapsed="0.000201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:55:47.685314" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:55:37.684000" elapsed="10.002515">No match found for '
' in 10 seconds
Output:
.</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-19T01:55:37.683462" elapsed="10.003203"/>
</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-19T01:55:47.687600" elapsed="0.000514"/>
</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-19T01:55:47.686986" elapsed="0.001220"/>
</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-19T01:55:37.682583" elapsed="10.005673"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:37.682362" elapsed="10.005947"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:37.682343" elapsed="10.006010"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:47.689346" level="INFO">${ip_address} = 10.30.171.206</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-19T01:55:47.688999" elapsed="0.000375"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:55:47.689429" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:55:47.689592" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:55:47.688607" elapsed="0.001010"/>
</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-19T01:55:47.689777" elapsed="0.000510"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:55:47.690589" level="INFO">index=49
host=10.30.171.206
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-19T01:55:47.690692" level="INFO">${karaf_connection_object} = index=49
host=10.30.171.206
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-19T01:55:47.690458" elapsed="0.000260"/>
</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-19T01:55:47.690863" elapsed="0.002555"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:55:47.693851" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:55:57.757477" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:55:47.693587" elapsed="10.064823">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:55:57.773319" elapsed="0.000545"/>
</kw>
<kw name="Open 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-19T01:55:57.774301" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:55:57.774624" elapsed="0.000133"/>
</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-19T01:55:57.759801" elapsed="0.015011"/>
</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-19T01:55:57.759018" elapsed="0.015841"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:55:37.679129" elapsed="20.095821">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:55:57.775349" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:55:57.775428" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T01:55:17.662926" elapsed="40.112619">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:55:57.775667" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:55:57.775712" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:55:17.658116" elapsed="40.117619"/>
</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-19T01:55:57.776096" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.775821" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.775798" elapsed="0.000453"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:55:17.657958" elapsed="40.118327"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:55:17.472938" elapsed="40.303382"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T01:55:17.470536" elapsed="40.305844"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T01:55:17.465608" elapsed="40.310830"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:55:17.465044" elapsed="40.311439"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T01:55:17.461700" elapsed="40.314837"/>
</kw>
<kw name="Unregister_Singleton_Constant_On_Nodes" owner="CsCommon">
<for flavor="IN">
<iter>
<kw name="Unregister_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Unregister_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.779123" 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-19T01:55:57.778800" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:55:57.779197" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:55:57.779348" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:55:57.778437" elapsed="0.000935"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.814521" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:57.814075" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:57.815477" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:57.815090" elapsed="0.000559">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:57.815913" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:57.814711" elapsed="0.001228"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.816603" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:57.816121" elapsed="0.000510"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:55:57.816959" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:55:57.817148" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:55:57.816792" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.817603" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.817332" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.819222" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.818511" elapsed="0.000857"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.820370" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:55:57.819656" elapsed="0.000757"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.821248" elapsed="0.000050"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.821842" elapsed="0.000053"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.822205" elapsed="0.000049"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T01:55:57.820921" elapsed="0.001387"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T01:55:57.820560" elapsed="0.001843"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:55:57.822615" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:55:57.822904" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:55:57.818077" elapsed="0.004909"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.817716" elapsed="0.005306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.823210" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.823061" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.817697" elapsed="0.005589"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.823921" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:57.823427" elapsed="0.000522"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:55:57.823998" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:55:57.813450" elapsed="0.010718"/>
</kw>
<msg time="2026-04-19T01:55:57.824222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:57.801054" elapsed="0.023217"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.836821" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.849011" elapsed="0.000045"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.860812" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.861004" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.861189" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.861552" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.861410" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:55:57.861395" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.861765" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.861927" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.862104" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:55:57.861367" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:55:57.861266" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.862326" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:55:57.862401" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:55:57.862559" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:55:57.796597" elapsed="0.065988"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.886568" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:57.886083" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:57.887515" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:57.887134" elapsed="0.000560">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:57.887969" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:57.886771" elapsed="0.001229"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.888667" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:57.888214" elapsed="0.000481"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:55:57.889023" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:55:57.889215" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:55:57.888856" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.889688" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.889414" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:55:57.890217" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.889812" elapsed="0.000468"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.890986" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:57.890450" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.890307" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.889788" elapsed="0.001300"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.891723" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:57.891246" elapsed="0.000504"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:55:57.891802" elapsed="0.000032"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:55:57.885406" elapsed="0.006528"/>
</kw>
<msg time="2026-04-19T01:55:57.891987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:57.873186" elapsed="0.018875"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.904353" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.916129" elapsed="0.000080"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.928119" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.928313" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.928482" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.928852" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.928711" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:55:57.928696" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.929084" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.929259" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.929425" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:55:57.928668" elapsed="0.000810"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:55:57.928562" elapsed="0.000943"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.929648" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:55:57.929723" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:55:57.929831" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:55:57.872286" elapsed="0.057570"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:57.931143" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:57.930872" elapsed="0.000335">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:57.931298" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:57.930536" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.931661" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.931417" elapsed="0.000300"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.932222" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:57.931912" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.931741" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.931398" elapsed="0.000906"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.934558" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:57.932449" elapsed="0.002135"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:55:57.934636" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:55:57.934789" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:55:57.930210" elapsed="0.004637"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.936392" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.936146" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.936825" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.936587" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.937270" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.937010" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.937696" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.937458" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:57.938553" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:55:57.938354" elapsed="0.000225"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:55:57.938906" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:55:57.938730" elapsed="0.000202"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:55:57.939101" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.939760" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.939512" elapsed="0.000292"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:55:57.939847" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:55:57.940001" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:55:57.937936" elapsed="0.002089"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:55:57.972085" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01xh4mfsd5nelv1e3k7ma7pqjdg0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:55:57.972191" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T01:55:57.972422" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:55:57.942257" elapsed="0.030223"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.940113" elapsed="0.032472"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.972983" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.972644" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.940095" elapsed="0.033121"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.980475" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.975664" elapsed="0.004857"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.975132" elapsed="0.005424"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.975005" elapsed="0.005576"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.983141" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:57.980855" elapsed="0.002332"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.980637" elapsed="0.002585"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.980621" elapsed="0.002626"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.983805" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:57.983409" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.984147" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.983901" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.984680" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:57.984384" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.984229" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.983882" elapsed="0.000880"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.985290" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:57.984915" elapsed="0.000402"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.985655" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.985424" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.986206" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:57.985887" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:57.985734" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.985406" elapsed="0.000883"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:57.986435" elapsed="0.000344"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:55:57.987243" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:57.986939" elapsed="0.000331"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:55:57.987420" elapsed="0.002303"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:55:57.974021" elapsed="0.015765"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:55:57.989966" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:55:57.989858" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.989840" elapsed="0.000377"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.990368" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:55:57.990436" elapsed="0.000014"/>
</return>
<msg time="2026-04-19T01:55:57.992616" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:55:57.935197" elapsed="0.057446"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:55:57.992713" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:55:57.992865" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:55:57.785865" elapsed="0.207024"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:57.993242" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:57.992991" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:57.992975" elapsed="0.000375"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:55:57.993383" elapsed="0.000030"/>
</return>
<arg>${UNREGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:55:57.779618" elapsed="0.213909"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister singleton application on given node by invoking unregister-singleton-constant rpc.</doc>
<status status="PASS" start="2026-04-19T01:55:57.777717" elapsed="0.215879"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:55:57.993750" elapsed="0.000202"/>
</kw>
<arg>${index}</arg>
<doc>Unregister the singleton candidate. Also remove it from the list of [1, 2].</doc>
<status status="PASS" start="2026-04-19T01:55:57.777360" elapsed="0.216655"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:55:57.777159" elapsed="0.216908"/>
</iter>
<iter>
<kw name="Unregister_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Unregister_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:57.995770" level="INFO">${session} = ClusterManagement__session_2</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-19T01:55:57.995443" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:55:57.995843" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:55:57.995988" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:55:57.995103" elapsed="0.000913"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.030584" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.030139" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.031451" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.031131" elapsed="0.000492">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:58.031918" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:58.030771" elapsed="0.001173"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.032579" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:58.032126" elapsed="0.000480"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.032926" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:55:58.033083" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:55:58.032765" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.033533" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.033265" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.035143" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.034428" elapsed="0.000865"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.036336" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:55:58.035585" elapsed="0.000795"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.037240" elapsed="0.000052"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.037863" elapsed="0.000054"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.038234" elapsed="0.000049"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T01:55:58.036906" elapsed="0.001431"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.036532" elapsed="0.001902"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:55:58.038650" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:55:58.038935" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:55:58.033983" elapsed="0.004978"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.033645" elapsed="0.005349"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.039181" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.039019" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.033627" elapsed="0.005630"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.039902" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:58.039396" elapsed="0.000533"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:55:58.039979" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:55:58.029514" elapsed="0.010664"/>
</kw>
<msg time="2026-04-19T01:55:58.040232" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:58.017194" elapsed="0.023086"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.052671" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.064580" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.076374" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.076566" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.076739" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.077110" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.076954" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:55:58.076940" elapsed="0.000250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.077325" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.077486" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.077646" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:55:58.076912" elapsed="0.000785"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.076814" elapsed="0.000908"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.077862" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.077937" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:55:58.078065" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:55:58.013108" elapsed="0.064984"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.101768" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.101327" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.102615" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.102313" elapsed="0.000470">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:58.103065" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:58.101955" elapsed="0.001137"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.103734" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:58.103288" elapsed="0.000474"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.104106" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:55:58.104233" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:55:58.103920" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.104678" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.104413" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:55:58.105136" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.104786" elapsed="0.000410"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.105882" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.105362" elapsed="0.000546"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.105220" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.104768" elapsed="0.001196"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.106583" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:58.106126" elapsed="0.000484"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:55:58.106659" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:55:58.100703" elapsed="0.006079"/>
</kw>
<msg time="2026-04-19T01:55:58.106833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:58.088643" elapsed="0.018237"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.119159" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.131000" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.142666" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.142859" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.143044" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.143408" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.143267" elapsed="0.000233"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:55:58.143252" elapsed="0.000272"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.143664" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.143829" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.143993" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:55:58.143223" elapsed="0.000839"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.143122" elapsed="0.000968"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.144244" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.144321" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:55:58.144432" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:55:58.087771" elapsed="0.056686"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.145737" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.145492" elapsed="0.000310">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:58.145893" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:58.145151" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.146251" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.145989" elapsed="0.000318"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.146784" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.146494" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.146331" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.145968" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.149135" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:58.147006" elapsed="0.002160"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:55:58.149229" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:55:58.149384" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:55:58.144789" elapsed="0.004620"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.150919" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.150672" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.151366" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.151129" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.151790" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.151551" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.152275" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.151979" elapsed="0.000344"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:58.153132" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:55:58.152916" elapsed="0.000243"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:55:58.153479" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:55:58.153305" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:55:58.153647" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.154355" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.154103" elapsed="0.000298"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:55:58.154444" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:55:58.154598" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:55:58.152518" elapsed="0.002105"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:55:58.182268" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node079x8yon7qdbr17gv2xrmhru5x0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T01:55:58.182376" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T01:55:58.182587" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T01:55:58.156846" elapsed="0.025800"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.154692" elapsed="0.028057"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.183173" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.182807" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.154674" elapsed="0.028694"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.191197" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.185904" elapsed="0.005394"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.185300" elapsed="0.006076"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.185246" elapsed="0.006188"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.194947" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.192081" elapsed="0.002913"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.191557" elapsed="0.003488"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.191521" elapsed="0.003553"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.195629" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:58.195235" elapsed="0.000422"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.195955" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.195726" elapsed="0.000285"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.196540" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.196219" elapsed="0.000347"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.196062" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.195707" elapsed="0.000915"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.197153" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:58.196774" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.197474" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.197248" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.197992" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.197703" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.197552" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.197230" elapsed="0.000992"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:58.198369" elapsed="0.000348"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T01:55:58.199177" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:58.198875" elapsed="0.000329"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:55:58.199354" elapsed="0.002257"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T01:55:58.184195" elapsed="0.017479"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T01:55:58.201891" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T01:55:58.201783" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.201764" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.202138" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.202207" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:55:58.204364" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T01:55:58.149736" elapsed="0.054654"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:55:58.204485" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:55:58.204641" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T01:55:58.002420" elapsed="0.202247"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.205003" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.204770" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.204753" elapsed="0.000359"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T01:55:58.205145" elapsed="0.000025"/>
</return>
<arg>${UNREGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T01:55:57.996341" elapsed="0.208926"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister singleton application on given node by invoking unregister-singleton-constant rpc.</doc>
<status status="PASS" start="2026-04-19T01:55:57.994721" elapsed="0.210606"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:55:58.205473" elapsed="0.000197"/>
</kw>
<arg>${index}</arg>
<doc>Unregister the singleton candidate. Also remove it from the list of [2].</doc>
<status status="PASS" start="2026-04-19T01:55:57.994360" elapsed="0.211370"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:55:57.994161" elapsed="0.211602"/>
</iter>
<iter>
<kw name="Unregister_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Unregister_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.207444" level="INFO">${session} = ClusterManagement__session_3</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-19T01:55:58.207147" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:55:58.207516" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:55:58.207662" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T01:55:58.206792" elapsed="0.000894"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.244089" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.243613" elapsed="0.000506"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.244955" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.244632" elapsed="0.000520">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:58.245447" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:58.244283" elapsed="0.001191"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.246116" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:58.245640" elapsed="0.000504"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.246464" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:55:58.246635" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:55:58.246301" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.247124" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.246815" elapsed="0.000366"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.248767" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.248018" elapsed="0.000904"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.250587" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T01:55:58.249677" elapsed="0.000965"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.251563" elapsed="0.000055"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.252201" elapsed="0.000057"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.252568" elapsed="0.000116"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T01:55:58.251227" elapsed="0.001519"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.250822" elapsed="0.002021"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T01:55:58.253138" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:55:58.253430" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T01:55:58.247591" elapsed="0.005865"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.247250" elapsed="0.006239"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.253673" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.253522" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.247231" elapsed="0.006519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.254463" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:58.253890" elapsed="0.000602"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:55:58.254553" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:55:58.242986" elapsed="0.011694"/>
</kw>
<msg time="2026-04-19T01:55:58.254734" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:58.230576" elapsed="0.024207"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.267163" elapsed="0.000057"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.278978" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.290987" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.291235" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.291410" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.291781" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.291640" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:55:58.291626" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.291997" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.292183" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.292348" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:55:58.291597" elapsed="0.000806"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.291494" elapsed="0.000936"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.292579" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.292659" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T01:55:58.292770" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:55:58.226448" elapsed="0.066363"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.317389" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.316912" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.318263" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.317911" elapsed="0.000523">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:58.318702" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:58.317577" elapsed="0.001150"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.319408" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:58.318888" elapsed="0.000547"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.319755" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T01:55:58.319884" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T01:55:58.319593" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.320364" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.320089" elapsed="0.000318"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T01:55:58.320812" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.320474" elapsed="0.000401"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.321758" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.321106" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.320934" elapsed="0.000887"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.320456" elapsed="0.001387"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.322486" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:55:58.321986" elapsed="0.000528"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T01:55:58.322601" elapsed="0.000031"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T01:55:58.316278" elapsed="0.006454"/>
</kw>
<msg time="2026-04-19T01:55:58.322785" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:55:58.303466" elapsed="0.019369"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.335219" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.347429" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.359491" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.359702" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.359904" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.360331" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.360186" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:55:58.360170" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.360550" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.360711" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.360881" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T01:55:58.360109" elapsed="0.000827"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.359985" elapsed="0.000977"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.361157" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T01:55:58.361237" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T01:55:58.361352" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T01:55:58.302587" elapsed="0.058789"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T01:55:58.362775" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.362516" elapsed="0.000343">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T01:55:58.362954" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T01:55:58.362152" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T01:55:58.363317" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:55:58.363067" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.363866" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:55:58.363564" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-19T01:55:58.363397" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T01:55:58.363046" elapsed="0.000903"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.366263" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T01:55:58.364118" elapsed="0.002172"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T01:55:58.366344" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:55:58.366499" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T01:55:58.361791" elapsed="0.004733"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.368151" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.367841" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.368599" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.368354" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.369070" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.368793" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.369540" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.369295" elapsed="0.000290"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T01:55:58.370419" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T01:55:58.370219" elapsed="0.000228"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T01:55:58.370770" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T01:55:58.370596" elapsed="0.000200"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:55:58.370940" elapsed="0.000245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:55:58.371587" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:55:58.371339" elapsed="0.000294"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T01:55:58.371676" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:55:58.371832" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T01:55:58.369783" elapsed="0.002074"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:58:03.438947" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.374170" elapsed="125.069247">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T01:55:58.371927" elapsed="125.071704">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:03.444237" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:03.443716" elapsed="0.000679"/>
</branch>
<status status="FAIL" start="2026-04-19T01:55:58.371910" elapsed="125.072539">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:03.445437" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T01:58:03.445926" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:03.445838" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:58:03.445796" elapsed="0.000305"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:03.446422" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T01:58:03.446573" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.366851" elapsed="125.079960">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:58:03.447010" elapsed="0.000063"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.215543" elapsed="125.231714">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:03.447909" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:03.447510" elapsed="0.000578"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:58:03.447474" elapsed="0.000671"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T01:58:03.448220" elapsed="0.000031"/>
</return>
<arg>${UNREGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.207931" elapsed="125.240504">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>${member_index}</arg>
<doc>Unregister singleton application on given node by invoking unregister-singleton-constant rpc.</doc>
<status status="FAIL" start="2026-04-19T01:55:58.206428" elapsed="125.242218">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:03.448992" elapsed="0.000077"/>
</kw>
<arg>${index}</arg>
<doc>Unregister the singleton candidate. Also remove it from the list of [].</doc>
<status status="FAIL" start="2026-04-19T01:55:58.206065" elapsed="125.243244">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T01:55:58.205851" elapsed="125.243592">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T01:55:57.777006" elapsed="125.672559">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${cs_all_indices}</arg>
<doc>Unregister the application from given nodes.</doc>
<status status="FAIL" start="2026-04-19T01:55:57.776774" elapsed="125.672913">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:03.451026" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:03.450636" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:03.450619" elapsed="0.000509"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:03.451283" elapsed="0.000375"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.456513" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:58:03.456081" elapsed="0.000460"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T01:58:03.456758" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:03.456615" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:03.456597" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.457303" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T01:58:03.456962" elapsed="0.000369"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T01:58:03.457746" level="INFO">${reference} = controller_clustering_ask_txt_Master_Stability_Unregister_Singleton_Constant_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T01:58:03.457486" elapsed="0.000322"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T01:58:03.458161" level="INFO">${reference} = controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T01:58:03.457966" elapsed="0.000222"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.458685" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:58:03.458338" elapsed="0.000375"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.459191" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:58:03.458862" elapsed="0.000357"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.459813" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T01:58:03.459370" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.460377" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:03.460077" elapsed="0.000349"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T01:58:03.455763" elapsed="0.004717"/>
</kw>
<status status="PASS" start="2026-04-19T01:58:03.450425" elapsed="0.010105"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T01:58:03.450002" elapsed="0.010570"/>
</kw>
<doc>Unregister the application from each node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:55:17.460976" elapsed="165.999638">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_master_stability_unregister_singleton_constant_on_each_node&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T01:58:03.461391" elapsed="0.000298"/>
</kw>
<doc>Cluster Singleton testing: Master Stability

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Cluster Singleton service is designed to ensure that only one instance of an
application is registered globally in the cluster.
The goal is to establish the service operates correctly in face of application
registration changing without moving the active instance.</doc>
<status status="FAIL" start="2026-04-19T01:48:55.519623" elapsed="547.942103"/>
</suite>
<suite id="s1-s11" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.569666" 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-19T01:58:03.564998" elapsed="0.004721"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T01:58:03.564771" elapsed="0.005015"/>
</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-19T01:58:03.575012" 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-19T01:58:03.570886" elapsed="0.004167"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T01:58:03.575240" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:03.575134" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:03.575113" elapsed="0.000192"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.575796" 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-19T01:58:03.575459" elapsed="0.000381"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.576328" level="INFO">${cluster_size} = 3</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-19T01:58:03.576000" elapsed="0.000355"/>
</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-19T01:58:03.576909" elapsed="0.000298"/>
</kw>
<msg time="2026-04-19T01:58:03.577304" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:58:03.577351" level="INFO">${possibly_int_of_members} = 3</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-19T01:58:03.576569" elapsed="0.000805"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.577937" level="INFO">${int_of_members} = 3</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-19T01:58:03.577541" elapsed="0.000424"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.578937" 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-19T01:58:03.578676" elapsed="0.000287"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.579378" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:58:03.579125" elapsed="0.000280"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.579843" 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-19T01:58:03.579561" elapsed="0.000308"/>
</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-19T01:58:03.583068" elapsed="0.000222"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.583769" level="INFO">${member_ip} = 10.30.171.9</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-19T01:58:03.583448" elapsed="0.000346"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T01:58:03.583947" elapsed="0.000243"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.584974" 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-19T01:58:03.584680" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:58:03.585061" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:58:03.585220" 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-19T01:58:03.584383" elapsed="0.000861"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:58:03.585819" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7583dd0&gt;, timeout=125, 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-19T01:58:03.585401" elapsed="0.000584"/>
</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-19T01:58:03.586162" elapsed="0.000191"/>
</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-19T01:58:03.582498" elapsed="0.003915"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:58:03.582311" elapsed="0.004146"/>
</iter>
<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-19T01:58:03.587491" elapsed="0.000195"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.588187" level="INFO">${member_ip} = 10.30.171.128</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-19T01:58:03.587843" 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-19T01:58:03.588366" elapsed="0.000223"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.589393" level="INFO">${session} = ClusterManagement__session_2</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-19T01:58:03.589095" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:58:03.589465" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:58:03.589615" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T01:58:03.588784" elapsed="0.000856"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:58:03.590231" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7583d90&gt;, timeout=125, 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-19T01:58:03.589795" elapsed="0.000540"/>
</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-19T01:58:03.590495" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-19T01:58:03.586914" elapsed="0.003869"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:58:03.586542" elapsed="0.004290"/>
</iter>
<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-19T01:58:03.591660" elapsed="0.000187"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.592341" level="INFO">${member_ip} = 10.30.171.206</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-19T01:58:03.592003" elapsed="0.000364"/>
</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-19T01:58:03.592518" elapsed="0.000217"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.593528" level="INFO">${session} = ClusterManagement__session_3</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-19T01:58:03.593231" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T01:58:03.593599" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:58:03.593747" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T01:58:03.592923" elapsed="0.000848"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T01:58:03.594364" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706166310&gt;, timeout=125, 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-19T01:58:03.593924" elapsed="0.000542"/>
</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-19T01:58:03.594627" elapsed="0.000186"/>
</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-19T01:58:03.591113" elapsed="0.003758"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:58:03.590917" elapsed="0.003998"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T01:58:03.579920" elapsed="0.015024"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.595510" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T01:58:03.595127" elapsed="0.000426"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.596108" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T01:58:03.595713" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.596675" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T01:58:03.596312" elapsed="0.000405"/>
</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-19T01:58:03.578231" elapsed="0.018542"/>
</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-19T01:58:03.570544" elapsed="0.026285"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:58:03.597004" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:03.596892" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:03.596874" elapsed="0.000217"/>
</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-19T01:58:03.600432" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:58:03.600051" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.600919" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:58:03.600619" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:58:03.600990" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:58:03.601163" level="INFO">${index_list} = [1, 2, 3]</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-19T01:58:03.599708" elapsed="0.001480"/>
</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-19T01:58:03.602198" level="INFO">${member_ip} = 10.30.171.9</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-19T01:58:03.601887" elapsed="0.000383"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:03.603005" 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-19T01:58:03.603124" 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-19T01:58:03.602848" elapsed="0.000302"/>
</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-19T01:58:03.605749" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:03.605436" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:03.605418" elapsed="0.000521"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:03.606255" 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-19T01:58:03.606379" 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-19T01:58:03.606123" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.607518" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:03.606559" elapsed="0.001009"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:03.608386" 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-19T01:58:03.607730" elapsed="0.000684"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:58:03.609720" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:58:03.609924" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:58:03.609173" elapsed="0.000801"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:03.610318" elapsed="0.000609"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:58:03.612568" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:58:04.214377" 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 Sun Apr 19 01:58:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:48:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:58:03.612168" elapsed="0.602422"/>
</kw>
<msg time="2026-04-19T01:58:04.214698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:03.611271" elapsed="0.603601"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:58:03.608630" elapsed="0.606512"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.215704" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:58:04.228203" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:58:04.228568" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:58:04.228674" 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-19T01:58:04.215391" elapsed="0.013342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:04.229198" elapsed="0.000552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.231484" 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-19T01:58:04.230371" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:04.232247" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:04.231772" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:04.231719" elapsed="0.000697"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:58:04.232839" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T01:58:04.232541" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:04.232505" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:04.233163" 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-19T01:58:04.237700" elapsed="0.001022"/>
</kw>
<kw name="Open 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-19T01:58:04.239054" elapsed="0.000604"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:04.239931" elapsed="0.000310"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:04.233818" elapsed="0.006583"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:58:03.604935" elapsed="0.635613"/>
</kw>
<msg time="2026-04-19T01:58:04.240627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:03.604296" elapsed="0.636405"/>
</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-19T01:58:03.603802" elapsed="0.637012"/>
</kw>
<msg time="2026-04-19T01:58:04.240870" 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-19T01:58:03.603305" elapsed="0.637629"/>
</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-19T01:58:04.244139" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:58:04.244621" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:04.244915" 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-19T01:58:04.241466" elapsed="0.003613"/>
</kw>
<msg time="2026-04-19T01:58:04.245174" 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-19T01:58:03.602492" elapsed="0.642706"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.245643" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:04.245391" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:58:04.245728" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:58:03.601538" elapsed="0.644312"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:58:03.601364" elapsed="0.644525"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:04.246871" level="INFO">${member_ip} = 10.30.171.128</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-19T01:58:04.246599" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.247625" 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-19T01:58:04.247722" 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-19T01:58:04.247490" elapsed="0.000258"/>
</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-19T01:58:04.250866" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:04.250552" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:04.250532" elapsed="0.000542"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.251359" 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-19T01:58:04.251526" 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-19T01:58:04.251225" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.252614" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:04.251711" elapsed="0.000951"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.253481" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:58:04.252821" elapsed="0.000687"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.254848" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:58:04.255079" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:58:04.254293" elapsed="0.000838"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:04.255411" elapsed="0.000637"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.257583" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:58:04.882955" 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 Sun Apr 19 01:58:04 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:48:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:58:04.257138" elapsed="0.626060"/>
</kw>
<msg time="2026-04-19T01:58:04.883306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:04.256380" elapsed="0.627095"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:58:04.253726" elapsed="0.629990"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.884301" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:58:04.897091" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:58:04.897324" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:58:04.897391" 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-19T01:58:04.883966" elapsed="0.013461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:04.897686" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.899684" 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-19T01:58:04.898589" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:04.900311" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:04.899951" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:04.899904" 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-19T01:58:04.900884" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T01:58:04.900609" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:04.900574" elapsed="0.000533"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:04.901183" 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-19T01:58:04.908530" elapsed="0.001436"/>
</kw>
<kw name="Open 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-19T01:58:04.910213" elapsed="0.000408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:04.910810" 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-19T01:58:04.901858" elapsed="0.009239"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:58:04.249997" elapsed="0.661193"/>
</kw>
<msg time="2026-04-19T01:58:04.911302" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:04.249312" elapsed="0.662043"/>
</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-19T01:58:04.248797" elapsed="0.662637"/>
</kw>
<msg time="2026-04-19T01:58:04.911475" 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-19T01:58:04.247903" elapsed="0.663617"/>
</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-19T01:58:04.914439" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:58:04.914910" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:04.915221" 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-19T01:58:04.911811" elapsed="0.003556"/>
</kw>
<msg time="2026-04-19T01:58:04.915456" 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-19T01:58:04.247132" elapsed="0.668349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.915905" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:04.915660" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:58:04.915989" 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-19T01:58:04.246236" elapsed="0.669905"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:58:04.245983" elapsed="0.670198"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:04.917204" level="INFO">${member_ip} = 10.30.171.206</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-19T01:58:04.916854" elapsed="0.000376"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.917938" 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-19T01:58:04.918052" 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-19T01:58:04.917803" elapsed="0.000276"/>
</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-19T01:58:04.920744" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:04.920418" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:04.920400" elapsed="0.000533"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.921230" 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-19T01:58:04.921351" 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-19T01:58:04.921099" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.922440" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:04.921527" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.923289" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:58:04.922642" elapsed="0.000673"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:58:04.924624" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:58:04.924857" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:58:04.924071" elapsed="0.000837"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:04.925211" elapsed="0.001989"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:58:04.928707" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:58:05.552600" 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 Sun Apr 19 01:58:05 UTC 2026

  System load:  0.05               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:48:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:58:04.928294" elapsed="0.624636"/>
</kw>
<msg time="2026-04-19T01:58:05.553068" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:04.927527" elapsed="0.625720"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:58:04.923526" elapsed="0.629966"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:58:05.554095" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T01:58:05.567571" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T01:58:05.567870" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:58:05.567938" 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-19T01:58:05.553744" elapsed="0.014230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:05.568244" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:05.570116" 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-19T01:58:05.568944" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:05.570750" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:05.570399" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:05.570347" elapsed="0.000562"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:58:05.571347" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T01:58:05.571025" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:05.570992" elapsed="0.000546"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:05.571612" 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-19T01:58:05.577568" elapsed="0.000768"/>
</kw>
<kw name="Open 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-19T01:58:05.578563" elapsed="0.000409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:05.579179" elapsed="0.000191"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:05.572368" elapsed="0.007083"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:58:04.919904" elapsed="0.659641"/>
</kw>
<msg time="2026-04-19T01:58:05.579599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:04.919234" elapsed="0.660417"/>
</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-19T01:58:04.918736" elapsed="0.661041"/>
</kw>
<msg time="2026-04-19T01:58:05.579839" 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-19T01:58:04.918234" elapsed="0.661655"/>
</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-19T01:58:05.582863" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:58:05.583372" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:05.583669" elapsed="0.000170"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:05.580260" elapsed="0.003636"/>
</kw>
<msg time="2026-04-19T01:58:05.583988" 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-19T01:58:04.917446" elapsed="0.666625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:05.584501" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:05.584251" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:58:05.584585" 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-19T01:58:04.916456" elapsed="0.668252"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:58:04.916274" elapsed="0.668471"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:58:03.601239" elapsed="1.983540"/>
</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-19T01:58:03.597307" elapsed="1.987529"/>
</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-19T01:58:05.584995" elapsed="0.000233"/>
</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-19T01:58:05.599953" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:05.599807" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:05.599786" elapsed="0.000236"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:05.600345" 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-19T01:58:05.600450" 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-19T01:58:05.600199" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:05.600887" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:05.600630" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:05.601340" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:05.601099" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:05.602140" 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-19T01:58:05.601899" elapsed="0.000349">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T01:58:05.602352" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:58:05.602398" 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-19T01:58:05.601541" elapsed="0.000879"/>
</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-19T01:58:05.602723" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:05.602495" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:05.602476" elapsed="0.000344"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:05.603574" level="INFO">${ip_address} = 10.30.171.9</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-19T01:58:05.603311" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:58:05.603649" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:58:05.603797" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:58:05.603023" elapsed="0.000798"/>
</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-19T01:58:05.603988" elapsed="0.000416"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:05.604675" level="INFO">index=10
host=10.30.171.9
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-19T01:58:05.604775" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T01:58:05.604571" 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-19T01:58:05.604948" elapsed="0.002395"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:58:05.607773" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:58:05.810368" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:58:05.607506" elapsed="0.203182"/>
</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-19T01:58:05.816382" elapsed="0.000523"/>
</kw>
<kw name="Open 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-19T01:58:05.817155" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:05.817590" elapsed="0.000152"/>
</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-19T01:58:05.812290" elapsed="0.005516"/>
</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-19T01:58:05.811269" elapsed="0.006586"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:58:05.599492" elapsed="0.218416"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:58:05.585944" elapsed="0.232014"/>
</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-19T01:58:05.585577" elapsed="0.232435"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:58:05.585437" elapsed="0.232634"/>
</iter>
<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-19T01:58:05.832018" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:05.831897" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:05.831872" elapsed="0.000240"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:05.832408" 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-19T01:58:05.832516" 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-19T01:58:05.832271" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:05.832981" 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-19T01:58:05.832694" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:05.833436" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:05.833194" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:05.834241" level="FAIL">Dictionary does not contain key '2'.</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-19T01:58:05.833992" elapsed="0.000358">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T01:58:05.834456" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:58:05.834501" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T01:58:05.833633" elapsed="0.000891"/>
</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-19T01:58:05.834820" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:05.834598" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:05.834580" elapsed="0.000336"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:05.835666" level="INFO">${ip_address} = 10.30.171.128</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-19T01:58:05.835403" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:58:05.835740" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:58:05.835893" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:58:05.835132" elapsed="0.000785"/>
</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-19T01:58:05.836087" elapsed="0.000401"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:05.836766" level="INFO">index=12
host=10.30.171.128
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-19T01:58:05.836864" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T01:58:05.836658" elapsed="0.000270"/>
</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-19T01:58:05.837125" elapsed="0.002564"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:58:05.840137" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:58:06.029043" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T01:58:05.839856" elapsed="0.189361"/>
</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-19T01:58:06.033212" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T01:58:06.033707" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:06.034072" elapsed="0.000106"/>
</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-19T01:58:06.030548" elapsed="0.003685"/>
</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-19T01:58:06.029696" elapsed="0.004584"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T01:58:05.831599" elapsed="0.202736"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:58:05.818695" elapsed="0.215689"/>
</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-19T01:58:05.818322" elapsed="0.216118"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:58:05.818180" elapsed="0.216302"/>
</iter>
<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-19T01:58:06.048518" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:06.048382" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:06.048355" elapsed="0.000246"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:06.048946" 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-19T01:58:06.049079" 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-19T01:58:06.048781" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:06.049550" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:06.049265" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:06.050006" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:06.049751" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:06.050873" level="FAIL">Dictionary does not contain key '3'.</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-19T01:58:06.050628" elapsed="0.000361">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T01:58:06.051117" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:58:06.051163" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T01:58:06.050226" elapsed="0.000960"/>
</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-19T01:58:06.051488" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:06.051263" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:06.051244" elapsed="0.000342"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:06.052706" level="INFO">${ip_address} = 10.30.171.206</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-19T01:58:06.052427" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:58:06.052783" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T01:58:06.052941" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:58:06.051882" elapsed="0.001084"/>
</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-19T01:58:06.053141" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:06.053842" level="INFO">index=14
host=10.30.171.206
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-19T01:58:06.053966" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T01:58:06.053735" elapsed="0.000259"/>
</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-19T01:58:06.054162" elapsed="0.002389"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:58:06.056978" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:58:16.120579" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:06.056717" elapsed="10.064797">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:16.125274" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:58:16.125762" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:16.126097" 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-19T01:58:16.122765" elapsed="0.003489"/>
</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-19T01:58:16.122063" elapsed="0.004236"/>
</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-19T01:58:06.048013" elapsed="10.078370">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:58:16.126475" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:06.035130" elapsed="10.091447">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:06.034738" elapsed="10.091907"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:58:06.034596" elapsed="10.092098"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T01:58:05.585287" elapsed="10.541447"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T01:58:03.570106" elapsed="12.556691"/>
</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-19T01:58:16.129897" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.129775" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.129752" elapsed="0.000218"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:58:16.134945" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.134837" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.134819" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:58:16.135980" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:58:16.135591" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:16.136492" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:58:16.136185" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:58:16.136562" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:58:16.136827" level="INFO">${index_list} = [1, 2, 3]</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-19T01:58:16.135257" elapsed="0.001597"/>
</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-19T01:58:16.142397" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.142288" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.142268" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:58:16.143637" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.143532" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.143514" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:16.144177" 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-19T01:58:16.143846" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:16.144744" 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-19T01:58:16.144363" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:58:16.185449" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:58:16.145318" elapsed="0.040532"/>
</kw>
<msg time="2026-04-19T01:58:16.186091" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:58:16.186145" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.144946" elapsed="0.041237"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:58:16.245938" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:58:16.187059" elapsed="0.059148"/>
</kw>
<msg time="2026-04-19T01:58:16.246466" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:58:16.246512" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.186509" elapsed="0.060040"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:16.246947" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:16.246659" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.246625" elapsed="0.000430"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:16.247548" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:16.247211" elapsed="0.000442"/>
</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-19T01:58:16.247942" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:16.247721" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.247702" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:58:16.248082" elapsed="0.000050"/>
</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-19T01:58:16.249577" elapsed="0.000914"/>
</kw>
<kw name="Open 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-19T01:58:16.250819" elapsed="0.000700"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:16.251814" elapsed="0.000242"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:16.249081" elapsed="0.003130"/>
</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-19T01:58:16.248455" elapsed="0.003807"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:58:16.143147" elapsed="0.109283"/>
</kw>
<msg time="2026-04-19T01:58:16.252526" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:58:16.252571" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.142616" elapsed="0.109993"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:58:16.252795" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T01:58:16.252686" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.252668" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:16.253340" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:16.253686" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:58:16.253758" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:58:16.141971" elapsed="0.111894"/>
</kw>
<msg time="2026-04-19T01:58:16.253961" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:58:16.254006" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.137258" elapsed="0.116800"/>
</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-19T01:58:16.254388" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:16.254137" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.254119" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:58:16.137114" elapsed="0.117373"/>
</iter>
<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-19T01:58:16.260153" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.260031" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.260010" 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-19T01:58:16.261299" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.261166" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.261148" elapsed="0.000220"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:16.261805" level="INFO">${karaf_connection_index} = 12</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-19T01:58:16.261518" elapsed="0.000314"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:16.262207" 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-19T01:58:16.261991" elapsed="0.000242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:58:16.303047" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T01:58:16.262729" elapsed="0.040503"/>
</kw>
<msg time="2026-04-19T01:58:16.303360" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T01:58:16.303407" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.262392" elapsed="0.041052"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:58:16.363318" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T01:58:16.304057" elapsed="0.059466"/>
</kw>
<msg time="2026-04-19T01:58:16.363632" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T01:58:16.363677" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.303648" elapsed="0.060066"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:16.364206" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:16.363813" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.363783" elapsed="0.000508"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:16.364741" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:16.364436" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:16.365135" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:16.364901" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.364883" elapsed="0.000330"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T01:58:16.365252" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:16.366680" elapsed="0.000661"/>
</kw>
<kw name="Open 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-19T01:58:16.367665" elapsed="0.000540"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:16.368490" elapsed="0.000213"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:16.366214" elapsed="0.002637"/>
</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-19T01:58:16.365605" elapsed="0.003295"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T01:58:16.260884" elapsed="0.108114"/>
</kw>
<msg time="2026-04-19T01:58:16.369118" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:58:16.369164" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.260373" elapsed="0.108830"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T01:58:16.369389" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T01:58:16.369281" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.369262" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:16.369909" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T01:58:16.370519" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:58:16.370596" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T01:58:16.259724" elapsed="0.110979"/>
</kw>
<msg time="2026-04-19T01:58:16.370795" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:58:16.370838" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T01:58:16.254766" elapsed="0.116108"/>
</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-19T01:58:16.371218" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:16.370949" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.370932" elapsed="0.000363"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:58:16.254622" elapsed="0.116696"/>
</iter>
<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-19T01:58:16.376822" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.376715" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.376696" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T01:58:16.378071" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:16.377948" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:16.377931" elapsed="0.000208"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:16.378551" level="INFO">${karaf_connection_index} = 14</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-19T01:58:16.378285" elapsed="0.000293"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:16.378971" 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-19T01:58:16.378772" elapsed="0.000225"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:58:26.380192" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:58:16.379515" elapsed="10.001387">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:58:26.381126" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T01:58:26.381179" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T01:58:16.379180" elapsed="10.002023"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T01:58:36.382599" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:58:26.381945" elapsed="10.001290">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:58:36.383421" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T01:58:36.383470" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T01:58:26.381483" elapsed="10.002011"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T01:58:36.384623" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T01:58:36.383954" elapsed="0.000734">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T01:58:36.383619" elapsed="0.001146">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T01:58:36.383584" elapsed="0.001224">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T01:58:36.384998" 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-19T01:58:36.385250" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:36.385107" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-19T01:58:36.385089" elapsed="0.000244"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T01:58:36.385370" elapsed="0.000016"/>
</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-19T01:58:36.386740" elapsed="0.000873"/>
</kw>
<kw name="Open 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-19T01:58:36.387969" elapsed="0.000537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:36.388792" elapsed="0.000212"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:36.386282" elapsed="0.002884"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T01:58:36.385676" elapsed="0.003539"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T01:58:16.377698" elapsed="20.011601">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T01:58:36.389401" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:58:36.389447" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T01:58:16.377176" elapsed="20.012296"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:58:36.389658" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:36.389549" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:36.389531" elapsed="0.000193"/>
</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-19T01:58:36.390501" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:36.390396" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:36.390377" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:36.390863" 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-19T01:58:36.391024" 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-19T01:58:36.390724" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:36.391546" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:36.391265" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:36.391989" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:36.391746" elapsed="0.000316"/>
</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-19T01:58:36.392588" elapsed="0.000225"/>
</kw>
<msg time="2026-04-19T01:58:36.392910" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T01:58:36.392957" level="INFO">${old_connection_index} = 14</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-19T01:58:36.392224" elapsed="0.000756"/>
</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-19T01:58:36.393808" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T01:58:46.396105" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T01:58:36.394806" elapsed="10.003453">No match found for '
' in 10 seconds
Output:
.</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-19T01:58:36.394251" elapsed="10.004210"/>
</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-19T01:58:46.399459" elapsed="0.000486"/>
</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-19T01:58:46.398760" elapsed="0.001399"/>
</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-19T01:58:36.393297" elapsed="10.006911"/>
</kw>
<status status="PASS" start="2026-04-19T01:58:36.393073" elapsed="10.007190"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:36.393054" elapsed="10.007243"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:46.401203" level="INFO">${ip_address} = 10.30.171.206</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-19T01:58:46.400900" elapsed="0.000330"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T01:58:46.401282" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:58:46.401442" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T01:58:46.400544" elapsed="0.000923"/>
</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-19T01:58:46.401626" elapsed="0.000621"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:46.402546" level="INFO">index=19
host=10.30.171.206
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-19T01:58:46.402650" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T01:58:46.402422" elapsed="0.000254"/>
</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-19T01:58:46.402832" elapsed="0.002707"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T01:58:46.405966" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T01:58:56.471343" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:46.405705" elapsed="10.066483">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:56.476132" elapsed="0.000690"/>
</kw>
<kw name="Open 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-19T01:58:56.476991" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:56.477335" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:56.473374" elapsed="0.004117"/>
</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-19T01:58:56.472676" elapsed="0.004860"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T01:58:36.390148" elapsed="20.087563">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:56.478096" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T01:58:56.478174" elapsed="0.000020"/>
</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-19T01:58:16.376417" elapsed="40.101869">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T01:58:56.478401" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T01:58:56.478446" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T01:58:16.371596" elapsed="40.106873"/>
</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-19T01:58:56.478841" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:56.478558" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:56.478533" elapsed="0.000387"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:58:16.371453" elapsed="40.107499"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:58:16.136908" elapsed="40.342079"/>
</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-19T01:58:16.134542" elapsed="40.344521"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T01:58:16.127517" elapsed="40.351607"/>
</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-19T01:58:16.126960" elapsed="40.352208"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T01:58:03.564427" elapsed="52.914794"/>
</kw>
<test id="s1-s11-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:58:56.485410" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:58:56.484959" elapsed="0.000482"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:56.485921" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:58:56.485607" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:58:56.485993" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T01:58:56.486173" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T01:58:56.484560" elapsed="0.001638"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T01:58:56.487169" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:58:56.486779" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:56.487652" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:58:56.487353" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:58:56.487721" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:58:56.487872" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T01:58:56.486406" elapsed="0.001490"/>
</kw>
<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-19T01:58:56.489373" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T01:58:56.488980" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:56.489856" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T01:58:56.489558" elapsed="0.000324"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T01:58:56.489926" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:58:56.490095" level="INFO">${index_list} = [1, 2, 3]</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-19T01:58:56.488614" elapsed="0.001506"/>
</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-19T01:58:56.491211" level="INFO">${member_ip} = 10.30.171.9</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-19T01:58:56.490924" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:56.492010" 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-19T01:58:56.492130" 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-19T01:58:56.491869" elapsed="0.000288"/>
</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-19T01:58:56.494974" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:56.494659" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:56.494638" elapsed="0.000438"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:56.495359" 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-19T01:58:56.495461" 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-19T01:58:56.495227" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:56.496192" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:56.495643" elapsed="0.000601"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:56.496835" 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-19T01:58:56.496405" elapsed="0.000457"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:58:56.498297" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:58:56.498432" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:58:56.497684" elapsed="0.000772"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:56.498648" elapsed="0.000747"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:58:56.501784" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:58:56.811765" 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 Sun Apr 19 01:58:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:58:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:58:56.501178" elapsed="0.310841"/>
</kw>
<msg time="2026-04-19T01:58:56.812185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:56.499636" elapsed="0.312757"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:58:56.497110" elapsed="0.315476"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:58:56.813164" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:58:57.180516" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:58:57.180869" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:58:57.180971" 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-19T01:58:56.812857" elapsed="0.368166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:57.181528" elapsed="0.000592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.183307" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:57.182548" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:57.184006" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:57.183691" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:57.183635" 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-19T01:58:57.184553" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T01:58:57.184318" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:57.184285" elapsed="0.000484"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:57.184845" 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-19T01:58:57.204642" elapsed="0.000583"/>
</kw>
<kw name="Open 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-19T01:58:57.205394" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:57.205707" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:57.185580" elapsed="0.020276"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:58:56.493949" elapsed="0.711999"/>
</kw>
<msg time="2026-04-19T01:58:57.206003" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:56.493376" elapsed="0.712697"/>
</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-19T01:58:56.492835" elapsed="0.713318"/>
</kw>
<msg time="2026-04-19T01:58:57.206193" 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-19T01:58:56.492336" elapsed="0.713901"/>
</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-19T01:58:57.209484" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T01:58:57.209956" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:57.210266" 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-19T01:58:57.206543" elapsed="0.003871"/>
</kw>
<msg time="2026-04-19T01:58:57.210504" 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-19T01:58:56.491469" elapsed="0.719060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.210955" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:57.210709" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:58:57.211053" 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-19T01:58:56.490523" elapsed="0.720654"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:58:56.490347" elapsed="0.720868"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:57.212208" level="INFO">${member_ip} = 10.30.171.128</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-19T01:58:57.211889" elapsed="0.000345"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.212995" 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-19T01:58:57.213142" 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-19T01:58:57.212858" elapsed="0.000311"/>
</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-19T01:58:57.216107" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:57.215796" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:57.215777" elapsed="0.000410"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.216463" 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-19T01:58:57.216605" 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-19T01:58:57.216336" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.217307" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:57.216807" elapsed="0.000546"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.217930" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:58:57.217509" elapsed="0.000447"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.219206" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:58:57.219339" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:58:57.218623" elapsed="0.000741"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:57.219555" elapsed="0.000733"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.223274" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:58:57.542726" 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 Sun Apr 19 01:58:04 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:58:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:58:57.222467" elapsed="0.320499"/>
</kw>
<msg time="2026-04-19T01:58:57.543131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:57.220526" elapsed="0.322794"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:58:57.218189" elapsed="0.325313"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.544022" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:58:57.890435" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:58:57.890778" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:58:57.891025" 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-19T01:58:57.543749" elapsed="0.347372"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:57.891587" elapsed="0.000608"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.893401" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:57.892626" elapsed="0.000871"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:57.894071" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:57.893702" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:57.893645" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:58:57.894604" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T01:58:57.894364" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:57.894329" elapsed="0.000475"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:57.894881" 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-19T01:58:57.914350" elapsed="0.000581"/>
</kw>
<kw name="Open 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-19T01:58:57.915292" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:57.915619" 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-19T01:58:57.895623" elapsed="0.020150"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:58:57.215274" elapsed="0.700595"/>
</kw>
<msg time="2026-04-19T01:58:57.916000" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:57.214684" elapsed="0.701395"/>
</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-19T01:58:57.213854" elapsed="0.702308"/>
</kw>
<msg time="2026-04-19T01:58:57.916204" 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-19T01:58:57.213322" elapsed="0.702928"/>
</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-19T01:58:57.919589" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:58:57.920096" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:57.920392" 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-19T01:58:57.916552" elapsed="0.003987"/>
</kw>
<msg time="2026-04-19T01:58:57.920633" 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-19T01:58:57.212449" elapsed="0.708209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.921121" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:57.920855" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:58:57.921230" 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-19T01:58:57.211485" elapsed="0.709873"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T01:58:57.211306" elapsed="0.710090"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:57.922377" level="INFO">${member_ip} = 10.30.171.206</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-19T01:58:57.922103" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.923469" 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-19T01:58:57.923572" 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-19T01:58:57.923320" elapsed="0.000278"/>
</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-19T01:58:57.926618" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:57.926339" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:57.926319" elapsed="0.000381"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.926983" 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-19T01:58:57.927105" 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-19T01:58:57.926851" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.927768" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:57.927285" elapsed="0.000531"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.928427" 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-19T01:58:57.927981" elapsed="0.000474"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:58:57.929749" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:58:57.929884" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:58:57.929154" elapsed="0.000755"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:57.930124" elapsed="0.000714"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:58:57.933544" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:58:58.266293" 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 Sun Apr 19 01:58:05 UTC 2026

  System load:  0.05               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:58:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T01:58:57.932834" elapsed="0.333814"/>
</kw>
<msg time="2026-04-19T01:58:58.266792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:57.931100" elapsed="0.335882"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:58:57.928673" elapsed="0.338538"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:58:58.267729" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T01:58:58.675354" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T01:58:58.675766" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T01:58:58.675869" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T01:58:58.267463" elapsed="0.408462"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:58.676438" elapsed="0.000567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:58.678267" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:58.677459" elapsed="0.000914"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:58.678854" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:58.678550" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:58.678498" 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-19T01:58:58.679475" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T01:58:58.679204" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:58.679166" elapsed="0.000525"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:58.679771" 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-19T01:58:58.701781" elapsed="0.000566"/>
</kw>
<kw name="Open 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-19T01:58:58.702515" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:58.702829" 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-19T01:58:58.680520" elapsed="0.022458"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:58:57.925767" elapsed="0.777333"/>
</kw>
<msg time="2026-04-19T01:58:58.703157" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:57.925141" elapsed="0.778072"/>
</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-19T01:58:57.924314" elapsed="0.778979"/>
</kw>
<msg time="2026-04-19T01:58:58.703335" 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-19T01:58:57.923758" elapsed="0.779621"/>
</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-19T01:58:58.706735" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T01:58:58.707239" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:58.707532" 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-19T01:58:58.703678" elapsed="0.004001"/>
</kw>
<msg time="2026-04-19T01:58:58.707771" 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-19T01:58:57.922626" elapsed="0.785170"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:58.708499" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:58.708245" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:58:58.708583" 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-19T01:58:57.921678" elapsed="0.787029"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T01:58:57.921494" elapsed="0.787250"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T01:58:56.490212" elapsed="2.218566"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T01:58:56.488116" elapsed="2.220720"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T01:58:58.709324" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T01:58:58.708992" elapsed="0.000358"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T01:58:58.709504" elapsed="0.000246"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T01:58:58.709927" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:58.709823" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:58.709805" elapsed="0.000187"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:58:58.711950" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:58:58.711656" elapsed="0.000320"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:58:58.712871" level="INFO">${member_ip} = 10.30.171.9</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-19T01:58:58.712603" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:58.713681" 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-19T01:58:58.713783" 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-19T01:58:58.713536" elapsed="0.000274"/>
</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-19T01:58:58.718153" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:58:58.717646" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:58.717402" elapsed="0.000900"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:58.719956" 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-19T01:58:58.720328" 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-19T01:58:58.719457" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:58.722166" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:58.721576" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:58:58.724321" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:58:58.723434" elapsed="0.000999"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:58:58.726952" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:58:58.727043" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:58:58.726681" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:58.727288" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:58:58.728630" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:58:59.037283" 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 Sun Apr 19 01:58:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:58:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:58:58.728309" elapsed="0.309252"/>
</kw>
<msg time="2026-04-19T01:58:59.037652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:58.727850" elapsed="0.309896"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:58:58.725846" elapsed="0.312315"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:58:59.039890" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:58:59.062807" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:58:59.063487" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:58:59.063868" 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-19T01:58:59.039464" elapsed="0.024694"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:59.066792" elapsed="0.000646"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:59.069009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:59.068368" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:59.069797" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:58:59.069447" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:59.069356" elapsed="0.000701"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:58:59.070617" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T01:58:59.070306" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T01:58:59.070225" elapsed="0.000635"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:58:59.070986" elapsed="0.000080"/>
</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-19T01:58:59.079433" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T01:58:59.079987" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:59.080497" 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-19T01:58:59.073252" elapsed="0.007460"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:58:58.715924" elapsed="0.365030"/>
</kw>
<msg time="2026-04-19T01:58:59.081320" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:58:58.715266" elapsed="0.366111"/>
</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-19T01:58:58.714486" elapsed="0.367100"/>
</kw>
<msg time="2026-04-19T01:58:59.081632" 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-19T01:58:58.713966" elapsed="0.367715"/>
</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-19T01:58:59.084746" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T01:58:59.085235" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:58:59.085530" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:58:59.081998" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T01:58:59.085773" level="INFO">${output} = 1</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-19T01:58:58.713128" elapsed="0.372670"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:58:59.086285" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:58:59.086018" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:58:59.086374" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:58:59.086526" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:58:58.712198" elapsed="0.374353"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:58:59.086598" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:58:59.086794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:58:58.711304" elapsed="0.375515"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:58:59.087447" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:58:59.087043" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:58:58.710894" elapsed="0.376739">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:01.092969" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:01.091698" elapsed="0.001328"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:01.094497" level="INFO">${member_ip} = 10.30.171.9</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-19T01:59:01.094098" elapsed="0.000437"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:01.095709" 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-19T01:59:01.095852" 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-19T01:59:01.095477" elapsed="0.000413"/>
</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-19T01:59:01.102514" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:01.101888" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:01.101491" elapsed="0.001188"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:01.104685" 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-19T01:59:01.104980" 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-19T01:59:01.103919" elapsed="0.001447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:01.107175" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:01.106561" elapsed="0.000800"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:01.109461" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:01.108591" elapsed="0.001003"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:01.112448" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:01.112527" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:01.112145" 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-19T01:59:01.112805" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:01.114221" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:01.436976" 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 Sun Apr 19 01:58:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:58:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:59:01.113841" elapsed="0.323310"/>
</kw>
<msg time="2026-04-19T01:59:01.437239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:01.113466" elapsed="0.323864"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:01.111253" elapsed="0.326392"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:01.439347" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:01.462384" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:01.463000" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:01.463466" 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-19T01:59:01.438909" elapsed="0.024823"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:01.466427" elapsed="0.001047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:01.470017" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:01.468953" elapsed="0.001537"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:01.471511" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:01.470883" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:01.470741" elapsed="0.001066"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:01.472222" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T01:59:01.471983" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:01.471927" elapsed="0.000476"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:01.472493" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:01.477788" 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-19T01:59:01.478376" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:01.478739" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:01.474333" elapsed="0.004628"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:01.099362" elapsed="0.379864"/>
</kw>
<msg time="2026-04-19T01:59:01.479599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:01.097948" elapsed="0.381716"/>
</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-19T01:59:01.096897" elapsed="0.382869"/>
</kw>
<msg time="2026-04-19T01:59:01.479816" 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-19T01:59:01.096150" elapsed="0.383712"/>
</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-19T01:59:01.482837" 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-19T01:59:01.483361" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:01.483702" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:01.480167" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T01:59:01.483968" level="INFO">${output} = 1</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-19T01:59:01.094849" elapsed="0.389144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:01.484581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:01.484330" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:01.484679" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:59:01.484858" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:01.093424" elapsed="0.391459"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:01.484930" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:01.485092" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:01.090765" elapsed="0.394353"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:01.485676" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:01.485277" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:01.088458" elapsed="0.397407">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.489588" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:03.488783" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:03.491919" level="INFO">${member_ip} = 10.30.171.9</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-19T01:59:03.491283" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.493485" 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-19T01:59:03.493634" 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-19T01:59:03.493253" elapsed="0.000419"/>
</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-19T01:59:03.499375" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:03.498704" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:03.498321" elapsed="0.001328"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.501693" 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-19T01:59:03.502074" 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-19T01:59:03.501064" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.504361" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:03.503569" elapsed="0.000978"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.506368" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:03.505588" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.508782" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:03.508862" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:03.508462" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:03.509119" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.510531" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:03.823661" 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 Sun Apr 19 01:58:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:59:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T01:59:03.510203" elapsed="0.313599"/>
</kw>
<msg time="2026-04-19T01:59:03.823883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:03.509676" elapsed="0.314297"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:03.507668" elapsed="0.316595"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.825766" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:03.848523" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:03.849094" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T01:59:03.849437" 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-19T01:59:03.825383" elapsed="0.024265"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:03.852109" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.854848" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:03.854178" elapsed="0.000818"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:03.855749" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:03.855286" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:03.855197" elapsed="0.000746"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:03.856516" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:59:03.856203" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:03.856105" elapsed="0.000663"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:03.856884" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:03.863715" 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-19T01:59:03.864494" elapsed="0.000317"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:03.865114" 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-19T01:59:03.859014" elapsed="0.006399"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:03.496426" elapsed="0.369303"/>
</kw>
<msg time="2026-04-19T01:59:03.866152" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:03.495460" elapsed="0.370753"/>
</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-19T01:59:03.494671" elapsed="0.371626"/>
</kw>
<msg time="2026-04-19T01:59:03.866339" 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-19T01:59:03.493899" elapsed="0.372487"/>
</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-19T01:59:03.869440" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:59:03.869920" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:03.870285" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:03.866703" elapsed="0.003732"/>
</kw>
<msg time="2026-04-19T01:59:03.870527" level="INFO">${output} = 0</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-19T01:59:03.492582" elapsed="0.377969"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.871201" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:03.870733" elapsed="0.000519"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:03.871297" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:03.871483" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:03.490305" elapsed="0.381206"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:03.871562" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:59:03.871710" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:03.487849" elapsed="0.383887"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T01:59:03.871898" elapsed="0.000481"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T01:59:03.486730" elapsed="0.385712"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T01:58:58.710334" elapsed="5.162157"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T01:58:58.710189" elapsed="5.162340"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.874428" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:03.874137" elapsed="0.000318"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:03.875339" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:03.875070" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.876180" 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-19T01:59:03.876280" 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-19T01:59:03.876020" 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-19T01:59:03.880122" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:03.879640" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:03.879575" elapsed="0.000859"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.881883" 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-19T01:59:03.882139" 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-19T01:59:03.881449" elapsed="0.000791"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.883743" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:03.883214" elapsed="0.000640"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.885545" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:03.884846" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:03.888377" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:03.888457" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:03.887938" 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-19T01:59:03.888698" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:03.890048" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:04.203973" 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 Sun Apr 19 01:58:04 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:58:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:03.889704" elapsed="0.314445"/>
</kw>
<msg time="2026-04-19T01:59:04.204244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:03.889337" elapsed="0.315011"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:03.887078" elapsed="0.317584"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:04.206243" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:04.228782" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:04.229390" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:04.229785" 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-19T01:59:04.205812" elapsed="0.024204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:04.232386" elapsed="0.000978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:04.235811" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:04.234707" elapsed="0.001372"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:04.237134" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:04.236512" elapsed="0.000795"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:04.236378" elapsed="0.001059"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:04.238001" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T01:59:04.237773" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:04.237662" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:04.238314" 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-19T01:59:04.243128" 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-19T01:59:04.243729" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:04.244108" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:04.239740" elapsed="0.004582"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:03.878248" elapsed="0.366300"/>
</kw>
<msg time="2026-04-19T01:59:04.244855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:03.877546" elapsed="0.367381"/>
</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-19T01:59:03.876973" elapsed="0.368046"/>
</kw>
<msg time="2026-04-19T01:59:04.245077" 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-19T01:59:03.876460" elapsed="0.368666"/>
</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-19T01:59:04.248160" 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-19T01:59:04.248654" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:04.248995" elapsed="0.000128"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:04.245423" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T01:59:04.249273" level="INFO">${output} = 1</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-19T01:59:03.875576" elapsed="0.373724"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:04.249736" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:04.249484" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:04.249825" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:04.249979" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:03.874651" elapsed="0.375353"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:04.250161" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:04.250311" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:03.873719" elapsed="0.376618"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:04.250908" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:04.250496" elapsed="0.000604">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:03.873333" elapsed="0.377885">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:06.254944" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:06.254119" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:06.257626" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:06.256777" elapsed="0.000924"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:06.259394" 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-19T01:59:06.259538" 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-19T01:59:06.259159" elapsed="0.000421"/>
</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-19T01:59:06.267917" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:06.267307" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:06.264456" elapsed="0.003652"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:06.269619" 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-19T01:59:06.269873" 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-19T01:59:06.269121" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:06.271584" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:06.270990" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:06.273482" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:06.272756" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:06.277465" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:06.277638" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:06.276793" elapsed="0.000898"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:06.278245" elapsed="0.000685"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:06.279862" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:06.858951" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:06.279537" elapsed="0.579600"/>
</kw>
<msg time="2026-04-19T01:59:06.859227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:06.279174" elapsed="0.580143"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:06.274836" elapsed="0.584771"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:06.861137" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:06.884318" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:06.884897" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:06.885294" 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-19T01:59:06.860715" elapsed="0.024795"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:06.887960" elapsed="0.001106"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:06.891598" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:06.890505" elapsed="0.001343"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:06.892796" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:06.892260" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:06.892122" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:06.894023" elapsed="0.000341"/>
</return>
<status status="PASS" start="2026-04-19T01:59:06.893520" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:06.893405" elapsed="0.001224"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:06.894821" elapsed="0.000091"/>
</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-19T01:59:06.901943" 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-19T01:59:06.902586" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:06.902943" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:06.897948" elapsed="0.005222"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:06.262518" elapsed="0.640933"/>
</kw>
<msg time="2026-04-19T01:59:06.903754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:06.261501" elapsed="0.642313"/>
</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-19T01:59:06.260666" elapsed="0.643231"/>
</kw>
<msg time="2026-04-19T01:59:06.903939" 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-19T01:59:06.259813" elapsed="0.644172"/>
</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-19T01:59:06.907067" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:59:06.907548" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:06.907845" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:06.904295" elapsed="0.003713"/>
</kw>
<msg time="2026-04-19T01:59:06.908124" level="INFO">${output} = 1</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-19T01:59:06.258325" elapsed="0.649840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:06.908615" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:06.908361" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:06.908706" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:06.908858" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:06.255602" elapsed="0.653291"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:06.908962" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:59:06.909185" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:06.253120" elapsed="0.656100"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:06.909972" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:06.909438" elapsed="0.000706">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:06.251990" elapsed="0.658308">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:08.913915" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:08.913155" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:08.916176" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:08.915522" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:08.917473" 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-19T01:59:08.917614" 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-19T01:59:08.917244" elapsed="0.000406"/>
</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-19T01:59:08.923107" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:08.922454" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:08.922378" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:08.925215" 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-19T01:59:08.925460" 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-19T01:59:08.924524" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:08.927216" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:08.926650" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:08.929088" 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-19T01:59:08.928382" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:08.931458" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:08.931535" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:08.931151" 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-19T01:59:08.931769" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:08.933196" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:09.242147" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:08.932857" elapsed="0.309449"/>
</kw>
<msg time="2026-04-19T01:59:09.242396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:08.932498" elapsed="0.309989"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:08.930381" elapsed="0.312393"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:09.244333" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:09.267203" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:09.267814" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:09.268195" 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-19T01:59:09.243916" elapsed="0.024494"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:09.270643" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:09.273241" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:09.272592" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:09.273947" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:09.273616" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:09.273533" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:09.274640" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:59:09.274359" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:09.274291" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:09.274978" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:09.281269" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:59:09.281823" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:09.282202" 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-19T01:59:09.276863" elapsed="0.005547"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:08.920551" elapsed="0.362081"/>
</kw>
<msg time="2026-04-19T01:59:09.282939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:08.919589" elapsed="0.363405"/>
</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-19T01:59:08.918672" elapsed="0.364514"/>
</kw>
<msg time="2026-04-19T01:59:09.283230" 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-19T01:59:08.917869" elapsed="0.365409"/>
</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-19T01:59:09.286547" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:59:09.287023" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:09.287333" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:09.283588" elapsed="0.003891"/>
</kw>
<msg time="2026-04-19T01:59:09.287604" level="INFO">${output} = 1</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-19T01:59:08.916646" elapsed="0.370988"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:09.288106" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:09.287812" elapsed="0.000338"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:09.288193" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:09.288441" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:08.914473" elapsed="0.373994"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:09.288516" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:59:09.288663" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:08.912310" elapsed="0.376377"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:09.289431" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:09.288844" elapsed="0.000660">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:08.911184" elapsed="0.378430">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:11.293256" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:11.292453" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:11.295411" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:11.294768" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:11.297515" 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-19T01:59:11.297623" 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-19T01:59:11.297114" elapsed="0.000535"/>
</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-19T01:59:11.301534" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:11.301062" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:11.300989" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:11.303380" 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-19T01:59:11.303631" 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-19T01:59:11.302674" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:11.305318" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:11.304738" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:11.307145" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:11.306427" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:11.309715" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:11.309794" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:11.309432" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:11.310059" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:11.311371" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:11.618768" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:11.311004" elapsed="0.307959"/>
</kw>
<msg time="2026-04-19T01:59:11.619092" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:11.310642" elapsed="0.308566"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:11.308535" elapsed="0.311010"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:11.621346" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:11.644436" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:11.644740" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:11.644935" 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-19T01:59:11.620850" elapsed="0.024224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:11.646301" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:11.648127" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:11.647568" elapsed="0.000688"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:11.648749" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:11.648461" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:11.648388" elapsed="0.000553"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:11.649373" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:59:11.649133" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:11.649073" elapsed="0.000499"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:11.649667" 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-19T01:59:11.655601" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T01:59:11.656265" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:11.656690" 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-19T01:59:11.651270" elapsed="0.005686"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:11.299608" elapsed="0.357788"/>
</kw>
<msg time="2026-04-19T01:59:11.657756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:11.298896" elapsed="0.358932"/>
</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-19T01:59:11.298353" elapsed="0.359570"/>
</kw>
<msg time="2026-04-19T01:59:11.657973" 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-19T01:59:11.297814" elapsed="0.360388"/>
</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-19T01:59:11.662157" 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-19T01:59:11.662819" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:11.663221" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:11.658564" elapsed="0.004840"/>
</kw>
<msg time="2026-04-19T01:59:11.663645" level="INFO">${output} = 1</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-19T01:59:11.295958" elapsed="0.367724"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:11.664281" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:11.663923" elapsed="0.000411"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:11.664386" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T01:59:11.664569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:11.293785" elapsed="0.370814"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:11.664657" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:11.664853" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:11.291600" elapsed="0.373284"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:11.665609" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:11.665136" elapsed="0.000560">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:11.290460" elapsed="0.375369">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:13.669363" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:13.668595" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:13.671011" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:13.670629" elapsed="0.000439"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:13.672224" 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-19T01:59:13.672366" 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-19T01:59:13.671977" elapsed="0.000425"/>
</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-19T01:59:13.677934" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:13.677277" elapsed="0.000796"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:13.677202" elapsed="0.000957"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:13.680512" 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-19T01:59:13.680857" 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-19T01:59:13.679557" elapsed="0.001440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:13.682889" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:13.682336" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:13.684749" 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-19T01:59:13.684023" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:13.687272" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:13.687350" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:13.686866" elapsed="0.000508"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:13.687584" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:13.688867" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:14.002104" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:13.688538" elapsed="0.313710"/>
</kw>
<msg time="2026-04-19T01:59:14.002333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:13.688153" elapsed="0.314268"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:13.686106" elapsed="0.316595"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:14.004233" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:14.026362" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:14.026912" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:14.027327" 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-19T01:59:14.003806" elapsed="0.023741"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:14.029776" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:14.032971" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:14.031976" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:14.034176" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:14.033587" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:14.033463" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:14.035197" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T01:59:14.034803" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:14.034696" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:14.035435" 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-19T01:59:14.040276" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T01:59:14.040814" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:14.041185" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:14.036830" elapsed="0.004563"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:13.675324" elapsed="0.366302"/>
</kw>
<msg time="2026-04-19T01:59:14.041935" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:13.674349" elapsed="0.367643"/>
</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-19T01:59:13.673543" elapsed="0.368563"/>
</kw>
<msg time="2026-04-19T01:59:14.042153" 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-19T01:59:13.672624" elapsed="0.369579"/>
</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-19T01:59:14.045231" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:14.045700" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:14.045991" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:14.042501" elapsed="0.003682"/>
</kw>
<msg time="2026-04-19T01:59:14.046274" level="INFO">${output} = 1</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-19T01:59:13.671372" elapsed="0.374927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:14.046853" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:14.046601" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:14.046940" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:14.047111" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:13.669988" elapsed="0.377147"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:14.047184" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:14.047329" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:13.667731" elapsed="0.379623"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:14.047911" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:14.047513" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:13.666641" elapsed="0.381542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:16.051659" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:16.050872" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:16.053713" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:16.053120" elapsed="0.000652"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:16.055586" 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-19T01:59:16.055876" 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-19T01:59:16.055252" elapsed="0.000688"/>
</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-19T01:59:16.062668" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:16.062176" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:16.061807" elapsed="0.001017"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:16.064370" 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-19T01:59:16.064624" 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-19T01:59:16.063859" elapsed="0.000863"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:16.066283" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:16.065688" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:16.068104" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:16.067374" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:16.070989" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:16.071086" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:16.070684" 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-19T01:59:16.071368" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:16.072666" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:16.389309" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:16.072332" elapsed="0.317224"/>
</kw>
<msg time="2026-04-19T01:59:16.389641" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:16.071951" elapsed="0.317776"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:16.069878" elapsed="0.320118"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:16.391508" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:16.414225" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:16.414768" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:16.415154" 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-19T01:59:16.391084" elapsed="0.024375"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:16.417886" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:16.421387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:16.420303" elapsed="0.001340"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:16.422570" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:16.422018" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:16.421893" elapsed="0.000975"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:16.423755" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T01:59:16.423230" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:16.423118" elapsed="0.001068"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:16.424302" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:16.429275" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:59:16.429835" elapsed="0.000280"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:16.430319" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:16.425803" elapsed="0.004730"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:16.060384" elapsed="0.370381"/>
</kw>
<msg time="2026-04-19T01:59:16.431118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:16.058937" elapsed="0.372241"/>
</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-19T01:59:16.057712" elapsed="0.373553"/>
</kw>
<msg time="2026-04-19T01:59:16.431334" 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-19T01:59:16.056433" elapsed="0.374957"/>
</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-19T01:59:16.434470" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:59:16.434952" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:16.435333" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:16.431702" elapsed="0.003786"/>
</kw>
<msg time="2026-04-19T01:59:16.435581" level="INFO">${output} = 1</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-19T01:59:16.054276" elapsed="0.381330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:16.436088" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:16.435797" elapsed="0.000338"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:16.436179" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:16.436335" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:16.052201" elapsed="0.384160"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:16.436407" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:59:16.436555" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:16.050011" elapsed="0.386569"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:16.437265" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:16.436785" elapsed="0.000559">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:16.048959" elapsed="0.388500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:18.441146" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:18.440228" elapsed="0.000994"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:18.443276" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:18.442639" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:18.445332" 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-19T01:59:18.445500" 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-19T01:59:18.444895" elapsed="0.000641"/>
</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-19T01:59:18.451272" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:18.450238" elapsed="0.001151"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:18.450160" elapsed="0.001312"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:18.453469" 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-19T01:59:18.453712" 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-19T01:59:18.452892" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:18.455467" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:18.454829" elapsed="0.000746"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:18.457362" 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-19T01:59:18.456591" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:18.459831" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:18.459909" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:18.459537" 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-19T01:59:18.460162" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:18.461491" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:18.774025" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:18.461164" elapsed="0.313131"/>
</kw>
<msg time="2026-04-19T01:59:18.774449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:18.460787" elapsed="0.313815"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:18.458685" elapsed="0.316497"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:18.777824" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:18.800439" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:18.800952" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:18.801330" 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-19T01:59:18.777431" elapsed="0.024112"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:18.803761" elapsed="0.001100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:18.806719" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:18.806076" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:18.807478" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:18.807134" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:18.807025" elapsed="0.000648"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:18.808204" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T01:59:18.807886" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:18.807815" elapsed="0.000629"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:18.808589" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:18.815583" elapsed="0.000547"/>
</kw>
<kw name="Open 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-19T01:59:18.816443" elapsed="0.000266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:18.816993" elapsed="0.000170"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:18.810658" elapsed="0.006647"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:18.448233" elapsed="0.369293"/>
</kw>
<msg time="2026-04-19T01:59:18.817924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:18.447263" elapsed="0.370720"/>
</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-19T01:59:18.446501" elapsed="0.371672"/>
</kw>
<msg time="2026-04-19T01:59:18.818217" 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-19T01:59:18.445759" elapsed="0.372504"/>
</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-19T01:59:18.821223" 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-19T01:59:18.821701" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:18.821994" 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-19T01:59:18.818561" elapsed="0.003621"/>
</kw>
<msg time="2026-04-19T01:59:18.822273" level="INFO">${output} = 1</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-19T01:59:18.443812" elapsed="0.378487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:18.822726" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:18.822477" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:18.822813" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:18.822966" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:18.441689" elapsed="0.381303"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:18.823058" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:59:18.823206" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:18.439380" elapsed="0.383851"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:18.823778" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:18.823387" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:18.438303" elapsed="0.385657">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:20.827507" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:20.826725" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:20.829806" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:20.829158" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:20.831706" 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-19T01:59:20.831932" 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-19T01:59:20.831368" elapsed="0.000622"/>
</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-19T01:59:20.839092" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:20.838581" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:20.836658" elapsed="0.002578"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:20.840683" 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-19T01:59:20.840924" 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-19T01:59:20.840241" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:20.842629" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:20.842063" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:20.846022" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:20.844208" elapsed="0.002081"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:20.851933" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:20.852315" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:20.851309" elapsed="0.001068"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:20.852856" elapsed="0.001024"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:20.855986" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:21.169930" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:20.855263" elapsed="0.314830"/>
</kw>
<msg time="2026-04-19T01:59:21.170179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:20.854398" elapsed="0.315873"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:20.848970" elapsed="0.321585"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:21.172071" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:21.195143" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:21.195644" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:21.195976" 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-19T01:59:21.171652" elapsed="0.024573"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:21.198660" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:21.201783" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:21.200790" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:21.202723" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:21.202403" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:21.202325" elapsed="0.000534"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:21.203225" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T01:59:21.203005" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:21.202956" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:21.203474" 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-19T01:59:21.208300" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T01:59:21.208876" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:21.209256" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:21.204821" elapsed="0.004645"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:20.835317" elapsed="0.374375"/>
</kw>
<msg time="2026-04-19T01:59:21.210044" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:20.834611" elapsed="0.375495"/>
</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-19T01:59:20.833549" elapsed="0.376641"/>
</kw>
<msg time="2026-04-19T01:59:21.210231" 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-19T01:59:20.832373" elapsed="0.377904"/>
</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-19T01:59:21.213381" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:59:21.213993" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:21.214314" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:21.210575" elapsed="0.003894"/>
</kw>
<msg time="2026-04-19T01:59:21.214561" level="INFO">${output} = 1</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-19T01:59:20.830387" elapsed="0.384200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:21.215013" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:21.214766" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:21.215117" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:21.215270" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:20.828213" elapsed="0.387082"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:21.215342" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:21.215490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:20.825885" elapsed="0.389629"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:21.216141" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:21.215670" elapsed="0.000548">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:20.824764" elapsed="0.391568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:23.219968" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:23.219204" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:23.222110" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:23.221478" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:23.224367" 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-19T01:59:23.224656" 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-19T01:59:23.223960" elapsed="0.000734"/>
</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-19T01:59:23.231800" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:23.230743" elapsed="0.001236"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:23.230622" elapsed="0.001520"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:23.235695" 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-19T01:59:23.235957" 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-19T01:59:23.234377" elapsed="0.001707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:23.237708" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:23.237127" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:23.239571" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:23.238828" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:23.242051" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:23.242131" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:23.241754" 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-19T01:59:23.242365" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:23.243625" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:23.551738" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:23.243299" elapsed="0.308583"/>
</kw>
<msg time="2026-04-19T01:59:23.551963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:23.242923" elapsed="0.309139"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:23.240881" elapsed="0.311459"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:23.553864" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:23.576353" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:23.576858" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:23.577281" 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-19T01:59:23.553467" elapsed="0.024029"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:23.579718" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:23.582829" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:23.581844" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:23.583854" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:23.583543" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:23.583461" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:23.584500" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T01:59:23.584267" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:23.584197" elapsed="0.000514"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:23.584797" 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-19T01:59:23.589616" 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-19T01:59:23.590375" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:23.590739" 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-19T01:59:23.586198" elapsed="0.004752"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:23.227500" elapsed="0.363713"/>
</kw>
<msg time="2026-04-19T01:59:23.591520" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:23.226457" elapsed="0.365125"/>
</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-19T01:59:23.225685" elapsed="0.365982"/>
</kw>
<msg time="2026-04-19T01:59:23.591709" 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-19T01:59:23.224925" elapsed="0.366832"/>
</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-19T01:59:23.594890" 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-19T01:59:23.595418" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:23.595715" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:23.592072" elapsed="0.003793"/>
</kw>
<msg time="2026-04-19T01:59:23.595959" level="INFO">${output} = 1</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-19T01:59:23.222653" elapsed="0.373331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:23.596450" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:23.596196" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:23.596549" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:23.596704" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:23.220538" elapsed="0.376191"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:23.596776" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:23.596922" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:23.218292" elapsed="0.378654"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:23.597524" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:23.597120" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:23.217205" elapsed="0.380504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:25.601184" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:25.600415" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:25.603302" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:25.602660" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:25.605186" 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-19T01:59:25.605416" 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-19T01:59:25.604830" elapsed="0.000646"/>
</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-19T01:59:25.611793" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:25.611325" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:25.611269" elapsed="0.000775"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:25.613756" 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-19T01:59:25.614005" 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-19T01:59:25.613076" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:25.615708" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:25.615156" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:25.617591" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:25.616875" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:25.620048" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:25.620130" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:25.619750" 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-19T01:59:25.620393" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:25.621703" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:25.936588" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:25.621372" elapsed="0.315374"/>
</kw>
<msg time="2026-04-19T01:59:25.936834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:25.620991" elapsed="0.315937"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:25.618898" elapsed="0.318344"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:25.938743" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:25.961601" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:25.962202" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:25.962534" 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-19T01:59:25.938346" elapsed="0.024396"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:25.964846" elapsed="0.000626"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:25.966892" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:25.966276" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:25.967621" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:25.967295" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:25.967216" elapsed="0.000590"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:25.968315" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T01:59:25.968010" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:25.967942" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:25.968676" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:25.974496" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T01:59:25.975157" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:25.975519" 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-19T01:59:25.970507" elapsed="0.005220"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:25.609905" elapsed="0.366047"/>
</kw>
<msg time="2026-04-19T01:59:25.976353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:25.608697" elapsed="0.367719"/>
</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-19T01:59:25.607297" elapsed="0.369205"/>
</kw>
<msg time="2026-04-19T01:59:25.976544" 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-19T01:59:25.605919" elapsed="0.370673"/>
</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-19T01:59:25.979645" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T01:59:25.980196" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:25.980536" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:25.976890" elapsed="0.003796"/>
</kw>
<msg time="2026-04-19T01:59:25.980780" level="INFO">${output} = 1</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-19T01:59:25.603853" elapsed="0.376953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:25.981280" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:25.980984" elapsed="0.000344"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:25.981371" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T01:59:25.981528" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:25.601710" elapsed="0.379844"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:25.981601" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:25.981748" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:25.599538" elapsed="0.382235"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:25.982504" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:25.981932" elapsed="0.000652">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:25.598498" elapsed="0.384203">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:27.987431" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:27.986537" elapsed="0.000979"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:27.988862" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:27.988466" elapsed="0.000436"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:27.990111" 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-19T01:59:27.990268" 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-19T01:59:27.989858" elapsed="0.000450"/>
</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-19T01:59:27.995014" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:27.994532" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:27.994473" elapsed="0.000704"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:27.996913" 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-19T01:59:27.997307" 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-19T01:59:27.996202" elapsed="0.001238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:27.999013" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:27.998451" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:28.000956" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:28.000255" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:28.003452" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:28.003532" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:28.003170" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:28.003769" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:28.005058" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:28.321598" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:28.004715" elapsed="0.317029"/>
</kw>
<msg time="2026-04-19T01:59:28.321826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:28.004351" elapsed="0.317563"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:28.002385" elapsed="0.319865"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:28.323729" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:28.346400" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:28.346907" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:28.347291" 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-19T01:59:28.323335" elapsed="0.024169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:28.349788" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:28.352129" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:28.351473" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:28.352835" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:28.352503" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:28.352423" elapsed="0.000597"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:28.353531" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-19T01:59:28.353251" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:28.353182" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:28.353935" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:28.360201" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T01:59:28.360747" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:28.361225" 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-19T01:59:28.355861" elapsed="0.005576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:27.993065" elapsed="0.368603"/>
</kw>
<msg time="2026-04-19T01:59:28.361974" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:27.992213" elapsed="0.369994"/>
</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-19T01:59:27.991305" elapsed="0.370988"/>
</kw>
<msg time="2026-04-19T01:59:28.362335" 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-19T01:59:27.990535" elapsed="0.371846"/>
</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-19T01:59:28.365431" 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-19T01:59:28.365939" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:28.366255" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:28.362739" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T01:59:28.366498" level="INFO">${output} = 1</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-19T01:59:27.989237" elapsed="0.377287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:28.366990" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:28.366733" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:28.367104" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:28.367259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:27.987851" elapsed="0.379433"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:28.367331" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T01:59:28.367477" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:27.985455" elapsed="0.382046"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:28.368070" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:28.367659" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:27.984084" elapsed="0.384172">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:30.371720" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:30.370949" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:30.373828" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:30.373227" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:30.375701" 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-19T01:59:30.375926" 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-19T01:59:30.375372" elapsed="0.000614"/>
</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-19T01:59:30.382134" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:30.381643" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:30.381349" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:30.383740" 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-19T01:59:30.383982" 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-19T01:59:30.383294" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:30.385662" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:30.385119" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:30.387501" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:30.386780" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:30.390070" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:30.390150" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:30.389723" elapsed="0.000452"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:30.390390" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:30.391791" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:30.698722" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:30.391454" elapsed="0.307442"/>
</kw>
<msg time="2026-04-19T01:59:30.698976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:30.391077" elapsed="0.307995"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:30.388827" elapsed="0.310526"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:30.700818" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:30.723662" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:30.724225" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:30.724563" 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-19T01:59:30.700436" elapsed="0.024343"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:30.727295" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:30.730525" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:30.729492" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:30.731675" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:30.731175" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:30.731021" elapsed="0.000975"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:30.732950" elapsed="0.000179"/>
</return>
<status status="PASS" start="2026-04-19T01:59:30.732480" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:30.732340" elapsed="0.001035"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:30.733554" elapsed="0.000085"/>
</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-19T01:59:30.739706" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T01:59:30.740290" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:30.740695" 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-19T01:59:30.736267" elapsed="0.004652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:30.379994" elapsed="0.361184"/>
</kw>
<msg time="2026-04-19T01:59:30.741492" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:30.378806" elapsed="0.362747"/>
</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-19T01:59:30.377536" elapsed="0.364101"/>
</kw>
<msg time="2026-04-19T01:59:30.741680" 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-19T01:59:30.376367" elapsed="0.365365"/>
</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-19T01:59:30.744848" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:59:30.745357" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:30.745652" 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-19T01:59:30.742129" elapsed="0.003670"/>
</kw>
<msg time="2026-04-19T01:59:30.745961" level="INFO">${output} = 1</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-19T01:59:30.374402" elapsed="0.371586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:30.746490" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:30.746235" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:30.746580" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:30.746735" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:30.372281" elapsed="0.374480"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:30.746809" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T01:59:30.746972" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:30.370089" elapsed="0.376909"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:30.747565" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:30.747172" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:30.369001" elapsed="0.378754">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:32.751199" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:32.750437" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:32.753346" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:32.752708" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:32.755176" 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-19T01:59:32.755403" 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-19T01:59:32.754823" elapsed="0.000640"/>
</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-19T01:59:32.760780" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:32.760083" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:32.759992" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:32.762361" 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-19T01:59:32.762601" 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-19T01:59:32.761905" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:32.764253" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:32.763661" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:32.766096" 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-19T01:59:32.765388" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:32.768463" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:32.768541" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:32.768185" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:32.768777" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:32.770231" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:33.085718" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:32.769887" elapsed="0.316032"/>
</kw>
<msg time="2026-04-19T01:59:33.085994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:32.769524" elapsed="0.316568"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:32.767380" elapsed="0.318971"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:33.087772" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:33.110222" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:33.110724" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:33.111106" 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-19T01:59:33.087403" elapsed="0.023928"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:33.113811" elapsed="0.001067"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:33.117292" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:33.116221" elapsed="0.001302"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:33.118396" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:33.117869" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:33.117747" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:33.119485" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T01:59:33.119002" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:33.118896" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:33.120012" elapsed="0.000160"/>
</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-19T01:59:33.127439" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T01:59:33.128165" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:33.128525" 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-19T01:59:33.123210" elapsed="0.005522"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:32.758643" elapsed="0.370316"/>
</kw>
<msg time="2026-04-19T01:59:33.129366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:32.757936" elapsed="0.371488"/>
</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-19T01:59:32.757057" elapsed="0.372447"/>
</kw>
<msg time="2026-04-19T01:59:33.129544" 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-19T01:59:32.755815" elapsed="0.373775"/>
</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-19T01:59:33.132587" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:59:33.133110" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:33.133409" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:33.129882" elapsed="0.003673"/>
</kw>
<msg time="2026-04-19T01:59:33.133646" level="INFO">${output} = 1</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-19T01:59:32.753883" elapsed="0.379789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:33.134113" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:33.133851" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:33.134202" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:33.134353" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:32.751720" elapsed="0.382659"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:33.134425" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:33.134569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:32.749600" elapsed="0.384993"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:33.135213" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:33.134797" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:32.748554" elapsed="0.386842">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:35.139079" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:35.138289" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:35.141228" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:35.140562" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:35.143303" 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-19T01:59:35.143548" 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-19T01:59:35.142722" elapsed="0.000885"/>
</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-19T01:59:35.150634" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:35.150139" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:35.148180" elapsed="0.002595"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:35.152251" 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-19T01:59:35.152496" 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-19T01:59:35.151773" elapsed="0.000822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:35.154220" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:35.153658" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:35.156016" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:35.155318" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:35.158507" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:35.158584" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:35.158222" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:35.158817" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:35.160152" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:35.474890" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:35.159801" elapsed="0.315283"/>
</kw>
<msg time="2026-04-19T01:59:35.475179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:35.159435" elapsed="0.315843"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:35.157453" elapsed="0.318135"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:35.477819" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:35.501579" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:35.502254" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:35.502593" 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-19T01:59:35.477395" elapsed="0.025412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:35.505192" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:35.508561" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:35.507505" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:35.509865" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:35.509213" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:35.509080" elapsed="0.001133"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:35.510693" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T01:59:35.510478" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:35.510428" elapsed="0.000436"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:35.510950" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:35.515951" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T01:59:35.516554" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:35.516930" 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-19T01:59:35.512400" elapsed="0.004767"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:35.146768" elapsed="0.370629"/>
</kw>
<msg time="2026-04-19T01:59:35.517748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:35.145935" elapsed="0.371880"/>
</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-19T01:59:35.145168" elapsed="0.372731"/>
</kw>
<msg time="2026-04-19T01:59:35.517941" 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-19T01:59:35.143959" elapsed="0.374028"/>
</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-19T01:59:35.521160" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:59:35.521634" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:35.521949" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:35.518302" elapsed="0.003812"/>
</kw>
<msg time="2026-04-19T01:59:35.522209" level="INFO">${output} = 1</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-19T01:59:35.141769" elapsed="0.380465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:35.522695" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:35.522443" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:35.522781" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:35.522937" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:35.139611" elapsed="0.383351"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:35.523008" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:35.523265" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:35.137439" elapsed="0.385851"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:35.523861" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:35.523447" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:35.136313" elapsed="0.387758">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:37.527877" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:37.527117" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:37.530308" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:37.529614" elapsed="0.000759"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:37.532303" 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-19T01:59:37.532536" 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-19T01:59:37.531864" elapsed="0.000732"/>
</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-19T01:59:37.542258" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:37.541018" elapsed="0.001450"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:37.540866" elapsed="0.001733"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:37.546805" 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-19T01:59:37.547434" 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-19T01:59:37.544882" elapsed="0.002781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:37.549543" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:37.548892" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:37.551436" 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-19T01:59:37.550696" elapsed="0.000876"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:37.553909" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:37.553987" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:37.553609" 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-19T01:59:37.554315" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:37.555631" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:37.860393" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:37.555283" elapsed="0.305252"/>
</kw>
<msg time="2026-04-19T01:59:37.860619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:37.554900" elapsed="0.305808"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:37.552795" elapsed="0.308226"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:37.862532" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:37.885378" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:37.885878" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:37.886267" 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-19T01:59:37.862129" elapsed="0.024350"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:37.888839" elapsed="0.000953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:37.892258" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:37.891170" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:37.893578" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:37.892858" elapsed="0.000910"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:37.892730" elapsed="0.001166"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:37.894321" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T01:59:37.894108" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:37.894043" elapsed="0.000442"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:37.894571" 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-19T01:59:37.899460" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:59:37.900018" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:37.900401" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:37.895978" elapsed="0.004636"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:37.537123" elapsed="0.363718"/>
</kw>
<msg time="2026-04-19T01:59:37.901171" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:37.535516" elapsed="0.365715"/>
</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-19T01:59:37.534240" elapsed="0.367077"/>
</kw>
<msg time="2026-04-19T01:59:37.901360" 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-19T01:59:37.532953" elapsed="0.368456"/>
</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-19T01:59:37.904666" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T01:59:37.905187" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:37.905490" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:37.901734" elapsed="0.003913"/>
</kw>
<msg time="2026-04-19T01:59:37.905755" level="INFO">${output} = 1</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-19T01:59:37.530874" elapsed="0.374907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:37.906243" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:37.905964" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:37.906332" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T01:59:37.906486" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:37.528634" elapsed="0.377877"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:37.906560" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:37.906708" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:37.526213" elapsed="0.380520"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:37.907348" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:37.906890" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:37.525112" elapsed="0.382430">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:39.911355" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:39.910550" elapsed="0.000876"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:39.913533" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:39.912889" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:39.915500" 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-19T01:59:39.915911" 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-19T01:59:39.915148" elapsed="0.000828"/>
</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-19T01:59:39.922814" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:39.922343" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:39.922283" elapsed="0.000673"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:39.924680" 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-19T01:59:39.924931" 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-19T01:59:39.923961" elapsed="0.001075"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:39.926738" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:39.926193" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:39.928643" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:39.927867" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:39.931222" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:39.931307" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:39.930749" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:39.931546" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:39.932838" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:40.245976" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:39.932510" elapsed="0.313749"/>
</kw>
<msg time="2026-04-19T01:59:40.246417" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:39.932123" elapsed="0.314451"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:39.929963" elapsed="0.317221"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:40.249744" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:40.272762" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:40.273359" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:40.273694" 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-19T01:59:40.249347" elapsed="0.024556"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:40.276121" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:40.279273" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:40.278291" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:40.280379" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:40.279842" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:40.279718" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:40.281528" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T01:59:40.280994" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:40.280887" elapsed="0.001013"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:40.282235" elapsed="0.000087"/>
</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-19T01:59:40.287327" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T01:59:40.287951" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:40.288330" 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-19T01:59:40.283867" elapsed="0.004669"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:39.920734" elapsed="0.368026"/>
</kw>
<msg time="2026-04-19T01:59:40.289094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:39.918952" elapsed="0.370202"/>
</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-19T01:59:39.917649" elapsed="0.371617"/>
</kw>
<msg time="2026-04-19T01:59:40.289310" 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-19T01:59:39.916412" elapsed="0.372946"/>
</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-19T01:59:40.292535" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T01:59:40.293010" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:40.293345" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:40.289651" elapsed="0.003848"/>
</kw>
<msg time="2026-04-19T01:59:40.293591" level="INFO">${output} = 1</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-19T01:59:39.914106" elapsed="0.379511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:40.294145" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:40.293797" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:40.294243" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:40.294400" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:39.911893" elapsed="0.382532"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:40.294472" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:40.294618" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:39.909662" elapsed="0.384980"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:40.295205" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:40.294797" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:39.908558" elapsed="0.386834">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:42.299259" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:42.298442" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:42.300950" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:42.300567" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:42.302306" 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-19T01:59:42.302618" 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-19T01:59:42.302082" elapsed="0.000575"/>
</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-19T01:59:42.308343" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:42.307500" elapsed="0.001028"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:42.307420" elapsed="0.001174"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:42.310347" 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-19T01:59:42.310611" 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-19T01:59:42.309601" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:42.312370" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:42.311743" elapsed="0.000743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:42.314291" 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-19T01:59:42.313493" elapsed="0.000903"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:42.316852" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:42.316932" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:42.316554" 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-19T01:59:42.317190" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:42.318468" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:42.624753" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:42.318138" elapsed="0.306858"/>
</kw>
<msg time="2026-04-19T01:59:42.625182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:42.317749" elapsed="0.307596"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:42.315658" elapsed="0.310229"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:42.628646" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:42.651920" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:42.652506" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:42.652837" 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-19T01:59:42.628079" elapsed="0.025006"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:42.655392" elapsed="0.000939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:42.658583" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:42.657595" elapsed="0.001214"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:42.659748" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:42.659241" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:42.659065" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:42.660462" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T01:59:42.660258" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:42.660210" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:42.660713" 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-19T01:59:42.665627" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:42.666205" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:42.666572" 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-19T01:59:42.662129" elapsed="0.004650"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:42.305510" elapsed="0.361494"/>
</kw>
<msg time="2026-04-19T01:59:42.667430" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:42.304554" elapsed="0.362943"/>
</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-19T01:59:42.303765" elapsed="0.363816"/>
</kw>
<msg time="2026-04-19T01:59:42.667623" 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-19T01:59:42.302881" elapsed="0.364789"/>
</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-19T01:59:42.670682" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:42.671172" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:42.671481" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:42.667960" elapsed="0.003669"/>
</kw>
<msg time="2026-04-19T01:59:42.671723" level="INFO">${output} = 1</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-19T01:59:42.301319" elapsed="0.370429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:42.672205" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:42.671935" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:42.672292" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:42.672446" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:42.299837" elapsed="0.372634"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:42.672518" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:42.672663" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:42.297585" elapsed="0.375103"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:42.673352" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:42.672851" elapsed="0.000581">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:42.296401" elapsed="0.377148">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:44.677228" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:44.676436" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:44.679471" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:44.678801" elapsed="0.000731"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:44.681423" 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-19T01:59:44.681682" 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-19T01:59:44.681088" elapsed="0.000676"/>
</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-19T01:59:44.688234" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:44.687686" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:44.687384" elapsed="0.000998"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:44.689854" 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-19T01:59:44.690128" 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-19T01:59:44.689391" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:44.691796" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:44.691237" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:44.693744" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:44.693010" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:44.696279" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:44.696361" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:44.695945" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:44.696605" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:44.697888" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:45.016503" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:44.697562" elapsed="0.319072"/>
</kw>
<msg time="2026-04-19T01:59:45.016718" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:44.697191" elapsed="0.319614"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:44.695159" elapsed="0.321951"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:45.018599" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:45.041631" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:45.042171" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:45.042509" 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-19T01:59:45.018189" elapsed="0.024583"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:45.044987" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:45.048228" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:45.047242" elapsed="0.001214"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:45.049367" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:45.048808" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:45.048680" elapsed="0.000980"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:45.050471" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T01:59:45.049982" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:45.049873" elapsed="0.001013"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:45.051245" 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-19T01:59:45.055951" 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-19T01:59:45.056516" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:45.056876" 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-19T01:59:45.052573" elapsed="0.004527"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:44.685929" elapsed="0.371402"/>
</kw>
<msg time="2026-04-19T01:59:45.057640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:44.684712" elapsed="0.372985"/>
</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-19T01:59:44.683412" elapsed="0.374368"/>
</kw>
<msg time="2026-04-19T01:59:45.057822" 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-19T01:59:44.682229" elapsed="0.375638"/>
</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-19T01:59:45.061141" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T01:59:45.061624" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:45.061930" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:45.058245" elapsed="0.003852"/>
</kw>
<msg time="2026-04-19T01:59:45.062189" level="INFO">${output} = 1</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-19T01:59:44.680119" elapsed="0.382095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:45.062643" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:45.062395" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:45.062732" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T01:59:45.062901" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:44.677792" elapsed="0.385135"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:45.062975" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:45.063223" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:44.675456" elapsed="0.387795"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:45.063807" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:45.063409" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:44.674380" elapsed="0.389610">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:47.067633" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:47.066792" elapsed="0.000912"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:47.069785" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:47.069177" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:47.071817" 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-19T01:59:47.072076" 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-19T01:59:47.071487" elapsed="0.000651"/>
</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-19T01:59:47.076371" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:47.075658" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:47.075603" elapsed="0.000907"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:47.077979" 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-19T01:59:47.078241" 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-19T01:59:47.077518" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:47.079933" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:47.079317" elapsed="0.000746"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:47.081763" 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-19T01:59:47.081030" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:47.084222" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:47.084300" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:47.083918" 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-19T01:59:47.084537" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:47.085872" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:47.425074" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:47.085545" elapsed="0.339680"/>
</kw>
<msg time="2026-04-19T01:59:47.425331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:47.085184" elapsed="0.340240"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:47.083130" elapsed="0.342742"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:47.427439" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:47.450335" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:47.450834" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:47.451217" 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-19T01:59:47.427014" elapsed="0.024416"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:47.453706" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:47.456905" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:47.455884" elapsed="0.001303"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:47.458257" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:47.457696" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:47.457539" elapsed="0.000934"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:47.458957" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T01:59:47.458674" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:47.458608" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:47.459315" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:47.465945" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T01:59:47.466616" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:47.466972" 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-19T01:59:47.461245" elapsed="0.005952"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:47.074230" elapsed="0.393190"/>
</kw>
<msg time="2026-04-19T01:59:47.467727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:47.073511" elapsed="0.394272"/>
</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-19T01:59:47.072945" elapsed="0.394918"/>
</kw>
<msg time="2026-04-19T01:59:47.467903" 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-19T01:59:47.072429" elapsed="0.395520"/>
</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-19T01:59:47.471003" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T01:59:47.471491" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:47.471781" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:47.468327" elapsed="0.003600"/>
</kw>
<msg time="2026-04-19T01:59:47.472156" level="INFO">${output} = 1</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-19T01:59:47.070476" elapsed="0.401707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:47.472611" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:47.472363" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:47.472698" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:47.472850" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:47.068194" elapsed="0.404680"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:47.472921" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:47.473082" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:47.065944" elapsed="0.407164"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:47.473679" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:47.473263" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:47.064872" elapsed="0.408994">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:49.477523" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:49.476713" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:49.479657" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:49.479159" elapsed="0.000538"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:49.480876" 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-19T01:59:49.481024" 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-19T01:59:49.480650" elapsed="0.000437"/>
</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-19T01:59:49.488659" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:49.488154" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:49.485891" elapsed="0.003054"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:49.490471" 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-19T01:59:49.490721" 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-19T01:59:49.489968" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:49.492447" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:49.491860" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:49.494408" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:49.493638" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:49.497166" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:49.497253" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:49.496751" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:49.497503" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:49.498835" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:49.820884" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:49.498492" elapsed="0.322677"/>
</kw>
<msg time="2026-04-19T01:59:49.821255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:49.498117" elapsed="0.323230"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:49.495923" elapsed="0.325704"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:49.823157" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:49.846277" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:49.846767" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:49.847148" 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-19T01:59:49.822737" elapsed="0.024621"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:49.849575" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:49.852811" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:49.851759" elapsed="0.001314"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:49.853768" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:49.853419" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:49.853305" elapsed="0.000650"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:49.854465" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T01:59:49.854184" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:49.854117" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:49.854798" elapsed="0.000055"/>
</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-19T01:59:49.861563" elapsed="0.000438"/>
</kw>
<kw name="Open 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-19T01:59:49.862233" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:49.862591" 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-19T01:59:49.856749" elapsed="0.006049"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:49.483920" elapsed="0.379105"/>
</kw>
<msg time="2026-04-19T01:59:49.863352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:49.482903" elapsed="0.380506"/>
</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-19T01:59:49.482099" elapsed="0.381391"/>
</kw>
<msg time="2026-04-19T01:59:49.863531" 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-19T01:59:49.481323" elapsed="0.382254"/>
</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-19T01:59:49.866734" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:59:49.867247" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:49.867549" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:49.863870" elapsed="0.003828"/>
</kw>
<msg time="2026-04-19T01:59:49.867791" level="INFO">${output} = 1</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-19T01:59:49.480015" elapsed="0.387802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:49.868282" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:49.868013" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:49.868402" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T01:59:49.868562" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:49.478105" elapsed="0.390483"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:49.868634" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:49.868781" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:49.475822" elapsed="0.392984"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:49.869516" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:49.869017" elapsed="0.000572">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:49.474693" elapsed="0.395015">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:51.873307" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:51.872535" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:51.875481" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:51.874824" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:51.877647" 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-19T01:59:51.877950" 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-19T01:59:51.877298" elapsed="0.000723"/>
</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-19T01:59:51.883266" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:51.882780" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:51.882722" elapsed="0.000685"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:51.885113" 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-19T01:59:51.885363" 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-19T01:59:51.884420" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:51.886993" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:51.886448" elapsed="0.000715"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:51.888842" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:51.888152" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:51.891289" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:51.891367" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:51.890905" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:51.891616" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:51.892875" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:52.208715" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:51.892551" elapsed="0.316315"/>
</kw>
<msg time="2026-04-19T01:59:52.208951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:51.892188" elapsed="0.316874"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:51.890148" elapsed="0.319200"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:52.210815" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:52.234103" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:52.234618" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:52.234947" 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-19T01:59:52.210425" elapsed="0.024779"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:52.237460" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:52.240567" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:52.239591" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:52.241626" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:52.241224" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:52.241098" elapsed="0.000663"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:52.242123" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T01:59:52.241905" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:52.241856" elapsed="0.000426"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:52.242360" 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-19T01:59:52.247385" 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-19T01:59:52.248091" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:52.248450" 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-19T01:59:52.243716" elapsed="0.004965"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:51.881392" elapsed="0.367511"/>
</kw>
<msg time="2026-04-19T01:59:52.249225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:51.880692" elapsed="0.368591"/>
</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-19T01:59:51.879642" elapsed="0.369724"/>
</kw>
<msg time="2026-04-19T01:59:52.249408" 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-19T01:59:51.878417" elapsed="0.371037"/>
</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-19T01:59:52.252684" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:59:52.253176" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:52.253472" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:52.249744" elapsed="0.003942"/>
</kw>
<msg time="2026-04-19T01:59:52.253786" level="INFO">${output} = 1</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-19T01:59:51.876201" elapsed="0.377611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:52.254260" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:52.253991" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:52.254347" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:52.254498" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:51.873878" elapsed="0.380645"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:52.254570" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:59:52.254713" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:51.871673" elapsed="0.383065"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:52.255378" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:52.254894" elapsed="0.000559">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:51.870552" elapsed="0.385012">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:54.259104" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:54.258329" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:54.261554" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:54.260911" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:54.263144" 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-19T01:59:54.263290" 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-19T01:59:54.262903" elapsed="0.000425"/>
</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-19T01:59:54.268709" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:54.268073" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:54.267976" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:54.271123" 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-19T01:59:54.271376" 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-19T01:59:54.270332" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:54.273078" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:54.272468" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:54.274933" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:54.274227" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:54.277396" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:54.277474" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:54.277111" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:54.277712" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:54.280202" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:54.592769" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:54.279821" elapsed="0.313096"/>
</kw>
<msg time="2026-04-19T01:59:54.593006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:54.278319" elapsed="0.314798"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:54.276323" elapsed="0.317079"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:54.594920" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:54.617944" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:54.618199" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:54.618347" 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-19T01:59:54.594500" elapsed="0.023941"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:54.619450" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:54.620896" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:54.620457" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:54.621534" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:54.621191" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:54.621132" elapsed="0.000540"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:54.622031" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T01:59:54.621822" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:54.621773" elapsed="0.000434"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:54.622285" 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-19T01:59:54.627016" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:54.627710" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:54.628087" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:54.623637" elapsed="0.004656"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:54.266085" elapsed="0.362429"/>
</kw>
<msg time="2026-04-19T01:59:54.628821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:54.265128" elapsed="0.363750"/>
</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-19T01:59:54.264354" elapsed="0.364606"/>
</kw>
<msg time="2026-04-19T01:59:54.629002" 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-19T01:59:54.263601" elapsed="0.365465"/>
</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-19T01:59:54.632180" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T01:59:54.632654" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:54.632948" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:54.629361" elapsed="0.003752"/>
</kw>
<msg time="2026-04-19T01:59:54.633206" level="INFO">${output} = 1</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-19T01:59:54.262182" elapsed="0.371049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:54.633666" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:54.633411" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:54.633752" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:54.633903" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:54.259946" elapsed="0.373983"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:54.633977" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:54.634140" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:54.257466" elapsed="0.376699"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:54.634718" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:54.634323" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:54.256402" elapsed="0.378514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:56.638528" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:56.637741" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:56.640685" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:56.640077" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:56.642560" 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-19T01:59:56.642948" 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-19T01:59:56.642200" elapsed="0.000809"/>
</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-19T01:59:56.648008" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:56.647536" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:56.647474" elapsed="0.000692"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:56.649855" 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-19T01:59:56.650121" 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-19T01:59:56.649162" elapsed="0.001061"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:56.651801" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:56.651212" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:56.655579" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:56.653288" elapsed="0.002442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:56.658073" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:56.658155" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:56.657752" 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-19T01:59:56.658397" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:56.659947" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:56.978085" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:56.659611" elapsed="0.318631"/>
</kw>
<msg time="2026-04-19T01:59:56.978330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:56.658978" elapsed="0.319445"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:56.656951" elapsed="0.321767"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:56.980264" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:57.003142" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:57.003481" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:57.003638" 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-19T01:59:56.979828" elapsed="0.023910"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:57.004862" elapsed="0.000528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:57.006462" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:57.005979" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:57.006988" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:57.006738" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:57.006679" elapsed="0.000461"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:57.007495" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T01:59:57.007289" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:57.007238" elapsed="0.000432"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:57.007753" 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-19T01:59:57.012603" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T01:59:57.013243" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:57.013606" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:57.009121" elapsed="0.004695"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:56.646125" elapsed="0.367931"/>
</kw>
<msg time="2026-04-19T01:59:57.014372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:56.645408" elapsed="0.369025"/>
</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-19T01:59:56.644707" elapsed="0.369809"/>
</kw>
<msg time="2026-04-19T01:59:57.014557" 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-19T01:59:56.643422" elapsed="0.371182"/>
</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-19T01:59:57.017693" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T01:59:57.018192" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:57.018487" 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-19T01:59:57.014898" elapsed="0.003736"/>
</kw>
<msg time="2026-04-19T01:59:57.018726" level="INFO">${output} = 1</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-19T01:59:56.641253" elapsed="0.377498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:57.019201" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:57.018932" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:57.019290" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T01:59:57.019448" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:56.639088" elapsed="0.380385"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:57.019519" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T01:59:57.019662" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:56.636853" elapsed="0.382833"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:57.020300" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:57.019843" elapsed="0.000530">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:56.635738" elapsed="0.384745">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T01:59:59.022378" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T01:59:59.021988" elapsed="0.000427"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T01:59:59.023459" level="INFO">${member_ip} = 10.30.171.128</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-19T01:59:59.023141" elapsed="0.000347"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:59.024551" 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-19T01:59:59.024693" 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-19T01:59:59.024318" elapsed="0.000412"/>
</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-19T01:59:59.029966" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T01:59:59.029288" elapsed="0.001052"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:59.028865" elapsed="0.001576"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:59.032615" 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-19T01:59:59.032974" 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-19T01:59:59.031934" elapsed="0.001215"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:59.035433" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:59.034549" elapsed="0.001059"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T01:59:59.037390" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T01:59:59.036680" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T01:59:59.039873" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T01:59:59.039953" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T01:59:59.039583" 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-19T01:59:59.040206" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T01:59:59.041475" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T01:59:59.358788" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T01:59:59.041146" elapsed="0.317797"/>
</kw>
<msg time="2026-04-19T01:59:59.359044" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:59.040765" elapsed="0.318368"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T01:59:59.038679" elapsed="0.320738"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T01:59:59.360955" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T01:59:59.384112" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T01:59:59.384611" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T01:59:59.384936" 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-19T01:59:59.360535" elapsed="0.024655"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:59.387361" elapsed="0.001090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:59.390684" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:59.389695" elapsed="0.001213"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:59.391788" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T01:59:59.391288" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:59.391166" elapsed="0.000996"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T01:59:59.392841" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T01:59:59.392482" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T01:59:59.392377" elapsed="0.000619"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T01:59:59.393143" 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-19T01:59:59.397899" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T01:59:59.398588" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:59.398951" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:59.394453" elapsed="0.004726"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T01:59:59.027058" elapsed="0.372347"/>
</kw>
<msg time="2026-04-19T01:59:59.399793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T01:59:59.026164" elapsed="0.373689"/>
</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-19T01:59:59.025523" elapsed="0.374439"/>
</kw>
<msg time="2026-04-19T01:59:59.400006" 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-19T01:59:59.024956" elapsed="0.375111"/>
</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-19T01:59:59.403083" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T01:59:59.403597" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T01:59:59.403917" elapsed="0.000145"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T01:59:59.400363" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T01:59:59.404211" level="INFO">${output} = 1</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-19T01:59:59.023718" elapsed="0.380519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T01:59:59.404668" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T01:59:59.404419" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T01:59:59.404755" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T01:59:59.404905" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T01:59:59.022630" elapsed="0.382301"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T01:59:59.404977" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T01:59:59.405223" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T01:59:59.021591" elapsed="0.383659"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T01:59:59.405797" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T01:59:59.405407" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T01:59:59.021018" elapsed="0.384958">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:01.409469" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:01.408701" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:01.411601" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:01.410966" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:01.413432" 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-19T02:00:01.413658" 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-19T02:00:01.413108" elapsed="0.000609"/>
</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-19T02:00:01.420081" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:01.419131" elapsed="0.001065"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:01.419054" elapsed="0.001224"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:01.422249" 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-19T02:00:01.422587" 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-19T02:00:01.421617" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:01.424587" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:01.424045" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:01.426517" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:01.425745" elapsed="0.000868"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:01.428883" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:01.428960" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:01.428601" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:01.429209" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:01.430580" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:01.741177" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 01:59:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:01.430255" elapsed="0.311041"/>
</kw>
<msg time="2026-04-19T02:00:01.741370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:01.429761" elapsed="0.311691"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:01.427827" elapsed="0.313875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:01.743163" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:01.765759" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:01.766286" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:01.766611" 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-19T02:00:01.742737" elapsed="0.024080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:01.769023" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:01.772155" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:01.771203" elapsed="0.001181"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:01.773261" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:01.772728" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:01.772605" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:01.774340" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:00:01.773863" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:01.773755" elapsed="0.000930"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:01.774862" elapsed="0.000084"/>
</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-19T02:00:01.780211" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:00:01.780766" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:01.781139" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:01.776798" 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-19T02:00:01.417225" elapsed="0.364345"/>
</kw>
<msg time="2026-04-19T02:00:01.781882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:01.416255" elapsed="0.365685"/>
</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-19T02:00:01.415309" elapsed="0.366711"/>
</kw>
<msg time="2026-04-19T02:00:01.782076" 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-19T02:00:01.414095" elapsed="0.368028"/>
</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-19T02:00:01.785318" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:00:01.785794" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:01.786109" 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-19T02:00:01.782584" elapsed="0.003673"/>
</kw>
<msg time="2026-04-19T02:00:01.786346" level="INFO">${output} = 1</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-19T02:00:01.412170" elapsed="0.374201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:01.786796" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:01.786553" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:01.786882" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:00:01.787135" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:01.409995" elapsed="0.377169"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:01.787213" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:00:01.787361" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:01.407855" elapsed="0.379531"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:01.787931" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:01.787540" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:01.406795" elapsed="0.381337">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:03.791674" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:03.790908" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:03.793888" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:03.793173" elapsed="0.000778"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:03.795749" 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-19T02:00:03.795979" 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-19T02:00:03.795422" elapsed="0.000646"/>
</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-19T02:00:03.802816" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:03.802325" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:03.800376" elapsed="0.002606"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:03.804462" 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-19T02:00:03.804707" 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-19T02:00:03.803995" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:03.806398" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:03.805833" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:03.808248" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:03.807477" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:03.810590" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:03.810667" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:03.810305" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:03.810901" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:03.812365" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:04.119827" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:03.811901" elapsed="0.308237"/>
</kw>
<msg time="2026-04-19T02:00:04.120301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:03.811538" elapsed="0.308931"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:03.809534" elapsed="0.311491"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:04.124208" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:04.146745" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:04.147357" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:04.147699" 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-19T02:00:04.123413" elapsed="0.024501"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:04.150640" elapsed="0.000676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:04.152795" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:04.152169" 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-19T02:00:04.153720" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:04.153365" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:04.153282" elapsed="0.000696"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:04.154511" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:00:04.154219" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:04.154148" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:04.154859" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:04.209280" 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-19T02:00:04.209940" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:04.210338" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:04.156939" elapsed="0.053617"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:03.799014" elapsed="0.411772"/>
</kw>
<msg time="2026-04-19T02:00:04.211125" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:03.798334" elapsed="0.412860"/>
</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-19T02:00:03.797642" elapsed="0.413635"/>
</kw>
<msg time="2026-04-19T02:00:04.211318" 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-19T02:00:03.796427" elapsed="0.414937"/>
</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-19T02:00:04.214386" 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-19T02:00:04.214910" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:04.215234" 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-19T02:00:04.211674" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T02:00:04.215544" level="INFO">${output} = 1</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-19T02:00:03.794478" elapsed="0.421092"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:04.216046" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:04.215769" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:04.216141" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:00:04.216301" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:03.792235" elapsed="0.424091"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:04.216373" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:04.216517" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:03.790096" elapsed="0.426445"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:04.217103" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:04.216695" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:03.788928" elapsed="0.428359">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:06.221266" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:06.220386" elapsed="0.000954"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:06.223597" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:06.222891" elapsed="0.000770"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:06.225693" 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-19T02:00:06.225934" 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-19T02:00:06.225336" elapsed="0.000678"/>
</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-19T02:00:06.233434" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:06.232869" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:06.232786" elapsed="0.000790"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:06.235116" 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-19T02:00:06.235367" 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-19T02:00:06.234637" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:06.237018" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:06.236471" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:06.238831" 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-19T02:00:06.238132" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:06.241360" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:06.241438" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:06.241065" 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-19T02:00:06.241677" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:06.242937" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:06.608238" 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 Sun Apr 19 01:59:06 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:06.242613" elapsed="0.365861"/>
</kw>
<msg time="2026-04-19T02:00:06.608559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:06.242253" elapsed="0.366397"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:06.240227" elapsed="0.368692"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:06.610450" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:06.633087" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:06.633593" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:06.633926" 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-19T02:00:06.610012" elapsed="0.024170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:06.636420" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:06.639576" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:06.638599" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:06.640733" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:06.640232" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:06.640102" elapsed="0.000908"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:06.641516" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T02:00:06.641235" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:06.641167" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:06.641849" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:06.648416" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T02:00:06.649197" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:06.649696" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:06.643732" elapsed="0.006258"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:06.230597" elapsed="0.419806"/>
</kw>
<msg time="2026-04-19T02:00:06.650834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:06.229163" elapsed="0.421751"/>
</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-19T02:00:06.227724" elapsed="0.423323"/>
</kw>
<msg time="2026-04-19T02:00:06.651107" 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-19T02:00:06.226441" elapsed="0.424730"/>
</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-19T02:00:06.654890" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:00:06.655393" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:06.655688" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:06.651577" elapsed="0.004260"/>
</kw>
<msg time="2026-04-19T02:00:06.655927" level="INFO">${output} = 1</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-19T02:00:06.224285" elapsed="0.431667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:06.656407" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:06.656159" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:06.656494" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:06.656645" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:06.221838" elapsed="0.434831"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:06.656716" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:00:06.656857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:06.219401" elapsed="0.437480"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:06.657499" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:06.657103" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:06.218155" elapsed="0.439529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:08.661237" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:08.660452" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:08.663334" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:08.662700" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:08.665224" 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-19T02:00:08.665457" 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-19T02:00:08.664820" elapsed="0.000697"/>
</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-19T02:00:08.671366" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:08.670713" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:08.670638" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:08.673547" 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-19T02:00:08.673882" 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-19T02:00:08.672911" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:08.676174" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:08.675405" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:08.678590" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:08.677695" elapsed="0.000993"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:08.681082" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:08.681172" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:08.680787" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:08.681405" elapsed="0.000923"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:08.683256" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:09.263994" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:08.682916" elapsed="0.581275"/>
</kw>
<msg time="2026-04-19T02:00:09.264287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:08.682553" elapsed="0.581833"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:08.679872" elapsed="0.584814"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:09.266323" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:09.289393" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:09.289957" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:09.290349" 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-19T02:00:09.265861" elapsed="0.024725"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:09.292885" elapsed="0.000978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:09.295512" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:09.294840" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:09.296265" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:09.295903" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:09.295817" elapsed="0.000637"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:09.296953" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:00:09.296661" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:09.296585" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:09.297309" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:09.304267" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:09.305142" elapsed="0.000238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:09.305693" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:09.299359" elapsed="0.006640"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:08.668449" elapsed="0.637894"/>
</kw>
<msg time="2026-04-19T02:00:09.306649" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:08.667486" elapsed="0.639221"/>
</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-19T02:00:08.666717" elapsed="0.640072"/>
</kw>
<msg time="2026-04-19T02:00:09.306830" 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-19T02:00:08.665871" elapsed="0.641023"/>
</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-19T02:00:09.310024" 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-19T02:00:09.310551" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:09.310844" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:09.307315" elapsed="0.003773"/>
</kw>
<msg time="2026-04-19T02:00:09.311195" level="INFO">${output} = 1</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-19T02:00:08.663876" elapsed="0.647345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:09.311648" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:09.311398" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:09.311734" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:09.311896" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:08.661759" elapsed="0.650162"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:09.311976" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:00:09.312146" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:08.659610" elapsed="0.652561"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:09.312771" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:09.312332" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:08.658576" elapsed="0.654389">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:11.316461" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:11.315701" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:11.318758" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:11.318130" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:11.320594" 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-19T02:00:11.320817" 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-19T02:00:11.320271" elapsed="0.000607"/>
</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-19T02:00:11.326224" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:11.325748" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:11.325691" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:11.327782" 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-19T02:00:11.328021" 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-19T02:00:11.327347" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:11.329649" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:11.329112" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:11.331450" 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-19T02:00:11.330743" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:11.333852" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:11.333930" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:11.333574" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:11.334181" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:11.335785" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:11.646051" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:11.335461" elapsed="0.310730"/>
</kw>
<msg time="2026-04-19T02:00:11.646279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:11.334758" elapsed="0.311627"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:11.332737" elapsed="0.313983"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:11.648405" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:11.671025" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:11.671696" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:11.672143" 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-19T02:00:11.647942" elapsed="0.024465"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:11.674914" elapsed="0.000688"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:11.677157" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:11.676474" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:11.677979" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:11.677556" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:11.677471" 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-19T02:00:11.678756" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T02:00:11.678425" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:11.678352" elapsed="0.000653"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:11.679151" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:11.685287" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T02:00:11.685850" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:11.686232" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:11.681194" elapsed="0.005253"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:11.324170" elapsed="0.362524"/>
</kw>
<msg time="2026-04-19T02:00:11.687006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:11.323469" elapsed="0.363611"/>
</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-19T02:00:11.322428" elapsed="0.364738"/>
</kw>
<msg time="2026-04-19T02:00:11.687208" 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-19T02:00:11.321259" elapsed="0.365997"/>
</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-19T02:00:11.690308" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:00:11.690815" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:11.691127" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:11.687552" elapsed="0.003729"/>
</kw>
<msg time="2026-04-19T02:00:11.691372" level="INFO">${output} = 1</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-19T02:00:11.319335" elapsed="0.372062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:11.691871" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:11.691574" elapsed="0.000342"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:11.691959" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:11.692181" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:11.317152" elapsed="0.375055"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:11.692255" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:11.692399" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:11.314859" elapsed="0.377565"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:11.692970" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:11.692581" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:11.313778" elapsed="0.379390">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:13.697081" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:13.696158" elapsed="0.001000"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:13.699269" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:13.698611" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:13.701015" 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-19T02:00:13.701341" 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-19T02:00:13.700707" elapsed="0.000673"/>
</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-19T02:00:13.707100" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:13.706431" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:13.706353" elapsed="0.000944"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:13.709343" 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-19T02:00:13.709686" 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-19T02:00:13.708692" elapsed="0.001137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:13.712011" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:13.711210" elapsed="0.000980"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:13.714042" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:13.713318" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:13.716451" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:13.716529" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:13.716167" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:13.716763" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:13.718330" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:14.081592" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:13.717989" elapsed="0.363800"/>
</kw>
<msg time="2026-04-19T02:00:14.081902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:13.717454" elapsed="0.364571"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:13.715365" elapsed="0.367035"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:14.084431" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:14.107265" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:14.107903" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:14.108335" 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-19T02:00:14.083813" elapsed="0.024745"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:14.110927" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:14.114246" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:14.113207" elapsed="0.001294"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:14.115386" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:14.114849" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:14.114725" elapsed="0.000964"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:14.116688" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T02:00:14.116056" elapsed="0.000877"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:14.115901" elapsed="0.001322"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:14.117362" 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-19T02:00:14.124275" elapsed="0.000747"/>
</kw>
<kw name="Open 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-19T02:00:14.125726" elapsed="0.000394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:14.126543" elapsed="0.000342"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:14.118706" elapsed="0.008441"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:13.704192" elapsed="0.423550"/>
</kw>
<msg time="2026-04-19T02:00:14.128499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:13.703198" elapsed="0.425445"/>
</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-19T02:00:13.702421" elapsed="0.426416"/>
</kw>
<msg time="2026-04-19T02:00:14.128934" 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-19T02:00:13.701608" elapsed="0.427661"/>
</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-19T02:00:14.134065" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:00:14.134543" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:14.134835" 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-19T02:00:14.129976" elapsed="0.005006"/>
</kw>
<msg time="2026-04-19T02:00:14.135089" level="INFO">${output} = 1</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-19T02:00:13.699951" elapsed="0.435164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:14.135543" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:14.135291" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:14.135631" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:14.135783" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:13.697637" elapsed="0.438171"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:14.135855" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:14.136017" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:13.695229" elapsed="0.440826"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:14.136609" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:14.136214" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:13.694010" elapsed="0.442786">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:16.141414" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:16.140535" elapsed="0.000958"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:16.143546" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:16.142907" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:16.145520" 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-19T02:00:16.145625" 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-19T02:00:16.145249" elapsed="0.000404"/>
</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-19T02:00:16.150522" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:16.150000" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:16.149716" elapsed="0.001012"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:16.152218" 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-19T02:00:16.152473" 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-19T02:00:16.151743" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:16.154199" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:16.153614" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:16.156089" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:16.155342" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:16.158650" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:16.158729" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:16.158340" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:16.158965" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:16.160277" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:16.479683" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:16.159940" elapsed="0.319910"/>
</kw>
<msg time="2026-04-19T02:00:16.479940" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:16.159579" elapsed="0.320473"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:16.157552" elapsed="0.322809"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:16.482124" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:16.505350" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:16.505972" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:16.506373" 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-19T02:00:16.481688" elapsed="0.024942"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:16.509329" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:16.511884" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:16.511246" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:16.512778" elapsed="0.000054"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:16.512331" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:16.512251" elapsed="0.000773"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:16.513750" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T02:00:16.513365" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:16.513272" elapsed="0.000816"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:16.514245" elapsed="0.000070"/>
</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-19T02:00:16.522787" 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-19T02:00:16.523371" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:16.523736" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:16.516301" elapsed="0.007645"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:16.148252" elapsed="0.376013"/>
</kw>
<msg time="2026-04-19T02:00:16.524714" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:16.147218" elapsed="0.377561"/>
</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-19T02:00:16.146407" elapsed="0.378453"/>
</kw>
<msg time="2026-04-19T02:00:16.524900" 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-19T02:00:16.145815" elapsed="0.379131"/>
</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-19T02:00:16.527958" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:00:16.528478" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:16.528784" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:16.525271" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T02:00:16.529046" level="INFO">${output} = 1</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-19T02:00:16.144174" elapsed="0.384900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:16.529534" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:16.529273" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:16.529623" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:00:16.529778" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:16.141953" elapsed="0.387851"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:16.529850" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:00:16.529997" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:16.139452" elapsed="0.390571"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:16.530634" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:16.530200" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:16.137986" elapsed="0.392838">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:18.534400" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:18.533608" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:18.536553" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:18.535899" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:18.538450" 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-19T02:00:18.538680" 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-19T02:00:18.538071" elapsed="0.000669"/>
</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-19T02:00:18.545503" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:18.545020" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:18.544740" elapsed="0.000904"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:18.547102" 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-19T02:00:18.547343" 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-19T02:00:18.546637" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:18.548954" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:18.548414" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:18.550836" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:18.550113" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:18.553327" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:18.553404" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:18.553044" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:18.553635" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:18.554901" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:18.860139" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:18.554574" elapsed="0.305713"/>
</kw>
<msg time="2026-04-19T02:00:18.860370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:18.554197" elapsed="0.306259"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:18.552285" elapsed="0.308449"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:18.862241" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:18.885249" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:18.885819" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:18.886234" 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-19T02:00:18.861822" elapsed="0.024702"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:18.888894" elapsed="0.001177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:18.893058" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:18.891810" elapsed="0.001487"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:18.894180" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:18.893650" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:18.893527" elapsed="0.000992"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:18.895354" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T02:00:18.894844" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:18.894738" elapsed="0.000917"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:18.895762" elapsed="0.000051"/>
</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-19T02:00:18.904345" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T02:00:18.904899" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:18.905274" 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-19T02:00:18.897705" elapsed="0.007776"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:18.543193" elapsed="0.362504"/>
</kw>
<msg time="2026-04-19T02:00:18.905996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:18.541576" elapsed="0.364494"/>
</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-19T02:00:18.540327" elapsed="0.365825"/>
</kw>
<msg time="2026-04-19T02:00:18.906192" 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-19T02:00:18.539131" elapsed="0.367105"/>
</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-19T02:00:18.909326" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:18.909813" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:18.910123" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:18.906607" elapsed="0.003667"/>
</kw>
<msg time="2026-04-19T02:00:18.910365" level="INFO">${output} = 1</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-19T02:00:18.537130" elapsed="0.373260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:18.910841" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:18.910589" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:18.910928" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:00:18.911094" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:18.534927" elapsed="0.376192"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:18.911165" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:00:18.911307" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:18.532733" elapsed="0.378598"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:18.911876" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:18.911486" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:18.531635" elapsed="0.380451">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:20.915499" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:20.914732" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:20.917630" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:20.916993" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:20.919469" 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-19T02:00:20.919750" 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-19T02:00:20.919146" elapsed="0.000663"/>
</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-19T02:00:20.925485" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:20.924827" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:20.924752" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:20.928025" 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-19T02:00:20.928396" 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-19T02:00:20.927066" elapsed="0.001487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:20.930125" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:20.929566" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:20.931953" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:20.931226" elapsed="0.000902"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:20.934407" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:20.934484" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:20.934124" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:20.934721" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:20.936199" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:21.239818" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:20.935729" elapsed="0.304212"/>
</kw>
<msg time="2026-04-19T02:00:21.240016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:20.935349" elapsed="0.304763"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:20.933333" elapsed="0.307039"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:21.241816" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:21.264438" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:21.265124" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:21.265459" 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-19T02:00:21.241441" elapsed="0.024229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:21.267909" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:21.271019" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:21.270085" elapsed="0.001204"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:21.272214" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:21.271637" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:21.271514" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:21.272930" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:00:21.272726" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:21.272678" elapsed="0.000425"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:21.273183" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:21.277842" 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-19T02:00:21.278483" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:21.278846" 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-19T02:00:21.274565" elapsed="0.004505"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:20.922881" elapsed="0.356414"/>
</kw>
<msg time="2026-04-19T02:00:21.279606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:20.921932" elapsed="0.357730"/>
</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-19T02:00:20.921050" elapsed="0.358719"/>
</kw>
<msg time="2026-04-19T02:00:21.279811" 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-19T02:00:20.920210" elapsed="0.359647"/>
</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-19T02:00:21.282904" 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-19T02:00:21.283399" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:21.283691" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:21.280163" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T02:00:21.284020" level="INFO">${output} = 1</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-19T02:00:20.918201" elapsed="0.365861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:21.284490" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:21.284242" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:21.284582" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:00:21.284732" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:20.916071" elapsed="0.368686"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:21.284805" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:21.284948" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:20.913890" elapsed="0.371083"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:21.285539" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:21.285147" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:20.912832" elapsed="0.372888">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:23.289616" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:23.288676" elapsed="0.001014"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:23.291916" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:23.291242" elapsed="0.000817"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:23.294011" 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-19T02:00:23.294304" 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-19T02:00:23.293649" elapsed="0.000720"/>
</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-19T02:00:23.301208" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:23.300497" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:23.300418" elapsed="0.000990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:23.303404" 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-19T02:00:23.303656" 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-19T02:00:23.302670" elapsed="0.001088"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:23.305359" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:23.304791" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:23.307221" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:23.306463" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:23.309754" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:23.309835" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:23.309465" 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-19T02:00:23.310093" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:23.311378" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:23.620719" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:23.311047" elapsed="0.309927"/>
</kw>
<msg time="2026-04-19T02:00:23.621074" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:23.310666" elapsed="0.310496"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:23.308618" elapsed="0.312811"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:23.622889" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:23.645873" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:23.646408" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:23.646736" 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-19T02:00:23.622507" elapsed="0.024434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:23.649191" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:23.652293" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:23.651328" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:23.653443" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:23.652864" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:23.652743" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:23.654069" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:00:23.653854" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:23.653807" elapsed="0.000421"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:23.654304" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:23.658966" elapsed="0.000437"/>
</kw>
<kw name="Open 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-19T02:00:23.659617" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:23.659975" 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-19T02:00:23.655655" elapsed="0.004543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:23.298495" elapsed="0.361922"/>
</kw>
<msg time="2026-04-19T02:00:23.660718" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:23.297407" elapsed="0.363369"/>
</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-19T02:00:23.295935" elapsed="0.364922"/>
</kw>
<msg time="2026-04-19T02:00:23.660898" 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-19T02:00:23.294731" elapsed="0.366212"/>
</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-19T02:00:23.664013" 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-19T02:00:23.664501" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:23.664794" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:23.661274" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T02:00:23.665072" level="INFO">${output} = 1</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-19T02:00:23.292611" elapsed="0.372488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:23.665537" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:23.665277" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:23.665626" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:23.665777" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:23.290252" elapsed="0.375550"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:23.665847" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:23.665992" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:23.287799" elapsed="0.378218"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:23.666659" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:23.666261" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:23.286699" elapsed="0.380161">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:25.670540" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:25.669700" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:25.672689" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:25.672078" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:25.674719" 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-19T02:00:25.674841" 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-19T02:00:25.674363" elapsed="0.000504"/>
</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-19T02:00:25.678801" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:25.678336" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:25.678279" elapsed="0.000662"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:25.680617" 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-19T02:00:25.680866" 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-19T02:00:25.679935" elapsed="0.001033"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:25.682545" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:25.681953" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:25.686899" 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-19T02:00:25.684884" elapsed="0.002114"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:25.689436" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:25.689514" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:25.689144" 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-19T02:00:25.689757" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:25.691056" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:26.009666" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:25.690712" elapsed="0.319106"/>
</kw>
<msg time="2026-04-19T02:00:26.009903" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:25.690350" elapsed="0.319642"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:25.688312" elapsed="0.321995"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:26.011775" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:26.034609" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:26.035144" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:26.035476" 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-19T02:00:26.011382" elapsed="0.024303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:26.037854" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:26.040964" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:26.039990" elapsed="0.001240"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:26.042108" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:26.041578" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:26.041455" elapsed="0.001002"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:26.042937" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:00:26.042735" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:26.042666" elapsed="0.000454"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:26.043201" 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-19T02:00:26.047883" elapsed="0.000436"/>
</kw>
<kw name="Open 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-19T02:00:26.048533" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:26.048892" 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-19T02:00:26.044558" elapsed="0.004556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:25.676802" elapsed="0.372533"/>
</kw>
<msg time="2026-04-19T02:00:26.049638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:25.676111" elapsed="0.373586"/>
</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-19T02:00:25.675564" elapsed="0.374215"/>
</kw>
<msg time="2026-04-19T02:00:26.049820" 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-19T02:00:25.675043" elapsed="0.374823"/>
</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-19T02:00:26.053008" 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-19T02:00:26.053501" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:26.053794" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:26.050170" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T02:00:26.054052" level="INFO">${output} = 1</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-19T02:00:25.673298" elapsed="0.380781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:26.054527" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:26.054270" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:26.054613" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:26.054765" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:25.671103" elapsed="0.383687"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:26.054836" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:26.054977" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:25.668812" elapsed="0.386190"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:26.055562" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:26.055171" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:25.667717" elapsed="0.388031">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:28.059670" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:28.058561" elapsed="0.001262"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:28.062238" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:28.061823" elapsed="0.000453"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:28.063517" 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-19T02:00:28.063667" 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-19T02:00:28.063263" elapsed="0.000455"/>
</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-19T02:00:28.069438" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:28.068475" elapsed="0.001079"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:28.068394" elapsed="0.001247"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:28.071706" 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-19T02:00:28.072004" 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-19T02:00:28.071011" elapsed="0.001130"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:28.073704" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:28.073122" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:28.075682" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:28.074923" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:28.078397" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:28.078476" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:28.078101" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:28.078717" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:28.080380" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:28.391642" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:28.079762" elapsed="0.312034"/>
</kw>
<msg time="2026-04-19T02:00:28.391882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:28.079398" elapsed="0.312576"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:28.077291" elapsed="0.314999"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:28.393838" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:28.416276" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:28.416605" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:28.416867" 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-19T02:00:28.393412" elapsed="0.023702"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:28.419292" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:28.422528" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:28.421496" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:28.423865" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:28.423209" elapsed="0.000919"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:28.422992" elapsed="0.001295"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:28.425137" elapsed="0.000139"/>
</return>
<status status="PASS" start="2026-04-19T02:00:28.424629" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:28.424521" elapsed="0.001000"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:28.425699" elapsed="0.000089"/>
</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-19T02:00:28.431668" 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-19T02:00:28.432292" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:28.432664" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:28.428276" elapsed="0.004598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:28.066512" elapsed="0.366604"/>
</kw>
<msg time="2026-04-19T02:00:28.433450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:28.065564" elapsed="0.367947"/>
</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-19T02:00:28.064802" elapsed="0.368795"/>
</kw>
<msg time="2026-04-19T02:00:28.433639" 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-19T02:00:28.064040" elapsed="0.369646"/>
</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-19T02:00:28.436894" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:00:28.437409" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:28.437709" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:28.433981" elapsed="0.003879"/>
</kw>
<msg time="2026-04-19T02:00:28.437955" level="INFO">${output} = 1</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-19T02:00:28.062630" elapsed="0.375351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:28.438534" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:28.438200" elapsed="0.000381"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:28.438625" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:00:28.438782" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:28.060657" elapsed="0.378152"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:28.438858" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:00:28.439006" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:28.057586" elapsed="0.381522"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:28.439713" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:28.439284" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:28.056537" elapsed="0.383369">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:30.443716" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:30.442932" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:30.445489" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:30.445108" elapsed="0.000418"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:30.446648" 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-19T02:00:30.446913" 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-19T02:00:30.446420" elapsed="0.000532"/>
</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-19T02:00:30.452727" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:30.452021" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:30.451658" elapsed="0.001266"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:30.454395" 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-19T02:00:30.454640" 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-19T02:00:30.453936" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:30.456328" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:30.455724" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:30.458147" 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-19T02:00:30.457431" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:30.460633" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:30.460711" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:30.460338" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:30.460944" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:30.462208" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:30.825944" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:30.461869" elapsed="0.364427"/>
</kw>
<msg time="2026-04-19T02:00:30.826512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:30.461510" elapsed="0.365225"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:30.459463" elapsed="0.367884"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:30.830224" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:30.853071" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:30.853585" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:30.853966" 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-19T02:00:30.829718" elapsed="0.024495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:30.856419" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:30.859708" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:30.858724" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:30.860844" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:30.860330" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:30.860204" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:30.861943" elapsed="0.000255"/>
</return>
<status status="PASS" start="2026-04-19T02:00:30.861498" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:30.861389" elapsed="0.001201"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:30.862769" elapsed="0.000088"/>
</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-19T02:00:30.867710" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:00:30.868336" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:30.868697" 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-19T02:00:30.864270" elapsed="0.004648"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:30.449810" elapsed="0.419350"/>
</kw>
<msg time="2026-04-19T02:00:30.869469" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:30.448865" elapsed="0.420663"/>
</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-19T02:00:30.448090" elapsed="0.421521"/>
</kw>
<msg time="2026-04-19T02:00:30.869652" 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-19T02:00:30.447197" elapsed="0.422501"/>
</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-19T02:00:30.872701" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:00:30.873242" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:30.873542" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:30.869985" elapsed="0.003706"/>
</kw>
<msg time="2026-04-19T02:00:30.873781" level="INFO">${output} = 1</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-19T02:00:30.445822" elapsed="0.427984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:30.874352" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:30.873991" elapsed="0.000406"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:30.874440" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:00:30.874591" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:30.444271" elapsed="0.430345"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:30.874661" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:30.874804" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:30.441937" elapsed="0.432892"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:30.875397" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:30.874988" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:30.440737" elapsed="0.434862">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:32.879116" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:32.878333" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:32.881227" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:32.880595" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:32.883109" 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-19T02:00:32.883254" 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-19T02:00:32.882785" elapsed="0.000506"/>
</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-19T02:00:32.888951" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:32.888269" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:32.887844" elapsed="0.001411"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:32.891232" 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-19T02:00:32.891477" 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-19T02:00:32.890711" elapsed="0.000864"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:32.893186" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:32.892567" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:32.894957" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:32.894264" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:32.897498" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:32.897576" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:32.897212" 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-19T02:00:32.897820" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:32.899087" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:33.222640" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:32.898747" elapsed="0.324049"/>
</kw>
<msg time="2026-04-19T02:00:33.222885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:32.898387" elapsed="0.324591"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:32.896310" elapsed="0.326981"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:33.224844" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:33.247598" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:33.248166" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:33.248508" 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-19T02:00:33.224436" elapsed="0.024285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:33.251101" elapsed="0.000970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:33.254509" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:33.253418" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:33.255666" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:33.255147" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:33.254979" elapsed="0.000994"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:33.256857" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T02:00:33.256372" elapsed="0.000882"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:33.256258" elapsed="0.001139"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:33.257586" elapsed="0.000102"/>
</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-19T02:00:33.265196" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:00:33.265756" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:33.266160" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:33.259820" elapsed="0.006558"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:32.885929" elapsed="0.380683"/>
</kw>
<msg time="2026-04-19T02:00:33.266986" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:32.884974" elapsed="0.382088"/>
</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-19T02:00:32.884240" elapsed="0.382908"/>
</kw>
<msg time="2026-04-19T02:00:33.267190" 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-19T02:00:32.883513" elapsed="0.383725"/>
</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-19T02:00:33.270386" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:00:33.270880" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:33.271200" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:33.267536" elapsed="0.003818"/>
</kw>
<msg time="2026-04-19T02:00:33.271447" level="INFO">${output} = 1</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-19T02:00:32.881769" elapsed="0.389704"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:33.271907" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:33.271655" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:33.272010" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T02:00:33.272186" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:32.879637" elapsed="0.392575"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:33.272259" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:33.272404" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:32.877468" elapsed="0.394962"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:33.272979" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:33.272585" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:32.876413" elapsed="0.396791">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:35.276789" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:35.276004" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:35.278893" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:35.278292" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:35.280639" 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-19T02:00:35.280785" 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-19T02:00:35.280416" elapsed="0.000406"/>
</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-19T02:00:35.286140" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:35.285486" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:35.285407" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:35.288662" 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-19T02:00:35.288997" 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-19T02:00:35.287702" elapsed="0.001480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:35.291336" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:35.290519" elapsed="0.000967"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:35.293418" 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-19T02:00:35.292656" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:35.295764" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:35.295842" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:35.295484" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:35.296099" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:35.297518" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:35.611383" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:35.297012" elapsed="0.314545"/>
</kw>
<msg time="2026-04-19T02:00:35.611643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:35.296653" elapsed="0.315078"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:35.294699" elapsed="0.317309"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:35.613505" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:35.635565" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:35.636116" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:35.636446" 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-19T02:00:35.613112" elapsed="0.023541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:35.638905" elapsed="0.000975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:35.641469" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:35.640767" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:35.642285" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:35.641860" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:35.641774" elapsed="0.000707"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:35.642983" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T02:00:35.642690" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:35.642621" elapsed="0.000768"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:35.643507" elapsed="0.000055"/>
</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-19T02:00:35.649884" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:35.650554" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:35.650912" 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-19T02:00:35.645471" elapsed="0.005672"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:35.283565" elapsed="0.367811"/>
</kw>
<msg time="2026-04-19T02:00:35.651678" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:35.282551" elapsed="0.369189"/>
</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-19T02:00:35.281785" elapsed="0.370037"/>
</kw>
<msg time="2026-04-19T02:00:35.651863" 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-19T02:00:35.281066" elapsed="0.370844"/>
</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-19T02:00:35.655235" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:00:35.655724" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:35.656019" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:35.652284" elapsed="0.003900"/>
</kw>
<msg time="2026-04-19T02:00:35.656275" level="INFO">${output} = 1</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-19T02:00:35.279520" elapsed="0.376780"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:35.656726" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:35.656476" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:35.656813" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:35.656965" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:35.277350" elapsed="0.379640"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:35.657064" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:00:35.657214" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:35.275191" elapsed="0.382047"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:35.657786" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:35.657393" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:35.274077" elapsed="0.383896">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:37.661440" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:37.660673" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:37.663580" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:37.662943" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:37.665354" 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-19T02:00:37.665496" 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-19T02:00:37.665124" elapsed="0.000409"/>
</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-19T02:00:37.670990" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:37.670359" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:37.670283" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:37.673439" 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-19T02:00:37.673688" 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-19T02:00:37.672609" elapsed="0.001180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:37.675349" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:37.674787" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:37.677201" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:37.676462" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:37.679607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:37.679686" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:37.679321" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:37.679917" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:37.681375" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:37.994243" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:37.681021" elapsed="0.313481"/>
</kw>
<msg time="2026-04-19T02:00:37.994668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:37.680648" elapsed="0.314192"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:37.678524" elapsed="0.316946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:37.997937" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:38.020452" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:38.020702" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:38.020853" 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-19T02:00:37.997527" elapsed="0.023423"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:38.021960" elapsed="0.000437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:38.023460" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:38.022968" 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-19T02:00:38.024004" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:38.023756" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:38.023695" elapsed="0.000463"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:38.024522" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:00:38.024304" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:38.024255" elapsed="0.000426"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:38.024760" 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-19T02:00:38.029474" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:38.030022" elapsed="0.000284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:38.030503" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:38.026137" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:37.668395" elapsed="0.362540"/>
</kw>
<msg time="2026-04-19T02:00:38.031264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:37.667249" elapsed="0.364071"/>
</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-19T02:00:37.666490" elapsed="0.364912"/>
</kw>
<msg time="2026-04-19T02:00:38.031442" 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-19T02:00:37.665752" elapsed="0.365736"/>
</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-19T02:00:38.034606" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:00:38.035148" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:38.035443" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:38.031778" elapsed="0.003812"/>
</kw>
<msg time="2026-04-19T02:00:38.035812" level="INFO">${output} = 1</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-19T02:00:37.664150" elapsed="0.371689"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:38.036287" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:38.036018" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:38.036375" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:38.036556" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:37.661964" elapsed="0.374618"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:38.036630" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:38.036775" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:37.659800" elapsed="0.376999"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:38.037366" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:38.036956" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:37.658735" elapsed="0.378815">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:40.041420" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:40.040566" elapsed="0.000924"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:40.043593" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:40.042960" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:40.045634" 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-19T02:00:40.045861" 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-19T02:00:40.045285" elapsed="0.000634"/>
</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-19T02:00:40.051979" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:40.051472" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:40.051383" elapsed="0.000758"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:40.053822" 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-19T02:00:40.054083" 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-19T02:00:40.053135" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:40.055693" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:40.055158" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:40.057505" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:40.056791" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:40.059907" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:40.059984" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:40.059622" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:40.060232" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:40.061840" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:40.374356" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:40.061332" elapsed="0.313256"/>
</kw>
<msg time="2026-04-19T02:00:40.374669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:40.060953" elapsed="0.313803"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:40.058787" elapsed="0.316264"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:40.376508" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:40.399267" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:40.399775" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:40.400154" 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-19T02:00:40.376121" elapsed="0.024243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:40.402593" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:40.405741" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:40.404717" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:40.406844" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:40.406347" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:40.406226" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:40.407937" elapsed="0.000144"/>
</return>
<status status="PASS" start="2026-04-19T02:00:40.407495" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:40.407386" elapsed="0.000933"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:40.408496" elapsed="0.000082"/>
</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-19T02:00:40.416118" 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-19T02:00:40.416690" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:40.417143" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:40.411955" elapsed="0.005402"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:40.049986" elapsed="0.367590"/>
</kw>
<msg time="2026-04-19T02:00:40.417881" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:40.048733" elapsed="0.369210"/>
</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-19T02:00:40.047474" elapsed="0.370566"/>
</kw>
<msg time="2026-04-19T02:00:40.418085" 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-19T02:00:40.046308" elapsed="0.371825"/>
</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-19T02:00:40.421233" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:40.421720" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:40.422017" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:40.418424" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T02:00:40.422286" level="INFO">${output} = 1</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-19T02:00:40.044164" elapsed="0.378147"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:40.422772" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:40.422519" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:40.422862" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:00:40.423018" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:40.042007" elapsed="0.381054"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:40.423108" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:40.423253" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:40.039626" elapsed="0.383651"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:40.424018" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:40.423613" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:40.038489" elapsed="0.385740">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:42.427939" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:42.427167" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:42.430239" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:42.429530" elapsed="0.000780"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:42.431832" 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-19T02:00:42.431980" 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-19T02:00:42.431604" elapsed="0.000415"/>
</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-19T02:00:42.438087" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:42.436968" elapsed="0.001255"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:42.436891" elapsed="0.001437"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:42.440417" 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-19T02:00:42.440774" 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-19T02:00:42.439746" elapsed="0.001171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:42.442924" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:42.442353" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:42.444860" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:42.444133" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:42.447332" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:42.447413" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:42.447024" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:42.447670" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:42.449108" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:42.765182" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:42.448760" elapsed="0.316571"/>
</kw>
<msg time="2026-04-19T02:00:42.765414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:42.448374" elapsed="0.317128"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:42.446222" elapsed="0.319557"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:42.767267" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:42.789731" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:42.790361" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:42.790703" 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-19T02:00:42.766855" elapsed="0.024072"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:42.793300" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:42.796590" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:42.795557" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:42.797759" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:42.797241" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:42.797095" elapsed="0.001019"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:42.798924" elapsed="0.000284"/>
</return>
<status status="PASS" start="2026-04-19T02:00:42.798468" elapsed="0.000922"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:42.798358" elapsed="0.001169"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:42.799705" elapsed="0.000091"/>
</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-19T02:00:42.804926" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T02:00:42.805520" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:42.805887" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:42.801413" elapsed="0.004709"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:42.434966" elapsed="0.371402"/>
</kw>
<msg time="2026-04-19T02:00:42.806674" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:42.433938" elapsed="0.372797"/>
</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-19T02:00:42.433149" elapsed="0.373672"/>
</kw>
<msg time="2026-04-19T02:00:42.806863" 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-19T02:00:42.432370" elapsed="0.374540"/>
</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-19T02:00:42.810113" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:00:42.810617" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:42.810916" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:42.807298" elapsed="0.003892"/>
</kw>
<msg time="2026-04-19T02:00:42.811285" level="INFO">${output} = 1</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-19T02:00:42.430808" elapsed="0.380505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:42.811759" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:42.811505" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:42.811847" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:00:42.812002" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:42.428541" elapsed="0.383503"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:42.812093" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:42.812241" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:42.426278" elapsed="0.385988"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:42.812840" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:42.812435" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:42.424987" elapsed="0.388060">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:44.816706" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:44.815887" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:44.819137" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:44.818467" elapsed="0.000734"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:44.821215" 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-19T02:00:44.821498" 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-19T02:00:44.820706" elapsed="0.000855"/>
</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-19T02:00:44.826418" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:44.825899" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:44.825606" elapsed="0.000965"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:44.828064" 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-19T02:00:44.828312" 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-19T02:00:44.827582" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:44.829986" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:44.829412" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:44.831840" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:44.831126" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:44.834393" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:44.834472" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:44.834101" 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-19T02:00:44.834723" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:44.836015" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:45.145014" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:44.835684" elapsed="0.309511"/>
</kw>
<msg time="2026-04-19T02:00:45.145277" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:44.835308" elapsed="0.310060"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:44.833255" elapsed="0.312387"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:45.147138" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:45.169676" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:45.170211" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:45.170535" 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-19T02:00:45.146735" elapsed="0.024011"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:45.172951" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:45.176112" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:45.175124" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:45.177331" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:45.176692" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:45.176571" elapsed="0.001063"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:45.178440" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:00:45.177954" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:45.177847" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:45.178968" elapsed="0.000295"/>
</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-19T02:00:45.184513" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:00:45.185070" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:45.185428" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:45.181165" elapsed="0.004470"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:44.824220" elapsed="0.361636"/>
</kw>
<msg time="2026-04-19T02:00:45.186176" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:44.823472" elapsed="0.362762"/>
</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-19T02:00:44.822885" elapsed="0.363430"/>
</kw>
<msg time="2026-04-19T02:00:45.186357" 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-19T02:00:44.821926" elapsed="0.364482"/>
</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-19T02:00:45.189433" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:00:45.189912" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:45.190229" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:45.186698" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T02:00:45.190475" level="INFO">${output} = 1</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-19T02:00:44.819705" elapsed="0.370796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:45.190929" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:45.190680" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:45.191016" elapsed="0.000127"/>
</return>
<msg time="2026-04-19T02:00:45.191271" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:44.817449" elapsed="0.373848"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:45.191345" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:45.191491" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:44.815012" elapsed="0.376504"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:45.192105" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:45.191674" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:44.813846" elapsed="0.378443">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:47.196580" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:47.195509" elapsed="0.001161"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:47.198952" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:47.198279" elapsed="0.000738"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:47.200919" 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-19T02:00:47.201355" 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-19T02:00:47.200570" elapsed="0.000852"/>
</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-19T02:00:47.209511" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:47.208846" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:47.208476" elapsed="0.001229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:47.211675" 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-19T02:00:47.211920" 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-19T02:00:47.211136" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:47.213586" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:47.213042" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:47.215462" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:47.214696" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:47.217827" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:47.217905" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:47.217545" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:47.218156" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:47.219556" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:47.534415" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:47.219230" elapsed="0.315365"/>
</kw>
<msg time="2026-04-19T02:00:47.534704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:47.218728" elapsed="0.316097"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:47.216764" elapsed="0.318439"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:47.536920" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:47.559777" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:47.560330" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:47.560667" 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-19T02:00:47.536502" elapsed="0.024373"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:47.563272" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:47.566497" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:47.565473" elapsed="0.001173"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:47.567215" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:47.566868" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:47.566790" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:47.567873" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:00:47.567597" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:47.567531" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:47.568224" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:47.577200" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:47.577991" elapsed="0.000283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:47.578468" 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-19T02:00:47.570321" elapsed="0.008355"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:47.206007" elapsed="0.372888"/>
</kw>
<msg time="2026-04-19T02:00:47.579220" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:47.204443" elapsed="0.374834"/>
</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-19T02:00:47.203112" elapsed="0.376245"/>
</kw>
<msg time="2026-04-19T02:00:47.579397" 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-19T02:00:47.201806" elapsed="0.377637"/>
</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-19T02:00:47.582431" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:00:47.582906" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:47.583218" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:47.579738" elapsed="0.003626"/>
</kw>
<msg time="2026-04-19T02:00:47.583453" level="INFO">${output} = 1</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-19T02:00:47.199565" elapsed="0.383912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:47.583899" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:47.583654" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:47.583985" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:47.584151" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:47.197269" elapsed="0.386907"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:47.584222" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:00:47.584361" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:47.194380" elapsed="0.390005"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:47.584928" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:47.584538" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:47.193146" elapsed="0.391982">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:49.588711" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:49.587931" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:49.590888" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:49.590226" elapsed="0.000725"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:49.592366" 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-19T02:00:49.592508" 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-19T02:00:49.592133" elapsed="0.000412"/>
</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-19T02:00:49.597839" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:49.597203" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:49.597123" elapsed="0.001018"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:49.600503" 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-19T02:00:49.600849" 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-19T02:00:49.599542" elapsed="0.001448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:49.603206" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:49.602373" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:49.605228" 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-19T02:00:49.604495" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:49.607712" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:49.607789" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:49.607426" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:49.608040" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:49.609316" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:49.978300" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:49.608975" elapsed="0.369477"/>
</kw>
<msg time="2026-04-19T02:00:49.978541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:49.608615" elapsed="0.370017"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:49.606582" elapsed="0.372332"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:49.980420" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:50.003189" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:50.003422" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:50.003571" 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-19T02:00:49.980006" elapsed="0.023659"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:50.004675" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:50.006176" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:50.005709" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:50.006696" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:50.006450" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:50.006389" elapsed="0.000446"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:50.007207" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:00:50.006983" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:50.006933" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:50.007451" 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-19T02:00:50.012401" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:00:50.012955" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:50.013337" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:50.008784" elapsed="0.004762"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:49.595278" elapsed="0.418527"/>
</kw>
<msg time="2026-04-19T02:00:50.014242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:49.594270" elapsed="0.420036"/>
</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-19T02:00:49.593507" elapsed="0.420883"/>
</kw>
<msg time="2026-04-19T02:00:50.014431" 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-19T02:00:49.592766" elapsed="0.421711"/>
</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-19T02:00:50.017566" 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-19T02:00:50.018071" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:50.018371" 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-19T02:00:50.014775" elapsed="0.003751"/>
</kw>
<msg time="2026-04-19T02:00:50.018638" level="INFO">${output} = 1</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-19T02:00:49.591473" elapsed="0.427197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:50.019125" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:50.018856" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:50.019215" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:00:50.019368" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:49.589270" elapsed="0.430124"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:50.019441" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:50.019586" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:49.587020" elapsed="0.432591"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:50.020199" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:50.019769" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:49.585904" elapsed="0.434477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:52.023761" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:52.023016" elapsed="0.000813"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:52.025823" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:52.025274" elapsed="0.000589"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:52.027095" 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-19T02:00:52.027248" 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-19T02:00:52.026845" elapsed="0.000443"/>
</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-19T02:00:52.032652" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:52.032005" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:52.031929" elapsed="0.000912"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:52.035174" 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-19T02:00:52.035519" 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-19T02:00:52.034234" elapsed="0.001428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:52.037764" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:52.037001" elapsed="0.000871"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:52.039871" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:52.039184" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:52.042381" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:52.042459" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:52.042099" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:52.042693" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:52.044093" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:52.357870" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:52.043753" elapsed="0.314273"/>
</kw>
<msg time="2026-04-19T02:00:52.358135" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:52.043385" elapsed="0.314841"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:52.041325" elapsed="0.317187"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:52.359998" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:52.382941" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:52.383480" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:52.383810" 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-19T02:00:52.359610" elapsed="0.024409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:52.386284" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:52.389453" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:52.388441" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:52.390575" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:52.390061" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:52.389910" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:52.391669" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:00:52.391223" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:52.391116" elapsed="0.000902"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:52.392348" elapsed="0.000082"/>
</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-19T02:00:52.400064" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:00:52.400632" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:52.400996" 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-19T02:00:52.395305" elapsed="0.005932"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:52.030120" elapsed="0.371340"/>
</kw>
<msg time="2026-04-19T02:00:52.401770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:52.029108" elapsed="0.372720"/>
</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-19T02:00:52.028299" elapsed="0.373610"/>
</kw>
<msg time="2026-04-19T02:00:52.401949" 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-19T02:00:52.027521" elapsed="0.374475"/>
</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-19T02:00:52.405304" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:00:52.405788" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:52.406101" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:52.402371" elapsed="0.003882"/>
</kw>
<msg time="2026-04-19T02:00:52.406344" level="INFO">${output} = 1</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-19T02:00:52.026206" elapsed="0.380164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:52.406795" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:52.406548" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:52.406883" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:00:52.407051" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:52.024305" elapsed="0.382773"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:52.407126" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:52.407271" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:52.022227" elapsed="0.385068"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:52.407849" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:52.407450" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:52.021194" elapsed="0.386900">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:54.411896" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:54.411152" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:54.414072" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:54.413414" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:54.415981" 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-19T02:00:54.416242" 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-19T02:00:54.415652" elapsed="0.000650"/>
</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-19T02:00:54.421607" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:54.421141" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:54.421081" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:54.423473" 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-19T02:00:54.423725" 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-19T02:00:54.422761" elapsed="0.001065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:54.425394" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:54.424817" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:54.427216" 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-19T02:00:54.426499" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:54.429660" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:54.429763" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:54.429379" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:54.430004" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:54.431344" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:54.744677" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:54.431002" elapsed="0.313831"/>
</kw>
<msg time="2026-04-19T02:00:54.744920" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:54.430639" elapsed="0.314368"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:54.428522" elapsed="0.316807"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:54.746839" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:54.770194" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:54.770677" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:54.770998" 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-19T02:00:54.746433" elapsed="0.024820"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:54.773452" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:54.776633" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:54.775627" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:54.777786" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:54.777267" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:54.777140" elapsed="0.001006"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:54.778899" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:00:54.778460" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:54.778355" elapsed="0.000917"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:54.779442" elapsed="0.000080"/>
</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-19T02:00:54.786416" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:00:54.786975" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:54.787349" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:54.782437" elapsed="0.005120"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:54.419739" elapsed="0.368038"/>
</kw>
<msg time="2026-04-19T02:00:54.788154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:54.419040" elapsed="0.369177"/>
</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-19T02:00:54.417878" elapsed="0.370421"/>
</kw>
<msg time="2026-04-19T02:00:54.788341" 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-19T02:00:54.416654" elapsed="0.371732"/>
</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-19T02:00:54.791381" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:54.791886" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:54.792278" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:54.788675" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T02:00:54.792691" level="INFO">${output} = 1</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-19T02:00:54.414698" elapsed="0.378021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:54.793172" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:54.792902" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:54.793277" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:00:54.793434" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:54.412454" elapsed="0.381006"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:54.793507" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:00:54.793665" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:54.410154" elapsed="0.383536"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:54.794261" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:54.793849" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:54.408927" elapsed="0.385520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:56.797970" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:56.797218" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:56.800140" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:56.799497" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:56.801989" 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-19T02:00:56.802370" 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-19T02:00:56.801637" elapsed="0.000796"/>
</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-19T02:00:56.808577" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:56.807590" elapsed="0.001099"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:56.807510" elapsed="0.001264"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:56.810766" 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-19T02:00:56.811141" 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-19T02:00:56.810156" elapsed="0.001124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:56.813601" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:56.812648" elapsed="0.001108"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:56.816233" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:56.815398" elapsed="0.000933"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:56.818629" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:56.818706" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:56.818313" 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-19T02:00:56.818943" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:56.820396" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:57.137086" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:56.820070" elapsed="0.317264"/>
</kw>
<msg time="2026-04-19T02:00:57.137420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:56.819697" elapsed="0.317817"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:56.817540" elapsed="0.320254"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:57.139326" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:57.161900" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:57.162524" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:57.162908" 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-19T02:00:57.138895" elapsed="0.024379"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:57.165839" elapsed="0.001134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:57.169833" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:57.168721" elapsed="0.001473"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:57.171093" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:57.170552" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:57.170427" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:57.172258" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T02:00:57.171741" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:57.171621" elapsed="0.001014"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:57.172821" elapsed="0.000089"/>
</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-19T02:00:57.179438" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:00:57.179989" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:57.180366" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:57.175962" elapsed="0.004615"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:56.805636" elapsed="0.375164"/>
</kw>
<msg time="2026-04-19T02:00:57.181130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:56.804687" elapsed="0.376503"/>
</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-19T02:00:56.803920" elapsed="0.377353"/>
</kw>
<msg time="2026-04-19T02:00:57.181314" 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-19T02:00:56.802786" elapsed="0.378575"/>
</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-19T02:00:57.184424" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:00:57.184908" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:57.185224" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:57.181652" elapsed="0.003722"/>
</kw>
<msg time="2026-04-19T02:00:57.185466" level="INFO">${output} = 1</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-19T02:00:56.800689" elapsed="0.384803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:57.185918" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:57.185670" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:57.186006" elapsed="0.000104"/>
</return>
<msg time="2026-04-19T02:00:57.186239" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:56.798543" elapsed="0.387722"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:57.186313" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:57.186459" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:56.796368" elapsed="0.390116"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:57.187104" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:57.186693" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:56.795297" elapsed="0.392016">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:00:59.190689" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:00:59.189914" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:00:59.192769" level="INFO">${member_ip} = 10.30.171.128</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-19T02:00:59.192169" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:59.194627" 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-19T02:00:59.194853" 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-19T02:00:59.194306" elapsed="0.000598"/>
</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-19T02:00:59.200794" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:00:59.200117" elapsed="0.000795"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:59.199696" elapsed="0.001304"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:59.203170" 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-19T02:00:59.203527" 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-19T02:00:59.202475" elapsed="0.001197"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:59.205927" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:59.205119" elapsed="0.000990"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:00:59.208139" 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-19T02:00:59.207427" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:00:59.210529" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:00:59.210607" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:00:59.210241" 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-19T02:00:59.210844" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:00:59.212302" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:00:59.522267" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:00:59.211959" elapsed="0.310460"/>
</kw>
<msg time="2026-04-19T02:00:59.522502" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:59.211595" elapsed="0.310994"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:00:59.209436" elapsed="0.313433"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:00:59.524370" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:00:59.547594" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:00:59.548145" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:00:59.548484" 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-19T02:00:59.523955" elapsed="0.024743"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:59.550968" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:59.554276" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:59.553177" elapsed="0.001335"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:59.555218" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:00:59.554861" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:59.554738" elapsed="0.000665"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:00:59.555886" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:00:59.555606" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:00:59.555535" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:00:59.556242" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:59.562956" 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-19T02:00:59.563768" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:59.564322" elapsed="0.000173"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:59.558266" elapsed="0.006380"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:00:59.197721" elapsed="0.367234"/>
</kw>
<msg time="2026-04-19T02:00:59.565742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:00:59.196732" elapsed="0.369093"/>
</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-19T02:00:59.195921" elapsed="0.370017"/>
</kw>
<msg time="2026-04-19T02:00:59.565994" 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-19T02:00:59.195155" elapsed="0.371019"/>
</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-19T02:00:59.569411" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:00:59.569886" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:00:59.570255" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:00:59.566653" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T02:00:59.570493" level="INFO">${output} = 1</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-19T02:00:59.193335" elapsed="0.377184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:00:59.570943" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:00:59.570696" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:00:59.571043" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:00:59.571198" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:00:59.191235" elapsed="0.379989"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:00:59.571271" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:00:59.571415" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:00:59.189114" elapsed="0.382326"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:00:59.571987" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:00:59.571596" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:00:59.188096" elapsed="0.384095">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:01.575876" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:01.575096" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:01.578206" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:01.577563" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:01.579369" 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-19T02:01:01.579516" 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-19T02:01:01.579146" elapsed="0.000407"/>
</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-19T02:01:01.585135" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:01.584467" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:01.584103" elapsed="0.001228"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:01.587402" 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-19T02:01:01.587740" 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-19T02:01:01.586759" elapsed="0.001124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:01.590074" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:01.589267" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:01.592018" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:01.591324" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:01.594435" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:01.594513" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:01.594155" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:01.594747" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:01.596202" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:01.909989" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:00:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:01.595820" elapsed="0.314344"/>
</kw>
<msg time="2026-04-19T02:01:01.910252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:01.595446" elapsed="0.314898"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:01.593345" elapsed="0.317282"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:01.912140" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:01.934718" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:01.935062" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:01.935276" 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-19T02:01:01.911724" elapsed="0.023688"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:01.936796" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:01.938821" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:01.938217" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:01.939634" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:01.939220" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:01.939139" elapsed="0.000684"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:01.940341" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:01:01.940027" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:01.939959" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:01.940679" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:01.949653" 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-19T02:01:01.950345" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:01.950700" 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-19T02:01:01.942604" elapsed="0.008303"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:01.582258" elapsed="0.368896"/>
</kw>
<msg time="2026-04-19T02:01:01.951461" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:01.581283" elapsed="0.370234"/>
</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-19T02:01:01.580517" elapsed="0.371080"/>
</kw>
<msg time="2026-04-19T02:01:01.951637" 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-19T02:01:01.579777" elapsed="0.371904"/>
</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-19T02:01:01.954817" 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-19T02:01:01.955311" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:01.955603" 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-19T02:01:01.951972" elapsed="0.003778"/>
</kw>
<msg time="2026-04-19T02:01:01.955840" level="INFO">${output} = 1</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-19T02:01:01.578549" elapsed="0.377316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:01.956304" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:01.956056" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:01.956391" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:01.956540" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:01.576607" elapsed="0.379958"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:01.956610" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:01:01.956750" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:01.574248" elapsed="0.382526"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:01.957331" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:01.956926" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:01.573069" elapsed="0.384443">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:03.961010" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:03.960268" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:03.963159" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:03.962523" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:03.964966" 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-19T02:01:03.965363" 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-19T02:01:03.964643" elapsed="0.000781"/>
</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-19T02:01:03.971017" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:03.970390" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:03.970313" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:03.973523" 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-19T02:01:03.973870" 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-19T02:01:03.972583" elapsed="0.001426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:03.976146" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:03.975372" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:03.978596" 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-19T02:01:03.977752" elapsed="0.000942"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:03.980933" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:03.981011" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:03.980650" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:03.981386" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:03.982662" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:04.334838" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:03.982337" elapsed="0.352658"/>
</kw>
<msg time="2026-04-19T02:01:04.335096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:03.981952" elapsed="0.353234"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:03.979885" elapsed="0.355584"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:04.336958" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:04.359781" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:04.360347" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:04.360709" 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-19T02:01:04.336568" elapsed="0.024365"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:04.363270" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:04.366465" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:04.365421" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:04.367590" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:04.367083" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:04.366918" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:04.368822" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:01:04.368373" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:04.368261" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:04.369386" elapsed="0.000082"/>
</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-19T02:01:04.376797" 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-19T02:01:04.377460" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:04.377832" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:04.372462" elapsed="0.005595"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:03.968398" elapsed="0.409886"/>
</kw>
<msg time="2026-04-19T02:01:04.378602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:03.967453" elapsed="0.411209"/>
</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-19T02:01:03.966686" elapsed="0.412058"/>
</kw>
<msg time="2026-04-19T02:01:04.378786" 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-19T02:01:03.965832" elapsed="0.413001"/>
</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-19T02:01:04.381909" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:01:04.382401" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:04.382695" 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-19T02:01:04.379230" elapsed="0.003612"/>
</kw>
<msg time="2026-04-19T02:01:04.382933" level="INFO">${output} = 1</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-19T02:01:03.963700" elapsed="0.419259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:04.383412" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:04.383163" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:04.383499" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:04.383788" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:03.961587" elapsed="0.422232"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:04.383871" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:01:04.384020" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:03.959415" elapsed="0.424648"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:04.384623" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:04.384229" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:03.958372" elapsed="0.426437">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:06.388299" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:06.387521" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:06.390522" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:06.389829" elapsed="0.000770"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:06.392992" 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-19T02:01:06.393413" 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-19T02:01:06.392588" elapsed="0.000890"/>
</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-19T02:01:06.399221" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:06.398542" elapsed="0.000891"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:06.398465" elapsed="0.001053"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:06.401896" 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-19T02:01:06.402299" 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-19T02:01:06.400907" elapsed="0.001493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:06.403939" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:06.403389" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:06.405767" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:06.405056" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:06.408268" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:06.408348" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:06.407965" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:06.408589" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:06.410455" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:06.722915" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:06.409915" elapsed="0.313182"/>
</kw>
<msg time="2026-04-19T02:01:06.723188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:06.409284" elapsed="0.313999"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:06.407189" elapsed="0.316387"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:06.725056" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:06.747929" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:06.748683" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:06.749075" 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-19T02:01:06.724644" elapsed="0.024681"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:06.751894" elapsed="0.001061"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:06.755477" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:06.754410" elapsed="0.001306"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:06.756653" elapsed="0.000121"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:06.756121" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:06.755953" elapsed="0.001072"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:06.758229" elapsed="0.000156"/>
</return>
<status status="PASS" start="2026-04-19T02:01:06.757430" elapsed="0.001078"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:06.757308" elapsed="0.001345"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:06.758935" elapsed="0.000142"/>
</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-19T02:01:06.766304" 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-19T02:01:06.766886" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:06.767335" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:06.762428" elapsed="0.005134"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:06.396574" elapsed="0.371221"/>
</kw>
<msg time="2026-04-19T02:01:06.768264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:06.395582" elapsed="0.372753"/>
</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-19T02:01:06.394792" elapsed="0.373629"/>
</kw>
<msg time="2026-04-19T02:01:06.768464" 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-19T02:01:06.393860" elapsed="0.374652"/>
</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-19T02:01:06.771795" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:01:06.772317" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:06.772622" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:06.768814" elapsed="0.003959"/>
</kw>
<msg time="2026-04-19T02:01:06.772867" level="INFO">${output} = 1</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-19T02:01:06.391285" elapsed="0.381609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:06.773364" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:06.773106" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:06.773456" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:01:06.773615" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:06.388821" elapsed="0.384820"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:06.773690" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:01:06.773839" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:06.386691" elapsed="0.387197"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:06.774529" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:06.774115" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:06.385614" elapsed="0.389107">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:08.778493" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:08.777556" elapsed="0.001009"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:08.780146" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:08.779718" elapsed="0.000468"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:08.781558" 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-19T02:01:08.781705" 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-19T02:01:08.781323" elapsed="0.000421"/>
</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-19T02:01:08.787308" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:08.786634" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:08.786554" elapsed="0.000956"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:08.789941" 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-19T02:01:08.790379" 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-19T02:01:08.788954" elapsed="0.001574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:08.792313" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:08.791727" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:08.794301" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:08.793501" elapsed="0.000916"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:08.796775" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:08.796855" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:08.796485" 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-19T02:01:08.797114" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:08.798563" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:09.113103" 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 Sun Apr 19 02:00:08 UTC 2026

  System load:  0.02               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:08.798197" elapsed="0.315145"/>
</kw>
<msg time="2026-04-19T02:01:09.113496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:08.797686" elapsed="0.315965"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:08.795647" elapsed="0.318592"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:09.117350" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:09.140710" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:09.141326" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:09.141704" 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-19T02:01:09.116561" elapsed="0.025448"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:09.144677" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:09.148508" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:09.147214" elapsed="0.001596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:09.149968" elapsed="0.000242"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:09.149305" elapsed="0.001050"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:09.149144" elapsed="0.001404"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:09.151416" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:01:09.150885" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:09.150775" elapsed="0.000854"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:09.151741" elapsed="0.000049"/>
</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-19T02:01:09.157734" elapsed="0.000436"/>
</kw>
<kw name="Open 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-19T02:01:09.158388" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:09.158837" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:09.153163" elapsed="0.005912"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:08.784609" elapsed="0.374694"/>
</kw>
<msg time="2026-04-19T02:01:09.159610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:08.783567" elapsed="0.376103"/>
</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-19T02:01:08.782783" elapsed="0.376970"/>
</kw>
<msg time="2026-04-19T02:01:09.159795" 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-19T02:01:08.781968" elapsed="0.377873"/>
</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-19T02:01:09.162999" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:09.163502" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:09.163797" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:09.160321" elapsed="0.003624"/>
</kw>
<msg time="2026-04-19T02:01:09.164099" level="INFO">${output} = 1</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-19T02:01:08.780527" elapsed="0.383601"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:09.164567" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:09.164317" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:09.164654" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:01:09.164809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:08.779088" elapsed="0.385746"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:09.164881" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:09.165027" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:08.776690" elapsed="0.388380"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:09.165628" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:09.165232" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:08.775585" elapsed="0.390229">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:11.169544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:11.168758" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:11.171572" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:11.171020" elapsed="0.000589"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:11.172757" 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-19T02:01:11.172907" 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-19T02:01:11.172529" elapsed="0.000415"/>
</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-19T02:01:11.178759" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:11.177755" elapsed="0.001120"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:11.177678" elapsed="0.001281"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:11.181164" 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-19T02:01:11.181510" 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-19T02:01:11.180477" elapsed="0.001211"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:11.183898" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:11.183258" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:11.185876" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:11.185166" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:11.188387" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:11.188467" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:11.188017" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:11.188708" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:11.190267" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:11.765908" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:11.189892" elapsed="0.576180"/>
</kw>
<msg time="2026-04-19T02:01:11.766155" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:11.189523" elapsed="0.576717"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:11.187209" elapsed="0.579300"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:11.767982" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:11.790519" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:11.791011" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:11.791410" 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-19T02:01:11.767597" elapsed="0.024027"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:11.793840" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:11.797093" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:11.796123" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:11.798208" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:11.797677" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:11.797551" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:11.799487" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:01:11.798818" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:11.798711" elapsed="0.001126"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:11.800008" elapsed="0.000115"/>
</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-19T02:01:11.805072" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:01:11.805625" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:11.805983" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:11.801597" elapsed="0.004614"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:11.175782" elapsed="0.630651"/>
</kw>
<msg time="2026-04-19T02:01:11.806741" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:11.174754" elapsed="0.632047"/>
</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-19T02:01:11.173938" elapsed="0.632946"/>
</kw>
<msg time="2026-04-19T02:01:11.806924" 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-19T02:01:11.173192" elapsed="0.633778"/>
</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-19T02:01:11.810018" 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-19T02:01:11.810516" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:11.810810" 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-19T02:01:11.807366" elapsed="0.003592"/>
</kw>
<msg time="2026-04-19T02:01:11.811242" level="INFO">${output} = 1</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-19T02:01:11.171918" elapsed="0.639352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:11.811706" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:11.811454" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:11.811797" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:01:11.811962" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:11.170104" elapsed="0.641884"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:11.812052" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:01:11.812203" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:11.167902" elapsed="0.644327"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:11.812785" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:11.812388" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:11.166753" elapsed="0.646214">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:13.816450" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:13.815636" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:13.818552" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:13.817918" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:13.820512" 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-19T02:01:13.820739" 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-19T02:01:13.820181" elapsed="0.000618"/>
</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-19T02:01:13.826895" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:13.826425" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:13.826131" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:13.828478" 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-19T02:01:13.828720" 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-19T02:01:13.828026" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:13.830384" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:13.829821" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:13.832197" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:13.831463" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:13.834576" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:13.834655" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:13.834294" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:13.834901" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:13.836224" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:14.150759" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:13.835877" elapsed="0.315125"/>
</kw>
<msg time="2026-04-19T02:01:14.151105" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:13.835490" elapsed="0.315709"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:13.833499" elapsed="0.317974"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:14.152949" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:14.176014" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:14.176550" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:14.176885" 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-19T02:01:14.152565" elapsed="0.024573"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:14.179360" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:14.181753" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:14.181151" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:14.182513" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:14.182176" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:14.182092" elapsed="0.000606"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:14.183201" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:01:14.182898" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:14.182830" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:14.183537" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:14.189990" elapsed="0.000598"/>
</kw>
<kw name="Open 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-19T02:01:14.190883" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:14.191400" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:14.185383" elapsed="0.006307"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:13.824808" elapsed="0.367248"/>
</kw>
<msg time="2026-04-19T02:01:14.192486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:13.823575" elapsed="0.368968"/>
</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-19T02:01:13.822355" elapsed="0.370270"/>
</kw>
<msg time="2026-04-19T02:01:14.192666" 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-19T02:01:13.821184" elapsed="0.371528"/>
</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-19T02:01:14.195896" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:01:14.196414" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:14.196707" 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-19T02:01:14.193003" elapsed="0.003850"/>
</kw>
<msg time="2026-04-19T02:01:14.196945" level="INFO">${output} = 1</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-19T02:01:13.819171" elapsed="0.377799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:14.197411" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:14.197163" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:14.197500" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:14.197651" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:13.816976" elapsed="0.380701"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:14.197724" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:14.197869" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:13.814763" elapsed="0.383131"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:14.198528" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:14.198133" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:13.813709" elapsed="0.384999">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:16.202525" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:16.201692" elapsed="0.000908"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:16.204797" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:16.204125" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:16.206912" 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-19T02:01:16.207231" 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-19T02:01:16.206570" elapsed="0.000729"/>
</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-19T02:01:16.212710" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:16.212207" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:16.211900" elapsed="0.000954"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:16.214315" 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-19T02:01:16.214567" 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-19T02:01:16.213858" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:16.216237" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:16.215655" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:16.218076" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:16.217355" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:16.220535" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:16.220637" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:16.220229" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:16.220875" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:16.222156" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:16.568598" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:16.221811" elapsed="0.346924"/>
</kw>
<msg time="2026-04-19T02:01:16.568806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:16.221447" elapsed="0.347441"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:16.219384" elapsed="0.349776"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:16.570586" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:16.593382" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:16.593873" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:16.594250" 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-19T02:01:16.570214" elapsed="0.024246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:16.596634" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:16.598903" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:16.598318" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:16.599611" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:16.599293" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:16.599215" elapsed="0.000582"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:16.600314" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T02:01:16.599996" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:16.599930" elapsed="0.000605"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:16.600644" elapsed="0.000082"/>
</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-19T02:01:16.609568" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:16.610133" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:16.610492" 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-19T02:01:16.602491" elapsed="0.008207"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:16.210568" elapsed="0.400349"/>
</kw>
<msg time="2026-04-19T02:01:16.611233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:16.209815" elapsed="0.401475"/>
</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-19T02:01:16.208988" elapsed="0.402381"/>
</kw>
<msg time="2026-04-19T02:01:16.611409" 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-19T02:01:16.207678" elapsed="0.403777"/>
</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-19T02:01:16.614521" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:01:16.614995" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:16.615309" 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-19T02:01:16.611746" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T02:01:16.615543" level="INFO">${output} = 1</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-19T02:01:16.205543" elapsed="0.410024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:16.615987" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:16.615741" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:16.616091" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:16.616242" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:16.203118" elapsed="0.413149"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:16.616312" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:01:16.616453" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:16.200779" elapsed="0.415698"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:16.617135" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:16.616635" elapsed="0.000576">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:16.199564" elapsed="0.417757">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:18.620727" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:18.619975" elapsed="0.000821"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:18.623017" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:18.622413" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:18.624858" 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-19T02:01:18.625115" 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-19T02:01:18.624535" elapsed="0.000643"/>
</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-19T02:01:18.630937" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:18.630308" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:18.630229" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:18.633684" 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-19T02:01:18.634053" 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-19T02:01:18.632736" elapsed="0.001461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:18.636479" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:18.635710" elapsed="0.000924"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:18.639050" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:18.638135" elapsed="0.001019"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:18.641576" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:18.641654" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:18.641276" 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-19T02:01:18.641891" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:18.643165" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:18.956686" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:18.642822" elapsed="0.313955"/>
</kw>
<msg time="2026-04-19T02:01:18.956840" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:18.642461" elapsed="0.314455"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:18.640380" elapsed="0.316792"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:18.958546" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:18.981273" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:18.981813" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:18.982201" 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-19T02:01:18.958210" elapsed="0.024205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:18.984622" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:18.987750" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:18.986769" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:18.988930" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:18.988357" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:18.988237" elapsed="0.001028"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:18.990119" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:01:18.989636" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:18.989480" elapsed="0.000998"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:18.990618" 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-19T02:01:18.995338" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:01:18.995874" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:18.996239" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:18.991978" elapsed="0.004468"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:18.628348" elapsed="0.368318"/>
</kw>
<msg time="2026-04-19T02:01:18.997126" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:18.627384" elapsed="0.369798"/>
</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-19T02:01:18.626509" elapsed="0.370754"/>
</kw>
<msg time="2026-04-19T02:01:18.997303" 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-19T02:01:18.625650" elapsed="0.371699"/>
</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-19T02:01:19.000479" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:01:19.000951" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:19.001263" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:18.997657" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T02:01:19.001498" level="INFO">${output} = 1</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-19T02:01:18.623592" elapsed="0.377946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:19.001968" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:19.001722" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:19.002070" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:19.002220" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:18.621436" elapsed="0.380809"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:19.002290" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:19.002433" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:18.619172" elapsed="0.383285"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:19.003000" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:19.002613" elapsed="0.000560">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:18.618135" elapsed="0.385151">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:21.007243" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:21.006443" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:21.009440" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:21.008793" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:21.011339" 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-19T02:01:21.011715" 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-19T02:01:21.010979" elapsed="0.000799"/>
</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-19T02:01:21.017472" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:21.016965" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:21.016906" elapsed="0.000709"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:21.019357" 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-19T02:01:21.019614" 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-19T02:01:21.018650" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:21.021321" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:21.020706" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:21.023243" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:21.022475" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:21.025774" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:21.025855" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:21.025483" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:21.026109" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:21.027402" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:21.343385" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:21.027072" elapsed="0.316411"/>
</kw>
<msg time="2026-04-19T02:01:21.343551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:21.026698" elapsed="0.316928"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:21.024603" elapsed="0.319259"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:21.345261" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:21.367995" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:21.368529" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:21.368859" 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-19T02:01:21.344889" elapsed="0.024215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:21.371320" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:21.374400" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:21.373399" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:21.375516" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:21.374996" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:21.374878" elapsed="0.000921"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:21.376582" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:01:21.376142" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:21.376004" elapsed="0.000926"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:21.377138" elapsed="0.000090"/>
</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-19T02:01:21.382774" 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-19T02:01:21.383383" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:21.383743" 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-19T02:01:21.379404" elapsed="0.004547"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:21.015432" elapsed="0.368755"/>
</kw>
<msg time="2026-04-19T02:01:21.384490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:21.014709" elapsed="0.369837"/>
</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-19T02:01:21.013457" elapsed="0.371171"/>
</kw>
<msg time="2026-04-19T02:01:21.384669" 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-19T02:01:21.012190" elapsed="0.372526"/>
</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-19T02:01:21.387737" 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-19T02:01:21.388232" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:21.388528" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:21.385005" elapsed="0.003672"/>
</kw>
<msg time="2026-04-19T02:01:21.388767" level="INFO">${output} = 1</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-19T02:01:21.009986" elapsed="0.378806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:21.389235" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:21.388965" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:21.389323" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:21.389475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:21.007801" elapsed="0.381699"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:21.389547" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:21.389692" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:21.005481" elapsed="0.384236"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:21.390472" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:21.389873" elapsed="0.000674">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:21.004159" elapsed="0.386497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:23.394169" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:23.393402" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:23.396363" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:23.395727" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:23.398223" 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-19T02:01:23.398453" 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-19T02:01:23.397853" elapsed="0.000660"/>
</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-19T02:01:23.404467" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:23.403796" elapsed="0.000902"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:23.403720" elapsed="0.001065"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:23.407124" 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-19T02:01:23.407504" 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-19T02:01:23.406160" elapsed="0.001484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:23.409430" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:23.408848" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:23.411246" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:23.410512" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:23.413728" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:23.413807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:23.413442" 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-19T02:01:23.414059" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:23.415364" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:23.734720" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:23.414987" elapsed="0.319910"/>
</kw>
<msg time="2026-04-19T02:01:23.734986" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:23.414624" elapsed="0.320483"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:23.412567" elapsed="0.322893"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:23.736972" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:23.759682" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:23.760237" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:23.760569" 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-19T02:01:23.736568" elapsed="0.024213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:23.762977" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:23.766206" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:23.765216" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:23.767485" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:23.766785" elapsed="0.000872"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:23.766662" elapsed="0.001120"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:23.768581" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:01:23.768131" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:23.767993" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:23.769196" elapsed="0.000086"/>
</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-19T02:01:23.775600" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:01:23.776164" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:23.776526" 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-19T02:01:23.772073" elapsed="0.004664"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:23.401852" elapsed="0.375109"/>
</kw>
<msg time="2026-04-19T02:01:23.777368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:23.400894" elapsed="0.376535"/>
</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-19T02:01:23.399992" elapsed="0.377521"/>
</kw>
<msg time="2026-04-19T02:01:23.777555" 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-19T02:01:23.398861" elapsed="0.378740"/>
</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-19T02:01:23.780667" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:01:23.781158" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:23.781451" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:23.777893" elapsed="0.003704"/>
</kw>
<msg time="2026-04-19T02:01:23.781687" level="INFO">${output} = 1</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-19T02:01:23.396908" elapsed="0.384805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:23.782150" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:23.781888" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:23.782237" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:23.782388" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:23.394723" elapsed="0.387690"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:23.782460" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:01:23.782602" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:23.392562" elapsed="0.390064"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:23.783250" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:23.782780" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:23.391498" elapsed="0.391966">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:25.787152" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:25.786355" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:25.789181" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:25.788740" elapsed="0.000480"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:25.790388" 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-19T02:01:25.790545" 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-19T02:01:25.790160" elapsed="0.000426"/>
</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-19T02:01:25.796520" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:25.795469" elapsed="0.001170"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:25.795387" elapsed="0.001349"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:25.798306" 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-19T02:01:25.798562" 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-19T02:01:25.797830" elapsed="0.000837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:25.800487" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:25.799700" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:25.802620" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:25.801821" elapsed="0.000901"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:25.805161" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:25.805244" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:25.804815" elapsed="0.000455"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:25.805489" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:25.807005" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:26.164205" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:25.806675" elapsed="0.357696"/>
</kw>
<msg time="2026-04-19T02:01:26.164452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:25.806302" elapsed="0.358235"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:25.803966" elapsed="0.360843"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:26.166295" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:26.189072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:26.189615" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:26.189958" 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-19T02:01:26.165892" elapsed="0.024348"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:26.192577" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:26.195892" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:26.194868" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:26.197065" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:26.196651" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:26.196522" elapsed="0.000694"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:26.197584" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:01:26.197372" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:26.197321" elapsed="0.000432"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:26.197837" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:26.202775" 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-19T02:01:26.203364" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:26.203736" 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-19T02:01:26.199277" elapsed="0.004677"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:25.793434" elapsed="0.410771"/>
</kw>
<msg time="2026-04-19T02:01:26.204565" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:25.792430" elapsed="0.412198"/>
</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-19T02:01:25.791578" elapsed="0.413135"/>
</kw>
<msg time="2026-04-19T02:01:26.204756" 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-19T02:01:25.790812" elapsed="0.413993"/>
</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-19T02:01:26.208099" 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-19T02:01:26.208628" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:26.208934" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:26.205193" elapsed="0.003915"/>
</kw>
<msg time="2026-04-19T02:01:26.209213" level="INFO">${output} = 1</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-19T02:01:25.789539" elapsed="0.419700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:26.209696" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:26.209437" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:26.209787" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:01:26.209944" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:25.787708" elapsed="0.422262"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:26.210019" elapsed="0.000123"/>
</return>
<msg time="2026-04-19T02:01:26.210273" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:25.785491" elapsed="0.424809"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:26.210895" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:26.210481" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:25.784360" elapsed="0.426738">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:28.214727" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:28.213912" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:28.216930" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:28.216295" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:28.218647" 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-19T02:01:28.218791" 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-19T02:01:28.218421" elapsed="0.000408"/>
</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-19T02:01:28.224473" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:28.223800" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:28.223386" elapsed="0.001279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:28.226655" 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-19T02:01:28.226992" 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-19T02:01:28.226049" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:28.229316" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:28.228515" elapsed="0.000955"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:28.231380" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:28.230625" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:28.233750" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:28.233853" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:28.233448" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:28.234143" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:28.235658" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:28.552779" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:28.235301" elapsed="0.317609"/>
</kw>
<msg time="2026-04-19T02:01:28.552990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:28.234778" elapsed="0.318330"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:28.232657" elapsed="0.320751"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:28.554963" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:28.578794" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:28.579388" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:28.579743" 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-19T02:01:28.554556" elapsed="0.025412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:28.582650" elapsed="0.000985"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:28.586197" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:28.585097" elapsed="0.001359"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:28.587463" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:28.586857" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:28.586720" elapsed="0.001056"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:28.588885" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T02:01:28.588310" elapsed="0.000926"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:28.588009" elapsed="0.001424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:28.589627" elapsed="0.000089"/>
</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-19T02:01:28.594782" 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-19T02:01:28.595361" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:28.595724" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:28.591175" elapsed="0.004759"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:28.221529" elapsed="0.374699"/>
</kw>
<msg time="2026-04-19T02:01:28.596569" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:28.220555" elapsed="0.376078"/>
</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-19T02:01:28.219787" elapsed="0.376930"/>
</kw>
<msg time="2026-04-19T02:01:28.596758" 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-19T02:01:28.219071" elapsed="0.377734"/>
</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-19T02:01:28.599856" elapsed="0.000438"/>
</kw>
<kw name="Open 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-19T02:01:28.600462" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:28.600758" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:28.597116" elapsed="0.003790"/>
</kw>
<msg time="2026-04-19T02:01:28.601098" level="INFO">${output} = 1</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-19T02:01:28.217651" elapsed="0.383476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:28.601590" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:28.601329" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:28.601679" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:28.601838" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:28.215306" elapsed="0.386557"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:28.601912" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:01:28.602078" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:28.212982" elapsed="0.389121"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:28.602695" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:28.602265" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:28.211867" elapsed="0.391027">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:30.606562" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:30.605605" elapsed="0.001028"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:30.608807" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:30.608207" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:30.610709" 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-19T02:01:30.610936" 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-19T02:01:30.610379" elapsed="0.000609"/>
</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-19T02:01:30.616669" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:30.615999" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:30.615622" elapsed="0.001238"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:30.618862" 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-19T02:01:30.619260" 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-19T02:01:30.618259" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:30.620879" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:30.620343" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:30.623164" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:30.622386" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:30.625502" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:30.625580" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:30.625220" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:30.625817" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:30.627264" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:30.953322" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:30.626775" elapsed="0.326824"/>
</kw>
<msg time="2026-04-19T02:01:30.953688" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:30.626412" elapsed="0.327375"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:30.624444" elapsed="0.329672"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:30.955642" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:30.978648" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:30.979220" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:30.979562" 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-19T02:01:30.955241" elapsed="0.024533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:30.982131" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:30.985325" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:30.984333" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:30.987143" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:30.986598" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:30.986466" elapsed="0.000817"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:30.987643" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:01:30.987440" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:30.987389" elapsed="0.000414"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:30.987882" 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-19T02:01:30.994828" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:01:30.995398" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:30.995754" 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-19T02:01:30.989345" elapsed="0.006616"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:30.613678" elapsed="0.382593"/>
</kw>
<msg time="2026-04-19T02:01:30.996576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:30.612725" elapsed="0.383909"/>
</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-19T02:01:30.611960" elapsed="0.384753"/>
</kw>
<msg time="2026-04-19T02:01:30.996754" 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-19T02:01:30.611245" elapsed="0.385555"/>
</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-19T02:01:30.999846" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T02:01:31.000422" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:31.000713" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:30.997104" elapsed="0.003755"/>
</kw>
<msg time="2026-04-19T02:01:31.000949" level="INFO">${output} = 1</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-19T02:01:30.609380" elapsed="0.391594"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:31.001434" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:31.001169" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:31.001521" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:01:31.001672" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:30.607122" elapsed="0.394575"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:31.001743" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:01:31.001883" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:30.604740" elapsed="0.397168"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:31.002546" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:31.002129" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:30.603682" elapsed="0.399053">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:33.006327" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:33.005564" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:33.008519" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:33.007854" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:33.010375" 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-19T02:01:33.010606" 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-19T02:01:33.010016" elapsed="0.000650"/>
</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-19T02:01:33.016543" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:33.015888" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:33.015810" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:33.019084" 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-19T02:01:33.019483" 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-19T02:01:33.018130" elapsed="0.001512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:33.021332" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:33.020767" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:33.023270" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:33.022471" elapsed="0.000899"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:33.025857" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:33.025936" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:33.025571" 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-19T02:01:33.026194" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:33.027712" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:33.345712" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:33.027347" elapsed="0.318524"/>
</kw>
<msg time="2026-04-19T02:01:33.345958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:33.026760" elapsed="0.319327"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:33.024715" elapsed="0.321665"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:33.347969" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:33.370731" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:33.371287" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:33.371703" 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-19T02:01:33.347555" elapsed="0.024364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:33.374210" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:33.377477" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:33.376457" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:33.378649" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:33.378134" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:33.377970" elapsed="0.000976"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:33.379824" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:01:33.379313" elapsed="0.000889"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:33.379202" elapsed="0.001142"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:33.380524" elapsed="0.000088"/>
</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-19T02:01:33.387536" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:01:33.388165" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:33.388534" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:33.383679" elapsed="0.005067"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:33.013911" elapsed="0.375062"/>
</kw>
<msg time="2026-04-19T02:01:33.389300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:33.012964" elapsed="0.376396"/>
</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-19T02:01:33.012222" elapsed="0.377221"/>
</kw>
<msg time="2026-04-19T02:01:33.389485" 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-19T02:01:33.011016" elapsed="0.378516"/>
</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-19T02:01:33.392741" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:01:33.393247" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:33.393543" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:33.389827" elapsed="0.003864"/>
</kw>
<msg time="2026-04-19T02:01:33.393782" level="INFO">${output} = 1</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-19T02:01:33.009092" elapsed="0.384715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:33.394254" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:33.393988" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:33.394342" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:01:33.394495" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:33.006853" elapsed="0.387667"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:33.394567" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:01:33.394713" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:33.004725" elapsed="0.390013"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:33.395313" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:33.394896" elapsed="0.000562">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:33.003663" elapsed="0.391925">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:35.399192" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:35.398409" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:35.401501" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:35.400857" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:35.403369" 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-19T02:01:35.403599" 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-19T02:01:35.403004" elapsed="0.000654"/>
</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-19T02:01:35.408427" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:35.407906" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:35.407848" elapsed="0.000717"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:35.410246" 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-19T02:01:35.410493" 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-19T02:01:35.409547" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:35.412139" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:35.411554" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:35.413938" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:35.413238" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:35.416421" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:35.416500" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:35.416010" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:35.416743" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:35.418015" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:35.731139" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:35.417689" elapsed="0.313644"/>
</kw>
<msg time="2026-04-19T02:01:35.731448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:35.417325" elapsed="0.314239"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:35.415249" elapsed="0.316702"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:35.733847" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:35.756810" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:35.757360" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:35.757694" 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-19T02:01:35.733449" elapsed="0.024456"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:35.760153" elapsed="0.000985"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:35.763400" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:35.762403" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:35.764682" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:35.763979" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:35.763855" elapsed="0.001131"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:35.765532" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:01:35.765320" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:35.765255" elapsed="0.000464"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:35.765802" 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-19T02:01:35.770600" 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-19T02:01:35.771236" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:35.771594" 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-19T02:01:35.767192" elapsed="0.004610"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:35.406518" elapsed="0.365505"/>
</kw>
<msg time="2026-04-19T02:01:35.772344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:35.405815" elapsed="0.366601"/>
</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-19T02:01:35.405275" elapsed="0.367236"/>
</kw>
<msg time="2026-04-19T02:01:35.772557" 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-19T02:01:35.404012" elapsed="0.368594"/>
</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-19T02:01:35.775640" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:01:35.776237" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:35.776553" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:35.772900" elapsed="0.003803"/>
</kw>
<msg time="2026-04-19T02:01:35.776796" level="INFO">${output} = 1</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-19T02:01:35.402079" elapsed="0.374743"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:35.777270" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:35.777001" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:35.777357" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:35.777511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:35.399872" elapsed="0.377665"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:35.777585" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:35.777732" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:35.397547" elapsed="0.380210"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:35.778429" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:35.777913" elapsed="0.000598">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:35.396467" elapsed="0.382155">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:37.782214" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:37.781450" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:37.784329" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:37.783691" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:37.786342" 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-19T02:01:37.786609" 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-19T02:01:37.785872" elapsed="0.000775"/>
</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-19T02:01:37.791933" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:37.791300" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:37.791222" elapsed="0.000931"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:37.794479" 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-19T02:01:37.794731" 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-19T02:01:37.793556" elapsed="0.001277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:37.796411" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:37.795816" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:37.798311" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:37.797527" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:37.800691" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:37.800770" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:37.800407" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:37.801010" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:37.802440" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:38.120268" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:37.801973" elapsed="0.318483"/>
</kw>
<msg time="2026-04-19T02:01:38.120566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:37.801611" elapsed="0.319075"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:37.799621" elapsed="0.321484"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:38.122949" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:38.146074" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:38.146625" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:38.146997" 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-19T02:01:38.122561" elapsed="0.024705"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:38.149713" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:38.151952" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:38.151337" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:38.152680" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:38.152350" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:38.152270" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:38.153369" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:01:38.153089" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:38.152998" elapsed="0.000661"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:38.153818" elapsed="0.000069"/>
</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-19T02:01:38.160118" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:01:38.160761" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:38.161139" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:38.155915" elapsed="0.005433"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:37.789357" elapsed="0.372232"/>
</kw>
<msg time="2026-04-19T02:01:38.161901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:37.788383" elapsed="0.373578"/>
</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-19T02:01:37.787615" elapsed="0.374452"/>
</kw>
<msg time="2026-04-19T02:01:38.162111" 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-19T02:01:37.786873" elapsed="0.375287"/>
</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-19T02:01:38.165345" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:38.165847" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:38.166210" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:38.162453" elapsed="0.003912"/>
</kw>
<msg time="2026-04-19T02:01:38.166458" level="INFO">${output} = 1</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-19T02:01:37.784868" elapsed="0.381615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:38.166912" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:38.166664" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:38.166998" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:01:38.167172" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:37.782736" elapsed="0.384461"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:38.167244" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:38.167391" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:37.780584" elapsed="0.386831"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:38.167970" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:38.167572" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:37.779506" elapsed="0.388674">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:40.171831" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:40.171057" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:40.173953" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:40.173348" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:40.175895" 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-19T02:01:40.176155" 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-19T02:01:40.175553" elapsed="0.000663"/>
</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-19T02:01:40.182177" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:40.181421" elapsed="0.000907"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:40.181363" elapsed="0.001028"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:40.183831" 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-19T02:01:40.184098" 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-19T02:01:40.183391" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:40.185713" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:40.185175" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:40.187507" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:40.186794" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:40.189917" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:40.189995" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:40.189629" 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-19T02:01:40.190246" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:40.191708" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:40.503769" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:40.191382" elapsed="0.312514"/>
</kw>
<msg time="2026-04-19T02:01:40.503976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:40.190820" elapsed="0.313254"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:40.188792" elapsed="0.315556"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:40.505797" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:40.528689" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:40.529252" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:40.529589" 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-19T02:01:40.505420" elapsed="0.024380"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:40.532085" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:40.535329" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:40.534273" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:40.536048" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:40.535701" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:40.535621" 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-19T02:01:40.536720" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:01:40.536440" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:40.536373" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:40.537075" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:40.543749" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T02:01:40.544353" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:40.544712" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:40.539123" elapsed="0.005797"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:40.180052" elapsed="0.365113"/>
</kw>
<msg time="2026-04-19T02:01:40.545552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:40.179136" elapsed="0.366478"/>
</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-19T02:01:40.177737" elapsed="0.367962"/>
</kw>
<msg time="2026-04-19T02:01:40.545741" 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-19T02:01:40.176568" elapsed="0.369220"/>
</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-19T02:01:40.548863" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:01:40.549518" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:40.549818" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:40.546184" elapsed="0.003782"/>
</kw>
<msg time="2026-04-19T02:01:40.550122" level="INFO">${output} = 1</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-19T02:01:40.174573" elapsed="0.375577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:40.550575" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:40.550327" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:40.550701" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:40.550855" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:40.172406" elapsed="0.378474"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:40.550927" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:40.551089" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:40.170134" elapsed="0.380980"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:40.551670" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:40.551272" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:40.168977" elapsed="0.382877">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:42.555394" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:42.554632" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:42.557136" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:42.556731" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:42.558301" 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-19T02:01:42.558444" 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-19T02:01:42.558077" elapsed="0.000405"/>
</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-19T02:01:42.564338" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:42.563649" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:42.563229" elapsed="0.001305"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:42.565957" 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-19T02:01:42.566235" 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-19T02:01:42.565519" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:42.567858" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:42.567304" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:42.569783" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:42.569070" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:42.572324" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:42.572403" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:42.572015" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:42.572642" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:42.573921" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:42.890555" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:42.573590" elapsed="0.317118"/>
</kw>
<msg time="2026-04-19T02:01:42.890794" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:42.573223" elapsed="0.317664"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:42.571212" elapsed="0.319981"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:42.892700" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:42.915482" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:42.916018" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:42.916394" 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-19T02:01:42.892305" elapsed="0.024300"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:42.918849" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:42.921972" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:42.921002" elapsed="0.001227"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:42.923089" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:42.922571" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:42.922448" elapsed="0.000929"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:42.924201" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:01:42.923727" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:42.923584" elapsed="0.000957"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:42.924774" 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-19T02:01:42.929796" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:01:42.930363" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:42.930726" 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-19T02:01:42.926273" elapsed="0.004660"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:42.561372" elapsed="0.369798"/>
</kw>
<msg time="2026-04-19T02:01:42.931478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:42.560409" elapsed="0.371135"/>
</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-19T02:01:42.559626" elapsed="0.372006"/>
</kw>
<msg time="2026-04-19T02:01:42.931673" 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-19T02:01:42.558722" elapsed="0.373035"/>
</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-19T02:01:42.934898" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:01:42.935409" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:42.935729" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:42.932145" elapsed="0.003743"/>
</kw>
<msg time="2026-04-19T02:01:42.935983" level="INFO">${output} = 1</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-19T02:01:42.557477" elapsed="0.378532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:42.936487" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:42.936223" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:42.936578" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:01:42.936731" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:42.555979" elapsed="0.380778"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:42.936805" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:01:42.936949" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:42.553783" elapsed="0.383190"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:42.937656" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:42.937247" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:42.552681" elapsed="0.385166">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:44.941265" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:44.940474" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:44.943367" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:44.942732" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:44.945223" 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-19T02:01:44.945453" 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-19T02:01:44.944871" elapsed="0.000641"/>
</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-19T02:01:44.951853" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:44.951382" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:44.951095" elapsed="0.000905"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:44.953462" 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-19T02:01:44.953707" 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-19T02:01:44.953006" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:44.955368" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:44.954796" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:44.957192" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:44.956459" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:44.959729" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:44.959807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:44.959450" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:44.960055" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:44.961392" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:45.272854" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:44.961066" elapsed="0.311869"/>
</kw>
<msg time="2026-04-19T02:01:45.272994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:44.960688" elapsed="0.312395"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:44.958509" elapsed="0.314799"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:45.274621" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:45.296985" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:45.297514" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:45.297845" 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-19T02:01:45.274301" elapsed="0.023794"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:45.300274" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:45.302650" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:45.302084" elapsed="0.000711"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:45.303328" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:45.303007" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:45.302933" elapsed="0.000573"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:45.303977" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T02:01:45.303702" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:45.303637" elapsed="0.000580"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:45.304327" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:45.312308" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:01:45.312888" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:45.313256" 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-19T02:01:45.306514" elapsed="0.006949"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:44.949738" elapsed="0.363953"/>
</kw>
<msg time="2026-04-19T02:01:45.313997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:44.948276" elapsed="0.365887"/>
</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-19T02:01:44.947059" elapsed="0.367186"/>
</kw>
<msg time="2026-04-19T02:01:45.314286" 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-19T02:01:44.945863" elapsed="0.368469"/>
</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-19T02:01:45.317348" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:01:45.317827" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:45.318159" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:45.314620" elapsed="0.003690"/>
</kw>
<msg time="2026-04-19T02:01:45.318467" level="INFO">${output} = 1</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-19T02:01:44.943908" elapsed="0.374586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:45.318920" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:45.318672" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:45.319008" elapsed="0.000050"/>
</return>
<msg time="2026-04-19T02:01:45.319183" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:44.941791" elapsed="0.377417"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:45.319255" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:45.319398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:44.939637" elapsed="0.379785"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:45.319969" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:45.319581" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:44.938614" elapsed="0.381560">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:47.323652" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:47.322893" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:47.325799" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:47.325177" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:47.327650" 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-19T02:01:47.327877" 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-19T02:01:47.327323" elapsed="0.000614"/>
</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-19T02:01:47.333383" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:47.332899" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:47.332841" elapsed="0.000680"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:47.335232" 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-19T02:01:47.335481" 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-19T02:01:47.334533" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:47.337163" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:47.336567" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:47.338974" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:47.338277" elapsed="0.000996"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:47.341833" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:47.341912" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:47.341507" 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-19T02:01:47.342164" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:47.343459" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:47.708888" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:47.343098" elapsed="0.366062"/>
</kw>
<msg time="2026-04-19T02:01:47.709244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:47.342724" elapsed="0.366613"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:47.340644" elapsed="0.368963"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:47.711112" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:47.733902" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:47.734468" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:47.734796" 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-19T02:01:47.710701" elapsed="0.024304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:47.737463" elapsed="0.001152"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:47.740077" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:47.739460" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:47.740986" elapsed="0.000096"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:47.740579" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:47.740480" elapsed="0.000804"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:47.741894" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T02:01:47.741567" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:47.741480" elapsed="0.000715"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:47.742309" elapsed="0.000056"/>
</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-19T02:01:47.748873" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:47.749449" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:47.749812" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:47.744305" elapsed="0.005750"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:47.331484" elapsed="0.418802"/>
</kw>
<msg time="2026-04-19T02:01:47.750596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:47.330752" elapsed="0.419908"/>
</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-19T02:01:47.329490" elapsed="0.421254"/>
</kw>
<msg time="2026-04-19T02:01:47.750785" 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-19T02:01:47.328322" elapsed="0.422509"/>
</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-19T02:01:47.754063" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:47.754551" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:47.754849" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:47.751254" elapsed="0.003743"/>
</kw>
<msg time="2026-04-19T02:01:47.755117" level="INFO">${output} = 1</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-19T02:01:47.326376" elapsed="0.428767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:47.755581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:47.755329" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:47.755669" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:47.755822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:47.324232" elapsed="0.431621"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:47.755903" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:01:47.756068" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:47.322083" elapsed="0.434011"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:47.756716" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:47.756300" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:47.320980" elapsed="0.435928">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:49.761281" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:49.760353" elapsed="0.001016"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:49.762470" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:49.762183" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:49.763347" 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-19T02:01:49.763452" 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-19T02:01:49.763173" elapsed="0.000306"/>
</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-19T02:01:49.767309" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:49.766800" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:49.766744" elapsed="0.000702"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:49.769122" 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-19T02:01:49.769368" 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-19T02:01:49.768415" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:49.770999" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:49.770438" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:49.772824" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:49.772130" elapsed="0.000792"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:49.775309" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:49.775389" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:49.774894" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:49.775626" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:49.776898" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:50.084975" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:49.776568" elapsed="0.308561"/>
</kw>
<msg time="2026-04-19T02:01:50.085209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:49.776203" elapsed="0.309092"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:49.774128" elapsed="0.311440"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:50.087211" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:50.110155" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:50.110655" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:50.111239" 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-19T02:01:50.086642" elapsed="0.024814"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:50.113812" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:50.116966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:50.115959" 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-19T02:01:50.118132" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:50.117591" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:50.117464" elapsed="0.000964"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:50.119277" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:01:50.118750" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:50.118640" elapsed="0.000993"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:50.119757" 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-19T02:01:50.124662" 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-19T02:01:50.125235" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:50.125598" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:50.121144" elapsed="0.004671"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:49.765428" elapsed="0.360630"/>
</kw>
<msg time="2026-04-19T02:01:50.126368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:49.764721" elapsed="0.361706"/>
</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-19T02:01:49.764171" elapsed="0.362341"/>
</kw>
<msg time="2026-04-19T02:01:50.126554" 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-19T02:01:49.763640" elapsed="0.362961"/>
</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-19T02:01:50.129737" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:01:50.130228" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:50.130525" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:50.126898" elapsed="0.003782"/>
</kw>
<msg time="2026-04-19T02:01:50.130772" level="INFO">${output} = 1</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-19T02:01:49.762721" elapsed="0.368077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:50.131276" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:50.130979" elapsed="0.000342"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:50.131365" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:01:50.131518" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:49.761754" elapsed="0.369790"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:50.131591" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:50.131737" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:49.759328" elapsed="0.372434"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:50.132411" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:50.131919" elapsed="0.000567">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:49.757858" elapsed="0.374739">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:52.136368" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:52.135520" elapsed="0.000926"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:52.138860" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:52.138228" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:52.140930" 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-19T02:01:52.141105" 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-19T02:01:52.140598" elapsed="0.000546"/>
</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-19T02:01:52.147201" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:52.146486" elapsed="0.000832"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:52.146387" elapsed="0.001020"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:52.149749" 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-19T02:01:52.150008" 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-19T02:01:52.148912" elapsed="0.001216"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:52.151675" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:52.151100" elapsed="0.000709"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:52.153702" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:52.152866" elapsed="0.000934"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:52.156294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:52.156373" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:52.155954" 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-19T02:01:52.156649" elapsed="0.000551"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:52.158189" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:52.487098" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:52.157818" elapsed="0.329437"/>
</kw>
<msg time="2026-04-19T02:01:52.487341" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:52.157428" elapsed="0.330007"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:52.155111" elapsed="0.332610"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:52.489270" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:52.512211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:52.512740" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:52.513114" 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-19T02:01:52.488852" elapsed="0.024480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:52.515546" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:52.518739" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:52.517718" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:52.519987" elapsed="0.000102"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:52.519368" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:52.519245" elapsed="0.001136"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:52.521014" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T02:01:52.520717" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:52.520604" elapsed="0.000660"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:52.521379" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:52.528008" elapsed="0.000498"/>
</kw>
<kw name="Open 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-19T02:01:52.528805" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:52.529326" 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-19T02:01:52.523336" elapsed="0.006284"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:52.144290" elapsed="0.385645"/>
</kw>
<msg time="2026-04-19T02:01:52.530472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:52.143244" elapsed="0.387311"/>
</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-19T02:01:52.142387" elapsed="0.388284"/>
</kw>
<msg time="2026-04-19T02:01:52.530835" 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-19T02:01:52.141433" elapsed="0.389470"/>
</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-19T02:01:52.534231" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:01:52.534711" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:52.535007" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:52.531339" elapsed="0.003836"/>
</kw>
<msg time="2026-04-19T02:01:52.535268" level="INFO">${output} = 1</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-19T02:01:52.139521" elapsed="0.395774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:52.535728" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:52.535478" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:52.535815" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:52.536042" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:52.137163" elapsed="0.398907"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:52.536119" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:01:52.536278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:52.134634" elapsed="0.401670"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:52.536859" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:52.536463" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:52.133503" elapsed="0.403552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:54.540598" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:54.539822" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:54.542431" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:54.542047" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:54.543590" 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-19T02:01:54.543930" 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-19T02:01:54.543369" elapsed="0.000601"/>
</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-19T02:01:54.549646" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:54.548660" elapsed="0.001099"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:54.548582" elapsed="0.001260"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:54.551868" 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-19T02:01:54.552290" 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-19T02:01:54.551232" elapsed="0.001211"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:54.554445" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:54.553864" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:54.556456" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:54.555588" elapsed="0.000975"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:54.558923" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:54.559004" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:54.558630" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:54.559259" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:54.560664" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:54.873943" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:54.560335" elapsed="0.313783"/>
</kw>
<msg time="2026-04-19T02:01:54.874205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:54.559822" elapsed="0.314472"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:54.557836" elapsed="0.316739"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:54.876072" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:54.898721" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:54.899268" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:54.899599" 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-19T02:01:54.875669" elapsed="0.024142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:54.902089" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:54.905348" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:54.904286" elapsed="0.001351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:54.906215" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:54.905946" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:54.905871" elapsed="0.000479"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:54.906696" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:01:54.906495" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:54.906446" elapsed="0.000406"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:54.906931" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:54.911664" 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-19T02:01:54.912370" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:54.912732" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:54.908338" elapsed="0.004607"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:54.546676" elapsed="0.366515"/>
</kw>
<msg time="2026-04-19T02:01:54.913522" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:54.545728" elapsed="0.367854"/>
</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-19T02:01:54.544948" elapsed="0.368720"/>
</kw>
<msg time="2026-04-19T02:01:54.913709" 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-19T02:01:54.544223" elapsed="0.369534"/>
</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-19T02:01:54.916874" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:01:54.917364" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:54.917680" 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-19T02:01:54.914064" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T02:01:54.917918" level="INFO">${output} = 1</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-19T02:01:54.542772" elapsed="0.375171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:54.918386" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:54.918137" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:54.918472" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:54.918625" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:54.541185" elapsed="0.377465"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:54.918696" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:54.918868" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:54.538984" elapsed="0.379910"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:54.919487" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:54.919092" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:54.537893" elapsed="0.381778">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:56.923338" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:56.922563" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:56.925507" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:56.924830" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:56.927266" 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-19T02:01:56.927410" 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-19T02:01:56.927017" elapsed="0.000430"/>
</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-19T02:01:56.933232" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:56.932558" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:56.932171" elapsed="0.001340"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:56.935428" 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-19T02:01:56.935683" 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-19T02:01:56.934955" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:56.937328" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:56.936769" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:56.939179" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:56.938438" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:56.941597" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:56.941675" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:56.941315" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:56.941909" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:56.943364" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:57.254257" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:56.942886" elapsed="0.311531"/>
</kw>
<msg time="2026-04-19T02:01:57.254505" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:56.942521" elapsed="0.312106"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:56.940534" elapsed="0.314379"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:57.256408" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:57.279388" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:57.279893" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:57.280279" 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-19T02:01:57.256006" elapsed="0.024486"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:57.282743" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:57.285886" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:57.284888" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:57.286985" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:57.286500" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:57.286374" elapsed="0.000762"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:57.287487" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:01:57.287282" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:57.287233" elapsed="0.000414"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:57.287726" 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-19T02:01:57.292441" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:57.292988" elapsed="0.000264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:57.293448" 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-19T02:01:57.289125" elapsed="0.004529"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:56.930300" elapsed="0.363578"/>
</kw>
<msg time="2026-04-19T02:01:57.294260" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:56.929205" elapsed="0.365113"/>
</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-19T02:01:56.928414" elapsed="0.365986"/>
</kw>
<msg time="2026-04-19T02:01:57.294442" 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-19T02:01:56.927674" elapsed="0.366814"/>
</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-19T02:01:57.297573" 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-19T02:01:57.298070" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:57.298369" 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-19T02:01:57.294802" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T02:01:57.298622" level="INFO">${output} = 1</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-19T02:01:56.926102" elapsed="0.372551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:57.299106" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:57.298835" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:57.299196" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:57.299347" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:56.923866" elapsed="0.375507"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:57.299420" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:01:57.299565" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:56.921657" elapsed="0.377933"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:57.300152" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:57.299746" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:56.920550" elapsed="0.379783">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:01:59.304593" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:01:59.303782" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:01:59.306853" level="INFO">${member_ip} = 10.30.171.128</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-19T02:01:59.306200" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:59.309095" 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-19T02:01:59.309336" 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-19T02:01:59.308663" elapsed="0.000733"/>
</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-19T02:01:59.318846" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:01:59.317807" elapsed="0.001261"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:59.317246" elapsed="0.001959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:59.322426" 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-19T02:01:59.322966" 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-19T02:01:59.321428" elapsed="0.001878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:59.325292" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:59.324729" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:01:59.327249" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:01:59.326463" elapsed="0.000885"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:01:59.329647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:01:59.329726" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:01:59.329362" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:59.329964" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:01:59.331353" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:01:59.654791" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:01:59.330914" elapsed="0.324027"/>
</kw>
<msg time="2026-04-19T02:01:59.655042" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:59.330548" elapsed="0.324589"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:01:59.328567" elapsed="0.326854"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:01:59.657042" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:01:59.680664" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:01:59.681307" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:01:59.681646" 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-19T02:01:59.656608" elapsed="0.025251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:59.684173" elapsed="0.000654"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:59.686324" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:59.685643" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:59.687063" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:01:59.686699" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:59.686616" elapsed="0.000638"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:01:59.687767" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:01:59.687459" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:01:59.687389" elapsed="0.000608"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:01:59.688133" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:59.696888" 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-19T02:01:59.697456" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:59.697814" 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-19T02:01:59.690164" elapsed="0.007978"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:01:59.314231" elapsed="0.384142"/>
</kw>
<msg time="2026-04-19T02:01:59.698680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:01:59.312671" elapsed="0.386069"/>
</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-19T02:01:59.311289" elapsed="0.387531"/>
</kw>
<msg time="2026-04-19T02:01:59.698861" 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-19T02:01:59.309761" elapsed="0.389144"/>
</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-19T02:01:59.701937" 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-19T02:01:59.702444" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:01:59.702755" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:01:59.699272" elapsed="0.003630"/>
</kw>
<msg time="2026-04-19T02:01:59.702991" level="INFO">${output} = 1</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-19T02:01:59.307550" elapsed="0.395466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:01:59.703463" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:01:59.703217" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:01:59.703549" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:01:59.703698" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:01:59.305186" elapsed="0.398561"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:01:59.703794" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:01:59.703935" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:01:59.302832" elapsed="0.401127"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:01:59.704574" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:01:59.704183" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:01:59.301215" elapsed="0.403543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:01.708241" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:01.707478" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:01.710383" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:01.709753" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:01.712215" 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-19T02:02:01.712442" 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-19T02:02:01.711864" elapsed="0.000638"/>
</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-19T02:02:01.718970" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:01.718505" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:01.718448" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:01.720811" 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-19T02:02:01.721077" 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-19T02:02:01.720126" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:01.722717" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:01.722173" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:01.724665" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:01.723879" elapsed="0.000920"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:01.727273" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:01.727351" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:01.726871" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:01.727589" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:01.728999" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:02.085561" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:01:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:01.728636" elapsed="0.357083"/>
</kw>
<msg time="2026-04-19T02:02:02.085806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:01.728249" elapsed="0.357649"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:01.726080" elapsed="0.360134"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:02.087702" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:02.110538" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:02.111078" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:02.111420" 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-19T02:02:02.087311" elapsed="0.024321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:02.113901" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:02.117069" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:02.116088" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:02.118197" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:02.117655" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:02.117534" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:02.119291" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:02:02.118809" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:02.118703" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:02.119814" elapsed="0.000085"/>
</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-19T02:02:02.125883" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:02:02.126449" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:02.126805" elapsed="0.000261"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:02.122485" elapsed="0.004694"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:01.716881" elapsed="0.410520"/>
</kw>
<msg time="2026-04-19T02:02:02.127727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:01.715341" elapsed="0.412443"/>
</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-19T02:02:01.714081" elapsed="0.413784"/>
</kw>
<msg time="2026-04-19T02:02:02.127906" 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-19T02:02:01.712873" elapsed="0.415078"/>
</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-19T02:02:02.131042" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:02:02.131521" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:02.131818" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:02.128330" elapsed="0.003637"/>
</kw>
<msg time="2026-04-19T02:02:02.132210" level="INFO">${output} = 1</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-19T02:02:01.710928" elapsed="0.421309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:02.132673" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:02.132421" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:02.132762" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:02.132924" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:01.708800" elapsed="0.424151"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:02.132999" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:02:02.133162" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:01.706643" elapsed="0.426544"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:02.133735" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:02.133344" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:01.705567" elapsed="0.428346">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:04.137381" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:04.136619" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:04.139292" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:04.138888" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:04.140480" 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-19T02:02:04.140626" 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-19T02:02:04.140242" elapsed="0.000422"/>
</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-19T02:02:04.146054" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:04.145375" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:04.145300" elapsed="0.000982"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:04.148635" 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-19T02:02:04.148982" 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-19T02:02:04.147681" elapsed="0.001468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:04.151192" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:04.150631" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:04.153057" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:04.152353" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:04.155594" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:04.155671" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:04.155311" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:04.155907" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:04.157297" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:04.466736" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:04.156953" elapsed="0.310023"/>
</kw>
<msg time="2026-04-19T02:02:04.467074" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:04.156591" elapsed="0.310572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:04.154522" elapsed="0.312914"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:04.468918" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:04.491625" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:04.492168" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:04.492504" 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-19T02:02:04.468529" elapsed="0.024184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:04.494934" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:04.498105" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:04.497093" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:04.499214" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:04.498694" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:04.498573" elapsed="0.000825"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:04.499877" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:02:04.499599" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:04.499531" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:04.500238" elapsed="0.000051"/>
</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-19T02:02:04.506836" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:04.507615" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:04.508152" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:04.502151" elapsed="0.006296"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:04.143414" elapsed="0.365340"/>
</kw>
<msg time="2026-04-19T02:02:04.509291" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:04.142412" elapsed="0.366962"/>
</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-19T02:02:04.141623" elapsed="0.367865"/>
</kw>
<msg time="2026-04-19T02:02:04.509545" 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-19T02:02:04.140885" elapsed="0.368724"/>
</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-19T02:02:04.513211" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:04.513693" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:04.514008" elapsed="0.000154"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:04.510019" elapsed="0.004195"/>
</kw>
<msg time="2026-04-19T02:02:04.514304" level="INFO">${output} = 1</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-19T02:02:04.139645" elapsed="0.374685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:04.514753" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:04.514505" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:04.514842" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:04.514995" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:04.138273" elapsed="0.376747"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:04.515084" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:02:04.515232" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:04.135750" elapsed="0.379507"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:04.515868" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:04.515468" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:04.134688" elapsed="0.381382">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:06.519580" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:06.518799" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:06.521653" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:06.521051" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:06.523565" 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-19T02:02:06.523718" 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-19T02:02:06.523326" elapsed="0.000430"/>
</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-19T02:02:06.529337" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:06.528647" elapsed="0.000805"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:06.528565" elapsed="0.000974"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:06.532247" 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-19T02:02:06.532507" 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-19T02:02:06.531223" elapsed="0.001386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:06.534149" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:06.533593" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:06.536202" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:06.535427" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:06.538559" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:06.538638" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:06.538277" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:06.538872" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:06.540363" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:06.855315" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:06.539886" elapsed="0.315729"/>
</kw>
<msg time="2026-04-19T02:02:06.855698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:06.539511" elapsed="0.316274"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:06.537500" elapsed="0.318593"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:06.857552" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:06.880261" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:06.880756" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:06.881158" 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-19T02:02:06.857167" elapsed="0.024217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:06.883820" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:06.887104" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:06.886115" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:06.888290" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:06.887756" elapsed="0.000614"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:06.887630" elapsed="0.000797"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:06.888783" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:02:06.888574" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:06.888526" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:06.889041" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:06.893851" elapsed="0.000418"/>
</kw>
<kw name="Open 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-19T02:02:06.894481" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:06.894866" 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-19T02:02:06.890485" elapsed="0.004612"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:06.526567" elapsed="0.368794"/>
</kw>
<msg time="2026-04-19T02:02:06.895670" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:06.525574" elapsed="0.370154"/>
</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-19T02:02:06.524765" elapsed="0.371048"/>
</kw>
<msg time="2026-04-19T02:02:06.895855" 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-19T02:02:06.523989" elapsed="0.371914"/>
</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-19T02:02:06.899037" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:02:06.899539" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:06.899906" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:06.896216" elapsed="0.003867"/>
</kw>
<msg time="2026-04-19T02:02:06.900177" level="INFO">${output} = 1</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-19T02:02:06.522227" elapsed="0.377976"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:06.900637" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:06.900384" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:06.900730" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:02:06.900886" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:06.520122" elapsed="0.380790"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:06.900961" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:02:06.901146" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:06.517964" elapsed="0.383210"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:06.901739" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:06.901340" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:06.516883" elapsed="0.385037">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:08.905550" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:08.904751" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:08.907915" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:08.907300" elapsed="0.000676"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:08.909851" 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-19T02:02:08.910114" 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-19T02:02:08.909520" elapsed="0.000659"/>
</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-19T02:02:08.916271" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:08.915529" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:08.915472" elapsed="0.000953"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:08.917871" 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-19T02:02:08.918151" 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-19T02:02:08.917426" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:08.919799" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:08.919248" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:08.921669" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:08.920946" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:08.924184" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:08.924277" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:08.923867" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:08.924520" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:08.925956" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:09.235576" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:08.925482" elapsed="0.310220"/>
</kw>
<msg time="2026-04-19T02:02:09.235776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:08.925110" elapsed="0.310747"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:08.923002" elapsed="0.313153"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:09.237629" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:09.260198" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:09.260723" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:09.261103" 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-19T02:02:09.237245" elapsed="0.024075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:09.263521" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:09.266198" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:09.265557" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:09.266961" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:09.266565" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:09.266486" elapsed="0.000687"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:09.267660" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:02:09.267376" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:09.267308" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:09.267996" elapsed="0.000075"/>
</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-19T02:02:09.274447" 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-19T02:02:09.275018" elapsed="0.000316"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:09.275531" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:09.269869" elapsed="0.005873"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:08.914123" elapsed="0.361844"/>
</kw>
<msg time="2026-04-19T02:02:09.276292" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:08.913247" elapsed="0.363107"/>
</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-19T02:02:08.911919" elapsed="0.364540"/>
</kw>
<msg time="2026-04-19T02:02:09.276504" 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-19T02:02:08.910534" elapsed="0.366017"/>
</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-19T02:02:09.279524" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:02:09.280002" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:09.280357" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:09.276851" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T02:02:09.280642" level="INFO">${output} = 1</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-19T02:02:08.908560" elapsed="0.372109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:09.281135" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:09.280866" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:09.281224" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:02:09.281382" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:08.906331" elapsed="0.375076"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:09.281455" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:09.281602" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:08.903806" elapsed="0.377821"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:09.282190" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:09.281785" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:08.902722" elapsed="0.379652">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:11.286089" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:11.285137" elapsed="0.001023"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:11.288222" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:11.287585" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:11.290124" 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-19T02:02:11.290649" 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-19T02:02:11.289767" elapsed="0.001076"/>
</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-19T02:02:11.295279" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:11.294788" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:11.294486" elapsed="0.000935"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:11.296854" 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-19T02:02:11.297115" 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-19T02:02:11.296411" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:11.298769" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:11.298219" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:11.300580" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:11.299863" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:11.303068" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:11.303148" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:11.302772" 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-19T02:02:11.303384" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:11.304656" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:11.620611" 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 Sun Apr 19 02:01:11 UTC 2026

  System load:  0.27               Processes:             124
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:11.304332" elapsed="0.316481"/>
</kw>
<msg time="2026-04-19T02:02:11.620925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:11.303950" elapsed="0.317110"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:11.301929" elapsed="0.319490"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:11.623288" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:11.646430" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:11.646855" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:11.647082" 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-19T02:02:11.622777" elapsed="0.024428"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:11.648508" elapsed="0.000661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:11.650527" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:11.649913" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:11.651184" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:11.650858" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:11.650783" elapsed="0.000573"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:11.651790" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:02:11.651551" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:11.651488" elapsed="0.000510"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:11.652148" elapsed="0.000048"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:11.658497" elapsed="0.000468"/>
</kw>
<kw name="Open 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-19T02:02:11.659506" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:11.660278" 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-19T02:02:11.653868" 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-19T02:02:11.293140" elapsed="0.367664"/>
</kw>
<msg time="2026-04-19T02:02:11.661142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:11.292426" elapsed="0.368790"/>
</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-19T02:02:11.291859" elapsed="0.369446"/>
</kw>
<msg time="2026-04-19T02:02:11.661349" 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-19T02:02:11.291251" elapsed="0.370145"/>
</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-19T02:02:11.664552" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:02:11.665053" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:11.665349" 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-19T02:02:11.661747" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T02:02:11.665602" level="INFO">${output} = 1</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-19T02:02:11.288801" elapsed="0.376827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:11.666111" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:11.665843" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:11.666201" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:02:11.666365" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:11.286614" elapsed="0.379776"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:11.666437" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:02:11.666583" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:11.284298" elapsed="0.382309"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:11.667179" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:11.666763" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:11.283213" elapsed="0.384157">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:13.670930" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:13.670134" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:13.672458" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:13.672073" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:13.673620" 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-19T02:02:13.673762" 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-19T02:02:13.673397" elapsed="0.000402"/>
</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-19T02:02:13.679377" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:13.678714" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:13.678321" elapsed="0.001336"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:13.681624" 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-19T02:02:13.681958" 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-19T02:02:13.681006" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:13.684101" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:13.683528" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:13.685877" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:13.685179" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:13.688302" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:13.688380" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:13.688004" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:13.688619" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:13.689881" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:14.262126" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:13.689558" elapsed="0.572732"/>
</kw>
<msg time="2026-04-19T02:02:14.262377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:13.689189" elapsed="0.573283"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:13.687251" elapsed="0.575537"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:14.264358" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:14.287575" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:14.288231" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:14.288582" 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-19T02:02:14.263923" elapsed="0.024876"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:14.291429" elapsed="0.000688"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:14.293680" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:14.292960" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:14.294494" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:14.294110" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:14.293978" elapsed="0.000713"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:14.295317" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T02:02:14.294935" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:14.294831" elapsed="0.000731"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:14.295680" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:14.303727" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T02:02:14.304337" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:14.304734" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:14.297770" elapsed="0.007179"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:13.676472" elapsed="0.628836"/>
</kw>
<msg time="2026-04-19T02:02:14.305702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:13.675525" elapsed="0.630242"/>
</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-19T02:02:13.674763" elapsed="0.631088"/>
</kw>
<msg time="2026-04-19T02:02:14.305893" 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-19T02:02:13.674018" elapsed="0.631922"/>
</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-19T02:02:14.309100" 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-19T02:02:14.309638" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:14.309946" elapsed="0.000129"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:14.306266" elapsed="0.003864"/>
</kw>
<msg time="2026-04-19T02:02:14.310224" level="INFO">${output} = 1</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-19T02:02:13.672801" elapsed="0.637450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:14.310738" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:14.310456" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:14.310833" elapsed="0.000058"/>
</return>
<msg time="2026-04-19T02:02:14.311022" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:13.671482" elapsed="0.639582"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:14.311112" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:02:14.311261" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:13.669300" elapsed="0.641986"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:14.311890" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:14.311457" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:13.668216" elapsed="0.643876">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:16.315577" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:16.314812" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:16.317772" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:16.317067" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:16.318939" 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-19T02:02:16.319109" 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-19T02:02:16.318716" elapsed="0.000431"/>
</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-19T02:02:16.324381" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:16.323731" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:16.323656" elapsed="0.000914"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:16.326858" 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-19T02:02:16.327238" 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-19T02:02:16.325927" elapsed="0.001449"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:16.329524" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:16.328720" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:16.331497" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:16.330734" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:16.333981" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:16.334077" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:16.333693" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:16.334317" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:16.335728" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:16.689896" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:16.335402" elapsed="0.354753"/>
</kw>
<msg time="2026-04-19T02:02:16.690305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:16.334879" elapsed="0.355578"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:16.332838" elapsed="0.358147"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:16.692836" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:16.715653" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:16.716200" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:16.716537" 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-19T02:02:16.692415" elapsed="0.024334"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:16.718966" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:16.721218" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:16.720589" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:16.721908" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:16.721582" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:16.721504" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:16.722598" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:02:16.722319" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:16.722251" elapsed="0.000567"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:16.722930" elapsed="0.000066"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:16.729564" 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-19T02:02:16.730349" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:16.730848" elapsed="0.000171"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:16.724781" elapsed="0.006554"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:16.321818" elapsed="0.409855"/>
</kw>
<msg time="2026-04-19T02:02:16.732010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:16.320845" elapsed="0.411238"/>
</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-19T02:02:16.320095" elapsed="0.412071"/>
</kw>
<msg time="2026-04-19T02:02:16.732207" 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-19T02:02:16.319366" elapsed="0.412887"/>
</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-19T02:02:16.735464" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:02:16.735941" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:16.736260" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:16.732615" elapsed="0.003794"/>
</kw>
<msg time="2026-04-19T02:02:16.736500" level="INFO">${output} = 1</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-19T02:02:16.318137" elapsed="0.418388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:16.736954" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:16.736704" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:16.737056" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:02:16.737210" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:16.316126" elapsed="0.421109"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:16.737283" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:02:16.737426" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:16.313962" elapsed="0.423489"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:16.738005" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:16.737611" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:16.312884" elapsed="0.425322">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:18.741694" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:18.740927" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:18.743801" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:18.743191" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:18.745797" 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-19T02:02:18.746114" 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-19T02:02:18.745467" elapsed="0.000715"/>
</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-19T02:02:18.754476" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:18.753729" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:18.753609" elapsed="0.001005"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:18.756350" 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-19T02:02:18.756600" 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-19T02:02:18.755617" elapsed="0.001090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:18.758271" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:18.757704" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:18.760117" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:18.759406" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:18.762509" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:18.762588" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:18.762227" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:18.762832" elapsed="0.000435"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:18.764226" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:19.079505" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:18.763853" elapsed="0.315794"/>
</kw>
<msg time="2026-04-19T02:02:19.079727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:18.763491" elapsed="0.316320"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:18.761444" elapsed="0.318647"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:19.081553" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:19.104201" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:19.104704" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:19.105079" 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-19T02:02:19.081172" elapsed="0.024129"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:19.107540" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:19.110643" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:19.109653" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:19.111743" elapsed="0.000061"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:19.111256" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:19.111118" elapsed="0.000904"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:19.112815" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T02:02:19.112380" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:19.112271" elapsed="0.000923"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:19.113370" elapsed="0.000081"/>
</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-19T02:02:19.119608" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:02:19.120195" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:19.120557" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:19.116100" elapsed="0.004668"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:18.750577" elapsed="0.370419"/>
</kw>
<msg time="2026-04-19T02:02:19.121319" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:18.748956" elapsed="0.372420"/>
</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-19T02:02:18.747706" elapsed="0.373752"/>
</kw>
<msg time="2026-04-19T02:02:19.121499" 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-19T02:02:18.746541" elapsed="0.375004"/>
</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-19T02:02:19.124665" 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-19T02:02:19.125159" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:19.125465" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:19.121836" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T02:02:19.125764" level="INFO">${output} = 1</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-19T02:02:18.744470" elapsed="0.381320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:19.126321" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:19.125971" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:19.126411" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:19.126567" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:18.742245" elapsed="0.384348"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:19.126642" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:19.126791" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:18.740061" elapsed="0.386756"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:19.127415" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:19.126975" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:18.738996" elapsed="0.388603">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:21.131101" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:21.130316" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:21.133201" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:21.132561" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:21.134984" 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-19T02:02:21.135151" 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-19T02:02:21.134744" elapsed="0.000445"/>
</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-19T02:02:21.140661" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:21.139968" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:21.139889" elapsed="0.001057"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:21.143412" 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-19T02:02:21.143777" 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-19T02:02:21.142389" elapsed="0.001534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:21.146307" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:21.145490" elapsed="0.001010"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:21.148290" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:21.147564" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:21.150749" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:21.150828" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:21.150466" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:21.151081" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:21.152353" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:21.466807" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:21.151994" elapsed="0.315198"/>
</kw>
<msg time="2026-04-19T02:02:21.467322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:21.151635" elapsed="0.315821"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:21.149680" elapsed="0.318221"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:21.470282" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:21.493139" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:21.493689" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:21.494275" 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-19T02:02:21.469631" elapsed="0.024869"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:21.496827" elapsed="0.001019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:21.500306" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:21.499241" elapsed="0.001323"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:21.501585" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:21.500944" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:21.500806" elapsed="0.001045"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:21.502386" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T02:02:21.502086" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:21.501992" elapsed="0.000649"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:21.502780" elapsed="0.000058"/>
</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-19T02:02:21.509768" elapsed="0.000508"/>
</kw>
<kw name="Open 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-19T02:02:21.510591" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:21.511182" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:21.504805" elapsed="0.006676"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:21.138021" elapsed="0.373795"/>
</kw>
<msg time="2026-04-19T02:02:21.512447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:21.137003" elapsed="0.375537"/>
</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-19T02:02:21.136201" elapsed="0.376473"/>
</kw>
<msg time="2026-04-19T02:02:21.512736" 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-19T02:02:21.135413" elapsed="0.377388"/>
</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-19T02:02:21.515893" elapsed="0.000395"/>
</kw>
<kw name="Open 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-19T02:02:21.516458" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:21.516768" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:21.513146" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T02:02:21.517049" level="INFO">${output} = 1</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-19T02:02:21.133738" elapsed="0.383340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:21.517528" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:21.517266" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:21.517617" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:02:21.517786" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:21.131620" elapsed="0.386193"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:21.517863" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:21.518015" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:21.129464" elapsed="0.388591"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:21.518705" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:21.518279" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:21.128399" elapsed="0.390514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:23.522480" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:23.521704" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:23.524602" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:23.523959" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:23.526550" 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-19T02:02:23.526781" 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-19T02:02:23.526214" elapsed="0.000626"/>
</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-19T02:02:23.535172" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:23.534144" elapsed="0.001147"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:23.534061" elapsed="0.001318"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:23.537569" 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-19T02:02:23.537886" 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-19T02:02:23.536849" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:23.539499" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:23.538945" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:23.541323" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:23.540620" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:23.543692" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:23.543771" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:23.543408" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:23.544007" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:23.545394" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:23.868182" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:23.545066" elapsed="0.323292"/>
</kw>
<msg time="2026-04-19T02:02:23.868447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:23.544685" elapsed="0.323857"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:23.542632" elapsed="0.326194"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:23.870333" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:23.893361" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:23.893894" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:23.894299" 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-19T02:02:23.869928" elapsed="0.024597"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:23.896972" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:23.900499" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:23.899441" elapsed="0.001302"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:23.901705" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:23.901151" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:23.900985" elapsed="0.001035"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:23.902989" elapsed="0.000292"/>
</return>
<status status="PASS" start="2026-04-19T02:02:23.902402" elapsed="0.001001"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:23.902286" elapsed="0.001259"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:23.903734" elapsed="0.000085"/>
</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-19T02:02:23.908955" elapsed="0.000536"/>
</kw>
<kw name="Open 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-19T02:02:23.909701" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:23.910122" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:23.905346" elapsed="0.004989"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:23.531193" elapsed="0.379368"/>
</kw>
<msg time="2026-04-19T02:02:23.910870" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:23.529655" elapsed="0.381273"/>
</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-19T02:02:23.528399" elapsed="0.382611"/>
</kw>
<msg time="2026-04-19T02:02:23.911112" 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-19T02:02:23.527225" elapsed="0.383936"/>
</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-19T02:02:23.914170" 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-19T02:02:23.914648" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:23.914948" elapsed="0.000204"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:23.911456" elapsed="0.003748"/>
</kw>
<msg time="2026-04-19T02:02:23.915296" level="INFO">${output} = 1</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-19T02:02:23.525180" elapsed="0.390142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:23.915748" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:23.915503" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:23.915834" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:23.915987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:23.523009" elapsed="0.393003"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:23.916077" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:02:23.916234" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:23.520790" elapsed="0.395469"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:23.916806" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:23.916416" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:23.519690" elapsed="0.397301">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:25.920547" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:25.919777" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:25.922836" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:25.922227" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:25.924687" 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-19T02:02:25.924915" 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-19T02:02:25.924358" elapsed="0.000618"/>
</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-19T02:02:25.931343" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:25.930670" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:25.930295" elapsed="0.001249"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:25.933580" 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-19T02:02:25.933933" 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-19T02:02:25.932928" elapsed="0.001171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:25.936293" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:25.935519" elapsed="0.000927"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:25.938599" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:25.937820" elapsed="0.000877"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:25.940993" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:25.941087" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:25.940695" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:25.941323" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:25.942597" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:26.253559" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:25.942275" elapsed="0.311465"/>
</kw>
<msg time="2026-04-19T02:02:26.253837" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:25.941898" elapsed="0.312047"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:25.939925" elapsed="0.314362"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:26.255902" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:26.278835" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:26.279100" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:26.279251" 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-19T02:02:26.255456" elapsed="0.023897"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:26.280358" elapsed="0.000464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:26.281911" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:26.281439" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:26.282562" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:26.282214" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:26.282146" elapsed="0.000562"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:26.283078" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:02:26.282857" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:26.282808" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:26.283325" 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-19T02:02:26.288216" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:02:26.288810" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:26.289287" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:26.284675" elapsed="0.004822"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:25.928427" elapsed="0.361291"/>
</kw>
<msg time="2026-04-19T02:02:26.290203" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:25.927483" elapsed="0.362859"/>
</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-19T02:02:25.926582" elapsed="0.363959"/>
</kw>
<msg time="2026-04-19T02:02:26.290637" 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-19T02:02:25.925361" elapsed="0.365385"/>
</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-19T02:02:26.295200" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:02:26.295682" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:26.295981" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:26.291468" elapsed="0.004677"/>
</kw>
<msg time="2026-04-19T02:02:26.296240" level="INFO">${output} = 1</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-19T02:02:25.923414" elapsed="0.372851"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:26.296717" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:26.296457" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:26.296804" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:26.296965" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:25.921258" elapsed="0.375733"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:26.297091" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:02:26.297243" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:25.918938" elapsed="0.378329"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:26.297833" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:26.297427" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:25.917846" elapsed="0.380198">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:28.301477" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:28.300721" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:28.303644" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:28.302987" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:28.305481" 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-19T02:02:28.305855" 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-19T02:02:28.305158" elapsed="0.000758"/>
</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-19T02:02:28.311447" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:28.310935" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:28.310666" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:28.313151" 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-19T02:02:28.313393" 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-19T02:02:28.312683" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:28.315005" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:28.314470" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:28.316846" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:28.316143" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:28.319331" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:28.319411" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:28.319027" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:28.319646" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:28.320891" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:28.681392" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:28.320568" elapsed="0.360937"/>
</kw>
<msg time="2026-04-19T02:02:28.681576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:28.320210" elapsed="0.361443"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:28.318266" elapsed="0.363640"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:28.683336" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:28.706186" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:28.706679" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:28.707003" 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-19T02:02:28.682961" elapsed="0.024293"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:28.709412" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:28.712518" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:28.711536" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:28.713598" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:28.713112" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:28.712958" elapsed="0.000926"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:28.714725" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:02:28.714283" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:28.714175" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:28.715187" 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-19T02:02:28.721874" 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-19T02:02:28.722523" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:28.722878" 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-19T02:02:28.716569" elapsed="0.006619"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:28.309345" elapsed="0.414066"/>
</kw>
<msg time="2026-04-19T02:02:28.723715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:28.308494" elapsed="0.415277"/>
</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-19T02:02:28.307768" elapsed="0.416083"/>
</kw>
<msg time="2026-04-19T02:02:28.723890" 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-19T02:02:28.306309" elapsed="0.417626"/>
</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-19T02:02:28.726892" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:28.727421" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:28.727716" 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-19T02:02:28.724238" elapsed="0.003626"/>
</kw>
<msg time="2026-04-19T02:02:28.727952" level="INFO">${output} = 1</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-19T02:02:28.304216" elapsed="0.423761"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:28.728419" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:28.728171" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:28.728506" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:28.728656" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:28.302072" elapsed="0.426608"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:28.728725" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:02:28.728865" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:28.299881" elapsed="0.429008"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:28.729444" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:28.729057" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:28.298797" elapsed="0.430827">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:30.733123" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:30.732359" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:30.735420" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:30.734755" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:30.737421" 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-19T02:02:30.737659" 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-19T02:02:30.736990" elapsed="0.000728"/>
</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-19T02:02:30.743377" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:30.742701" elapsed="0.000883"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:30.742618" elapsed="0.001055"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:30.746049" 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-19T02:02:30.746411" 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-19T02:02:30.745101" elapsed="0.001453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:30.748824" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:30.747955" elapsed="0.001025"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:30.751086" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:30.750363" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:30.753569" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:30.753647" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:30.753285" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:30.753886" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:30.755163" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:31.057382" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:30.754820" elapsed="0.302659"/>
</kw>
<msg time="2026-04-19T02:02:31.057546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:30.754459" elapsed="0.303166"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:30.752481" elapsed="0.305382"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:31.059266" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:31.081825" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:31.082364" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:31.082699" 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-19T02:02:31.058892" elapsed="0.024019"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:31.085278" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:31.088530" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:31.087456" elapsed="0.001312"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:31.089665" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:31.089156" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:31.088988" elapsed="0.000968"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:31.090763" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:02:31.090313" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:31.090205" elapsed="0.000945"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:31.091329" 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-19T02:02:31.097171" 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-19T02:02:31.097713" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:31.098088" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:31.093791" elapsed="0.004510"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:30.740585" elapsed="0.357938"/>
</kw>
<msg time="2026-04-19T02:02:31.098888" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:30.739606" elapsed="0.359340"/>
</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-19T02:02:30.738830" elapsed="0.360213"/>
</kw>
<msg time="2026-04-19T02:02:31.099086" 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-19T02:02:30.738097" elapsed="0.361041"/>
</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-19T02:02:31.102309" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:02:31.102790" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:31.103103" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:31.099430" elapsed="0.003824"/>
</kw>
<msg time="2026-04-19T02:02:31.103344" level="INFO">${output} = 1</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-19T02:02:30.736023" elapsed="0.367347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:31.103796" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:31.103550" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:31.103882" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:31.104136" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:30.733703" elapsed="0.370461"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:31.104211" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:31.104356" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:30.731494" elapsed="0.372887"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:31.105130" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:31.104563" elapsed="0.000647">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:30.730451" elapsed="0.374872">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:33.108845" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:33.108077" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:33.110952" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:33.110345" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:33.112879" 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-19T02:02:33.113142" 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-19T02:02:33.112535" elapsed="0.000668"/>
</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-19T02:02:33.119434" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:33.118877" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:33.118819" elapsed="0.000757"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:33.121331" 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-19T02:02:33.121581" 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-19T02:02:33.120610" elapsed="0.001076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:33.123311" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:33.122672" elapsed="0.000772"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:33.125250" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:33.124536" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:33.127890" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:33.127967" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:33.127602" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:33.128218" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:33.129510" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:33.482104" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:33.129182" elapsed="0.353109"/>
</kw>
<msg time="2026-04-19T02:02:33.482401" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:33.128803" elapsed="0.353713"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:33.126741" elapsed="0.356136"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:33.484905" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:33.508309" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:33.508842" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:33.509254" 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-19T02:02:33.484394" elapsed="0.025073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:33.511701" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:33.514856" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:33.513861" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:33.515986" elapsed="0.000098"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:33.515467" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:33.515345" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:33.517103" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:02:33.516629" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:33.516524" elapsed="0.000932"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:33.517630" elapsed="0.000085"/>
</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-19T02:02:33.523949" 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-19T02:02:33.524519" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:33.524875" 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-19T02:02:33.520468" elapsed="0.004632"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:33.117478" elapsed="0.407842"/>
</kw>
<msg time="2026-04-19T02:02:33.525639" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:33.116085" elapsed="0.409612"/>
</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-19T02:02:33.114819" elapsed="0.410961"/>
</kw>
<msg time="2026-04-19T02:02:33.525822" 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-19T02:02:33.113562" elapsed="0.412307"/>
</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-19T02:02:33.529184" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:02:33.529664" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:33.529959" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:33.526362" elapsed="0.003762"/>
</kw>
<msg time="2026-04-19T02:02:33.530221" level="INFO">${output} = 1</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-19T02:02:33.111559" elapsed="0.418687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:33.530671" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:33.530425" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:33.530758" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:33.530910" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:33.109401" elapsed="0.421534"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:33.530983" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:33.531210" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:33.107238" elapsed="0.423997"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:33.531829" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:33.531393" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:33.106164" elapsed="0.425851">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:35.535674" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:35.534909" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:35.537275" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:35.536869" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:35.538442" 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-19T02:02:35.538605" 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-19T02:02:35.538216" elapsed="0.000434"/>
</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-19T02:02:35.544084" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:35.543386" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:35.543308" elapsed="0.000989"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:35.546648" 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-19T02:02:35.546996" 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-19T02:02:35.545682" elapsed="0.001479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:35.549149" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:35.548582" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:35.550942" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:35.550236" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:35.553443" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:35.553526" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:35.553152" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:35.553768" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:35.555166" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:35.879998" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:35.554811" elapsed="0.325360"/>
</kw>
<msg time="2026-04-19T02:02:35.880259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:35.554421" elapsed="0.325931"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:35.552371" elapsed="0.328298"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:35.882228" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:35.905168" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:35.905681" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:35.906094" 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-19T02:02:35.881806" elapsed="0.024516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:35.908719" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:35.912335" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:35.911290" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:35.913513" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:35.912937" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:35.912807" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:35.914681" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:02:35.914208" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:35.914078" elapsed="0.001137"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:35.915470" elapsed="0.000089"/>
</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-19T02:02:35.920920" 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-19T02:02:35.921501" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:35.921863" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:35.917404" elapsed="0.004686"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:35.541427" elapsed="0.380908"/>
</kw>
<msg time="2026-04-19T02:02:35.922646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:35.540447" elapsed="0.382259"/>
</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-19T02:02:35.539639" elapsed="0.383151"/>
</kw>
<msg time="2026-04-19T02:02:35.922832" 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-19T02:02:35.538884" elapsed="0.383994"/>
</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-19T02:02:35.925993" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:02:35.926501" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:35.926800" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:35.923219" elapsed="0.003732"/>
</kw>
<msg time="2026-04-19T02:02:35.927209" level="INFO">${output} = 1</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-19T02:02:35.537622" elapsed="0.389640"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:35.927720" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:35.927461" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:35.927809" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:02:35.927969" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:35.536289" elapsed="0.391705"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:35.928060" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:02:35.928214" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:35.534086" elapsed="0.394153"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:35.928813" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:35.928409" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:35.532973" elapsed="0.396033">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:37.932500" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:37.931711" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:37.934789" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:37.934184" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:37.936557" 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-19T02:02:37.936700" 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-19T02:02:37.936324" elapsed="0.000412"/>
</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-19T02:02:37.942519" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:37.941521" elapsed="0.001110"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:37.941444" elapsed="0.001269"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:37.944709" 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-19T02:02:37.945089" 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-19T02:02:37.944080" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:37.947336" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:37.946559" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:37.949482" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:37.948715" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:37.951825" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:37.951904" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:37.951544" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:37.952167" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:37.953578" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:38.311695" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:37.953248" elapsed="0.358607"/>
</kw>
<msg time="2026-04-19T02:02:38.311921" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:37.952728" elapsed="0.359268"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:37.950765" elapsed="0.361488"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:38.313608" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:38.336369" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:38.336881" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:38.337273" 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-19T02:02:38.313267" elapsed="0.024221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:38.339846" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:38.342069" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:38.341446" 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-19T02:02:38.342751" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:38.342440" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:38.342365" 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-19T02:02:38.343495" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T02:02:38.343212" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:38.343143" elapsed="0.000605"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:38.343857" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:38.350507" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T02:02:38.351442" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:38.351969" elapsed="0.000163"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:38.345707" elapsed="0.006575"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:37.939586" elapsed="0.412953"/>
</kw>
<msg time="2026-04-19T02:02:38.352844" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:37.938469" elapsed="0.414431"/>
</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-19T02:02:37.937692" elapsed="0.415290"/>
</kw>
<msg time="2026-04-19T02:02:38.353023" 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-19T02:02:37.936957" elapsed="0.416127"/>
</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-19T02:02:38.356234" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:02:38.356713" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:38.357008" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:38.353376" elapsed="0.003798"/>
</kw>
<msg time="2026-04-19T02:02:38.357264" level="INFO">${output} = 1</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-19T02:02:37.935357" elapsed="0.421932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:38.357720" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:38.357471" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:38.357809" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:38.357961" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:37.933248" elapsed="0.424738"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:38.358058" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:02:38.358208" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:37.930871" elapsed="0.427362"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:38.358826" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:38.358431" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:37.929803" elapsed="0.429203">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:40.362757" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:40.361884" elapsed="0.000945"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:40.364939" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:40.364293" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:40.366795" 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-19T02:02:40.366938" 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-19T02:02:40.366568" elapsed="0.000407"/>
</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-19T02:02:40.372674" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:40.372007" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:40.371617" elapsed="0.001288"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:40.374589" 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-19T02:02:40.374835" 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-19T02:02:40.374145" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:40.376511" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:40.375944" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:40.378377" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:40.377656" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:40.380723" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:40.380812" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:40.380439" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:40.381063" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:40.382310" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:40.740533" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:40.381972" elapsed="0.358717"/>
</kw>
<msg time="2026-04-19T02:02:40.740776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:40.381616" elapsed="0.359261"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:40.379661" elapsed="0.361526"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:40.742678" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:40.765280" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:40.765771" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:40.766148" 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-19T02:02:40.742278" elapsed="0.024081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:40.768557" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:40.771717" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:40.770693" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:40.772897" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:40.772373" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:40.772216" elapsed="0.001009"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:40.773984" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-19T02:02:40.773544" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:40.773438" elapsed="0.000928"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:40.774537" 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-19T02:02:40.780922" 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-19T02:02:40.781494" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:40.781851" 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-19T02:02:40.777571" elapsed="0.004500"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:40.369739" elapsed="0.412557"/>
</kw>
<msg time="2026-04-19T02:02:40.782601" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:40.368764" elapsed="0.413894"/>
</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-19T02:02:40.367935" elapsed="0.414803"/>
</kw>
<msg time="2026-04-19T02:02:40.782779" 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-19T02:02:40.367217" elapsed="0.415608"/>
</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-19T02:02:40.785982" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:02:40.786478" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:40.786771" 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-19T02:02:40.783308" elapsed="0.003609"/>
</kw>
<msg time="2026-04-19T02:02:40.787005" level="INFO">${output} = 1</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-19T02:02:40.365518" elapsed="0.421527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:40.787467" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:40.787221" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:40.787552" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:40.787702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:40.363332" elapsed="0.424395"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:40.787772" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:40.787915" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:40.361058" elapsed="0.426882"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:40.788596" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:40.788177" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:40.359904" elapsed="0.428887">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:42.791284" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:42.790759" elapsed="0.000572"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:42.792711" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:42.792328" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:42.793869" 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-19T02:02:42.794067" 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-19T02:02:42.793647" elapsed="0.000460"/>
</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-19T02:02:42.799704" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:42.799063" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:42.798683" elapsed="0.001214"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:42.801922" 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-19T02:02:42.802312" 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-19T02:02:42.801294" elapsed="0.001162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:42.804598" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:42.803822" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:42.807062" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:42.806241" elapsed="0.000920"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:42.809431" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:42.809507" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:42.809148" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:42.809741" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:42.811161" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:43.118122" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:42.810820" elapsed="0.307463"/>
</kw>
<msg time="2026-04-19T02:02:43.118372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:42.810454" elapsed="0.308020"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:42.808371" elapsed="0.310401"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:43.120401" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:43.143084" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:43.143632" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:43.143983" 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-19T02:02:43.119918" elapsed="0.024321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:43.146601" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:43.149971" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:43.148920" elapsed="0.001329"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:43.151249" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:43.150598" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:43.150475" elapsed="0.001081"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:43.152496" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T02:02:43.151884" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:43.151773" elapsed="0.001088"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:43.153076" elapsed="0.000094"/>
</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-19T02:02:43.160588" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:02:43.161166" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:43.161558" 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-19T02:02:43.155264" elapsed="0.006510"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:42.796801" elapsed="0.365204"/>
</kw>
<msg time="2026-04-19T02:02:43.162345" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:42.795857" elapsed="0.366550"/>
</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-19T02:02:42.795108" elapsed="0.367381"/>
</kw>
<msg time="2026-04-19T02:02:43.162531" 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-19T02:02:42.794330" elapsed="0.368247"/>
</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-19T02:02:43.165709" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:02:43.166226" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:43.166532" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:43.162874" elapsed="0.003805"/>
</kw>
<msg time="2026-04-19T02:02:43.166768" level="INFO">${output} = 1</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-19T02:02:42.793073" elapsed="0.373720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:43.167240" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:43.166972" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:43.167337" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:02:43.167490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:42.791731" elapsed="0.375788"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:43.167566" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:43.167707" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:42.790233" elapsed="0.377499"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:43.168423" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:43.167999" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:42.789445" elapsed="0.379162">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:45.172271" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:45.171449" elapsed="0.000895"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:45.174407" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:45.173768" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:45.176296" 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-19T02:02:45.176684" 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-19T02:02:45.175927" elapsed="0.000817"/>
</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-19T02:02:45.181657" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:45.181183" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:45.181126" elapsed="0.000671"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:45.229925" 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-19T02:02:45.230282" 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-19T02:02:45.182793" elapsed="0.047592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:45.232123" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:45.231453" elapsed="0.000782"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:45.233945" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:45.233232" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:45.236435" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:45.236512" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:45.236144" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:45.236749" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:45.238052" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:45.551204" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:45.237712" elapsed="0.313645"/>
</kw>
<msg time="2026-04-19T02:02:45.551443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:45.237347" elapsed="0.314187"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:45.235301" elapsed="0.316522"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:45.553339" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:45.576308" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:45.576624" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:45.576837" 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-19T02:02:45.552925" elapsed="0.024046"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:45.578400" elapsed="0.000567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:45.580429" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:45.579794" 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-19T02:02:45.581149" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:45.580803" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:45.580722" elapsed="0.000614"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:45.581854" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:02:45.581565" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:45.581494" elapsed="0.000636"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:45.582243" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:45.588515" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:02:45.589160" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:45.589521" 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-19T02:02:45.584118" elapsed="0.005613"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:45.179782" elapsed="0.410171"/>
</kw>
<msg time="2026-04-19T02:02:45.590383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:45.179092" elapsed="0.411350"/>
</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-19T02:02:45.178436" elapsed="0.412089"/>
</kw>
<msg time="2026-04-19T02:02:45.590567" 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-19T02:02:45.177128" elapsed="0.413485"/>
</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-19T02:02:45.593595" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:02:45.594147" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:45.594445" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:45.590903" elapsed="0.003690"/>
</kw>
<msg time="2026-04-19T02:02:45.594684" level="INFO">${output} = 1</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-19T02:02:45.174962" elapsed="0.419748"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:45.595167" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:45.594889" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:45.595254" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:45.595405" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:45.172829" elapsed="0.422601"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:45.595476" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:02:45.595624" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:45.170552" elapsed="0.425096"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:45.596215" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:45.595804" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:45.169469" elapsed="0.426935">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:47.599997" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:47.599263" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:47.602848" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:47.601989" elapsed="0.000931"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:47.604868" 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-19T02:02:47.605127" 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-19T02:02:47.604518" elapsed="0.000670"/>
</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-19T02:02:47.612003" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:47.611523" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:47.611463" elapsed="0.000811"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:47.613738" 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-19T02:02:47.613981" 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-19T02:02:47.613288" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:47.615687" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:47.615140" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:47.617518" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:47.616791" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:47.619964" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:47.620057" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:47.619666" 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-19T02:02:47.620301" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:47.621591" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:47.941677" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:47.621256" elapsed="0.320576"/>
</kw>
<msg time="2026-04-19T02:02:47.941920" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:47.620856" elapsed="0.321156"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:47.618834" elapsed="0.323485"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:47.943811" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:47.967343" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:47.967846" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:47.968228" 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-19T02:02:47.943416" elapsed="0.025023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:47.970652" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:47.973950" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:47.972954" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:47.975272" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:47.974598" elapsed="0.000842"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:47.974475" elapsed="0.001090"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:47.976359" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:02:47.975883" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:47.975778" elapsed="0.000930"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:47.976927" elapsed="0.000088"/>
</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-19T02:02:47.984382" elapsed="0.000501"/>
</kw>
<kw name="Open 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-19T02:02:47.985204" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:47.985702" 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-19T02:02:47.979388" elapsed="0.006606"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:47.609710" elapsed="0.376621"/>
</kw>
<msg time="2026-04-19T02:02:47.986833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:47.608136" elapsed="0.378778"/>
</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-19T02:02:47.606893" elapsed="0.380292"/>
</kw>
<msg time="2026-04-19T02:02:47.987249" 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-19T02:02:47.605573" elapsed="0.381743"/>
</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-19T02:02:47.991100" 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-19T02:02:47.991648" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:47.991969" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:47.987727" elapsed="0.004410"/>
</kw>
<msg time="2026-04-19T02:02:47.992229" level="INFO">${output} = 1</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-19T02:02:47.603508" elapsed="0.388746"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:47.992681" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:47.992434" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:47.992768" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:47.992938" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:47.600595" elapsed="0.392369"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:47.993010" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:02:47.993172" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:47.598420" elapsed="0.394777"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:47.993744" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:47.993353" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:47.597332" elapsed="0.396608">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:49.996462" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:49.995954" elapsed="0.000555"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:49.997777" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:49.997394" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:49.999116" 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-19T02:02:49.999295" 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-19T02:02:49.998853" elapsed="0.000482"/>
</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-19T02:02:50.004906" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:50.004267" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:50.004183" elapsed="0.000939"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:50.007111" 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-19T02:02:50.007466" 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-19T02:02:50.006478" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:50.009730" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:50.008951" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:50.012318" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:50.011447" elapsed="0.000971"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:50.014665" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:50.014744" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:50.014385" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:50.014979" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:50.016415" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:50.339779" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:50.016090" elapsed="0.323839"/>
</kw>
<msg time="2026-04-19T02:02:50.340015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:50.015701" elapsed="0.324425"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:50.013604" elapsed="0.326802"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:50.341865" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:50.364488" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:50.364988" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:50.365368" 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-19T02:02:50.341478" elapsed="0.024102"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:50.367792" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:50.370981" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:50.369988" elapsed="0.001306"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:50.372079" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:50.371644" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:50.371520" elapsed="0.000745"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:50.372752" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:02:50.372472" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:50.372403" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:50.373112" elapsed="0.000057"/>
</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-19T02:02:50.379976" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:50.380749" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:50.381261" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:50.375230" elapsed="0.006326"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:50.001982" elapsed="0.379909"/>
</kw>
<msg time="2026-04-19T02:02:50.382361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:50.001053" elapsed="0.381387"/>
</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-19T02:02:50.000297" elapsed="0.382257"/>
</kw>
<msg time="2026-04-19T02:02:50.382611" 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-19T02:02:49.999561" elapsed="0.383114"/>
</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-19T02:02:50.386220" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:02:50.386696" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:50.387003" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:50.383258" elapsed="0.003919"/>
</kw>
<msg time="2026-04-19T02:02:50.387269" level="INFO">${output} = 1</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-19T02:02:49.998282" elapsed="0.389012"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:50.387734" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:50.387476" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:50.387844" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:02:50.388011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:49.996798" elapsed="0.391254"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:50.388102" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:50.388250" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:49.995428" elapsed="0.392848"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:50.388828" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:50.388434" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:49.994694" elapsed="0.394323">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:52.392584" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:52.391819" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:52.394391" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:52.393991" elapsed="0.000438"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:52.395550" 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-19T02:02:52.395691" 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-19T02:02:52.395333" elapsed="0.000396"/>
</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-19T02:02:52.401370" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:52.400711" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:52.400633" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:52.403610" 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-19T02:02:52.403950" 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-19T02:02:52.402963" elapsed="0.001177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:52.406187" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:52.405506" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:52.407962" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:52.407270" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:52.410549" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:52.410627" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:52.410269" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:52.410861" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:52.412329" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:52.724291" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:52.411866" elapsed="0.312512"/>
</kw>
<msg time="2026-04-19T02:02:52.724439" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:52.411503" elapsed="0.313006"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:52.409334" elapsed="0.315400"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:52.726121" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:52.738566" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:52.739099" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:52.739437" 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-19T02:02:52.725773" elapsed="0.013877"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:52.741881" elapsed="0.002351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:52.746387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:52.745669" 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-19T02:02:52.747216" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:52.746764" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:52.746688" elapsed="0.000713"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:52.747891" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:02:52.747610" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:52.747540" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:52.748254" elapsed="0.000051"/>
</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-19T02:02:52.754873" elapsed="0.000562"/>
</kw>
<kw name="Open 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-19T02:02:52.755727" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:52.756235" 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-19T02:02:52.750134" elapsed="0.006391"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:52.398422" elapsed="0.358412"/>
</kw>
<msg time="2026-04-19T02:02:52.757278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:52.397453" elapsed="0.359934"/>
</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-19T02:02:52.396694" elapsed="0.360808"/>
</kw>
<msg time="2026-04-19T02:02:52.757559" 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-19T02:02:52.395954" elapsed="0.361669"/>
</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-19T02:02:52.760760" 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-19T02:02:52.761253" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:52.761562" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:52.757985" elapsed="0.003729"/>
</kw>
<msg time="2026-04-19T02:02:52.761893" level="INFO">${output} = 1</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-19T02:02:52.394731" elapsed="0.367189"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:52.762376" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:52.762115" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:52.762465" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:52.762621" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:52.393137" elapsed="0.369511"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:52.762695" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:02:52.762841" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:52.390986" elapsed="0.371880"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:52.763457" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:52.763023" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:52.389899" elapsed="0.373747">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:54.767486" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:54.766631" elapsed="0.000930"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:54.770018" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:54.769352" elapsed="0.000766"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:54.772363" 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-19T02:02:54.772623" 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-19T02:02:54.771703" elapsed="0.000986"/>
</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-19T02:02:54.777184" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:54.776679" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:54.776363" elapsed="0.000967"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:54.778796" 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-19T02:02:54.779071" 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-19T02:02:54.778341" elapsed="0.000838"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:54.780862" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:54.780195" elapsed="0.000778"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:54.782715" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:54.781973" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:54.785279" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:54.785357" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:54.784936" 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-19T02:02:54.785597" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:54.786872" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:55.106797" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:54.786547" elapsed="0.320510"/>
</kw>
<msg time="2026-04-19T02:02:55.107143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:54.786179" elapsed="0.321054"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:54.784071" elapsed="0.323441"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:55.109056" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:55.131746" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:55.132312" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:55.132663" 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-19T02:02:55.108630" elapsed="0.024250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:55.135388" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:55.138601" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:55.137614" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:55.139736" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:55.139226" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:55.139097" elapsed="0.001020"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:55.140900" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T02:02:55.140447" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:55.140336" elapsed="0.000848"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:55.141265" 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-19T02:02:55.146105" 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-19T02:02:55.146667" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:55.147053" 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-19T02:02:55.142633" 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-19T02:02:54.774832" elapsed="0.372763"/>
</kw>
<msg time="2026-04-19T02:02:55.147941" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:54.774126" elapsed="0.373876"/>
</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-19T02:02:54.773552" elapsed="0.374555"/>
</kw>
<msg time="2026-04-19T02:02:55.148150" 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-19T02:02:54.773007" elapsed="0.375190"/>
</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-19T02:02:55.151250" 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-19T02:02:55.151742" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:55.152080" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:55.148496" elapsed="0.003743"/>
</kw>
<msg time="2026-04-19T02:02:55.152333" level="INFO">${output} = 1</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-19T02:02:54.770642" elapsed="0.381717"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:55.152806" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:55.152543" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:55.152898" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:02:55.153156" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:54.768304" elapsed="0.384881"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:55.153234" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:02:55.153385" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:54.765630" elapsed="0.387781"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:55.154040" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:55.153619" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:54.764507" elapsed="0.389727">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:57.157773" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:57.156996" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:57.159999" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:57.159388" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:57.161928" 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-19T02:02:57.162197" 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-19T02:02:57.161582" elapsed="0.000678"/>
</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-19T02:02:57.167105" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:57.166593" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:57.166087" elapsed="0.001161"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:57.168684" 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-19T02:02:57.168933" 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-19T02:02:57.168237" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:57.170630" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:57.170078" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:57.172478" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:57.171735" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:57.174951" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:57.175207" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:57.174629" elapsed="0.000605"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:57.175448" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:57.176752" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:57.482833" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:57.176423" elapsed="0.306588"/>
</kw>
<msg time="2026-04-19T02:02:57.483129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:57.176016" elapsed="0.307221"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:57.173770" elapsed="0.309787"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:57.485150" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:57.508011" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:57.508570" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:57.508903" 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-19T02:02:57.484706" elapsed="0.024481"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:57.511482" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:57.514822" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:57.513746" elapsed="0.001351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:57.516069" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:57.515498" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:57.515368" elapsed="0.001030"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:57.517362" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:02:57.516737" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:57.516627" elapsed="0.001096"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:57.517902" elapsed="0.000087"/>
</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-19T02:02:57.523637" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:02:57.524210" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:57.524589" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:57.520125" elapsed="0.004676"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:57.164715" elapsed="0.360308"/>
</kw>
<msg time="2026-04-19T02:02:57.525353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:57.163985" elapsed="0.361436"/>
</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-19T02:02:57.163443" elapsed="0.362064"/>
</kw>
<msg time="2026-04-19T02:02:57.525549" 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-19T02:02:57.162615" elapsed="0.362982"/>
</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-19T02:02:57.528689" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:02:57.529190" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:57.529508" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:57.525890" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T02:02:57.529758" level="INFO">${output} = 1</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-19T02:02:57.160610" elapsed="0.369173"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:57.530237" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:57.529963" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:57.530327" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:02:57.530518" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:57.158366" elapsed="0.372182"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:57.530600" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:02:57.530750" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:57.156139" elapsed="0.374636"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:57.531436" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:57.530934" elapsed="0.000596">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:57.155021" elapsed="0.376625">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:02:59.535246" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:02:59.534483" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:02:59.537542" level="INFO">${member_ip} = 10.30.171.128</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-19T02:02:59.536879" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:59.539427" 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-19T02:02:59.539657" 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-19T02:02:59.539065" elapsed="0.000651"/>
</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-19T02:02:59.547012" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:02:59.546525" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:59.544494" elapsed="0.002677"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:59.548623" 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-19T02:02:59.548867" 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-19T02:02:59.548173" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:59.550547" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:59.549982" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:02:59.552425" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:02:59.551645" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:02:59.554822" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:02:59.554901" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:02:59.554528" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:59.555152" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:02:59.556537" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:02:59.866779" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:02:59.556210" elapsed="0.310750"/>
</kw>
<msg time="2026-04-19T02:02:59.867200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:59.555714" elapsed="0.311602"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:02:59.553744" elapsed="0.313946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:02:59.869776" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:02:59.892466" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:02:59.893019" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:02:59.893496" 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-19T02:02:59.869221" elapsed="0.024516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:59.896299" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:59.899886" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:59.898791" elapsed="0.001390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:59.901278" elapsed="0.000131"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:02:59.900572" elapsed="0.000959"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:59.900433" elapsed="0.001240"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:02:59.902359" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:02:59.902143" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T02:02:59.901910" elapsed="0.000622"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:02:59.902615" 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-19T02:02:59.907520" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:02:59.908104" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:59.908480" 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-19T02:02:59.903989" elapsed="0.004713"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:02:59.543170" elapsed="0.365764"/>
</kw>
<msg time="2026-04-19T02:02:59.909264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:02:59.542443" elapsed="0.366897"/>
</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-19T02:02:59.541345" elapsed="0.368083"/>
</kw>
<msg time="2026-04-19T02:02:59.909471" 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-19T02:02:59.540096" elapsed="0.369422"/>
</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-19T02:02:59.912639" 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-19T02:02:59.913148" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:02:59.913488" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:02:59.909815" elapsed="0.003829"/>
</kw>
<msg time="2026-04-19T02:02:59.913740" level="INFO">${output} = 1</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-19T02:02:59.538122" elapsed="0.375646"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:02:59.914337" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:02:59.913952" elapsed="0.000430"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:02:59.914427" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:02:59.914585" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:02:59.535924" elapsed="0.378688"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:02:59.914661" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:02:59.914812" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:02:59.533629" elapsed="0.381208"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:02:59.915521" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:02:59.915114" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:02:59.532516" elapsed="0.383196">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:01.919816" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:01.918829" elapsed="0.001061"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:01.921760" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:01.921376" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:01.922920" 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-19T02:03:01.923308" 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-19T02:03:01.922694" elapsed="0.000654"/>
</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-19T02:03:01.928725" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:01.928069" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:01.927972" elapsed="0.000946"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:01.931400" 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-19T02:03:01.931759" 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-19T02:03:01.930373" elapsed="0.001531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:01.933999" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:01.933384" elapsed="0.000749"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:01.935940" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:01.935214" elapsed="0.000950"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:01.938492" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:01.938570" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:01.938204" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:01.938811" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:01.940277" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:02.248057" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:02:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:01.939779" elapsed="0.308429"/>
</kw>
<msg time="2026-04-19T02:03:02.248313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:01.939411" elapsed="0.308994"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:01.937400" elapsed="0.311291"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:02.250255" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:02.273125" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:02.273632" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:02.273965" 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-19T02:03:02.249786" elapsed="0.024433"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:02.276511" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:02.279765" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:02.278737" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:02.280939" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:02.280404" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:02.280277" elapsed="0.000997"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:02.282076" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:03:02.281597" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:02.281488" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:02.282610" elapsed="0.000095"/>
</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-19T02:03:02.288960" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:03:02.289596" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:02.289955" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:02.285492" elapsed="0.004691"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:01.926118" elapsed="0.364293"/>
</kw>
<msg time="2026-04-19T02:03:02.290720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:01.925127" elapsed="0.365653"/>
</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-19T02:03:01.924325" elapsed="0.366539"/>
</kw>
<msg time="2026-04-19T02:03:02.290906" 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-19T02:03:01.923576" elapsed="0.367377"/>
</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-19T02:03:02.294162" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:03:02.294643" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:02.294958" elapsed="0.000193"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:02.291313" elapsed="0.003892"/>
</kw>
<msg time="2026-04-19T02:03:02.295299" level="INFO">${output} = 1</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-19T02:03:01.922120" elapsed="0.373204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:02.295758" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:02.295507" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:02.295845" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:02.296000" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:01.920461" elapsed="0.375564"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:02.296088" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:02.296258" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:01.917922" elapsed="0.378363"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:02.296837" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:02.296444" elapsed="0.000561">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:01.916636" elapsed="0.380499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:04.301665" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:04.300861" elapsed="0.001020"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:04.304004" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:04.303349" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:04.306094" 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-19T02:03:04.306498" 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-19T02:03:04.305729" elapsed="0.000834"/>
</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-19T02:03:04.310911" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:04.310433" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:04.310375" elapsed="0.000782"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:04.312897" 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-19T02:03:04.313174" 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-19T02:03:04.312190" elapsed="0.001087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:04.314826" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:04.314278" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:04.316747" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:04.316002" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:04.319274" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:04.319354" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:04.318947" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:04.319608" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:04.320881" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:04.637042" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:04.320555" elapsed="0.316633"/>
</kw>
<msg time="2026-04-19T02:03:04.637274" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:04.320182" elapsed="0.317182"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:04.318151" elapsed="0.319482"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:04.639130" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:04.662459" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:04.662967" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:04.663380" 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-19T02:03:04.638722" elapsed="0.024874"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:04.665912" elapsed="0.000967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:04.669224" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:04.668236" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:04.670353" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:04.669812" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:04.669686" elapsed="0.000964"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:04.671543" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:03:04.670972" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:04.670865" elapsed="0.001035"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:04.672303" 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-19T02:03:04.677090" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:03:04.677635" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:04.677991" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:04.673628" elapsed="0.004593"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:04.308997" elapsed="0.369448"/>
</kw>
<msg time="2026-04-19T02:03:04.678845" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:04.308296" elapsed="0.370609"/>
</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-19T02:03:04.307727" elapsed="0.371262"/>
</kw>
<msg time="2026-04-19T02:03:04.679059" 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-19T02:03:04.306926" elapsed="0.372184"/>
</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-19T02:03:04.682200" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T02:03:04.682831" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:04.683159" 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-19T02:03:04.679424" elapsed="0.003900"/>
</kw>
<msg time="2026-04-19T02:03:04.683424" level="INFO">${output} = 1</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-19T02:03:04.304764" elapsed="0.378686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:04.683882" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:04.683635" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:04.683969" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:03:04.684200" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:04.302377" elapsed="0.381849"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:04.684273" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:04.684418" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:04.299980" elapsed="0.384464"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:04.684997" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:04.684602" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:04.298687" elapsed="0.386512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:06.688765" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:06.687984" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:06.690919" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:06.690287" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:06.692897" 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-19T02:03:06.693177" 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-19T02:03:06.692556" elapsed="0.000684"/>
</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-19T02:03:06.698545" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:06.698052" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:06.697972" elapsed="0.000716"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:06.700433" 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-19T02:03:06.700682" 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-19T02:03:06.699694" elapsed="0.001091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:06.702363" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:06.701771" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:06.704359" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:06.703571" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:06.706771" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:06.706850" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:06.706455" 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-19T02:03:06.707104" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:06.708559" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:07.016284" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:06.708225" elapsed="0.308217"/>
</kw>
<msg time="2026-04-19T02:03:07.016528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:06.707668" elapsed="0.308952"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:06.705668" elapsed="0.311251"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:07.018477" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:07.041537" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:07.042078" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:07.042445" 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-19T02:03:07.018054" elapsed="0.024606"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:07.044905" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:07.048210" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:07.047149" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:07.049321" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:07.048787" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:07.048664" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:07.050454" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:03:07.049928" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:07.049823" elapsed="0.000986"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:07.050986" elapsed="0.000141"/>
</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-19T02:03:07.057787" elapsed="0.000488"/>
</kw>
<kw name="Open 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-19T02:03:07.058734" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:07.059275" 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-19T02:03:07.053117" elapsed="0.006601"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:06.696388" elapsed="0.363773"/>
</kw>
<msg time="2026-04-19T02:03:07.060593" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:06.695669" elapsed="0.365005"/>
</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-19T02:03:06.694823" elapsed="0.365967"/>
</kw>
<msg time="2026-04-19T02:03:07.060846" 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-19T02:03:06.693596" elapsed="0.367315"/>
</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-19T02:03:07.064249" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:07.064732" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:07.065042" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:07.061495" elapsed="0.003699"/>
</kw>
<msg time="2026-04-19T02:03:07.065287" level="INFO">${output} = 1</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-19T02:03:06.691506" elapsed="0.373806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:07.065745" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:07.065494" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:07.065834" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:07.065987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:06.689335" elapsed="0.376677"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:07.066075" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:03:07.066224" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:06.687148" elapsed="0.379101"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:07.066815" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:07.066417" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:06.685999" elapsed="0.381005">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:09.070485" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:09.069714" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:09.072636" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:09.071991" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:09.074511" 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-19T02:03:09.074654" 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-19T02:03:09.074219" elapsed="0.000473"/>
</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-19T02:03:09.080283" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:09.079622" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:09.079236" elapsed="0.001238"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:09.082467" 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-19T02:03:09.082803" 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-19T02:03:09.081838" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:09.085235" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:09.084319" elapsed="0.001069"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:09.087555" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:09.086792" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:09.089930" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:09.090009" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:09.089628" 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-19T02:03:09.090262" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:09.091777" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:09.403952" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:09.091448" elapsed="0.312606"/>
</kw>
<msg time="2026-04-19T02:03:09.404118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:09.090914" elapsed="0.313278"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:09.088842" elapsed="0.315575"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:09.405936" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:09.428241" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:09.428733" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:09.429110" 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-19T02:03:09.405606" elapsed="0.023723"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:09.431583" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:09.434708" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:09.433723" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:09.435793" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:09.435311" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:09.435192" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:09.436891" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:03:09.436442" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:09.436332" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:09.437453" elapsed="0.000105"/>
</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-19T02:03:09.444965" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:09.445514" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:09.445872" 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-19T02:03:09.440527" elapsed="0.005619"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:09.077376" elapsed="0.368991"/>
</kw>
<msg time="2026-04-19T02:03:09.446699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:09.076427" elapsed="0.370328"/>
</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-19T02:03:09.075652" elapsed="0.371185"/>
</kw>
<msg time="2026-04-19T02:03:09.446878" 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-19T02:03:09.074914" elapsed="0.372009"/>
</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-19T02:03:09.449901" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T02:03:09.450475" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:09.450767" 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-19T02:03:09.447230" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T02:03:09.451078" level="INFO">${output} = 1</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-19T02:03:09.073214" elapsed="0.377891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:09.451530" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:09.451281" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:09.451618" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:09.451893" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:09.071006" elapsed="0.380914"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:09.451969" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:03:09.452175" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:09.068855" elapsed="0.383345"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:09.452750" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:09.452357" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:09.067819" elapsed="0.385116">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:11.456355" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:11.455585" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:11.458518" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:11.457882" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:11.460366" 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-19T02:03:11.460596" 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-19T02:03:11.460011" elapsed="0.000644"/>
</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-19T02:03:11.466667" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:11.466007" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:11.465623" elapsed="0.001236"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:11.468833" 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-19T02:03:11.469221" 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-19T02:03:11.468232" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:11.471497" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:11.470708" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:11.473944" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:11.473155" elapsed="0.000900"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:11.476286" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:11.476362" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:11.475989" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:11.476595" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:11.477989" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:11.787399" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:11.477667" elapsed="0.309919"/>
</kw>
<msg time="2026-04-19T02:03:11.787659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:11.477305" elapsed="0.310435"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:11.475239" elapsed="0.312742"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:11.789418" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:11.811989" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:11.812517" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:11.812870" 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-19T02:03:11.789059" elapsed="0.024059"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:11.815282" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:11.818358" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:11.817397" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:11.819461" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:11.818932" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:11.818811" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:11.820555" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:03:11.820100" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:11.819961" elapsed="0.000995"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:11.821351" elapsed="0.000084"/>
</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-19T02:03:11.826080" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:03:11.826616" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:11.826964" 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-19T02:03:11.822729" elapsed="0.004508"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:11.463777" elapsed="0.363677"/>
</kw>
<msg time="2026-04-19T02:03:11.827755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:11.462816" elapsed="0.364996"/>
</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-19T02:03:11.462064" elapsed="0.365830"/>
</kw>
<msg time="2026-04-19T02:03:11.827936" 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-19T02:03:11.461081" elapsed="0.366901"/>
</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-19T02:03:11.830998" elapsed="0.000427"/>
</kw>
<kw name="Open 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-19T02:03:11.831591" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:11.831884" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:11.828289" elapsed="0.003760"/>
</kw>
<msg time="2026-04-19T02:03:11.832142" level="INFO">${output} = 1</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-19T02:03:11.459087" elapsed="0.373081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:11.832598" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:11.832344" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:11.832688" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:11.832871" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:11.456879" elapsed="0.376019"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:11.832946" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:11.833107" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:11.454742" elapsed="0.378391"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:11.833744" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:11.833342" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:11.453683" elapsed="0.380244">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:13.837500" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:13.836725" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:13.839685" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:13.839077" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:13.841246" 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-19T02:03:13.841389" 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-19T02:03:13.841004" elapsed="0.000422"/>
</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-19T02:03:13.849580" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:13.848875" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:13.846140" elapsed="0.003637"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:13.851338" 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-19T02:03:13.851625" 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-19T02:03:13.850872" elapsed="0.000860"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:13.853383" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:13.852757" elapsed="0.000734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:13.855187" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:13.854470" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:13.857591" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:13.857669" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:13.857304" 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-19T02:03:13.857904" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:13.859177" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:14.179895" 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 Sun Apr 19 02:02:13 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:13.858836" elapsed="0.321164"/>
</kw>
<msg time="2026-04-19T02:03:14.180098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:13.858476" elapsed="0.321704"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:13.856501" elapsed="0.323923"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:14.181994" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:14.205117" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:14.205620" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:14.205955" 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-19T02:03:14.181637" elapsed="0.024574"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:14.208453" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:14.211577" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:14.210606" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:14.212698" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:14.212200" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:14.212055" elapsed="0.000936"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:14.213794" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:03:14.213350" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:14.213243" elapsed="0.001049"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:14.214470" elapsed="0.000085"/>
</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-19T02:03:14.220378" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:03:14.220925" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:14.221298" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:14.216961" elapsed="0.004547"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:13.844291" elapsed="0.377443"/>
</kw>
<msg time="2026-04-19T02:03:14.222103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:13.843292" elapsed="0.378869"/>
</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-19T02:03:13.842378" elapsed="0.379866"/>
</kw>
<msg time="2026-04-19T02:03:14.222286" 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-19T02:03:13.841646" elapsed="0.380686"/>
</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-19T02:03:14.225405" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:03:14.225890" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:14.226293" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:14.222623" elapsed="0.003821"/>
</kw>
<msg time="2026-04-19T02:03:14.226533" level="INFO">${output} = 1</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-19T02:03:13.840333" elapsed="0.386226"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:14.226994" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:14.226742" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:14.227104" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:14.227259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:13.838115" elapsed="0.389169"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:14.227332" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:03:14.227479" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:13.835848" elapsed="0.391656"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:14.228083" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:14.227662" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:13.834732" elapsed="0.393545">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:16.231858" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:16.231021" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:16.234175" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:16.233523" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:16.236075" 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-19T02:03:16.236309" 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-19T02:03:16.235701" elapsed="0.000666"/>
</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-19T02:03:16.241899" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:16.241260" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:16.241180" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:16.244490" 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-19T02:03:16.244836" 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-19T02:03:16.243488" elapsed="0.001490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:16.247306" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:16.246367" elapsed="0.001095"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:16.249530" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:16.248813" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:16.251980" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:16.252074" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:16.251699" 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-19T02:03:16.252314" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:16.253582" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:16.833444" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:16.253253" elapsed="0.580347"/>
</kw>
<msg time="2026-04-19T02:03:16.833686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:16.252875" elapsed="0.580904"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:16.250846" elapsed="0.583235"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:16.835620" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:16.858752" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:16.859305" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:16.859690" 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-19T02:03:16.835187" elapsed="0.024738"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:16.862203" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:16.865422" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:16.864390" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:16.866659" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:16.866003" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:16.865879" elapsed="0.001082"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:16.867755" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T02:03:16.867322" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:16.867211" elapsed="0.000708"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:16.867999" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:16.872800" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:03:16.873367" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:16.873728" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:16.869396" elapsed="0.004543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:16.239239" elapsed="0.634940"/>
</kw>
<msg time="2026-04-19T02:03:16.874483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:16.238262" elapsed="0.636280"/>
</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-19T02:03:16.237432" elapsed="0.637195"/>
</kw>
<msg time="2026-04-19T02:03:16.874669" 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-19T02:03:16.236699" elapsed="0.638017"/>
</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-19T02:03:16.877803" 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-19T02:03:16.878300" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:16.878598" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:16.875009" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T02:03:16.878839" level="INFO">${output} = 1</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-19T02:03:16.234717" elapsed="0.644148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:16.879330" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:16.879078" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:16.879442" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:16.879597" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:16.232579" elapsed="0.647044"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:16.879672" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:16.879819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:16.230199" elapsed="0.649645"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:16.880411" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:16.880002" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:16.229110" elapsed="0.651484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:18.884335" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:18.883487" elapsed="0.000924"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:18.886710" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:18.885996" elapsed="0.000784"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:18.888425" 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-19T02:03:18.888696" 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-19T02:03:18.888191" elapsed="0.000544"/>
</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-19T02:03:18.894354" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:18.893625" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:18.893543" elapsed="0.001020"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:18.897131" 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-19T02:03:18.897518" 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-19T02:03:18.896060" elapsed="0.001605"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:18.899914" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:18.899179" elapsed="0.000845"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:18.901792" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:18.901006" elapsed="0.000885"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:18.904199" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:18.904279" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:18.903895" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:18.904527" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:18.906136" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:19.231492" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:18.905762" elapsed="0.325877"/>
</kw>
<msg time="2026-04-19T02:03:19.231724" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:18.905231" elapsed="0.326586"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:18.903121" elapsed="0.329008"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:19.233622" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:19.256931" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:19.257479" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:19.257834" 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-19T02:03:19.233219" elapsed="0.024880"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:19.260416" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:19.263775" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:19.262689" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:19.264564" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:19.264211" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:19.264128" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:19.265349" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:03:19.265022" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:19.264945" elapsed="0.000639"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:19.265700" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:19.272341" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:03:19.273000" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:19.273379" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:19.267689" elapsed="0.005898"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:18.891549" elapsed="0.382259"/>
</kw>
<msg time="2026-04-19T02:03:19.274229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:18.890535" elapsed="0.383752"/>
</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-19T02:03:18.889737" elapsed="0.384634"/>
</kw>
<msg time="2026-04-19T02:03:19.274535" 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-19T02:03:18.888967" elapsed="0.385617"/>
</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-19T02:03:19.277579" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:19.278111" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:19.278409" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:19.274903" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T02:03:19.278649" level="INFO">${output} = 1</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-19T02:03:18.887425" elapsed="0.391250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:19.279129" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:19.278864" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:19.279217" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:19.279370" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:18.884933" elapsed="0.394462"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:19.279441" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:19.279586" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:18.882562" elapsed="0.397048"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:19.280174" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:19.279768" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:18.881438" elapsed="0.398923">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:21.284611" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:21.283809" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:21.286920" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:21.286236" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:21.288854" 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-19T02:03:21.289189" 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-19T02:03:21.288509" elapsed="0.000748"/>
</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-19T02:03:21.294727" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:21.294243" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:21.294182" elapsed="0.000771"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:21.296733" 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-19T02:03:21.296991" 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-19T02:03:21.296000" elapsed="0.001116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:21.298684" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:21.298125" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:21.300600" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:21.299869" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:21.303047" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:21.303141" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:21.302757" 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-19T02:03:21.303376" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:21.304680" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:21.616739" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:21.304353" elapsed="0.312627"/>
</kw>
<msg time="2026-04-19T02:03:21.617174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:21.303968" elapsed="0.313365"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:21.301918" elapsed="0.315956"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:21.620471" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:21.643885" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:21.644484" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:21.644820" 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-19T02:03:21.620049" elapsed="0.024980"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:21.647307" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:21.650473" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:21.649504" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:21.651578" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:21.651051" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:21.650921" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:21.652835" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T02:03:21.652353" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:21.652240" elapsed="0.000757"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:21.653097" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:21.657804" 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-19T02:03:21.658511" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:21.658871" 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-19T02:03:21.654425" elapsed="0.004683"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:21.292732" elapsed="0.366605"/>
</kw>
<msg time="2026-04-19T02:03:21.659746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:21.292002" elapsed="0.367813"/>
</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-19T02:03:21.290816" elapsed="0.369084"/>
</kw>
<msg time="2026-04-19T02:03:21.659943" 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-19T02:03:21.289619" elapsed="0.370371"/>
</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-19T02:03:21.663113" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:03:21.663596" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:21.663901" 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-19T02:03:21.660304" elapsed="0.003768"/>
</kw>
<msg time="2026-04-19T02:03:21.664167" level="INFO">${output} = 1</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-19T02:03:21.287543" elapsed="0.376650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:21.664627" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:21.664376" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:21.664717" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:21.664894" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:21.285255" elapsed="0.379666"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:21.664969" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:03:21.665136" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:21.282815" elapsed="0.382348"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:21.665717" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:21.665323" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:21.281540" elapsed="0.384361">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:23.669712" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:23.668891" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:23.671824" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:23.671214" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:23.673765" 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-19T02:03:23.673982" 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-19T02:03:23.673423" elapsed="0.000586"/>
</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-19T02:03:23.678218" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:23.677726" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:23.677413" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:23.679803" 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-19T02:03:23.680063" 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-19T02:03:23.679361" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:23.681736" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:23.681161" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:23.683685" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:23.682965" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:23.686194" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:23.686273" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:23.685889" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:23.686510" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:23.687781" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:23.998571" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:23.687455" elapsed="0.311245"/>
</kw>
<msg time="2026-04-19T02:03:23.998778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:23.687086" elapsed="0.311777"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:23.685015" elapsed="0.314139"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:24.000628" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:24.023354" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:24.023849" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:24.024273" 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-19T02:03:24.000251" elapsed="0.024239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:24.026720" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:24.029847" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:24.028865" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:24.030967" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:24.030471" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:24.030351" elapsed="0.001078"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:24.032389" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:03:24.031752" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:24.031644" elapsed="0.001104"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:24.032928" elapsed="0.000090"/>
</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-19T02:03:24.039951" 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-19T02:03:24.040549" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:24.040903" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:24.036001" elapsed="0.005173"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:23.675950" elapsed="0.365446"/>
</kw>
<msg time="2026-04-19T02:03:24.041698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:23.675264" elapsed="0.366492"/>
</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-19T02:03:23.674709" elapsed="0.367130"/>
</kw>
<msg time="2026-04-19T02:03:24.041880" 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-19T02:03:23.674186" elapsed="0.367741"/>
</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-19T02:03:24.045156" 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-19T02:03:24.045672" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:24.045970" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:24.042434" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T02:03:24.046244" level="INFO">${output} = 1</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-19T02:03:23.672398" elapsed="0.373872"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:24.046701" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:24.046450" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:24.046787" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:03:24.046941" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:23.670274" elapsed="0.376692"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:24.047014" elapsed="0.000079"/>
</return>
<msg time="2026-04-19T02:03:24.047221" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:23.668023" elapsed="0.379225"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:24.047802" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:24.047406" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:23.666911" elapsed="0.381077">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:26.051596" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:26.050834" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:26.053779" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:26.053170" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:26.055202" 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-19T02:03:26.055345" 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-19T02:03:26.054954" elapsed="0.000428"/>
</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-19T02:03:26.060962" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:26.060316" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:26.059907" elapsed="0.001312"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:26.062922" 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-19T02:03:26.063196" 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-19T02:03:26.062477" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:26.064831" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:26.064281" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:26.066662" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:26.065941" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:26.069120" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:26.069237" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:26.068817" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:26.069485" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:26.070847" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:26.386096" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:26.070521" elapsed="0.315684"/>
</kw>
<msg time="2026-04-19T02:03:26.386275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:26.070152" elapsed="0.316202"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:26.068051" elapsed="0.318546"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:26.387995" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:26.411466" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:26.411951" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:26.412330" 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-19T02:03:26.387638" elapsed="0.024905"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:26.414961" elapsed="0.000870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:26.418279" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:26.417284" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:26.419251" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:26.418844" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:26.418726" elapsed="0.000716"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:26.419945" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:03:26.419653" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:26.419581" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:26.420505" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:26.427564" 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-19T02:03:26.428121" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:26.428474" 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-19T02:03:26.422725" elapsed="0.005953"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:26.058074" elapsed="0.370824"/>
</kw>
<msg time="2026-04-19T02:03:26.429319" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:26.057112" elapsed="0.372264"/>
</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-19T02:03:26.056334" elapsed="0.373124"/>
</kw>
<msg time="2026-04-19T02:03:26.429498" 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-19T02:03:26.055602" elapsed="0.373940"/>
</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-19T02:03:26.432676" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:03:26.433164" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:26.433454" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:26.429830" elapsed="0.003770"/>
</kw>
<msg time="2026-04-19T02:03:26.433786" level="INFO">${output} = 1</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-19T02:03:26.054226" elapsed="0.379586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:26.434291" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:26.433989" elapsed="0.000347"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:26.434379" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:26.434530" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:26.052153" elapsed="0.382402"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:26.434603" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:26.434747" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:26.049993" elapsed="0.384778"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:26.435341" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:26.434926" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:26.048879" elapsed="0.386649">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:28.439087" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:28.438279" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:28.441231" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:28.440594" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:28.443120" 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-19T02:03:28.443354" 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-19T02:03:28.442756" elapsed="0.000658"/>
</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-19T02:03:28.451396" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:28.450887" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:28.448842" elapsed="0.002692"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:28.452972" 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-19T02:03:28.453233" 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-19T02:03:28.452527" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:28.454951" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:28.454378" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:28.456762" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:28.456060" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:28.459196" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:28.459276" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:28.458868" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:28.459514" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:28.460810" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:28.787097" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:28.460448" elapsed="0.326808"/>
</kw>
<msg time="2026-04-19T02:03:28.787515" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:28.460084" elapsed="0.327506"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:28.458090" elapsed="0.329730"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:28.789348" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:28.812335" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:28.812826" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:28.813217" 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-19T02:03:28.788991" elapsed="0.024435"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:28.815708" elapsed="0.001080"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:28.819014" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:28.817996" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:28.820148" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:28.819627" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:28.819510" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:28.821242" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:03:28.820753" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:28.820649" elapsed="0.000941"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:28.821761" elapsed="0.000082"/>
</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-19T02:03:28.827231" 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-19T02:03:28.827765" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:28.828134" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:28.823910" elapsed="0.004429"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:28.447507" elapsed="0.381048"/>
</kw>
<msg time="2026-04-19T02:03:28.828852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:28.446425" elapsed="0.382483"/>
</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-19T02:03:28.445160" elapsed="0.383829"/>
</kw>
<msg time="2026-04-19T02:03:28.829033" 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-19T02:03:28.443764" elapsed="0.385329"/>
</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-19T02:03:28.832132" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:03:28.832634" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:28.832929" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:28.829383" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T02:03:28.833184" level="INFO">${output} = 1</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-19T02:03:28.441776" elapsed="0.391433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:28.833629" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:28.833384" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:28.833715" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:28.833865" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:28.439632" elapsed="0.394259"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:28.833936" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:28.834174" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:28.437395" elapsed="0.396804"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:28.834806" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:28.834412" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:28.436365" elapsed="0.398625">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:30.838807" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:30.837987" elapsed="0.000907"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:30.841147" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:30.840456" elapsed="0.000736"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:30.842374" 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-19T02:03:30.842522" 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-19T02:03:30.842131" elapsed="0.000428"/>
</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-19T02:03:30.847987" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:30.847346" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:30.847266" elapsed="0.000967"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:30.850284" 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-19T02:03:30.850535" 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-19T02:03:30.849557" elapsed="0.001079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:30.852201" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:30.851622" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:30.854137" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:30.853334" elapsed="0.000913"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:30.856568" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:30.856646" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:30.856230" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:30.856886" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:30.858337" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:31.161236" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:30.857854" elapsed="0.303533"/>
</kw>
<msg time="2026-04-19T02:03:31.161474" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:30.857483" elapsed="0.304082"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:30.855442" elapsed="0.306407"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:31.163379" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:31.186819" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:31.187404" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:31.187736" 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-19T02:03:31.162971" elapsed="0.024978"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:31.190236" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:31.193406" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:31.192427" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:31.194530" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:31.193990" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:31.193865" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:31.195564" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:03:31.195244" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:31.195129" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:31.195804" 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-19T02:03:31.200739" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:03:31.201310" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:31.201668" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:31.197216" elapsed="0.004662"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:30.845386" elapsed="0.356740"/>
</kw>
<msg time="2026-04-19T02:03:31.202439" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:30.844382" elapsed="0.358114"/>
</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-19T02:03:30.843559" elapsed="0.359021"/>
</kw>
<msg time="2026-04-19T02:03:31.202621" 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-19T02:03:30.842786" elapsed="0.359883"/>
</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-19T02:03:31.205724" 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-19T02:03:31.206221" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:31.206517" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:31.202962" elapsed="0.003703"/>
</kw>
<msg time="2026-04-19T02:03:31.206756" level="INFO">${output} = 1</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-19T02:03:30.841505" elapsed="0.365277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:31.207262" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:31.206958" elapsed="0.000350"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:31.207352" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:31.207506" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:30.839409" elapsed="0.368123"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:31.207580" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:03:31.207726" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:30.837140" elapsed="0.370611"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:31.208395" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:31.207906" elapsed="0.000561">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:30.835878" elapsed="0.372697">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:33.212088" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:33.211316" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:33.214368" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:33.213732" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:33.216217" 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-19T02:03:33.216552" 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-19T02:03:33.215850" elapsed="0.000765"/>
</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-19T02:03:33.221480" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:33.220358" elapsed="0.001242"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:33.220297" elapsed="0.001371"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:33.223942" 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-19T02:03:33.224271" 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-19T02:03:33.222933" elapsed="0.001442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:33.226008" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:33.225388" elapsed="0.000748"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:33.227841" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:33.227125" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:33.230407" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:33.230485" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:33.230111" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:33.230722" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:33.232191" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:33.547105" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:33.231704" elapsed="0.315549"/>
</kw>
<msg time="2026-04-19T02:03:33.547336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:33.231334" elapsed="0.316091"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:33.229302" elapsed="0.318410"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:33.549243" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:33.572011" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:33.572582" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:33.572912" 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-19T02:03:33.548830" elapsed="0.024343"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:33.575462" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:33.578830" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:33.577716" elapsed="0.001377"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:33.579826" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:33.579392" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:33.579310" elapsed="0.000704"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:33.580521" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:03:33.580239" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:33.580171" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:33.580850" elapsed="0.000051"/>
</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-19T02:03:33.587501" 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-19T02:03:33.588075" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:33.588448" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:33.582848" elapsed="0.005812"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:33.218947" elapsed="0.369938"/>
</kw>
<msg time="2026-04-19T02:03:33.589214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:33.218253" elapsed="0.371026"/>
</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-19T02:03:33.217696" elapsed="0.371667"/>
</kw>
<msg time="2026-04-19T02:03:33.589404" 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-19T02:03:33.217054" elapsed="0.372396"/>
</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-19T02:03:33.592617" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:03:33.593108" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:33.593404" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:33.589791" elapsed="0.003761"/>
</kw>
<msg time="2026-04-19T02:03:33.593645" level="INFO">${output} = 1</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-19T02:03:33.214908" elapsed="0.378764"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:33.594159" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:33.593853" elapsed="0.000350"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:33.594246" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:03:33.594401" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:33.212794" elapsed="0.381633"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:33.594474" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:33.594653" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:33.210477" elapsed="0.384201"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:33.595249" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:33.594835" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:33.209417" elapsed="0.386025">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:35.599069" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:35.598270" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:35.601282" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:35.600602" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:35.603185" 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-19T02:03:35.603570" 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-19T02:03:35.602792" elapsed="0.000839"/>
</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-19T02:03:35.611382" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:35.610688" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:35.610606" elapsed="0.000979"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:35.614148" 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-19T02:03:35.614511" 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-19T02:03:35.613108" elapsed="0.001550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:35.616922" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:35.616107" elapsed="0.001066"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:35.619631" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:35.618591" elapsed="0.001185"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:35.623201" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:35.623280" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:35.622894" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:35.623516" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:35.624799" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:35.941904" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:35.624455" elapsed="0.317695"/>
</kw>
<msg time="2026-04-19T02:03:35.942271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:35.624092" elapsed="0.318303"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:35.621938" elapsed="0.320809"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:35.944343" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:35.967563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:35.968224" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:35.968555" 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-19T02:03:35.943921" elapsed="0.024848"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:35.971265" elapsed="0.000736"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:35.973570" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:35.972864" elapsed="0.000859"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:35.974347" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:35.973957" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:35.973875" elapsed="0.000663"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:35.975063" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T02:03:35.974747" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:35.974677" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:35.975423" elapsed="0.000057"/>
</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-19T02:03:35.981786" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:03:35.982615" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:35.983070" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:35.977509" elapsed="0.005795"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:35.608085" elapsed="0.375454"/>
</kw>
<msg time="2026-04-19T02:03:35.983864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:35.606530" elapsed="0.377407"/>
</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-19T02:03:35.605275" elapsed="0.378768"/>
</kw>
<msg time="2026-04-19T02:03:35.984093" 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-19T02:03:35.604004" elapsed="0.380140"/>
</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-19T02:03:35.987439" 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-19T02:03:35.988001" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:35.988350" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:35.984535" elapsed="0.003971"/>
</kw>
<msg time="2026-04-19T02:03:35.988601" level="INFO">${output} = 1</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-19T02:03:35.601824" elapsed="0.386803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:35.989143" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:35.988836" elapsed="0.000354"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:35.989238" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:03:35.989401" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:35.599601" elapsed="0.389826"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:35.989474" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:35.989622" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:35.597380" elapsed="0.392268"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:35.990224" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:35.989808" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:35.596248" elapsed="0.394178">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:37.992345" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:37.991954" elapsed="0.000428"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:37.993371" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:37.993042" elapsed="0.000359"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:37.994290" 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-19T02:03:37.994401" 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-19T02:03:37.994113" elapsed="0.000322"/>
</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-19T02:03:38.003183" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:38.002676" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:38.002218" elapsed="0.001179"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:38.004853" 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-19T02:03:38.005122" 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-19T02:03:38.004397" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:38.006786" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:38.006224" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:38.008642" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:38.007878" elapsed="0.000866"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:38.011115" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:38.011195" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:38.010813" 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-19T02:03:38.011434" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:38.012734" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:38.323516" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:38.012402" elapsed="0.311484"/>
</kw>
<msg time="2026-04-19T02:03:38.323982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:38.011991" elapsed="0.312109"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:38.010042" elapsed="0.314367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:38.326240" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:38.349308" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:38.349864" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:38.350282" 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-19T02:03:38.325786" elapsed="0.024748"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:38.353069" elapsed="0.001085"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:38.356725" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:38.355559" elapsed="0.001414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:38.357950" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:38.357395" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:38.357250" elapsed="0.001047"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:38.359283" elapsed="0.000138"/>
</return>
<status status="PASS" start="2026-04-19T02:03:38.358636" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:38.358523" elapsed="0.001042"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:38.359644" 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-19T02:03:38.364605" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T02:03:38.365185" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:38.365554" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:38.361075" elapsed="0.004688"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:37.999090" elapsed="0.366895"/>
</kw>
<msg time="2026-04-19T02:03:38.366373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:37.997274" elapsed="0.369159"/>
</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-19T02:03:37.995978" elapsed="0.370539"/>
</kw>
<msg time="2026-04-19T02:03:38.366558" 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-19T02:03:37.994786" elapsed="0.371820"/>
</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-19T02:03:38.370108" 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-19T02:03:38.370611" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:38.370913" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:38.366904" elapsed="0.004204"/>
</kw>
<msg time="2026-04-19T02:03:38.371224" level="INFO">${output} = 1</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-19T02:03:37.993631" elapsed="0.377623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:38.371723" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:38.371450" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:38.371813" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:03:38.371969" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:37.992595" elapsed="0.379400"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:38.372123" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:03:38.372275" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:37.991566" elapsed="0.380734"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:38.372884" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:38.372459" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:37.990991" elapsed="0.382103">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:40.375526" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:40.375010" elapsed="0.000572"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:40.376984" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:40.376499" elapsed="0.000527"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:40.378202" 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-19T02:03:40.378347" 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-19T02:03:40.377959" elapsed="0.000426"/>
</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-19T02:03:40.384021" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:40.383372" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:40.382965" elapsed="0.001273"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:40.386281" 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-19T02:03:40.386631" 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-19T02:03:40.385634" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:40.388948" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:40.388154" elapsed="0.000975"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:40.390999" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:40.390301" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:40.393434" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:40.393515" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:40.393125" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:40.393754" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:40.395020" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:40.704448" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:40.394693" elapsed="0.309921"/>
</kw>
<msg time="2026-04-19T02:03:40.704702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:40.394331" elapsed="0.310464"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:40.392316" elapsed="0.312786"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:40.706609" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:40.729335" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:40.729898" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:40.730279" 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-19T02:03:40.706220" elapsed="0.024269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:40.732878" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:40.735651" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:40.735001" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:40.736376" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:40.736019" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:40.735937" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:40.737056" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:03:40.736761" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:40.736694" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:40.737393" elapsed="0.000051"/>
</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-19T02:03:40.744175" elapsed="0.000431"/>
</kw>
<kw name="Open 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-19T02:03:40.744830" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:40.745207" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:40.739387" elapsed="0.006030"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:40.381132" elapsed="0.364506"/>
</kw>
<msg time="2026-04-19T02:03:40.745974" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:40.380114" elapsed="0.365938"/>
</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-19T02:03:40.379346" elapsed="0.366791"/>
</kw>
<msg time="2026-04-19T02:03:40.746179" 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-19T02:03:40.378608" elapsed="0.367618"/>
</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-19T02:03:40.749409" 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-19T02:03:40.749944" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:40.750263" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:40.746609" elapsed="0.003804"/>
</kw>
<msg time="2026-04-19T02:03:40.750506" level="INFO">${output} = 1</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-19T02:03:40.377370" elapsed="0.373161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:40.750975" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:40.750726" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:40.751092" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:03:40.751246" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:40.375903" elapsed="0.375368"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:40.751318" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:40.751462" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:40.374390" elapsed="0.377096"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:40.752050" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:40.751641" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:40.373665" elapsed="0.378573">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:42.756380" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:42.755629" elapsed="0.000820"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:42.758525" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:42.757825" elapsed="0.000774"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:42.760397" 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-19T02:03:42.760622" 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-19T02:03:42.760073" elapsed="0.000610"/>
</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-19T02:03:42.769885" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:42.769208" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:42.766496" elapsed="0.003704"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:42.772143" 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-19T02:03:42.772474" 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-19T02:03:42.771515" elapsed="0.001090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:42.774648" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:42.773848" elapsed="0.000944"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:42.776999" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:42.776060" elapsed="0.001197"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:42.780272" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:42.780379" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:42.779862" 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-19T02:03:42.780694" elapsed="0.000657"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:42.782686" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:43.105272" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:42.782184" elapsed="0.323245"/>
</kw>
<msg time="2026-04-19T02:03:43.105514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:42.781660" elapsed="0.323944"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:42.778813" elapsed="0.327076"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:43.107419" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:43.130724" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:43.131322" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:43.131663" 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-19T02:03:43.107009" elapsed="0.024867"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:43.134152" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:43.137393" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:43.136362" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:43.138503" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:43.137970" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:43.137847" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:43.139635" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T02:03:43.139182" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:43.139000" elapsed="0.000798"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:43.139877" 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-19T02:03:43.144862" 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-19T02:03:43.145484" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:43.145839" 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-19T02:03:43.141323" elapsed="0.004741"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:42.764373" elapsed="0.381916"/>
</kw>
<msg time="2026-04-19T02:03:43.146597" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:42.763202" elapsed="0.383451"/>
</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-19T02:03:42.762241" elapsed="0.384493"/>
</kw>
<msg time="2026-04-19T02:03:43.146776" 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-19T02:03:42.761062" elapsed="0.385760"/>
</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-19T02:03:43.149959" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:43.150458" elapsed="0.000256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:43.150866" 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-19T02:03:43.147194" elapsed="0.003821"/>
</kw>
<msg time="2026-04-19T02:03:43.151198" level="INFO">${output} = 1</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-19T02:03:42.759132" elapsed="0.392092"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:43.151647" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:43.151399" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:43.151743" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:43.151893" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:42.756896" elapsed="0.395022"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:43.151965" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:03:43.152137" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:42.754789" elapsed="0.397373"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:43.152712" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:43.152320" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:42.753299" elapsed="0.399593">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:45.156463" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:45.155694" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:45.158568" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:45.157933" elapsed="0.000757"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:45.160526" 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-19T02:03:45.160845" 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-19T02:03:45.160196" elapsed="0.000712"/>
</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-19T02:03:45.167474" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:45.166814" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:45.166737" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:45.169337" 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-19T02:03:45.169586" 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-19T02:03:45.168645" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:45.171276" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:45.170667" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:45.173055" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:45.172347" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:45.175494" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:45.175573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:45.175213" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:45.175808" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:45.177084" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:45.494392" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:45.176741" elapsed="0.317892"/>
</kw>
<msg time="2026-04-19T02:03:45.494717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:45.176375" elapsed="0.318430"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:45.174347" elapsed="0.320759"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:45.496756" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:45.519768" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:45.520314" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:45.520645" 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-19T02:03:45.496348" elapsed="0.024509"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:45.523143" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:45.526382" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:45.525378" elapsed="0.001239"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:45.527538" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:45.526968" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:45.526844" elapsed="0.001078"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:45.528727" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:03:45.528283" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:45.528175" elapsed="0.001123"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:45.529475" elapsed="0.000082"/>
</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-19T02:03:45.535733" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:03:45.536301" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:45.536661" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:45.532173" elapsed="0.004701"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:45.164863" elapsed="0.372303"/>
</kw>
<msg time="2026-04-19T02:03:45.537472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:45.163729" elapsed="0.373803"/>
</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-19T02:03:45.162457" elapsed="0.375160"/>
</kw>
<msg time="2026-04-19T02:03:45.537659" 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-19T02:03:45.161293" elapsed="0.376417"/>
</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-19T02:03:45.540754" elapsed="0.000473"/>
</kw>
<kw name="Open 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-19T02:03:45.541394" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:45.541703" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:45.538003" elapsed="0.003851"/>
</kw>
<msg time="2026-04-19T02:03:45.541949" level="INFO">${output} = 1</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-19T02:03:45.159230" elapsed="0.382745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:45.542447" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:45.542194" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:45.542537" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:03:45.542696" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:45.156989" elapsed="0.385733"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:45.542769" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:03:45.542916" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:45.154797" elapsed="0.388143"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:45.543614" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:45.543186" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:45.153711" elapsed="0.390117">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:47.547384" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:47.546611" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:47.549486" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:47.548853" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:47.551167" 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-19T02:03:47.551314" 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-19T02:03:47.550926" elapsed="0.000425"/>
</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-19T02:03:47.556645" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:47.555991" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:47.555915" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:47.559138" 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-19T02:03:47.559390" 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-19T02:03:47.558269" elapsed="0.001224"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:47.561100" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:47.560474" elapsed="0.000740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:47.563259" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:47.562360" elapsed="0.000999"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:47.565942" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:47.566021" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:47.565645" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:47.566319" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:47.567783" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:47.885464" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:47.567455" elapsed="0.318195"/>
</kw>
<msg time="2026-04-19T02:03:47.885756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:47.566884" elapsed="0.318990"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:47.564752" elapsed="0.321477"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:47.887778" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:47.911089" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:47.911687" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:47.912017" 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-19T02:03:47.887355" elapsed="0.024921"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:47.914617" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:47.917238" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:47.916525" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:47.918001" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:47.917641" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:47.917551" elapsed="0.000673"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:47.918766" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T02:03:47.918446" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:47.918372" elapsed="0.000643"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:47.919164" elapsed="0.000055"/>
</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-19T02:03:47.925799" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:03:47.926434" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:47.926847" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:47.921255" elapsed="0.005821"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:47.554057" elapsed="0.373248"/>
</kw>
<msg time="2026-04-19T02:03:47.927622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:47.553084" elapsed="0.374608"/>
</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-19T02:03:47.552316" elapsed="0.375461"/>
</kw>
<msg time="2026-04-19T02:03:47.927817" 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-19T02:03:47.551575" elapsed="0.376297"/>
</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-19T02:03:47.931133" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:03:47.931611" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:47.931908" elapsed="0.000325"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:47.928302" elapsed="0.003984"/>
</kw>
<msg time="2026-04-19T02:03:47.932381" level="INFO">${output} = 1</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-19T02:03:47.550052" elapsed="0.382355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:47.932869" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:47.932617" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:47.932957" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:03:47.933130" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:47.547911" elapsed="0.385245"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:47.933203" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:47.933348" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:47.545739" elapsed="0.387634"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:47.934095" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:47.933529" elapsed="0.000652">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:47.544662" elapsed="0.389632">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:49.936215" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:49.935831" elapsed="0.000420"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:49.937325" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:49.937017" elapsed="0.000336"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:49.938179" 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-19T02:03:49.938284" 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-19T02:03:49.937990" elapsed="0.000321"/>
</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-19T02:03:49.942150" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:49.941667" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:49.941609" elapsed="0.000679"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:49.943979" 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-19T02:03:49.944265" 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-19T02:03:49.943304" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:49.945885" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:49.945339" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:49.947739" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:49.946966" elapsed="0.000871"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:49.950133" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:49.950213" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:49.949824" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:49.950447" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:49.951803" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:50.255119" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:49.951473" elapsed="0.303769"/>
</kw>
<msg time="2026-04-19T02:03:50.255318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:49.951001" elapsed="0.304400"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:49.949063" elapsed="0.306600"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:50.257116" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:50.280116" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:50.280608" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:50.280937" 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-19T02:03:50.256728" elapsed="0.024460"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:50.283558" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:50.286828" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:50.285878" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:50.288018" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:50.287425" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:50.287304" elapsed="0.001041"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:50.289251" elapsed="0.000166"/>
</return>
<status status="PASS" start="2026-04-19T02:03:50.288661" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:50.288556" elapsed="0.001104"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:50.289844" elapsed="0.000071"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:50.294609" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:03:50.295176" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:50.295531" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:50.291200" elapsed="0.004540"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:49.940253" elapsed="0.355710"/>
</kw>
<msg time="2026-04-19T02:03:50.296307" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:49.939546" elapsed="0.356820"/>
</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-19T02:03:49.938992" elapsed="0.357457"/>
</kw>
<msg time="2026-04-19T02:03:50.296490" 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-19T02:03:49.938474" elapsed="0.358063"/>
</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-19T02:03:50.299556" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:03:50.300045" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:50.300343" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:50.296830" elapsed="0.003662"/>
</kw>
<msg time="2026-04-19T02:03:50.300584" level="INFO">${output} = 1</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-19T02:03:49.937573" elapsed="0.363037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:50.301145" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:50.300785" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:50.301236" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:50.301402" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:49.936577" elapsed="0.364851"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:50.301479" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:03:50.301624" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:49.935448" elapsed="0.366201"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:50.302309" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:50.301806" elapsed="0.000576">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:49.934840" elapsed="0.367651">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:52.306116" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:52.305323" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:52.308361" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:52.307661" elapsed="0.000761"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:52.309748" 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-19T02:03:52.310018" 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-19T02:03:52.309517" elapsed="0.000570"/>
</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-19T02:03:52.315898" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:52.315251" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:52.314840" elapsed="0.001276"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:52.317857" 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-19T02:03:52.318133" 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-19T02:03:52.317409" elapsed="0.000824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:52.319758" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:52.319218" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:52.321588" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:52.320869" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:52.324029" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:52.324123" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:52.323742" 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-19T02:03:52.324359" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:52.325662" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:52.676597" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:52.325339" elapsed="0.351415"/>
</kw>
<msg time="2026-04-19T02:03:52.676839" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:52.324955" elapsed="0.351976"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:52.322955" elapsed="0.354289"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:52.678776" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:52.701850" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:52.702407" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:52.702808" 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-19T02:03:52.678384" elapsed="0.024640"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:52.705282" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:52.708448" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:52.707433" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:52.709556" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:52.709019" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:52.708898" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:52.710647" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:03:52.710203" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:52.710090" elapsed="0.000993"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:52.711266" elapsed="0.000084"/>
</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-19T02:03:52.716376" 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-19T02:03:52.716998" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:52.717376" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:52.712983" elapsed="0.004603"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:52.312799" elapsed="0.405007"/>
</kw>
<msg time="2026-04-19T02:03:52.718141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:52.311824" elapsed="0.406375"/>
</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-19T02:03:52.311046" elapsed="0.407237"/>
</kw>
<msg time="2026-04-19T02:03:52.718326" 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-19T02:03:52.310318" elapsed="0.408055"/>
</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-19T02:03:52.721410" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:03:52.721885" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:52.722198" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:52.718665" elapsed="0.003681"/>
</kw>
<msg time="2026-04-19T02:03:52.722435" level="INFO">${output} = 1</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-19T02:03:52.308909" elapsed="0.413552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:52.722905" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:52.722639" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:52.722992" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:03:52.723160" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:52.306705" elapsed="0.416503"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:52.723258" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:52.723404" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:52.304463" elapsed="0.418965"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:52.723973" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:52.723585" elapsed="0.000555">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:52.303349" elapsed="0.420908">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:54.727815" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:54.727091" elapsed="0.000792"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:54.729963" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:54.729321" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:54.731529" 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-19T02:03:54.731677" 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-19T02:03:54.731305" elapsed="0.000411"/>
</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-19T02:03:54.737655" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:54.736955" elapsed="0.000907"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:54.736563" elapsed="0.001388"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:54.739871" 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-19T02:03:54.740149" 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-19T02:03:54.739423" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:54.741774" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:54.741232" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:54.743616" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:54.742896" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:54.746011" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:54.746107" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:54.745726" 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-19T02:03:54.746370" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:54.747641" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:55.056566" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:54.747320" elapsed="0.309497"/>
</kw>
<msg time="2026-04-19T02:03:55.056967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:54.746940" elapsed="0.310204"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:54.744928" elapsed="0.312756"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:55.060848" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:55.084087" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:55.084590" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:55.084915" 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-19T02:03:55.060003" elapsed="0.025168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:55.087376" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:55.090576" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:55.089591" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:55.091695" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:55.091191" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:55.091036" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:55.092800" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:03:55.092353" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:55.092247" elapsed="0.001051"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:55.093526" elapsed="0.000085"/>
</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-19T02:03:55.098603" 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-19T02:03:55.099199" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:55.099562" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:55.095115" elapsed="0.004658"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:54.734600" elapsed="0.365397"/>
</kw>
<msg time="2026-04-19T02:03:55.100428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:54.733554" elapsed="0.366938"/>
</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-19T02:03:54.732741" elapsed="0.367834"/>
</kw>
<msg time="2026-04-19T02:03:55.100615" 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-19T02:03:54.731948" elapsed="0.368713"/>
</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-19T02:03:55.103717" 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-19T02:03:55.104210" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:55.104505" elapsed="0.000229"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:55.100961" elapsed="0.003829"/>
</kw>
<msg time="2026-04-19T02:03:55.104884" level="INFO">${output} = 1</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-19T02:03:54.730531" elapsed="0.374378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:55.105483" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:55.105227" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:55.105571" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:03:55.105742" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:54.728391" elapsed="0.377376"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:55.105814" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:55.105956" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:54.726209" elapsed="0.379772"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:55.106554" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:55.106160" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:54.725136" elapsed="0.381604">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:57.110257" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:57.109499" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:57.112380" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:57.111714" elapsed="0.000727"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:57.114236" 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-19T02:03:57.114463" 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-19T02:03:57.113873" elapsed="0.000649"/>
</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-19T02:03:57.123409" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:57.122715" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:57.120217" elapsed="0.003396"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:57.125571" 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-19T02:03:57.125812" 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-19T02:03:57.125127" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:57.127503" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:57.126883" elapsed="0.000727"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:57.129346" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:57.128637" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:57.131749" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:57.131826" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:57.131469" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:57.132075" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:57.133344" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:57.448463" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:57.133004" elapsed="0.315597"/>
</kw>
<msg time="2026-04-19T02:03:57.448682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:57.132651" elapsed="0.316119"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:57.130625" elapsed="0.318475"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:57.450581" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:57.473522" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:57.474017" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:57.474406" 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-19T02:03:57.450190" elapsed="0.024428"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:57.476839" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:57.479400" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:57.478761" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:57.480118" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:57.479767" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:57.479686" 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-19T02:03:57.480787" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:03:57.480505" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:57.480438" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:57.481159" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:57.487614" 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-19T02:03:57.488180" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:57.488535" 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-19T02:03:57.483255" elapsed="0.005486"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:57.118239" elapsed="0.370723"/>
</kw>
<msg time="2026-04-19T02:03:57.489282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:57.117282" elapsed="0.372057"/>
</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-19T02:03:57.116070" elapsed="0.373350"/>
</kw>
<msg time="2026-04-19T02:03:57.489461" 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-19T02:03:57.114870" elapsed="0.374636"/>
</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-19T02:03:57.492704" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:03:57.493200" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:57.493496" elapsed="0.000128"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:57.489880" elapsed="0.003799"/>
</kw>
<msg time="2026-04-19T02:03:57.493771" level="INFO">${output} = 1</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-19T02:03:57.112923" elapsed="0.380874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:57.494241" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:57.493977" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:57.494329" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:03:57.494478" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:57.110776" elapsed="0.383726"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:57.494548" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:03:57.494690" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:57.108662" elapsed="0.386051"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:57.495338" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:57.494869" elapsed="0.000544">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:57.107594" elapsed="0.387929">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:03:59.498001" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:03:59.497525" elapsed="0.000544"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:03:59.499385" level="INFO">${member_ip} = 10.30.171.128</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-19T02:03:59.498959" elapsed="0.000464"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:59.500549" 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-19T02:03:59.500692" 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-19T02:03:59.500330" elapsed="0.000399"/>
</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-19T02:03:59.505645" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:03:59.505180" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:59.505121" elapsed="0.000664"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:59.507495" 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-19T02:03:59.507745" 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-19T02:03:59.506778" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:59.509405" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:59.508839" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:03:59.511366" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:03:59.510524" elapsed="0.000942"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:03:59.513740" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:03:59.513818" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:03:59.513457" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:59.514071" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:03:59.515619" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:03:59.824264" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:03:59.515289" elapsed="0.309120"/>
</kw>
<msg time="2026-04-19T02:03:59.824491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:59.514720" elapsed="0.309861"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:03:59.512675" elapsed="0.312175"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:03:59.826323" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:03:59.848859" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:03:59.849443" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:03:59.849779" 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-19T02:03:59.825920" elapsed="0.024076"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:59.851925" elapsed="0.000649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:59.854017" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:59.853398" 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-19T02:03:59.854773" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:03:59.854417" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:59.854336" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:03:59.855563" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:03:59.855272" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T02:03:59.855187" elapsed="0.000606"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:03:59.855907" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:59.861669" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:03:59.862249" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:59.862611" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:59.857796" elapsed="0.005023"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:03:59.503461" elapsed="0.359721"/>
</kw>
<msg time="2026-04-19T02:03:59.863492" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:03:59.502463" elapsed="0.361092"/>
</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-19T02:03:59.501700" elapsed="0.361938"/>
</kw>
<msg time="2026-04-19T02:03:59.863679" 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-19T02:03:59.500950" elapsed="0.362776"/>
</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-19T02:03:59.866725" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T02:03:59.867357" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:03:59.867658" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:03:59.864023" elapsed="0.003785"/>
</kw>
<msg time="2026-04-19T02:03:59.867976" level="INFO">${output} = 1</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-19T02:03:59.499730" elapsed="0.368272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:03:59.868504" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:03:59.868221" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:03:59.868596" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:03:59.868758" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:03:59.498377" elapsed="0.370407"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:03:59.868833" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:03:59.868981" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:03:59.496981" elapsed="0.372026"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:03:59.869577" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:03:59.869185" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:03:59.496300" elapsed="0.373461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:01.873411" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:01.872609" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:01.875706" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:01.874940" elapsed="0.000830"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:01.877619" 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-19T02:04:01.877852" 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-19T02:04:01.877286" elapsed="0.000627"/>
</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-19T02:04:01.885491" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:01.884810" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:01.884730" elapsed="0.000964"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:01.887978" 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-19T02:04:01.888272" 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-19T02:04:01.887197" elapsed="0.001180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:01.889962" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:01.889398" elapsed="0.000715"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:01.891896" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:01.891155" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:01.894488" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:01.894570" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:01.894169" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:01.894814" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:01.896178" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:02.213942" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:03:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:01.895798" elapsed="0.318380"/>
</kw>
<msg time="2026-04-19T02:04:02.214256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:01.895425" elapsed="0.318911"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:01.893323" elapsed="0.321290"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:02.216109" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:02.239011" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:02.239547" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:02.239880" 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-19T02:04:02.215708" elapsed="0.024423"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:02.242369" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:02.245466" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:02.244514" elapsed="0.001095"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:02.246182" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:02.245832" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:02.245753" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:02.246858" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:04:02.246574" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:02.246506" elapsed="0.000604"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:02.247223" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:02.253863" 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-19T02:04:02.254582" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:02.254937" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:02.249139" elapsed="0.006025"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:01.882444" elapsed="0.372945"/>
</kw>
<msg time="2026-04-19T02:04:02.255776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:01.880953" elapsed="0.374885"/>
</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-19T02:04:01.879553" elapsed="0.376369"/>
</kw>
<msg time="2026-04-19T02:04:02.255964" 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-19T02:04:01.878344" elapsed="0.377667"/>
</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-19T02:04:02.259120" 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-19T02:04:02.259598" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:02.259894" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:02.256324" elapsed="0.003735"/>
</kw>
<msg time="2026-04-19T02:04:02.260154" level="INFO">${output} = 1</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-19T02:04:01.876318" elapsed="0.383862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:02.260605" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:02.260357" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:02.260694" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:02.260880" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:01.873938" elapsed="0.386970"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:02.260956" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:02.261130" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:01.871766" elapsed="0.389390"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:02.261801" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:02.261402" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:01.870711" elapsed="0.391272">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:04.265680" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:04.264882" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:04.267813" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:04.267178" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:04.269713" 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-19T02:04:04.269944" 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-19T02:04:04.269344" elapsed="0.000658"/>
</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-19T02:04:04.275264" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:04.274776" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:04.274716" elapsed="0.000701"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:04.277126" 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-19T02:04:04.277374" 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-19T02:04:04.276423" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:04.279003" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:04.278461" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:04.280874" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:04.280179" elapsed="0.000794"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:04.283366" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:04.283448" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:04.282966" elapsed="0.000508"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:04.283686" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:04.284943" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:04.604765" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:04.284615" elapsed="0.320308"/>
</kw>
<msg time="2026-04-19T02:04:04.605013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:04.284258" elapsed="0.320872"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:04.282210" elapsed="0.323224"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:04.607093" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:04.630134" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:04.630375" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:04.630525" 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-19T02:04:04.606682" elapsed="0.023939"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:04.631657" elapsed="0.000465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:04.633172" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:04.632702" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:04.633744" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:04.633493" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:04.633424" elapsed="0.000460"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:04.634258" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:04:04.634047" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:04.633983" elapsed="0.000444"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:04.634508" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:04.639266" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:04.639818" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:04.640278" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:04.635848" elapsed="0.004650"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:04.273393" elapsed="0.367326"/>
</kw>
<msg time="2026-04-19T02:04:04.641049" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:04.272688" elapsed="0.368421"/>
</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-19T02:04:04.271750" elapsed="0.369443"/>
</kw>
<msg time="2026-04-19T02:04:04.641233" 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-19T02:04:04.270479" elapsed="0.370801"/>
</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-19T02:04:04.644519" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:04:04.644994" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:04.645312" 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-19T02:04:04.641605" elapsed="0.003878"/>
</kw>
<msg time="2026-04-19T02:04:04.645597" level="INFO">${output} = 1</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-19T02:04:04.268391" elapsed="0.377233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:04.646067" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:04.645802" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:04.646156" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:04.646310" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:04.266237" elapsed="0.380098"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:04.646384" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:04.646533" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:04.264018" elapsed="0.382539"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:04.647125" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:04.646714" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:04.262841" elapsed="0.384472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:06.651095" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:06.650282" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:06.653107" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:06.652698" elapsed="0.000448"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:06.654274" 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-19T02:04:06.654418" 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-19T02:04:06.654053" elapsed="0.000403"/>
</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-19T02:04:06.660355" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:06.659645" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:06.659267" elapsed="0.001286"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:06.661997" 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-19T02:04:06.662261" 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-19T02:04:06.661551" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:06.663889" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:06.663341" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:06.665928" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:06.664998" elapsed="0.001105"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:06.668391" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:06.668468" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:06.668108" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:06.668703" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:06.669955" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:06.983593" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:06.669634" elapsed="0.314078"/>
</kw>
<msg time="2026-04-19T02:04:06.983786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:06.669278" elapsed="0.314586"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:06.667312" elapsed="0.316830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:06.985663" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:07.008266" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:07.008760" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:07.009135" 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-19T02:04:06.985223" elapsed="0.024124"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:07.011556" elapsed="0.000934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:07.014661" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:07.013800" elapsed="0.001004"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:07.015448" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:07.015022" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:07.014946" elapsed="0.000691"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:07.016144" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:04:07.015838" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:07.015770" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:07.016488" elapsed="0.000051"/>
</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-19T02:04:07.023091" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:04:07.023682" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:07.024063" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:07.018485" elapsed="0.005791"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:06.657269" elapsed="0.367232"/>
</kw>
<msg time="2026-04-19T02:04:07.024810" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:06.656200" elapsed="0.368669"/>
</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-19T02:04:06.655419" elapsed="0.369531"/>
</kw>
<msg time="2026-04-19T02:04:07.024991" 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-19T02:04:06.654680" elapsed="0.370372"/>
</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-19T02:04:07.028140" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:04:07.028667" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:07.028963" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:07.025342" elapsed="0.003791"/>
</kw>
<msg time="2026-04-19T02:04:07.029225" level="INFO">${output} = 1</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-19T02:04:06.653457" elapsed="0.375794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:07.029705" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:07.029427" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:07.029799" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:04:07.029955" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:06.651825" elapsed="0.378156"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:07.030028" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:04:07.030191" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:06.649386" elapsed="0.380830"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:07.030774" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:07.030373" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:06.648188" elapsed="0.382775">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:09.033245" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:09.032775" elapsed="0.000514"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:09.034494" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:09.034146" elapsed="0.000383"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:09.035585" 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-19T02:04:09.035848" 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-19T02:04:09.035370" elapsed="0.000514"/>
</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-19T02:04:09.041477" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:09.040692" elapsed="0.000913"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:09.040262" elapsed="0.001496"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:09.043686" 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-19T02:04:09.044030" 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-19T02:04:09.043016" elapsed="0.001190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:09.046197" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:09.045444" elapsed="0.000868"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:09.048157" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:09.047311" elapsed="0.000947"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:09.050647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:09.050727" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:09.050355" 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-19T02:04:09.050968" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:09.052504" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:09.375834" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:09.051948" elapsed="0.324037"/>
</kw>
<msg time="2026-04-19T02:04:09.376086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:09.051585" elapsed="0.324592"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:09.049495" elapsed="0.326970"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:09.377949" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:09.400798" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:09.401343" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:09.401677" 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-19T02:04:09.377559" elapsed="0.024330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:09.404157" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:09.407326" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:09.406310" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:09.408100" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:09.407755" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:09.407676" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:09.408760" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:04:09.408486" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:09.408418" elapsed="0.000565"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:09.409117" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:09.415663" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:04:09.416349" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:09.416713" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:09.411050" elapsed="0.005874"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:09.038516" elapsed="0.378657"/>
</kw>
<msg time="2026-04-19T02:04:09.417523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:09.037539" elapsed="0.380045"/>
</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-19T02:04:09.036831" elapsed="0.380839"/>
</kw>
<msg time="2026-04-19T02:04:09.417712" 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-19T02:04:09.036117" elapsed="0.381643"/>
</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-19T02:04:09.420803" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:04:09.421294" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:09.421591" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:09.418154" elapsed="0.003625"/>
</kw>
<msg time="2026-04-19T02:04:09.421873" level="INFO">${output} = 1</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-19T02:04:09.034814" elapsed="0.387084"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:09.422390" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:09.422140" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:09.422477" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:04:09.422632" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:09.033565" elapsed="0.389092"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:09.422703" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:04:09.422845" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:09.032288" elapsed="0.390581"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:09.423749" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:09.423283" elapsed="0.000545">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:09.031566" elapsed="0.392380">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:11.427489" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:11.426724" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:11.429618" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:11.428953" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:11.430925" 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-19T02:04:11.431092" 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-19T02:04:11.430681" elapsed="0.000450"/>
</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-19T02:04:11.438937" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:11.438433" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:11.435984" elapsed="0.003199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:11.440654" 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-19T02:04:11.440909" 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-19T02:04:11.440189" elapsed="0.000822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:11.442608" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:11.442051" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:11.444505" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:11.443787" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:11.446910" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:11.446987" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:11.446629" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:11.447314" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:11.448572" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:11.793169" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:11.448248" elapsed="0.345075"/>
</kw>
<msg time="2026-04-19T02:04:11.793409" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:11.447874" elapsed="0.345624"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:11.445854" elapsed="0.347928"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:11.795293" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:11.817668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:11.818365" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:11.818702" 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-19T02:04:11.794887" elapsed="0.024025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:11.821207" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:11.824607" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:11.823616" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:11.825720" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:11.825219" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:11.825091" elapsed="0.000919"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:11.826793" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:04:11.826523" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:11.826372" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:11.827145" 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-19T02:04:11.831888" 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-19T02:04:11.832461" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:11.832817" 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-19T02:04:11.828455" elapsed="0.004567"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:11.434013" elapsed="0.399248"/>
</kw>
<msg time="2026-04-19T02:04:11.833633" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:11.432914" elapsed="0.400783"/>
</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-19T02:04:11.432100" elapsed="0.401677"/>
</kw>
<msg time="2026-04-19T02:04:11.833817" 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-19T02:04:11.431354" elapsed="0.402508"/>
</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-19T02:04:11.836896" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:04:11.837394" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:11.837692" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:11.834180" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T02:04:11.837926" level="INFO">${output} = 1</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-19T02:04:11.430056" elapsed="0.407895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:11.838425" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:11.838167" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:11.838514" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:11.838668" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:11.428011" elapsed="0.410682"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:11.838740" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:04:11.838884" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:11.425883" elapsed="0.413026"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:11.839558" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:11.839163" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:11.424727" elapsed="0.415011">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:13.843124" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:13.842335" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:13.845208" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:13.844580" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:13.847166" 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-19T02:04:13.847394" 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-19T02:04:13.846769" elapsed="0.000684"/>
</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-19T02:04:13.853343" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:13.852649" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:13.852567" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:13.855924" 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-19T02:04:13.856189" 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-19T02:04:13.855073" elapsed="0.001217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:13.857816" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:13.857276" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:13.859752" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:13.858984" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:13.862135" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:13.862213" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:13.861837" 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-19T02:04:13.862450" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:13.863882" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:14.167163" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:13.863556" elapsed="0.303754"/>
</kw>
<msg time="2026-04-19T02:04:14.167392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:13.863188" elapsed="0.304291"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:13.861072" elapsed="0.306713"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:14.169272" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:14.192072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:14.192578" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:14.192912" 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-19T02:04:14.168868" elapsed="0.024297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:14.195387" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:14.197872" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:14.197265" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:14.198586" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:14.198262" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:14.198182" 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-19T02:04:14.199278" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:04:14.198975" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:14.198908" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:14.199679" elapsed="0.000076"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:14.205946" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:04:14.206506" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:14.206862" 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-19T02:04:14.201632" elapsed="0.005455"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:13.850369" elapsed="0.356941"/>
</kw>
<msg time="2026-04-19T02:04:14.207640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:13.849346" elapsed="0.358369"/>
</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-19T02:04:13.848535" elapsed="0.359265"/>
</kw>
<msg time="2026-04-19T02:04:14.207840" 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-19T02:04:13.847746" elapsed="0.360140"/>
</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-19T02:04:14.211013" 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-19T02:04:14.211502" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:14.211856" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:14.208256" elapsed="0.003751"/>
</kw>
<msg time="2026-04-19T02:04:14.212122" level="INFO">${output} = 1</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-19T02:04:13.845746" elapsed="0.366403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:14.212582" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:14.212330" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:14.212670" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:14.212827" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:13.843643" elapsed="0.369210"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:14.212901" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:14.213096" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:13.841506" elapsed="0.371617"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:14.213695" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:14.213284" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:13.840493" elapsed="0.373566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:16.217547" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:16.216780" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:16.219812" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:16.219166" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:16.221144" 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-19T02:04:16.221288" 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-19T02:04:16.220900" elapsed="0.000424"/>
</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-19T02:04:16.226756" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:16.226124" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:16.226024" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:16.228924" 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-19T02:04:16.229191" 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-19T02:04:16.228221" elapsed="0.001072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:16.230842" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:16.230285" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:16.232674" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:16.231938" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:16.235144" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:16.235223" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:16.234846" 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-19T02:04:16.235479" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:16.236831" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:16.553417" 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 Sun Apr 19 02:03:16 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:16.236506" elapsed="0.317048"/>
</kw>
<msg time="2026-04-19T02:04:16.553633" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:16.236133" elapsed="0.317585"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:16.234090" elapsed="0.319902"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:16.555497" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:16.577932" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:16.578494" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:16.578831" 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-19T02:04:16.555106" elapsed="0.023985"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:16.581414" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:16.584795" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:16.583741" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:16.585506" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:16.585188" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:16.585106" elapsed="0.000584"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:16.586204" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:04:16.585897" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:16.585829" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:16.586541" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:16.593132" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:04:16.593680" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:16.594053" 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-19T02:04:16.588505" elapsed="0.005762"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:16.224000" elapsed="0.370497"/>
</kw>
<msg time="2026-04-19T02:04:16.594814" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:16.223054" elapsed="0.371818"/>
</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-19T02:04:16.222292" elapsed="0.372663"/>
</kw>
<msg time="2026-04-19T02:04:16.594997" 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-19T02:04:16.221543" elapsed="0.373525"/>
</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-19T02:04:16.598339" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:16.598823" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:16.599154" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:16.595381" elapsed="0.003931"/>
</kw>
<msg time="2026-04-19T02:04:16.599467" level="INFO">${output} = 1</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-19T02:04:16.220321" elapsed="0.379174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:16.599959" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:16.599676" elapsed="0.000332"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:16.600084" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:04:16.600243" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:16.218104" elapsed="0.382165"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:16.600319" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:16.600467" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:16.215939" elapsed="0.384555"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:16.601067" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:16.600652" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:16.214863" elapsed="0.386388">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:18.605249" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:18.604414" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:18.607514" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:18.606791" elapsed="0.000785"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:18.609394" 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-19T02:04:18.609624" 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-19T02:04:18.609010" elapsed="0.000673"/>
</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-19T02:04:18.614711" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:18.614244" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:18.614186" elapsed="0.000667"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:18.616586" 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-19T02:04:18.616834" 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-19T02:04:18.615863" elapsed="0.001072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:18.618514" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:18.617928" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:18.620364" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:18.619639" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:18.622851" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:18.622942" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:18.622568" 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-19T02:04:18.623198" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:18.624458" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:19.216979" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:18.624132" elapsed="0.593125"/>
</kw>
<msg time="2026-04-19T02:04:19.217347" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:18.623756" elapsed="0.593686"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:18.621695" elapsed="0.596028"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:19.219234" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:19.241942" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:19.242496" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:19.242836" 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-19T02:04:19.218821" elapsed="0.024262"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:19.245449" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:19.248693" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:19.247632" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:19.249823" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:19.249318" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:19.249192" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:19.250943" elapsed="0.000148"/>
</return>
<status status="PASS" start="2026-04-19T02:04:19.250488" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:19.250379" elapsed="0.000955"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:19.251512" elapsed="0.000086"/>
</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-19T02:04:19.257091" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:19.257642" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:19.257999" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:19.253713" elapsed="0.004513"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:18.612832" elapsed="0.645619"/>
</kw>
<msg time="2026-04-19T02:04:19.258755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:18.612135" elapsed="0.646679"/>
</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-19T02:04:18.611287" elapsed="0.647610"/>
</kw>
<msg time="2026-04-19T02:04:19.258938" 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-19T02:04:18.610068" elapsed="0.648916"/>
</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-19T02:04:19.262044" 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-19T02:04:19.262531" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:19.262832" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:19.259292" elapsed="0.003696"/>
</kw>
<msg time="2026-04-19T02:04:19.263098" level="INFO">${output} = 1</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-19T02:04:18.608096" elapsed="0.655029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:19.263558" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:19.263306" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:19.263649" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:04:19.263815" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:18.605796" elapsed="0.658045"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:19.263888" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:19.264126" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:18.603518" elapsed="0.660636"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:19.264914" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:19.264368" elapsed="0.000629">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:18.602392" elapsed="0.662734">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:21.268845" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:21.268105" elapsed="0.000811"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:21.271139" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:21.270590" elapsed="0.000588"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:21.272295" 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-19T02:04:21.272439" 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-19T02:04:21.272075" elapsed="0.000402"/>
</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-19T02:04:21.278098" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:21.277437" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:21.277016" elapsed="0.001335"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:21.279991" 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-19T02:04:21.280258" 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-19T02:04:21.279531" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:21.281875" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:21.281328" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:21.283720" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:21.282990" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:21.286152" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:21.286312" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:21.285852" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:21.286562" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:21.287834" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:21.605145" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:21.287509" elapsed="0.317805"/>
</kw>
<msg time="2026-04-19T02:04:21.605403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:21.287148" elapsed="0.318348"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:21.285089" elapsed="0.320697"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:21.607372" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:21.629907" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:21.630458" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:21.630827" 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-19T02:04:21.606946" elapsed="0.024130"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:21.633319" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:21.636526" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:21.635539" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:21.637662" elapsed="0.000084"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:21.637151" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:21.636991" elapsed="0.001004"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:21.638912" elapsed="0.000258"/>
</return>
<status status="PASS" start="2026-04-19T02:04:21.638395" elapsed="0.000900"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:21.638283" elapsed="0.001143"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:21.639560" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:21.644476" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:04:21.645052" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:21.645414" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:21.640898" elapsed="0.004727"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:21.275207" elapsed="0.370643"/>
</kw>
<msg time="2026-04-19T02:04:21.646179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:21.274218" elapsed="0.372020"/>
</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-19T02:04:21.273437" elapsed="0.372884"/>
</kw>
<msg time="2026-04-19T02:04:21.646362" 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-19T02:04:21.272698" elapsed="0.373710"/>
</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-19T02:04:21.649462" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:04:21.649940" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:21.650254" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:21.646722" elapsed="0.003679"/>
</kw>
<msg time="2026-04-19T02:04:21.650491" level="INFO">${output} = 1</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-19T02:04:21.271482" elapsed="0.379035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:21.650968" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:21.650712" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:21.651161" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:04:21.651319" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:21.269584" elapsed="0.381761"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:21.651392" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:21.651538" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:21.267262" elapsed="0.384301"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:21.652134" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:21.651720" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:21.265914" elapsed="0.386410">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:23.655912" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:23.655177" elapsed="0.000804"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:23.658276" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:23.657624" elapsed="0.000737"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:23.660227" 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-19T02:04:23.660455" 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-19T02:04:23.659860" elapsed="0.000656"/>
</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-19T02:04:23.664911" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:23.664409" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:23.664129" elapsed="0.000945"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:23.666492" 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-19T02:04:23.666731" 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-19T02:04:23.666053" elapsed="0.000778"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:23.668355" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:23.667794" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:23.670162" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:23.669458" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:23.672570" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:23.672680" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:23.672285" 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-19T02:04:23.672918" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:23.674184" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:23.992984" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:23.673844" elapsed="0.319314"/>
</kw>
<msg time="2026-04-19T02:04:23.993244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:23.673486" elapsed="0.319849"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:23.671444" elapsed="0.322169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:23.995121" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:24.018007" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:24.018543" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:24.018873" 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-19T02:04:23.994716" elapsed="0.024405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:24.021346" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:24.024447" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:24.023470" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:24.025708" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:24.025092" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:24.024897" elapsed="0.001110"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:24.026384" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:04:24.026180" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:24.026131" elapsed="0.000411"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:24.026621" 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-19T02:04:24.031361" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:24.031904" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:24.032285" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:24.027977" elapsed="0.004528"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:23.662729" elapsed="0.370002"/>
</kw>
<msg time="2026-04-19T02:04:24.033081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:23.662052" elapsed="0.371088"/>
</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-19T02:04:23.661504" elapsed="0.371718"/>
</kw>
<msg time="2026-04-19T02:04:24.033263" 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-19T02:04:23.660917" elapsed="0.372392"/>
</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-19T02:04:24.036442" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:04:24.036920" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:24.037251" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:24.033599" elapsed="0.003808"/>
</kw>
<msg time="2026-04-19T02:04:24.037500" level="INFO">${output} = 1</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-19T02:04:23.658901" elapsed="0.378624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:24.037960" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:24.037709" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:24.038096" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:04:24.038261" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:23.656642" elapsed="0.381645"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:24.038334" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:24.038480" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:23.654322" elapsed="0.384182"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:24.039154" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:24.038660" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:23.653182" elapsed="0.386161">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:26.041600" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:26.041174" elapsed="0.000468"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:26.042774" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:26.042444" elapsed="0.000363"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:26.043805" 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-19T02:04:26.044151" 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-19T02:04:26.043604" elapsed="0.000581"/>
</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-19T02:04:26.051440" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:26.050671" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:26.048123" elapsed="0.003482"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:26.053338" 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-19T02:04:26.053631" 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-19T02:04:26.052763" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:26.055594" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:26.054911" elapsed="0.000811"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:26.057753" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:26.056916" elapsed="0.000951"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:26.060684" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:26.060774" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:26.060350" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:26.061070" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:26.062609" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:26.388105" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:26.062200" elapsed="0.326052"/>
</kw>
<msg time="2026-04-19T02:04:26.388339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:26.061755" elapsed="0.326671"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:26.059298" elapsed="0.329408"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:26.390203" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:26.413315" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:26.413794" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:26.414167" 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-19T02:04:26.389797" elapsed="0.024579"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:26.416565" elapsed="0.000860"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:26.419679" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:26.418653" elapsed="0.001178"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:26.420429" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:26.420087" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:26.419982" elapsed="0.000638"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:26.421166" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:04:26.420838" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:26.420758" elapsed="0.000639"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:26.421510" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:26.427993" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:04:26.428618" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:26.428976" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:26.423485" elapsed="0.005719"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:26.046556" elapsed="0.382872"/>
</kw>
<msg time="2026-04-19T02:04:26.429739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:26.045684" elapsed="0.384112"/>
</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-19T02:04:26.045021" elapsed="0.384856"/>
</kw>
<msg time="2026-04-19T02:04:26.429919" 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-19T02:04:26.044393" elapsed="0.385572"/>
</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-19T02:04:26.433088" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:04:26.433571" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:26.433865" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:26.430291" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T02:04:26.434123" level="INFO">${output} = 1</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-19T02:04:26.043101" elapsed="0.391047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:26.434570" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:26.434326" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:26.434656" elapsed="0.000054"/>
</return>
<msg time="2026-04-19T02:04:26.434835" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:26.041898" elapsed="0.392962"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:26.434906" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:26.435068" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:26.040693" elapsed="0.394400"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:26.435640" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:26.435251" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:26.040065" elapsed="0.395790">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:28.439655" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:28.438830" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:28.441661" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:28.441266" elapsed="0.000435"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:28.442870" 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-19T02:04:28.443017" 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-19T02:04:28.442637" elapsed="0.000439"/>
</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-19T02:04:28.448657" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:28.447944" elapsed="0.000931"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:28.447863" elapsed="0.001104"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:28.450789" 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-19T02:04:28.451063" 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-19T02:04:28.450095" elapsed="0.001071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:28.452772" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:28.452207" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:28.454648" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:28.453881" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:28.457173" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:28.457251" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:28.456864" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:28.457489" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:28.458867" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:28.777322" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:28.458536" elapsed="0.318921"/>
</kw>
<msg time="2026-04-19T02:04:28.777535" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:28.458082" elapsed="0.319538"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:28.456082" elapsed="0.321808"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:28.779431" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:28.802451" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:28.803090" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:28.803477" 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-19T02:04:28.779019" elapsed="0.024752"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:28.806224" elapsed="0.000990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:28.809675" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:28.808593" 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-19T02:04:28.810894" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:28.810340" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:28.810205" elapsed="0.001065"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:28.812162" elapsed="0.000203"/>
</return>
<status status="PASS" start="2026-04-19T02:04:28.811631" elapsed="0.000858"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:28.811510" elapsed="0.001128"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:28.812839" elapsed="0.000092"/>
</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-19T02:04:28.818020" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T02:04:28.818603" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:28.818971" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:28.814575" elapsed="0.004650"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:28.445888" elapsed="0.373602"/>
</kw>
<msg time="2026-04-19T02:04:28.819998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:28.444908" elapsed="0.375173"/>
</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-19T02:04:28.444152" elapsed="0.376015"/>
</kw>
<msg time="2026-04-19T02:04:28.820209" 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-19T02:04:28.443316" elapsed="0.376982"/>
</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-19T02:04:28.823664" 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-19T02:04:28.824269" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:28.824624" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:28.820618" elapsed="0.004179"/>
</kw>
<msg time="2026-04-19T02:04:28.824904" level="INFO">${output} = 1</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-19T02:04:28.442011" elapsed="0.382922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:28.825583" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:28.825283" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:28.825684" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:04:28.825857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:28.440316" elapsed="0.385569"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:28.825946" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:28.826129" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:28.437929" elapsed="0.388229"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:28.826829" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:28.826357" elapsed="0.000560">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:28.436849" elapsed="0.390231">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:30.830590" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:30.829827" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:30.832692" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:30.832087" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:30.834480" 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-19T02:04:30.834625" 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-19T02:04:30.834257" elapsed="0.000405"/>
</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-19T02:04:30.839891" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:30.839257" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:30.839181" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:30.842402" 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-19T02:04:30.842648" 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-19T02:04:30.841452" elapsed="0.001297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:30.844272" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:30.843718" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:30.846203" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:30.845419" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:30.848540" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:30.848618" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:30.848258" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:30.848854" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:30.850292" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:31.164712" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:30.849818" elapsed="0.314978"/>
</kw>
<msg time="2026-04-19T02:04:31.164857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:30.849425" elapsed="0.315503"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:30.847482" elapsed="0.317695"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:31.166535" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:31.189584" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:31.190148" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:31.190486" 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-19T02:04:31.166204" elapsed="0.024492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:31.192906" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:31.196213" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:31.195259" elapsed="0.001186"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:31.197301" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:31.196782" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:31.196663" elapsed="0.000926"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:31.198361" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:04:31.197966" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:31.197851" elapsed="0.000814"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:31.198744" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:31.203488" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:04:31.204026" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:31.204399" 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-19T02:04:31.200134" elapsed="0.004472"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:30.837346" elapsed="0.367483"/>
</kw>
<msg time="2026-04-19T02:04:31.205151" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:30.836389" elapsed="0.368819"/>
</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-19T02:04:30.835622" elapsed="0.369667"/>
</kw>
<msg time="2026-04-19T02:04:31.205330" 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-19T02:04:30.834885" elapsed="0.370491"/>
</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-19T02:04:31.208603" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:04:31.209098" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:31.209396" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:31.205736" elapsed="0.003809"/>
</kw>
<msg time="2026-04-19T02:04:31.209635" level="INFO">${output} = 1</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-19T02:04:30.833261" elapsed="0.376399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:31.210116" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:31.209852" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:31.210205" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:31.210361" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:30.831141" elapsed="0.379245"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:31.210432" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:31.210575" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:30.828956" elapsed="0.381644"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:31.211246" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:31.210754" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:30.827884" elapsed="0.383549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:33.215009" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:33.214263" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:33.217305" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:33.216504" elapsed="0.000867"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:33.219190" 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-19T02:04:33.219422" 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-19T02:04:33.218812" elapsed="0.000669"/>
</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-19T02:04:33.225582" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:33.225115" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:33.225054" elapsed="0.000667"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:33.227450" 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-19T02:04:33.227699" 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-19T02:04:33.226724" elapsed="0.001078"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:33.229374" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:33.228793" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:33.231295" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:33.230477" elapsed="0.000919"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:33.233671" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:33.233749" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:33.233391" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:33.233983" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:33.235541" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:33.547063" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:33.235014" elapsed="0.312137"/>
</kw>
<msg time="2026-04-19T02:04:33.547227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:33.234629" elapsed="0.312673"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:33.232601" elapsed="0.314932"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:33.548886" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:33.571213" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:33.571701" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:33.572027" 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-19T02:04:33.548553" elapsed="0.023728"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:33.574439" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:33.577519" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:33.576545" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:33.578591" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:33.578113" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:33.577962" elapsed="0.000913"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:33.579718" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:04:33.579271" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:33.579122" elapsed="0.000978"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:33.580276" elapsed="0.000080"/>
</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-19T02:04:33.584938" elapsed="0.000418"/>
</kw>
<kw name="Open 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-19T02:04:33.585566" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:33.585911" 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-19T02:04:33.581658" elapsed="0.004474"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:33.223551" elapsed="0.362801"/>
</kw>
<msg time="2026-04-19T02:04:33.586654" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:33.222257" elapsed="0.364452"/>
</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-19T02:04:33.221002" elapsed="0.365788"/>
</kw>
<msg time="2026-04-19T02:04:33.586830" 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-19T02:04:33.219834" elapsed="0.367042"/>
</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-19T02:04:33.589934" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:04:33.590429" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:33.590723" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:33.587180" elapsed="0.003691"/>
</kw>
<msg time="2026-04-19T02:04:33.591018" level="INFO">${output} = 1</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-19T02:04:33.217853" elapsed="0.373207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:33.591498" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:33.591247" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:33.591586" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:33.591738" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:33.215565" elapsed="0.376198"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:33.591809" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:33.591956" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:33.213431" elapsed="0.378550"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:33.592545" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:33.592154" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:33.212217" elapsed="0.380509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:35.596387" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:35.595573" elapsed="0.000992"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:35.598206" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:35.597804" elapsed="0.000440"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:35.599363" 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-19T02:04:35.599505" 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-19T02:04:35.599146" elapsed="0.000396"/>
</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-19T02:04:35.605315" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:35.604649" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:35.604242" elapsed="0.001269"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:35.607588" 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-19T02:04:35.607933" 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-19T02:04:35.606894" elapsed="0.001202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:35.610027" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:35.609482" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:35.611892" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:35.611206" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:35.614294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:35.614371" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:35.613998" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:35.614607" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:35.615980" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:35.947008" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:35.615660" elapsed="0.331596"/>
</kw>
<msg time="2026-04-19T02:04:35.947339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:35.615293" elapsed="0.332131"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:35.613236" elapsed="0.334677"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:35.949438" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:35.972351" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:35.972715" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:35.972932" 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-19T02:04:35.949050" elapsed="0.024102"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:35.974730" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:35.976772" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:35.976124" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:35.977502" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:35.977172" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:35.977091" elapsed="0.000596"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:35.978218" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:04:35.977890" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:35.977822" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:35.978555" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:35.985290" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T02:04:35.985914" elapsed="0.000326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:35.986442" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:35.980414" elapsed="0.006251"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:35.602286" elapsed="0.384613"/>
</kw>
<msg time="2026-04-19T02:04:35.987233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:35.601323" elapsed="0.385972"/>
</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-19T02:04:35.600551" elapsed="0.386826"/>
</kw>
<msg time="2026-04-19T02:04:35.987420" 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-19T02:04:35.599770" elapsed="0.387696"/>
</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-19T02:04:35.990467" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:35.990948" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:35.991264" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:35.987761" elapsed="0.003651"/>
</kw>
<msg time="2026-04-19T02:04:35.991521" level="INFO">${output} = 1</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-19T02:04:35.598553" elapsed="0.392999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:35.991995" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:35.991744" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:35.992104" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:04:35.992259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:35.597095" elapsed="0.395190"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:35.992332" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:35.992476" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:35.594679" elapsed="0.397821"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:35.993191" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:35.992760" elapsed="0.000546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:35.593548" elapsed="0.399872">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:37.996864" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:37.996129" elapsed="0.000806"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:37.998995" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:37.998389" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:38.000841" 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-19T02:04:38.001100" 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-19T02:04:38.000520" elapsed="0.000643"/>
</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-19T02:04:38.007312" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:38.006649" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:38.006275" elapsed="0.001232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:38.009626" 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-19T02:04:38.009971" 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-19T02:04:38.009006" elapsed="0.001156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:38.012270" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:38.011498" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:38.014835" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:38.013949" elapsed="0.000982"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:38.017219" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:38.017297" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:38.016921" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:38.017528" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:38.018950" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:38.339796" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:38.018626" elapsed="0.321310"/>
</kw>
<msg time="2026-04-19T02:04:38.340020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:38.018257" elapsed="0.321866"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:38.016170" elapsed="0.324233"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:38.341875" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:38.365092" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:38.365603" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:38.365931" 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-19T02:04:38.341492" elapsed="0.024700"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:38.368382" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:38.371448" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:38.370501" elapsed="0.001172"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:38.372622" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:38.372109" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:38.371891" elapsed="0.001025"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:38.373695" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T02:04:38.373261" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:38.373159" elapsed="0.001144"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:38.374495" elapsed="0.000062"/>
</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-19T02:04:38.379691" 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-19T02:04:38.380448" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:38.380801" 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-19T02:04:38.376064" elapsed="0.004941"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:38.004424" elapsed="0.376823"/>
</kw>
<msg time="2026-04-19T02:04:38.381556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:38.003483" elapsed="0.378130"/>
</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-19T02:04:38.002712" elapsed="0.378980"/>
</kw>
<msg time="2026-04-19T02:04:38.381733" 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-19T02:04:38.001518" elapsed="0.380259"/>
</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-19T02:04:38.384819" 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-19T02:04:38.385308" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:38.385602" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:38.382151" elapsed="0.003599"/>
</kw>
<msg time="2026-04-19T02:04:38.385840" level="INFO">${output} = 1</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-19T02:04:37.999576" elapsed="0.386289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:38.386407" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:38.386151" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:38.386494" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:38.386648" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:37.997425" elapsed="0.389248"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:38.386719" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:38.386863" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:37.995274" elapsed="0.391614"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:38.387456" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:38.387059" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:37.994230" elapsed="0.393413">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:40.391221" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:40.390444" elapsed="0.000885"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:40.394111" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:40.393249" elapsed="0.000948"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:40.396220" 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-19T02:04:40.396369" 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-19T02:04:40.395951" elapsed="0.000458"/>
</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-19T02:04:40.404483" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:40.403758" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:40.400983" elapsed="0.003696"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:40.406662" 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-19T02:04:40.407021" 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-19T02:04:40.405987" elapsed="0.001195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:40.409766" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:40.408952" elapsed="0.000978"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:40.412938" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:40.411228" elapsed="0.001959"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:40.417701" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:40.417818" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:40.417271" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:40.418192" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:40.420300" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:40.733092" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:40.419604" elapsed="0.313647"/>
</kw>
<msg time="2026-04-19T02:04:40.733338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:40.419048" elapsed="0.314381"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:40.415889" elapsed="0.317824"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:40.735211" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:40.758129" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:40.758660" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:40.758991" 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-19T02:04:40.734788" elapsed="0.024455"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:40.761560" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:40.764819" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:40.763910" elapsed="0.001054"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:40.765613" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:40.765209" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:40.765129" elapsed="0.000674"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:40.766310" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:04:40.766002" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:40.765935" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:40.766646" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:40.773139" 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-19T02:04:40.773699" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:40.774077" 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-19T02:04:40.768591" elapsed="0.005699"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:40.399201" elapsed="0.375315"/>
</kw>
<msg time="2026-04-19T02:04:40.774827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:40.398196" elapsed="0.376693"/>
</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-19T02:04:40.397434" elapsed="0.377537"/>
</kw>
<msg time="2026-04-19T02:04:40.775011" 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-19T02:04:40.396639" elapsed="0.378488"/>
</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-19T02:04:40.778204" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:04:40.778679" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:40.778974" elapsed="0.000191"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:40.775422" elapsed="0.003795"/>
</kw>
<msg time="2026-04-19T02:04:40.779309" level="INFO">${output} = 1</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-19T02:04:40.394884" elapsed="0.384451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:40.779806" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:40.779552" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:40.779893" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:04:40.780062" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:40.392017" elapsed="0.388071"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:40.780135" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:40.780278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:40.389577" elapsed="0.390725"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:40.780850" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:40.780458" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:40.388475" elapsed="0.392570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:42.784829" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:42.783973" elapsed="0.000927"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:42.786994" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:42.786366" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:42.788978" 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-19T02:04:42.789406" 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-19T02:04:42.788552" elapsed="0.000916"/>
</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-19T02:04:42.795730" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:42.795247" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:42.795187" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:42.797580" 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-19T02:04:42.797820" 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-19T02:04:42.796873" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:42.799486" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:42.798908" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:42.801302" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:42.800561" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:42.803733" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:42.803847" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:42.803436" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:42.804120" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:42.805791" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:43.124143" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:42.805273" elapsed="0.319018"/>
</kw>
<msg time="2026-04-19T02:04:43.124374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:42.804721" elapsed="0.319739"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:42.802591" elapsed="0.322150"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:43.126268" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:43.149106" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:43.149607" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:43.149968" 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-19T02:04:43.125859" elapsed="0.024365"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:43.152596" elapsed="0.001083"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:43.155203" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:43.154521" elapsed="0.000825"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:43.155892" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:43.155567" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:43.155488" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:43.156580" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T02:04:43.156301" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:43.156234" elapsed="0.000566"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:43.156923" elapsed="0.000056"/>
</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-19T02:04:43.163693" 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-19T02:04:43.164653" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:43.165085" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:43.158880" elapsed="0.006419"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:42.793837" elapsed="0.371689"/>
</kw>
<msg time="2026-04-19T02:04:43.165865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:42.792403" elapsed="0.373519"/>
</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-19T02:04:42.791145" elapsed="0.374860"/>
</kw>
<msg time="2026-04-19T02:04:43.166064" 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-19T02:04:42.789865" elapsed="0.376248"/>
</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-19T02:04:43.169233" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:04:43.169724" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:43.170045" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:43.166406" elapsed="0.003789"/>
</kw>
<msg time="2026-04-19T02:04:43.170287" level="INFO">${output} = 1</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-19T02:04:42.787576" elapsed="0.382737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:43.170761" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:43.170488" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:43.170863" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:43.171014" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:42.785397" elapsed="0.385672"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:43.171118" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:43.171265" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:42.783127" elapsed="0.388163"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:43.171837" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:43.171447" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:42.781908" elapsed="0.390115">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:45.175537" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:45.174774" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:45.177622" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:45.176990" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:45.179251" 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-19T02:04:45.179394" 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-19T02:04:45.179007" elapsed="0.000423"/>
</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-19T02:04:45.184657" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:45.184003" elapsed="0.000857"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:45.183925" elapsed="0.001019"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:45.187275" 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-19T02:04:45.187566" 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-19T02:04:45.186337" elapsed="0.001329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:45.189215" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:45.188642" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:45.191120" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:45.190336" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:45.193466" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:45.193546" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:45.193181" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:45.193783" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:45.195220" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:45.553963" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:45.194752" elapsed="0.359311"/>
</kw>
<msg time="2026-04-19T02:04:45.554127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:45.194389" elapsed="0.359814"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:45.192404" elapsed="0.362033"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:45.555771" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:45.578727" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:45.579276" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:45.579609" 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-19T02:04:45.555444" elapsed="0.024376"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:45.582092" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:45.585205" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:45.584230" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:45.586280" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:45.585760" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:45.585645" elapsed="0.000918"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:45.587347" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T02:04:45.586874" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:45.586769" elapsed="0.000921"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:45.587862" elapsed="0.000079"/>
</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-19T02:04:45.594205" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T02:04:45.594765" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:45.595136" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:45.590842" elapsed="0.004503"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:45.182110" elapsed="0.413458"/>
</kw>
<msg time="2026-04-19T02:04:45.595929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:45.181141" elapsed="0.414846"/>
</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-19T02:04:45.180380" elapsed="0.415704"/>
</kw>
<msg time="2026-04-19T02:04:45.596127" 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-19T02:04:45.179649" elapsed="0.416525"/>
</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-19T02:04:45.599268" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:45.599751" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:45.600067" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:45.596466" elapsed="0.003754"/>
</kw>
<msg time="2026-04-19T02:04:45.600311" level="INFO">${output} = 1</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-19T02:04:45.178235" elapsed="0.422102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:45.600765" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:45.600514" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:45.600859" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:04:45.601011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:45.176085" elapsed="0.424988"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:45.601122" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:45.601268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:45.173910" elapsed="0.427384"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:45.601838" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:45.601449" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:45.172851" elapsed="0.429167">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:47.605662" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:47.604874" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:47.607837" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:47.607212" elapsed="0.000686"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:47.609680" 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-19T02:04:47.609907" 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-19T02:04:47.609350" elapsed="0.000617"/>
</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-19T02:04:47.614850" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:47.614381" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:47.614322" elapsed="0.000674"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:47.616726" 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-19T02:04:47.616974" 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-19T02:04:47.615994" elapsed="0.001110"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:47.618646" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:47.618093" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:47.620549" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:47.619821" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:47.623066" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:47.623149" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:47.622758" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:47.623417" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:47.624722" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:47.936504" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:47.624387" elapsed="0.312261"/>
</kw>
<msg time="2026-04-19T02:04:47.936731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:47.623999" elapsed="0.312816"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:47.621891" elapsed="0.315237"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:47.938609" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:47.961612" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:47.962205" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:47.962539" 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-19T02:04:47.938225" elapsed="0.024525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:47.965001" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:47.968365" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:47.967349" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:47.969511" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:47.968947" elapsed="0.000732"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:47.968822" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:47.970654" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:04:47.970190" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:47.970019" elapsed="0.000999"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:47.971381" elapsed="0.000094"/>
</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-19T02:04:47.976595" 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-19T02:04:47.977195" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:47.977564" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:47.972999" elapsed="0.004783"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:47.612944" elapsed="0.365068"/>
</kw>
<msg time="2026-04-19T02:04:47.978358" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:47.612270" elapsed="0.366151"/>
</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-19T02:04:47.611556" elapsed="0.366950"/>
</kw>
<msg time="2026-04-19T02:04:47.978547" 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-19T02:04:47.610346" elapsed="0.368247"/>
</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-19T02:04:47.981821" elapsed="0.000539"/>
</kw>
<kw name="Open 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-19T02:04:47.982527" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:47.982828" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:47.979108" elapsed="0.003875"/>
</kw>
<msg time="2026-04-19T02:04:47.983377" level="INFO">${output} = 1</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-19T02:04:47.608407" elapsed="0.374997"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:47.983878" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:47.983617" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:47.983969" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:04:47.984144" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:47.606270" elapsed="0.377900"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:47.984219" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:47.984370" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:47.603970" elapsed="0.380426"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:47.984957" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:47.984556" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:47.602855" elapsed="0.382304">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:49.988633" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:49.987844" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:49.990751" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:49.990151" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:49.992597" 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-19T02:04:49.992874" 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-19T02:04:49.992255" elapsed="0.000679"/>
</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-19T02:04:49.998574" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:49.997908" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:49.997517" elapsed="0.001254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:50.000772" 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-19T02:04:50.001154" 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-19T02:04:50.000140" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:50.003403" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:50.002632" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:50.005681" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:50.004923" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:50.008011" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:50.008104" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:50.007725" 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-19T02:04:50.008338" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:50.009827" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:50.322141" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:50.009502" elapsed="0.312774"/>
</kw>
<msg time="2026-04-19T02:04:50.322358" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:50.008980" elapsed="0.313460"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:50.006957" elapsed="0.315777"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:50.324280" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:50.347137" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:50.347658" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:50.348084" 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-19T02:04:50.323860" elapsed="0.024456"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:50.350647" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:50.354014" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:50.353055" elapsed="0.001136"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:50.354771" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:50.354426" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:50.354343" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:50.355564" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:04:50.355271" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:50.355198" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:50.355933" elapsed="0.000057"/>
</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-19T02:04:50.362416" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:04:50.362966" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:50.363397" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:50.357922" 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-19T02:04:49.995664" elapsed="0.368164"/>
</kw>
<msg time="2026-04-19T02:04:50.364153" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:49.994710" elapsed="0.369502"/>
</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-19T02:04:49.993899" elapsed="0.370394"/>
</kw>
<msg time="2026-04-19T02:04:50.364333" 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-19T02:04:49.993189" elapsed="0.371191"/>
</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-19T02:04:50.368596" 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-19T02:04:50.369135" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:50.369441" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:50.364670" elapsed="0.004921"/>
</kw>
<msg time="2026-04-19T02:04:50.369754" level="INFO">${output} = 1</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-19T02:04:49.991318" elapsed="0.378465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:50.370248" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:50.369971" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:50.370340" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:04:50.370496" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:49.989216" elapsed="0.381307"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:50.370573" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:50.370735" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:49.986983" elapsed="0.383779"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:50.371371" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:50.370924" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:49.985899" elapsed="0.385654">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:52.374975" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:52.374242" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:52.377108" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:52.376471" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:52.378965" 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-19T02:04:52.379150" 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-19T02:04:52.378642" elapsed="0.000546"/>
</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-19T02:04:52.384780" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:52.384125" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:52.383689" elapsed="0.001287"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:52.387051" 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-19T02:04:52.387296" 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-19T02:04:52.386413" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:52.388922" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:52.388385" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:52.390742" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:52.390027" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:52.393183" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:52.393261" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:52.392889" 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-19T02:04:52.393498" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:52.394774" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:52.706444" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:52.394451" elapsed="0.312229"/>
</kw>
<msg time="2026-04-19T02:04:52.706762" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:52.394082" elapsed="0.312765"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:52.392128" elapsed="0.315018"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:52.708614" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:52.731021" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:52.731563" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:52.731901" 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-19T02:04:52.708222" elapsed="0.023933"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:52.734445" elapsed="0.000823"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:52.736667" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:52.736061" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:52.737380" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:52.737053" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:52.736954" elapsed="0.000610"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:52.738061" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:04:52.737761" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:52.737695" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:52.738415" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:52.744413" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:04:52.744959" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:52.745338" 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-19T02:04:52.740314" elapsed="0.005231"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:52.381823" elapsed="0.363940"/>
</kw>
<msg time="2026-04-19T02:04:52.746082" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:52.380874" elapsed="0.365267"/>
</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-19T02:04:52.380135" elapsed="0.366100"/>
</kw>
<msg time="2026-04-19T02:04:52.746276" 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-19T02:04:52.379409" elapsed="0.366913"/>
</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-19T02:04:52.749371" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:04:52.749845" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:52.750156" elapsed="0.000141"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:52.746612" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T02:04:52.750440" level="INFO">${output} = 1</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-19T02:04:52.377649" elapsed="0.372816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:52.750888" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:52.750641" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:52.750973" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:52.751139" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:52.375531" elapsed="0.375633"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:52.751210" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:52.751353" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:52.373385" elapsed="0.377992"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:52.752102" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:52.751659" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:52.372334" elapsed="0.379956">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:54.755890" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:54.755077" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:54.757977" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:54.757376" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:54.759833" 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-19T02:04:54.760087" 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-19T02:04:54.759508" elapsed="0.000641"/>
</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-19T02:04:54.768145" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:54.767614" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:54.765639" elapsed="0.002657"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:54.769706" 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-19T02:04:54.769949" 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-19T02:04:54.769264" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:54.771667" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:54.771024" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:54.773626" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:54.772918" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:54.775980" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:54.776073" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:54.775697" 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-19T02:04:54.776307" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:54.777558" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:55.096133" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:54.777233" elapsed="0.319023"/>
</kw>
<msg time="2026-04-19T02:04:55.096335" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:54.776855" elapsed="0.319562"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:54.774916" elapsed="0.321757"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:55.098127" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:55.120849" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:55.121390" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:55.121723" 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-19T02:04:55.097738" elapsed="0.024196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:55.124242" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:55.127359" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:55.126396" elapsed="0.001235"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:55.128300" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:55.127991" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:55.127865" 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-19T02:04:55.128782" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T02:04:55.128581" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:55.128534" elapsed="0.000406"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:55.129018" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:55.133748" 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-19T02:04:55.134390" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:55.134777" 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-19T02:04:55.130419" elapsed="0.004572"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:54.764311" elapsed="0.370926"/>
</kw>
<msg time="2026-04-19T02:04:55.135597" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:54.762973" elapsed="0.372682"/>
</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-19T02:04:54.761753" elapsed="0.373985"/>
</kw>
<msg time="2026-04-19T02:04:55.135779" 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-19T02:04:54.760500" elapsed="0.375325"/>
</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-19T02:04:55.139224" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:55.139711" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:55.140004" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:55.136131" elapsed="0.004040"/>
</kw>
<msg time="2026-04-19T02:04:55.140260" level="INFO">${output} = 1</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-19T02:04:54.758552" elapsed="0.381733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:55.140708" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:55.140462" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:55.140795" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:04:55.140946" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:54.756442" elapsed="0.384528"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:55.141016" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:04:55.141176" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:54.754243" elapsed="0.386957"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:55.141746" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:55.141355" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:54.753147" elapsed="0.388779">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:57.145403" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:57.144638" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:57.147679" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:57.147079" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:57.149538" 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-19T02:04:57.149765" 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-19T02:04:57.149211" elapsed="0.000613"/>
</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-19T02:04:57.155529" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:57.155059" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:57.154978" elapsed="0.000691"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:57.157351" 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-19T02:04:57.157595" 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-19T02:04:57.156663" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:57.159275" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:57.158700" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:57.161081" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:57.160351" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:57.163548" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:57.163625" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:57.163264" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:57.163857" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:57.165136" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:57.477909" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:57.164794" elapsed="0.313269"/>
</kw>
<msg time="2026-04-19T02:04:57.478144" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:57.164423" elapsed="0.313803"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:57.162373" elapsed="0.316115"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:57.479944" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:57.502735" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:57.503319" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:57.503678" 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-19T02:04:57.479559" elapsed="0.024347"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:57.506518" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:57.509848" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:57.508821" elapsed="0.001302"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:57.511320" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:57.510648" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:57.510517" elapsed="0.001120"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:57.512547" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:04:57.511975" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:57.511863" elapsed="0.001112"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:57.513280" elapsed="0.000065"/>
</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-19T02:04:57.518011" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:04:57.518577" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:57.518933" 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-19T02:04:57.514617" elapsed="0.004561"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:57.153651" elapsed="0.365754"/>
</kw>
<msg time="2026-04-19T02:04:57.519716" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:57.152641" elapsed="0.367132"/>
</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-19T02:04:57.151371" elapsed="0.368484"/>
</kw>
<msg time="2026-04-19T02:04:57.519896" 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-19T02:04:57.150204" elapsed="0.369738"/>
</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-19T02:04:57.523136" 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-19T02:04:57.523614" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:57.523910" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:57.520299" elapsed="0.003861"/>
</kw>
<msg time="2026-04-19T02:04:57.524258" level="INFO">${output} = 1</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-19T02:04:57.148253" elapsed="0.376030"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:57.524711" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:57.524461" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:57.524812" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:04:57.524969" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:57.146137" elapsed="0.378858"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:57.525059" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:04:57.525209" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:57.143768" elapsed="0.381466"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:57.525781" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:57.525390" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:57.142727" elapsed="0.383236">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:04:59.529455" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:04:59.528685" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:04:59.531631" level="INFO">${member_ip} = 10.30.171.128</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-19T02:04:59.530991" elapsed="0.000833"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:59.533632" 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-19T02:04:59.534067" 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-19T02:04:59.533301" elapsed="0.000833"/>
</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-19T02:04:59.540225" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:04:59.539745" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:59.539688" elapsed="0.000674"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:59.542015" 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-19T02:04:59.542279" 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-19T02:04:59.541329" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:59.543890" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:59.543349" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:04:59.545676" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:04:59.544973" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:04:59.548170" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:04:59.548248" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:04:59.547868" 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-19T02:04:59.548484" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:04:59.549732" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:04:59.904100" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:04:59.549409" elapsed="0.354865"/>
</kw>
<msg time="2026-04-19T02:04:59.904367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:59.549048" elapsed="0.355416"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:04:59.546991" elapsed="0.357784"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:04:59.906385" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:04:59.929318" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:04:59.929835" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:04:59.930273" 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-19T02:04:59.905919" elapsed="0.024576"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:59.932820" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:59.935855" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:59.935175" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:59.936610" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:04:59.936265" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:59.936179" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:04:59.937342" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:04:59.937009" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T02:04:59.936939" elapsed="0.000637"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:04:59.937690" elapsed="0.000058"/>
</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-19T02:04:59.944339" 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-19T02:04:59.944993" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:59.945385" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:59.939728" elapsed="0.005870"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:04:59.538370" elapsed="0.407475"/>
</kw>
<msg time="2026-04-19T02:04:59.946229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:04:59.536913" elapsed="0.409385"/>
</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-19T02:04:59.535678" elapsed="0.410719"/>
</kw>
<msg time="2026-04-19T02:04:59.946442" 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-19T02:04:59.534496" elapsed="0.411996"/>
</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-19T02:04:59.949574" 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-19T02:04:59.950080" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:04:59.950410" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:04:59.946793" elapsed="0.003768"/>
</kw>
<msg time="2026-04-19T02:04:59.950656" level="INFO">${output} = 1</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-19T02:04:59.532359" elapsed="0.418323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:04:59.951160" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:04:59.950862" elapsed="0.000343"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:04:59.951248" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:04:59.951408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:04:59.530067" elapsed="0.421367"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:04:59.951484" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:04:59.951635" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:04:59.527848" elapsed="0.423813"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:04:59.952255" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:04:59.951824" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:04:59.526790" elapsed="0.425662">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:01.956179" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:01.955362" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:01.958585" level="INFO">${member_ip} = 10.30.171.128</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-19T02:05:01.957887" elapsed="0.000763"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:01.960579" 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-19T02:05:01.960808" 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-19T02:05:01.960221" elapsed="0.000648"/>
</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-19T02:05:01.967961" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:01.966351" elapsed="0.001795"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:01.966286" elapsed="0.001923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:01.969950" 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-19T02:05:01.970231" 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-19T02:05:01.969228" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:01.971949" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:01.971370" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:01.973847" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:01.973096" elapsed="0.000854"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:01.976378" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:01.976460" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:01.976083" 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-19T02:05:01.976718" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:01.978227" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:02.302087" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:04:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:01.977705" elapsed="0.324528"/>
</kw>
<msg time="2026-04-19T02:05:02.302316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:01.977317" elapsed="0.325088"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:01.975266" elapsed="0.327418"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:02.304183" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:05:02.326797" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:02.327351" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:05:02.327732" 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-19T02:05:02.303780" elapsed="0.024165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:02.330189" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:02.332991" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:02.332385" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:02.333710" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:02.333385" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:02.333306" 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-19T02:05:02.334430" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:05:02.334127" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:02.334053" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:02.334767" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:02.341417" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T02:05:02.342199" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:02.342697" 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-19T02:05:02.336717" elapsed="0.006270"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:05:01.964875" elapsed="0.378453"/>
</kw>
<msg time="2026-04-19T02:05:02.343871" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:01.963845" elapsed="0.380106"/>
</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-19T02:05:01.962513" elapsed="0.381701"/>
</kw>
<msg time="2026-04-19T02:05:02.344276" 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-19T02:05:01.961276" elapsed="0.383072"/>
</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-19T02:05:02.347370" 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-19T02:05:02.347861" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:02.348204" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:02.344709" elapsed="0.003658"/>
</kw>
<msg time="2026-04-19T02:05:02.348481" level="INFO">${output} = 1</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-19T02:05:01.959218" elapsed="0.389290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:02.348936" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:02.348686" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:05:02.349025" elapsed="0.000058"/>
</return>
<msg time="2026-04-19T02:05:02.349211" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:05:01.956722" elapsed="0.392515"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:05:02.349286" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:05:02.349436" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:05:01.954455" elapsed="0.395007"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:05:02.350043" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:05:02.349616" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:05:01.953341" elapsed="0.396884">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.353739" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:04.352978" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:04.355848" level="INFO">${member_ip} = 10.30.171.128</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-19T02:05:04.355243" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.357633" 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-19T02:05:04.357775" 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-19T02:05:04.357409" elapsed="0.000403"/>
</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-19T02:05:04.363385" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:04.362723" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:04.362337" elapsed="0.001241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.365538" 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-19T02:05:04.365780" 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-19T02:05:04.364956" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.367429" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:04.366872" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.369329" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:04.368616" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.371731" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:04.371808" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:04.371450" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.372056" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.373348" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:04.697672" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:04.373006" elapsed="0.324813"/>
</kw>
<msg time="2026-04-19T02:05:04.697902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.372641" elapsed="0.325350"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:04.370674" elapsed="0.327614"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.699777" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:05:04.722673" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:04.723233" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:05:04.723572" 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-19T02:05:04.699387" elapsed="0.024398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:04.726374" elapsed="0.000982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.729799" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:04.728744" elapsed="0.001330"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:04.730989" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:04.730455" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:04.730323" elapsed="0.001012"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:04.732321" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T02:05:04.731683" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:04.731566" elapsed="0.001151"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:04.732981" elapsed="0.000126"/>
</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-19T02:05:04.740480" 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-19T02:05:04.741066" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:04.741429" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:04.736428" elapsed="0.005212"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:05:04.360481" elapsed="0.381382"/>
</kw>
<msg time="2026-04-19T02:05:04.742187" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.359534" elapsed="0.382715"/>
</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-19T02:05:04.358763" elapsed="0.383567"/>
</kw>
<msg time="2026-04-19T02:05:04.742370" 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-19T02:05:04.358049" elapsed="0.384367"/>
</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-19T02:05:04.745549" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:05:04.746041" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:04.746341" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:04.742773" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T02:05:04.746579" level="INFO">${output} = 1</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-19T02:05:04.356417" elapsed="0.390187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.747060" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:04.746797" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:05:04.747149" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:05:04.747301" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:05:04.354296" elapsed="0.393030"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:05:04.747372" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:05:04.747513" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:05:04.352153" elapsed="0.395384"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.748128" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:05:04.747693" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:05:04.351074" elapsed="0.397243">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T02:05:04.748408" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T01:59:03.872800" elapsed="360.875701">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T01:59:03.872629" elapsed="360.875941">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T01:58:58.710050" elapsed="366.038585">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:04.748898" elapsed="0.000025"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:05:04.748965" elapsed="0.000016"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T01:58:56.480017" elapsed="368.269062">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T01:58:56.479289" elapsed="368.269948">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s11-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T02:05:04.754017" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:04.753625" elapsed="0.000523"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.754625" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:04.754318" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:04.754696" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:04.754849" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:04.753244" elapsed="0.001630"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.757201" 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-19T02:05:04.757301" 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-19T02:05:04.757051" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:04.759425" level="INFO">${ip_address} = 10.30.171.9</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-19T02:05:04.759100" elapsed="0.000352"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:04.759502" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:05:04.759655" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:04.758763" elapsed="0.000916"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.763488" level="INFO">${odl_connection} = 492</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:04.762764" elapsed="0.000823"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:04.766387" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:04.766473" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:04.766014" elapsed="0.000484"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.766664" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:04.768349" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:05.459797" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 01:59:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:04.767755" elapsed="0.692294"/>
</kw>
<msg time="2026-04-19T02:05:05.460161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.767390" elapsed="0.692896"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:04.765508" elapsed="0.694921"/>
</kw>
<msg time="2026-04-19T02:05:05.460482" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.765100" elapsed="0.695437"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:04.764159" elapsed="0.696582"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:05.460862" elapsed="0.000062"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:04.761569" elapsed="0.699657"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.464513" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:05.477562" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:05.477809" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:05.477902" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:05.477991" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:05.464312" elapsed="0.013762"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.480016" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:05.479391" elapsed="0.000756"/>
</kw>
<msg time="2026-04-19T02:05:05.480352" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:05.480447" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:05.478588" elapsed="0.001908"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.481835" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:05.480977" elapsed="0.000896"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.483597" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:05.483232" elapsed="0.000547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.484393" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:05.484008" elapsed="0.000445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.485017" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:05.484674" elapsed="0.000442"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:05.482610" elapsed="0.002588"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:05.482100" elapsed="0.003150"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.482060" elapsed="0.003228"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:05.485602" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:05.485450" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.485421" elapsed="0.000280"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:05.485984" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T02:05:05.485850" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.485825" elapsed="0.000306"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:05.486422" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:05.463349" elapsed="0.023434"/>
</kw>
<msg time="2026-04-19T02:05:05.486998" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:05.487123" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:05.461563" elapsed="0.025614"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:05.487561" elapsed="0.000346"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:05.488381" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T02:05:05.488114" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.488085" elapsed="0.000524"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:05.488825" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:04.760399" elapsed="0.728750"/>
</kw>
<msg time="2026-04-19T02:05:05.489239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.759835" elapsed="0.729480"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:04.758236" elapsed="0.731207"/>
</kw>
<msg time="2026-04-19T02:05:05.489490" 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-19T02:05:04.757540" elapsed="0.731996"/>
</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-19T02:05:05.492579" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:05:05.493075" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:05.493414" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:05.489835" elapsed="0.003732"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:04.756399" elapsed="0.737225"/>
</kw>
<msg time="2026-04-19T02:05:05.493679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:04.755938" elapsed="0.737789"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:04.755251" elapsed="0.738560"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:04.755096" elapsed="0.738824"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.498248" 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-19T02:05:05.498369" 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-19T02:05:05.495995" elapsed="0.002402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:05.500262" level="INFO">${ip_address} = 10.30.171.128</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-19T02:05:05.499905" elapsed="0.000385"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:05.500342" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:05:05.500504" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:05.499584" elapsed="0.000945"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.504093" level="INFO">${odl_connection} = 494</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:05.503367" elapsed="0.000828"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.506848" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:05.506927" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:05.506567" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.507128" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.508333" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:05.826833" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:05.507997" elapsed="0.319002"/>
</kw>
<msg time="2026-04-19T02:05:05.827108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.507638" elapsed="0.319563"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:05.506080" elapsed="0.321240"/>
</kw>
<msg time="2026-04-19T02:05:05.827371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.505672" elapsed="0.321749"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:05.504738" elapsed="0.322881"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:05.827720" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:05.502205" elapsed="0.325851"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.831287" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:05.844183" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:05.844471" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:05.844537" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:05.844597" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:05.831077" elapsed="0.013556"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.846270" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:05.845806" elapsed="0.000533"/>
</kw>
<msg time="2026-04-19T02:05:05.846478" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:05.846544" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:05.845153" elapsed="0.001424"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.847699" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:05.847009" elapsed="0.000729"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.849610" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:05.849193" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.850286" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:05.849898" elapsed="0.000448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.850918" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:05.850569" elapsed="0.000412"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:05.848535" elapsed="0.002550"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:05.847951" elapsed="0.003191"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.847910" elapsed="0.003274"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:05.851510" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:05.851348" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.851319" elapsed="0.000295"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:05.851902" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-19T02:05:05.851765" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.851740" elapsed="0.000318"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:05.852352" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:05.830126" elapsed="0.022592"/>
</kw>
<msg time="2026-04-19T02:05:05.852940" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:05.853063" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:05.828358" elapsed="0.024762"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:05.853519" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:05.854398" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T02:05:05.854128" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:05.854100" elapsed="0.000527"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:05.854846" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:05.501262" elapsed="0.353871"/>
</kw>
<msg time="2026-04-19T02:05:05.855223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.500685" elapsed="0.354617"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:05.499055" elapsed="0.356373"/>
</kw>
<msg time="2026-04-19T02:05:05.855489" 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-19T02:05:05.498563" elapsed="0.356992"/>
</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-19T02:05:05.859796" elapsed="0.000438"/>
</kw>
<kw name="Open 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-19T02:05:05.860410" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:05.860741" 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-19T02:05:05.856017" elapsed="0.004877"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:05.495372" elapsed="0.365582"/>
</kw>
<msg time="2026-04-19T02:05:05.861014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.494910" elapsed="0.366179"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:05.494208" elapsed="0.367059"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:05:05.494027" elapsed="0.367305"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.863708" 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-19T02:05:05.863813" 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-19T02:05:05.863562" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:05.866139" level="INFO">${ip_address} = 10.30.171.206</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-19T02:05:05.865762" elapsed="0.000404"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:05.866221" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:05:05.866390" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:05.865434" elapsed="0.000981"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.870106" level="INFO">${odl_connection} = 496</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:05.869369" elapsed="0.000837"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:05.872842" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:05.872919" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:05.872552" 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-19T02:05:05.873117" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:05.874390" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:06.507104" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 01:58:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:05.874059" elapsed="0.633206"/>
</kw>
<msg time="2026-04-19T02:05:06.507353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.873677" elapsed="0.633768"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:05.872059" elapsed="0.635506"/>
</kw>
<msg time="2026-04-19T02:05:06.507618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.871644" elapsed="0.636025"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:05.870745" elapsed="0.637117"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:06.507966" elapsed="0.000083"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:05.868181" elapsed="0.640132"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.511554" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:06.524599" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:06.524767" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:06.524921" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:06.524981" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:06.511349" elapsed="0.013664"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.526321" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:06.525887" elapsed="0.000499"/>
</kw>
<msg time="2026-04-19T02:05:06.526540" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:06.526638" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:06.525365" elapsed="0.001323"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.528240" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:06.527224" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.530913" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:06.530362" elapsed="0.000645"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.531921" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:06.531391" elapsed="0.000621"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.532904" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:06.532385" elapsed="0.000614"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:06.529399" elapsed="0.003752"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:06.528599" elapsed="0.004631"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.528545" elapsed="0.004744"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:06.533811" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:06.533532" elapsed="0.000379"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.533490" elapsed="0.000468"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:06.534430" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:05:06.534219" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.534178" elapsed="0.000438"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:06.535088" elapsed="0.000049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:06.510373" elapsed="0.024991"/>
</kw>
<msg time="2026-04-19T02:05:06.535510" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:06.535582" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:06.508606" elapsed="0.027012"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:06.535878" elapsed="0.000266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:06.536449" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:05:06.536266" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.536246" elapsed="0.000362"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:06.536754" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:05.867242" elapsed="0.669694"/>
</kw>
<msg time="2026-04-19T02:05:06.536995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.866669" elapsed="0.670392"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:05.864836" elapsed="0.672318"/>
</kw>
<msg time="2026-04-19T02:05:06.537197" 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-19T02:05:05.863993" elapsed="0.673249"/>
</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-19T02:05:06.540367" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:05:06.540841" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:06.541167" elapsed="0.000199"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:06.537544" elapsed="0.003877"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:05.862915" elapsed="0.678613"/>
</kw>
<msg time="2026-04-19T02:05:06.541586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:05.862460" elapsed="0.679177"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:05.861634" elapsed="0.680118"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:05:05.861446" elapsed="0.680355"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:04.754935" elapsed="1.786901"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:05:04.750656" elapsed="1.791238"/>
</kw>
<kw name="Check_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-19T02:05:06.545576" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:06.545191" elapsed="0.000412"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.546099" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:06.545778" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:06.546171" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:06.546325" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:06.544797" elapsed="0.001553"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.548717" 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-19T02:05:06.548817" 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-19T02:05:06.548579" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:06.550648" level="INFO">${ip_address} = 10.30.171.9</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-19T02:05:06.550341" elapsed="0.000334"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:06.550724" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:06.550875" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:06.550002" elapsed="0.000897"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.554411" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:06.553698" elapsed="0.000814"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.557325" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:06.557403" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:06.557055" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.557589" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.558811" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:06.868478" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:06.558488" elapsed="0.310152"/>
</kw>
<msg time="2026-04-19T02:05:06.868709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.558124" elapsed="0.310655"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:06.556521" elapsed="0.312355"/>
</kw>
<msg time="2026-04-19T02:05:06.868928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.555956" elapsed="0.313022"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:06.555068" elapsed="0.314098"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:06.869259" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:06.552531" elapsed="0.317011"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.872559" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:06.885354" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:06.885513" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:06.885574" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:06.885632" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:06.872365" elapsed="0.013299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.886912" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:06.886526" elapsed="0.000449"/>
</kw>
<msg time="2026-04-19T02:05:06.887131" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:06.887192" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:06.886019" elapsed="0.001204"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.888161" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:06.887534" elapsed="0.000664"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.889800" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:06.889456" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.890437" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:06.890103" elapsed="0.000389"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.891027" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:06.890699" elapsed="0.000418"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:06.888865" elapsed="0.002326"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:06.888383" elapsed="0.002856"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.888351" elapsed="0.002924"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:06.891569" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:06.891425" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.891399" elapsed="0.000262"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:06.892134" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:05:06.891982" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.891777" elapsed="0.000474"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:06.892523" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:06.871456" elapsed="0.021606"/>
</kw>
<msg time="2026-04-19T02:05:06.893267" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:06.893364" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:06.869797" elapsed="0.023618"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:06.893774" elapsed="0.000625"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:06.894750" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:05:06.894568" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:06.894541" elapsed="0.000361"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:06.895071" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:06.551605" elapsed="0.343647"/>
</kw>
<msg time="2026-04-19T02:05:06.895349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.551077" elapsed="0.344323"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:06.549466" elapsed="0.346018"/>
</kw>
<msg time="2026-04-19T02:05:06.895525" 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-19T02:05:06.548996" elapsed="0.346574"/>
</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-19T02:05:06.898588" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:06.899085" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:06.899386" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:06.895864" elapsed="0.003670"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:06.547953" elapsed="0.351638"/>
</kw>
<msg time="2026-04-19T02:05:06.899644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.547508" elapsed="0.352184"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:06.546784" elapsed="0.352991"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:06.546537" elapsed="0.353282"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.902009" 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-19T02:05:06.902126" 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-19T02:05:06.901867" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:06.903973" level="INFO">${ip_address} = 10.30.171.128</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-19T02:05:06.903664" elapsed="0.000336"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:06.904070" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:05:06.904223" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:06.903345" elapsed="0.000902"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.907941" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:06.907252" elapsed="0.000802"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:06.910880" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:06.910957" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:06.910613" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.911156" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:06.912335" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:07.223654" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:06.912002" elapsed="0.311782"/>
</kw>
<msg time="2026-04-19T02:05:07.223847" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.911644" elapsed="0.312265"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:06.910116" elapsed="0.313879"/>
</kw>
<msg time="2026-04-19T02:05:07.224066" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.909492" elapsed="0.314625"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:06.908599" elapsed="0.315676"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:07.224362" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:06.906010" elapsed="0.318620"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.227552" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:07.240319" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:07.240587" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:07.240691" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:07.240788" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:07.227363" elapsed="0.013478"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.243004" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:07.242357" elapsed="0.000789"/>
</kw>
<msg time="2026-04-19T02:05:07.243371" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:07.243475" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:07.241446" elapsed="0.002082"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.245119" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:07.244079" elapsed="0.001104"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.247942" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.247352" elapsed="0.000720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.249006" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.248439" elapsed="0.000694"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.250516" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.249492" elapsed="0.001132"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:07.246355" elapsed="0.004399"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:07.245490" elapsed="0.005350"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.245439" elapsed="0.005464"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:07.251448" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:07.251202" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.251154" elapsed="0.000454"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:07.252103" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T02:05:07.251850" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.251809" elapsed="0.000495"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:07.252773" elapsed="0.000053"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:07.226473" elapsed="0.026912"/>
</kw>
<msg time="2026-04-19T02:05:07.253734" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:07.253901" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:07.224861" elapsed="0.029128"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:07.254628" elapsed="0.000216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:07.255158" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:05:07.254961" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.254943" elapsed="0.000368"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:07.255456" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:06.904925" elapsed="0.350710"/>
</kw>
<msg time="2026-04-19T02:05:07.255731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.904403" elapsed="0.351377"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:06.902765" elapsed="0.353100"/>
</kw>
<msg time="2026-04-19T02:05:07.255905" 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-19T02:05:06.902307" elapsed="0.353642"/>
</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-19T02:05:07.258966" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:05:07.259453" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:07.259749" 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-19T02:05:07.256258" elapsed="0.003638"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:06.901236" elapsed="0.358717"/>
</kw>
<msg time="2026-04-19T02:05:07.260008" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:06.900776" elapsed="0.359294"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:06.900084" elapsed="0.360071"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:05:06.899912" elapsed="0.360287"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.262448" 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-19T02:05:07.262545" 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-19T02:05:07.262317" elapsed="0.000254"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:07.264351" level="INFO">${ip_address} = 10.30.171.206</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-19T02:05:07.264043" elapsed="0.000335"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:07.264426" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:07.264575" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:07.263711" elapsed="0.000888"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.268109" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:07.267406" elapsed="0.000803"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.271225" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:07.271303" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:07.270928" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.271488" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.272662" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:07.598361" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:07.272348" elapsed="0.326210"/>
</kw>
<msg time="2026-04-19T02:05:07.598632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.271972" elapsed="0.326736"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:07.270432" elapsed="0.328378"/>
</kw>
<msg time="2026-04-19T02:05:07.598861" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.269993" elapsed="0.328918"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:07.268744" elapsed="0.330359"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:07.599198" elapsed="0.000053"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:07.266263" elapsed="0.333226"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.602554" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:07.615438" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:07.615687" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:07.615784" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:07.615874" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:07.602351" elapsed="0.013573"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.617894" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:07.617288" elapsed="0.000708"/>
</kw>
<msg time="2026-04-19T02:05:07.618262" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:07.618363" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:07.616479" elapsed="0.001933"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.619901" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:07.618908" elapsed="0.001051"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.622585" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.621974" elapsed="0.000704"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.623987" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.623014" elapsed="0.001101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.625011" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.624465" elapsed="0.000678"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:07.621074" elapsed="0.004190"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:07.620289" elapsed="0.005053"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.620236" elapsed="0.005166"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:07.625876" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:07.625646" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.625602" elapsed="0.000422"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:07.626554" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:05:07.626372" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.626326" elapsed="0.000314"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:07.626834" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:07.601413" elapsed="0.025696"/>
</kw>
<msg time="2026-04-19T02:05:07.627261" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:07.627331" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:07.599751" elapsed="0.027617"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:07.627625" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:07.628261" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:05:07.628077" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.628057" elapsed="0.000358"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:07.628562" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:07.265308" elapsed="0.363434"/>
</kw>
<msg time="2026-04-19T02:05:07.628842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.264755" elapsed="0.364139"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:07.263193" elapsed="0.365788"/>
</kw>
<msg time="2026-04-19T02:05:07.629021" 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-19T02:05:07.262722" elapsed="0.366360"/>
</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-19T02:05:07.632139" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:05:07.632611" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:07.632915" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:07.629379" elapsed="0.003700"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:07.261620" elapsed="0.371517"/>
</kw>
<msg time="2026-04-19T02:05:07.633192" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.261154" elapsed="0.372085"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:07.260443" elapsed="0.372879"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:05:07.260289" elapsed="0.373079"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:06.546404" elapsed="1.086999"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:05:06.542149" elapsed="1.091313"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.633626" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T02:05:07.637806" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:07.637435" elapsed="0.000397"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.638375" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:07.637991" elapsed="0.000410"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:07.638445" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:07.638597" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:07.637061" elapsed="0.001560"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.640859" 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-19T02:05:07.640958" 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-19T02:05:07.640724" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:07.643003" level="INFO">${ip_address} = 10.30.171.9</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-19T02:05:07.642555" elapsed="0.000563"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:07.643352" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:05:07.643510" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:07.642146" elapsed="0.001389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.647450" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:07.647070" elapsed="0.000407"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.649238" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:07.649314" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:07.648957" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.649493" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.650676" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:07.961495" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:07.650357" elapsed="0.311221"/>
</kw>
<msg time="2026-04-19T02:05:07.961639" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.649975" elapsed="0.311724"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:07.648476" elapsed="0.313306"/>
</kw>
<msg time="2026-04-19T02:05:07.961830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.648086" elapsed="0.313792"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:07.647677" elapsed="0.314272"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:07.962013" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:07.646385" elapsed="0.315897"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:07.964752" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:07.980058" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:07.980236" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:07.980299" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:07.980357" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:07.964570" elapsed="0.015819"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.981504" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:07.981134" elapsed="0.000433"/>
</kw>
<msg time="2026-04-19T02:05:07.981696" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:07.981757" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:07.980640" elapsed="0.001148"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.982645" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:07.982023" elapsed="0.000659"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.984200" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.983837" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.984799" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.984470" elapsed="0.000385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:07.985410" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:07.985081" elapsed="0.000444"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:07.983284" elapsed="0.002319"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:07.982792" elapsed="0.002861"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.982764" elapsed="0.002925"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:07.985905" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:07.985766" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.985743" elapsed="0.000254"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:07.986218" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:05:07.986092" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.986069" elapsed="0.000266"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:07.986565" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:07.964075" elapsed="0.022656"/>
</kw>
<msg time="2026-04-19T02:05:07.987094" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:07.987210" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:07.963342" elapsed="0.023928"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:07.988651" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:07.989638" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T02:05:07.989383" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:07.989302" elapsed="0.000540"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:07.991259" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:07.644445" elapsed="0.347102"/>
</kw>
<msg time="2026-04-19T02:05:07.992122" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.643691" elapsed="0.348506"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:07.641602" elapsed="0.350715"/>
</kw>
<msg time="2026-04-19T02:05:07.992374" 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-19T02:05:07.641153" elapsed="0.351282"/>
</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-19T02:05:07.996730" elapsed="0.000455"/>
</kw>
<kw name="Open 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-19T02:05:07.997412" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:07.997824" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:07.992839" elapsed="0.005209"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:07.640114" elapsed="0.358017"/>
</kw>
<msg time="2026-04-19T02:05:07.998207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.639663" elapsed="0.358610"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:07.638962" elapsed="0.359424"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:07.638808" elapsed="0.359671"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.001122" 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-19T02:05:08.001260" 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-19T02:05:08.000972" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:08.003352" level="INFO">${ip_address} = 10.30.171.128</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-19T02:05:08.002835" elapsed="0.000576"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:08.003642" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:05:08.003798" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:08.002442" elapsed="0.001380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.007725" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:08.007346" elapsed="0.000406"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.009623" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:08.009699" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:08.009363" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.009880" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.011084" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:08.316924" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:08.010749" elapsed="0.306263"/>
</kw>
<msg time="2026-04-19T02:05:08.317091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.010379" elapsed="0.306776"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:08.008865" elapsed="0.308378"/>
</kw>
<msg time="2026-04-19T02:05:08.317292" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.008478" elapsed="0.308862"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:08.007953" elapsed="0.309461"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:08.317479" elapsed="0.000033"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:08.006655" elapsed="0.311071"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.320272" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:08.332628" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:08.332875" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:08.332972" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:08.333101" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:08.320080" elapsed="0.013077"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.335449" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:08.334364" elapsed="0.001188"/>
</kw>
<msg time="2026-04-19T02:05:08.335768" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:08.335867" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:08.333562" elapsed="0.002355"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.337298" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:08.336329" elapsed="0.001029"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.339801" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:08.339401" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.340426" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:08.340093" elapsed="0.000390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.341017" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:08.340691" elapsed="0.000407"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:08.338420" elapsed="0.002753"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:08.337617" elapsed="0.003607"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.337571" elapsed="0.003689"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:08.341480" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:08.341339" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.341315" elapsed="0.000257"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:08.341770" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:05:08.341645" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.341623" elapsed="0.000263"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:08.342110" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:08.319553" elapsed="0.022723"/>
</kw>
<msg time="2026-04-19T02:05:08.342608" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:08.342737" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:08.318783" elapsed="0.024010"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:08.344203" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:08.345199" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:05:08.344916" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.344834" elapsed="0.000568"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:08.346797" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:08.004524" elapsed="0.342581"/>
</kw>
<msg time="2026-04-19T02:05:08.347643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.003980" elapsed="0.343737"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:08.001900" elapsed="0.345936"/>
</kw>
<msg time="2026-04-19T02:05:08.347892" 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-19T02:05:08.001443" elapsed="0.346510"/>
</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-19T02:05:08.352124" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:05:08.352599" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:08.352897" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:08.348399" elapsed="0.004779"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:08.000360" elapsed="0.352878"/>
</kw>
<msg time="2026-04-19T02:05:08.353292" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.999786" elapsed="0.353554"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:07.998817" elapsed="0.354605"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:05:07.998605" elapsed="0.354897"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.355676" 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-19T02:05:08.355775" 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-19T02:05:08.355545" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:08.357812" level="INFO">${ip_address} = 10.30.171.206</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-19T02:05:08.357365" elapsed="0.000507"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:08.358116" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:05:08.358274" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:08.356941" elapsed="0.001358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.362191" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:08.361787" elapsed="0.000432"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.364007" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:08.364108" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:08.363744" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.364294" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.365485" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:08.695912" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:08.365163" elapsed="0.330936"/>
</kw>
<msg time="2026-04-19T02:05:08.696188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.364781" elapsed="0.331499"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:08.363226" elapsed="0.333172"/>
</kw>
<msg time="2026-04-19T02:05:08.696450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.362817" elapsed="0.333685"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:08.362421" elapsed="0.334161"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:08.696688" elapsed="0.000052"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:08.360891" elapsed="0.336100"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.699846" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:08.712248" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:08.712518" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:08.712613" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:08.712701" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:08.699645" elapsed="0.013107"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.714624" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:08.713996" elapsed="0.000727"/>
</kw>
<msg time="2026-04-19T02:05:08.715144" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:08.715245" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:08.713213" elapsed="0.002082"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.716675" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:08.715681" elapsed="0.001053"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.719753" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:08.719282" elapsed="0.000532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.720393" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:08.720053" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.720992" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:08.720667" elapsed="0.000409"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:08.717744" elapsed="0.003410"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:08.716921" elapsed="0.004284"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.716872" elapsed="0.004370"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:08.721469" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:08.721324" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.721299" elapsed="0.000265"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:08.721760" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T02:05:08.721638" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.721616" elapsed="0.000264"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:08.722104" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:08.699082" elapsed="0.023189"/>
</kw>
<msg time="2026-04-19T02:05:08.722618" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:08.722730" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:08.698142" elapsed="0.024644"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:08.724325" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:08.725387" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:05:08.725125" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:08.725015" elapsed="0.000577"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:08.727091" elapsed="0.000056"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:08.359000" elapsed="0.368392"/>
</kw>
<msg time="2026-04-19T02:05:08.727836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.358455" elapsed="0.369438"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:08.356428" elapsed="0.371553"/>
</kw>
<msg time="2026-04-19T02:05:08.728022" 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-19T02:05:08.355954" elapsed="0.372150"/>
</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-19T02:05:08.731212" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:08.731683" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:08.731991" elapsed="0.000196"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:08.728408" elapsed="0.003831"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:08.354917" elapsed="0.377381"/>
</kw>
<msg time="2026-04-19T02:05:08.732390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.354464" elapsed="0.377975"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:08.353754" elapsed="0.378772"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:05:08.353600" elapsed="0.378974"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:07.638676" elapsed="1.093935"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:05:07.634633" elapsed="1.098036"/>
</kw>
<msg time="2026-04-19T02:05:08.732708" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:07.634134" elapsed="1.098618"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:08.732912" elapsed="0.000020"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T02:05:04.750236" elapsed="3.982762"/>
</kw>
<kw name="Check_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-19T02:05:08.736554" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:08.736165" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.737064" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:08.736745" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:08.737136" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:08.737292" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:08.735654" elapsed="0.001663"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.739641" 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-19T02:05:08.739742" 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-19T02:05:08.739501" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:08.741530" level="INFO">${ip_address} = 10.30.171.9</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-19T02:05:08.741260" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:08.741605" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:08.741754" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:08.740924" elapsed="0.000854"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.744645" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:08.743898" elapsed="0.000788"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:08.748159" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:08.748237" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:08.747860" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.748420" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:08.749614" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:09.058625" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:08.749294" elapsed="0.309475"/>
</kw>
<msg time="2026-04-19T02:05:09.058834" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.748916" elapsed="0.309985"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:08.747375" elapsed="0.311614"/>
</kw>
<msg time="2026-04-19T02:05:09.059112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.746443" elapsed="0.312740"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:08.744951" elapsed="0.314352"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:09.059391" elapsed="0.000034"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:08.743485" elapsed="0.316047"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.062670" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:09.075602" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:09.076249" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:05:09.076589" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:09.076914" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:09.062326" elapsed="0.014843"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.081454" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:09.080764" elapsed="0.000796"/>
</kw>
<msg time="2026-04-19T02:05:09.082073" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:09.082412" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:09.079532" elapsed="0.003092"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.084919" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:09.084195" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.086892" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.086634" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.087461" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.087219" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.087886" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.087650" elapsed="0.000279"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:09.086177" elapsed="0.001847"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:09.085226" elapsed="0.002859"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.085172" elapsed="0.002973"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:09.088512" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:09.088299" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.088250" elapsed="0.000389"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:09.088994" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T02:05:09.088791" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.088740" elapsed="0.000496"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:09.090205" elapsed="0.000057"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:09.060475" elapsed="0.030006"/>
</kw>
<msg time="2026-04-19T02:05:09.090727" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:09.090772" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:09.059720" elapsed="0.031077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:09.090955" elapsed="0.000243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:09.091376" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:05:09.091263" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.091245" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:09.091601" elapsed="0.000020"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:08.742730" elapsed="0.348987"/>
</kw>
<msg time="2026-04-19T02:05:09.091811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.741935" elapsed="0.349924"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:08.740401" elapsed="0.351689"/>
</kw>
<msg time="2026-04-19T02:05:09.092171" 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-19T02:05:08.739920" elapsed="0.352296"/>
</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-19T02:05:09.095418" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:09.095887" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:09.096202" 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-19T02:05:09.092507" elapsed="0.003841"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:08.738836" elapsed="0.357699"/>
</kw>
<msg time="2026-04-19T02:05:09.096628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:08.738384" elapsed="0.358291"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:08.737667" elapsed="0.359221"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:08.737509" elapsed="0.359462"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.099422" 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-19T02:05:09.099521" 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-19T02:05:09.099288" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:09.101378" level="INFO">${ip_address} = 10.30.171.128</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-19T02:05:09.101003" elapsed="0.000401"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:09.101453" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:09.101601" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:09.100687" elapsed="0.000939"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.104427" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:09.103684" elapsed="0.000783"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.107532" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:09.107614" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:09.107264" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.107795" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.109088" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:09.429271" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:09.108655" elapsed="0.320754"/>
</kw>
<msg time="2026-04-19T02:05:09.429487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.108300" elapsed="0.321270"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:09.106755" elapsed="0.322925"/>
</kw>
<msg time="2026-04-19T02:05:09.429775" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.106022" elapsed="0.323827"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:09.104731" elapsed="0.325242"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:09.430096" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:09.103270" elapsed="0.327003"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.433576" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:09.446137" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:09.446725" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:05:09.447097" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:09.447449" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:09.433237" elapsed="0.014425"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.452249" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:09.451619" elapsed="0.000771"/>
</kw>
<msg time="2026-04-19T02:05:09.452693" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:09.452904" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:09.449926" elapsed="0.003132"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.455622" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:09.454476" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.458304" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.457925" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.458984" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.458653" elapsed="0.000552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.459740" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.459454" elapsed="0.000330"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:09.457304" elapsed="0.002574"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:09.455987" elapsed="0.003935"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.455913" elapsed="0.004069"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:09.460365" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:09.460154" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.460105" elapsed="0.000388"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:09.460845" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:05:09.460643" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.460594" elapsed="0.000409"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:09.461995" elapsed="0.000072"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:09.431373" elapsed="0.030915"/>
</kw>
<msg time="2026-04-19T02:05:09.462529" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:09.462574" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:09.430503" elapsed="0.032095"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:09.462758" elapsed="0.000257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:09.463320" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:05:09.463190" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.463170" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:09.463546" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:09.102319" elapsed="0.361346"/>
</kw>
<msg time="2026-04-19T02:05:09.463760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.101780" elapsed="0.362028"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:09.100171" elapsed="0.363869"/>
</kw>
<msg time="2026-04-19T02:05:09.464122" 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-19T02:05:09.099699" elapsed="0.364469"/>
</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-19T02:05:09.467325" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:05:09.467798" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:09.468212" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:09.464468" elapsed="0.003897"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:09.098598" elapsed="0.369955"/>
</kw>
<msg time="2026-04-19T02:05:09.468648" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.098151" elapsed="0.370545"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:09.097291" elapsed="0.371618"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:05:09.097133" elapsed="0.371868"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.471356" 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-19T02:05:09.471459" 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-19T02:05:09.471183" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:09.473236" level="INFO">${ip_address} = 10.30.171.206</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-19T02:05:09.472944" elapsed="0.000319"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:09.473312" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:09.473460" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:09.472627" elapsed="0.000857"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.476341" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:09.475604" elapsed="0.000778"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.479439" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:09.479515" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:09.479154" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.479696" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.480861" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:09.807977" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:09.480549" elapsed="0.327601"/>
</kw>
<msg time="2026-04-19T02:05:09.808236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.480196" elapsed="0.328132"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:09.478651" elapsed="0.329793"/>
</kw>
<msg time="2026-04-19T02:05:09.808574" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.477926" elapsed="0.330720"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:09.476644" elapsed="0.332127"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:09.808873" elapsed="0.000047"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:09.474940" elapsed="0.334141"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.812396" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:05:09.824589" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:09.825221" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:05:09.825560" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:09.825885" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:09.812053" elapsed="0.014084"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.830921" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:09.829642" elapsed="0.001424"/>
</kw>
<msg time="2026-04-19T02:05:09.831618" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:09.832159" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:09.828395" elapsed="0.003990"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.834633" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:09.833735" elapsed="0.001020"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.836671" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.836413" elapsed="0.000358"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.837182" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.836926" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.837651" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:09.837374" elapsed="0.000320"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:09.835943" elapsed="0.001848"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:09.834928" elapsed="0.002908"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.834870" elapsed="0.003027"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:09.838310" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:09.838096" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.838003" elapsed="0.000435"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:09.838785" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:05:09.838585" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.838538" elapsed="0.000407"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:09.840141" elapsed="0.000059"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:09.810165" elapsed="0.030257"/>
</kw>
<msg time="2026-04-19T02:05:09.840667" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:09.840713" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:09.809318" elapsed="0.031419"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:09.840899" elapsed="0.000234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:09.841311" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:05:09.841198" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.841180" elapsed="0.000215"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:09.841539" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:09.474249" elapsed="0.367407"/>
</kw>
<msg time="2026-04-19T02:05:09.841751" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.473640" elapsed="0.368160"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:09.472110" elapsed="0.369910"/>
</kw>
<msg time="2026-04-19T02:05:09.842144" 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-19T02:05:09.471639" elapsed="0.370552"/>
</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-19T02:05:09.845339" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:05:09.845817" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:09.846251" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:09.842484" elapsed="0.003918"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:09.470434" elapsed="0.376153"/>
</kw>
<msg time="2026-04-19T02:05:09.846680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.469972" elapsed="0.376756"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:09.469281" elapsed="0.377657"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:05:09.469121" elapsed="0.377864"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:08.737374" elapsed="1.109646"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:05:08.733262" elapsed="1.113868"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.857202" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:09.854897" elapsed="0.002333"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T02:05:09.858945" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:09.858562" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.859465" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:09.859150" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:09.859538" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:09.859691" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:09.858188" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.862014" 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-19T02:05:09.862129" 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-19T02:05:09.861878" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:09.864385" level="INFO">${ip_address} = 10.30.171.9</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-19T02:05:09.863860" elapsed="0.000552"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:09.864461" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:05:09.864635" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:09.863539" elapsed="0.001121"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.869428" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:09.868578" elapsed="0.000913"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:09.872744" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:09.872839" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:09.872330" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.873021" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:09.874269" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:10.198600" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:09.873933" elapsed="0.324839"/>
</kw>
<msg time="2026-04-19T02:05:10.198868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.873578" elapsed="0.325391"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:09.871413" elapsed="0.327708"/>
</kw>
<msg time="2026-04-19T02:05:10.199284" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.870826" elapsed="0.328513"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:09.870132" elapsed="0.329365"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:10.199671" elapsed="0.000096"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:09.867164" elapsed="0.332814"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.202511" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:05:10.215423" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:10.215585" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:05:10.215665" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:10.215724" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:10.202303" elapsed="0.013453"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.216924" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:10.216526" elapsed="0.000462"/>
</kw>
<msg time="2026-04-19T02:05:10.217141" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:10.217203" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:10.216015" elapsed="0.001219"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.218107" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:10.217469" elapsed="0.000675"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.219697" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.219324" elapsed="0.000438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.220336" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.219982" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.220935" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.220602" elapsed="0.000393"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:10.218737" elapsed="0.002353"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:10.218262" elapsed="0.002879"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.218231" elapsed="0.002945"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:10.221393" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:10.221253" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.221230" elapsed="0.000253"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:10.221679" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:05:10.221556" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.221534" elapsed="0.000260"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:10.221997" elapsed="0.000055"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:10.201670" elapsed="0.020577"/>
</kw>
<msg time="2026-04-19T02:05:10.222445" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:10.222598" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:10.200390" elapsed="0.022289"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:10.223023" elapsed="0.000729"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:10.224285" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T02:05:10.223937" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.223910" elapsed="0.000647"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:10.224816" elapsed="0.000065"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:09.865379" elapsed="0.359805"/>
</kw>
<msg time="2026-04-19T02:05:10.225268" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.864835" elapsed="0.360502"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:09.862757" elapsed="0.362753"/>
</kw>
<msg time="2026-04-19T02:05:10.225569" 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-19T02:05:09.862308" elapsed="0.363327"/>
</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-19T02:05:10.229701" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:05:10.230273" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:10.230608" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:10.226071" elapsed="0.004689"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:09.861214" elapsed="0.369605"/>
</kw>
<msg time="2026-04-19T02:05:10.230875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:09.860758" elapsed="0.370165"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:09.860068" elapsed="0.370941"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:09.859901" elapsed="0.371189"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.233411" 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-19T02:05:10.233530" 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-19T02:05:10.233251" elapsed="0.000306"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:10.236015" level="INFO">${ip_address} = 10.30.171.128</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-19T02:05:10.235469" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:10.236132" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:05:10.236292" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:10.235131" elapsed="0.001186"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.240109" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:10.239475" elapsed="0.000679"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.242387" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:10.242464" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:10.242120" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.242651" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.244009" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:10.554591" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:10.243617" elapsed="0.311112"/>
</kw>
<msg time="2026-04-19T02:05:10.554796" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.243260" elapsed="0.311604"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:10.241617" elapsed="0.313338"/>
</kw>
<msg time="2026-04-19T02:05:10.555006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.241225" elapsed="0.313853"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:10.240605" elapsed="0.314613"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:10.555354" elapsed="0.000084"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:10.238484" elapsed="0.317139"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.557919" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:05:10.570133" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:10.570351" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:05:10.570439" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:10.570515" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:10.557718" elapsed="0.012840"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.571897" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:10.571431" elapsed="0.000537"/>
</kw>
<msg time="2026-04-19T02:05:10.572135" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:10.572200" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:10.570868" elapsed="0.001366"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.573165" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:10.572492" elapsed="0.000714"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.574888" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.574496" elapsed="0.000462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.575580" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.575215" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.576306" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.575899" elapsed="0.000473"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:10.573855" elapsed="0.002599"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:10.573326" elapsed="0.003182"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.573295" elapsed="0.003252"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:10.576792" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:10.576633" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.576608" elapsed="0.000289"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:10.577139" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T02:05:10.576977" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.576952" elapsed="0.000316"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:10.577489" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:10.557135" elapsed="0.020595"/>
</kw>
<msg time="2026-04-19T02:05:10.577956" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:10.578159" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:10.555975" elapsed="0.022274"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:10.578630" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:10.579961" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T02:05:10.579578" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.579548" elapsed="0.000727"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:10.580555" elapsed="0.000070"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:10.237000" elapsed="0.343932"/>
</kw>
<msg time="2026-04-19T02:05:10.581103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.236475" elapsed="0.344706"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:10.234325" elapsed="0.346984"/>
</kw>
<msg time="2026-04-19T02:05:10.581373" 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-19T02:05:10.233715" elapsed="0.347726"/>
</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-19T02:05:10.585691" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:05:10.586209" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:10.586520" 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-19T02:05:10.581896" elapsed="0.004783"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:10.232575" elapsed="0.354163"/>
</kw>
<msg time="2026-04-19T02:05:10.586795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.232110" elapsed="0.354735"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:10.231369" elapsed="0.355563"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:05:10.231201" elapsed="0.355785"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.589303" 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-19T02:05:10.589407" 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-19T02:05:10.589163" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:10.591696" level="INFO">${ip_address} = 10.30.171.206</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-19T02:05:10.591240" elapsed="0.000485"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:10.591774" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:05:10.592202" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:10.590865" elapsed="0.001364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.596119" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:10.595459" elapsed="0.000711"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.598390" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:10.598469" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:10.598113" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.598658" elapsed="0.000326"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.599921" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:10.922307" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:10.599548" elapsed="0.322896"/>
</kw>
<msg time="2026-04-19T02:05:10.922525" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.599180" elapsed="0.323429"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:10.597603" elapsed="0.325122"/>
</kw>
<msg time="2026-04-19T02:05:10.922777" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.597179" elapsed="0.325647"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:10.596626" elapsed="0.326359"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:10.923154" elapsed="0.000087"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:10.594457" elapsed="0.328977"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.925832" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:05:10.938509" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:10.938757" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:05:10.938856" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:10.938946" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:10.925631" elapsed="0.013365"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.940871" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:10.940270" elapsed="0.000702"/>
</kw>
<msg time="2026-04-19T02:05:10.941214" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:10.941313" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:10.939433" elapsed="0.001930"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.942717" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:10.941736" elapsed="0.001041"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.945506" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.944911" elapsed="0.000699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.946521" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.945948" elapsed="0.000664"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.947511" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:10.946950" elapsed="0.000657"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:10.943943" elapsed="0.003780"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:10.942958" elapsed="0.004842"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.942911" elapsed="0.004947"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:10.948283" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:10.947984" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.947946" elapsed="0.000483"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:10.948695" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:05:10.948543" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.948509" elapsed="0.000271"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:10.949093" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:10.925050" elapsed="0.024204"/>
</kw>
<msg time="2026-04-19T02:05:10.949393" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:10.949500" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:10.923800" elapsed="0.025756"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:10.949862" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:10.950976" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T02:05:10.950752" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:10.950732" elapsed="0.000452"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:10.951370" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:10.592930" elapsed="0.358682"/>
</kw>
<msg time="2026-04-19T02:05:10.951673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.592392" elapsed="0.359331"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:10.590081" elapsed="0.361730"/>
</kw>
<msg time="2026-04-19T02:05:10.951853" 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-19T02:05:10.589590" elapsed="0.362309"/>
</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-19T02:05:10.955082" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:05:10.955666" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:10.955986" elapsed="0.000142"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:10.952227" elapsed="0.003953"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:10.588507" elapsed="0.367733"/>
</kw>
<msg time="2026-04-19T02:05:10.956297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.588055" elapsed="0.368290"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:10.587315" elapsed="0.369118"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:05:10.587153" elapsed="0.369328"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:09.859770" elapsed="1.096746"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:05:09.857578" elapsed="1.098995"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:09.857307" elapsed="1.099303"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:09.857288" elapsed="1.099347"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.957939" 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-19T02:05:10.958054" 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-19T02:05:10.957805" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T02:05:10.959228" elapsed="0.000210"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.960747" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:10.960348" elapsed="0.000481"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.961329" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:10.960996" elapsed="0.000395"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:10.961440" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:05:10.961600" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:10.959648" elapsed="0.001977"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:10.962602" level="INFO">${ip_address} = 10.30.171.9</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-19T02:05:10.962330" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:10.962677" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:10.962826" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:10.961992" elapsed="0.000859"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.964453" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:10.964078" elapsed="0.000401"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:10.966909" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:10.967189" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:10.966380" elapsed="0.000909"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.967580" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:10.969542" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:11.281024" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:10.969219" elapsed="0.311924"/>
</kw>
<msg time="2026-04-19T02:05:11.281255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.968525" elapsed="0.312825"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:10.965441" elapsed="0.316057"/>
</kw>
<msg time="2026-04-19T02:05:11.281585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:10.965052" elapsed="0.316585"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:10.964657" elapsed="0.317068"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:11.281771" elapsed="0.000038"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:10.963673" elapsed="0.318252"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.283773" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:05:11.296381" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.283375" elapsed="0.013282"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:05:11.283231" elapsed="0.013515"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.298224" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:05:11.425525" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.297333" elapsed="0.128455"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:05:11.296950" elapsed="0.128926"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.427369" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:05:11.476252" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.426454" elapsed="0.050100"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:05:11.426128" elapsed="0.050634"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.478309" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:05:11.524190" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.477383" elapsed="0.047079"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:05:11.476997" elapsed="0.047551"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.525967" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:05:11.572175" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.525110" elapsed="0.047383"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:05:11.524748" elapsed="0.047833"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.574076" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:05:11.620135" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.573171" elapsed="0.047242"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:05:11.572807" elapsed="0.047699"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.621967" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:05:11.667913" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.621081" elapsed="0.047118"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:05:11.620716" elapsed="0.047571"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.669865" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:05:11.716261" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:11.668854" elapsed="0.047678"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:05:11.668528" elapsed="0.048088"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:05:11.283090" elapsed="0.433594"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:05:11.282756" elapsed="0.434066"/>
</kw>
<msg time="2026-04-19T02:05:11.717097" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:11.717206" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:11.282144" elapsed="0.435114"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:11.717630" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:11.718600" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:05:11.718309" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:11.718258" elapsed="0.000549"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:11.719179" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:10.963127" elapsed="0.756326"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T02:05:10.961823" elapsed="0.757726"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:11.721684" level="INFO">${ip_address} = 10.30.171.128</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-19T02:05:11.721024" elapsed="0.000718"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:11.721850" elapsed="0.000065"/>
</return>
<msg time="2026-04-19T02:05:11.722231" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:11.720209" elapsed="0.002078"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.725376" level="INFO">${odl_connection} = 523</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:11.724964" elapsed="0.000438"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:11.728236" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:11.728551" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:11.727367" elapsed="0.001285"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:11.728945" elapsed="0.000621"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:11.730847" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:12.052757" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:11.730523" elapsed="0.322477"/>
</kw>
<msg time="2026-04-19T02:05:12.053162" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:11.729873" elapsed="0.323395"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:11.726430" elapsed="0.326996"/>
</kw>
<msg time="2026-04-19T02:05:12.053516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:11.725971" elapsed="0.327596"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:11.725581" elapsed="0.328062"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:12.053694" elapsed="0.000038"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:11.724242" elapsed="0.329613"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.055796" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:05:12.068778" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.055393" elapsed="0.013539"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:05:12.055249" elapsed="0.013735"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.069992" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:05:12.169196" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.069332" elapsed="0.100113"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:05:12.069133" elapsed="0.100396"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.170942" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:05:12.226100" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.170078" elapsed="0.056270"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:05:12.169726" elapsed="0.056704"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.227831" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:05:12.274319" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.226933" elapsed="0.047629"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:05:12.226623" elapsed="0.048020"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.276417" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:05:12.322304" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.275372" elapsed="0.047190"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:05:12.274841" elapsed="0.047807"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.324125" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:05:12.370000" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.323225" elapsed="0.047053"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:05:12.322856" elapsed="0.047506"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.371765" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:05:12.418141" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.370877" elapsed="0.047502"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:05:12.370563" elapsed="0.047919"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.419949" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:05:12.466114" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.419084" elapsed="0.047274"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:05:12.418724" elapsed="0.047715"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:05:12.055106" elapsed="0.411400"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:05:12.054764" elapsed="0.411868"/>
</kw>
<msg time="2026-04-19T02:05:12.466857" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:12.466959" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:12.054105" elapsed="0.412905"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:12.467432" elapsed="0.000453"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:12.468379" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T02:05:12.468085" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:12.468007" elapsed="0.000659"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:12.469070" elapsed="0.000054"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:11.722912" elapsed="0.746438"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T02:05:11.719755" elapsed="0.749694"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:12.471482" level="INFO">${ip_address} = 10.30.171.206</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-19T02:05:12.470833" elapsed="0.000708"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:12.471651" elapsed="0.000061"/>
</return>
<msg time="2026-04-19T02:05:12.471983" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:12.470081" elapsed="0.001995"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.476181" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:12.475311" elapsed="0.000931"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:12.479740" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:12.480202" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:12.479201" elapsed="0.001099"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:12.480591" elapsed="0.000638"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.482542" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:12.811175" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:12.482219" elapsed="0.329119"/>
</kw>
<msg time="2026-04-19T02:05:12.811492" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:12.481528" elapsed="0.330081"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:12.478255" elapsed="0.333529"/>
</kw>
<msg time="2026-04-19T02:05:12.811879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:12.477579" elapsed="0.334354"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:12.476647" elapsed="0.335369"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:12.812094" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:12.474467" elapsed="0.337805"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.814312" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:05:12.826842" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.813891" elapsed="0.013242"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:05:12.813740" elapsed="0.013478"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.829118" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:05:12.876517" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.827733" elapsed="0.048985"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:05:12.827416" elapsed="0.049344"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.877465" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:05:12.924282" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.877068" elapsed="0.047380"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:05:12.876864" elapsed="0.047640"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.925424" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:05:12.972627" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.924948" elapsed="0.047926"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:05:12.924752" elapsed="0.048206"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:12.974445" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:05:13.020970" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:12.973550" elapsed="0.047739"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:05:12.973230" elapsed="0.048144"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.022778" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:05:13.072772" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:13.021885" elapsed="0.051127"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:05:13.021572" elapsed="0.051586"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.074566" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:05:13.125144" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:13.073679" elapsed="0.051770"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:05:13.073364" elapsed="0.052184"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.127306" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:05:13.172738" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:13.126265" elapsed="0.046715"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:05:13.125793" elapsed="0.047315"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:05:12.813588" elapsed="0.359591"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:05:12.813252" elapsed="0.360090"/>
</kw>
<msg time="2026-04-19T02:05:13.173569" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:13.173667" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:12.812507" elapsed="0.361211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:13.174121" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:13.175025" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-04-19T02:05:13.174736" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.174688" elapsed="0.000579"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:13.175599" elapsed="0.000048"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:12.472673" elapsed="0.703197"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T02:05:12.469654" elapsed="0.706314"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:10.961680" elapsed="2.214384"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T02:05:10.958734" elapsed="2.217457"/>
</kw>
<msg time="2026-04-19T02:05:13.176288" 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-19T02:05:10.958236" elapsed="2.218163"/>
</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-19T02:05:13.182422" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T02:05:13.182953" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:13.183279" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:13.177110" elapsed="0.006319"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T02:05:10.957326" elapsed="2.226164"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T02:05:10.956804" elapsed="2.226752"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T02:05:13.185428" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:13.185005" elapsed="0.000450"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.186073" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:13.185616" elapsed="0.000484"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:13.186147" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:13.186302" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:13.184624" elapsed="0.001703"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.188737" 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-19T02:05:13.188836" 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-19T02:05:13.188599" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:13.190836" level="INFO">${ip_address} = 10.30.171.9</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-19T02:05:13.190394" elapsed="0.000469"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:13.190911" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:13.191083" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:13.190058" elapsed="0.001051"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.195164" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:13.194554" elapsed="0.000655"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.197402" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:13.197478" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:13.197093" 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-19T02:05:13.197656" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.198836" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:13.517090" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:13.198513" elapsed="0.318728"/>
</kw>
<msg time="2026-04-19T02:05:13.517327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.198158" elapsed="0.319274"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:13.196586" elapsed="0.320957"/>
</kw>
<msg time="2026-04-19T02:05:13.517595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.196193" elapsed="0.321453"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:13.195656" elapsed="0.322150"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:13.517956" elapsed="0.000113"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:13.193547" elapsed="0.324719"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.520978" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:05:13.533935" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:13.534240" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:05:13.534344" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:13.534435" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:13.520777" elapsed="0.013708"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.536334" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:13.535708" elapsed="0.000728"/>
</kw>
<msg time="2026-04-19T02:05:13.536643" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:13.536741" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:13.534895" elapsed="0.001895"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.538191" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:13.537191" elapsed="0.001058"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.540668" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:13.540123" elapsed="0.000646"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.541676" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:13.541133" elapsed="0.000632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.542642" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:13.542123" elapsed="0.000613"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:13.539207" elapsed="0.003644"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:13.538425" elapsed="0.004506"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.538380" elapsed="0.004607"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:13.543361" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:13.543142" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.543103" elapsed="0.000405"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:13.543814" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:05:13.543621" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.543587" elapsed="0.000410"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:13.544349" elapsed="0.000047"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:13.519942" elapsed="0.024759"/>
</kw>
<msg time="2026-04-19T02:05:13.545058" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:13.545304" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:13.518632" elapsed="0.026846"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:13.545894" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:13.546781" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T02:05:13.546557" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.546537" elapsed="0.000430"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:13.547167" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:13.192046" elapsed="0.355368"/>
</kw>
<msg time="2026-04-19T02:05:13.547473" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.191267" elapsed="0.356259"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:13.189511" elapsed="0.358101"/>
</kw>
<msg time="2026-04-19T02:05:13.547653" 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-19T02:05:13.189015" elapsed="0.358683"/>
</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-19T02:05:13.550734" elapsed="0.000401"/>
</kw>
<kw name="Open 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-19T02:05:13.551302" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:13.551610" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:13.547998" elapsed="0.003760"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:13.187827" elapsed="0.363989"/>
</kw>
<msg time="2026-04-19T02:05:13.551872" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.187380" elapsed="0.364540"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:13.186666" elapsed="0.365339"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:13.186512" elapsed="0.365556"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.554312" 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-19T02:05:13.554432" 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-19T02:05:13.554164" elapsed="0.000295"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:13.556553" level="INFO">${ip_address} = 10.30.171.128</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-19T02:05:13.556097" elapsed="0.000484"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:13.556630" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:13.556780" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:13.555737" elapsed="0.001068"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.562599" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:13.561976" elapsed="0.000669"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.564775" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:13.564851" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:13.564514" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.565059" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.566408" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:13.885589" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:13.566007" elapsed="0.319737"/>
</kw>
<msg time="2026-04-19T02:05:13.885828" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.565562" elapsed="0.320358"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:13.564015" elapsed="0.322045"/>
</kw>
<msg time="2026-04-19T02:05:13.886202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.563617" elapsed="0.322638"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:13.563112" elapsed="0.323306"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:13.886568" elapsed="0.000087"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:13.560928" elapsed="0.325924"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.951090" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:05:13.964223" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:13.964494" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:05:13.964595" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:13.964684" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:13.889078" elapsed="0.075658"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.966737" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:13.966128" elapsed="0.000711"/>
</kw>
<msg time="2026-04-19T02:05:13.967076" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:13.967177" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:13.965248" elapsed="0.001980"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.968576" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:13.967602" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.971094" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:13.970629" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.971749" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:13.971392" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.972406" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:13.972050" elapsed="0.000420"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:13.969681" elapsed="0.002870"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:13.968817" elapsed="0.003793"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.968770" elapsed="0.003879"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:13.972884" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:13.972733" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.972708" elapsed="0.000276"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:13.973219" elapsed="0.000047"/>
</return>
<status status="PASS" start="2026-04-19T02:05:13.973085" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.973060" elapsed="0.000288"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:13.973562" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:13.888471" elapsed="0.085366"/>
</kw>
<msg time="2026-04-19T02:05:13.974067" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:13.974233" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:13.887244" elapsed="0.087075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:13.974684" elapsed="0.000716"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:13.975923" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T02:05:13.975594" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.975566" elapsed="0.000656"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:13.976493" elapsed="0.000068"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:13.559371" elapsed="0.417475"/>
</kw>
<msg time="2026-04-19T02:05:13.976934" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.556961" elapsed="0.420049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:13.555160" elapsed="0.422071"/>
</kw>
<msg time="2026-04-19T02:05:13.977292" 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-19T02:05:13.554615" elapsed="0.422745"/>
</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-19T02:05:13.981938" 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-19T02:05:13.982666" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:13.983008" elapsed="0.000170"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:13.977809" elapsed="0.005422"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:13.553506" elapsed="0.429783"/>
</kw>
<msg time="2026-04-19T02:05:13.983345" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.553018" elapsed="0.430375"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:13.552321" elapsed="0.431156"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:05:13.552164" elapsed="0.431360"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.985712" 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-19T02:05:13.985811" 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-19T02:05:13.985565" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:13.987951" level="INFO">${ip_address} = 10.30.171.206</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-19T02:05:13.987507" elapsed="0.000472"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:05:13.988049" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:05:13.988206" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:13.987180" elapsed="0.001050"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.992018" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:13.991429" elapsed="0.000653"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:13.994218" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:13.994296" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:13.993937" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.994480" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:13.995660" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:14.325234" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:13.995337" elapsed="0.330107"/>
</kw>
<msg time="2026-04-19T02:05:14.325521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.994963" elapsed="0.330639"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:13.993444" elapsed="0.332261"/>
</kw>
<msg time="2026-04-19T02:05:14.325756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.993020" elapsed="0.332812"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:05:13.992523" elapsed="0.333479"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:05:14.326206" elapsed="0.000104"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:05:13.990410" elapsed="0.336114"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.328963" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:05:14.342123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:14.342284" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:05:14.342347" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:05:14.342403" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:05:14.328761" elapsed="0.013674"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.344025" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:05:14.343421" elapsed="0.000741"/>
</kw>
<msg time="2026-04-19T02:05:14.344369" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:05:14.344465" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:14.342680" elapsed="0.001835"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.346139" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:14.344942" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.348690" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:14.348135" elapsed="0.000659"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.349696" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:14.349161" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.350742" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:14.350211" elapsed="0.000614"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:05:14.347197" elapsed="0.003681"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:14.346394" elapsed="0.004521"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.346345" elapsed="0.004595"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:05:14.351113" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:14.350997" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.350980" elapsed="0.000200"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:14.351321" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T02:05:14.351232" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.351217" elapsed="0.000191"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:14.351553" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:05:14.328178" elapsed="0.023542"/>
</kw>
<msg time="2026-04-19T02:05:14.351861" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:05:14.351973" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:05:14.326947" elapsed="0.025105"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:14.352312" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:05:14.353248" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T02:05:14.353009" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.352989" elapsed="0.000446"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:14.353618" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:05:13.988912" elapsed="0.364965"/>
</kw>
<msg time="2026-04-19T02:05:14.353994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.988386" elapsed="0.365676"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:05:13.986462" elapsed="0.367689"/>
</kw>
<msg time="2026-04-19T02:05:14.354193" 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-19T02:05:13.985992" elapsed="0.368247"/>
</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-19T02:05:14.357337" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:14.357838" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:14.358277" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:14.354543" elapsed="0.003902"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:05:13.984934" elapsed="0.373570"/>
</kw>
<msg time="2026-04-19T02:05:14.358562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:13.984488" elapsed="0.374123"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:05:13.983771" elapsed="0.374925"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:05:13.983617" elapsed="0.375127"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:13.186381" elapsed="1.172398"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:05:13.183990" elapsed="1.174848"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:13.183632" elapsed="1.175244"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:13.183612" elapsed="1.175290"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T02:05:09.850757" elapsed="4.508195"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T02:05:04.749603" elapsed="9.609486"/>
</test>
<test id="s1-s11-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.372998" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:14.372613" elapsed="0.000413"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.373573" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:14.373212" elapsed="0.000387"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T02:05:14.374062" level="INFO">${epoch} = 1776564314.373973</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T02:05:14.373763" elapsed="0.000327"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.374653" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:14.374256" elapsed="0.000423"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.375261" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:05:14.374850" elapsed="0.000438"/>
</kw>
<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-19T02:05:14.376840" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:14.376468" elapsed="0.000399"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.377345" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:14.377025" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:14.377415" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:05:14.377571" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:14.376099" elapsed="0.001497"/>
</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-19T02:05:14.378670" level="INFO">${member_ip} = 10.30.171.9</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-19T02:05:14.378403" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.379463" 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-19T02:05:14.379561" 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-19T02:05:14.379328" elapsed="0.000259"/>
</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-19T02:05:14.382244" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:14.381940" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.381920" elapsed="0.000405"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.382598" 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-19T02:05:14.382698" 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-19T02:05:14.382472" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.383353" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:14.382874" elapsed="0.000527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.384125" level="INFO">${conn_id} = 532</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:14.383557" elapsed="0.000596"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.385375" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:14.385499" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:14.384811" elapsed="0.000714"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:14.385711" elapsed="0.000734"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.388518" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:14.702802" 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 Sun Apr 19 02:05:05 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:05:14.387949" elapsed="0.315067"/>
</kw>
<msg time="2026-04-19T02:05:14.703177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:14.386673" elapsed="0.316677"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:14.384381" elapsed="0.319214"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.704124" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log'.</msg>
<msg time="2026-04-19T02:05:14.726822" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:14.727107" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:14.727211" 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-19T02:05:14.703838" elapsed="0.023423"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:14.727629" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.729267" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:14.728544" 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-19T02:05:14.729825" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:14.729535" elapsed="0.000396"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.729485" elapsed="0.000497"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:14.730398" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:05:14.730161" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.730125" elapsed="0.000458"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:14.730654" 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-19T02:05:14.746426" 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-19T02:05:14.747130" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:14.747438" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:14.731378" elapsed="0.016209"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:05:14.381392" elapsed="0.366287"/>
</kw>
<msg time="2026-04-19T02:05:14.747733" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:14.380794" elapsed="0.366990"/>
</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-19T02:05:14.380261" elapsed="0.367602"/>
</kw>
<msg time="2026-04-19T02:05:14.747905" 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-19T02:05:14.379741" elapsed="0.368209"/>
</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-19T02:05:14.751155" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:05:14.751627" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:14.751918" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:14.748258" elapsed="0.003823"/>
</kw>
<msg time="2026-04-19T02:05:14.752171" 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-19T02:05:14.378910" elapsed="0.373286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.752617" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:14.752373" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:05:14.752700" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:05:14.377985" elapsed="0.374836"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:14.377783" elapsed="0.375075"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:14.754199" level="INFO">${member_ip} = 10.30.171.128</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-19T02:05:14.753905" elapsed="0.000321"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.754977" 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-19T02:05:14.755129" 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-19T02:05:14.754842" elapsed="0.000315"/>
</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-19T02:05:14.757797" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:14.757527" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:14.757508" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.758189" 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-19T02:05:14.758289" 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-19T02:05:14.758057" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.758926" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:14.758466" elapsed="0.000508"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.759560" level="INFO">${conn_id} = 535</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:14.759148" elapsed="0.000438"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:14.760759" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:14.760881" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:14.760247" elapsed="0.000658"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:14.761105" elapsed="0.000819"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:14.764006" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:15.063632" 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 Sun Apr 19 02:04:18 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:05:14.763452" elapsed="0.300416"/>
</kw>
<msg time="2026-04-19T02:05:15.064006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:14.762194" elapsed="0.302016"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:14.759801" elapsed="0.304596"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:15.064975" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log'.</msg>
<msg time="2026-04-19T02:05:15.087723" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:15.087975" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:15.088111" 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-19T02:05:15.064666" elapsed="0.023501"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:15.088538" elapsed="0.000475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.090253" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:15.089477" elapsed="0.000878"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.090838" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:15.090536" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:15.090482" elapsed="0.000514"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:15.091423" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:05:15.091159" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:15.091123" elapsed="0.000486"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.091792" 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-19T02:05:15.108689" 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-19T02:05:15.109388" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:15.109706" 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-19T02:05:15.092546" elapsed="0.017309"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:05:14.756936" elapsed="0.353010"/>
</kw>
<msg time="2026-04-19T02:05:15.110000" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:14.756363" elapsed="0.353706"/>
</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-19T02:05:14.755817" elapsed="0.354335"/>
</kw>
<msg time="2026-04-19T02:05:15.110196" 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-19T02:05:14.755312" elapsed="0.354945"/>
</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-19T02:05:15.113446" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:15.113922" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:15.114256" 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-19T02:05:15.110554" elapsed="0.003853"/>
</kw>
<msg time="2026-04-19T02:05:15.114498" 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-19T02:05:14.754440" elapsed="0.360082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.114960" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:15.114704" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:05:15.115060" 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-19T02:05:14.753499" elapsed="0.361802"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:05:14.752954" elapsed="0.362390"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:15.116588" level="INFO">${member_ip} = 10.30.171.206</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-19T02:05:15.116309" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:15.117402" 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-19T02:05:15.117503" 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-19T02:05:15.117259" elapsed="0.000270"/>
</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-19T02:05:15.120539" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:15.120178" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:15.120158" elapsed="0.000465"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:15.120901" 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-19T02:05:15.121014" 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-19T02:05:15.120773" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.121715" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:15.121242" elapsed="0.000561"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:05:15.122463" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:05:15.121963" elapsed="0.000527"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.123692" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:05:15.123819" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:05:15.123160" elapsed="0.000685"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:15.124053" elapsed="0.000648"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:05:15.126795" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:05:15.453344" 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 Sun Apr 19 02:05:06 UTC 2026

  System load:  0.02               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:05:15.126239" elapsed="0.327293"/>
</kw>
<msg time="2026-04-19T02:05:15.453653" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:15.124929" elapsed="0.328885"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:05:15.122709" elapsed="0.331267"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:05:15.454504" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776564314.373973.log'.</msg>
<msg time="2026-04-19T02:05:15.477622" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:05:15.477877" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:05:15.477994" 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-19T02:05:15.454219" elapsed="0.023870"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:15.478502" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.480314" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:15.479425" elapsed="0.000985"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.480868" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:15.480579" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:15.480529" elapsed="0.000496"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:05:15.481419" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:05:15.481183" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:15.481148" elapsed="0.000457"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.481679" 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-19T02:05:15.500070" elapsed="0.000507"/>
</kw>
<kw name="Open 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-19T02:05:15.500744" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:15.501070" 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-19T02:05:15.482397" elapsed="0.018826"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:05:15.119605" elapsed="0.381708"/>
</kw>
<msg time="2026-04-19T02:05:15.501365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:15.119002" elapsed="0.382413"/>
</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-19T02:05:15.118469" elapsed="0.383023"/>
</kw>
<msg time="2026-04-19T02:05:15.501588" 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-19T02:05:15.117684" elapsed="0.383951"/>
</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-19T02:05:15.504787" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:05:15.505274" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:05:15.505567" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:05:15.501924" elapsed="0.003791"/>
</kw>
<msg time="2026-04-19T02:05:15.505805" 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-19T02:05:15.116834" elapsed="0.389000"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.506534" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:15.506010" elapsed="0.000565"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:05:15.506619" 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-19T02:05:15.115642" elapsed="0.391101"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:05:15.115452" elapsed="0.391328"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:05:14.377650" elapsed="1.129166"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:05:14.375560" elapsed="1.131319"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.518902" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:15.518519" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.519412" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:15.519107" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:15.519481" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:15.519633" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:15.518131" elapsed="0.001526"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.521181" 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-19T02:05:15.520867" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:05:15.521253" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:15.521398" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:15.520526" elapsed="0.000897"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.530021" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:15.529767" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:15.530506" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:15.530239" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:15.536017" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:05:15.532756" elapsed="0.005030">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:15.530621" elapsed="0.007259">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.538096" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:15.537915" elapsed="0.000296"/>
</branch>
<status status="FAIL" start="2026-04-19T02:05:15.530602" elapsed="0.007634">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.538871" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.539010" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:15.538973" elapsed="0.000096"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:15.538955" elapsed="0.000136"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.539240" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.539309" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:05:15.525283" elapsed="0.014136">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.539491" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:05:15.521632" elapsed="0.017957">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.539811" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.539936" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:15.539901" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:15.539884" elapsed="0.000112"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.540206" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.540425" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:05:15.540490" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:05:15.520154" elapsed="0.020436">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:05:15.540708" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:05:15.540669" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:15.540652" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.540917" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:05:15.519897" elapsed="0.021090">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:05:15.519714" elapsed="0.021346">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:05:15.517686" elapsed="0.023472">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:15.517365" elapsed="0.023854">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T02:05:15.517346" elapsed="0.023935">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:05:15.541553" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:15.541354" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:15.541337" elapsed="0.000293"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:05:15.541890" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:15.541683" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:15.541667" elapsed="0.000301"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:05:15.516925" elapsed="0.025172">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:25.560229" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:25.559702" elapsed="0.000561"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:25.560752" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:25.560436" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:25.560829" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:05:25.561002" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:25.559289" elapsed="0.001738"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:25.562648" 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-19T02:05:25.562330" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:05:25.562725" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:05:25.562878" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:25.561955" elapsed="0.000948"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:25.571104" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:25.570722" elapsed="0.000445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:25.571580" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:25.571334" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:25.664023" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:25.664270" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:05:25.664609" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:05:25.573950" elapsed="0.091528">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:25.571708" elapsed="0.094074">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.666321" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:25.665868" elapsed="0.000606"/>
</branch>
<status status="FAIL" start="2026-04-19T02:05:25.571683" elapsed="0.094844">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.667768" elapsed="0.000085"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:25.668138" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:25.668020" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:25.667979" elapsed="0.000304"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.668608" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:05:25.668766" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:05:25.565826" elapsed="0.103179">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:25.669227" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:05:25.563139" elapsed="0.106312">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.669942" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:05:25.670275" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:25.670195" elapsed="0.000169"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:25.670156" elapsed="0.000259"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.670852" elapsed="0.000054"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.671375" elapsed="0.000053"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:05:25.671528" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:05:25.561565" elapsed="0.110183">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:05:25.672086" elapsed="0.000037"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:05:25.671973" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:25.671934" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.672336" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:05:25.561309" elapsed="0.111097">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:05:25.561111" elapsed="0.111355">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:05:25.558844" elapsed="0.113721">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:25.558407" elapsed="0.114217">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:05:25.558378" elapsed="0.114278">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:05:25.672921" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:25.672722" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:25.672706" elapsed="0.000293"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:05:25.673326" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:25.673109" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:25.673061" elapsed="0.000347"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:05:25.557806" elapsed="0.115683">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:35.694822" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:35.694359" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:35.695357" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:35.695027" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:35.695434" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:05:35.695618" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:35.693877" elapsed="0.001766"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:35.697171" 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-19T02:05:35.696858" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:05:35.697244" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:35.697390" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:35.696514" elapsed="0.000900"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:35.705024" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:35.704758" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:35.705486" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:35.705242" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:35.720078" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:35.720191" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:05:35.720408" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:05:35.707737" elapsed="0.013233">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:35.705600" elapsed="0.015540">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.721428" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:35.721194" elapsed="0.000339"/>
</branch>
<status status="FAIL" start="2026-04-19T02:05:35.705582" elapsed="0.015992">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.722457" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:35.722656" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:35.722602" elapsed="0.000117"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:35.722576" elapsed="0.000175"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.722966" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:05:35.723118" elapsed="0.000028"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:05:35.700158" elapsed="0.023131">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:35.723393" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:05:35.697623" elapsed="0.025936">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.724066" elapsed="0.000056"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:05:35.724347" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:35.724268" elapsed="0.000169"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:35.724231" elapsed="0.000254"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.724916" elapsed="0.000051"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.725457" elapsed="0.000051"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:05:35.725603" elapsed="0.000032"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:05:35.696140" elapsed="0.029683">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:05:35.726114" elapsed="0.000036"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:05:35.725992" elapsed="0.000212"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:35.725956" elapsed="0.000297"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.726566" elapsed="0.000045"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:05:35.695892" elapsed="0.030975">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:05:35.695703" elapsed="0.031346">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:05:35.693459" elapsed="0.033811">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:35.693053" elapsed="0.034341">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:05:35.693011" elapsed="0.034450">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:05:35.728091" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:35.727603" elapsed="0.000609"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:35.727567" elapsed="0.000696"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:05:35.728831" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:35.728377" elapsed="0.000747"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:35.728344" elapsed="0.000833"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:05:35.692490" elapsed="0.036862">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:45.747380" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:45.746879" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:45.747971" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:45.747587" elapsed="0.000413"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:45.748065" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:05:45.748244" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:45.746439" elapsed="0.001830"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:45.750116" 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-19T02:05:45.749777" elapsed="0.000366"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:05:45.750191" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:05:45.750342" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:45.749408" elapsed="0.000959"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:45.758442" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:45.758157" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:45.758915" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:45.758650" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:46.028430" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:46.028638" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:05:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:05:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564346,"status":200} 
 </msg>
<msg time="2026-04-19T02:05:46.028943" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:05:45.761199" elapsed="0.267807"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:45.759048" elapsed="0.270143"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.029704" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.029261" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:45.759011" elapsed="0.270891"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.037016" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564346,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.032752" elapsed="0.004438"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.032185" elapsed="0.005156"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.032141" elapsed="0.005252"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.041973" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.037815" elapsed="0.004327"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.037473" elapsed="0.004818"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.037449" elapsed="0.004880"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.043354" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.042573" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.043946" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.043574" elapsed="0.000634"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.045341" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:46.044479" elapsed="0.000977"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.044246" elapsed="0.001411"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.043547" elapsed="0.002144"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.046458" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.045901" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.046810" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.046555" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.047744" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:46.047185" elapsed="0.000639"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.047005" elapsed="0.000965"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.046537" elapsed="0.001457"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:46.048166" elapsed="0.000656"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:05:46.049837" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.048989" elapsed="0.000881"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:05:46.050087" elapsed="0.003006"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:05:46.031146" elapsed="0.022015"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.053353" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:46.053230" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.053211" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:05:46.056454" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564346,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:05:46.053567" elapsed="0.002917"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:05:46.056536" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:05:46.056700" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564346,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:05:45.753344" elapsed="0.303382"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:05:46.056784" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:05:46.056932" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564346,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:05:45.750581" elapsed="0.306377"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.057829" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564346,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.057578" elapsed="0.000300"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.058865" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564346, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.058467" elapsed="0.000647"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:05:46.059168" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:46.059331" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564346, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:05:46.058129" elapsed="0.001262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:46.059777" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:46.059552" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:46.060192" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:46.059959" elapsed="0.000258"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:05:46.060265" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:05:46.060412" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:05:46.057203" elapsed="0.003234"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.060611" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:46.060503" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.060487" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.068386" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.068135" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.068833" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.068586" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:46.077483" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:46.077561" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:05:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:05:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564346,"status":200} 
 </msg>
<msg time="2026-04-19T02:05:46.077673" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:05:46.071164" elapsed="0.006537"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.068969" elapsed="0.008776"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.077924" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.077770" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.068947" elapsed="0.009062"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.081895" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564346,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.079215" elapsed="0.002866"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.078956" elapsed="0.003278"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.078938" elapsed="0.003334"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.086521" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.082689" elapsed="0.003960"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.082352" elapsed="0.004446"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.082328" elapsed="0.004508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.087818" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.087093" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.088331" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.087952" elapsed="0.000615"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.089782" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:46.088830" elapsed="0.001065"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.088604" elapsed="0.001547"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.087927" elapsed="0.002258"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.091149" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.090413" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.091643" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.091284" elapsed="0.000596"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.092941" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:46.092165" elapsed="0.000951"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:46.091916" elapsed="0.001405"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.091259" elapsed="0.002119"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:46.093668" elapsed="0.000776"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:05:46.095396" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.094613" elapsed="0.000810"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:05:46.095577" elapsed="0.003185"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:05:46.078526" elapsed="0.020301"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.099005" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:46.098896" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.098877" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:05:46.101934" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:05:46.099235" elapsed="0.002728"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:05:46.102016" elapsed="0.000127"/>
</return>
<msg time="2026-04-19T02:05:46.102274" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:05:46.063586" elapsed="0.038715"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:05:46.102358" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:05:46.102505" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:05:46.060878" elapsed="0.041653"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.103361" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564346,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.103107" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.104365" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564346, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:46.103958" elapsed="0.000435"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:05:46.104442" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:46.104600" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564346, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:05:46.103616" elapsed="0.001010"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:46.105001" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:46.104780" elapsed="0.000331"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:46.105498" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:46.105274" elapsed="0.000253"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:05:46.105576" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:46.105727" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:05:46.102741" elapsed="0.003011"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:05:46.105794" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:05:46.105939" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:05:45.748753" elapsed="0.357211"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:05:46.106194" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-19T02:05:46.106078" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:46.106014" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.106430" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:45.748521" elapsed="0.357963"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.107909" level="INFO">${session} = ClusterManagement__session_2</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-19T02:05:46.107606" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:05:46.107984" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:46.108150" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:46.107261" elapsed="0.000915"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.115858" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.115602" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:46.116322" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:46.116079" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:46.144139" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:46.144291" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:05:46.144526" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:05:46.118590" elapsed="0.026574">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:46.116435" elapsed="0.028872">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.145664" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.145364" elapsed="0.000429"/>
</branch>
<status status="FAIL" start="2026-04-19T02:05:46.116416" elapsed="0.029435">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.146761" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.147083" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:46.147000" elapsed="0.000151"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:46.146971" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.147404" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.147509" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:05:46.111125" elapsed="0.036550">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.147782" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:05:46.108389" elapsed="0.039541">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.148274" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.148613" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:46.148410" elapsed="0.000269"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:46.148385" elapsed="0.000327"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.149069" elapsed="0.000041"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.149457" elapsed="0.000036"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:05:46.149560" elapsed="0.000023"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:05:46.106862" elapsed="0.042850">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:05:46.149884" elapsed="0.000024"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:05:46.149829" elapsed="0.000115"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:46.149804" elapsed="0.000170"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.150258" elapsed="0.000040"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:05:46.106631" elapsed="0.043749">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:05:45.748330" elapsed="0.402142">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:05:45.745998" elapsed="0.404619">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:45.745622" elapsed="0.405084">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:05:45.745594" elapsed="0.405157">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:05:46.151176" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.150851" elapsed="0.000406"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:46.150825" elapsed="0.000466"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:05:46.151679" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:46.151370" elapsed="0.000393"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:46.151347" elapsed="0.000451"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:05:45.745074" elapsed="0.406841">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.170850" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:05:56.170392" elapsed="0.000491"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.171389" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:05:56.171071" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:05:56.171464" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:05:56.171634" level="INFO">${index_list} = [1, 2, 3]</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-19T02:05:56.169958" elapsed="0.001701"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.173207" 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-19T02:05:56.172891" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:05:56.173281" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:56.173428" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:56.172522" elapsed="0.000931"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.181025" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.180769" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.181484" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.181243" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:56.190907" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:56.191013" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:05:56 GMT', 'Expires': 'Sun, 19 Apr 2026 01:05:56 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564356,"status":200} 
 </msg>
<msg time="2026-04-19T02:05:56.191195" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:05:56.183880" elapsed="0.007353"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.181592" elapsed="0.009702"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.191544" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.191331" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.181574" elapsed="0.010088"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.197152" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564356,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.193436" elapsed="0.003885"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.193009" elapsed="0.004487"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.192983" elapsed="0.004554"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.201773" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.197981" elapsed="0.003883"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.197622" elapsed="0.004347"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.197597" elapsed="0.004398"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.202762" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.202196" elapsed="0.000594"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.203166" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.202866" elapsed="0.000472"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.204166" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:56.203583" elapsed="0.000662"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.203413" elapsed="0.000978"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.202847" elapsed="0.001567"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.205121" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.204589" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.205479" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.205225" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.206419" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:56.205839" elapsed="0.000657"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.205678" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.205204" elapsed="0.001461"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:56.206823" elapsed="0.000681"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:05:56.208513" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.207673" elapsed="0.000878"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:05:56.208709" elapsed="0.003154"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:05:56.192384" elapsed="0.019549"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.212135" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:56.212006" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.211986" elapsed="0.000220"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:05:56.215254" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564356,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:05:56.212356" elapsed="0.002928"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:05:56.215338" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:05:56.215507" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564356,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:05:56.176164" elapsed="0.039370"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:05:56.215593" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:05:56.215741" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564356,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:05:56.173663" elapsed="0.042104"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.216690" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564356,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.216406" elapsed="0.000334"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.217717" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564356, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.217310" elapsed="0.000435"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:05:56.217794" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:56.217952" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564356, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:05:56.216948" elapsed="0.001030"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:56.218444" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:56.218152" elapsed="0.000320"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:56.218837" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:56.218628" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:05:56.218910" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:05:56.219136" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:05:56.216009" elapsed="0.003154"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.219347" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:56.219236" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.219217" elapsed="0.000195"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.227275" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.226987" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.227717" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.227478" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:56.235561" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:56.235642" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:05:56 GMT', 'Expires': 'Sun, 19 Apr 2026 01:05:56 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564356,"status":200} 
 </msg>
<msg time="2026-04-19T02:05:56.235765" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:05:56.230150" elapsed="0.005641"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.227829" elapsed="0.008010"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.236061" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.235871" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.227809" elapsed="0.008340"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.240156" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564356,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.237448" elapsed="0.002805"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.237192" elapsed="0.003166"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.237171" elapsed="0.003214"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.243365" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.240698" elapsed="0.002761"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.240442" elapsed="0.003122"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.240426" elapsed="0.003164"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.244366" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.243781" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.244761" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.244493" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.245940" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:56.245138" elapsed="0.000941"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.244957" elapsed="0.001340"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.244445" elapsed="0.001888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.247419" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.246645" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.247936" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.247561" elapsed="0.000734"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.249446" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:05:56.248607" elapsed="0.000954"/>
</kw>
<status status="PASS" start="2026-04-19T02:05:56.248333" elapsed="0.001439"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.247534" elapsed="0.002273"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:05:56.250061" elapsed="0.000963"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:05:56.252555" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.251293" elapsed="0.001301"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:05:56.252826" elapsed="0.004611"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:05:56.236720" elapsed="0.020792"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.257705" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:56.257588" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.257568" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:05:56.260814" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:05:56.257925" elapsed="0.002918"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:05:56.260895" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:05:56.261080" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:05:56.222494" elapsed="0.038614"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:05:56.261165" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:05:56.261313" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:05:56.219801" elapsed="0.041537"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.262250" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564356,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.261950" elapsed="0.000350"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.263281" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564356, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:05:56.262858" elapsed="0.000450"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:05:56.263357" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:05:56.263515" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564356, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:05:56.262508" elapsed="0.001032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:56.263916" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:56.263693" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:05:56.264473" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:05:56.264230" elapsed="0.000272"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:05:56.264551" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:05:56.264700" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:05:56.261580" elapsed="0.003144"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:05:56.264766" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:05:56.264912" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:05:56.172146" elapsed="0.092790"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:05:56.265138" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T02:05:56.265008" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T02:05:56.264989" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.265373" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:05:56.171901" elapsed="0.093527"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.267070" level="INFO">${session} = ClusterManagement__session_2</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-19T02:05:56.266759" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:05:56.267143" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:05:56.267290" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:05:56.266419" elapsed="0.000895"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.274814" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.274555" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:05:56.275271" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:05:56.275015" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:05:56.286777" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:05:56.286867" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:05:56.287025" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:05:56.277526" elapsed="0.009976">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:56.275386" elapsed="0.012216">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.287843" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.287643" elapsed="0.000266"/>
</branch>
<status status="FAIL" start="2026-04-19T02:05:56.275366" elapsed="0.012568">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.288574" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.288725" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:56.288682" elapsed="0.000087"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:56.288663" elapsed="0.000129"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.288937" elapsed="0.000083"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.289088" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:05:56.270128" elapsed="0.019091">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.289375" elapsed="0.000033"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:05:56.267522" elapsed="0.022068">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.290106" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.290386" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:05:56.290309" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:56.290273" elapsed="0.000248"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.290952" elapsed="0.000050"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.291467" elapsed="0.000050"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:05:56.291612" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:05:56.266023" elapsed="0.025806">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:05:56.292128" elapsed="0.000036"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:05:56.292000" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:56.291964" elapsed="0.000300"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.292594" elapsed="0.000047"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:05:56.265792" elapsed="0.026957">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:05:56.171717" elapsed="0.121162">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:05:56.169464" elapsed="0.123660">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:05:56.168983" elapsed="0.124273">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:05:56.168950" elapsed="0.124373">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:05:56.293900" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.293467" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:56.293431" elapsed="0.000667"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:05:56.294673" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:05:56.294217" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:05:56.294182" elapsed="0.000662"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:05:56.168276" elapsed="0.126742">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.316090" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:06:06.315533" elapsed="0.000590"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.316688" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:06:06.316371" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:06:06.316764" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:06:06.316931" level="INFO">${index_list} = [1, 2, 3]</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-19T02:06:06.315127" elapsed="0.001829"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.318504" 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-19T02:06:06.318204" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:06.318578" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:06.318725" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:06.317820" elapsed="0.000930"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.326392" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.326127" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.326845" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.326597" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:06.334897" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:06.334975" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:06 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:06 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564366,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:06.335125" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:06.329102" elapsed="0.006051"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.326957" elapsed="0.008239"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.335376" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.335223" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.326939" elapsed="0.008520"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.339614" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564366,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.336634" elapsed="0.003112"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.336388" elapsed="0.003513"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.336370" elapsed="0.003570"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.344157" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.340381" elapsed="0.003902"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.340020" elapsed="0.004411"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.339997" elapsed="0.004472"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.345471" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.344712" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.346001" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.345609" elapsed="0.000659"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.347194" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:06.346543" elapsed="0.000728"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.346308" elapsed="0.001138"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.345584" elapsed="0.001888"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.348182" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.347639" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.348546" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.348281" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.349492" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:06.348912" elapsed="0.000660"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.348752" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.348263" elapsed="0.001481"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:06.349897" elapsed="0.000689"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:06.351578" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.350752" elapsed="0.000854"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:06.351764" elapsed="0.003009"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:06.335950" elapsed="0.018888"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.355017" elapsed="0.000102"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:06.354908" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.354889" elapsed="0.000285"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:06.358085" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564366,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:06.355322" elapsed="0.002793"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:06.358169" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:06:06.358328" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564366,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:06.321467" elapsed="0.036888"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:06.358413" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:06.358568" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564366,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:06.318959" elapsed="0.039641"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.359556" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564366,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.359303" elapsed="0.000307"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.360576" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564366, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.360176" elapsed="0.000429"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:06.360655" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:06.360814" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564366, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:06.359819" elapsed="0.001021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:06.361237" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:06.360995" elapsed="0.000270"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:06.361670" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:06.361457" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:06.361745" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:06.361895" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:06.358827" elapsed="0.003093"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.362123" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:06.361999" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.361981" elapsed="0.000208"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.369867" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.369616" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.370356" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.370104" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:06.378759" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:06.378836" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:06 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:06 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564366,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:06.378949" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:06.372603" elapsed="0.006374"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.370469" elapsed="0.008551"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.379220" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.379065" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.370451" elapsed="0.008855"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.383401" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564366,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.380481" elapsed="0.003052"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.380239" elapsed="0.003442"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.380221" elapsed="0.003498"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.387886" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.384159" elapsed="0.003852"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.383804" elapsed="0.004373"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.383781" elapsed="0.004434"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.389184" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.388444" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.389675" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.389319" elapsed="0.000595"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.390914" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:06.390276" elapsed="0.000716"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.389951" elapsed="0.001208"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.389294" elapsed="0.001890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.391862" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.391345" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.392285" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.391957" elapsed="0.000500"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.393217" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:06.392646" elapsed="0.000650"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:06.392483" elapsed="0.000958"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.391940" elapsed="0.001524"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:06.393617" elapsed="0.000675"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:06.395252" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.394458" elapsed="0.000821"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:06.395434" elapsed="0.003175"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:06.379802" elapsed="0.018872"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.398850" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:06.398743" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.398725" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:06.401839" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:06.399075" elapsed="0.002793"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:06.401920" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:06:06.402117" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:06.365126" elapsed="0.037019"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:06.402203" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:06.402352" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:06.362392" elapsed="0.039987"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.403208" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564366,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.402939" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.404338" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564366, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:06.403826" elapsed="0.000542"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:06.404418" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:06.404578" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564366, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:06.403467" elapsed="0.001138"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:06.404979" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:06.404759" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:06.405385" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:06.405176" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:06.405458" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:06.405651" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:06.402588" elapsed="0.003089"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:06:06.405720" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:06:06.405868" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:06:06.317441" elapsed="0.088452"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:06:06.406108" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:06:06.405960" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:06.405943" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.406338" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:06:06.317210" elapsed="0.089184"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.407792" level="INFO">${session} = ClusterManagement__session_2</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-19T02:06:06.407493" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:06.407867" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:06.408015" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:06.407151" elapsed="0.000939"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.416125" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.415860" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:06.416670" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:06.416325" elapsed="0.000389"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:06.432765" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:06.432925" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:06:06.433245" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:06:06.418918" elapsed="0.015175">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:06.416781" elapsed="0.017501">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.434692" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.434354" elapsed="0.000481"/>
</branch>
<status status="FAIL" start="2026-04-19T02:06:06.416762" elapsed="0.018122">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.436065" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.436367" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:06.436284" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:06.436244" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.436821" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.436974" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:06:06.411191" elapsed="0.026093">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.437523" elapsed="0.000041"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:06:06.408304" elapsed="0.029448">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.438314" elapsed="0.000056"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.438600" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:06.438521" elapsed="0.000167"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:06.438484" elapsed="0.000253"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.439204" elapsed="0.000054"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.439695" elapsed="0.000052"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:06:06.439844" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:06:06.406758" elapsed="0.033340">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:06:06.440357" elapsed="0.000034"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:06:06.440278" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:06.440241" elapsed="0.000248"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.440801" elapsed="0.000045"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:06:06.406533" elapsed="0.034422">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:06:06.317012" elapsed="0.124102">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:06:06.314696" elapsed="0.126631">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:06.314325" elapsed="0.127131">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:06:06.314300" elapsed="0.127223">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:06:06.442171" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.441667" elapsed="0.000626"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:06.441631" elapsed="0.000714"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:06:06.442744" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:06.442462" elapsed="0.000337"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:06.442429" elapsed="0.000393"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:06:06.313775" elapsed="0.129126">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.465420" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:06:16.464881" elapsed="0.000573"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.465954" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:06:16.465632" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:06:16.466045" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:06:16.466308" level="INFO">${index_list} = [1, 2, 3]</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-19T02:06:16.464465" elapsed="0.001870"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.467866" 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-19T02:06:16.467563" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:16.467940" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:16.468103" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:16.467214" elapsed="0.000914"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.475862" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.475587" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.476341" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.476086" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:16.484887" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:16.484996" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:16 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564376,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:16.485137" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:16.478622" elapsed="0.006542"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.476458" elapsed="0.008755"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.485412" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.485243" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.476437" elapsed="0.009062"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.489973" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564376,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.486781" elapsed="0.003372"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.486524" elapsed="0.003831"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.486504" elapsed="0.003905"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.494730" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.490898" elapsed="0.003927"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.490521" elapsed="0.004416"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.490489" elapsed="0.004475"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.495762" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.495185" elapsed="0.000605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.496179" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.495863" elapsed="0.000512"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.497190" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:16.496575" elapsed="0.000700"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.496403" elapsed="0.001024"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.495844" elapsed="0.001607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.498184" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.497631" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.498615" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.498350" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.499588" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:16.498990" elapsed="0.000688"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.498822" elapsed="0.001009"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.498330" elapsed="0.001526"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:16.500023" elapsed="0.000767"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:16.501854" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.500994" elapsed="0.000888"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:16.502093" elapsed="0.003175"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:16.486067" elapsed="0.019277"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.505540" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:16.505421" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.505400" elapsed="0.000211"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:16.508638" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564376,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:16.505760" elapsed="0.002910"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:16.508724" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:06:16.508924" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564376,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:16.470913" elapsed="0.038045"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:16.509021" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:06:16.509196" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564376,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:16.468356" elapsed="0.040867"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.510153" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564376,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.509856" elapsed="0.000349"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.511219" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564376, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.510781" elapsed="0.000469"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:16.511301" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:16.511466" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564376, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:16.510421" elapsed="0.001073"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:16.511889" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:16.511656" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:16.512570" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:16.512130" elapsed="0.000468"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:16.512650" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:16.512867" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:16.509479" elapsed="0.003414"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.513168" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:16.512991" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.512972" elapsed="0.000264"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.521216" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.520871" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.521672" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.521425" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:16.530596" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:16.530682" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:16 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564376,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:16.530808" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:16.523948" elapsed="0.006887"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.521791" elapsed="0.009094"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.531108" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.530917" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.521771" elapsed="0.009425"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.535939" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564376,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.532493" elapsed="0.003626"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.532233" elapsed="0.004045"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.532213" elapsed="0.004106"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.540819" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.536758" elapsed="0.004209"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.536402" elapsed="0.004764"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.536378" elapsed="0.004829"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.542342" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.541480" elapsed="0.000901"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.542863" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.542483" elapsed="0.000660"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.544279" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:16.543426" elapsed="0.000972"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.543182" elapsed="0.001431"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.542457" elapsed="0.002191"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.545834" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.544884" elapsed="0.000989"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.546255" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.545951" elapsed="0.000479"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.547199" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:16.546616" elapsed="0.000730"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:16.546456" elapsed="0.001043"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.545933" elapsed="0.001590"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:16.547687" elapsed="0.000687"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:16.549394" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.548543" elapsed="0.000878"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:16.549576" elapsed="0.003377"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:16.531756" elapsed="0.021271"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.553230" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:16.553116" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.553096" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:16.556295" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:16.553446" elapsed="0.002878"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:16.556377" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:06:16.556542" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:16.516103" elapsed="0.040465"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:16.556625" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:16.556772" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:16.513447" elapsed="0.043351"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.557716" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564376,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.557445" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.558905" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564376, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:16.558497" elapsed="0.000436"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:16.558983" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:16.559160" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564376, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:16.557971" elapsed="0.001216"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:16.559566" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:16.559343" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:16.559955" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:16.559746" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:16.560027" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:06:16.560191" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:16.557078" elapsed="0.003137"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:06:16.560260" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:06:16.560464" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:06:16.466811" elapsed="0.093678"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:06:16.560672" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:06:16.560561" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:16.560544" elapsed="0.000211"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.560904" elapsed="0.000035"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:06:16.466581" elapsed="0.094393"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.562460" level="INFO">${session} = ClusterManagement__session_2</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-19T02:06:16.562119" elapsed="0.000368"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:16.562535" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:16.562681" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:16.561754" elapsed="0.000952"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.570410" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.570149" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:16.570855" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:16.570613" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:16.583666" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:16.583796" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:06:16.584024" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:06:16.573148" elapsed="0.011498">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:16.570968" elapsed="0.013820">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.585198" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.584846" elapsed="0.000459"/>
</branch>
<status status="FAIL" start="2026-04-19T02:06:16.570948" elapsed="0.014395">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.586240" elapsed="0.000045"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.586460" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:16.586400" elapsed="0.000126"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:16.586371" elapsed="0.000187"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.586778" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.586883" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:06:16.565653" elapsed="0.021421">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.587261" elapsed="0.000025"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:06:16.562916" elapsed="0.024499">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.587747" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.587939" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:16.587885" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:16.587859" elapsed="0.000195"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.588369" elapsed="0.000039"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.588708" elapsed="0.000035"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:06:16.588810" elapsed="0.000023"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:06:16.561374" elapsed="0.027622">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:06:16.589214" elapsed="0.000025"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:06:16.589157" elapsed="0.000119"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:16.589130" elapsed="0.000178"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.589526" elapsed="0.000032"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:06:16.561142" elapsed="0.028493">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:06:16.466394" elapsed="0.123333">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:06:16.464023" elapsed="0.125853">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:16.463581" elapsed="0.126388">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:06:16.463553" elapsed="0.126463">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:06:16.590440" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.590142" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:16.590117" elapsed="0.000438"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:06:16.590946" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:16.590634" elapsed="0.000413"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:16.590611" elapsed="0.000475"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:06:16.462985" elapsed="0.128233">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.607081" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:06:26.606482" elapsed="0.000640"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.607723" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:06:26.607342" elapsed="0.000413"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:06:26.607816" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:06:26.608016" level="INFO">${index_list} = [1, 2, 3]</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-19T02:06:26.605952" elapsed="0.002112"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.610052" 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-19T02:06:26.609680" elapsed="0.000405"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:26.610141" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:06:26.610314" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:26.609252" elapsed="0.001091"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.619987" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.619680" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.620545" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.620258" elapsed="0.000339"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:26.629148" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:26.629228" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:26 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:26 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564386,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:26.629345" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:26.622910" elapsed="0.006461"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.620679" elapsed="0.008738"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.629783" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.629624" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.620656" elapsed="0.009213"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.634026" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564386,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.631296" elapsed="0.002843"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.631020" elapsed="0.003226"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.631001" elapsed="0.003274"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.637288" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.634576" elapsed="0.002806"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.634335" elapsed="0.003153"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.634319" elapsed="0.003197"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.638268" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.637699" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.638627" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.638367" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.639581" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:26.638994" elapsed="0.000667"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.638827" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.638349" elapsed="0.001484"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.640570" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.640046" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.640972" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.640667" elapsed="0.000514"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.641995" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:26.641372" elapsed="0.000719"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.641208" elapsed="0.001033"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.640650" elapsed="0.001617"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:26.642430" elapsed="0.000675"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:26.644086" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.643273" elapsed="0.000840"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:26.644272" elapsed="0.003054"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:26.630418" elapsed="0.016981"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.647588" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:26.647472" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.647453" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:26.652228" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564386,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:26.647802" elapsed="0.004456"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:26.652312" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:06:26.652482" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564386,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:26.613771" elapsed="0.038737"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:26.652566" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:06:26.652709" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564386,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:26.610602" elapsed="0.042132"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.653781" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564386,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.653504" elapsed="0.000326"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.654819" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564386, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.654408" elapsed="0.000441"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:26.654900" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:26.655079" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564386, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:26.654054" elapsed="0.001053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:26.655492" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:26.655265" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:26.655890" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:26.655678" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:26.655965" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:06:26.656131" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:26.653000" elapsed="0.003156"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.656395" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:26.656228" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.656210" elapsed="0.000252"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.664073" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.663789" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.664523" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.664279" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:26.673085" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:26.673169" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:26 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:26 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564386,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:26.673291" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:26.666789" elapsed="0.006529"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.664635" elapsed="0.008728"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.673556" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.673392" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.664616" elapsed="0.009025"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.677883" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564386,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.674932" elapsed="0.003048"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.674675" elapsed="0.003428"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.674654" elapsed="0.003479"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.681291" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.678439" elapsed="0.002985"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.678191" elapsed="0.003390"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.678174" elapsed="0.003448"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.682691" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.681887" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.683242" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.682832" elapsed="0.000667"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.684635" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:26.683782" elapsed="0.000972"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.683537" elapsed="0.001451"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.682806" elapsed="0.002217"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.686058" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.685289" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.686579" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.686201" elapsed="0.000630"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.688076" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:26.687238" elapsed="0.000955"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:26.686870" elapsed="0.001537"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.686175" elapsed="0.002268"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:26.688676" elapsed="0.000883"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:26.690604" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.689790" elapsed="0.000841"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:26.690788" elapsed="0.003115"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:26.674221" elapsed="0.019755"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.694181" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:26.694065" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.694044" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:26.697245" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:26.694405" elapsed="0.002873"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:26.697331" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:06:26.697498" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:26.659301" elapsed="0.038224"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:26.697584" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:26.697733" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:26.656665" elapsed="0.041094"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.698648" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564386,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.698381" elapsed="0.000316"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.699801" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564386, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:26.699392" elapsed="0.000438"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:26.699880" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:06:26.700058" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564386, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:26.698909" elapsed="0.001177"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:26.700485" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:26.700243" elapsed="0.000271"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:26.700908" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:26.700671" elapsed="0.000263"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:26.700981" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:26.701186" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:26.697995" elapsed="0.003217"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:06:26.701256" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:26.701401" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:06:26.608730" elapsed="0.092695"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:06:26.701605" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:06:26.701495" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:26.701478" elapsed="0.000268"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.701899" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:06:26.608446" elapsed="0.093509"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.703461" level="INFO">${session} = ClusterManagement__session_2</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-19T02:06:26.703151" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:26.703534" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:26.703682" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:26.702745" elapsed="0.000962"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.711496" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.711233" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:26.711942" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:26.711700" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:26.725465" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:26.725552" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:06:26.725704" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:06:26.714230" elapsed="0.011903">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:26.712071" elapsed="0.014158">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.726464" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.726274" elapsed="0.000257"/>
</branch>
<status status="FAIL" start="2026-04-19T02:06:26.712050" elapsed="0.014505">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.727158" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.727309" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:26.727267" elapsed="0.000086"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:26.727246" elapsed="0.000128"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.727520" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.727590" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:06:26.706714" elapsed="0.020990">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.727777" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:06:26.703922" elapsed="0.023954">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.728184" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.728318" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:26.728282" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:26.728265" elapsed="0.000113"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.728578" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.728799" elapsed="0.000039"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:06:26.728893" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:06:26.702363" elapsed="0.026637">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:06:26.729140" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:06:26.729099" elapsed="0.000131"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:26.729081" elapsed="0.000199"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.729604" elapsed="0.000046"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:06:26.702123" elapsed="0.027637">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:06:26.608219" elapsed="0.121671">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:06:26.605448" elapsed="0.124683">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:26.604976" elapsed="0.125287">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:06:26.604947" elapsed="0.125382">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:06:26.731129" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.730472" elapsed="0.000775"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:26.730436" elapsed="0.000862"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:06:26.731868" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:26.731414" elapsed="0.000576"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:26.731380" elapsed="0.000690"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:06:26.604322" elapsed="0.127927">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.752993" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:06:36.752539" elapsed="0.000501"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.753564" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:06:36.753244" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:06:36.753640" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:06:36.753806" level="INFO">${index_list} = [1, 2, 3]</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-19T02:06:36.752129" elapsed="0.001702"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.755385" 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-19T02:06:36.755069" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:36.755527" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:06:36.755680" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:36.754707" elapsed="0.000999"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.763514" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.763245" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.763973" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.763725" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:36.772823" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:36.772932" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:36 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:36 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564396,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:36.773145" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:36.766233" elapsed="0.006950"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.764101" elapsed="0.009144"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.773498" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.773283" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.764083" elapsed="0.009535"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.779057" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564396,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.775316" elapsed="0.003908"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.774936" elapsed="0.004442"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.774908" elapsed="0.004509"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.783634" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.779841" elapsed="0.003892"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.779501" elapsed="0.004341"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.779476" elapsed="0.004394"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.784607" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.784064" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.784965" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.784706" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.785919" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:36.785351" elapsed="0.000649"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.785185" elapsed="0.001008"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.784688" elapsed="0.001530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.786900" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.786384" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.787286" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.786998" elapsed="0.000461"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.788240" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:36.787649" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.787485" elapsed="0.001017"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.786980" elapsed="0.001549"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:36.788689" elapsed="0.000687"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:36.790391" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.789546" elapsed="0.000873"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:36.790577" elapsed="0.003099"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:36.774335" elapsed="0.019406"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.793921" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:36.793811" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.793792" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:36.797051" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564396,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:36.794150" elapsed="0.002931"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:36.797136" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:06:36.797297" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564396,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:36.758602" elapsed="0.038722"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:36.797382" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:06:36.797532" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564396,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:36.755920" elapsed="0.041640"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.798395" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564396,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.798140" elapsed="0.000305"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.799523" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564396, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.798994" elapsed="0.000559"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:36.799605" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:36.799768" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564396, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:36.798653" elapsed="0.001142"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:36.800194" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:36.799951" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:36.800754" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:36.800377" elapsed="0.000404"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:36.800831" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:36.800982" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:36.797772" elapsed="0.003235"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.801201" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:36.801090" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.801072" elapsed="0.000196"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.808822" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.808570" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.809309" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.809054" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:36.816441" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:36.816517" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:36 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:36 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564396,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:36.816629" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:36.811554" elapsed="0.005101"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.809421" elapsed="0.007277"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.816877" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.816724" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.809402" elapsed="0.007561"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.820831" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564396,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.818170" elapsed="0.002757"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.817909" elapsed="0.003161"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.817890" elapsed="0.003209"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.824299" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.821398" elapsed="0.003028"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.821157" elapsed="0.003419"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.821140" elapsed="0.003474"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.825622" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.824850" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.826144" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.825761" elapsed="0.000622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.827502" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:36.826652" elapsed="0.000961"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.826421" elapsed="0.001391"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.825736" elapsed="0.002109"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.828804" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.828091" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.829379" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.828939" elapsed="0.000678"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.830673" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:36.829877" elapsed="0.000906"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:36.829653" elapsed="0.001329"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.828914" elapsed="0.002102"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:36.831286" elapsed="0.000930"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:36.833593" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.832495" elapsed="0.001136"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:36.833846" elapsed="0.003695"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:36.817488" elapsed="0.020117"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.837781" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:36.837674" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.837655" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:36.840774" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:36.837994" elapsed="0.002809"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:36.840856" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:06:36.841014" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:36.804091" elapsed="0.036968"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:36.841118" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:36.841267" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:36.801472" elapsed="0.039821"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.842145" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564396,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.841855" elapsed="0.000341"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.843217" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564396, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:36.842739" elapsed="0.000507"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:36.843296" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:36.843465" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564396, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:36.842404" elapsed="0.001086"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:36.843863" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:36.843643" elapsed="0.000246"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:36.844266" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:36.844055" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:36.844337" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:06:36.844485" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:36.841503" elapsed="0.003007"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:06:36.844553" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:06:36.844697" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:06:36.754322" elapsed="0.090399"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:06:36.844895" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:06:36.844788" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:36.844771" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.845138" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:06:36.754092" elapsed="0.091135"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.846833" level="INFO">${session} = ClusterManagement__session_2</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-19T02:06:36.846530" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:36.846906" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:36.847102" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:36.846188" elapsed="0.000940"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.854753" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.854503" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:36.855341" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:36.855084" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:36.867866" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:36.868024" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:06:36.868350" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:06:36.857564" elapsed="0.011636">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:36.855451" elapsed="0.013936">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.869797" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.869459" elapsed="0.000482"/>
</branch>
<status status="FAIL" start="2026-04-19T02:06:36.855432" elapsed="0.014560">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.871225" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.871530" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:36.871448" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:36.871409" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.871986" elapsed="0.000073"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.872171" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:06:36.850021" elapsed="0.022387">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.872563" elapsed="0.000034"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:06:36.847358" elapsed="0.025417">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.873299" elapsed="0.000122"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.873662" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:36.873580" elapsed="0.000172"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:36.873541" elapsed="0.000258"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.874277" elapsed="0.000055"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.874776" elapsed="0.000052"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:06:36.874925" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:06:36.845607" elapsed="0.029597">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:06:36.875469" elapsed="0.000031"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:06:36.875388" elapsed="0.000164"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:36.875348" elapsed="0.000250"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.875914" elapsed="0.000046"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:06:36.845380" elapsed="0.030719">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:06:36.753891" elapsed="0.122342">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:06:36.751694" elapsed="0.124750">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:36.751346" elapsed="0.125227">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:06:36.751319" elapsed="0.125320">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:06:36.877259" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.876786" elapsed="0.000594"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:36.876749" elapsed="0.000681"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:06:36.878001" elapsed="0.000083"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:36.877545" elapsed="0.000612"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:36.877512" elapsed="0.000697"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:06:36.750788" elapsed="0.127597">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.896542" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:06:46.896084" elapsed="0.000491"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.897099" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:06:46.896763" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:06:46.897175" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:06:46.897345" level="INFO">${index_list} = [1, 2, 3]</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-19T02:06:46.895657" elapsed="0.001712"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.898891" 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-19T02:06:46.898592" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:46.898969" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:46.899134" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:46.898245" elapsed="0.000996"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.907039" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.906734" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.907504" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.907256" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:46.916214" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:46.916318" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564406,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:46.916473" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:46.909785" elapsed="0.006723"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.907622" elapsed="0.008946"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:46.916896" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:46.916612" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.907602" elapsed="0.009455"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.922648" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564406,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.918794" elapsed="0.003974"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.918459" elapsed="0.004437"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.918428" elapsed="0.004503"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.927095" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.923375" elapsed="0.003861"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.923003" elapsed="0.004387"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.922982" elapsed="0.004453"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.928415" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:46.927686" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:46.928981" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:46.928558" elapsed="0.000673"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.930278" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:46.929479" elapsed="0.000898"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.929266" elapsed="0.001291"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.928532" elapsed="0.002055"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.931593" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:46.930799" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:46.932069" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:46.931718" elapsed="0.000554"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.933251" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:46.932514" elapsed="0.000847"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.932305" elapsed="0.001255"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.931695" elapsed="0.001903"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:46.933839" elapsed="0.000828"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:46.936051" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:46.934992" elapsed="0.001096"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:46.936310" elapsed="0.004151"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:46.917752" elapsed="0.022799"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:46.940872" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:46.940661" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.940630" elapsed="0.000358"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:46.945003" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564406,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:46.941238" elapsed="0.003820"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:46.945127" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T02:06:46.945338" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564406,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:46.902052" elapsed="0.043320"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:46.945445" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:06:46.945631" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564406,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:46.899461" elapsed="0.046204"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.946966" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564406,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.946569" elapsed="0.000498"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.948377" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564406, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:46.947780" elapsed="0.000641"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:46.948497" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:06:46.948758" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564406, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:46.947339" elapsed="0.001463"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:46.949311" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:46.949012" elapsed="0.000334"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:46.950128" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:46.949546" elapsed="0.000622"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:46.950240" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:06:46.950463" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:46.945999" elapsed="0.004500"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:46.950726" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:46.950588" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.950566" elapsed="0.000241"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.961445" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.960750" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.962607" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.962025" elapsed="0.000683"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:46.977275" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:46.977411" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564406,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:46.977608" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:46.967762" elapsed="0.009888"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.962860" elapsed="0.014871"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:46.978086" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:46.977779" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.962818" elapsed="0.015413"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.984391" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564406,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.980205" elapsed="0.004332"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.979798" elapsed="0.004938"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.979769" elapsed="0.005012"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.989586" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:46.985266" elapsed="0.004458"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.984870" elapsed="0.005015"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.984845" elapsed="0.005080"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.991108" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:46.990229" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:46.991658" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:46.991262" elapsed="0.000654"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.993166" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:46.992249" elapsed="0.001036"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.991956" elapsed="0.001546"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.991233" elapsed="0.002305"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.994576" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:46.993778" elapsed="0.000839"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:46.995130" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:46.994723" elapsed="0.000667"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:46.996567" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:46.995670" elapsed="0.001049"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:46.995429" elapsed="0.001511"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:46.994696" elapsed="0.002270"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:46.997161" elapsed="0.000675"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:46.998831" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:46.998006" elapsed="0.000853"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:46.999017" elapsed="0.003286"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:46.979104" elapsed="0.023268"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:47.002559" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:47.002444" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:47.002425" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:47.005773" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:47.002778" elapsed="0.003025"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:47.005856" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:06:47.006041" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:46.954613" elapsed="0.051457"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:47.006130" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:06:47.006283" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:46.951166" elapsed="0.055143"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:47.007237" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564406,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:47.006889" elapsed="0.000400"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:47.008290" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564406, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:47.007850" elapsed="0.000468"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:47.008369" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:47.008530" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564406, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:47.007503" elapsed="0.001054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:47.008998" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:47.008745" elapsed="0.000350"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:47.009515" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:47.009289" elapsed="0.000252"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:47.009589" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:47.009744" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:47.006529" elapsed="0.003239"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:06:47.009812" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:47.009966" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:06:46.897847" elapsed="0.112149"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:06:47.010220" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T02:06:47.010104" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:47.010082" elapsed="0.000234"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.010512" elapsed="0.000025"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:06:46.897615" elapsed="0.112967"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:47.012088" level="INFO">${session} = ClusterManagement__session_2</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-19T02:06:47.011713" elapsed="0.000453"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:47.012217" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:06:47.012373" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:47.011370" elapsed="0.001029"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:47.021708" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:47.021440" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:47.022192" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:47.021919" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:47.034167" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:47.034277" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:06:47.034474" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:06:47.024511" elapsed="0.010480">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:47.022308" elapsed="0.012869">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.035448" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:47.035226" elapsed="0.000314"/>
</branch>
<status status="FAIL" start="2026-04-19T02:06:47.022288" elapsed="0.013285">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.036386" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:47.036582" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:47.036527" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:47.036501" elapsed="0.000171"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.036898" elapsed="0.000036"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:06:47.037019" elapsed="0.000050"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:06:47.016816" elapsed="0.020405">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:47.037322" elapsed="0.000023"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:06:47.012615" elapsed="0.024846">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.037767" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:47.037949" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:47.037897" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:47.037873" elapsed="0.000255"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.038420" elapsed="0.000036"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.038741" elapsed="0.000035"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:06:47.038839" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:06:47.010970" elapsed="0.028014">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:06:47.039181" elapsed="0.000020"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:06:47.039129" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:47.039103" elapsed="0.000163"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.039468" elapsed="0.000029"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:06:47.010736" elapsed="0.028832">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:06:46.897428" elapsed="0.142220">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:06:46.895238" elapsed="0.144545">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:46.894801" elapsed="0.145063">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:06:46.894774" elapsed="0.145133">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:06:47.040303" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:47.040000" elapsed="0.000382"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:47.039977" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:06:47.040815" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:47.040490" elapsed="0.000408"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:47.040468" elapsed="0.000465"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:06:46.894237" elapsed="0.146830">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.058711" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:06:57.058249" elapsed="0.000494"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.059250" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:06:57.058917" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:06:57.059330" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:06:57.059500" level="INFO">${index_list} = [1, 2, 3]</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-19T02:06:57.057778" elapsed="0.001747"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.061061" 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-19T02:06:57.060745" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:57.061137" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:06:57.061285" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:57.060390" elapsed="0.000921"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.069048" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.068689" elapsed="0.000409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.069545" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.069259" elapsed="0.000329"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:57.078630" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:57.078709" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:57 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:57 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564417,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:57.078825" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:57.071862" elapsed="0.006989"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.069660" elapsed="0.009235"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.079097" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.078924" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.069639" elapsed="0.009545"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.083575" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564417,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.080411" elapsed="0.003303"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.080163" elapsed="0.003706"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.080143" elapsed="0.003767"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.088453" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.084371" elapsed="0.004218"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.083994" elapsed="0.004753"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.083969" elapsed="0.004818"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.089932" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.089078" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.090452" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.090139" elapsed="0.000484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.091400" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:57.090818" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.090649" elapsed="0.000978"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.090111" elapsed="0.001539"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.092345" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.091810" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.092699" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.092442" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.093637" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:57.093075" elapsed="0.000641"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.092898" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.092424" elapsed="0.001483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:57.094106" elapsed="0.000658"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:57.095753" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.094932" elapsed="0.000848"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:57.096008" elapsed="0.003104"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:57.079709" elapsed="0.019476"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.099376" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:57.099261" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.099242" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:57.102560" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564417,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:57.099594" elapsed="0.002997"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:57.102646" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:06:57.102815" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564417,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:57.064090" elapsed="0.038752"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:57.102902" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:57.103068" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564417,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:57.061522" elapsed="0.041574"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.103976" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564417,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.103708" elapsed="0.000333"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.105009" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564417, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.104605" elapsed="0.000448"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:57.105104" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:06:57.105266" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564417, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:57.104254" elapsed="0.001039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:57.105675" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:57.105450" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:57.106140" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:57.105887" elapsed="0.000280"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:57.106216" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:57.106368" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:57.103337" elapsed="0.003055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.106789" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:57.106673" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.106443" elapsed="0.000414"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.114482" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.114219" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.114926" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.114684" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:57.122912" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:57.123104" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:06:57 GMT', 'Expires': 'Sun, 19 Apr 2026 01:06:57 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564417,"status":200} 
 </msg>
<msg time="2026-04-19T02:06:57.123292" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:06:57.117261" elapsed="0.006072"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.115055" elapsed="0.008346"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.123682" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.123443" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.115020" elapsed="0.008792"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.129737" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564417,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.125672" elapsed="0.004222"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.125307" elapsed="0.004763"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.125278" elapsed="0.004835"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.134509" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.130559" elapsed="0.004044"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.130202" elapsed="0.004510"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.130178" elapsed="0.004561"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.135528" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.134933" elapsed="0.000622"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.135883" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.135625" elapsed="0.000451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.136829" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:57.136268" elapsed="0.000639"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.136102" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.135607" elapsed="0.001487"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.137773" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.137256" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.138186" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.137898" elapsed="0.000462"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.139152" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:06:57.138548" elapsed="0.000683"/>
</kw>
<status status="PASS" start="2026-04-19T02:06:57.138386" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.137880" elapsed="0.001517"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:06:57.139554" elapsed="0.000670"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:06:57.141229" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.140392" elapsed="0.000864"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:06:57.141450" elapsed="0.003300"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:06:57.124631" elapsed="0.020191"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.145123" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:57.144993" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.144972" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:06:57.148234" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:06:57.145341" elapsed="0.002923"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:06:57.148318" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:06:57.148489" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:06:57.109602" elapsed="0.038914"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:06:57.148575" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:06:57.148724" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:06:57.107078" elapsed="0.041673"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.149652" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564417,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.149379" elapsed="0.000323"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.150711" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564417, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:06:57.150304" elapsed="0.000436"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:06:57.150790" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:06:57.150950" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564417, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:06:57.149926" elapsed="0.001051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:57.151465" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:57.151232" elapsed="0.000261"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:06:57.151859" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:06:57.151649" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:06:57.151933" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:06:57.152099" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:06:57.148991" elapsed="0.003134"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:06:57.152168" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:06:57.152316" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:06:57.059997" elapsed="0.092345"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:06:57.152529" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:06:57.152415" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:06:57.152396" elapsed="0.000215"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.152760" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:06:57.059770" elapsed="0.093047"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.154301" level="INFO">${session} = ClusterManagement__session_2</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-19T02:06:57.153982" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:06:57.154373" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:06:57.154526" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:06:57.153597" elapsed="0.000954"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.162887" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.162594" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:06:57.163359" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:06:57.163112" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:06:57.176935" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:06:57.177149" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:06:57.177439" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:06:57.165663" elapsed="0.012637">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:57.163479" elapsed="0.015015">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.178958" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.178573" elapsed="0.000564"/>
</branch>
<status status="FAIL" start="2026-04-19T02:06:57.163455" elapsed="0.015735">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.180428" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.180908" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:57.180802" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:57.180760" elapsed="0.000323"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.181406" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.181700" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:06:57.157664" elapsed="0.024341">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.182207" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:06:57.154838" elapsed="0.027590">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.182914" elapsed="0.000053"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.183223" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:06:57.183144" elapsed="0.000167"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:57.183106" elapsed="0.000252"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.183806" elapsed="0.000053"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.184319" elapsed="0.000149"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:06:57.184573" elapsed="0.000036"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:06:57.153216" elapsed="0.031584">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:06:57.185084" elapsed="0.000036"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:06:57.184973" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:57.184936" elapsed="0.000285"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.185541" elapsed="0.000046"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:06:57.152968" elapsed="0.032742">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:06:57.059584" elapsed="0.126312">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:06:57.057359" elapsed="0.128792">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:06:57.056950" elapsed="0.129332">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:06:57.056923" elapsed="0.129405">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:06:57.186726" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.186428" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:57.186402" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:06:57.187249" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:06:57.186918" elapsed="0.000415"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:06:57.186895" elapsed="0.000472"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:06:57.056416" elapsed="0.131070">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:07:07.205420" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:07:07.204918" elapsed="0.000537"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:07:07.205962" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:07:07.205638" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:07:07.206043" elapsed="0.000054"/>
</return>
<msg time="2026-04-19T02:07:07.206235" level="INFO">${index_list} = [1, 2, 3]</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-19T02:07:07.204513" elapsed="0.001747"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:07.207813" 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-19T02:07:07.207507" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:07.207889" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:07.208045" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:07.207152" elapsed="0.000932"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:07.215723" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:07.215464" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:07.216186" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:07.215925" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:08.213201" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:08.213426" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:07 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:07 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564427,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:08.213736" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:07.218507" elapsed="0.995293"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:07.216367" elapsed="0.997551"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.214454" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.213989" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:07.216347" elapsed="0.998370"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.223992" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564427,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.218119" elapsed="0.005989"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.217415" elapsed="0.006803"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.217353" elapsed="0.006892"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.227273" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.224546" elapsed="0.002820"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.224302" elapsed="0.003171"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.224285" elapsed="0.003215"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.228257" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.227683" elapsed="0.000602"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.228618" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.228356" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.229579" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:08.228987" elapsed="0.000673"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.228819" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.228338" elapsed="0.001494"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.230531" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.229994" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.230884" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.230628" elapsed="0.000497"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.231882" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:08.231322" elapsed="0.000639"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.231153" elapsed="0.000972"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.230610" elapsed="0.001539"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:08.232309" elapsed="0.000666"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:08.233996" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.233158" elapsed="0.000864"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:08.234223" elapsed="0.003034"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:08.216150" elapsed="0.021173"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.237566" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:08.237451" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.237431" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:08.240678" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564427,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:08.237782" elapsed="0.002926"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:08.240760" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:07:08.240930" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564427,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:07.210858" elapsed="1.030099"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:08.241016" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:07:08.241188" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564427,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:07.208302" elapsed="1.032912"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.242164" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564427,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.241790" elapsed="0.000428"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.243189" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564427, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.242770" elapsed="0.000448"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:08.243284" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:07:08.243461" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564427, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:08.242431" elapsed="0.001057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:08.243868" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:08.243644" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:08.244450" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:08.244065" elapsed="0.000411"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:08.244524" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:08.244674" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:08.241436" elapsed="0.003262"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.244871" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:08.244764" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.244747" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.252530" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.252280" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.253134" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.252729" elapsed="0.000454"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:08.260731" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:08.260807" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:08 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:08 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564428,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:08.261125" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:08.255359" elapsed="0.005802"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.253249" elapsed="0.007956"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.261383" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.261230" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.253231" elapsed="0.008236"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.265331" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564428,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.262648" elapsed="0.002777"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.262406" elapsed="0.003124"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.262387" elapsed="0.003170"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.268577" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.265870" elapsed="0.002797"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.265614" elapsed="0.003163"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.265597" elapsed="0.003208"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.269526" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.268971" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.269880" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.269623" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.270980" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:08.270261" elapsed="0.000819"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.270097" elapsed="0.001129"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.269605" elapsed="0.001645"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.271948" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.271415" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.272319" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.272061" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.273296" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:08.272681" elapsed="0.000692"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:08.272518" elapsed="0.000998"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.272028" elapsed="0.001512"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:08.273697" elapsed="0.000684"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:08.275360" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.274548" elapsed="0.000839"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:08.275543" elapsed="0.003254"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:08.261965" elapsed="0.016900"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.279062" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:08.278936" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.278917" elapsed="0.000217"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:08.282160" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:08.279281" elapsed="0.002909"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:08.282242" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:07:08.282406" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:08.247770" elapsed="0.034708"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:08.282537" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:07:08.282694" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:08.245160" elapsed="0.037560"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.283583" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564428,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.283329" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.284618" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564428, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:08.284216" elapsed="0.000430"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:08.284694" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:08.284852" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564428, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:08.283839" elapsed="0.001038"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:08.285366" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:08.285034" elapsed="0.000359"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:08.285754" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:08.285546" elapsed="0.000232"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:08.285825" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:07:08.285972" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:08.282945" elapsed="0.003052"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:07:08.286043" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:07:08.286207" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:07:07.206748" elapsed="1.079484"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:07:08.286412" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T02:07:08.286301" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:08.286284" elapsed="0.000214"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.286645" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:07:07.206511" elapsed="1.080188"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.288129" level="INFO">${session} = ClusterManagement__session_2</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-19T02:07:08.287815" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:08.288201" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:08.288363" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:08.287476" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.296080" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.295815" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:08.296544" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:08.296282" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:08.310064" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:08.310195" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:07:08.310346" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:07:08.298835" elapsed="0.011925">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:08.296655" elapsed="0.014195">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.311074" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.310886" elapsed="0.000255"/>
</branch>
<status status="FAIL" start="2026-04-19T02:07:08.296636" elapsed="0.014530">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.311701" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.311841" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:08.311802" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:08.311784" elapsed="0.000120"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.312068" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.312140" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:07:08.291333" elapsed="0.020917">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.312320" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:07:08.288600" elapsed="0.023817">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.312635" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.312767" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:08.312729" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:08.312710" elapsed="0.000153"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.313086" elapsed="0.000026"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.313310" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:07:08.313377" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:07:08.287099" elapsed="0.026377">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:07:08.313591" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:07:08.313553" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:08.313537" elapsed="0.000121"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.313937" elapsed="0.000047"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:07:08.286855" elapsed="0.027422">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:07:07.206321" elapsed="1.108159">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:07:07.204098" elapsed="1.110606">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:07.203734" elapsed="1.111100">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:07:07.203709" elapsed="1.111196">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:07:08.315556" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.315099" elapsed="0.000577"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:08.315017" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:07:08.316355" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:08.315853" elapsed="0.000630"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:08.315818" elapsed="0.000718"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:07:07.203227" elapsed="1.113488">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.333660" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:07:18.333193" elapsed="0.000499"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.334195" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:07:18.333864" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:07:18.334272" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:07:18.334440" level="INFO">${index_list} = [1, 2, 3]</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-19T02:07:18.332758" elapsed="0.001707"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.335970" 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-19T02:07:18.335672" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:18.336062" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:18.336211" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:18.335326" elapsed="0.000910"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.345267" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.344969" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.345722" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.345475" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:18.354172" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:18.354288" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:18 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:18 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564438,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:18.354472" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:18.348063" elapsed="0.006520"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.345840" elapsed="0.008812"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.354930" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.354694" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.345820" elapsed="0.009271"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.361144" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564438,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.356916" elapsed="0.004338"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.356521" elapsed="0.004848"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.356493" elapsed="0.004907"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.364520" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.361766" elapsed="0.002846"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.361467" elapsed="0.003252"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.361446" elapsed="0.003302"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.365547" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.364964" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.365908" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.365647" elapsed="0.000466"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.366887" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:18.366312" elapsed="0.000655"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.366141" elapsed="0.000991"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.365628" elapsed="0.001529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.367851" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.367321" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.368233" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.367950" elapsed="0.000472"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.369249" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:18.368615" elapsed="0.000714"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.368449" elapsed="0.001023"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.367932" elapsed="0.001564"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:18.369655" elapsed="0.000708"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:18.371353" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.370535" elapsed="0.000845"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:18.371538" elapsed="0.003091"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:18.355846" elapsed="0.018854"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.374886" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:18.374773" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.374753" elapsed="0.000202"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:18.377973" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564438,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:18.375121" elapsed="0.002881"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:18.378075" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T02:07:18.378283" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564438,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:18.338981" elapsed="0.039340"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:18.378465" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:07:18.378643" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564438,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:18.336446" elapsed="0.042225"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.379536" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564438,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.379283" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.380550" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564438, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.380151" elapsed="0.000427"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:18.380629" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:18.380790" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564438, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:18.379794" elapsed="0.001023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:18.381271" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:18.380987" elapsed="0.000312"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:18.381668" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:18.381455" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:18.381742" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:07:18.381893" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:18.378897" elapsed="0.003021"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.382112" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:18.381985" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.381968" elapsed="0.000210"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.390007" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.389755" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.390475" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.390227" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:18.398411" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:18.398487" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:18 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:18 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564438,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:18.398600" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:18.392711" elapsed="0.005916"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.390585" elapsed="0.008086"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.398851" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.398697" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.390567" elapsed="0.008408"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.403269" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564438,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.400184" elapsed="0.003219"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.399924" elapsed="0.003629"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.399905" elapsed="0.003687"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.407903" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.404013" elapsed="0.004040"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.403672" elapsed="0.004535"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.403649" elapsed="0.004597"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.409297" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.408480" elapsed="0.000856"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.409808" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.409438" elapsed="0.000674"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.410968" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:18.410386" elapsed="0.000687"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.410146" elapsed="0.001077"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.409411" elapsed="0.001838"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.411932" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.411412" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.412313" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.412052" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.413300" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:18.412676" elapsed="0.000704"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:18.412513" elapsed="0.001014"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.412013" elapsed="0.001538"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:18.413706" elapsed="0.000709"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:18.415409" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.414583" elapsed="0.000853"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:18.415595" elapsed="0.003240"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:18.399504" elapsed="0.019398"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.419105" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:18.418975" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.418955" elapsed="0.000220"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:18.422193" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:18.419325" elapsed="0.002897"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:18.422276" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:07:18.422438" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:18.385296" elapsed="0.037169"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:18.422523" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:07:18.422673" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:18.382381" elapsed="0.040355"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.423589" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564438,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.423331" elapsed="0.000308"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.424623" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564438, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:18.424219" elapsed="0.000433"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:18.424703" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:07:18.424868" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564438, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:18.423852" elapsed="0.001043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:18.425379" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:18.425077" elapsed="0.000331"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:18.425789" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:18.425570" elapsed="0.000244"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:18.425863" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:18.426015" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:18.422952" elapsed="0.003146"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:07:18.426145" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:07:18.426294" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:07:18.334932" elapsed="0.091387"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:07:18.426495" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:07:18.426386" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:18.426369" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.426723" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:07:18.334705" elapsed="0.092075"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.428249" level="INFO">${session} = ClusterManagement__session_2</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-19T02:07:18.427925" elapsed="0.000378"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:18.428350" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:18.428500" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:18.427549" elapsed="0.000976"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.436930" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.436567" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:18.437693" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:18.437327" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:18.450415" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:18.450518" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:07:18.450779" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:07:18.440219" elapsed="0.011165">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:18.437852" elapsed="0.013665">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.451787" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.451564" elapsed="0.000323"/>
</branch>
<status status="FAIL" start="2026-04-19T02:07:18.437825" elapsed="0.014107">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.452700" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.452908" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:18.452842" elapsed="0.000135"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:18.452817" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.453243" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.453346" elapsed="0.000056"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:07:18.431504" elapsed="0.022052">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.453663" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:07:18.428738" elapsed="0.025064">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.454150" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.454336" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:18.454284" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:18.454261" elapsed="0.000161"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.454702" elapsed="0.000035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.455020" elapsed="0.000059"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:07:18.455143" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:07:18.427169" elapsed="0.028119">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:07:18.455450" elapsed="0.000020"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:07:18.455399" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:18.455376" elapsed="0.000156"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.455732" elapsed="0.000031"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:07:18.426924" elapsed="0.028909">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:07:18.334522" elapsed="0.121391">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:07:18.332293" elapsed="0.123785">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:18.331912" elapsed="0.124255">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:07:18.331888" elapsed="0.124368">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:07:18.456640" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.456358" elapsed="0.000361"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:18.456334" elapsed="0.000418"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:07:18.457149" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:18.456828" elapsed="0.000403"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:18.456806" elapsed="0.000458"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:07:18.331410" elapsed="0.125970">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.475843" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:07:28.475375" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.476375" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:07:28.476060" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:07:28.476451" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:07:28.476619" level="INFO">${index_list} = [1, 2, 3]</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-19T02:07:28.474951" elapsed="0.001693"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.478169" 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-19T02:07:28.477853" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:28.478243" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:28.478394" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:28.477503" elapsed="0.000918"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.486110" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.485835" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.486558" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.486313" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:28.494305" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:28.494382" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:28 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564448,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:28.494494" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:28.488821" elapsed="0.005700"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.486671" elapsed="0.007894"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.494747" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.494592" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.486652" elapsed="0.008182"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.499839" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564448,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.496128" elapsed="0.003846"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.495810" elapsed="0.004336"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.495791" elapsed="0.004395"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.504433" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.500610" elapsed="0.003917"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.500268" elapsed="0.004366"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.500244" elapsed="0.004417"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.505397" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.504840" elapsed="0.000585"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.505754" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.505495" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.506725" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:28.506159" elapsed="0.000645"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.505954" elapsed="0.000998"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.505477" elapsed="0.001500"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.507670" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.507156" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.508049" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.507779" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.508970" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:28.508410" elapsed="0.000653"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.508249" elapsed="0.000959"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.507761" elapsed="0.001471"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:28.509386" elapsed="0.000687"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:28.511048" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.510241" elapsed="0.000836"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:28.511232" elapsed="0.003070"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:28.495359" elapsed="0.019006"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.514543" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:28.514434" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.514416" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:28.517492" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564448,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:28.514756" elapsed="0.002766"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:28.517576" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:07:28.517736" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564448,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:28.481173" elapsed="0.036590"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:28.517822" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:07:28.517971" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564448,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:28.478632" elapsed="0.039365"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.518978" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564448,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.518724" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.520044" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564448, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.519602" elapsed="0.000473"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:28.520125" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:28.520286" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564448, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:28.519256" elapsed="0.001057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:28.520699" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:28.520470" elapsed="0.000257"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:28.521318" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:28.520882" elapsed="0.000464"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:28.521396" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:28.521549" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:28.518365" elapsed="0.003209"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.521752" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:28.521642" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.521625" elapsed="0.000194"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.529322" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.529071" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.529765" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.529523" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:28.538157" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:28.538264" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:28 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:28 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564448,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:28.538416" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:28.532007" elapsed="0.006445"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.529876" elapsed="0.008635"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.538756" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.538547" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.529858" elapsed="0.009014"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.544446" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564448,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.540518" elapsed="0.004063"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.540182" elapsed="0.004635"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.540156" elapsed="0.004700"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.549051" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.545296" elapsed="0.003849"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.544937" elapsed="0.004316"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.544913" elapsed="0.004367"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.550081" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.549448" elapsed="0.000661"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.550441" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.550181" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.551426" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:28.550820" elapsed="0.000685"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.550642" elapsed="0.001011"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.550163" elapsed="0.001514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.552564" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.551896" elapsed="0.000696"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.552920" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.552662" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.553857" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:28.553298" elapsed="0.000638"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:28.553135" elapsed="0.000965"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.552644" elapsed="0.001481"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:28.554294" elapsed="0.000659"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:28.555985" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.555139" elapsed="0.000874"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:28.556230" elapsed="0.004319"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:28.539564" elapsed="0.021056"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.560819" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:28.560693" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.560673" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:28.563905" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:28.561057" elapsed="0.002879"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:28.563992" elapsed="0.000169"/>
</return>
<msg time="2026-04-19T02:07:28.564302" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:28.524596" elapsed="0.039736"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:28.564390" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:07:28.564549" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:28.522087" elapsed="0.042489"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.565478" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564448,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.565210" elapsed="0.000367"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.566586" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564448, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:28.566173" elapsed="0.000442"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:28.566665" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:28.566841" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564448, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:28.565802" elapsed="0.001068"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:28.567274" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:28.567043" elapsed="0.000259"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:28.567671" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:28.567457" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:28.567751" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:07:28.567934" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:28.564819" elapsed="0.003141"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:07:28.568005" elapsed="0.000070"/>
</return>
<msg time="2026-04-19T02:07:28.568203" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:07:28.477126" elapsed="0.091102"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:07:28.568411" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:07:28.568300" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:28.568282" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.568644" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:07:28.476883" elapsed="0.091817"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.570173" level="INFO">${session} = ClusterManagement__session_2</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-19T02:07:28.569845" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:28.570248" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:28.570397" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:28.569483" elapsed="0.000939"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.578118" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.577854" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:28.578560" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:28.578318" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:28.590533" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:28.590615" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:07:28.590759" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:07:28.580866" elapsed="0.010362">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:28.578669" elapsed="0.012710">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.591603" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.591418" elapsed="0.000262"/>
</branch>
<status status="FAIL" start="2026-04-19T02:07:28.578651" elapsed="0.013055">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.592401" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.592749" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:28.592642" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:28.592594" elapsed="0.000330"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.593361" elapsed="0.000074"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.593576" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:07:28.573395" elapsed="0.020539">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.594156" elapsed="0.000044"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:07:28.570635" elapsed="0.023763">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.594929" elapsed="0.000068"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.595308" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:28.595225" elapsed="0.000172"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:28.595180" elapsed="0.000266"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.595891" elapsed="0.000075"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.596457" elapsed="0.000054"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:07:28.596610" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:07:28.569103" elapsed="0.027728">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:07:28.597139" elapsed="0.000044"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:07:28.597004" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:28.596965" elapsed="0.000324"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.597565" elapsed="0.000037"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:07:28.568856" elapsed="0.028831">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:07:28.476701" elapsed="0.121085">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:07:28.474537" elapsed="0.123421">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:28.474196" elapsed="0.123888">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:07:28.474171" elapsed="0.123969">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:07:28.598603" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.598256" elapsed="0.000440"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:28.598228" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:07:28.599279" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:28.598883" elapsed="0.000494"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:28.598854" elapsed="0.000563"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:07:28.473669" elapsed="0.125887">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.619217" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:07:38.618747" elapsed="0.000502"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.619796" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:07:38.619420" elapsed="0.000404"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:07:38.619874" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:07:38.620100" level="INFO">${index_list} = [1, 2, 3]</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-19T02:07:38.618194" elapsed="0.001935"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.621634" 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-19T02:07:38.621337" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:38.621708" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:38.621864" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:38.620977" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.629502" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.629244" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.630021" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.629759" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:38.638441" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:38.638519" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:38 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:38 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564458,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:38.638631" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:38.632265" elapsed="0.006393"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.630147" elapsed="0.008553"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.638947" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.638731" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.630128" elapsed="0.008961"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.644469" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564458,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.640731" elapsed="0.003869"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.640385" elapsed="0.004431"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.640359" elapsed="0.004498"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.649271" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.645316" elapsed="0.004092"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.644941" elapsed="0.004616"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.644916" elapsed="0.004680"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.650398" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.649820" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.650755" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.650496" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.651720" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:38.651151" elapsed="0.000651"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.650966" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.650478" elapsed="0.001493"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.652661" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.652148" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.653044" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.652757" elapsed="0.000463"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.653969" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:38.653409" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.653246" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.652739" elapsed="0.001516"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:38.654411" elapsed="0.000670"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:38.656063" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.655247" elapsed="0.000844"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:38.656249" elapsed="0.003143"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:38.639769" elapsed="0.019688"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.659636" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:38.659527" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.659509" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:38.662768" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564458,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:38.659850" elapsed="0.002948"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:38.662851" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:07:38.663007" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564458,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:38.624650" elapsed="0.038401"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:38.663109" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:07:38.663258" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564458,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:38.622126" elapsed="0.041159"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.664117" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564458,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.663849" elapsed="0.000352"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.665215" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564458, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.664777" elapsed="0.000471"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:38.665301" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:38.665461" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564458, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:38.664418" elapsed="0.001070"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:38.665868" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:38.665643" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:38.666428" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:38.666142" elapsed="0.000314"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:38.666505" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:38.666677" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:38.663496" elapsed="0.003212"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.666889" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:38.666780" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.666762" elapsed="0.000193"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.674446" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.674197" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.674885" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.674644" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:38.684460" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:38.684536" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:38 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:38 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564458,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:38.684657" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:38.678864" elapsed="0.005820"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.675141" elapsed="0.009586"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.684905" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.684753" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.675122" elapsed="0.009867"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.689056" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564458,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.686374" elapsed="0.002782"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.686127" elapsed="0.003169"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.686106" elapsed="0.003229"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.692371" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.689648" elapsed="0.002814"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.689401" elapsed="0.003169"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.689384" elapsed="0.003251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.693610" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.692849" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.694135" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.693753" elapsed="0.000626"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.695487" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:38.694646" elapsed="0.000951"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.694416" elapsed="0.001385"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.693722" elapsed="0.002125"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.696830" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.696109" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.697349" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.696966" elapsed="0.000625"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.698669" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:38.697854" elapsed="0.000926"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:38.697628" elapsed="0.001355"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.696940" elapsed="0.002076"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:38.699283" elapsed="0.000971"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:38.701607" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.700488" elapsed="0.001158"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:38.701863" elapsed="0.003908"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:38.685521" elapsed="0.020315"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.706026" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:38.705907" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.705888" elapsed="0.000238"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:38.709087" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:38.706275" elapsed="0.002847"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:38.709179" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:07:38.709341" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:38.669687" elapsed="0.039680"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:38.709424" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:07:38.709570" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:38.667173" elapsed="0.042422"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.710426" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564458,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.710171" elapsed="0.000304"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.711549" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564458, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:38.711122" elapsed="0.000489"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:38.711663" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:38.711824" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564458, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:38.710692" elapsed="0.001158"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:38.712252" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:38.712004" elapsed="0.000275"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:38.712645" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:38.712435" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:38.712717" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:07:38.712864" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:38.709805" elapsed="0.003082"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:07:38.712930" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:07:38.713087" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:07:38.620605" elapsed="0.092507"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:07:38.713286" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:07:38.713179" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:38.713162" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.713513" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:07:38.620373" elapsed="0.093194"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.715196" level="INFO">${session} = ClusterManagement__session_2</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-19T02:07:38.714844" elapsed="0.000379"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:38.715270" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T02:07:38.715443" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:38.714499" elapsed="0.000969"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.722917" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.722667" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:38.723417" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:38.723147" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:38.735497" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:38.735570" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:07:38.735699" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:07:38.725718" elapsed="0.010389">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:38.723530" elapsed="0.012695">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.736414" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.736258" elapsed="0.000254"/>
</branch>
<status status="FAIL" start="2026-04-19T02:07:38.723512" elapsed="0.013024">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.737070" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.737207" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:38.737170" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:38.737152" elapsed="0.000116"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.737410" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.737487" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:07:38.718187" elapsed="0.019408">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.737664" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:07:38.715675" elapsed="0.022085">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.737974" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.738120" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:38.738084" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:38.738066" elapsed="0.000116"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.738377" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.738595" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:07:38.738688" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:07:38.713929" elapsed="0.024861">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:07:38.738905" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:07:38.738867" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:38.738850" elapsed="0.000113"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.739130" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:07:38.713705" elapsed="0.025497">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:07:38.620188" elapsed="0.119071">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:07:38.617563" elapsed="0.121791">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:38.617094" elapsed="0.122317">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:07:38.617060" elapsed="0.122381">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:07:38.739704" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.739506" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:38.739489" elapsed="0.000325"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:07:38.740194" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:38.739886" elapsed="0.000386"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:38.739865" elapsed="0.000483"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:07:38.616383" elapsed="0.124092">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.761546" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:07:48.760900" elapsed="0.000690"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.762548" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:07:48.761827" elapsed="0.000774"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:07:48.762693" elapsed="0.000058"/>
</return>
<msg time="2026-04-19T02:07:48.762975" level="INFO">${index_list} = [1, 2, 3]</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-19T02:07:48.760345" elapsed="0.002666"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.764616" 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-19T02:07:48.764306" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:48.764691" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:48.764839" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:48.763936" elapsed="0.000929"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.772580" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.772320" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.773044" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.772783" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:48.781644" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:48.781723" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:48 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564468,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:48.781836" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:48.775324" elapsed="0.006539"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.773158" elapsed="0.008749"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.782122" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.781934" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.773140" elapsed="0.009069"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.786115" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564468,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.783395" elapsed="0.002818"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.783150" elapsed="0.003171"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.783131" elapsed="0.003217"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.790293" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.786647" elapsed="0.003774"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.786406" elapsed="0.004263"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.786389" elapsed="0.004321"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.791725" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.790955" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.792289" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.791864" elapsed="0.000666"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.793618" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:48.792799" elapsed="0.000930"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.792567" elapsed="0.001368"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.791839" elapsed="0.002129"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.794952" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.794231" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.795472" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.795110" elapsed="0.000605"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.796819" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:48.795981" elapsed="0.000949"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.795752" elapsed="0.001402"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.795084" elapsed="0.002104"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:48.797425" elapsed="0.000985"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:48.799614" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.798646" elapsed="0.000996"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:48.799799" elapsed="0.003085"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:48.782708" elapsed="0.020242"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.803148" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:48.803021" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.803002" elapsed="0.000214"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:48.806232" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564468,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:48.803362" elapsed="0.002900"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:48.806316" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:07:48.806475" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564468,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:48.767675" elapsed="0.038827"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:48.806561" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:07:48.806709" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564468,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:48.765093" elapsed="0.041643"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.807581" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564468,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.807327" elapsed="0.000305"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.808680" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564468, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.808277" elapsed="0.000466"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:48.808796" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:07:48.808961" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564468, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:48.807842" elapsed="0.001147"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:48.809390" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:48.809161" elapsed="0.000258"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:48.809976" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:48.809576" elapsed="0.000427"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:48.810074" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:48.810228" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:48.806948" elapsed="0.003305"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.810432" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:48.810322" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.810305" elapsed="0.000193"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.818036" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.817759" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.818484" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.818241" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:48.826281" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:48.826356" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:48 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564468,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:48.826466" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:48.820786" elapsed="0.005707"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.818635" elapsed="0.007902"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.826714" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.826562" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.818614" elapsed="0.008185"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.830659" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564468,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.827962" elapsed="0.002792"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.827722" elapsed="0.003138"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.827704" elapsed="0.003183"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.833889" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.831199" elapsed="0.002780"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.830944" elapsed="0.003200"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.830927" elapsed="0.003256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.835151" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.834410" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.835692" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.835288" elapsed="0.000644"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.837004" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:48.836224" elapsed="0.000910"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.835970" elapsed="0.001366"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.835263" elapsed="0.002106"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.838380" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.837596" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.838878" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.838517" elapsed="0.000622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.840202" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:48.839405" elapsed="0.000905"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:48.839175" elapsed="0.001334"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.838491" elapsed="0.002052"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:48.840754" elapsed="0.000942"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:48.843104" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.841929" elapsed="0.001218"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:48.843364" elapsed="0.003985"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:48.827304" elapsed="0.020111"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.847592" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:48.847485" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.847466" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:48.850568" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:48.847801" elapsed="0.002796"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:48.850648" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:07:48.850805" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:48.813265" elapsed="0.037566"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:48.850888" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:07:48.851049" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:48.810702" elapsed="0.040377"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.851892" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564468,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.851640" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.852896" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564468, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:48.852504" elapsed="0.000421"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:48.852974" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:48.853155" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564468, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:48.852165" elapsed="0.001050"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:48.853610" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:48.853375" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:48.854006" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:48.853794" elapsed="0.000313"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:48.854158" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:48.854312" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:48.851290" elapsed="0.003047"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:07:48.854380" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:07:48.854527" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:07:48.763545" elapsed="0.091007"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:07:48.854730" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:07:48.854621" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:48.854603" elapsed="0.000208"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.854957" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:07:48.763299" elapsed="0.091714"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.856440" level="INFO">${session} = ClusterManagement__session_2</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-19T02:07:48.856138" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:48.856512" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:48.856660" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:48.855775" elapsed="0.000910"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.864387" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.864134" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:48.864834" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:48.864590" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:48.877245" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:48.877341" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:07:48.877563" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:07:48.867098" elapsed="0.011029">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:48.864947" elapsed="0.013306">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.878505" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.878298" elapsed="0.000290"/>
</branch>
<status status="FAIL" start="2026-04-19T02:07:48.864927" elapsed="0.013694">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.879310" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.879533" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:48.879486" elapsed="0.000099"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:48.879461" elapsed="0.000151"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.879796" elapsed="0.000026"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.879881" elapsed="0.000018"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:07:48.859651" elapsed="0.020367">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.880131" elapsed="0.000020"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:07:48.856893" elapsed="0.023359">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.880523" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.880676" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:48.880633" elapsed="0.000091"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:48.880612" elapsed="0.000138"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.880993" elapsed="0.000029"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.881288" elapsed="0.000043"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:07:48.881385" elapsed="0.000019"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:07:48.855395" elapsed="0.026114">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:07:48.881649" elapsed="0.000018"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:07:48.881605" elapsed="0.000092"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:48.881584" elapsed="0.000138"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.881900" elapsed="0.000027"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:07:48.855167" elapsed="0.026819">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:07:48.763102" elapsed="0.118986">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:07:48.759752" elapsed="0.122454">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:48.759294" elapsed="0.122982">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:07:48.759261" elapsed="0.123053">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:07:48.882641" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.882395" elapsed="0.000308"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:48.882375" elapsed="0.000356"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:07:48.883066" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:48.882794" elapsed="0.000338"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:48.882776" elapsed="0.000383"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:07:48.758592" elapsed="0.124664">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.903857" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:07:58.903350" elapsed="0.000540"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.904413" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:07:58.904091" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:07:58.904490" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:07:58.904660" level="INFO">${index_list} = [1, 2, 3]</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-19T02:07:58.902707" elapsed="0.001978"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.906269" 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-19T02:07:58.905930" elapsed="0.000367"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:58.906345" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:07:58.906500" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:58.905578" elapsed="0.000948"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.914240" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.913955" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.914690" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.914448" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:58.922339" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:58.922421" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:58 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:58 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564478,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:58.922553" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:58.916971" elapsed="0.005609"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.914805" elapsed="0.007825"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:58.922835" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:58.922661" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.914784" elapsed="0.008183"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.927134" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564478,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.924301" elapsed="0.002930"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.924011" elapsed="0.003327"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.923991" elapsed="0.003374"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.932006" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.927797" elapsed="0.004366"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.927436" elapsed="0.004885"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.927412" elapsed="0.004949"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.933509" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.932652" elapsed="0.000897"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:58.934151" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:58.933741" elapsed="0.000676"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.935649" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:58.934700" elapsed="0.001068"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.934456" elapsed="0.001533"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.933706" elapsed="0.002320"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.937072" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.936288" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:58.937599" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:58.937218" elapsed="0.000636"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.939084" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:58.938152" elapsed="0.001051"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.937892" elapsed="0.001520"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.937192" elapsed="0.002243"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:58.939602" elapsed="0.000681"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:58.941329" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.940450" elapsed="0.000907"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:58.941513" elapsed="0.003258"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:58.923553" elapsed="0.021289"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:58.945043" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:58.944915" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.944895" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:58.948146" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564478,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:58.945263" elapsed="0.002913"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:58.948229" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:07:58.948397" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564478,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:58.909376" elapsed="0.039047"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:58.948481" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:07:58.948628" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564478,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:58.906742" elapsed="0.041912"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.949587" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564478,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.949307" elapsed="0.000329"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.950619" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564478, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.950211" elapsed="0.000437"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:58.950698" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:58.950892" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564478, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:58.949845" elapsed="0.001137"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:58.951490" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:58.951254" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:58.951880" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:58.951671" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:58.951952" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:58.952117" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:58.948906" elapsed="0.003235"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:58.952322" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:58.952211" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.952193" elapsed="0.000193"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.959868" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.959601" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.960329" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.960087" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:58.967700" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:58.967782" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:07:58 GMT', 'Expires': 'Sun, 19 Apr 2026 01:07:58 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564478,"status":200} 
 </msg>
<msg time="2026-04-19T02:07:58.967904" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:07:58.962737" elapsed="0.005193"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.960447" elapsed="0.007526"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:58.968181" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:58.968002" elapsed="0.000243"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.960424" elapsed="0.007842"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.972231" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564478,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.969501" elapsed="0.002825"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.969256" elapsed="0.003178"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.969237" elapsed="0.003224"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.975508" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.972758" elapsed="0.002884"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.972517" elapsed="0.003285"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.972501" elapsed="0.003341"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.976940" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.976144" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:58.977486" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:58.977107" elapsed="0.000640"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.978910" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:58.978049" elapsed="0.001000"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.977786" elapsed="0.001553"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.977079" elapsed="0.002297"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.980425" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.979621" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:58.980943" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:58.980566" elapsed="0.000652"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.982343" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:07:58.981497" elapsed="0.000962"/>
</kw>
<status status="PASS" start="2026-04-19T02:07:58.981257" elapsed="0.001415"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.980540" elapsed="0.002168"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:07:58.982964" elapsed="0.000990"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:07:58.985512" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.984325" elapsed="0.001227"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:07:58.985783" elapsed="0.003684"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:07:58.968800" elapsed="0.020738"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:58.989728" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:58.989614" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.989594" elapsed="0.000204"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:07:58.993119" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:07:58.989947" elapsed="0.003202"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:07:58.993201" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:07:58.993370" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:07:58.955162" elapsed="0.038235"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:07:58.993454" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:07:58.993604" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:07:58.952587" elapsed="0.041043"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.994548" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564478,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:58.994270" elapsed="0.000327"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.995595" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564478, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:07:58.995188" elapsed="0.000435"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:07:58.995673" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:58.995832" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564478, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:07:58.994816" elapsed="0.001043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:58.996336" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:58.996013" elapsed="0.000410"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:07:58.996794" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:07:58.996582" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:07:58.996867" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:58.997018" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:07:58.993877" elapsed="0.003181"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:07:58.997102" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:07:58.997258" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:07:58.905191" elapsed="0.092092"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:07:58.997467" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:07:58.997356" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:07:58.997338" elapsed="0.000210"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:58.997694" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:07:58.904929" elapsed="0.092819"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:07:58.999430" level="INFO">${session} = ClusterManagement__session_2</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-19T02:07:58.999126" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:07:58.999502" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:07:58.999650" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:07:58.998764" elapsed="0.000911"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:59.007252" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:59.006966" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:07:59.007697" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:07:59.007457" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:07:59.017239" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:07:59.017343" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:07:59.017526" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:07:59.009950" elapsed="0.008107">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:59.007811" elapsed="0.010349">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.018445" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:59.018202" elapsed="0.000325"/>
</branch>
<status status="FAIL" start="2026-04-19T02:07:59.007790" elapsed="0.010765">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.019335" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:59.019491" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:59.019450" elapsed="0.000149"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:59.019430" elapsed="0.000396"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.019976" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:07:59.020093" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:07:59.002469" elapsed="0.017742">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:07:59.020283" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:07:58.999887" elapsed="0.020493">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.020608" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:07:59.020735" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:07:59.020699" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:59.020682" elapsed="0.000114"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.020991" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.021238" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:07:59.021305" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:07:58.998353" elapsed="0.023055">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:07:59.021526" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:07:59.021488" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:59.021471" elapsed="0.000116"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.021732" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:07:58.998119" elapsed="0.023684">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:07:58.904743" elapsed="0.117121">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:07:58.902119" elapsed="0.119845">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:07:58.901579" elapsed="0.120458">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:07:58.901544" elapsed="0.120527">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:07:59.022343" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:59.022141" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:59.022123" elapsed="0.000297"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:07:59.022729" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:07:59.022473" elapsed="0.000321"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:07:59.022457" elapsed="0.000360"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:07:58.900839" elapsed="0.122062">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.041543" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:08:09.041090" elapsed="0.000582"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.042194" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:08:09.041847" elapsed="0.000374"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:08:09.042271" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:08:09.042438" level="INFO">${index_list} = [1, 2, 3]</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-19T02:08:09.040671" elapsed="0.001793"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.043970" 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-19T02:08:09.043672" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:09.044059" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:09.044208" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:09.043328" elapsed="0.000906"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.052077" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.051797" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.052547" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.052293" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:09.060798" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:09.060876" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:09 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:09 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564489,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:09.060996" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:09.054922" elapsed="0.006127"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.052660" elapsed="0.008437"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.061280" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.061125" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.052641" elapsed="0.008725"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.065302" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564489,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.062602" elapsed="0.002799"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.062359" elapsed="0.003151"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.062340" elapsed="0.003198"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.068567" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.065838" elapsed="0.002823"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.065595" elapsed="0.003187"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.065578" elapsed="0.003248"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.069854" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.069106" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.070411" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.069992" elapsed="0.000665"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.071748" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:09.070924" elapsed="0.000989"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.070694" elapsed="0.001448"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.069967" elapsed="0.002210"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.073180" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.072417" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.073683" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.073319" elapsed="0.000613"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.075093" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:09.074260" elapsed="0.000953"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.073970" elapsed="0.001447"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.073293" elapsed="0.002159"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:09.075668" elapsed="0.000975"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:09.078129" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.076876" elapsed="0.001294"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:09.078390" elapsed="0.003807"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:09.061874" elapsed="0.020387"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.082441" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:09.082332" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.082313" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:09.085406" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564489,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:09.082657" elapsed="0.002778"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:09.085488" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:08:09.085649" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564489,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:09.046982" elapsed="0.038693"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:09.085733" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:08:09.085883" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564489,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:09.044466" elapsed="0.041444"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.086801" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564489,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.086550" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.087821" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564489, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.087423" elapsed="0.000426"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:09.087898" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:09.088074" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564489, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:09.087074" elapsed="0.001028"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:09.088497" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:09.088267" elapsed="0.000293"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:09.088938" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:09.088722" elapsed="0.000416"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:09.089189" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:09.089341" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:09.086194" elapsed="0.003172"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.089542" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:09.089434" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.089417" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.097439" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.097183" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.097889" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.097644" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:09.106579" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:09.106660" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:09 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:09 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564489,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:09.106776" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:09.100144" elapsed="0.006658"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.098001" elapsed="0.008846"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.107048" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.106874" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.097982" elapsed="0.009154"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.111180" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564489,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.108382" elapsed="0.002904"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.108120" elapsed="0.003278"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.108101" elapsed="0.003327"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.115379" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.111758" elapsed="0.003747"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.111495" elapsed="0.004158"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.111475" elapsed="0.004216"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.116784" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.115993" elapsed="0.000831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.117306" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.116923" elapsed="0.000622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.118641" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:09.117812" elapsed="0.000937"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.117581" elapsed="0.001376"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.116897" elapsed="0.002094"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.120056" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.119326" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.120651" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.120287" elapsed="0.000599"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.121946" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:09.121170" elapsed="0.000925"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:09.120923" elapsed="0.001377"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.120261" elapsed="0.002073"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:09.122557" elapsed="0.000993"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:09.124979" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.123784" elapsed="0.001226"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:09.125184" elapsed="0.003258"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:09.107657" elapsed="0.020856"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.128699" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:09.128586" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.128567" elapsed="0.000202"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:09.131744" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:09.128915" elapsed="0.002858"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:09.131825" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:08:09.131993" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:09.092638" elapsed="0.039381"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:09.132094" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:08:09.132258" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:09.089815" elapsed="0.042469"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.133147" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564489,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.132877" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.134179" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564489, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:09.133744" elapsed="0.000465"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:09.134258" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:09.134419" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564489, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:09.133407" elapsed="0.001039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:09.134828" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:09.134603" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:09.135274" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:09.135010" elapsed="0.000290"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:09.135384" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:09.135538" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:09.132512" elapsed="0.003052"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:08:09.135608" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:08:09.135756" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:08:09.042934" elapsed="0.092847"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:08:09.135959" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:08:09.135850" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:09.135833" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.136227" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:08:09.042706" elapsed="0.093579"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.137713" level="INFO">${session} = ClusterManagement__session_2</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-19T02:08:09.137410" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:09.137786" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:09.137935" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:09.137065" elapsed="0.000895"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.145726" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.145475" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:09.146193" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:09.145929" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:09.158303" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:09.158466" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:08:09.158741" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:08:09.148454" elapsed="0.011097">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:09.146303" elapsed="0.013434">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.160222" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.159811" elapsed="0.000565"/>
</branch>
<status status="FAIL" start="2026-04-19T02:08:09.146285" elapsed="0.014143">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.161812" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.162302" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:09.162068" elapsed="0.000327"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:09.161999" elapsed="0.000444"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.162761" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.162990" elapsed="0.000064"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:08:09.140912" elapsed="0.022363">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.163434" elapsed="0.000035"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:08:09.138203" elapsed="0.025446">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.164194" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.164484" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:09.164405" elapsed="0.000168"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:09.164368" elapsed="0.000253"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.165087" elapsed="0.000057"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.165585" elapsed="0.000052"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:08:09.165734" elapsed="0.000034"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:08:09.136663" elapsed="0.029299">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:08:09.166249" elapsed="0.000032"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:08:09.166169" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:09.166130" elapsed="0.000253"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.166696" elapsed="0.000045"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:08:09.136435" elapsed="0.030415">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:08:09.042523" elapsed="0.124453">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:08:09.040256" elapsed="0.126968">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:09.039891" elapsed="0.127462">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:08:09.039866" elapsed="0.127554">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:08:09.168005" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.167567" elapsed="0.000639"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:09.167530" elapsed="0.000731"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:08:09.168802" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:09.168382" elapsed="0.000476"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:09.168348" elapsed="0.000533"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:08:09.039381" elapsed="0.129580">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.187572" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:08:19.187103" elapsed="0.000502"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.188108" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:08:19.187778" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:08:19.188259" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:08:19.188430" level="INFO">${index_list} = [1, 2, 3]</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-19T02:08:19.186683" elapsed="0.001772"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.189980" 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-19T02:08:19.189681" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:19.190069" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:19.190219" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:19.189331" elapsed="0.000913"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.197866" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.197608" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.198337" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.198085" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:19.206685" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:19.206763" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:19 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:19 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564499,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:19.206875" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:19.200606" elapsed="0.006296"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.198449" elapsed="0.008497"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.207159" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.206972" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.198430" elapsed="0.008816"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.211108" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564499,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.208441" elapsed="0.002768"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.208199" elapsed="0.003120"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.208180" elapsed="0.003166"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.214379" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.211661" elapsed="0.002811"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.211415" elapsed="0.003168"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.211398" elapsed="0.003211"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.215346" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.214786" elapsed="0.000618"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.215743" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.215482" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.216955" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:19.216123" elapsed="0.000962"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.215937" elapsed="0.001355"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.215463" elapsed="0.001863"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.218338" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.217550" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.218831" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.218473" elapsed="0.000687"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.220243" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:19.219439" elapsed="0.000913"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.219198" elapsed="0.001356"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.218448" elapsed="0.002138"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:19.220800" elapsed="0.000933"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:19.223163" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.221967" elapsed="0.001238"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:19.223435" elapsed="0.004307"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:19.207755" elapsed="0.020077"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.228104" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:19.227930" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.227903" elapsed="0.000296"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:19.231163" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564499,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:19.228357" elapsed="0.002837"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:19.231246" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:08:19.231559" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564499,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:19.192964" elapsed="0.038624"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:19.231648" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:19.231804" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564499,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:19.190457" elapsed="0.041373"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.232736" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564499,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.232475" elapsed="0.000313"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.233758" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564499, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.233359" elapsed="0.000428"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:19.233837" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:19.233997" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564499, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:19.232997" elapsed="0.001027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:19.234425" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:19.234198" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:19.234982" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:19.234610" elapsed="0.000493"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:19.235158" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:19.235314" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:19.232111" elapsed="0.003229"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.235529" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:19.235419" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.235402" elapsed="0.000192"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.243109" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.242842" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.243572" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.243311" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:19.250998" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:19.251096" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:19 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:19 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564499,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:19.251215" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:19.245806" elapsed="0.005436"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.243683" elapsed="0.007602"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.251478" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.251311" elapsed="0.000232"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.243665" elapsed="0.007899"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.255467" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564499,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.252758" elapsed="0.002805"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.252516" elapsed="0.003155"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.252498" elapsed="0.003200"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.258679" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.255994" elapsed="0.002775"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.255756" elapsed="0.003130"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.255739" elapsed="0.003173"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.259719" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.259112" elapsed="0.000634"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.260093" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.259816" elapsed="0.000556"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.261448" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:19.260639" elapsed="0.000918"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.260410" elapsed="0.001347"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.259798" elapsed="0.001992"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.262745" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.262013" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.263286" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.262880" elapsed="0.000729"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.264701" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:19.263888" elapsed="0.000924"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:19.263649" elapsed="0.001365"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.262855" elapsed="0.002214"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:19.265292" elapsed="0.000943"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:19.267669" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.266470" elapsed="0.001237"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:19.267927" elapsed="0.004491"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:19.252086" elapsed="0.020398"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.272662" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:19.272553" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.272535" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:19.275806" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:19.272876" elapsed="0.002959"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:19.275888" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:08:19.276062" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:19.238333" elapsed="0.037757"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:19.276148" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:19.276299" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:19.235797" elapsed="0.040529"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.277165" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564499,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.276891" elapsed="0.000323"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.278169" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564499, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:19.277761" elapsed="0.000436"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:19.278247" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:19.278404" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564499, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:19.277423" elapsed="0.001008"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:19.278804" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:19.278584" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:19.279254" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:19.278985" elapsed="0.000295"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:19.279327" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:08:19.279502" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:19.276538" elapsed="0.002989"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:08:19.279607" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:19.279758" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:08:19.188929" elapsed="0.090854"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:08:19.279958" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:08:19.279851" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:19.279833" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.280207" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:08:19.188700" elapsed="0.091563"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.281676" level="INFO">${session} = ClusterManagement__session_2</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-19T02:08:19.281377" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:19.281748" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:19.281893" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:19.281004" elapsed="0.000914"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.289675" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.289427" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:19.290131" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:19.289873" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:19.303007" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:19.303113" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:08:19.303418" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:08:19.292384" elapsed="0.011887">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:19.290242" elapsed="0.014215">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.304875" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.304532" elapsed="0.000486"/>
</branch>
<status status="FAIL" start="2026-04-19T02:08:19.290224" elapsed="0.014937">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.306403" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.306703" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:19.306620" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:19.306582" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.307192" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.307362" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:08:19.284849" elapsed="0.022752">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.307841" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:08:19.282144" elapsed="0.025956">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.308595" elapsed="0.000053"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.308873" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:19.308796" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:19.308759" elapsed="0.000250"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.309480" elapsed="0.000052"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.309972" elapsed="0.000051"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:08:19.310148" elapsed="0.000034"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:08:19.280630" elapsed="0.029742">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:08:19.310625" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:08:19.310545" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:19.310509" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.311100" elapsed="0.000048"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:08:19.280403" elapsed="0.030853">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:08:19.188514" elapsed="0.122933">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:08:19.186268" elapsed="0.125401">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:19.185911" elapsed="0.125886">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:08:19.185884" elapsed="0.125980">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:08:19.312292" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.312011" elapsed="0.000335"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:19.311975" elapsed="0.000395"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:08:19.312633" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:19.312424" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:19.312408" elapsed="0.000306"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:08:19.185390" elapsed="0.127406">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.328616" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:08:29.327975" elapsed="0.000685"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.329378" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:08:29.328909" elapsed="0.000505"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:08:29.329485" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T02:08:29.329718" level="INFO">${index_list} = [1, 2, 3]</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-19T02:08:29.327407" elapsed="0.002429"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.331956" 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-19T02:08:29.331614" elapsed="0.000374"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:29.332061" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:08:29.332240" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:29.331134" elapsed="0.001136"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.341804" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.341496" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.342369" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.342070" elapsed="0.000352"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:29.351536" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:29.351631" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:29 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:29 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564509,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:29.351768" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:29.345229" elapsed="0.006571"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.342503" elapsed="0.009348"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.352102" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.351885" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.342481" elapsed="0.009734"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.356994" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564509,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.353693" elapsed="0.003433"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.353385" elapsed="0.003867"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.353346" elapsed="0.003940"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.360984" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.357658" elapsed="0.003449"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.357363" elapsed="0.003870"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.357342" elapsed="0.003923"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.362174" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.361497" elapsed="0.000710"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.362625" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.362289" elapsed="0.000544"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.363797" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:29.363120" elapsed="0.000776"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.362866" elapsed="0.001232"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.362268" elapsed="0.001859"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.364909" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.364324" elapsed="0.000619"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.365433" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.365109" elapsed="0.000533"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.366622" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:29.365887" elapsed="0.000837"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.365673" elapsed="0.001229"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.365086" elapsed="0.001845"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:29.367185" elapsed="0.000816"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:29.369479" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.368243" elapsed="0.001271"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:29.369722" elapsed="0.006493"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:29.352845" elapsed="0.023456"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.376516" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:29.376392" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.376365" elapsed="0.000223"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:29.380424" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564509,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:29.376762" elapsed="0.003705"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:29.380546" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T02:08:29.380777" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564509,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:29.335690" elapsed="0.045122"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:29.380892" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:08:29.381102" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564509,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:29.332537" elapsed="0.048601"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.382436" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564509,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.382043" elapsed="0.000461"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.383888" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564509, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.383307" elapsed="0.000620"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:29.383992" elapsed="0.000144"/>
</return>
<msg time="2026-04-19T02:08:29.384315" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564509, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:29.382806" elapsed="0.001545"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:29.384862" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:29.384565" elapsed="0.000333"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:29.385400" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:29.385122" elapsed="0.000311"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:29.385496" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:08:29.385781" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:29.381501" elapsed="0.004314"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.386112" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:29.385918" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.385893" elapsed="0.000306"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.394375" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.393986" elapsed="0.000451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.394883" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.394630" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:29.403771" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:29.403893" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:29 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:29 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564509,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:29.404095" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:29.397479" elapsed="0.006649"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.395012" elapsed="0.009184"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.404497" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.404239" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.394987" elapsed="0.009602"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.408980" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564509,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.405986" elapsed="0.003137"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.405704" elapsed="0.003547"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.405682" elapsed="0.003609"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.413307" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.409695" elapsed="0.003752"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.409371" elapsed="0.004304"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.409348" elapsed="0.004372"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.414890" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.414012" elapsed="0.000919"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.415451" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.415061" elapsed="0.000653"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.416870" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:29.416000" elapsed="0.000987"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.415753" elapsed="0.001517"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.415011" elapsed="0.002295"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.418329" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.417552" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.418872" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.418470" elapsed="0.000683"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.420293" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:29.419435" elapsed="0.001056"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:29.419192" elapsed="0.001523"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.418442" elapsed="0.002309"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:29.420999" elapsed="0.000998"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:29.423548" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.422347" elapsed="0.001228"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:29.423732" elapsed="0.003080"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:29.405196" elapsed="0.021690"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.427091" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:29.426959" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.426940" elapsed="0.000223"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:29.430176" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:29.427312" elapsed="0.002893"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:29.430257" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:08:29.430429" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:29.389266" elapsed="0.041189"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:29.430533" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:08:29.430695" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:29.386497" elapsed="0.044225"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.431656" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564509,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.431378" elapsed="0.000327"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.432690" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564509, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:29.432280" elapsed="0.000439"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:29.432767" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:29.432928" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564509, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:29.431913" elapsed="0.001043"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:29.433361" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:29.433126" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:29.433754" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:29.433543" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:29.433827" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:29.433976" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:29.430982" elapsed="0.003019"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:08:29.434171" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:29.434389" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:08:29.330541" elapsed="0.103874"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:08:29.434640" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:08:29.434490" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:29.434471" elapsed="0.000254"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.434874" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:08:29.330218" elapsed="0.104712"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.436656" level="INFO">${session} = ClusterManagement__session_2</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-19T02:08:29.436348" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:29.436729" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:29.436878" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:29.435983" elapsed="0.000920"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.444593" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.444281" elapsed="0.000370"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:29.445079" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:29.444816" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:29.458133" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:29.458279" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:08:29.458521" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:08:29.447431" elapsed="0.011686">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:29.445202" elapsed="0.014057">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.459615" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.459318" elapsed="0.000398"/>
</branch>
<status status="FAIL" start="2026-04-19T02:08:29.445180" elapsed="0.014571">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.460601" elapsed="0.000042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.460816" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:29.460756" elapsed="0.000123"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:29.460728" elapsed="0.000183"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.461146" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.461251" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:08:29.439738" elapsed="0.021678">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.461599" elapsed="0.000024"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:08:29.437136" elapsed="0.024615">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.462109" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.462301" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:29.462247" elapsed="0.000115"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:29.462222" elapsed="0.000172"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.462726" elapsed="0.000038"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.463087" elapsed="0.000037"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:08:29.463189" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:08:29.435588" elapsed="0.027752">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:08:29.463515" elapsed="0.000023"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:08:29.463457" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:29.463432" elapsed="0.000172"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.463819" elapsed="0.000030"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:08:29.435100" elapsed="0.028822">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:08:29.329922" elapsed="0.134087">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:08:29.326803" elapsed="0.137373">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:29.326312" elapsed="0.137950">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:08:29.326280" elapsed="0.138027">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:08:29.464695" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.464403" elapsed="0.000372"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:29.464379" elapsed="0.000430"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:08:29.465209" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:29.464886" elapsed="0.000405"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:29.464863" elapsed="0.000463"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:08:29.325595" elapsed="0.139845">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.486689" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:08:39.486070" elapsed="0.000662"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.487273" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:08:39.486939" elapsed="0.000360"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:08:39.487349" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:08:39.487519" level="INFO">${index_list} = [1, 2, 3]</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-19T02:08:39.485432" elapsed="0.002112"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.489198" 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-19T02:08:39.488882" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:39.489273" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:39.489421" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:39.488536" elapsed="0.000910"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.497262" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.496968" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.497759" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.497472" elapsed="0.000335"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:39.506399" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:39.506477" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:39 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:39 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564519,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:39.506591" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:39.500069" elapsed="0.006549"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.497880" elapsed="0.008781"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.506871" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.506689" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.497860" elapsed="0.009134"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.512684" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564519,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.508768" elapsed="0.004054"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.508374" elapsed="0.004603"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.508339" elapsed="0.004678"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.517346" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.513474" elapsed="0.004004"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.513123" elapsed="0.004554"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.513098" elapsed="0.004658"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.518861" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.518013" elapsed="0.000876"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.519245" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.518961" elapsed="0.000459"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.520207" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:39.519611" elapsed="0.000686"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.519446" elapsed="0.001027"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.518942" elapsed="0.001557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.521221" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.520667" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.521586" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.521323" elapsed="0.000468"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.522657" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:39.521987" elapsed="0.000750"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.521819" elapsed="0.001077"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.521304" elapsed="0.001622"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:39.523148" elapsed="0.000688"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:39.524849" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.524010" elapsed="0.000867"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:39.525054" elapsed="0.003076"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:39.507712" elapsed="0.020486"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.528385" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:39.528270" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.528250" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:39.531494" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564519,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:39.528608" elapsed="0.002916"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:39.531577" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:08:39.531743" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564519,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:39.492296" elapsed="0.039473"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:39.531827" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:08:39.531977" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564519,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:39.489658" elapsed="0.042345"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.532851" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564519,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.532598" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.533890" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564519, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.533467" elapsed="0.000452"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:39.533969" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:39.534224" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564519, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:39.533128" elapsed="0.001123"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:39.534637" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:39.534410" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:39.535214" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:39.534821" elapsed="0.000420"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:39.535290" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:39.535440" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:39.532239" elapsed="0.003225"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.535682" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:39.535532" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.535514" elapsed="0.000238"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.543460" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.543204" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.543910" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.543665" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:39.550858" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:39.550935" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:39 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:39 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564519,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:39.551061" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:39.546225" elapsed="0.004864"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.544074" elapsed="0.007058"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.551310" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.551157" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.544052" elapsed="0.007342"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.555510" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564519,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.552582" elapsed="0.003027"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.552339" elapsed="0.003379"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.552320" elapsed="0.003426"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.559349" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.556086" elapsed="0.003429"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.555804" elapsed="0.003901"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.555787" elapsed="0.003971"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.560938" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.560167" elapsed="0.000818"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.561516" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.561134" elapsed="0.000700"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.563092" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:39.562229" elapsed="0.000981"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.561884" elapsed="0.001566"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.561105" elapsed="0.002394"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.564803" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.563774" elapsed="0.001079"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.565411" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.564983" elapsed="0.000677"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.566996" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:39.566171" elapsed="0.000922"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:39.565814" elapsed="0.001433"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.564947" elapsed="0.002325"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:39.567431" elapsed="0.000712"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:39.569346" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.568411" elapsed="0.000963"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:39.569537" elapsed="0.003580"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:39.551886" elapsed="0.021300"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.573421" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:39.573274" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.573248" elapsed="0.000266"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:39.577305" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:39.573733" elapsed="0.003611"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:39.577415" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:08:39.577633" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:39.538589" elapsed="0.039114"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:39.577783" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:08:39.577973" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:39.535959" elapsed="0.042042"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.579076" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564519,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.578800" elapsed="0.000327"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.580140" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564519, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:39.579677" elapsed="0.000503"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:39.580246" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:08:39.580458" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564519, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:39.579335" elapsed="0.001159"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:39.581009" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:39.580711" elapsed="0.000354"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:39.581573" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:39.581285" elapsed="0.000324"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:39.581692" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:08:39.581904" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:39.578436" elapsed="0.003497"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:08:39.581978" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:39.582153" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:08:39.488156" elapsed="0.094022"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:08:39.582377" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T02:08:39.582252" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:39.582233" elapsed="0.000279"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.582667" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:08:39.487902" elapsed="0.094824"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.584273" level="INFO">${session} = ClusterManagement__session_2</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-19T02:08:39.583896" elapsed="0.000404"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:39.584347" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:08:39.584502" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:39.583538" elapsed="0.000990"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.592356" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.592104" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:39.592800" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:39.592558" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:39.604858" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:39.604931" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:08:39.605083" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:08:39.595057" elapsed="0.010407">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:39.592909" elapsed="0.012639">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.605768" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.605580" elapsed="0.000255"/>
</branch>
<status status="FAIL" start="2026-04-19T02:08:39.592891" elapsed="0.012968">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.606398" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.606534" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:39.606497" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:39.606479" elapsed="0.000118"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.606738" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.606809" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:08:39.587492" elapsed="0.019424">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.606988" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:08:39.584743" elapsed="0.022361">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.607364" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.607492" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:39.607456" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:39.607439" elapsed="0.000114"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.607750" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.607976" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:08:39.608060" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:08:39.583142" elapsed="0.025021">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:08:39.608278" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:08:39.608242" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:39.608225" elapsed="0.000112"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.608479" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:08:39.582884" elapsed="0.025665">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:08:39.487707" elapsed="0.120901">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:08:39.484835" elapsed="0.123870">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:39.484340" elapsed="0.124425">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:08:39.484306" elapsed="0.124491">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:08:39.609085" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.608868" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:39.608852" elapsed="0.000312"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:08:39.609431" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:39.609218" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:39.609202" elapsed="0.000310"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:08:39.483621" elapsed="0.125973">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.629519" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:08:49.629012" elapsed="0.000540"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.630049" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:08:49.629723" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:08:49.630125" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:08:49.630291" level="INFO">${index_list} = [1, 2, 3]</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-19T02:08:49.628410" elapsed="0.001906"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.631861" 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-19T02:08:49.631562" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:49.632008" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:08:49.632177" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:49.631214" elapsed="0.000988"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.640803" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.640537" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.641301" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.641051" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:49.649353" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:49.649431" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:49 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564529,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:49.649546" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:49.643533" elapsed="0.006040"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.641415" elapsed="0.008201"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.649798" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.649644" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.641396" elapsed="0.008488"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.654048" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564529,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.651123" elapsed="0.003067"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.650834" elapsed="0.003507"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.650814" elapsed="0.003565"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.659351" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.654851" elapsed="0.004683"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.654460" elapsed="0.005271"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.654436" elapsed="0.005337"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.661127" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.660126" elapsed="0.001041"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.661664" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.661268" elapsed="0.000663"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.663049" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:49.662224" elapsed="0.000941"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.661968" elapsed="0.001402"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.661241" elapsed="0.002161"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.664426" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.663628" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.664968" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.664563" elapsed="0.000648"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.665988" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:49.665405" elapsed="0.000685"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.665239" elapsed="0.001058"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.664537" elapsed="0.001787"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:49.666485" elapsed="0.000815"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:49.668312" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.667469" elapsed="0.000871"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:49.668497" elapsed="0.003223"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:49.650408" elapsed="0.021387"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.671985" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:49.671871" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.671851" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:49.674988" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564529,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:49.672224" elapsed="0.002794"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:49.675191" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:08:49.675362" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564529,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:49.634985" elapsed="0.040411"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:49.675463" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:49.675617" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564529,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:49.632414" elapsed="0.043231"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.676541" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564529,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.676279" elapsed="0.000311"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.677615" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564529, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.677207" elapsed="0.000436"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:49.677694" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:49.677856" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564529, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:49.676799" elapsed="0.001085"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:49.678289" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:49.678061" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:49.678858" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:49.678469" elapsed="0.000415"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:49.678934" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:49.679103" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:49.675882" elapsed="0.003246"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.679305" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:49.679196" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.679179" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.686894" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.686645" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.687350" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.687107" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:49.695071" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:49.695152" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:49 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564529,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:49.695264" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:49.689639" elapsed="0.005652"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.687459" elapsed="0.007875"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.695512" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.695360" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.687441" elapsed="0.008157"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.699462" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564529,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.696785" elapsed="0.002772"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.696542" elapsed="0.003119"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.696523" elapsed="0.003165"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.702652" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.699983" elapsed="0.002760"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.699744" elapsed="0.003106"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.699727" elapsed="0.003150"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.703588" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.703068" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.703941" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.703685" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.704920" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:49.704317" elapsed="0.000681"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.704154" elapsed="0.001012"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.703667" elapsed="0.001523"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.705859" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.705352" elapsed="0.000534"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.706229" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.705955" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.707265" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:49.706629" elapsed="0.000715"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:49.706451" elapsed="0.001036"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.705937" elapsed="0.001573"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:49.707663" elapsed="0.000668"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:49.709331" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.708531" elapsed="0.000826"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:49.709512" elapsed="0.003119"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:49.696117" elapsed="0.016579"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.712886" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:49.712764" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.712746" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:49.715854" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:49.713112" elapsed="0.002771"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:49.715935" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:08:49.716108" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:49.682205" elapsed="0.033930"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:49.716192" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:08:49.716337" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:49.679574" elapsed="0.036788"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.717495" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564529,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.717191" elapsed="0.000354"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.718494" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564529, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:49.718101" elapsed="0.000420"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:49.718570" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:49.718728" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564529, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:49.717751" elapsed="0.001003"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:49.719233" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:49.718908" elapsed="0.000353"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:49.719625" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:49.719416" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:49.719697" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:49.719844" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:49.716570" elapsed="0.003298"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:08:49.719912" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:08:49.720071" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:08:49.630808" elapsed="0.089288"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:08:49.720278" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:08:49.720170" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:49.720150" elapsed="0.000210"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.720506" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:08:49.630562" elapsed="0.090043"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.722037" level="INFO">${session} = ClusterManagement__session_2</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-19T02:08:49.721727" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:49.722111" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:49.722256" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:49.721388" elapsed="0.000893"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.731430" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.731150" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:49.731884" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:49.731641" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:49.745199" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:49.745316" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:08:49.745666" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:08:49.734144" elapsed="0.012081">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:49.732000" elapsed="0.014343">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.746608" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.746391" elapsed="0.000308"/>
</branch>
<status status="FAIL" start="2026-04-19T02:08:49.731978" elapsed="0.014753">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.747469" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.747660" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:49.747607" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:49.747583" elapsed="0.000167"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.747952" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.748072" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:08:49.726636" elapsed="0.021594">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.748330" elapsed="0.000021"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:08:49.722493" elapsed="0.025973">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.748772" elapsed="0.000124"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.749069" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:49.748997" elapsed="0.000131"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:49.748973" elapsed="0.000184"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.749435" elapsed="0.000035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.749745" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:08:49.749840" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:08:49.720992" elapsed="0.028989">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:08:49.750174" elapsed="0.000020"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:08:49.750123" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:49.750098" elapsed="0.000160"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.750455" elapsed="0.000030"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:08:49.720753" elapsed="0.029802">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:08:49.630375" elapsed="0.120262">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:08:49.627746" elapsed="0.123024">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:49.627276" elapsed="0.123574">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:08:49.627242" elapsed="0.123651">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:08:49.751291" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.750983" elapsed="0.000384"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:49.750960" elapsed="0.000439"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:08:49.751763" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:49.751472" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:49.751451" elapsed="0.000423"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:08:49.626551" elapsed="0.125430">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.772164" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:08:59.771481" elapsed="0.000727"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.772773" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:08:59.772443" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:08:59.772852" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:08:59.773019" level="INFO">${index_list} = [1, 2, 3]</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-19T02:08:59.770902" elapsed="0.002158"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.774576" 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-19T02:08:59.774271" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:59.774649" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:59.774796" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:59.773911" elapsed="0.000998"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.782543" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.782282" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.782998" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.782749" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:59.790905" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:59.790985" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:59 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:59 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564539,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:59.791121" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:59.785313" elapsed="0.005835"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.783132" elapsed="0.008061"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.791378" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.791220" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.783113" elapsed="0.008350"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.796673" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564539,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.792846" elapsed="0.003960"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.792484" elapsed="0.004471"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.792457" elapsed="0.004537"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.801230" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.797432" elapsed="0.003923"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.797094" elapsed="0.004408"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.797069" elapsed="0.004472"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.802563" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.801784" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.803081" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.802698" elapsed="0.000622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.804420" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:59.803583" elapsed="0.000943"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.803356" elapsed="0.001317"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.802673" elapsed="0.002024"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.805390" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.804857" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.805740" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.805487" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.806696" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:59.806137" elapsed="0.000638"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.805936" elapsed="0.000986"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.805469" elapsed="0.001477"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:59.807115" elapsed="0.000653"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:59.808816" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.807974" elapsed="0.000870"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:59.809003" elapsed="0.003019"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:59.791965" elapsed="0.020160"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.812307" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:59.812196" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.812177" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:59.815367" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564539,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:59.812538" elapsed="0.002859"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:59.815450" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:08:59.815610" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564539,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:59.777686" elapsed="0.037951"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:59.815695" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:59.815843" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564539,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:59.775145" elapsed="0.040725"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.816716" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564539,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.816463" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.817734" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564539, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.817331" elapsed="0.000433"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:59.817814" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:59.817975" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564539, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:59.816974" elapsed="0.001035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:59.818510" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:59.818279" elapsed="0.000259"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:59.818906" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:59.818695" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:59.818979" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:59.819146" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:59.816110" elapsed="0.003063"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.819554" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:59.819435" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.819226" elapsed="0.000394"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.827259" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.826970" elapsed="0.000362"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.827892" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.827620" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:59.835609" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:59.835686" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:08:59 GMT', 'Expires': 'Sun, 19 Apr 2026 01:08:59 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564539,"status":200} 
 </msg>
<msg time="2026-04-19T02:08:59.835802" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:08:59.830179" elapsed="0.005650"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.828006" elapsed="0.007866"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.836092" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.835899" elapsed="0.000261"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.827987" elapsed="0.008194"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.840111" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564539,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.837422" elapsed="0.002785"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.837177" elapsed="0.003134"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.837158" elapsed="0.003180"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.843321" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.840638" elapsed="0.002775"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.840395" elapsed="0.003125"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.840379" elapsed="0.003169"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.844342" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.843725" elapsed="0.000652"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.844879" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.844471" elapsed="0.000673"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.846229" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:59.845412" elapsed="0.000928"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.845182" elapsed="0.001365"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.844441" elapsed="0.002140"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.847545" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.846808" elapsed="0.000775"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.848136" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.847682" elapsed="0.000694"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.849474" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:08:59.848673" elapsed="0.000910"/>
</kw>
<status status="PASS" start="2026-04-19T02:08:59.848412" elapsed="0.001519"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.847657" elapsed="0.002308"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:08:59.850202" elapsed="0.000933"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:08:59.852547" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.851371" elapsed="0.001214"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:08:59.852803" elapsed="0.004460"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:08:59.836723" elapsed="0.020605"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.857509" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:59.857399" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.857380" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:08:59.860581" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:08:59.857722" elapsed="0.002889"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:08:59.860665" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:08:59.860830" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:08:59.822474" elapsed="0.038383"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:08:59.860914" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:08:59.861080" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:08:59.819827" elapsed="0.041281"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.861937" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564539,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.861683" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.862984" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564539, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:08:59.862556" elapsed="0.000457"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:08:59.863090" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:08:59.863253" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564539, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:08:59.862213" elapsed="0.001067"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:59.863662" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:59.863436" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:08:59.864084" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:08:59.863844" elapsed="0.000266"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:08:59.864158" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:08:59.864309" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:08:59.861323" elapsed="0.003011"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:08:59.864378" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:08:59.864525" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:08:59.773538" elapsed="0.091012"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:08:59.864728" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:08:59.864619" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:08:59.864602" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.864956" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:08:59.773305" elapsed="0.091707"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.866449" level="INFO">${session} = ClusterManagement__session_2</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-19T02:08:59.866148" elapsed="0.000360"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:08:59.866558" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:08:59.866708" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:08:59.865791" elapsed="0.000942"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.875107" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.874665" elapsed="0.000494"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:08:59.875559" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:08:59.875314" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:08:59.887927" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:08:59.888049" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:08:59.888188" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:08:59.877817" elapsed="0.010880">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:59.875670" elapsed="0.013217">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.889344" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.888958" elapsed="0.000533"/>
</branch>
<status status="FAIL" start="2026-04-19T02:08:59.875651" elapsed="0.013892">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.890715" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.891019" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:59.890936" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:59.890898" elapsed="0.000294"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.891511" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.891667" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:08:59.869761" elapsed="0.022142">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.892110" elapsed="0.000037"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:08:59.866947" elapsed="0.025387">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.892823" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.893153" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:08:59.893068" elapsed="0.000413"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:59.892990" elapsed="0.000557"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.894004" elapsed="0.000093"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.894540" elapsed="0.000057"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:08:59.894693" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:08:59.865410" elapsed="0.029508">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:08:59.895202" elapsed="0.000031"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:08:59.895123" elapsed="0.000163"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:59.895083" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.895646" elapsed="0.000046"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:08:59.865175" elapsed="0.030625">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:08:59.773120" elapsed="0.122806">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:08:59.770324" elapsed="0.125889">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:08:59.769849" elapsed="0.126512">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:08:59.769817" elapsed="0.126635">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:08:59.896758" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.896556" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:59.896539" elapsed="0.000297"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:08:59.897119" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:08:59.896889" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:08:59.896873" elapsed="0.000326"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:08:59.769172" elapsed="0.128106">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.915615" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:09:09.915133" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.916148" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:09:09.915820" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:09:09.916223" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:09:09.916426" level="INFO">${index_list} = [1, 2, 3]</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-19T02:09:09.914645" elapsed="0.001807"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.917965" 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-19T02:09:09.917668" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:09.918052" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:09:09.918201" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:09.917327" elapsed="0.000898"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.926145" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.925786" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.926630" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.926372" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:09.934905" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:09.934987" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:09 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:09 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564549,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:09.935134" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:09.928918" elapsed="0.006244"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.926745" elapsed="0.008462"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:09.935416" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:09.935256" elapsed="0.000226"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.926727" elapsed="0.008776"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.939489" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564549,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.936723" elapsed="0.002862"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.936477" elapsed="0.003217"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.936457" elapsed="0.003265"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.943945" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.940155" elapsed="0.003939"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.939780" elapsed="0.004462"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.939763" elapsed="0.004517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.945281" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:09.944522" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:09.945777" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:09.945418" elapsed="0.000598"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.947147" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:09.946304" elapsed="0.000966"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.946073" elapsed="0.001400"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.945392" elapsed="0.002113"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.948486" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:09.947744" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:09.948977" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:09.948621" elapsed="0.000621"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.950308" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:09.949507" elapsed="0.000909"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.949280" elapsed="0.001337"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.948597" elapsed="0.002053"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:09.950864" elapsed="0.001029"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:09.952939" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:09.952134" elapsed="0.000832"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:09.953179" elapsed="0.003087"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:09.936004" elapsed="0.020327"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:09.956511" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:09.956401" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.956382" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:09.959668" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564549,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:09.956724" elapsed="0.002974"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:09.959751" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:09:09.959910" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564549,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:09.921187" elapsed="0.038749"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:09.959994" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:09:09.960159" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564549,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:09.918434" elapsed="0.041755"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.961011" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564549,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.960756" elapsed="0.000322"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.962055" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564549, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:09.961630" elapsed="0.000455"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:09.962135" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:09.962296" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564549, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:09.961290" elapsed="0.001032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:09.962704" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:09.962477" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:09.963372" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:09.962886" elapsed="0.000514"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:09.963450" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:09.963603" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:09.960402" elapsed="0.003225"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:09.963804" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:09.963695" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.963678" elapsed="0.000192"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.971408" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.971119" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.971852" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.971610" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:09.983477" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:09.983771" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:09 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:09 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564549,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:09.984194" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:09.974199" elapsed="0.010065"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.971961" elapsed="0.012434"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:09.984939" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:09.984472" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.971943" elapsed="0.013382"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.993585" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564549,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.988327" elapsed="0.005415"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.987695" elapsed="0.006198"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.987648" elapsed="0.006283"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.998208" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:09.994371" elapsed="0.003964"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:09.994010" elapsed="0.004471"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.993987" elapsed="0.004531"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:09.999584" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:09.998777" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.000122" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:09.999720" elapsed="0.000650"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.001485" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:10.000638" elapsed="0.000959"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:10.000407" elapsed="0.001395"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:09.999695" elapsed="0.002139"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.002794" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:10.002081" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.003339" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:10.002928" elapsed="0.000656"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.004446" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:10.003846" elapsed="0.000680"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:10.003621" elapsed="0.001055"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:10.002903" elapsed="0.001796"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:10.004861" elapsed="0.000694"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:10.006563" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:10.005726" elapsed="0.000863"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:10.006748" elapsed="0.003279"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:09.986586" elapsed="0.023524"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:10.010364" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:10.010245" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:10.010219" elapsed="0.000217"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:10.013442" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:10.010585" elapsed="0.002886"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:10.013522" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:09:10.013692" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:09.966659" elapsed="0.047060"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:10.013776" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:09:10.013924" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:09.964096" elapsed="0.049854"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.014805" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564549,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:10.014550" elapsed="0.000304"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.015849" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564549, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:10.015446" elapsed="0.000432"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:10.015927" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:10.016122" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564549, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:10.015080" elapsed="0.001070"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:10.016530" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:10.016305" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:10.016937" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:10.016710" elapsed="0.000252"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:10.017009" elapsed="0.000078"/>
</return>
<msg time="2026-04-19T02:09:10.017213" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:10.014194" elapsed="0.003044"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:09:10.017281" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:09:10.017429" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:09:09.916933" elapsed="0.100522"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:09:10.017638" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-19T02:09:10.017525" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:10.017508" elapsed="0.000216"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.017875" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:09:09.916702" elapsed="0.101229"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.019379" level="INFO">${session} = ClusterManagement__session_2</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-19T02:09:10.019069" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:10.019450" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:10.019597" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:10.018716" elapsed="0.000905"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.027459" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:10.027210" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:10.027898" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:10.027658" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:10.039885" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:10.039994" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:09:10.040254" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:09:10.030166" elapsed="0.010652">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:10.028005" elapsed="0.012936">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.041254" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:10.040987" elapsed="0.000381"/>
</branch>
<status status="FAIL" start="2026-04-19T02:09:10.027987" elapsed="0.013424">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.042175" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:10.042363" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:10.042312" elapsed="0.000108"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:10.042289" elapsed="0.000160"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.042646" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:09:10.042741" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:09:10.022565" elapsed="0.020325">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:10.042986" elapsed="0.000021"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:09:10.019868" elapsed="0.023273">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.043491" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:10.043666" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:10.043617" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:10.043594" elapsed="0.000156"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.044024" elapsed="0.000054"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.044352" elapsed="0.000075"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:09:10.044492" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:09:10.018337" elapsed="0.026296">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:09:10.044790" elapsed="0.000019"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:09:10.044740" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:10.044717" elapsed="0.000153"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.045104" elapsed="0.000031"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:09:10.018106" elapsed="0.027098">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:09:09.916514" elapsed="0.128770">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:09:09.914218" elapsed="0.131206">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:09.913842" elapsed="0.131666">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:09:09.913814" elapsed="0.131736">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:09:10.045923" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:10.045643" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:10.045619" elapsed="0.000408"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:09:10.046425" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:10.046133" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:10.046111" elapsed="0.000422"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:09:09.913309" elapsed="0.133338">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.064348" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:09:20.063878" elapsed="0.000502"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.064860" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:09:20.064550" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:09:20.064934" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:09:20.065121" level="INFO">${index_list} = [1, 2, 3]</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-19T02:09:20.063460" elapsed="0.001687"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.066650" 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-19T02:09:20.066353" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:20.066724" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:20.066871" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:20.065989" elapsed="0.000907"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.076012" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.075753" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.076478" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.076234" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:20.085285" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:20.085392" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:20 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:20 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564560,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:20.085559" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:20.078853" elapsed="0.006744"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.076654" elapsed="0.009003"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.085906" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.085694" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.076635" elapsed="0.009392"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.091672" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564560,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.087711" elapsed="0.004096"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.087371" elapsed="0.004626"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.087343" elapsed="0.004693"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.095122" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.092444" elapsed="0.002772"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.092149" elapsed="0.003177"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.092121" elapsed="0.003232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.096127" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.095534" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.096495" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.096232" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.097454" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:20.096859" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.096693" elapsed="0.000992"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.096210" elapsed="0.001499"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.098406" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.097871" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.098757" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.098502" elapsed="0.000434"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.099706" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:20.099141" elapsed="0.000647"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.098961" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.098484" elapsed="0.001475"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:20.100193" elapsed="0.000659"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:20.101851" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.101019" elapsed="0.000859"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:20.102039" elapsed="0.003081"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:20.086749" elapsed="0.018438"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.105417" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:20.105307" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.105288" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:20.108481" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564560,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:20.105631" elapsed="0.002880"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:20.108564" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:09:20.108727" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564560,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:20.069703" elapsed="0.039050"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:20.108812" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:09:20.108959" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564560,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:20.067125" elapsed="0.041859"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.109864" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564560,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.109611" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.110876" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564560, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.110479" elapsed="0.000426"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:20.110955" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:20.111133" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564560, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:20.110141" elapsed="0.001019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:20.111539" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:20.111315" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:20.111929" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:20.111720" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:20.112002" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:09:20.112264" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:20.109236" elapsed="0.003053"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.112463" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:20.112356" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.112339" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.120228" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.119944" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.120708" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.120462" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:20.128344" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:20.128421" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:20 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:20 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564560,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:20.128588" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:20.122942" elapsed="0.005673"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.120820" elapsed="0.007837"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.128834" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.128683" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.120801" elapsed="0.008117"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.132852" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564560,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.130127" elapsed="0.002819"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.129869" elapsed="0.003222"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.129850" elapsed="0.003269"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.137389" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.133519" elapsed="0.003994"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.133177" elapsed="0.004480"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.133160" elapsed="0.004535"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.138661" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.137919" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.139176" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.138797" elapsed="0.000617"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.140480" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:20.139677" elapsed="0.000914"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.139450" elapsed="0.001379"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.138771" elapsed="0.002092"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.141694" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.141175" elapsed="0.000546"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.142063" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.141791" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.142986" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:20.142423" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:20.142260" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.141773" elapsed="0.001480"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:20.143406" elapsed="0.000672"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:20.145114" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.144245" elapsed="0.000896"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:20.145297" elapsed="0.003136"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:20.129449" elapsed="0.019049"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.148674" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:20.148568" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.148549" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:20.151668" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:20.148912" elapsed="0.002785"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:20.151749" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:09:20.151908" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:20.115415" elapsed="0.036552"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:20.152031" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:09:20.152197" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:20.112731" elapsed="0.039493"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.153184" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564560,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.152788" elapsed="0.000448"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.154201" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564560, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:20.153790" elapsed="0.000440"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:20.154279" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:20.154439" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564560, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:20.153448" elapsed="0.001018"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:20.154843" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:20.154622" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:20.155285" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:20.155023" elapsed="0.000294"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:20.155374" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:09:20.155523" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:20.152433" elapsed="0.003115"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:09:20.155591" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:09:20.155736" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:09:20.065616" elapsed="0.090144"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:09:20.155934" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:09:20.155827" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:20.155811" elapsed="0.000205"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.156184" elapsed="0.000027"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:09:20.065389" elapsed="0.090864"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.157742" level="INFO">${session} = ClusterManagement__session_2</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-19T02:09:20.157441" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:20.157815" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:20.157963" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:20.157087" elapsed="0.000901"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.165731" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.165479" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:20.166196" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:20.165931" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:20.178105" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:20.178256" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:09:20.178437" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:09:20.168452" elapsed="0.010493">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:20.166308" elapsed="0.012779">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.179352" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.179136" elapsed="0.000305"/>
</branch>
<status status="FAIL" start="2026-04-19T02:09:20.166288" elapsed="0.013186">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.180222" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.180410" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:20.180360" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:20.180335" elapsed="0.000161"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.180694" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.180812" elapsed="0.000022"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:09:20.160896" elapsed="0.020069">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.181090" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:09:20.158217" elapsed="0.023047">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.181571" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.181746" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:20.181697" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:20.181674" elapsed="0.000156"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.182126" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.182435" elapsed="0.000032"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:09:20.182527" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:09:20.156636" elapsed="0.026030">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:09:20.182820" elapsed="0.000020"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:09:20.182771" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:20.182748" elapsed="0.000153"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.183129" elapsed="0.000030"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:09:20.156409" elapsed="0.026819">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:09:20.065205" elapsed="0.118157">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:09:20.063026" elapsed="0.120497">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:20.062689" elapsed="0.120917">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:09:20.062664" elapsed="0.120984">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:09:20.184018" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.183741" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:20.183718" elapsed="0.000432"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:09:20.184514" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:20.184225" elapsed="0.000368"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:20.184203" elapsed="0.000422"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:09:20.062178" elapsed="0.122557">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.202603" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:09:30.202154" elapsed="0.000480"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.203308" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:09:30.202979" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:09:30.203383" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:09:30.203549" level="INFO">${index_list} = [1, 2, 3]</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-19T02:09:30.201703" elapsed="0.001871"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.205253" 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-19T02:09:30.204934" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:30.205327" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:30.205473" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:30.204582" elapsed="0.000916"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.213250" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.212925" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.213696" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.213453" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:30.221787" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:30.221864" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:30 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:30 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564570,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:30.222016" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:30.215961" elapsed="0.006165"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.213805" elapsed="0.008368"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.222356" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.222200" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.213787" elapsed="0.008656"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.227915" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564570,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.224107" elapsed="0.003961"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.223741" elapsed="0.004480"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.223715" elapsed="0.004545"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.232101" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.228687" elapsed="0.003507"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.228340" elapsed="0.003961"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.228317" elapsed="0.004012"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.233062" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.232509" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.233422" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.233161" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.234449" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:30.233795" elapsed="0.000738"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.233628" elapsed="0.001061"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.233143" elapsed="0.001572"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.235467" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.234904" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.235831" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.235567" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.236815" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:30.236225" elapsed="0.000674"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.236056" elapsed="0.001016"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.235549" elapsed="0.001548"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:30.237255" elapsed="0.000681"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:30.238992" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.238178" elapsed="0.000843"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:30.239229" elapsed="0.003120"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:30.223149" elapsed="0.019267"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.242595" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:30.242485" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.242466" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:30.245530" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564570,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:30.242807" elapsed="0.002752"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:30.245610" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:09:30.245767" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564570,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:30.208300" elapsed="0.037493"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:30.245887" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:30.246191" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564570,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:30.205707" elapsed="0.040513"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.247054" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564570,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.246787" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.248070" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564570, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.247653" elapsed="0.000447"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:30.248150" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:30.248310" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564570, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:30.247315" elapsed="0.001022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:30.248715" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:30.248491" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:30.249281" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:30.248894" elapsed="0.000413"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:30.249355" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:30.249505" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:30.246432" elapsed="0.003097"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.249704" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:30.249596" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.249579" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.257315" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.257056" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.257765" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.257518" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:30.265390" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:30.265464" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:30 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:30 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564570,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:30.265575" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:30.260031" elapsed="0.005571"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.257875" elapsed="0.007770"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.265823" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.265670" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.257856" elapsed="0.008086"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.269805" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564570,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.267174" elapsed="0.002728"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.266915" elapsed="0.003096"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.266896" elapsed="0.003228"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.274224" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.270437" elapsed="0.003914"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.270190" elapsed="0.004308"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.270172" elapsed="0.004368"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.275521" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.274772" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.276012" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.275657" elapsed="0.000617"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.277356" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:30.276542" elapsed="0.000926"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.276311" elapsed="0.001358"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.275632" elapsed="0.002071"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.278743" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.277933" elapsed="0.000838"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.279112" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.278841" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.280049" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:30.279476" elapsed="0.000655"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:30.279313" elapsed="0.000962"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.278823" elapsed="0.001476"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:30.280451" elapsed="0.000667"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:30.282091" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.281284" elapsed="0.000849"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:30.282290" elapsed="0.003105"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:30.266486" elapsed="0.018973"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.285635" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:30.285529" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.285510" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:30.288809" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:30.285847" elapsed="0.002992"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:30.288893" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:09:30.289067" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:30.252539" elapsed="0.036556"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:30.289152" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:09:30.289350" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:30.249969" elapsed="0.039443"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.290410" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564570,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.289987" elapsed="0.000474"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.291456" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564570, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:30.291047" elapsed="0.000438"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:30.291535" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:09:30.291699" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564570, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:30.290682" elapsed="0.001045"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:30.292128" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:30.291884" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:30.292530" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:30.292313" elapsed="0.000244"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:30.292604" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:30.292756" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:30.289627" elapsed="0.003155"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:09:30.292826" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:09:30.292973" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:09:30.204204" elapsed="0.088795"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:09:30.293194" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:09:30.293085" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:30.293068" elapsed="0.000210"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.293428" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:09:30.203956" elapsed="0.089528"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.295012" level="INFO">${session} = ClusterManagement__session_2</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-19T02:09:30.294694" elapsed="0.000361"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:30.295104" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:30.295256" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:30.294339" elapsed="0.000943"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.303068" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.302798" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:30.303603" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:30.303272" elapsed="0.000379"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:30.314427" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:30.314498" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:09:30.314656" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:09:30.305982" elapsed="0.009069">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:30.303721" elapsed="0.011415">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.315323" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.315169" elapsed="0.000219"/>
</branch>
<status status="FAIL" start="2026-04-19T02:09:30.303700" elapsed="0.011712">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.315934" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.316118" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:30.316078" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:30.316015" elapsed="0.000167"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.316325" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.316395" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:09:30.298229" elapsed="0.018272">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.316578" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:09:30.295495" elapsed="0.021180">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.316892" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.317019" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:30.316983" elapsed="0.000095"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:30.316966" elapsed="0.000134"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.317297" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.317518" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:09:30.317584" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:09:30.293856" elapsed="0.023828">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:09:30.317797" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:09:30.317761" elapsed="0.000073"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:30.317745" elapsed="0.000110"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.317995" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:09:30.293626" elapsed="0.024457">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:09:30.203631" elapsed="0.114510">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:09:30.201283" elapsed="0.116977">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:30.200929" elapsed="0.117392">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:09:30.200905" elapsed="0.117479">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:09:30.318662" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.318456" elapsed="0.000261"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:30.318439" elapsed="0.000302"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:09:30.319003" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:30.318794" elapsed="0.000282"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:30.318779" elapsed="0.000321"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:09:30.200420" elapsed="0.118761">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.337569" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:09:40.337107" elapsed="0.000495"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.338110" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:09:40.337776" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:09:40.338186" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:09:40.338352" level="INFO">${index_list} = [1, 2, 3]</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-19T02:09:40.336686" elapsed="0.001691"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.339979" 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-19T02:09:40.339590" elapsed="0.000416"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:40.340072" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:09:40.340226" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:40.339243" elapsed="0.001008"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.347863" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.347603" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.348470" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.348081" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:40.361318" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:40.361427" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:40 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564580,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:40.361608" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:40.350781" elapsed="0.010872"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.348581" elapsed="0.013133"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.361963" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.361750" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.348562" elapsed="0.013549"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.367622" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564580,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.363835" elapsed="0.003923"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.363424" elapsed="0.004488"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.363398" elapsed="0.004552"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.372196" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.368392" elapsed="0.003934"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.368050" elapsed="0.004429"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.368007" elapsed="0.004511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.373536" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.372765" elapsed="0.000842"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.374130" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.373720" elapsed="0.000585"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.375088" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:40.374496" elapsed="0.000674"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.374331" elapsed="0.000990"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.373694" elapsed="0.001651"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.376026" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.375507" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.376397" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.376139" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.377351" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:40.376767" elapsed="0.000667"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.376603" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.376121" elapsed="0.001502"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:40.377787" elapsed="0.000703"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:40.379487" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.378658" elapsed="0.000855"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:40.379672" elapsed="0.003201"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:40.362811" elapsed="0.020126"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.383131" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:40.383007" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.382988" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:40.386199" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564580,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:40.383346" elapsed="0.002882"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:40.386281" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:09:40.386439" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564580,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:40.342987" elapsed="0.043478"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:40.386522" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:09:40.386669" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564580,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:40.340463" elapsed="0.046232"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.387558" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564580,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.387306" elapsed="0.000300"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.388576" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564580, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.388166" elapsed="0.000439"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:40.388654" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:40.388814" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564580, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:40.387815" elapsed="0.001025"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:40.389235" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:40.388996" elapsed="0.000266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:40.389654" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:40.389417" elapsed="0.000270"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:40.389735" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:09:40.389884" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:40.386940" elapsed="0.002968"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.390142" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:40.389976" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.389959" elapsed="0.000248"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.397660" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.397386" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.398144" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.397876" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:40.407128" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:40.407233" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:40 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:40 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564580,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:40.407402" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:40.401661" elapsed="0.005779"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.398255" elapsed="0.009245"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.407749" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.407537" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.398237" elapsed="0.009630"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.413291" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564580,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.409538" elapsed="0.003887"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.409199" elapsed="0.004451"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.409173" elapsed="0.004518"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.416866" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.414151" elapsed="0.002812"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.413773" elapsed="0.003313"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.413749" elapsed="0.003393"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.417866" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.417312" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.418374" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.417966" elapsed="0.000579"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.419335" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:40.418735" elapsed="0.000677"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.418571" elapsed="0.000983"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.417947" elapsed="0.001631"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.420264" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.419738" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.420616" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.420361" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.421545" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:40.420973" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:40.420812" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.420343" elapsed="0.001459"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:40.421954" elapsed="0.000682"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:40.423656" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.422819" elapsed="0.000865"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:40.423840" elapsed="0.003050"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:40.408575" elapsed="0.018383"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.427239" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:40.427123" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.427012" elapsed="0.000297"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:40.430195" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:40.427456" elapsed="0.002768"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:40.430277" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:09:40.430440" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:40.392882" elapsed="0.037586"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:40.430525" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:09:40.430674" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:40.390406" elapsed="0.040294"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.431668" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564580,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.431407" elapsed="0.000355"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.432744" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564580, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:40.432342" elapsed="0.000431"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:40.432824" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:40.432985" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564580, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:40.431973" elapsed="0.001038"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:40.433407" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:40.433183" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:40.433831" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:40.433613" elapsed="0.000244"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:40.433904" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:40.434070" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:40.430918" elapsed="0.003178"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:09:40.434144" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:09:40.434295" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:09:40.338847" elapsed="0.095473"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:09:40.434497" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:09:40.434389" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:40.434371" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.434752" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:09:40.338619" elapsed="0.096190"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.482167" level="INFO">${session} = ClusterManagement__session_2</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-19T02:09:40.481783" elapsed="0.000419"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:40.482263" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:09:40.482500" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:40.481257" elapsed="0.001269"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.490146" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.489869" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:40.490598" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:40.490351" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:40.503100" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:40.503205" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:09:40.503400" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:09:40.492875" elapsed="0.011038">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:40.490714" elapsed="0.013413">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.504405" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.504185" elapsed="0.000312"/>
</branch>
<status status="FAIL" start="2026-04-19T02:09:40.490694" elapsed="0.013835">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.505291" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.505484" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:40.505432" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:40.505407" elapsed="0.000167"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.505805" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.505917" elapsed="0.000025"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:09:40.485346" elapsed="0.020782">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.506231" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:09:40.482750" elapsed="0.023620">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.506677" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.506856" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:40.506805" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:40.506782" elapsed="0.000161"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.507244" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.507551" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:09:40.507646" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:09:40.435235" elapsed="0.072553">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:09:40.507950" elapsed="0.000021"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:09:40.507897" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:40.507874" elapsed="0.000187"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.508264" elapsed="0.000030"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:09:40.434951" elapsed="0.073413">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:09:40.338436" elapsed="0.170011">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:09:40.336269" elapsed="0.172315">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:40.335913" elapsed="0.172752">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:09:40.335888" elapsed="0.172829">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:09:40.509327" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.508808" elapsed="0.000603"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:40.508786" elapsed="0.000659"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:09:40.509887" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:40.509570" elapsed="0.000400"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:40.509546" elapsed="0.000458"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:09:40.335386" elapsed="0.174753">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.530486" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:09:50.529903" elapsed="0.000616"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.531012" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:09:50.530693" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:09:50.531107" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:09:50.531279" level="INFO">${index_list} = [1, 2, 3]</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-19T02:09:50.529336" elapsed="0.001969"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.532862" 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-19T02:09:50.532558" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:50.532937" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:50.533103" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:50.532203" elapsed="0.000926"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.541117" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.540838" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.541568" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.541322" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:50.549736" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:50.549830" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:50 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:50 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564590,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:50.549949" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:50.543846" elapsed="0.006130"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.541679" elapsed="0.008376"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.550239" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.550084" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.541660" elapsed="0.008665"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.554291" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564590,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.551539" elapsed="0.002886"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.551290" elapsed="0.003370"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.551271" elapsed="0.003432"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.559012" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.555176" elapsed="0.003985"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.554786" elapsed="0.004523"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.554762" elapsed="0.004585"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.560360" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.559594" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.560886" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.560502" elapsed="0.000695"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.562311" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:50.561469" elapsed="0.000953"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.561235" elapsed="0.001393"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.560475" elapsed="0.002188"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.563644" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.562894" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.564166" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.563784" elapsed="0.000625"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.565477" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:50.564674" elapsed="0.000911"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.564445" elapsed="0.001386"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.563758" elapsed="0.002107"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:50.566137" elapsed="0.000698"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:50.567824" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.567003" elapsed="0.000849"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:50.568011" elapsed="0.003344"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:50.550828" elapsed="0.020595"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.571606" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:50.571495" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.571476" elapsed="0.000198"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:50.574679" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564590,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:50.571830" elapsed="0.002879"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:50.574762" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:09:50.574923" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564590,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:50.536277" elapsed="0.038674"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:50.575008" elapsed="0.000077"/>
</return>
<msg time="2026-04-19T02:09:50.575221" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564590,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:50.533348" elapsed="0.041900"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.576122" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564590,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.575817" elapsed="0.000393"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.577222" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564590, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.576770" elapsed="0.000485"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:50.577307" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:09:50.577469" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564590, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:50.576427" elapsed="0.001069"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:50.577903" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:50.577679" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:50.578335" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:50.578122" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:50.578409" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:09:50.578557" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:50.575461" elapsed="0.003120"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.578757" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:50.578649" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.578631" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.586489" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.586237" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.586936" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.586692" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:50.594770" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:50.594851" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:09:50 GMT', 'Expires': 'Sun, 19 Apr 2026 01:09:50 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564590,"status":200} 
 </msg>
<msg time="2026-04-19T02:09:50.594967" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:09:50.589342" elapsed="0.005653"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.587064" elapsed="0.008006"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.595261" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.595098" elapsed="0.000228"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.587044" elapsed="0.008303"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.599305" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564590,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.596557" elapsed="0.002849"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.596301" elapsed="0.003215"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.596282" elapsed="0.003263"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.602934" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.599860" elapsed="0.003249"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.599610" elapsed="0.003672"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.599588" elapsed="0.003825"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.604479" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.603683" elapsed="0.000835"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.604999" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.604621" elapsed="0.000670"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.606422" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:50.605566" elapsed="0.000971"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.605331" elapsed="0.001429"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.604594" elapsed="0.002202"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.607859" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.607104" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.608391" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.607999" elapsed="0.000697"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.609863" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:09:50.608978" elapsed="0.000999"/>
</kw>
<status status="PASS" start="2026-04-19T02:09:50.608736" elapsed="0.001477"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.607974" elapsed="0.002275"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:09:50.610471" elapsed="0.001062"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:09:50.613015" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.611800" elapsed="0.001274"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:09:50.613337" elapsed="0.003632"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:09:50.595854" elapsed="0.021210"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.617276" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:50.617159" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.617136" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:09:50.620399" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:09:50.617511" elapsed="0.002918"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:09:50.620482" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:09:50.620650" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:09:50.581621" elapsed="0.039056"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:09:50.620736" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:09:50.620887" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:09:50.579023" elapsed="0.041890"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.621816" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564590,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.621545" elapsed="0.000320"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.622870" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564590, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:09:50.622458" elapsed="0.000485"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:09:50.623003" elapsed="0.000122"/>
</return>
<msg time="2026-04-19T02:09:50.623270" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564590, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:09:50.622107" elapsed="0.001190"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:50.623686" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:50.623454" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:09:50.624112" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:09:50.623870" elapsed="0.000269"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:09:50.624188" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:09:50.624340" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:09:50.621175" elapsed="0.003190"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:09:50.624408" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:09:50.624557" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:09:50.531801" elapsed="0.092782"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:09:50.624764" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:09:50.624652" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:09:50.624635" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.625001" elapsed="0.000064"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:09:50.531551" elapsed="0.093552"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.626794" level="INFO">${session} = ClusterManagement__session_2</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-19T02:09:50.626483" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:09:50.626872" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:09:50.627082" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:09:50.626124" elapsed="0.000992"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.634763" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.634468" elapsed="0.000343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:09:50.635265" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:09:50.634969" elapsed="0.000342"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:09:50.648399" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:09:50.648509" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:09:50.648693" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:09:50.637592" elapsed="0.011674">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:50.635380" elapsed="0.014018">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.649666" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.649446" elapsed="0.000360"/>
</branch>
<status status="FAIL" start="2026-04-19T02:09:50.635361" elapsed="0.014481">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.650623" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.650817" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:50.650765" elapsed="0.000110"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:50.650740" elapsed="0.000165"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.651134" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.651234" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:09:50.629909" elapsed="0.021493">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.651505" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:09:50.627339" elapsed="0.024304">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.651949" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.652154" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:09:50.652102" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:50.652077" elapsed="0.000163"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.652561" elapsed="0.000039"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.652905" elapsed="0.000035"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:09:50.653003" elapsed="0.000049"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:09:50.625704" elapsed="0.027478">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:09:50.653351" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:09:50.653298" elapsed="0.000145"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:50.653273" elapsed="0.000203"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.653684" elapsed="0.000031"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:09:50.625468" elapsed="0.028320">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:09:50.531363" elapsed="0.122508">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:09:50.528722" elapsed="0.125287">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:09:50.528254" elapsed="0.125865">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:09:50.528221" elapsed="0.125944">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:09:50.654583" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.654262" elapsed="0.000404"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:50.654238" elapsed="0.000462"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:09:50.655095" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:09:50.654776" elapsed="0.000400"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:09:50.654754" elapsed="0.000501"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:09:50.527529" elapsed="0.127846">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.675087" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:10:00.674225" elapsed="0.000909"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.676051" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:10:00.675389" elapsed="0.000701"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:10:00.676161" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T02:10:00.676398" level="INFO">${index_list} = [1, 2, 3]</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-19T02:10:00.673588" elapsed="0.002845"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.678633" 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-19T02:10:00.678204" elapsed="0.000466"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:00.678735" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:10:00.678941" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:00.677690" elapsed="0.001287"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.690175" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.689729" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.690831" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.690484" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:00.701207" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:00.701318" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:00 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:00 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564600,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:00.701487" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:00.694179" elapsed="0.007345"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.690993" elapsed="0.010601"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.701868" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.701637" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.690963" elapsed="0.011029"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.707889" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564600,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.703847" elapsed="0.004207"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.703463" elapsed="0.004740"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.703435" elapsed="0.004809"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.712579" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.708714" elapsed="0.004000"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.708329" elapsed="0.004651"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.708304" elapsed="0.004720"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.714109" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.713320" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.714646" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.714257" elapsed="0.000638"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.716105" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:00.715211" elapsed="0.001010"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.714938" elapsed="0.001512"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.714229" elapsed="0.002259"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.717543" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.716742" elapsed="0.000845"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.718097" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.717691" elapsed="0.000696"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.719466" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:00.718675" elapsed="0.000901"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.718427" elapsed="0.001345"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.717663" elapsed="0.002144"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:00.720071" elapsed="0.001006"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:00.722439" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.721314" elapsed="0.001165"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:00.722703" elapsed="0.004743"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:00.702826" elapsed="0.024743"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.727841" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:00.727677" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.727649" elapsed="0.000287"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:00.732392" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564600,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:00.728268" elapsed="0.004167"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:00.732516" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T02:10:00.732759" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564600,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:00.683166" elapsed="0.049633"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:00.732889" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:10:00.733139" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564600,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:00.679308" elapsed="0.053868"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.734517" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564600,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.734124" elapsed="0.000462"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.736016" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564600, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.735408" elapsed="0.000792"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:00.736297" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:10:00.736523" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564600, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:00.734882" elapsed="0.001673"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:00.736951" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:00.736718" elapsed="0.000262"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:00.737368" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:00.737154" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:00.737441" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:00.737592" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:00.733566" elapsed="0.004051"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.737816" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:00.737687" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.737669" elapsed="0.000214"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.745454" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.745190" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.745903" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.745661" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:00.753728" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:00.753808" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:00 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:00 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564600,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:00.753924" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:00.748323" elapsed="0.005628"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.746014" elapsed="0.007980"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.754211" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.754022" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.745995" elapsed="0.008301"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.758201" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564600,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.755499" elapsed="0.002796"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.755252" elapsed="0.003148"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.755233" elapsed="0.003195"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.761416" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.758729" elapsed="0.002777"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.758485" elapsed="0.003126"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.758468" elapsed="0.003171"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.762394" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.761820" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.762810" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.762491" elapsed="0.000492"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.763764" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:00.763193" elapsed="0.000650"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.763010" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.762473" elapsed="0.001540"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.764738" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.764216" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.765112" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.764837" elapsed="0.000448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.766099" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:00.765475" elapsed="0.000706"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:00.765311" elapsed="0.001013"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.764819" elapsed="0.001530"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:00.766507" elapsed="0.000668"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:00.768158" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.767342" elapsed="0.000856"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:00.768398" elapsed="0.003032"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:00.754803" elapsed="0.016694"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.771679" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:00.771569" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.771549" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:00.774764" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:00.771894" elapsed="0.002901"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:00.774854" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:10:00.775047" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:00.740695" elapsed="0.034380"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:00.775134" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:10:00.775285" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:00.738108" elapsed="0.037204"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.776481" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564600,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.776192" elapsed="0.000339"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.777542" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564600, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:00.777116" elapsed="0.000456"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:00.777626" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:10:00.777945" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564600, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:00.776741" elapsed="0.001460"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:00.778600" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:00.778368" elapsed="0.000259"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:00.778992" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:00.778781" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:00.779082" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:00.779236" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:00.775575" elapsed="0.003686"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:10:00.779305" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:10:00.779455" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:10:00.677155" elapsed="0.102325"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:10:00.779680" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:10:00.779558" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:00.779538" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.779912" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:10:00.676800" elapsed="0.103169"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.781710" level="INFO">${session} = ClusterManagement__session_2</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-19T02:10:00.781394" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:00.781784" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:00.781935" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:00.781046" elapsed="0.000914"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.789649" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.789377" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:00.790115" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:00.789854" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:00.802187" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:00.802263" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:10:00.802402" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:10:00.792390" elapsed="0.010399">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:00.790232" elapsed="0.012641">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.803079" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.802907" elapsed="0.000237"/>
</branch>
<status status="FAIL" start="2026-04-19T02:10:00.790211" elapsed="0.012958">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.803698" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.803898" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:00.803859" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:00.803840" elapsed="0.000123"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.804138" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.804210" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:10:00.784862" elapsed="0.019457">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.804390" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:10:00.782242" elapsed="0.022244">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.804715" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.804845" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:00.804808" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:00.804791" elapsed="0.000118"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.805124" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.805349" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:10:00.805416" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:10:00.780642" elapsed="0.024876">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:10:00.805643" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:10:00.805605" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:00.805588" elapsed="0.000116"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.805849" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:10:00.780396" elapsed="0.025525">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:10:00.676530" elapsed="0.129453">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:10:00.672968" elapsed="0.133130">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:00.672381" elapsed="0.133779">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:10:00.672345" elapsed="0.133847">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:10:00.806464" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.806260" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:00.806243" elapsed="0.000298"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:10:00.806808" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:00.806596" elapsed="0.000269"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:00.806580" elapsed="0.000308"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:10:00.671592" elapsed="0.135377">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.826527" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:10:10.826068" elapsed="0.000491"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.827057" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:10:10.826730" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:10:10.827132" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:10:10.827299" level="INFO">${index_list} = [1, 2, 3]</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-19T02:10:10.825475" elapsed="0.001849"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.828838" 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-19T02:10:10.828540" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:10.828914" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:10.829096" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:10.828194" elapsed="0.000929"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.838053" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.837777" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.838512" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.838263" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:10.846271" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:10.846349" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:10 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:10 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564610,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:10.846472" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:10.840769" elapsed="0.005730"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.838625" elapsed="0.007918"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.846739" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.846569" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.838606" elapsed="0.008221"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.851149" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564610,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.848077" elapsed="0.003211"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.847815" elapsed="0.003624"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.847797" elapsed="0.003683"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.855944" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.851940" elapsed="0.004154"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.851562" elapsed="0.004688"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.851538" elapsed="0.004751"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.857331" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.856533" elapsed="0.000890"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.857977" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.857603" elapsed="0.000662"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.859392" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:10.858536" elapsed="0.000967"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.858304" elapsed="0.001402"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.857576" elapsed="0.002164"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.860851" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.859966" elapsed="0.000925"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.861407" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.860987" elapsed="0.000664"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.862572" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:10.861917" elapsed="0.000736"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.861688" elapsed="0.001114"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.860963" elapsed="0.001864"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:10.862981" elapsed="0.000698"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:10.864672" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.863846" elapsed="0.000855"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:10.864857" elapsed="0.003213"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:10.847387" elapsed="0.020751"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.868320" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:10.868210" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.868191" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:10.871365" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564610,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:10.868535" elapsed="0.002860"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:10.871449" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:10:10.871609" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564610,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:10.833271" elapsed="0.038365"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:10.871694" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:10:10.871843" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564610,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:10.829345" elapsed="0.042525"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.872701" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564610,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.872449" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.873738" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564610, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.873340" elapsed="0.000426"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:10.873817" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:10.873981" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564610, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:10.872958" elapsed="0.001112"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:10.874461" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:10.874234" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:10.874859" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:10.874646" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:10.874934" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:10:10.875134" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:10.872096" elapsed="0.003064"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.875337" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:10.875228" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.875212" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.882873" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.882622" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.883338" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.883092" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:10.889932" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:10.890015" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:10 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:10 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564610,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:10.890158" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:10.885748" elapsed="0.004438"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.883450" elapsed="0.006780"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.890412" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.890257" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.883432" elapsed="0.007066"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.894423" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564610,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.891699" elapsed="0.002819"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.891454" elapsed="0.003172"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.891435" elapsed="0.003219"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.897673" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.894959" elapsed="0.002804"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.894712" elapsed="0.003157"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.894695" elapsed="0.003201"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.898605" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.898087" elapsed="0.000546"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.898960" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.898703" elapsed="0.000482"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.899933" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:10.899376" elapsed="0.000636"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.899212" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.898685" elapsed="0.001547"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.900905" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.900395" elapsed="0.000542"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.901292" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.901019" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.902238" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:10.901652" elapsed="0.000665"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:10.901488" elapsed="0.000972"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.901000" elapsed="0.001484"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:10.902636" elapsed="0.000734"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:10.904322" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.903538" elapsed="0.000811"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:10.904504" elapsed="0.003084"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:10.891002" elapsed="0.016651"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.907832" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:10.907725" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.907705" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:10.910776" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:10.908063" elapsed="0.002742"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:10.910856" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:10:10.911019" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:10.878136" elapsed="0.033011"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:10.911207" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:10:10.911356" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:10.875605" elapsed="0.035777"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.912212" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564610,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.911941" elapsed="0.000320"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.913241" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564610, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:10.912823" elapsed="0.000447"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:10.913319" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:10.913477" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564610, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:10.912467" elapsed="0.001037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:10.913882" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:10.913660" elapsed="0.000281"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:10.914363" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:10.914144" elapsed="0.000245"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:10.914437" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:10.914593" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:10.911590" elapsed="0.003027"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:10:10.914661" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:10:10.914810" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:10:10.827800" elapsed="0.087034"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:10:10.915008" elapsed="0.000075"/>
</continue>
<status status="PASS" start="2026-04-19T02:10:10.914901" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:10.914883" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.915284" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:10:10.827568" elapsed="0.087771"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.916926" level="INFO">${session} = ClusterManagement__session_2</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-19T02:10:10.916625" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:10.917011" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:10:10.917177" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:10.916283" elapsed="0.000918"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.924650" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.924403" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:10.925117" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:10.924848" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:10.937279" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:10.937352" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:10:10.937483" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:10:10.927348" elapsed="0.010516">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:10.925227" elapsed="0.012722">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.938157" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.937982" elapsed="0.000249"/>
</branch>
<status status="FAIL" start="2026-04-19T02:10:10.925208" elapsed="0.013045">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.938758" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.938893" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:10.938856" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:10.938839" elapsed="0.000156"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.939157" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.939229" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:10:10.919917" elapsed="0.019421">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.939409" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:10:10.917415" elapsed="0.022093">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.939723" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.939851" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:10.939815" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:10.939798" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.940124" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.940346" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:10:10.940413" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:10:10.915887" elapsed="0.024627">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:10:10.940628" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:10:10.940592" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:10.940575" elapsed="0.000112"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.940827" elapsed="0.000020"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:10:10.915476" elapsed="0.025420">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:10:10.827382" elapsed="0.113595">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:10:10.824846" elapsed="0.116245">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:10.824386" elapsed="0.116765">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:10:10.824354" elapsed="0.116827">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:10:10.941444" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.941247" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:10.941230" elapsed="0.000290"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:10:10.941777" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:10.941572" elapsed="0.000260"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:10.941556" elapsed="0.000299"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:10:10.823693" elapsed="0.118253">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.959827" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:10:20.959378" elapsed="0.000568"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.960461" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:10:20.960140" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:10:20.960538" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:10:20.960703" level="INFO">${index_list} = [1, 2, 3]</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-19T02:10:20.958934" elapsed="0.001793"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.962265" 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-19T02:10:20.961943" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:20.962339" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:10:20.962488" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:20.961595" elapsed="0.000918"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.970209" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:20.969927" elapsed="0.000331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.970661" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:20.970414" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:20.979263" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:20.979344" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:20 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:20 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564620,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:20.979458" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:20.972943" elapsed="0.006542"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:20.970773" elapsed="0.008756"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:20.979748" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:20.979556" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:20.970755" elapsed="0.009081"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.985133" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564620,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:20.981359" elapsed="0.003911"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:20.980997" elapsed="0.004425"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:20.980970" elapsed="0.004491"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.989391" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:20.985878" elapsed="0.003610"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:20.985541" elapsed="0.004059"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:20.985517" elapsed="0.004110"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.990370" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:20.989804" elapsed="0.000594"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:20.990732" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:20.990469" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.991703" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:20.991121" elapsed="0.000700"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:20.990938" elapsed="0.001052"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:20.990451" elapsed="0.001568"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.992731" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:20.992201" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:20.993106" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:20.992831" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:20.994090" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:20.993475" elapsed="0.000697"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:20.993310" elapsed="0.001010"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:20.992813" elapsed="0.001531"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:20.994500" elapsed="0.000686"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:20.996209" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:20.995356" elapsed="0.000881"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:20.996402" elapsed="0.003054"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:20.980407" elapsed="0.019114"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:20.999700" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:20.999591" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:20.999572" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:21.002742" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564620,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:20.999913" elapsed="0.002858"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:21.002825" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:10:21.002984" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564620,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:20.965298" elapsed="0.037713"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:21.003088" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:10:21.003239" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564620,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:20.962726" elapsed="0.040540"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.004102" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564620,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.003833" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.005155" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564620, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:21.004737" elapsed="0.000447"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:21.005235" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:21.005395" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564620, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:21.004388" elapsed="0.001034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:21.005804" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:21.005579" elapsed="0.000287"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:21.006489" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:21.006033" elapsed="0.000483"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:21.006566" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:21.006718" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:21.003478" elapsed="0.003265"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:21.006930" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:21.006821" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.006803" elapsed="0.000193"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.014538" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.014280" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.014985" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.014742" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:21.022085" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:21.022191" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:21 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:21 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564621,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:21.022350" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:21.017246" elapsed="0.005141"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:21.015115" elapsed="0.007332"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.022692" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:21.022482" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.015097" elapsed="0.007714"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.028280" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564621,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.024487" elapsed="0.003927"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:21.024149" elapsed="0.004413"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.024123" elapsed="0.004477"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.031847" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.029079" elapsed="0.002858"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:21.028680" elapsed="0.003368"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.028656" elapsed="0.003433"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.032936" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:21.032256" elapsed="0.000707"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.033319" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:21.033039" elapsed="0.000453"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.034270" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:21.033680" elapsed="0.000669"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:21.033518" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.033020" elapsed="0.001501"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.035224" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:21.034680" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.035627" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:21.035357" elapsed="0.000477"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.036606" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:21.036033" elapsed="0.000650"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:21.035862" elapsed="0.000964"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.035337" elapsed="0.001513"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:21.037032" elapsed="0.000666"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:21.038653" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:21.037865" elapsed="0.000815"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:21.038834" elapsed="0.003170"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:21.023538" elapsed="0.018548"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:21.042268" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:21.042157" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.042138" elapsed="0.000198"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:21.045271" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:21.042481" elapsed="0.002820"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:21.045353" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:10:21.045512" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:21.009734" elapsed="0.035813"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:21.045603" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:10:21.045749" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:21.007219" elapsed="0.038556"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.046601" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564621,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.046350" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.047700" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564621, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:21.047306" elapsed="0.000422"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:21.047776" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:21.047934" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564621, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:21.046855" elapsed="0.001105"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:21.048353" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:21.048130" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:21.048740" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:21.048533" elapsed="0.000232"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:21.048846" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:21.048997" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:21.045982" elapsed="0.003040"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:10:21.049083" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:10:21.049229" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:10:20.961218" elapsed="0.088049"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:10:21.049448" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:10:21.049336" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:21.049319" elapsed="0.000211"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.049678" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:10:20.960970" elapsed="0.088765"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.051195" level="INFO">${session} = ClusterManagement__session_2</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-19T02:10:21.050838" elapsed="0.000384"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:21.051268" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:21.051416" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:21.050496" elapsed="0.000945"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.059167" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.058901" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:21.059611" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:21.059368" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:21.070711" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:21.070788" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:10:21.070947" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:10:21.061885" elapsed="0.009976">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:21.059722" elapsed="0.012360">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.072510" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:21.072162" elapsed="0.000495"/>
</branch>
<status status="FAIL" start="2026-04-19T02:10:21.059703" elapsed="0.013007">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.073935" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:21.074273" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:21.074189" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:21.074149" elapsed="0.000265"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.074733" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:10:21.074962" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:10:21.054377" elapsed="0.020866">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:21.075407" elapsed="0.000034"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:10:21.051651" elapsed="0.023977">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.076178" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:21.076468" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:21.076388" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:21.076350" elapsed="0.000260"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.077082" elapsed="0.000057"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.077589" elapsed="0.000053"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:10:21.077739" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:10:21.050117" elapsed="0.027873">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:10:21.078291" elapsed="0.000031"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:10:21.078210" elapsed="0.000165"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:21.078171" elapsed="0.000252"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.078735" elapsed="0.000047"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:10:21.049875" elapsed="0.029015">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:10:20.960784" elapsed="0.118234">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:10:20.958518" elapsed="0.120758">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:20.958176" elapsed="0.121232">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:10:20.958151" elapsed="0.121325">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:10:21.080101" elapsed="0.000109"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:21.079624" elapsed="0.000661"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:21.079587" elapsed="0.000751"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:10:21.080931" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:21.080461" elapsed="0.000649"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:21.080425" elapsed="0.000742"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:10:20.957656" elapsed="0.123693">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.099752" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:10:31.099275" elapsed="0.000509"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.100286" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:10:31.099954" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:10:31.100437" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:10:31.100612" level="INFO">${index_list} = [1, 2, 3]</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-19T02:10:31.098854" elapsed="0.001783"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.102182" 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-19T02:10:31.101859" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:31.102256" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:31.102404" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:31.101513" elapsed="0.000915"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.110054" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.109780" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.110501" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.110257" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:31.118112" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:31.118190" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:31 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564631,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:31.118302" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:31.112739" elapsed="0.005589"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.110610" elapsed="0.007761"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.118554" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.118397" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.110591" elapsed="0.008054"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.122538" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564631,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.119841" elapsed="0.002793"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.119583" elapsed="0.003158"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.119564" elapsed="0.003205"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.126286" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.123085" elapsed="0.003328"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.122826" elapsed="0.003738"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.122810" elapsed="0.003793"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.127621" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.126851" elapsed="0.000813"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.128167" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.127783" elapsed="0.000625"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.129498" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:31.128675" elapsed="0.000933"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.128444" elapsed="0.001373"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.127754" elapsed="0.002097"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.130886" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.130122" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.131404" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.131022" elapsed="0.000620"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.132787" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:31.131949" elapsed="0.000920"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.131679" elapsed="0.001344"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.130997" elapsed="0.002069"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:31.133234" elapsed="0.000687"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:31.134967" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.134150" elapsed="0.000847"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:31.135175" elapsed="0.003274"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:31.119162" elapsed="0.019351"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.138693" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:31.138583" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.138564" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:31.141673" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564631,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:31.138906" elapsed="0.002798"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:31.141760" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:10:31.141925" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564631,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:31.105169" elapsed="0.036783"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:31.142009" elapsed="0.000075"/>
</return>
<msg time="2026-04-19T02:10:31.142211" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564631,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:31.102639" elapsed="0.039598"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.143164" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564631,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.142816" elapsed="0.000411"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.144448" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564631, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.143918" elapsed="0.000559"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:31.144528" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:31.144692" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564631, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:31.143468" elapsed="0.001251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:31.145125" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:31.144876" elapsed="0.000276"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:31.145529" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:31.145316" elapsed="0.000280"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:31.145647" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:31.145810" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:31.142460" elapsed="0.003383"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.146122" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:31.145921" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.145902" elapsed="0.000294"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.153681" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.153431" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.154141" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.153882" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:31.163325" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:31.163404" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:31 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564631,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:31.163528" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:31.157868" elapsed="0.005686"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.154250" elapsed="0.009348"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.163784" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.163627" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.154232" elapsed="0.009636"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.169103" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564631,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.165308" elapsed="0.003929"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.164932" elapsed="0.004451"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.164906" elapsed="0.004515"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.173399" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.169835" elapsed="0.003653"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.169502" elapsed="0.004091"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.169478" elapsed="0.004142"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.174332" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.173786" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.174699" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.174435" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.175694" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:31.175123" elapsed="0.000649"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.174901" elapsed="0.001014"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.174417" elapsed="0.001522"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.176670" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.176133" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.177027" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.176769" elapsed="0.000526"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.178074" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:31.177488" elapsed="0.000669"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:31.177322" elapsed="0.000980"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.176751" elapsed="0.001575"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:31.178485" elapsed="0.000827"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:31.180502" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.179477" elapsed="0.001052"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:31.180685" elapsed="0.003202"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:31.164423" elapsed="0.019544"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.184199" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:31.184059" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.184022" elapsed="0.000252"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:31.187370" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:31.184431" elapsed="0.002973"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:31.187469" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:10:31.187666" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:31.148936" elapsed="0.038765"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:31.187767" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:10:31.187934" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:31.146404" elapsed="0.041561"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.189028" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564631,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.188734" elapsed="0.000495"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.190372" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564631, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:31.189867" elapsed="0.000536"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:31.190459" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:10:31.190643" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564631, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:31.189471" elapsed="0.001201"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:31.191144" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:31.190858" elapsed="0.000316"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:31.191599" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:31.191356" elapsed="0.000270"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:31.191687" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:10:31.191858" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:31.188301" elapsed="0.003585"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:10:31.191977" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:10:31.192211" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:10:31.101131" elapsed="0.091109"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:10:31.192443" elapsed="0.000034"/>
</continue>
<status status="PASS" start="2026-04-19T02:10:31.192318" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:31.192298" elapsed="0.000240"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.192723" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:10:31.100882" elapsed="0.091902"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.194793" level="INFO">${session} = ClusterManagement__session_2</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-19T02:10:31.194494" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:31.194866" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:31.195015" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:31.194128" elapsed="0.000937"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.202534" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.202286" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:31.202981" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:31.202740" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:31.214200" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:31.214304" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:10:31.214481" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:10:31.205262" elapsed="0.009727">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:31.203108" elapsed="0.012065">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.215435" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.215221" elapsed="0.000304"/>
</branch>
<status status="FAIL" start="2026-04-19T02:10:31.203089" elapsed="0.012469">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.216383" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.216575" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:31.216523" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:31.216497" elapsed="0.000165"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.216859" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.216954" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:10:31.197823" elapsed="0.019304">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.217286" elapsed="0.000023"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:10:31.195279" elapsed="0.022148">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.217735" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.217914" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:31.217864" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:31.217840" elapsed="0.000161"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.218302" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.218617" elapsed="0.000035"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:10:31.218713" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:10:31.193314" elapsed="0.025541">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:10:31.219016" elapsed="0.000050"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:10:31.218965" elapsed="0.000137"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:31.218942" elapsed="0.000190"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.219334" elapsed="0.000029"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:10:31.192965" elapsed="0.026468">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:10:31.100695" elapsed="0.118819">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:10:31.098438" elapsed="0.121233">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:31.098094" elapsed="0.121678">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:10:31.098066" elapsed="0.121758">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:10:31.220227" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.219923" elapsed="0.000379"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:31.219900" elapsed="0.000468"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:10:31.220734" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:31.220444" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:31.220422" elapsed="0.000423"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:10:31.097553" elapsed="0.123403">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.240041" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:10:41.239532" elapsed="0.000544"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.240763" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:10:41.240451" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:10:41.240838" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:10:41.241006" level="INFO">${index_list} = [1, 2, 3]</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-19T02:10:41.239124" elapsed="0.001995"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.242832" 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-19T02:10:41.242531" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:41.242924" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:10:41.243097" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:41.242187" elapsed="0.000935"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.250848" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.250582" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.251353" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.251101" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:41.259567" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:41.259649" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:41 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:41 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564641,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:41.259764" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:41.253638" elapsed="0.006154"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.251465" elapsed="0.008370"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.260095" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.259862" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.251446" elapsed="0.008747"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.265384" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564641,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.261588" elapsed="0.003928"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.261247" elapsed="0.004419"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.261221" elapsed="0.004495"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.269823" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.266252" elapsed="0.003664"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.265803" elapsed="0.004219"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.265779" elapsed="0.004287"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.270793" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.270247" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.271167" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.270891" elapsed="0.000450"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.272151" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:41.271534" elapsed="0.000697"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.271368" elapsed="0.001010"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.270872" elapsed="0.001530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.273123" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.272563" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.273517" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.273258" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.274455" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:41.273877" elapsed="0.000656"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.273714" elapsed="0.000964"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.273238" elapsed="0.001463"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:41.274855" elapsed="0.000681"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:41.276552" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.275703" elapsed="0.000877"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:41.276737" elapsed="0.003050"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:41.260697" elapsed="0.019154"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.280069" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:41.279921" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.279901" elapsed="0.000237"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:41.283123" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564641,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:41.280282" elapsed="0.002870"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:41.283205" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:10:41.283362" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564641,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:41.245905" elapsed="0.037484"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:41.283445" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:10:41.283591" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564641,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:41.243335" elapsed="0.040282"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.284481" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564641,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.284230" elapsed="0.000300"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.285559" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564641, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.285156" elapsed="0.000431"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:41.285638" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:41.285796" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564641, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:41.284739" elapsed="0.001083"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:41.286220" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:41.285978" elapsed="0.000269"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:41.286775" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:41.286401" elapsed="0.000401"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:41.286851" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:41.287056" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:41.283825" elapsed="0.003257"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.287259" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:41.287151" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.287133" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.294825" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.294575" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.295287" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.295026" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:41.302602" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:41.302678" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:41 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:41 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564641,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:41.302791" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:41.297540" elapsed="0.005277"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.295398" elapsed="0.007463"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.303073" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.302888" elapsed="0.000250"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.295380" elapsed="0.007779"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.306987" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564641,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.304347" elapsed="0.002756"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.304099" elapsed="0.003111"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.304079" elapsed="0.003159"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.310237" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.307534" elapsed="0.002793"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.307295" elapsed="0.003138"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.307278" elapsed="0.003182"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.311157" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.310624" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.311509" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.311254" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.312484" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:41.311867" elapsed="0.000695"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.311705" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.311236" elapsed="0.001492"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.313425" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.312890" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.313778" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.313523" elapsed="0.000425"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.314707" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:41.314153" elapsed="0.000664"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:41.313974" elapsed="0.000990"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.313505" elapsed="0.001483"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:41.315156" elapsed="0.000653"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:41.316802" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.315979" elapsed="0.000850"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:41.316986" elapsed="0.003265"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:41.303650" elapsed="0.016666"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.320494" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:41.320386" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.320367" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:41.323410" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:41.320705" elapsed="0.002735"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:41.323492" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:10:41.323650" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:41.290085" elapsed="0.033592"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:41.323734" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:10:41.323882" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:41.287526" elapsed="0.036383"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.324857" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564641,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.324603" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.325863" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564641, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:41.325471" elapsed="0.000421"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:41.325941" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:41.326117" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564641, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:41.325132" elapsed="0.001013"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:41.326518" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:41.326298" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:41.326908" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:41.326698" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:41.326979" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:10:41.327145" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:41.324246" elapsed="0.002924"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:10:41.327213" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:10:41.327396" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:10:41.241792" elapsed="0.085629"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:10:41.327598" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:10:41.327489" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:41.327472" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.327828" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:10:41.241563" elapsed="0.086320"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.329354" level="INFO">${session} = ClusterManagement__session_2</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-19T02:10:41.329055" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:41.329425" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:41.329572" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:41.328701" elapsed="0.000896"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.337395" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.337129" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:41.337844" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:41.337600" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:41.350460" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:41.350533" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:10:41.350673" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:10:41.340120" elapsed="0.010994">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:41.337956" elapsed="0.013257">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.351402" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.351249" elapsed="0.000218"/>
</branch>
<status status="FAIL" start="2026-04-19T02:10:41.337937" elapsed="0.013554">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.352008" elapsed="0.000071"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.352273" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:41.352221" elapsed="0.000101"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:41.352138" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.352498" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.352569" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:10:41.332569" elapsed="0.020113">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.352803" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:10:41.329805" elapsed="0.023100">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.353144" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.353272" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:41.353236" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:41.353219" elapsed="0.000114"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.353529" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.353751" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:10:41.353818" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:10:41.328327" elapsed="0.025591">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:10:41.354044" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:10:41.353995" elapsed="0.000091"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:41.353978" elapsed="0.000129"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.354249" elapsed="0.000020"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:10:41.328021" elapsed="0.026297">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:10:41.241363" elapsed="0.113014">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:10:41.238681" elapsed="0.115793">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:41.238323" elapsed="0.116212">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:10:41.238299" elapsed="0.116269">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:10:41.354834" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.354634" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:41.354617" elapsed="0.000292"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:10:41.355191" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:41.354961" elapsed="0.000286"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:41.354946" elapsed="0.000324"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:10:41.237794" elapsed="0.117557">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.374222" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:10:51.373719" elapsed="0.000537"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.374741" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:10:51.374430" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:10:51.374817" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:10:51.374990" level="INFO">${index_list} = [1, 2, 3]</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-19T02:10:51.373302" elapsed="0.001713"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.376683" 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-19T02:10:51.376382" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:51.376757" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:51.376905" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:51.376002" elapsed="0.000928"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.384774" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.384513" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.385240" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.384977" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:51.393990" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:51.394088" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:51 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:51 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564651,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:51.394203" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:51.387514" elapsed="0.006715"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.385365" elapsed="0.008907"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.394451" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.394299" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.385346" elapsed="0.009190"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.398410" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564651,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.395715" elapsed="0.002792"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.395469" elapsed="0.003143"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.395450" elapsed="0.003190"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.402634" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.398941" elapsed="0.003820"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.398697" elapsed="0.004213"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.398681" elapsed="0.004267"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.404017" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.403238" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.404543" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.404179" elapsed="0.000607"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.405899" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:51.405106" elapsed="0.000903"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.404822" elapsed="0.001416"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.404154" elapsed="0.002117"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.407255" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.406495" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.407749" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.407392" elapsed="0.000596"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.409218" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:51.408276" elapsed="0.001060"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.408045" elapsed="0.001498"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.407367" elapsed="0.002211"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:51.409796" elapsed="0.000988"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:51.412252" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.411207" elapsed="0.001073"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:51.412439" elapsed="0.003031"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:51.395040" elapsed="0.020495"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.415715" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:51.415607" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.415588" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:51.418684" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564651,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:51.415928" elapsed="0.002786"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:51.418766" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:10:51.418926" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564651,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:51.379720" elapsed="0.039234"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:51.419024" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:10:51.419191" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564651,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:51.377160" elapsed="0.042058"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.420052" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564651,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.419781" elapsed="0.000323"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.421153" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564651, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.420657" elapsed="0.000527"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:51.421234" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:51.421394" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564651, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:51.420316" elapsed="0.001105"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:51.421954" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:51.421575" elapsed="0.000407"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:51.422370" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:51.422154" elapsed="0.000262"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:51.422465" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:51.422617" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:51.419429" elapsed="0.003213"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.422852" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:51.422710" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.422693" elapsed="0.000229"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.430426" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.430170" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.430865" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.430624" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:51.438927" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:51.439167" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:10:51 GMT', 'Expires': 'Sun, 19 Apr 2026 01:10:51 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564651,"status":200} 
 </msg>
<msg time="2026-04-19T02:10:51.439424" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:10:51.433118" elapsed="0.006366"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.430974" elapsed="0.008608"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.440057" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.439648" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.430956" elapsed="0.009301"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.448294" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564651,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.443176" elapsed="0.005250"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.442516" elapsed="0.006058"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.442473" elapsed="0.006140"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.452835" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.449048" elapsed="0.003912"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.448693" elapsed="0.004435"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.448669" elapsed="0.004498"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.454230" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.453395" elapsed="0.000873"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.454730" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.454372" elapsed="0.000595"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.456090" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:51.455253" elapsed="0.000948"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.455004" elapsed="0.001396"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.454341" elapsed="0.002092"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.457425" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.456656" elapsed="0.000808"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.457920" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.457563" elapsed="0.000623"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.459014" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:10:51.458458" elapsed="0.000651"/>
</kw>
<status status="PASS" start="2026-04-19T02:10:51.458223" elapsed="0.001030"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.457537" elapsed="0.001740"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:10:51.459429" elapsed="0.000672"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:10:51.461090" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.460303" elapsed="0.000814"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:10:51.461292" elapsed="0.003178"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:10:51.441406" elapsed="0.023129"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.464713" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:51.464606" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.464587" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:10:51.467646" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:10:51.464923" elapsed="0.002752"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:10:51.467728" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:10:51.467885" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:10:51.425646" elapsed="0.042265"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:10:51.467967" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:10:51.468231" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:10:51.423150" elapsed="0.045109"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.469252" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564651,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.468965" elapsed="0.000336"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.470254" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564651, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:10:51.469846" elapsed="0.000436"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:10:51.470331" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:10:51.470488" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564651, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:10:51.469507" elapsed="0.001007"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:51.470887" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:51.470667" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:10:51.471296" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:10:51.471084" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:10:51.471368" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:10:51.471516" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:10:51.468469" elapsed="0.003072"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:10:51.471583" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:10:51.471725" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:10:51.375602" elapsed="0.096147"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:10:51.471924" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:10:51.471817" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T02:10:51.471800" elapsed="0.000279"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.472231" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:10:51.375369" elapsed="0.096918"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.473723" level="INFO">${session} = ClusterManagement__session_2</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-19T02:10:51.473427" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:10:51.473795" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:10:51.473941" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:10:51.473079" elapsed="0.000887"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.481661" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.481411" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:10:51.482121" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:10:51.481862" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:10:51.494317" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:10:51.494417" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:10:51.494596" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:10:51.484351" elapsed="0.010799">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:51.482232" elapsed="0.013037">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.495525" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.495314" elapsed="0.000300"/>
</branch>
<status status="FAIL" start="2026-04-19T02:10:51.482214" elapsed="0.013432">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.496407" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.496595" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:51.496545" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:51.496521" elapsed="0.000159"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.496877" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.496972" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:10:51.476894" elapsed="0.020252">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.497245" elapsed="0.000021"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:10:51.474192" elapsed="0.023191">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.497736" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.497913" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:10:51.497865" elapsed="0.000104"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:51.497841" elapsed="0.000158"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.498296" elapsed="0.000038"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.498610" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:10:51.498703" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:10:51.472655" elapsed="0.026188">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:10:51.498999" elapsed="0.000020"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:10:51.498950" elapsed="0.000131"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:51.498927" elapsed="0.000184"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.499309" elapsed="0.000029"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:10:51.472430" elapsed="0.026975">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:10:51.375175" elapsed="0.124309">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:10:51.372780" elapsed="0.126838">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:10:51.372303" elapsed="0.127396">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:10:51.372270" elapsed="0.127471">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:10:51.500155" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.499832" elapsed="0.000401"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:51.499809" elapsed="0.000456"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:10:51.500628" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:10:51.500340" elapsed="0.000367"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:10:51.500318" elapsed="0.000420"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:10:51.371541" elapsed="0.129307">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.520944" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:11:01.520473" elapsed="0.000504"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.521497" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:11:01.521171" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:11:01.521575" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:11:01.521748" level="INFO">${index_list} = [1, 2, 3]</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-19T02:11:01.520056" elapsed="0.001718"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.523339" 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-19T02:11:01.523015" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:01.523492" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:11:01.523646" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:01.522663" elapsed="0.001010"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.532216" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.531888" elapsed="0.000382"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.532720" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.532442" elapsed="0.000325"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:01.541815" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:01.541941" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:11:01 GMT', 'Expires': 'Sun, 19 Apr 2026 01:11:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564661,"status":200} 
 </msg>
<msg time="2026-04-19T02:11:01.542191" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:11:01.535224" elapsed="0.007018"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.532843" elapsed="0.009476"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.542589" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.542359" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.532823" elapsed="0.009890"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.549887" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564661,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.545070" elapsed="0.005009"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.544552" elapsed="0.005698"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.544514" elapsed="0.005791"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.554784" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.550890" elapsed="0.003990"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.550423" elapsed="0.004571"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.550389" elapsed="0.004650"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.556071" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.555255" elapsed="0.000849"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.556450" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.556179" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.557452" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:01.556817" elapsed="0.000716"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.556650" elapsed="0.001061"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.556158" elapsed="0.001590"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.558656" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.557970" elapsed="0.000715"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.559121" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.558771" elapsed="0.000594"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.560387" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:01.559626" elapsed="0.000868"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.559403" elapsed="0.001350"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.558746" elapsed="0.002045"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:01.560994" elapsed="0.000718"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:11:01.562838" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.561883" elapsed="0.000985"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:11:01.563058" elapsed="0.003758"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:11:01.543786" elapsed="0.023107"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.567164" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:01.566989" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.566963" elapsed="0.000301"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:11:01.570940" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564661,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:11:01.567474" elapsed="0.003508"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:11:01.571078" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:11:01.571266" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564661,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:11:01.526829" elapsed="0.044475"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:11:01.571385" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:11:01.571603" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564661,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:11:01.523910" elapsed="0.047733"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.572670" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564661,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.572392" elapsed="0.000346"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.573948" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564661, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.573456" elapsed="0.000529"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:11:01.574337" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:11:01.574569" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564661, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:11:01.573056" elapsed="0.001548"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:01.575085" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:01.574772" elapsed="0.000343"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:01.575628" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:01.575304" elapsed="0.000362"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:11:01.575724" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:11:01.575882" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:11:01.571919" elapsed="0.003996"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.576313" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:01.576010" elapsed="0.000368"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.575985" elapsed="0.000417"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.585835" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.585487" elapsed="0.000397"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.586394" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.586087" elapsed="0.000361"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:01.595794" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:01.595881" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:11:01 GMT', 'Expires': 'Sun, 19 Apr 2026 01:11:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564661,"status":200} 
 </msg>
<msg time="2026-04-19T02:11:01.596010" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:11:01.589222" elapsed="0.006836"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.586541" elapsed="0.009566"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.596301" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.596137" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.586514" elapsed="0.009882"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.601177" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564661,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.597721" elapsed="0.003605"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.597441" elapsed="0.004050"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.597419" elapsed="0.004117"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.606114" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.602001" elapsed="0.004255"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.601627" elapsed="0.004792"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.601600" elapsed="0.004860"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.607713" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.606719" elapsed="0.001034"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.608353" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.607854" elapsed="0.000818"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.610008" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:01.608967" elapsed="0.001227"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.608714" elapsed="0.001716"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.607828" elapsed="0.002638"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.611807" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.610799" elapsed="0.001045"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.612248" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.611942" elapsed="0.000541"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.613505" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:01.612691" elapsed="0.000904"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:01.612514" elapsed="0.001246"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.611915" elapsed="0.001878"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:01.614009" elapsed="0.000844"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:11:01.616303" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.615186" elapsed="0.001155"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:11:01.616548" elapsed="0.003784"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:11:01.596960" elapsed="0.023442"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.620621" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:01.620487" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.620460" elapsed="0.000260"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:11:01.623998" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:11:01.620875" elapsed="0.003169"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:11:01.624101" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:11:01.624272" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:11:01.580043" elapsed="0.044257"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:11:01.624358" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:11:01.624532" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:11:01.576618" elapsed="0.047950"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.625499" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564661,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.625237" elapsed="0.000326"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.626669" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564661, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:01.626210" elapsed="0.000488"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:11:01.626748" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:11:01.626925" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564661, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:11:01.625810" elapsed="0.001151"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:01.627430" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:01.627196" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:01.627908" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:01.627654" elapsed="0.000282"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:11:01.627985" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:11:01.628159" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:11:01.624794" elapsed="0.003391"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:11:01.628245" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:11:01.628426" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:11:01.522277" elapsed="0.106174"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:11:01.628636" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T02:11:01.628524" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:01.628505" elapsed="0.000220"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.628912" elapsed="0.000027"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:01.522040" elapsed="0.107018"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.630657" level="INFO">${session} = ClusterManagement__session_2</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-19T02:11:01.630342" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:01.630756" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:11:01.630913" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:01.629895" elapsed="0.001043"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.639566" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.639251" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:01.640068" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:01.639800" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:01.652577" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:01.652660" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:11:01.652812" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:11:01.642715" elapsed="0.010567">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:11:01.640199" elapsed="0.013180">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.653593" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.653414" elapsed="0.000250"/>
</branch>
<status status="FAIL" start="2026-04-19T02:11:01.640173" elapsed="0.013516">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.654368" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.654519" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:01.654478" elapsed="0.000086"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:01.654459" elapsed="0.000129"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.654757" elapsed="0.000055"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.654867" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:11:01.634247" elapsed="0.020743">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.655087" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:11:01.631241" elapsed="0.023945">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.655409" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.655580" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:01.655544" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:01.655526" elapsed="0.000127"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.655950" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.656333" elapsed="0.000035"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:11:01.656432" elapsed="0.000028"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:11:01.629478" elapsed="0.027153">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:11:01.656865" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:11:01.656796" elapsed="0.000127"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:01.656759" elapsed="0.000194"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.657221" elapsed="0.000045"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:11:01.629230" elapsed="0.028141">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:11:01.521835" elapsed="0.135647">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:11:01.519576" elapsed="0.138050">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:11:01.519215" elapsed="0.138520">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:11:01.519189" elapsed="0.138594">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:11:01.658270" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.657878" elapsed="0.000489"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:01.657854" elapsed="0.000546"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:11:01.658890" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:01.658478" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:01.658455" elapsed="0.000605"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:11:01.518657" elapsed="0.140524">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.678020" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:11:11.677568" elapsed="0.000499"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.678556" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:11:11.678240" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:11:11.678630" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:11:11.678797" level="INFO">${index_list} = [1, 2, 3]</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-19T02:11:11.677159" elapsed="0.001663"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.680367" 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-19T02:11:11.680064" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:11.680455" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:11:11.680604" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:11.679693" elapsed="0.001007"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.688439" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.688159" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.688895" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.688646" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:11.697082" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:11.697160" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:11:11 GMT', 'Expires': 'Sun, 19 Apr 2026 01:11:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564671,"status":200} 
 </msg>
<msg time="2026-04-19T02:11:11.697274" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:11:11.691147" elapsed="0.006154"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.689005" elapsed="0.008340"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.697525" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.697372" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.688986" elapsed="0.008632"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.701764" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564671,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.698819" elapsed="0.003078"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.698576" elapsed="0.003494"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.698556" elapsed="0.003555"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.706344" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.702531" elapsed="0.003941"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.702192" elapsed="0.004426"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.702169" elapsed="0.004487"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.707691" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.706899" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.708356" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.707827" elapsed="0.000775"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.709828" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:11.708865" elapsed="0.001073"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.708639" elapsed="0.001532"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.707802" elapsed="0.002404"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.711161" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.710431" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.711656" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.711297" elapsed="0.000602"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.713072" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:11.712188" elapsed="0.000977"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.711936" elapsed="0.001375"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.711271" elapsed="0.002065"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:11.713492" elapsed="0.000678"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:11:11.715226" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.714379" elapsed="0.000880"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:11:11.715451" elapsed="0.003685"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:11:11.698150" elapsed="0.021071"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.719458" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:11.719311" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.719283" elapsed="0.000261"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:11:11.722880" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564671,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:11:11.719738" elapsed="0.003173"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:11:11.722965" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:11:11.723155" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564671,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:11:11.683489" elapsed="0.039694"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:11:11.723242" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:11:11.723395" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564671,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:11:11.680917" elapsed="0.042506"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.724422" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564671,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.724057" elapsed="0.000418"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.725545" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564671, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.725132" elapsed="0.000442"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:11:11.725624" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:11:11.725783" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564671, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:11:11.724689" elapsed="0.001120"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:11.726208" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:11.725965" elapsed="0.000270"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:11.726796" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:11.726389" elapsed="0.000471"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:11:11.726910" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:11:11.727119" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:11:11.723660" elapsed="0.003486"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.727328" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:11.727217" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.727198" elapsed="0.000195"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.734929" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.734645" elapsed="0.000333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.735551" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.735297" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:11.743215" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:11.743299" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:11:11 GMT', 'Expires': 'Sun, 19 Apr 2026 01:11:11 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564671,"status":200} 
 </msg>
<msg time="2026-04-19T02:11:11.743420" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:11:11.737799" elapsed="0.005649"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.735665" elapsed="0.007830"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.743689" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.743525" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.735647" elapsed="0.008130"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.750820" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564671,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.745592" elapsed="0.005547"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.745233" elapsed="0.006174"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.745206" elapsed="0.006278"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.758746" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.752377" elapsed="0.006577"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.751648" elapsed="0.007598"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.751600" elapsed="0.007709"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.761078" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.759734" elapsed="0.001382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.761456" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.761189" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.762419" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:11.761827" elapsed="0.000676"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.761657" elapsed="0.000994"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.761170" elapsed="0.001505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.763389" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.762838" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.763739" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.763486" elapsed="0.000422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.764694" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:11.764113" elapsed="0.000660"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:11.763934" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.763468" elapsed="0.001477"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:11.765130" elapsed="0.000663"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:11:11.766798" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.765961" elapsed="0.000864"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:11:11.766983" elapsed="0.003350"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:11:11.744649" elapsed="0.025758"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.770598" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:11.770482" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.770462" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:11:11.773685" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:11:11.770816" elapsed="0.002899"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:11:11.773768" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:11:11.773940" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:11:11.730172" elapsed="0.043795"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:11:11.774023" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:11:11.774194" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:11:11.727597" elapsed="0.046623"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.775222" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564671,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.774852" elapsed="0.000420"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.776252" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564671, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:11.775820" elapsed="0.000465"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:11:11.776335" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:11:11.776494" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564671, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:11:11.775482" elapsed="0.001039"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:11.776898" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:11.776676" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:11.777304" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:11.777094" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:11:11.777375" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:11:11.777522" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:11:11.774471" elapsed="0.003075"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:11:11.777588" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:11:11.777735" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:11:11.679313" elapsed="0.098446"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:11:11.777952" elapsed="0.000035"/>
</continue>
<status status="PASS" start="2026-04-19T02:11:11.777830" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:11.777813" elapsed="0.000249"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.778213" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:11.679082" elapsed="0.099187"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.779731" level="INFO">${session} = ClusterManagement__session_2</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-19T02:11:11.779433" elapsed="0.000357"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:11.779838" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:11:11.779990" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:11.779088" elapsed="0.000928"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.787678" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.787430" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:11.788212" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:11.787877" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:11.800620" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:11.800695" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:11:11.800839" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:11:11.790455" elapsed="0.010826">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:11:11.788325" elapsed="0.013043">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.801552" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.801400" elapsed="0.000217"/>
</branch>
<status status="FAIL" start="2026-04-19T02:11:11.788306" elapsed="0.013333">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.802183" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.802316" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:11.802279" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:11.802262" elapsed="0.000115"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.802519" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.802588" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:11:11.782945" elapsed="0.019750">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.802766" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:11:11.780261" elapsed="0.022601">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.803093" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.803218" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:11.803183" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:11.803166" elapsed="0.000147"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.803513" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.803769" elapsed="0.000027"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:11:11.803843" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:11:11.778660" elapsed="0.025286">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:11:11.804113" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:11:11.804045" elapsed="0.000111"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:11.804008" elapsed="0.000169"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.804322" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:11:11.778430" elapsed="0.025963">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:11:11.678880" elapsed="0.125572">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:11:11.676567" elapsed="0.127986">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:11:11.676071" elapsed="0.128542">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:11:11.676019" elapsed="0.128627">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:11:11.804922" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.804716" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:11.804699" elapsed="0.000309"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:11:11.805487" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:11.805119" elapsed="0.000454"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:11.805090" elapsed="0.000516"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:11:11.675375" elapsed="0.130350">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.825794" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:11:21.825284" elapsed="0.000542"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.826324" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:11:21.825997" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:11:21.826400" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:11:21.826565" level="INFO">${index_list} = [1, 2, 3]</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-19T02:11:21.824693" elapsed="0.001898"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.828105" 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-19T02:11:21.827790" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:21.828179" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:11:21.828327" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:21.827447" elapsed="0.000904"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.836214" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.835848" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.836689" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.836419" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:21.844399" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:21.844477" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:11:21 GMT', 'Expires': 'Sun, 19 Apr 2026 01:11:21 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564681,"status":200} 
 </msg>
<msg time="2026-04-19T02:11:21.844591" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:11:21.838926" elapsed="0.005708"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.836801" elapsed="0.007877"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.844859" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.844705" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.836782" elapsed="0.008162"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.848829" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564681,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.846160" elapsed="0.002765"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.845900" elapsed="0.003169"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.845881" elapsed="0.003218"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.853229" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.849450" elapsed="0.003906"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.849156" elapsed="0.004347"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.849139" elapsed="0.004402"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.854592" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.853781" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.855116" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.854733" elapsed="0.000630"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.856486" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:21.855661" elapsed="0.000957"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.855402" elapsed="0.001435"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.854708" elapsed="0.002163"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.857904" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.857184" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.858429" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.858064" elapsed="0.000607"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.859750" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:21.858935" elapsed="0.000928"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.858708" elapsed="0.001384"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.858017" elapsed="0.002109"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:21.860341" elapsed="0.001158"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:11:21.862478" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.861670" elapsed="0.000835"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:11:21.862706" elapsed="0.004532"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:11:21.845476" elapsed="0.021828"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.867490" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:21.867380" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.867359" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:11:21.870588" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564681,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:11:21.867755" elapsed="0.002863"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:11:21.870672" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:11:21.870831" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564681,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:11:21.831106" elapsed="0.039752"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:11:21.870917" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:11:21.871081" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564681,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:11:21.828563" elapsed="0.042545"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.871930" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564681,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.871674" elapsed="0.000306"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.872969" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564681, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.872554" elapsed="0.000445"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:11:21.873113" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:11:21.873277" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564681, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:11:21.872212" elapsed="0.001092"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:21.873691" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:21.873465" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:21.874104" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:21.873875" elapsed="0.000256"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:11:21.874179" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:11:21.874330" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:11:21.871320" elapsed="0.003035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.874532" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:21.874422" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.874405" elapsed="0.000193"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.882157" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.881869" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.882613" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.882370" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:21.890531" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:21.890636" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:11:21 GMT', 'Expires': 'Sun, 19 Apr 2026 01:11:21 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564681,"status":200} 
 </msg>
<msg time="2026-04-19T02:11:21.890793" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:11:21.885063" elapsed="0.005766"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.882726" elapsed="0.008163"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.891179" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.890925" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.882707" elapsed="0.008593"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.896721" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776564681,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.892941" elapsed="0.003914"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.892603" elapsed="0.004400"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.892576" elapsed="0.004487"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.901497" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.897488" elapsed="0.004106"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.897145" elapsed="0.004557"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.897121" elapsed="0.004609"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.902442" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.901897" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.902799" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.902541" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.903761" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:21.903196" elapsed="0.000646"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.902999" elapsed="0.000988"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.902523" elapsed="0.001489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.904716" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.904191" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.905094" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.904815" elapsed="0.000454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.906019" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:11:21.905464" elapsed="0.000650"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:21.905295" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.904797" elapsed="0.001485"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:21.906435" elapsed="0.000682"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:11:21.908059" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.907282" elapsed="0.000804"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:11:21.908242" elapsed="0.003072"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:11:21.891982" elapsed="0.019402"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.911611" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:21.911499" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.911475" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:11:21.914547" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:11:21.911826" elapsed="0.002750"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:11:21.914628" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:11:21.914785" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:11:21.877387" elapsed="0.037424"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:11:21.914868" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:11:21.915015" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:11:21.874800" elapsed="0.040360"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.915971" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776564681,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.915721" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.917019" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564681, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:11:21.916595" elapsed="0.000470"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:11:21.917115" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:11:21.917276" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776564681, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:11:21.916242" elapsed="0.001060"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:21.917676" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:21.917456" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:21.918083" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:11:21.917857" elapsed="0.000252"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:11:21.918156" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:11:21.918304" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:11:21.915371" elapsed="0.002958"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:11:21.918371" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:11:21.918513" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:11:21.827070" elapsed="0.091467"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:11:21.918708" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:11:21.918603" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.918586" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.918955" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:21.826829" elapsed="0.092182"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.920682" level="INFO">${session} = ClusterManagement__session_2</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-19T02:11:21.920370" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:21.920755" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:11:21.920905" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:21.919989" elapsed="0.000941"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.928539" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.928281" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.929010" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.928764" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:21.941654" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:11:21.941728" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:11:21.941868" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:11:21.931261" elapsed="0.011025">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:11:21.929138" elapsed="0.013233">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.942565" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.942404" elapsed="0.000226"/>
</branch>
<status status="FAIL" start="2026-04-19T02:11:21.929119" elapsed="0.013533">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.943189" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.943324" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:21.943287" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:21.943270" elapsed="0.000116"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.943528" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.943596" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:11:21.923703" elapsed="0.020000">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.943772" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:11:21.921195" elapsed="0.022673">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.944100" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.944226" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:21.944191" elapsed="0.000074"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:21.944174" elapsed="0.000113"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.944481" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.944733" elapsed="0.000063"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:11:21.944843" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:11:21.919606" elapsed="0.025338">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:11:21.945077" elapsed="0.000014"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:11:21.945023" elapsed="0.000092"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:21.945006" elapsed="0.000130"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.945279" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:11:21.919194" elapsed="0.026166">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:11:21.826647" elapsed="0.118858">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:11:21.824084" elapsed="0.121634">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:11:21.823605" elapsed="0.122241">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:11:21.823569" elapsed="0.122344">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:11:21.946533" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.946092" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:21.946022" elapsed="0.000683"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:11:21.947345" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.946825" elapsed="0.000647"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:21.946790" elapsed="0.000734"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:11:21.822855" elapsed="0.124847">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<msg time="2026-04-19T02:11:21.947926" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T02:05:15.507062" elapsed="366.441135">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.956702" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:11:21.955672" elapsed="0.001092"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.957621" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:11:21.957160" elapsed="0.000487"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:11:21.957692" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:11:21.957849" level="INFO">${index_list} = [1, 2, 3]</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-19T02:11:21.954732" elapsed="0.003142"/>
</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-19T02:11:21.958982" level="INFO">${member_ip} = 10.30.171.9</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-19T02:11:21.958717" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:21.959875" 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-19T02:11:21.960013" 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-19T02:11:21.959711" elapsed="0.000344"/>
</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-19T02:11:21.962840" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:21.962557" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:21.962533" elapsed="0.000388"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:21.963215" 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-19T02:11:21.963313" 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-19T02:11:21.963085" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.963954" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:21.963491" elapsed="0.000509"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:21.964613" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:21.964179" elapsed="0.000460"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:11:21.965723" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:11:21.965817" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:11:21.965342" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:21.966162" elapsed="0.000545"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:11:21.968277" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:11:22.555316" 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 Sun Apr 19 02:11:22 UTC 2026

  System load:  0.04               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:05:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:11:21.967618" elapsed="0.587883"/>
</kw>
<msg time="2026-04-19T02:11:22.555624" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:21.966882" elapsed="0.588881"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:11:21.964854" elapsed="0.591022"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:11:22.556439" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:11:22.569097" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:11:22.569344" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:11:22.569446" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:11:22.556152" elapsed="0.013345"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:22.569867" elapsed="0.000521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:22.571569" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:22.570837" elapsed="0.000832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:22.572208" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:22.571840" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:22.571790" 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-19T02:11:22.572759" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T02:11:22.572514" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:22.572474" elapsed="0.000475"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:22.573055" 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-19T02:11:22.580129" elapsed="0.000840"/>
</kw>
<kw name="Open 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-19T02:11:22.581214" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:22.581529" 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-19T02:11:22.573770" elapsed="0.008055"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:11:21.961889" elapsed="0.620029"/>
</kw>
<msg time="2026-04-19T02:11:22.581972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:21.961335" elapsed="0.620716"/>
</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-19T02:11:21.960754" elapsed="0.621380"/>
</kw>
<msg time="2026-04-19T02:11:22.582175" 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-19T02:11:21.960218" elapsed="0.622015"/>
</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-19T02:11:22.585276" 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-19T02:11:22.585761" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:22.586070" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:22.582567" elapsed="0.003653"/>
</kw>
<msg time="2026-04-19T02:11:22.586312" 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-19T02:11:21.959270" elapsed="0.627068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:22.586764" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:22.586518" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:11:22.586847" 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-19T02:11:21.958268" elapsed="0.628704"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:21.958075" elapsed="0.628934"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:22.588062" level="INFO">${member_ip} = 10.30.171.128</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-19T02:11:22.587753" elapsed="0.000337"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:22.588905" 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-19T02:11:22.589005" 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-19T02:11:22.588760" elapsed="0.000314"/>
</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-19T02:11:22.592062" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:22.591746" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:22.591727" elapsed="0.000417"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:22.592420" 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-19T02:11:22.592520" 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-19T02:11:22.592292" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:22.593186" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:22.592696" elapsed="0.000537"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:22.593845" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:22.593430" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:11:22.594957" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:11:22.595066" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:11:22.594568" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:22.595250" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:11:22.597153" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:11:23.158199" 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 Sun Apr 19 02:11:22 UTC 2026

  System load:  0.05               Processes:             119
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:05:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:11:22.596522" elapsed="0.561849"/>
</kw>
<msg time="2026-04-19T02:11:23.158484" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:22.595959" elapsed="0.562652"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:11:22.594105" elapsed="0.564612"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.159216" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:11:23.171765" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:11:23.171967" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:11:23.172086" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:11:23.158936" elapsed="0.013197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:23.172431" elapsed="0.000230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.173204" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:23.172876" elapsed="0.000375"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:23.173476" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:23.173333" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.173308" elapsed="0.000239"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:11:23.173706" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:11:23.173601" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.173586" elapsed="0.000204"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:23.173823" 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-19T02:11:23.177196" 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-19T02:11:23.177931" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:23.178297" 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-19T02:11:23.174169" elapsed="0.004329"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:11:22.591185" elapsed="0.587432"/>
</kw>
<msg time="2026-04-19T02:11:23.178687" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:22.590586" elapsed="0.588168"/>
</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-19T02:11:22.589999" elapsed="0.588832"/>
</kw>
<msg time="2026-04-19T02:11:23.178872" 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-19T02:11:22.589259" elapsed="0.589670"/>
</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-19T02:11:23.181996" 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-19T02:11:23.182492" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:23.182788" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:23.179296" elapsed="0.003641"/>
</kw>
<msg time="2026-04-19T02:11:23.183032" 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-19T02:11:22.588321" elapsed="0.594749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.183497" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:23.183248" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:11:23.183580" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:11:22.587311" elapsed="0.596392"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:11:22.587127" elapsed="0.596613"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:23.184744" level="INFO">${member_ip} = 10.30.171.206</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-19T02:11:23.184471" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.185615" 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-19T02:11:23.185714" 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-19T02:11:23.185478" elapsed="0.000262"/>
</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-19T02:11:23.188387" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:23.188102" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.188083" elapsed="0.000382"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.188738" 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-19T02:11:23.188836" 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-19T02:11:23.188611" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.189513" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:23.189009" elapsed="0.000550"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.190151" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:23.189713" elapsed="0.000463"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.191242" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:11:23.191336" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:11:23.190839" elapsed="0.000521"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:23.191517" elapsed="0.000721"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.193801" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:11:23.783792" 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 Sun Apr 19 02:11:23 UTC 2026

  System load:  0.12               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:05:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:11:23.192954" elapsed="0.591048"/>
</kw>
<msg time="2026-04-19T02:11:23.784245" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:23.192412" elapsed="0.591975"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:11:23.190388" elapsed="0.594113"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.785013" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:11:23.798480" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:11:23.798872" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:11:23.798982" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:11:23.784747" elapsed="0.014333"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:23.799608" elapsed="0.000599"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.801512" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:23.800663" elapsed="0.000958"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:23.802288" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:23.801813" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.801753" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:11:23.802840" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:11:23.802589" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.802555" elapsed="0.000524"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:23.803162" 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-19T02:11:23.808058" elapsed="0.000565"/>
</kw>
<kw name="Open 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-19T02:11:23.808792" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:23.809119" 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-19T02:11:23.803883" elapsed="0.005389"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:11:23.187538" elapsed="0.621827"/>
</kw>
<msg time="2026-04-19T02:11:23.809426" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:23.186968" elapsed="0.622528"/>
</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-19T02:11:23.186414" elapsed="0.623162"/>
</kw>
<msg time="2026-04-19T02:11:23.809616" 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-19T02:11:23.185894" elapsed="0.623780"/>
</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-19T02:11:23.812652" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:23.813139" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:23.813431" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:23.809965" elapsed="0.003611"/>
</kw>
<msg time="2026-04-19T02:11:23.813667" 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-19T02:11:23.184987" elapsed="0.628706"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.814132" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:23.813869" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:11:23.814255" 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-19T02:11:23.184015" elapsed="0.630370"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:11:23.183834" elapsed="0.630589"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:11:21.957926" elapsed="1.856533"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:11:21.948950" elapsed="1.865572"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T02:05:14.364618" elapsed="369.450068">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:23.814869" elapsed="0.000022"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T02:11:23.815142" elapsed="0.000025"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:23.815518" elapsed="0.000023"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:23.815744" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:23.816017" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:23.815834" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:23.815818" elapsed="0.000316"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T02:11:23.815338" elapsed="0.000820"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:11:23.815224" elapsed="0.000958"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:23.816338" elapsed="0.000020"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:05:14.359423" elapsed="369.457097">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T02:11:23.817142" elapsed="0.000306"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T01:58:03.462846" elapsed="800.354639"/>
</suite>
<suite id="s1-s12" name="Partition And Heal" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/partition_and_heal.robot">
<kw name="Setup_Keyword" 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-19T02:11:23.899591" 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-19T02:11:23.895588" elapsed="0.004051"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T02:11:23.895344" elapsed="0.004359"/>
</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-19T02:11:23.904564" 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-19T02:11:23.900796" elapsed="0.003796"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T02:11:23.904777" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:23.904671" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.904651" elapsed="0.000190"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.905367" 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-19T02:11:23.904991" elapsed="0.000418"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.905873" level="INFO">${cluster_size} = 3</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-19T02:11:23.905566" elapsed="0.000332"/>
</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-19T02:11:23.906409" elapsed="0.000276"/>
</kw>
<msg time="2026-04-19T02:11:23.906781" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:11:23.906827" level="INFO">${possibly_int_of_members} = 3</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-19T02:11:23.906076" elapsed="0.000774"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.907401" level="INFO">${int_of_members} = 3</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-19T02:11:23.907015" elapsed="0.000415"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.908465" 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-19T02:11:23.908200" elapsed="0.000292"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.908889" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:11:23.908637" elapsed="0.000278"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.909368" 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-19T02:11:23.909083" elapsed="0.000312"/>
</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-19T02:11:23.912395" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.913118" level="INFO">${member_ip} = 10.30.171.9</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-19T02:11:23.912773" 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-19T02:11:23.913294" elapsed="0.000229"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.914312" 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-19T02:11:23.913999" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:23.914383" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:11:23.914538" 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-19T02:11:23.913712" elapsed="0.000851"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:23.915319" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7571310&gt;, timeout=125, 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-19T02:11:23.914715" elapsed="0.000741"/>
</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-19T02:11:23.915616" elapsed="0.000209"/>
</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-19T02:11:23.911820" elapsed="0.004065"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:23.911609" elapsed="0.004320"/>
</iter>
<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-19T02:11:23.916786" elapsed="0.000187"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.917467" level="INFO">${member_ip} = 10.30.171.128</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-19T02:11:23.917143" elapsed="0.000351"/>
</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-19T02:11:23.917641" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.918640" level="INFO">${session} = ClusterManagement__session_2</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-19T02:11:23.918349" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:23.918711" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:11:23.918860" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T02:11:23.918060" elapsed="0.000824"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:23.919453" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7614350&gt;, timeout=125, 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-19T02:11:23.919036" elapsed="0.000519"/>
</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-19T02:11:23.919711" 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-19T02:11:23.916231" elapsed="0.003761"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:11:23.916016" elapsed="0.004020"/>
</iter>
<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-19T02:11:23.920861" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.921537" level="INFO">${member_ip} = 10.30.171.206</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-19T02:11:23.921216" elapsed="0.000379"/>
</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-19T02:11:23.921748" elapsed="0.000221"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.922753" level="INFO">${session} = ClusterManagement__session_3</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-19T02:11:23.922459" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:11:23.922824" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:11:23.922972" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T02:11:23.922173" elapsed="0.000824"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:11:23.923565" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f76152d0&gt;, timeout=125, 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-19T02:11:23.923163" elapsed="0.000504"/>
</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-19T02:11:23.923839" elapsed="0.000193"/>
</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-19T02:11:23.920314" elapsed="0.003797"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:11:23.920138" elapsed="0.004017"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T02:11:23.909447" elapsed="0.014737"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.924736" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T02:11:23.924339" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.925351" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T02:11:23.924935" elapsed="0.000458"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.925927" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T02:11:23.925548" elapsed="0.000421"/>
</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-19T02:11:23.907731" elapsed="0.018318"/>
</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-19T02:11:23.900461" elapsed="0.025648"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:11:23.926285" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:23.926173" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.926155" elapsed="0.000195"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.930911" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:11:23.930533" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.931413" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:11:23.931110" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:11:23.931483" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:11:23.931637" level="INFO">${index_list} = [1, 2, 3]</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-19T02:11:23.930207" elapsed="0.001454"/>
</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-19T02:11:23.932649" level="INFO">${member_ip} = 10.30.171.9</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-19T02:11:23.932386" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.933407" 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-19T02:11:23.933506" 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-19T02:11:23.933256" elapsed="0.000276"/>
</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-19T02:11:23.936874" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:23.936320" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:23.936300" elapsed="0.000694"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.937650" 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-19T02:11:23.937875" 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-19T02:11:23.937206" elapsed="0.000719"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.938852" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:23.938201" elapsed="0.000755"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.940367" 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-19T02:11:23.939275" elapsed="0.001144"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:11:23.942287" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:11:23.942460" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:11:23.941916" elapsed="0.000587"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:23.942835" elapsed="0.000508"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:11:23.944691" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:11:24.258618" 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 Sun Apr 19 02:11:22 UTC 2026

  System load:  0.04               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:11:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:11:23.944226" elapsed="0.314547"/>
</kw>
<msg time="2026-04-19T02:11:24.258862" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:23.943691" elapsed="0.315333"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:11:23.941009" elapsed="0.318220"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.260136" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:11:24.272990" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:11:24.273462" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:11:24.273701" 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-19T02:11:24.259618" elapsed="0.014198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:24.274630" elapsed="0.001547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.279161" 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-19T02:11:24.277768" elapsed="0.001639"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:24.280381" elapsed="0.000113"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:24.279781" elapsed="0.000883"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:24.279723" elapsed="0.001098"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:11:24.281505" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T02:11:24.281030" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:24.280989" elapsed="0.000707"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:24.281757" elapsed="0.000017"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:24.285185" elapsed="0.000547"/>
</kw>
<kw name="Open 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-19T02:11:24.286015" elapsed="0.000314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:24.286598" elapsed="0.000232"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:24.282267" elapsed="0.004635"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:11:23.935344" elapsed="0.351824"/>
</kw>
<msg time="2026-04-19T02:11:24.287228" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:23.934720" elapsed="0.352565"/>
</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-19T02:11:23.934236" elapsed="0.353135"/>
</kw>
<msg time="2026-04-19T02:11:24.287415" 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-19T02:11:23.933721" elapsed="0.353743"/>
</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-19T02:11:24.290246" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:11:24.290718" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:24.291008" elapsed="0.000171"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:24.287763" elapsed="0.003469"/>
</kw>
<msg time="2026-04-19T02:11:24.291325" 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-19T02:11:23.932885" elapsed="0.358465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.291769" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:24.291522" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:11:24.291853" 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-19T02:11:23.932019" elapsed="0.359959"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:23.931837" elapsed="0.360178"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:24.292951" level="INFO">${member_ip} = 10.30.171.128</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-19T02:11:24.292665" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.293701" 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-19T02:11:24.293800" 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-19T02:11:24.293564" elapsed="0.000262"/>
</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-19T02:11:24.297436" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:24.296839" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:24.296820" elapsed="0.000740"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.298208" 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-19T02:11:24.298448" 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-19T02:11:24.297759" elapsed="0.000741"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.299447" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:24.298763" elapsed="0.000789"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.300758" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:24.299855" elapsed="0.000955"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.302529" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:11:24.302706" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:11:24.302164" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:24.303102" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.304799" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:11:24.662060" 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 Sun Apr 19 02:11:22 UTC 2026

  System load:  0.05               Processes:             119
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:11:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:11:24.304474" elapsed="0.357731"/>
</kw>
<msg time="2026-04-19T02:11:24.662287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:24.303908" elapsed="0.358532"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:11:24.301270" elapsed="0.361317"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.663447" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:11:24.676400" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:11:24.676633" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:11:24.676777" 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-19T02:11:24.662948" elapsed="0.013898"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:24.677295" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.680489" 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-19T02:11:24.679233" elapsed="0.001493"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:24.681694" elapsed="0.000110"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:24.681129" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:24.681072" elapsed="0.001096"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:11:24.682849" elapsed="0.000137"/>
</return>
<status status="PASS" start="2026-04-19T02:11:24.682352" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:24.682314" elapsed="0.000969"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:24.683414" 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-19T02:11:24.688744" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:24.689494" elapsed="0.000286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:24.690147" 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-19T02:11:24.684464" elapsed="0.005977"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:11:24.295892" elapsed="0.394724"/>
</kw>
<msg time="2026-04-19T02:11:24.690672" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:24.295281" elapsed="0.395444"/>
</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-19T02:11:24.294491" elapsed="0.396313"/>
</kw>
<msg time="2026-04-19T02:11:24.690904" 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-19T02:11:24.293978" elapsed="0.396974"/>
</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-19T02:11:24.693656" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:11:24.694176" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:24.694476" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:24.691257" elapsed="0.003365"/>
</kw>
<msg time="2026-04-19T02:11:24.694714" 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-19T02:11:24.293207" elapsed="0.401533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.695180" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:24.694913" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:11:24.695265" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:11:24.292306" elapsed="0.403083"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:11:24.292125" elapsed="0.403301"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:24.696344" level="INFO">${member_ip} = 10.30.171.206</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-19T02:11:24.696069" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.697084" 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-19T02:11:24.697184" 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-19T02:11:24.696931" elapsed="0.000279"/>
</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-19T02:11:24.700528" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:24.699960" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:24.699941" elapsed="0.000711"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.701293" 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-19T02:11:24.701520" 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-19T02:11:24.700846" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.702544" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:24.701830" elapsed="0.000817"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.703806" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:24.702912" elapsed="0.000945"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:11:24.705569" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:11:24.705745" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:11:24.705203" elapsed="0.000585"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:24.706143" elapsed="0.000664"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:11:24.708075" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:11:25.028163" 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 Sun Apr 19 02:11:23 UTC 2026

  System load:  0.12               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:11:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:11:24.707726" elapsed="0.320688"/>
</kw>
<msg time="2026-04-19T02:11:25.028499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:24.707280" elapsed="0.321377"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:11:24.704310" elapsed="0.324496"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:11:25.029680" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:11:25.042340" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:11:25.042733" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:11:25.042962" 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-19T02:11:25.029195" elapsed="0.013926"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:25.043790" elapsed="0.001184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:25.047527" 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-19T02:11:25.046248" elapsed="0.001421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:25.048283" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:25.047902" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:25.047865" elapsed="0.000647"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:11:25.048932" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:11:25.048625" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:25.048601" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:11:25.049285" 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-19T02:11:25.053835" elapsed="0.000650"/>
</kw>
<kw name="Open 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-19T02:11:25.054898" elapsed="0.000500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:25.055671" elapsed="0.000218"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:25.049932" elapsed="0.006026"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:11:24.699034" elapsed="0.357115"/>
</kw>
<msg time="2026-04-19T02:11:25.056206" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:24.698431" elapsed="0.357827"/>
</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-19T02:11:24.697859" elapsed="0.358480"/>
</kw>
<msg time="2026-04-19T02:11:25.056380" 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-19T02:11:24.697361" elapsed="0.359064"/>
</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-19T02:11:25.059157" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:11:25.059627" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:25.059914" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:25.056708" elapsed="0.003370"/>
</kw>
<msg time="2026-04-19T02:11:25.060170" 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-19T02:11:24.696579" elapsed="0.363616"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:25.060616" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:25.060365" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:11:25.060700" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:11:24.695696" elapsed="0.365129"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:11:24.695519" elapsed="0.365381"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:11:23.931711" elapsed="1.129228"/>
</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-19T02:11:23.926559" elapsed="1.134441"/>
</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-19T02:11:25.061173" elapsed="0.000212"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:11:25.074976" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:25.074849" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:25.074829" elapsed="0.000231"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:25.075348" 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-19T02:11:25.075450" 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-19T02:11:25.075212" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:25.075881" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:25.075623" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:25.076334" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:25.076088" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:25.077133" 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-19T02:11:25.076890" elapsed="0.000377">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T02:11:25.077373" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:11:25.077417" 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-19T02:11:25.076533" elapsed="0.000907"/>
</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-19T02:11:25.077734" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:25.077514" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:25.077496" elapsed="0.000335"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:25.078575" level="INFO">${ip_address} = 10.30.171.9</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-19T02:11:25.078310" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:11:25.078648" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:11:25.078795" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:25.078026" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:11:25.078969" elapsed="0.000442"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:25.079716" level="INFO">index=10
host=10.30.171.9
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-19T02:11:25.079815" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T02:11:25.079609" 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-19T02:11:25.079987" elapsed="0.002213"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:11:25.082618" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:11:25.831718" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:11:25.082361" elapsed="0.749510"/>
</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-19T02:11:25.835708" elapsed="0.000395"/>
</kw>
<kw name="Open 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-19T02:11:25.836269" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:25.836579" 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-19T02:11:25.833118" elapsed="0.003616"/>
</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-19T02:11:25.832398" elapsed="0.004384"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:11:25.074566" elapsed="0.762270"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:11:25.062111" elapsed="0.774775"/>
</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-19T02:11:25.061729" elapsed="0.775212"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:25.061592" elapsed="0.775391"/>
</iter>
<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-19T02:11:25.850058" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:25.849924" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:25.849901" elapsed="0.000234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:25.850422" 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-19T02:11:25.850530" 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-19T02:11:25.850286" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:25.850968" 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-19T02:11:25.850706" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:25.851426" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:25.851178" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:25.852266" level="FAIL">Dictionary does not contain key '2'.</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-19T02:11:25.852014" elapsed="0.000360">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T02:11:25.852480" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:11:25.852526" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T02:11:25.851622" elapsed="0.000927"/>
</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-19T02:11:25.852845" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:25.852625" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:25.852606" elapsed="0.000337"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:25.853711" level="INFO">${ip_address} = 10.30.171.128</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-19T02:11:25.853443" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:11:25.853786" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:11:25.853941" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:25.853158" elapsed="0.000808"/>
</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-19T02:11:25.854136" elapsed="0.000400"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:25.854829" level="INFO">index=12
host=10.30.171.128
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-19T02:11:25.854929" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T02:11:25.854719" 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-19T02:11:25.855117" elapsed="0.002376"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:11:25.857918" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:11:26.064803" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:11:25.857656" elapsed="0.207245"/>
</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-19T02:11:26.068091" 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-19T02:11:26.068602" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:26.068900" 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-19T02:11:26.065795" elapsed="0.003283"/>
</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-19T02:11:26.065215" elapsed="0.003911"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:11:25.849630" elapsed="0.219547"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:11:25.837613" elapsed="0.231611"/>
</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-19T02:11:25.837242" elapsed="0.232034"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:11:25.837102" elapsed="0.232214"/>
</iter>
<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-19T02:11:26.082233" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:26.082121" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:26.082101" elapsed="0.000204"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:26.082601" 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-19T02:11:26.082704" 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-19T02:11:26.082469" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:26.083158" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:26.082878" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:26.083592" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:26.083349" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:26.084384" level="FAIL">Dictionary does not contain key '3'.</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-19T02:11:26.084160" elapsed="0.000319">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T02:11:26.084584" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:11:26.084630" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T02:11:26.083789" elapsed="0.000864"/>
</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-19T02:11:26.084946" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:26.084728" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:26.084710" elapsed="0.000351"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:26.085986" level="INFO">${ip_address} = 10.30.171.206</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-19T02:11:26.085715" elapsed="0.000357"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:11:26.086125" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:11:26.086285" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:11:26.085260" elapsed="0.001050"/>
</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-19T02:11:26.086464" elapsed="0.000434"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:26.087194" level="INFO">index=14
host=10.30.171.206
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-19T02:11:26.087295" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T02:11:26.087086" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:11:26.087469" elapsed="0.002199"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:11:26.090110" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:11:36.160815" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:11:26.089831" elapsed="10.071981">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:11:36.165429" 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-19T02:11:36.166016" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:36.166368" elapsed="0.000108"/>
</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-19T02:11:36.163121" elapsed="0.003410"/>
</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-19T02:11:36.162387" elapsed="0.004192"/>
</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-19T02:11:26.081825" elapsed="10.084848">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:11:36.166773" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:11:26.069911" elapsed="10.096958">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:11:26.069548" elapsed="10.097389"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:11:26.069411" elapsed="10.097575"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T02:11:25.061442" elapsed="11.105583"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T02:11:23.899984" elapsed="12.267123"/>
</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-19T02:11:36.169997" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.169875" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.169851" elapsed="0.000238"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:11:36.174733" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.174625" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.174607" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:11:36.175758" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:11:36.175371" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:11:36.176265" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:11:36.175941" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:11:36.176362" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:11:36.176526" level="INFO">${index_list} = [1, 2, 3]</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-19T02:11:36.175023" elapsed="0.001529"/>
</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-19T02:11:36.181845" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.181723" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.181705" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:11:36.183145" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.182993" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.182975" elapsed="0.000239"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:36.183700" 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-19T02:11:36.183355" elapsed="0.000372"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:36.184144" 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-19T02:11:36.183885" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:11:36.261742" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:11:36.184905" elapsed="0.076984"/>
</kw>
<msg time="2026-04-19T02:11:36.262024" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:11:36.262105" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.184340" elapsed="0.077804"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:11:36.374212" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:11:36.262837" elapsed="0.111601"/>
</kw>
<msg time="2026-04-19T02:11:36.374613" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:11:36.374659" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.262315" elapsed="0.112382"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:36.375143" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:36.374802" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.374772" elapsed="0.000581"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:36.375928" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:36.375498" elapsed="0.000522"/>
</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-19T02:11:36.376552" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:36.376313" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.376294" elapsed="0.000447"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:11:36.376779" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:36.378949" elapsed="0.000688"/>
</kw>
<kw name="Open 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-19T02:11:36.380013" elapsed="0.000658"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:36.381242" elapsed="0.000362"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:36.378095" elapsed="0.003620"/>
</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-19T02:11:36.377130" elapsed="0.004740"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:11:36.182703" elapsed="0.199277"/>
</kw>
<msg time="2026-04-19T02:11:36.382164" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:11:36.382209" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.182080" elapsed="0.200173"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:11:36.382446" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T02:11:36.382337" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.382319" elapsed="0.000217"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:36.382950" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:36.383303" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:11:36.383375" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:11:36.181433" elapsed="0.202048"/>
</kw>
<msg time="2026-04-19T02:11:36.383573" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:11:36.383616" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.177026" elapsed="0.206627"/>
</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-19T02:11:36.383988" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:36.383734" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.383716" elapsed="0.000482"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:11:36.176884" elapsed="0.207338"/>
</iter>
<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-19T02:11:36.389475" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.389368" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.389350" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:11:36.390744" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.390617" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.390599" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:36.391481" level="INFO">${karaf_connection_index} = 12</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-19T02:11:36.390953" elapsed="0.000555"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:36.391899" 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-19T02:11:36.391667" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:11:36.430936" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:11:36.392693" elapsed="0.038605"/>
</kw>
<msg time="2026-04-19T02:11:36.431430" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:11:36.431477" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.392180" elapsed="0.039334"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:11:36.502287" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:11:36.432217" elapsed="0.070305"/>
</kw>
<msg time="2026-04-19T02:11:36.502686" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:11:36.502732" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.431682" elapsed="0.071088"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:36.503214" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:36.502870" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.502842" elapsed="0.000644"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:36.504088" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "p "a "r "t "i "t "i "o "n "_ "a "n "d "_ "h "e "a "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:36.503636" elapsed="0.000546"/>
</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-19T02:11:36.504494" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:36.504251" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.504232" elapsed="0.000456"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:11:36.504728" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:11:36.506970" 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-19T02:11:36.507891" elapsed="0.000644"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:36.508907" elapsed="0.000288"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:36.506085" elapsed="0.003210"/>
</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-19T02:11:36.505047" elapsed="0.004430"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:11:36.390319" elapsed="0.119264"/>
</kw>
<msg time="2026-04-19T02:11:36.509678" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:11:36.509725" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.389691" elapsed="0.120073"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:11:36.509953" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:11:36.509842" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.509824" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:36.510471" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:11:36.511326" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:11:36.511405" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:11:36.389074" elapsed="0.122448"/>
</kw>
<msg time="2026-04-19T02:11:36.511620" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:11:36.511665" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:11:36.384489" elapsed="0.127213"/>
</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-19T02:11:36.512097" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:36.511782" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.511763" elapsed="0.000421"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:11:36.384351" elapsed="0.127857"/>
</iter>
<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-19T02:11:36.517588" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.517478" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.517460" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:11:36.518864" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:36.518731" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:36.518714" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:11:36.519507" level="INFO">${karaf_connection_index} = 14</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-19T02:11:36.519167" elapsed="0.000368"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:36.519926" 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-19T02:11:36.519691" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:11:46.521745" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:11:36.520694" elapsed="10.002030">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:11:46.522968" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:11:46.523019" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:11:36.520169" elapsed="10.002890"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:11:56.524891" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:11:46.523995" elapsed="10.001827">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:11:56.526091" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:11:56.526144" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:11:46.523351" elapsed="10.002818"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:11:56.527610" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/partition_and_heal.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-19T02:11:56.526695" elapsed="0.001003">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/partition_and_heal.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:11:56.526298" elapsed="0.001552">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/partition_and_heal.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:11:56.526262" elapsed="0.001627">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/partition_and_heal.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-19T02:11:56.528217" 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-19T02:11:56.528459" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:11:56.528311" elapsed="0.000314"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:11:56.528294" elapsed="0.000358"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:11:56.528690" 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-19T02:11:56.530945" elapsed="0.002466"/>
</kw>
<kw name="Open 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-19T02:11:56.533806" elapsed="0.000353"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:11:56.534538" elapsed="0.000289"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:11:56.530057" elapsed="0.004868"/>
</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-19T02:11:56.529001" elapsed="0.006267"/>
</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-19T02:11:36.518440" elapsed="20.016920">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/partition_and_heal.robot"</status>
</kw>
<msg time="2026-04-19T02:11:56.535465" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:11:56.535509" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/partition_and_heal.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-19T02:11:36.517808" elapsed="20.017725"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:11:56.535722" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:56.535610" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:56.535591" elapsed="0.000197"/>
</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-19T02:11:56.536587" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:11:56.536475" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:56.536456" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:11:56.536985" 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-19T02:11:56.537110" 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-19T02:11:56.536803" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:56.537703" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:56.537427" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:11:56.538231" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:11:56.537904" elapsed="0.000381"/>
</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-19T02:11:56.538815" elapsed="0.000446"/>
</kw>
<msg time="2026-04-19T02:11:56.539372" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:11:56.539420" level="INFO">${old_connection_index} = 14</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-19T02:11:56.538447" elapsed="0.000997"/>
</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-19T02:11:56.540814" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:12:06.543215" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:11:56.542325" elapsed="10.001657">No match found for '
' in 10 seconds
Output:
.</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-19T02:11:56.541394" elapsed="10.002755"/>
</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-19T02:12:06.545549" elapsed="0.000354"/>
</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-19T02:12:06.544576" elapsed="0.001412"/>
</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-19T02:11:56.539782" elapsed="10.006320"/>
</kw>
<status status="PASS" start="2026-04-19T02:11:56.539521" elapsed="10.006636"/>
</branch>
<status status="PASS" start="2026-04-19T02:11:56.539503" elapsed="10.006693"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:06.547402" level="INFO">${ip_address} = 10.30.171.206</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-19T02:12:06.546837" elapsed="0.000597"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:12:06.547495" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:12:06.547679" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:12:06.546453" elapsed="0.001253"/>
</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-19T02:12:06.547876" elapsed="0.000475"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:06.548658" level="INFO">index=19
host=10.30.171.206
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-19T02:12:06.548766" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T02:12:06.548529" 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-19T02:12:06.548944" elapsed="0.002861"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:12:06.552271" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:12:16.662159" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:06.551977" elapsed="10.111112">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:16.667155" elapsed="0.000769"/>
</kw>
<kw name="Open 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-19T02:12:16.668222" elapsed="0.000513"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:12:16.668979" elapsed="0.000228"/>
</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-19T02:12:16.664412" elapsed="0.004888"/>
</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-19T02:12:16.663640" elapsed="0.005713"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:11:56.536202" elapsed="20.133245">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:16.669953" elapsed="0.000029"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:12:16.670065" elapsed="0.000025"/>
</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-19T02:11:36.517164" elapsed="40.153024">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:12:16.670309" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:12:16.670355" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:11:36.512481" elapsed="40.157899"/>
</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-19T02:12:16.670749" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:16.670478" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.670456" elapsed="0.000381"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:11:36.512340" elapsed="40.158532"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:11:36.176704" elapsed="40.494206"/>
</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-19T02:11:36.174332" elapsed="40.496643"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T02:11:36.167735" elapsed="40.503316"/>
</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-19T02:11:36.167270" elapsed="40.503827"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T02:11:23.895010" elapsed="52.776144"/>
</kw>
<kw name="Cluster_Singleton_Init" owner="CsCommon">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.671854" level="INFO">${cs_exp_candidates} = []</msg>
<var>${cs_exp_candidates}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:12:16.671587" elapsed="0.000296"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.672441" level="INFO">${cs_exp_candidates} = []</msg>
<arg>${cs_exp_candidates}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T02:12:16.672092" elapsed="0.000393"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.676053" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:12:16.675570" elapsed="0.000514"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.676583" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:12:16.676249" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:12:16.676657" elapsed="0.000034"/>
</return>
<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-19T02:12:16.673319" elapsed="0.003472"/>
</kw>
<msg time="2026-04-19T02:12:16.676830" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:16.672912" elapsed="0.003964"/>
</kw>
<msg time="2026-04-19T02:12:16.676981" level="INFO">${cs_all_indices} = [1, 2, 3]</msg>
<var>${cs_all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T02:12:16.672680" elapsed="0.004326"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.677510" level="INFO">${cs_all_indices} = [1, 2, 3]</msg>
<arg>${cs_all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T02:12:16.677180" elapsed="0.000373"/>
</kw>
<doc>Resouce initial keyword. Creates {cs_exp_candidates} and {cs_all_indices} suite variables which are
used in other keywords.</doc>
<status status="PASS" start="2026-04-19T02:12:16.671370" elapsed="0.006238"/>
</kw>
<doc>Suite setup.</doc>
<status status="PASS" start="2026-04-19T02:11:23.894726" elapsed="52.782934"/>
</kw>
<test id="s1-s12-t1" name="Register_Singleton_Constant_On_Each_Node" line="39">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:12:16.681455" elapsed="0.000289"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:12:16.681083" elapsed="0.000736"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:16.683217" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.683061" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.683015" elapsed="0.000297"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:16.688376" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.688270" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.688251" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.689489" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:12:16.689100" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.689972" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:12:16.689671" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:12:16.690056" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:12:16.690218" level="INFO">${index_list} = [1, 2, 3]</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-19T02:12:16.688704" elapsed="0.001538"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:16.695683" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.695577" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.695558" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:16.696934" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.696827" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.696809" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:16.697483" 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-19T02:12:16.697166" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:16.697885" 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-19T02:12:16.697665" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:12:16.755131" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:12:16.698420" elapsed="0.056816"/>
</kw>
<msg time="2026-04-19T02:12:16.755409" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:12:16.755455" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:12:16.698084" elapsed="0.057408"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:12:16.801045" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:12:16.756105" elapsed="0.045065"/>
</kw>
<msg time="2026-04-19T02:12:16.801347" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:12:16.801395" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:16.755687" elapsed="0.045746"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:16.801751" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:16.801513" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.801492" elapsed="0.000340"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.802321" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:16.801974" elapsed="0.000425"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:16.802686" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:16.802468" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.802449" elapsed="0.000316"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:12:16.802799" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:16.804354" elapsed="0.000885"/>
</kw>
<kw name="Open 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-19T02:12:16.805542" elapsed="0.000532"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:12:16.806361" elapsed="0.000465"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:12:16.803635" elapsed="0.003300"/>
</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-19T02:12:16.803093" elapsed="0.003908"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:12:16.696525" elapsed="0.110605"/>
</kw>
<msg time="2026-04-19T02:12:16.807223" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:16.807268" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "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-19T02:12:16.695898" elapsed="0.111408"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:12:16.807493" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:12:16.807384" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.807365" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:16.807989" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:16.808342" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:12:16.808414" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:12:16.695237" elapsed="0.113285"/>
</kw>
<msg time="2026-04-19T02:12:16.808618" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:16.808662" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:16.690612" elapsed="0.118087"/>
</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-19T02:12:16.809024" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:16.808775" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.808757" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:12:16.690474" elapsed="0.118669"/>
</iter>
<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-19T02:12:16.814608" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.814499" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.814480" 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-19T02:12:16.816001" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.815881" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.815863" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:16.816547" level="INFO">${karaf_connection_index} = 12</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-19T02:12:16.816235" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:16.816949" 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-19T02:12:16.816730" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:12:16.856912" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:12:16.817487" elapsed="0.039560"/>
</kw>
<msg time="2026-04-19T02:12:16.857233" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:12:16.857279" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:12:16.817150" elapsed="0.040166"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:12:16.893988" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:12:16.857840" elapsed="0.036341"/>
</kw>
<msg time="2026-04-19T02:12:16.894433" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:12:16.894502" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:16.857492" elapsed="0.037135"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:16.895108" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:16.894747" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.894717" elapsed="0.000508"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:16.895880" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:16.895433" elapsed="0.000559"/>
</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-19T02:12:16.896440" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:16.896125" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.896098" elapsed="0.000455"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:12:16.896604" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:16.898753" elapsed="0.001221"/>
</kw>
<kw name="Open 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-19T02:12:16.900455" elapsed="0.000757"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:12:16.901556" elapsed="0.000403"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:12:16.897813" elapsed="0.004271"/>
</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-19T02:12:16.896990" elapsed="0.005160"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:12:16.815577" elapsed="0.086673"/>
</kw>
<msg time="2026-04-19T02:12:16.902342" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:16.902386" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "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-19T02:12:16.814825" elapsed="0.087599"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:12:16.902607" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:12:16.902500" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.902482" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:16.903094" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:16.903435" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:12:16.903506" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:12:16.814155" elapsed="0.089458"/>
</kw>
<msg time="2026-04-19T02:12:16.903707" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:16.903751" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:16.809409" elapsed="0.094380"/>
</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-19T02:12:16.904136" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:16.903863" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.903846" elapsed="0.000368"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:12:16.809270" elapsed="0.094967"/>
</iter>
<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-19T02:12:16.909930" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.909821" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.909802" 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-19T02:12:16.911161" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:16.911052" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:16.911020" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:16.911712" level="INFO">${karaf_connection_index} = 19</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-19T02:12:16.911366" elapsed="0.000373"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:16.912148" 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-19T02:12:16.911894" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:12:26.913556" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:12:16.912691" elapsed="10.001991">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:12:26.914983" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:12:26.915059" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:12:16.912329" elapsed="10.002763"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:12:36.916561" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:12:26.915846" elapsed="10.001685">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:12:36.917829" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:12:36.917879" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:12:26.915384" elapsed="10.002521"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:12:36.919221" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Register_Singleton_Constant_On_Each_Node"</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-19T02:12:36.918421" elapsed="0.000864">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Register_Singleton_Constant_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:12:36.918033" elapsed="0.001323">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Register_Singleton_Constant_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:12:36.917996" elapsed="0.001403">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Register_Singleton_Constant_On_Each_Node"</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-19T02:12:36.919573" 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-19T02:12:36.919802" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:36.919663" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:12:36.919644" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:12:36.919916" 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-19T02:12:36.921557" elapsed="0.000908"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:12:36.922761" elapsed="0.000582"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:12:36.923627" elapsed="0.000448"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:12:36.920829" elapsed="0.003360"/>
</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-19T02:12:36.920235" elapsed="0.004019"/>
</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-19T02:12:16.910737" elapsed="20.013604">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Register_Singleton_Constant_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T02:12:36.924446" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:12:36.924491" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Register_Singleton_Constant_On_Each_Node"</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-19T02:12:16.910165" elapsed="20.014351"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:12:36.924703" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:36.924593" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:36.924574" elapsed="0.000195"/>
</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-19T02:12:36.925621" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:36.925516" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:36.925497" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:36.926235" 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-19T02:12:36.926425" 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-19T02:12:36.925846" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:36.926871" level="INFO">{1: 10, 2: 12, 3: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:36.926605" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:36.927440" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:36.927190" 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-19T02:12:36.928001" elapsed="0.000294"/>
</kw>
<msg time="2026-04-19T02:12:36.928394" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:36.928442" level="INFO">${old_connection_index} = 19</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-19T02:12:36.927641" elapsed="0.000825"/>
</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-19T02:12:36.929309" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:12:46.931273" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:12:36.930208" elapsed="10.002188">No match found for '
' in 10 seconds
Output:
.</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-19T02:12:36.929679" elapsed="10.002854"/>
</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-19T02:12:46.933458" elapsed="0.000492"/>
</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-19T02:12:46.932849" elapsed="0.001444"/>
</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-19T02:12:36.928761" elapsed="10.005599"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:36.928542" elapsed="10.005888"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:36.928524" elapsed="10.005952"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:46.935521" level="INFO">${ip_address} = 10.30.171.206</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-19T02:12:46.935165" elapsed="0.000386"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:12:46.935607" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:12:46.935773" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:12:46.934753" 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-19T02:12:46.935955" elapsed="0.000493"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:46.936752" level="INFO">index=24
host=10.30.171.206
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-19T02:12:46.936855" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.206
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-19T02:12:46.936624" elapsed="0.000257"/>
</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-19T02:12:46.937150" elapsed="0.002392"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:12:46.939983" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:12:57.049376" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:46.939715" elapsed="10.110637">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:57.065579" elapsed="0.000572"/>
</kw>
<kw name="Open 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-19T02:12:57.066318" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:12:57.066639" 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-19T02:12:57.051914" elapsed="0.014881"/>
</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-19T02:12:57.050865" elapsed="0.015977"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:12:36.925194" elapsed="20.141737">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:57.067420" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.067500" elapsed="0.000022"/>
</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-19T02:12:16.909478" elapsed="40.158141">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:12:57.067735" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:12:57.067779" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:16.904500" elapsed="40.163302"/>
</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-19T02:12:57.068176" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.067897" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.067874" elapsed="0.000382"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:12:16.904362" elapsed="40.163927"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:12:16.690298" elapsed="40.378027"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:12:16.687881" elapsed="40.380506"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:12:16.682635" elapsed="40.385811"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:16.682020" elapsed="40.386471"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:12:16.678616" elapsed="40.389932"/>
</kw>
<kw name="Register_Singleton_Constant_On_Nodes" owner="CsCommon">
<for flavor="IN">
<iter>
<kw name="Register_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Register_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.071237" 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-19T02:12:57.070912" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:12:57.071310" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:12:57.071462" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:12:57.070571" elapsed="0.000915"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.072027" level="INFO">&amp;{mapping} = { CONSTANT=constant-1 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.071641" elapsed="0.000428"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.104993" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.104548" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.105899" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.105535" elapsed="0.000551">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:12:57.106352" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:12:57.105204" elapsed="0.001173"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.106984" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:12:57.106539" elapsed="0.000472"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.107352" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:12:57.107517" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:12:57.107186" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.108017" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.107740" elapsed="0.000340"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.109628" level="INFO">mapping: {'CONSTANT': 'constant-1'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.108924" elapsed="0.000851"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.110792" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.110101" elapsed="0.000734"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.112246" level="INFO">${value} = constant-1</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T02:12:57.111739" elapsed="0.000545"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:12:57.113444" level="INFO">${encoded} = constant-1</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.113214" elapsed="0.000257"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T02:12:57.113522" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:12:57.113829" level="INFO">${encoded_value} = constant-1</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T02:12:57.112752" elapsed="0.001135"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.114275" elapsed="0.000353"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-1</var>
<status status="PASS" start="2026-04-19T02:12:57.111403" elapsed="0.003283"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T02:12:57.110983" elapsed="0.003817"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:12:57.115013" elapsed="0.000060"/>
</return>
<msg time="2026-04-19T02:12:57.115327" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:12:57.108496" elapsed="0.006858"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.108150" elapsed="0.007237"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.115560" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.115412" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.108130" elapsed="0.007507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.116289" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.115781" elapsed="0.000536"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:12:57.116366" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:12:57.103924" elapsed="0.012565"/>
</kw>
<msg time="2026-04-19T02:12:57.116540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:57.091921" elapsed="0.024667"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.128818" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.140585" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.152314" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.152555" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.152729" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.153106" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.152950" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:12:57.152935" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.153324" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.153488" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.153652" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:12:57.152906" elapsed="0.000798"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.152805" elapsed="0.000925"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.153873" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.153958" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:12:57.154084" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:12:57.087842" elapsed="0.066269"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.177703" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.177260" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.178569" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.178257" elapsed="0.000481">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:12:57.179003" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:12:57.177891" elapsed="0.001153"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.179655" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:12:57.179208" elapsed="0.000474"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.179999" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:12:57.180149" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:12:57.179839" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.180596" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.180328" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:12:57.181064" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.180710" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.181903" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-1'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.181365" elapsed="0.000565"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.181213" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.180691" elapsed="0.001317"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.182752" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.182167" elapsed="0.000614"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:12:57.182831" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:12:57.176637" elapsed="0.006318"/>
</kw>
<msg time="2026-04-19T02:12:57.183009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:57.164648" elapsed="0.018431"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.195154" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.206827" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.218493" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.218684" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.218856" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.219228" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.219087" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:12:57.219072" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.219444" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.219605" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.219766" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:12:57.219042" elapsed="0.000776"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.218928" elapsed="0.000916"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.219982" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.220072" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T02:12:57.220222" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:12:57.163791" elapsed="0.056460"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.221488" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.221253" elapsed="0.000298">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:12:57.221642" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:12:57.220901" elapsed="0.000765"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.221975" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.221736" elapsed="0.000330"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.222552" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.222260" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.222091" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.221718" elapsed="0.000915"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.224871" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:12:57.222779" elapsed="0.002118"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:12:57.224949" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:12:57.225115" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:12:57.220581" elapsed="0.004559"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.226650" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.226403" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.227097" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.226844" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.227531" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.227289" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.227959" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.227720" elapsed="0.000281"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:57.228807" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:12:57.228611" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:12:57.229174" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:12:57.228983" elapsed="0.000216"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.229346" elapsed="0.000205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.230146" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.229702" elapsed="0.000487"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:12:57.230232" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:12:57.230386" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:12:57.228212" elapsed="0.002199"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:12:57.734725" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-1&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T02:12:57.735126" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node01s6so8306icy3al1g19eua5wr0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 02:12:57 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T02:12:57.735425" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:12:57.232671" elapsed="0.502820"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.230480" elapsed="0.505137"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.736152" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.735691" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.230463" elapsed="0.505910"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.743935" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.738905" elapsed="0.005076"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.738359" elapsed="0.005658"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.738316" elapsed="0.005748"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.746676" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.744343" elapsed="0.002382"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.744122" elapsed="0.002638"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.744105" elapsed="0.002680"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.747373" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.746957" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.747702" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.747470" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.748255" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.747937" elapsed="0.000345"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.747782" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.747452" elapsed="0.000885"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.748852" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.748488" elapsed="0.000391"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.749202" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.748946" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.749732" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.749436" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.749283" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.748928" elapsed="0.000885"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:57.749961" elapsed="0.000368"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:12:57.750835" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.750490" elapsed="0.000372"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.751014" elapsed="0.002268"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:12:57.737282" elapsed="0.016063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T02:12:57.753528" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T02:12:57.753417" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.753399" elapsed="0.000223"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.753769" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.753836" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:12:57.756072" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T02:12:57.225459" elapsed="0.530641"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:12:57.756206" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:12:57.756364" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T02:12:57.076868" elapsed="0.679521"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.756728" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.756494" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.756477" elapsed="0.000490"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:12:57.757000" elapsed="0.000025"/>
</return>
<arg>${REGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T02:12:57.072317" elapsed="0.684830"/>
</kw>
<arg>${member_index}</arg>
<arg>${constant}</arg>
<doc>Register singleton application on given node by invoking register-singleton-constant rpc.</doc>
<status status="PASS" start="2026-04-19T02:12:57.070166" elapsed="0.687045"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.757363" elapsed="0.000201"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T02:12:57.757716" elapsed="0.000152"/>
</kw>
<arg>${index}</arg>
<arg>${CS_CONSTANT_PREFIX}${index}</arg>
<doc>Register the singleton candidate and add it to the list of [].</doc>
<status status="PASS" start="2026-04-19T02:12:57.069695" elapsed="0.688231"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:12:57.069484" elapsed="0.688478"/>
</iter>
<iter>
<kw name="Register_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Register_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.759851" level="INFO">${session} = ClusterManagement__session_2</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-19T02:12:57.759549" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:12:57.759926" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:12:57.760089" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:12:57.759205" elapsed="0.000910"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.760661" level="INFO">&amp;{mapping} = { CONSTANT=constant-2 }</msg>
<var>&amp;{mapping}</var>
<arg>CONSTANT=${constant}</arg>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.760275" elapsed="0.000414"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.795520" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.795062" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.796422" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.796065" elapsed="0.000548">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:12:57.796890" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:12:57.795709" elapsed="0.001207"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.797569" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:12:57.797097" elapsed="0.000504"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.797919" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:12:57.798101" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:12:57.797758" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.798550" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.798280" elapsed="0.000390"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.800278" level="INFO">mapping: {'CONSTANT': 'constant-2'}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.799553" elapsed="0.000876"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.801445" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.800718" elapsed="0.000772"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.802944" level="INFO">${value} = constant-2</msg>
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T02:12:57.802429" elapsed="0.000554"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:12:57.804309" level="INFO">${encoded} = constant-2</msg>
<var>${encoded}</var>
<arg>${value}</arg>
<arg>:</arg>
<arg>%3A</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.804080" elapsed="0.000256"/>
</kw>
<return>
<value>${encoded}</value>
<status status="PASS" start="2026-04-19T02:12:57.804388" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:12:57.804699" level="INFO">${encoded_value} = constant-2</msg>
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="PASS" start="2026-04-19T02:12:57.803516" elapsed="0.001220"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.805096" elapsed="0.000336"/>
</kw>
<var name="${key}">CONSTANT</var>
<var name="${value}">constant-2</var>
<status status="PASS" start="2026-04-19T02:12:57.802089" elapsed="0.003400"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="PASS" start="2026-04-19T02:12:57.801647" elapsed="0.003957"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:12:57.805820" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:12:57.806123" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:12:57.799121" elapsed="0.007029"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.798744" elapsed="0.007439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.806356" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.806208" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.798726" elapsed="0.007706"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.807157" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.806576" elapsed="0.000609"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:12:57.807234" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:12:57.794306" elapsed="0.013053"/>
</kw>
<msg time="2026-04-19T02:12:57.807412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:57.781886" elapsed="0.025576"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.819882" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.831766" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.843900" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.844145" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.844321" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.844681" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.844541" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:12:57.844526" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.844894" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.845071" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.845236" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:12:57.844498" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.844396" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.845456" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.845530" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:12:57.845640" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:12:57.777791" elapsed="0.067874"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.869726" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.869250" elapsed="0.000507"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.870592" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.870275" elapsed="0.000519">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:12:57.871085" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:12:57.869916" elapsed="0.001195"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.871728" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:12:57.871274" elapsed="0.000482"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.872098" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:12:57.872241" level="INFO">${template} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:12:57.871913" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.872691" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;$CONSTANT&lt;/constant&gt;
&lt;/input&gt;
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.872423" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:12:57.873158" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.872805" elapsed="0.000415"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.873921" level="INFO">${mapping_to_use} = {'CONSTANT': 'constant-2'}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.873387" elapsed="0.000560"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.873245" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.872787" elapsed="0.001217"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.874816" level="INFO">${final_text} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.874206" elapsed="0.000640"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:12:57.874896" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:12:57.868627" elapsed="0.006396"/>
</kw>
<msg time="2026-04-19T02:12:57.875107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:57.856304" elapsed="0.018852"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.887448" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.899692" elapsed="0.000079"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.911748" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.911942" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.912127" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.912488" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.912349" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:12:57.912334" elapsed="0.000232"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.912702" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.912866" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.913041" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:12:57.912305" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.912204" elapsed="0.000918"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.913263" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.913338" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:12:57.913455" level="INFO">${data} = &lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:12:57.855441" elapsed="0.058041"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:12:57.914785" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.914536" elapsed="0.000316">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:12:57.914944" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:12:57.914198" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.915298" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.915053" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.915837" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.915543" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.915379" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.915020" elapsed="0.000899"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.918174" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:12:57.916082" elapsed="0.002119"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:12:57.918253" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:12:57.918406" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:12:57.913852" elapsed="0.004579"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.919971" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.919725" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.920422" level="INFO">&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt;</msg>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.920183" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.920975" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.920615" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.921424" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.921184" elapsed="0.000283"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:57.922273" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:12:57.922077" elapsed="0.000222"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:12:57.922623" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:12:57.922450" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.922806" elapsed="0.000205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.923430" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.923183" elapsed="0.000292"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:12:57.923517" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:12:57.923670" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:12:57.921663" elapsed="0.002032"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:12:57.940251" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '117', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=&lt;input xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;
  &lt;constant&gt;constant-2&lt;/constant&gt;
&lt;/input&gt; 
 </msg>
<msg time="2026-04-19T02:12:57.940305" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Length': '0'} 
 body=None 
 </msg>
<msg time="2026-04-19T02:12:57.940409" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.925937" elapsed="0.015131">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</kw>
<status status="FAIL" start="2026-04-19T02:12:57.923764" elapsed="0.017499">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.941747" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.941409" elapsed="0.000490"/>
</branch>
<status status="FAIL" start="2026-04-19T02:12:57.923747" elapsed="0.018204">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.942947" elapsed="0.000075"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.943377" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:57.943291" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:12:57.943246" elapsed="0.000272"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.943835" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.943983" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.918776" elapsed="0.025478">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.944434" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.766731" elapsed="0.177917">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.945322" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.944898" elapsed="0.000573"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:12:57.944861" elapsed="0.000661"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.945593" elapsed="0.000033"/>
</return>
<arg>${REGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.762412" elapsed="0.183396">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</kw>
<arg>${member_index}</arg>
<arg>${constant}</arg>
<doc>Register singleton application on given node by invoking register-singleton-constant rpc.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.758771" elapsed="0.187252">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.946436" elapsed="0.000048"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.946821" elapsed="0.000047"/>
</kw>
<arg>${index}</arg>
<arg>${CS_CONSTANT_PREFIX}${index}</arg>
<doc>Register the singleton candidate and add it to the list of [1].</doc>
<status status="FAIL" start="2026-04-19T02:12:57.758280" elapsed="0.188916">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:12:57.758072" elapsed="0.189294">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:12:57.069322" elapsed="0.878172">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</for>
<arg>${cs_all_indices}</arg>
<doc>Register a candidate application on given nodes.</doc>
<status status="FAIL" start="2026-04-19T02:12:57.068836" elapsed="0.878859">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:57.950529" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:57.949672" elapsed="0.001078"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.949633" elapsed="0.001222"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:57.951218" elapsed="0.000587"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.956640" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.956221" elapsed="0.000447"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:12:57.956887" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:57.956744" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.956726" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.957406" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:12:57.957108" elapsed="0.000325"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:12:57.957852" level="INFO">${reference} = controller_clustering_ask_txt_Partition_And_Heal_Register_Singleton_Constant_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:12:57.957587" elapsed="0.000292"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:12:57.958229" level="INFO">${reference} = controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:12:57.958049" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.958785" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.958438" elapsed="0.000404"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.959327" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:12:57.958995" elapsed="0.000360"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.959933" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node&amp;order=bug_status"

HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:12:57.959504" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.960480" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:57.960169" elapsed="0.000359"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:12:57.955901" elapsed="0.004681"/>
</kw>
<status status="PASS" start="2026-04-19T02:12:57.949203" elapsed="0.011428"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:12:57.948376" elapsed="0.012296"/>
</kw>
<doc>Register a candidate application on each node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:12:16.677728" elapsed="41.282982">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_register_singleton_constant_on_each_node&amp;order=bug_status"

HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-singleton-constant</status>
</test>
<test id="s1-s12-t2" name="Verify_Singleton_Constant_On_Each_Node" line="43">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:12:57.964662" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:12:57.964402" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.965901" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:57.965791" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.965771" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.970737" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:57.970631" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.970613" elapsed="0.000240"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.971871" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:12:57.971492" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:12:57.972392" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:12:57.972070" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:12:57.972464" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:12:57.972617" level="INFO">${index_list} = [1, 2, 3]</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-19T02:12:57.971093" elapsed="0.001549"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.977858" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:57.977751" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.977732" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:57.979102" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:57.978973" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:57.978955" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:57.979633" 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-19T02:12:57.979310" elapsed="0.000349"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:57.980053" 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-19T02:12:57.979813" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:12:58.030717" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:12:57.980568" elapsed="0.050431"/>
</kw>
<msg time="2026-04-19T02:12:58.031212" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:12:58.031259" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:12:57.980236" elapsed="0.051060"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:12:58.070314" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:12:58.031806" elapsed="0.038624"/>
</kw>
<msg time="2026-04-19T02:12:58.070602" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:12:58.070647" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:58.031467" elapsed="0.039216"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.071003" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:58.070758" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.070739" elapsed="0.000367"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:58.071547" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:58.071245" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.071898" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:58.071686" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.071669" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:12:58.072006" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:58.073476" elapsed="0.000871"/>
</kw>
<kw name="Open 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-19T02:12:58.074644" elapsed="0.000543"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:12:58.075504" elapsed="0.000414"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:12:58.072808" elapsed="0.003218"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T02:12:58.072282" elapsed="0.003836"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:12:57.978660" elapsed="0.097558"/>
</kw>
<msg time="2026-04-19T02:12:58.076308" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:58.076351" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:57.978086" elapsed="0.098302"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:12:58.076569" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:12:58.076463" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.076445" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.077054" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.077384" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:12:58.077455" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:12:57.977418" elapsed="0.100142"/>
</kw>
<msg time="2026-04-19T02:12:58.077651" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:58.077694" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:57.972999" elapsed="0.104731"/>
</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-19T02:12:58.078061" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:58.077803" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.077785" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:12:57.972862" elapsed="0.105299"/>
</iter>
<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-19T02:12:58.083461" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:58.083353" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.083334" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:12:58.084832" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:58.084726" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.084708" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:58.085364" level="INFO">${karaf_connection_index} = 12</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-19T02:12:58.085057" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:58.085757" 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-19T02:12:58.085544" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:12:58.117193" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:12:58.086359" elapsed="0.030938"/>
</kw>
<msg time="2026-04-19T02:12:58.117485" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:12:58.117533" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:12:58.085937" elapsed="0.031632"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:12:58.150092" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:12:58.118100" elapsed="0.032124"/>
</kw>
<msg time="2026-04-19T02:12:58.150412" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:12:58.150458" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:58.117738" elapsed="0.032801"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.150848" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:58.150622" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.150602" elapsed="0.000324"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:12:58.151413" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:12:58.151106" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.151765" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:58.151554" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.151536" elapsed="0.000305"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:12:58.151874" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:12:58.153549" elapsed="0.000956"/>
</kw>
<kw name="Open 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-19T02:12:58.154846" elapsed="0.000555"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:12:58.155686" elapsed="0.000427"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:12:58.152876" elapsed="0.003346"/>
</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-19T02:12:58.152154" elapsed="0.004135"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:12:58.084428" elapsed="0.071970"/>
</kw>
<msg time="2026-04-19T02:12:58.156489" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:58.156533" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:58.083681" elapsed="0.072891"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:12:58.156772" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:12:58.156660" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.156642" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.157260" elapsed="0.000033"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:12:58.157614" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:12:58.157690" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:12:58.082957" elapsed="0.074840"/>
</kw>
<msg time="2026-04-19T02:12:58.157890" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:12:58.157934" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "V "e "r "i "f "y "_ "S "i "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:58.078417" elapsed="0.079554"/>
</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-19T02:12:58.158311" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:12:58.158061" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.158027" elapsed="0.000362"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:12:58.078281" elapsed="0.080132"/>
</iter>
<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-19T02:12:58.163822" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:58.163713" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.163693" 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-19T02:12:58.165070" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:12:58.164932" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T02:12:58.164914" elapsed="0.000259"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:12:58.165642" level="INFO">${karaf_connection_index} = 24</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-19T02:12:58.165323" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:12:58.166074" 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-19T02:12:58.165829" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:13:08.167507" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:12:58.166592" elapsed="10.002115">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:13:08.169006" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:13:08.169090" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:12:58.166259" elapsed="10.002858"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:13:18.170593" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:13:08.169913" elapsed="10.001626">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:13:18.171840" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:13:18.171890" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:13:08.169411" elapsed="10.002505"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:13:18.173250" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Verify_Singleton_Constant_On_Each_Node"</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-19T02:13:18.172445" elapsed="0.000875">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Verify_Singleton_Constant_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:13:18.172082" elapsed="0.001309">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Verify_Singleton_Constant_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:13:18.172016" elapsed="0.001409">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Verify_Singleton_Constant_On_Each_Node"</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-19T02:13:18.173588" 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-19T02:13:18.174127" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:18.173959" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:13:18.173657" elapsed="0.000551"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:13:18.174246" elapsed="0.000016"/>
</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-19T02:13:18.175830" elapsed="0.000929"/>
</kw>
<kw name="Open 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-19T02:13:18.177111" elapsed="0.000537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:13:18.177928" elapsed="0.000462"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:13:18.175145" elapsed="0.003358"/>
</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-19T02:13:18.174544" elapsed="0.004025"/>
</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-19T02:12:58.164629" elapsed="20.014025">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Verify_Singleton_Constant_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T02:13:18.178757" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:13:18.178803" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Verify_Singleton_Constant_On_Each_Node"</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-19T02:12:58.164052" elapsed="20.014775"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:13:18.179014" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:18.178904" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:18.178886" elapsed="0.000212"/>
</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-19T02:13:18.179903" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:18.179796" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:18.179778" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:13:18.180299" 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-19T02:13:18.180499" 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-19T02:13:18.180150" elapsed="0.000377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:13:18.180961" level="INFO">{1: 10, 2: 12, 3: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:13:18.180692" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:13:18.181542" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:13:18.181259" elapsed="0.000327"/>
</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-19T02:13:18.182121" elapsed="0.000275"/>
</kw>
<msg time="2026-04-19T02:13:18.182495" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:13:18.182543" level="INFO">${old_connection_index} = 24</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-19T02:13:18.181744" 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-19T02:13:18.183390" elapsed="0.000200"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:13:28.185394" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:13:18.184280" elapsed="10.002294">No match found for '
' in 10 seconds
Output:
.</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-19T02:13:18.183756" elapsed="10.002964"/>
</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-19T02:13:28.187671" elapsed="0.000508"/>
</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-19T02:13:28.187071" elapsed="0.001202"/>
</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-19T02:13:18.182863" elapsed="10.005458"/>
</kw>
<status status="PASS" start="2026-04-19T02:13:18.182643" elapsed="10.005729"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:18.182625" elapsed="10.005782"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:13:28.189430" level="INFO">${ip_address} = 10.30.171.206</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-19T02:13:28.189099" elapsed="0.000358"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:13:28.189511" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:13:28.189671" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:13:28.188665" elapsed="0.001031"/>
</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-19T02:13:28.189851" elapsed="0.000444"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:13:28.190597" level="INFO">index=29
host=10.30.171.206
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-19T02:13:28.190699" level="INFO">${karaf_connection_object} = index=29
host=10.30.171.206
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-19T02:13:28.190473" 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-19T02:13:28.190871" elapsed="0.002560"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:13:28.193863" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:13:38.256973" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:13:28.193597" elapsed="10.064268">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:13:38.270426" elapsed="0.000495"/>
</kw>
<kw name="Open 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-19T02:13:38.271103" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:13:38.271428" elapsed="0.000112"/>
</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-19T02:13:38.259130" elapsed="0.012464"/>
</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-19T02:13:38.258410" elapsed="0.013231"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:13:18.179502" elapsed="20.092224">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:13:38.272248" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.272335" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T02:12:58.163369" elapsed="40.109082">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:13:38.272566" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:13:38.272610" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:12:58.158676" elapsed="40.113958"/>
</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-19T02:13:38.272989" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:38.272729" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.272707" elapsed="0.000598"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:12:58.158537" elapsed="40.114798"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:12:57.972694" elapsed="40.300677"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:12:57.970273" elapsed="40.303160"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:12:57.965504" elapsed="40.307989"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:12:57.965085" elapsed="40.308455"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:12:57.961753" elapsed="40.311843"/>
</kw>
<kw name="Get_And_Save_Present_CsOwner_And_CsCandidates" owner="CsCommon">
<kw name="Get_Owner_And_Candidates_For_Device" owner="ClusterManagement">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Singleton" owner="ClusterManagement">
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:13:38.290003" level="INFO">${device_type} = org.opendaylight.mdsal.serviceentitytype</msg>
<var>${device_type}</var>
<arg>${device_type}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:13:38.289810" elapsed="0.000235"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<msg time="2026-04-19T02:13:38.290423" level="FAIL">Dictionary does not contain key 'org.opendaylight.mdsal.serviceentitytype'.</msg>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="FAIL" start="2026-04-19T02:13:38.290195" elapsed="0.000290">Dictionary does not contain key 'org.opendaylight.mdsal.serviceentitytype'.</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${device_id_prefix}</var>
<arg>${SINGLETON_DEVICE_ID_PREFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.290647" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${device_id_prefix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.290832" elapsed="0.000021"/>
</kw>
<kw name="Dictionary Should Contain Key" owner="Collections">
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Fails if ``key`` is not found from ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.291003" elapsed="0.000037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${device_id_suffix}</var>
<arg>${SINGLETON_DEVICE_ID_SUFFIX}</arg>
<arg>${device_type}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.291317" elapsed="0.000022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${device_id_suffix}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.291499" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${id}</var>
<arg>${device_id_prefix}${device_name}${device_id_suffix}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.291660" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${id}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.291859" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_ELECTION_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.292021" elapsed="0.000040"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_1}</var>
<var>${candidate_list_1}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by ${type} and ${id}
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.302406" elapsed="0.000027"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${type}</var>
<arg>${SINGLETON_CHANGE_OWNERSHIP_ENTITY_TYPE}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.302602" elapsed="0.000021"/>
</kw>
<kw name="Get_Owner_And_Candidates_For_Type_And_Id" owner="ClusterManagement">
<var>${owner_2}</var>
<var>${candidate_list_2}</var>
<arg>${type}</arg>
<arg>${id}</arg>
<arg>${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for entity specified by ${type} and ${id}
Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
Bear in mind that for Boron and beyond, candidates are not removed on node down or isolation.
If ${require_candidate_list} is not ${EMPTY}, check whether the actual list of candidates matches.
Note that differs from "given list" semantics used in other keywords,
namely you cannot use ${EMPTY} to stand for "full list" in this keyword.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.312997" elapsed="0.000075"/>
</kw>
<kw name="Should Be Equal As Integers" owner="BuiltIn">
<arg>${owner_1}</arg>
<arg>${owner_2}</arg>
<arg>Owners for device ${device_name} are not same</arg>
<doc>Fails if objects are unequal after converting them to integers.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.313244" elapsed="0.000022"/>
</kw>
<return>
<value>${owner_1}</value>
<value>${candidate_list_1}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.313312" elapsed="0.000015"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device get-singleton-constant-service'] of type org.opendaylight.mdsal.ServiceEntityType. Request is sent to member 1.</doc>
<status status="FAIL" start="2026-04-19T02:13:38.289262" elapsed="0.024154">Dictionary does not contain key 'org.opendaylight.mdsal.serviceentitytype'.</status>
</kw>
<msg time="2026-04-19T02:13:38.313526" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:13:38.313569" level="INFO">${results} = Dictionary does not contain key 'org.opendaylight.mdsal.serviceentitytype'.</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Singleton</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:13:38.288676" elapsed="0.024916"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot;==&quot;PASS&quot;">
<return>
<value>${results}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.313784" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.313673" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.313655" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get_Owner_And_Candidates_For_Device_Rpc" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>TODO: Can this implementation be changed to call Get_Owner_And_Candidates_For_Type_And_Id?</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T02:13:38.315188" elapsed="0.000211"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.315890" level="INFO">${index} = 1</msg>
<var>${index}</var>
<arg>${member_index}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-19T02:13:38.315553" elapsed="0.000365"/>
</kw>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:13:38.316728" level="INFO">${ip_address} = 10.30.171.9</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-19T02:13:38.316461" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:13:38.316802" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:13:38.316953" level="INFO">${ip} = 10.30.171.9</msg>
<var>${ip}</var>
<arg>member_index=${index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:13:38.316121" elapsed="0.000856"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.317529" level="INFO">${entity_type} = org.opendaylight.mdsal.ServiceEntityType</msg>
<var>${entity_type}</var>
<arg>'${device_type}' == 'netconf'</arg>
<arg>netconf-node/${device_name}</arg>
<arg>${device_type}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:13:38.317149" elapsed="0.000407"/>
</kw>
<kw name="Catenate" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.318076" level="INFO">${url} = http://10.30.171.9:8181/rests</msg>
<var>${url}</var>
<arg>SEPARATOR=</arg>
<arg>http://</arg>
<arg>${ip}</arg>
<arg>:8181/</arg>
<arg>${RESTCONF_URI}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="PASS" start="2026-04-19T02:13:38.317712" elapsed="0.000418"/>
</kw>
<kw name="Get Entity" owner="ClusterEntities">
<msg time="2026-04-19T02:13:38.318552" level="INFO">Data 
    {
        "odl-entity-owners:input" : {
            "type": "org.opendaylight.mdsal.ServiceEntityType",
            "name": "get-singleton-constant-service']"
        }
    }
    </msg>
<msg time="2026-04-19T02:13:38.449098" level="FAIL">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${entity_result}</var>
<arg>${url}</arg>
<arg>${entity_type}</arg>
<arg>${device_name}</arg>
<doc>Calls the get-entity rpc on the controller and returns the result in a
dictionary that contains the parsed response in two keys:
"candidates" and "owner"</doc>
<status status="FAIL" start="2026-04-19T02:13:38.318304" elapsed="0.132849">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_candidates}</var>
<arg>${entity_result}</arg>
<arg>candidates</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.451375" elapsed="0.000028"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${entity_owner}</var>
<arg>${entity_result}</arg>
<arg>owner</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.451551" elapsed="0.000021"/>
</kw>
<kw name="Should Not Be Empty" owner="BuiltIn">
<arg>${entity_owner}</arg>
<arg>No owner found for ${device_name}</arg>
<doc>Verifies that the given item is not empty.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.451717" elapsed="0.000020"/>
</kw>
<kw name="Replace String" owner="String">
<var>${owner}</var>
<arg>${entity_owner}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.451881" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${owner}</var>
<arg>${owner}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.452087" elapsed="0.000021"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${candidate_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.452252" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String" owner="String">
<var>${candidate}</var>
<arg>${entity_candidate}</arg>
<arg>member-</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``search_for`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.452533" elapsed="0.000021"/>
</kw>
<kw name="Convert To Integer" owner="BuiltIn">
<var>${candidate}</var>
<arg>${candidate}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.452707" elapsed="0.000066"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${candidate_list}</arg>
<arg>${candidate}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.452942" elapsed="0.000021"/>
</kw>
<var name="${entity_candidate}"/>
<status status="NOT RUN" start="2026-04-19T02:13:38.452404" elapsed="0.000593"/>
</iter>
<var>${entity_candidate}</var>
<value>@{entity_candidates}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.452325" elapsed="0.000698"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${candidate_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.453179" elapsed="0.000020"/>
</kw>
<return>
<value>${owner}</value>
<value>${candidate_list}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.453239" elapsed="0.000016"/>
</return>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Returns the owner and a list of candidates for the SB device get-singleton-constant-service'] of type org.opendaylight.mdsal.ServiceEntityType. Request is sent to member 1.
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-19T02:13:38.314625" elapsed="0.138733">ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</status>
</kw>
<msg time="2026-04-19T02:13:38.453487" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:13:38.453531" level="INFO">${results} = ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))</msg>
<var>${status}</var>
<var>${results}</var>
<arg>Get_Owner_And_Candidates_For_Device_Rpc</arg>
<arg>device_name=${device_name}</arg>
<arg>device_type=${device_type}</arg>
<arg>member_index=${member_index}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:13:38.313999" elapsed="0.139555"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='FAIL'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.454260" level="FAIL">Could not parse owner and candidates for device get-singleton-constant-service']</msg>
<arg>Could not parse owner and candidates for device ${device_name}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-19T02:13:38.453869" elapsed="0.000451">Could not parse owner and candidates for device get-singleton-constant-service']</status>
</kw>
<status status="FAIL" start="2026-04-19T02:13:38.453642" elapsed="0.000739">Could not parse owner and candidates for device get-singleton-constant-service']</status>
</branch>
<status status="FAIL" start="2026-04-19T02:13:38.453622" elapsed="0.000791">Could not parse owner and candidates for device get-singleton-constant-service']</status>
</if>
<return>
<value>@{results}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.454458" elapsed="0.000015"/>
</return>
<var>${cs_owner}</var>
<var>${cs_candidates}</var>
<arg>${CS_DEVICE_NAME}</arg>
<arg>${CS_DEVICE_TYPE}</arg>
<arg>${node_to_ask}</arg>
<doc>Returns the owner and a list of candidates for the SB device ${device_name} of type ${device_type}. Request is sent to member ${member_index}.
If parsing as singleton failed, kw try to parse data in old way (without singleton).
Candidates are all members that register to own a device, so the list of candiates includes the owner.
The returned candidate list is sorted numerically.
Note that "candidate list" definition currently differs between Beryllium and Boron.
It is recommended to use Get_Owner_And_Successors_For_Device instead of this keyword, see documentation there.</doc>
<status status="FAIL" start="2026-04-19T02:13:38.286482" elapsed="0.168070">Could not parse owner and candidates for device get-singleton-constant-service']</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${cs_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.454737" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${cs_candidates}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.454906" elapsed="0.000019"/>
</kw>
<return>
<value>${cs_owner}</value>
<value>${cs_candidates}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.454964" elapsed="0.000014"/>
</return>
<var>${owner}</var>
<var>${candidates}</var>
<arg>1</arg>
<doc>Store owner index into suite variables.</doc>
<status status="FAIL" start="2026-04-19T02:13:38.273839" elapsed="0.181237">Could not parse owner and candidates for device get-singleton-constant-service']</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>15</arg>
<arg>2s</arg>
<arg>CsCommon.Verify_Singleton_Constant_On_Nodes</arg>
<arg>${cs_all_indices}</arg>
<arg>${CS_CONSTANT_PREFIX}${owner}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.455250" elapsed="0.000021"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.456595" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:38.456213" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.456195" elapsed="0.000486"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:13:38.456824" elapsed="0.000339"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.461984" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:13:38.461569" elapsed="0.000443"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:13:38.462246" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.462102" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.462083" elapsed="0.000225"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.462750" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:13:38.462450" elapsed="0.000327"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:13:38.463248" level="INFO">${reference} = controller_clustering_ask_txt_Partition_And_Heal_Verify_Singleton_Constant_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:13:38.462966" elapsed="0.000310"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:13:38.463609" level="INFO">${reference} = controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:13:38.463432" elapsed="0.000204"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.464164" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:13:38.463786" elapsed="0.000406"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.464658" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:13:38.464345" elapsed="0.000341"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.465290" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node&amp;order=bug_status"

Could not parse owner and candidates for device get-singleton-constant-service']</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:13:38.464838" elapsed="0.000504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.465789" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:13:38.465493" elapsed="0.000346"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:13:38.461265" elapsed="0.004629"/>
</kw>
<status status="PASS" start="2026-04-19T02:13:38.455986" elapsed="0.009958"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:13:38.455585" elapsed="0.010402"/>
</kw>
<doc>Store the owner and candidates of the application and initially verify that all
odl nodes are used.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:12:57.961152" elapsed="40.504889">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_verify_singleton_constant_on_each_node&amp;order=bug_status"

Could not parse owner and candidates for device get-singleton-constant-service']</status>
</test>
<test id="s1-s12-t3" name="Isolate_Owner_Node" line="54">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:13:38.470415" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:13:38.470149" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.471661" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.471552" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.471533" elapsed="0.000196"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.476560" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.476454" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.476436" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.477624" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:13:38.477243" elapsed="0.000408"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.478125" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:13:38.477805" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:13:38.478195" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:13:38.478351" level="INFO">${index_list} = [1, 2, 3]</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-19T02:13:38.476852" elapsed="0.001523"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.483672" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.483563" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.483544" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.484937" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.484829" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.484811" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:13:38.485468" 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-19T02:13:38.485168" elapsed="0.000328"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:13:38.485870" 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-19T02:13:38.485653" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:13:38.531109" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:13:38.486401" elapsed="0.044811"/>
</kw>
<msg time="2026-04-19T02:13:38.531377" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:13:38.531425" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:13:38.486068" elapsed="0.045396"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:13:38.569760" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "w "n "e "r "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:13:38.532046" elapsed="0.037824"/>
</kw>
<msg time="2026-04-19T02:13:38.570050" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:13:38.570100" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:13:38.531636" elapsed="0.038502"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.570446" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:38.570218" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.570197" elapsed="0.000329"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:13:38.570968" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "w "n "e "r "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:13:38.570665" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.571345" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:38.571129" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.571111" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:13:38.571456" elapsed="0.000028"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:13:38.572915" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:13:38.573962" elapsed="0.000471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:13:38.574689" elapsed="0.000377"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:13:38.572300" elapsed="0.002869"/>
</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-19T02:13:38.571724" elapsed="0.003507"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:13:38.484526" elapsed="0.090805"/>
</kw>
<msg time="2026-04-19T02:13:38.575421" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:13:38.575465" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:13:38.483890" elapsed="0.091611"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:13:38.575684" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:13:38.575577" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.575558" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.576237" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:13:38.576567" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:13:38.576638" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:13:38.483191" elapsed="0.093554"/>
</kw>
<msg time="2026-04-19T02:13:38.576836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:13:38.576879" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "I "s "o "l "a "t "e "_ "O "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:13:38.478734" elapsed="0.098186"/>
</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-19T02:13:38.577256" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:38.576994" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.576976" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:13:38.478596" elapsed="0.098758"/>
</iter>
<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-19T02:13:38.582660" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.582552" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.582533" 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-19T02:13:38.584068" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:38.583910" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:38.583891" elapsed="0.000247"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:13:38.584574" level="INFO">${karaf_connection_index} = 12</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-19T02:13:38.584279" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:13:38.584966" 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-19T02:13:38.584755" elapsed="0.000238"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:13:38.585755" level="FAIL">OSError: Socket is closed</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:13:38.585499" elapsed="0.001111">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-19T02:13:38.586793" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:13:38.586840" level="INFO">${message_write} = OSError: Socket is closed</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-19T02:13:38.585166" elapsed="0.001697"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:13:48.588519" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:13:38.587389" elapsed="10.001985">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:13:48.589640" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:13:48.589689" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:13:38.587049" elapsed="10.002665"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:13:48.590973" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</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-19T02:13:48.590202" elapsed="0.000856">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:13:48.589840" elapsed="0.001291">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:13:48.589805" elapsed="0.001362">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</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-19T02:13:48.591332" 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-19T02:13:48.591568" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:48.591420" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:13:48.591403" elapsed="0.000242"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:13:48.591684" elapsed="0.000016"/>
</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-19T02:13:48.593396" elapsed="0.000840"/>
</kw>
<kw name="Open 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-19T02:13:48.594517" elapsed="0.000477"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:13:48.595275" elapsed="0.000372"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:13:48.592695" elapsed="0.003058"/>
</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-19T02:13:48.591981" elapsed="0.003836"/>
</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-19T02:13:38.583606" elapsed="10.012306">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</status>
</kw>
<msg time="2026-04-19T02:13:48.596016" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:13:48.596076" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</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-19T02:13:38.582878" elapsed="10.013223"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:13:48.596288" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:48.596178" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:48.596159" elapsed="0.000195"/>
</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-19T02:13:48.597166" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:48.597060" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:48.597026" elapsed="0.000219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:13:48.597555" 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-19T02:13:48.597659" 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-19T02:13:48.597404" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:13:48.598148" level="INFO">{1: 10, 2: 12, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:13:48.597836" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:13:48.598583" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:13:48.598342" 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-19T02:13:48.599152" elapsed="0.000267"/>
</kw>
<msg time="2026-04-19T02:13:48.599516" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:13:48.599561" level="INFO">${old_connection_index} = 12</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-19T02:13:48.598781" elapsed="0.000802"/>
</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-19T02:13:48.600406" elapsed="0.000196"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:13:48.601702" level="FAIL">OSError: Socket is closed</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:13:48.601283" elapsed="0.001265">OSError: Socket is closed</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-19T02:13:48.600767" elapsed="0.001879"/>
</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-19T02:13:48.603303" elapsed="0.000432"/>
</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-19T02:13:48.602817" elapsed="0.001009"/>
</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-19T02:13:48.599876" elapsed="0.004011"/>
</kw>
<status status="PASS" start="2026-04-19T02:13:48.599658" elapsed="0.004293"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:48.599640" elapsed="0.004349"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:13:48.605022" level="INFO">${ip_address} = 10.30.171.128</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-19T02:13:48.604629" elapsed="0.000570"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:13:48.605269" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:13:48.605442" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:13:48.604227" elapsed="0.001241"/>
</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-19T02:13:48.605667" elapsed="0.000486"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:13:48.606514" level="INFO">index=33
host=10.30.171.128
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-19T02:13:48.606616" level="INFO">${karaf_connection_object} = index=33
host=10.30.171.128
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-19T02:13:48.606392" elapsed="0.000251"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:13:48.606793" elapsed="0.002787"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:13:48.610107" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:13:48.612163" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:13:48.609791" elapsed="0.003018">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:13:48.628431" elapsed="0.000569"/>
</kw>
<kw name="Open 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-19T02:13:48.629257" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:13:48.629700" elapsed="0.000117"/>
</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-19T02:13:48.613767" elapsed="0.016128"/>
</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-19T02:13:48.613155" elapsed="0.016818"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:13:48.596750" elapsed="0.033389">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:13:48.630555" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:13:48.630639" elapsed="0.000022"/>
</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-19T02:13:38.582210" elapsed="10.048550">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</status>
</kw>
<msg time="2026-04-19T02:13:48.630875" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:13:48.630923" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:13:38.577615" elapsed="10.053332"/>
</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-19T02:13:48.631356" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:13:48.631052" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:48.631014" elapsed="0.000437"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:13:38.577478" elapsed="10.054016"/>
</iter>
<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-19T02:13:48.638445" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:48.638303" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:48.638273" elapsed="0.000258"/>
</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-19T02:13:48.639741" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:13:48.639633" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:13:48.639616" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:13:48.640288" level="INFO">${karaf_connection_index} = 29</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-19T02:13:48.639950" elapsed="0.000370"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:13:48.640695" 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-19T02:13:48.640477" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:13:58.642093" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:13:48.641226" elapsed="10.001895">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:13:58.643507" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:13:58.643558" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:13:48.640875" elapsed="10.002707"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:14:08.644895" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:13:58.644324" elapsed="10.001465">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:14:08.646092" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:14:08.646143" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:13:58.643859" elapsed="10.002309"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:14:08.647805" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</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-19T02:14:08.646696" elapsed="0.001177">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:14:08.646314" elapsed="0.001641">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:14:08.646271" elapsed="0.001725">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</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-19T02:14:08.648206" elapsed="0.000025"/>
</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-19T02:14:08.648445" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:08.648302" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:14:08.648284" elapsed="0.000240"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:14:08.648561" 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-19T02:14:08.650212" elapsed="0.000804"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:14:08.651335" elapsed="0.000472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:14:08.652089" elapsed="0.000377"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:14:08.649484" elapsed="0.003087"/>
</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-19T02:14:08.648863" elapsed="0.003774"/>
</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-19T02:13:48.639327" elapsed="20.013396">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</status>
</kw>
<msg time="2026-04-19T02:14:08.652829" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:14:08.652875" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Isolate_Owner_Node"</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-19T02:13:48.638695" elapsed="20.014205"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:14:08.653150" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:08.652978" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:08.652959" elapsed="0.000262"/>
</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-19T02:14:08.654084" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:08.653948" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:08.653929" elapsed="0.000224"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:08.654448" 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-19T02:14:08.654552" 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-19T02:14:08.654302" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:08.654993" level="INFO">{1: 10, 2: 33, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:08.654727" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:08.655602" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:08.655356" elapsed="0.000291"/>
</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-19T02:14:08.656168" elapsed="0.000395"/>
</kw>
<msg time="2026-04-19T02:14:08.656758" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:14:08.656805" level="INFO">${old_connection_index} = 29</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-19T02:14:08.655802" elapsed="0.001026"/>
</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-19T02:14:08.657672" elapsed="0.000203"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:14:18.659747" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:14:08.658575" elapsed="10.002265">No match found for '
' in 10 seconds
Output:
.</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-19T02:14:08.658069" elapsed="10.002909"/>
</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-19T02:14:18.661900" elapsed="0.000614"/>
</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-19T02:14:18.661342" elapsed="0.001259"/>
</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-19T02:14:08.657136" elapsed="10.005513"/>
</kw>
<status status="PASS" start="2026-04-19T02:14:08.656903" elapsed="10.005798"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:08.656885" elapsed="10.005849"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:14:18.663749" level="INFO">${ip_address} = 10.30.171.206</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-19T02:14:18.663411" elapsed="0.000365"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:14:18.663829" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:14:18.663992" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:14:18.662986" elapsed="0.001030"/>
</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-19T02:14:18.664266" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:18.664988" level="INFO">index=36
host=10.30.171.206
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-19T02:14:18.665211" level="INFO">${karaf_connection_object} = index=36
host=10.30.171.206
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-19T02:14:18.664862" elapsed="0.000377"/>
</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-19T02:14:18.665386" elapsed="0.002535"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:14:18.668370" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:14:28.734694" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:14:18.668099" elapsed="10.067468">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:14:28.748159" elapsed="0.000498"/>
</kw>
<kw name="Open 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-19T02:14:28.748822" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:14:28.749152" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:14:28.736782" elapsed="0.012540"/>
</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-19T02:14:28.736086" elapsed="0.013285"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:14:08.653649" elapsed="20.095811">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:14:28.749829" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.749905" elapsed="0.000020"/>
</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-19T02:13:48.637767" elapsed="40.112252">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:14:28.750508" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:14:28.750556" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:13:48.631820" elapsed="40.118760"/>
</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-19T02:14:28.750932" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:28.750672" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.750648" elapsed="0.000362"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:13:48.631653" elapsed="40.119404"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:13:38.478426" elapsed="50.272671"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:13:38.476093" elapsed="50.275064"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:13:38.471263" elapsed="50.279952"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:13:38.470825" elapsed="50.280438"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:13:38.467350" elapsed="50.283966"/>
</kw>
<kw name="Isolate_Owner_And_Verify_Isolated" owner="CsCommon">
<kw name="Isolate_Member_From_List_Or_All" owner="ClusterManagement">
<msg time="2026-04-19T02:14:28.756138" level="FAIL">Variable '${cs_owner}' not found.</msg>
<arg>${cs_owner}</arg>
<doc>If the list is empty, isolate member from all ODL instances. Otherwise, isolate member based on present indices.
The KW will return a list of available members: ${updated index_list}=${member_index_list}-${isolate_member_index}</doc>
<status status="FAIL" start="2026-04-19T02:14:28.752017" elapsed="0.004162">Variable '${cs_owner}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${cs_isolated_index}</arg>
<arg>${cs_owner}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.756355" elapsed="0.000022"/>
</kw>
<kw name="List_Indices_Minus_Member" owner="ClusterManagement">
<var>${non_isolated_list}</var>
<arg>${cs_isolated_index}</arg>
<arg>member_index_list=${cs_all_indices}</arg>
<doc>Create a new list which contains indices from ${member_index_list} (or all) without ${member_index}.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.764460" elapsed="0.000027"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${node_to_ask}</var>
<arg>${non_isolated_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.764644" elapsed="0.000021"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>70s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>member_index_list=${non_isolated_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.764820" elapsed="0.000020"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>30s</arg>
<arg>2s</arg>
<arg>ClusterManagement.Check_New_Owner_Got_Elected_For_Device</arg>
<arg>${CS_DEVICE_NAME}</arg>
<arg>${CS_DEVICE_TYPE}</arg>
<arg>${cs_isolated_index}</arg>
<arg>${node_to_ask}</arg>
<arg>http_timeout=125</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.764994" elapsed="0.000020"/>
</kw>
<kw name="Get_And_Save_Present_CsOwner_And_CsCandidates" owner="CsCommon">
<arg>${node_to_ask}</arg>
<doc>Store owner index into suite variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.765237" elapsed="0.000024"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>3s</arg>
<arg>Verify_Singleton_Constant_During_Isolation</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.765407" elapsed="0.000020"/>
</kw>
<doc>Isolate the owner cluster node. Wait until the new owner is elected and store new values of owner and candidates.</doc>
<status status="FAIL" start="2026-04-19T02:14:28.751561" elapsed="0.013957">Variable '${cs_owner}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.766768" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:28.766375" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.766357" elapsed="0.000495"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:14:28.766991" elapsed="0.000333"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.772222" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:14:28.771671" elapsed="0.000580"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:14:28.772468" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.772325" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.772307" elapsed="0.000222"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.772966" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:14:28.772669" elapsed="0.000323"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:14:28.773421" level="INFO">${reference} = controller_clustering_ask_txt_Partition_And_Heal_Isolate_Owner_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:14:28.773161" elapsed="0.000323"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:14:28.773827" level="INFO">${reference} = controller_clustering_ask_txt_partition_and_heal_isolate_owner_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:14:28.773644" elapsed="0.000210"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.774371" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_isolate_owner_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:14:28.774004" elapsed="0.000399"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.774885" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_isolate_owner_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:14:28.774571" elapsed="0.000343"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.775525" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_isolate_owner_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_isolate_owner_node&amp;order=bug_status"

Variable '${cs_owner}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:14:28.775080" elapsed="0.000496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.776040" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_isolate_owner_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_isolate_owner_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:28.775728" elapsed="0.000362"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:14:28.771373" elapsed="0.004773"/>
</kw>
<status status="PASS" start="2026-04-19T02:14:28.766168" elapsed="0.010028"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:14:28.765801" elapsed="0.010437"/>
</kw>
<doc>Isolate the cluster node which is the owner. Wait until the new owner is elected and store
new values of owner and candidates.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:13:38.466664" elapsed="50.309611">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_isolate_owner_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_isolate_owner_node&amp;order=bug_status"

Variable '${cs_owner}' not found.</status>
</test>
<test id="s1-s12-t4" name="Monitor_Stability_While_Isolated" line="59">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:14:28.779768" elapsed="0.000209"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:14:28.779511" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.781011" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.780902" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.780883" elapsed="0.000215"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.785832" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.785720" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.785702" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.786906" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:14:28.786527" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.787407" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:14:28.787103" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:14:28.787477" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:14:28.787634" level="INFO">${index_list} = [1, 2, 3]</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-19T02:14:28.786133" elapsed="0.001526"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.792884" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.792777" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.792759" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.794144" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.794014" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.793996" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:14:28.794676" 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-19T02:14:28.794351" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.795089" 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-19T02:14:28.794858" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.840881" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:14:28.795597" elapsed="0.045382"/>
</kw>
<msg time="2026-04-19T02:14:28.841176" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:14:28.841223" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:14:28.795270" elapsed="0.045989"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.877269" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "M "o "n "i "t "o "r "_ "S "t "a "b "i "l "i "t "y "_ "W "h "i "l "e "_ "I "s "o "l "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:14:28.841762" elapsed="0.035809"/>
</kw>
<msg time="2026-04-19T02:14:28.877885" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:14:28.877954" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "M "o "n "i "t "o "r "_ "S "...</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-19T02:14:28.841426" elapsed="0.036582"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.878665" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:28.878195" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.878149" elapsed="0.000637"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.879527" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "M "o "n "i "t "o "r "_ "S "t "a "b "i "l "i "t "y "_ "W "h "i "l "e "_ "I "s "o "l "a "t "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:28.878984" elapsed="0.000647"/>
</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-19T02:14:28.880046" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:28.879726" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.879700" elapsed="0.000459"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:14:28.880221" elapsed="0.000060"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:14:28.881837" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:14:28.882928" elapsed="0.000495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:14:28.883686" elapsed="0.000380"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:14:28.881187" elapsed="0.002981"/>
</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-19T02:14:28.880586" elapsed="0.003646"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:14:28.793714" elapsed="0.090620"/>
</kw>
<msg time="2026-04-19T02:14:28.884429" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:14:28.884476" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "M "o "n "i "t "o "r "_ "S "...</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-19T02:14:28.793113" elapsed="0.091401"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:14:28.884698" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:14:28.884591" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.884573" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.885205" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:14:28.885611" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.885684" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:14:28.792445" elapsed="0.093349"/>
</kw>
<msg time="2026-04-19T02:14:28.885889" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:14:28.885933" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "M "o "n "i "t "o "r "_ "S "...</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-19T02:14:28.788040" elapsed="0.097931"/>
</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-19T02:14:28.886311" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:28.886064" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.886045" elapsed="0.000343"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:14:28.787887" elapsed="0.098525"/>
</iter>
<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-19T02:14:28.891804" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.891697" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.891679" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.893011" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.892903" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.892886" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:14:28.893539" level="INFO">${karaf_connection_index} = 33</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-19T02:14:28.893235" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.893935" 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-19T02:14:28.893721" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.894734" 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-19T02:14:28.894461" elapsed="0.000979">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:14:28.895625" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:14:28.895671" 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-19T02:14:28.894130" elapsed="0.001565"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.896640" 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-19T02:14:28.896215" elapsed="0.001086">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:14:28.897485" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:14:28.897530" 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-19T02:14:28.895860" elapsed="0.001693"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.898474" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</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-19T02:14:28.897842" elapsed="0.000718">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:14:28.897627" elapsed="0.001008">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:14:28.897608" elapsed="0.001060">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</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-19T02:14:28.898825" 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-19T02:14:28.899060" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:28.898909" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:14:28.898893" elapsed="0.000243"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.899169" elapsed="0.000014"/>
</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-19T02:14:28.900593" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:14:28.901697" elapsed="0.000493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:14:28.902459" elapsed="0.000368"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:14:28.899939" elapsed="0.002988"/>
</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-19T02:14:28.899418" elapsed="0.003573"/>
</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-19T02:14:28.892600" elapsed="0.010489">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</status>
</kw>
<msg time="2026-04-19T02:14:28.903191" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:14:28.903234" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</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-19T02:14:28.892019" elapsed="0.011238"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.903440" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.903333" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.903315" 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-19T02:14:28.904317" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.904214" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.904196" elapsed="0.000188"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.904688" 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-19T02:14:28.904790" 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-19T02:14:28.904530" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.905237" level="INFO">{1: 10, 2: 33, 3: 36}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:28.904961" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:28.905664" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:28.905426" 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-19T02:14:28.906222" elapsed="0.000256"/>
</kw>
<msg time="2026-04-19T02:14:28.906589" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:14:28.906638" level="INFO">${old_connection_index} = 33</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-19T02:14:28.905857" elapsed="0.000803"/>
</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-19T02:14:28.907470" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.908736" 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-19T02:14:28.908333" elapsed="0.001270">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-19T02:14:28.907822" elapsed="0.001880"/>
</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-19T02:14:28.910356" elapsed="0.000304"/>
</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-19T02:14:28.909867" elapsed="0.000875"/>
</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-19T02:14:28.906949" elapsed="0.003839"/>
</kw>
<status status="PASS" start="2026-04-19T02:14:28.906733" elapsed="0.004103"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.906715" elapsed="0.004146"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:14:28.911705" level="INFO">${ip_address} = 10.30.171.128</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-19T02:14:28.911398" elapsed="0.000333"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:14:28.911779" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:14:28.911927" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:14:28.911078" elapsed="0.000873"/>
</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-19T02:14:28.912189" elapsed="0.000576"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.913095" level="INFO">index=40
host=10.30.171.128
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-19T02:14:28.913196" level="INFO">${karaf_connection_object} = index=40
host=10.30.171.128
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-19T02:14:28.912965" elapsed="0.000257"/>
</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-19T02:14:28.913370" elapsed="0.002240"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.916101" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:14:28.917865" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:14:28.915771" elapsed="0.002502">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:14:28.930460" elapsed="0.000500"/>
</kw>
<kw name="Open 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-19T02:14:28.931308" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:14:28.931602" 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-19T02:14:28.919129" elapsed="0.012618"/>
</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-19T02:14:28.918569" elapsed="0.013221"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:14:28.903887" elapsed="0.027984">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:14:28.932212" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.932284" 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-19T02:14:28.891352" elapsed="0.041035">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</status>
</kw>
<msg time="2026-04-19T02:14:28.932487" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:14:28.932529" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:14:28.886711" elapsed="0.045841"/>
</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-19T02:14:28.932869" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:28.932626" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.932608" elapsed="0.000338"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:14:28.886565" elapsed="0.046404"/>
</iter>
<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-19T02:14:28.938311" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.938203" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.938184" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:14:28.939719" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:28.939611" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:28.939594" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:14:28.940231" level="INFO">${karaf_connection_index} = 36</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-19T02:14:28.939921" elapsed="0.000337"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:28.940618" 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-19T02:14:28.940409" elapsed="0.000234"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:14:38.941691" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:14:28.941138" elapsed="10.001478">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:14:38.942867" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:14:38.942916" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:14:28.940796" elapsed="10.002144"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:14:48.944172" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:14:38.943768" elapsed="10.001154">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:14:48.945208" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:14:48.945261" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:14:38.943306" elapsed="10.001981"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:14:48.946474" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</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-19T02:14:48.945726" elapsed="0.000814">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:14:48.945402" elapsed="0.001210">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:14:48.945369" elapsed="0.001280">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</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-19T02:14:48.946817" elapsed="0.000025"/>
</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-19T02:14:48.947068" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:14:48.946908" elapsed="0.000215"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:14:48.946890" elapsed="0.000269"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:14:48.947207" 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-19T02:14:48.948815" elapsed="0.000840"/>
</kw>
<kw name="Open 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-19T02:14:48.949935" elapsed="0.000519"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:14:48.950719" elapsed="0.000432"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:14:48.948120" elapsed="0.003148"/>
</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-19T02:14:48.947517" elapsed="0.003816"/>
</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-19T02:14:28.939312" elapsed="20.012117">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</status>
</kw>
<msg time="2026-04-19T02:14:48.951539" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:14:48.951584" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Monitor_Stability_While_Isolated"</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-19T02:14:28.938547" elapsed="20.013061"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:14:48.951798" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:48.951686" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:48.951667" elapsed="0.000196"/>
</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-19T02:14:48.952705" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:14:48.952597" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:48.952580" elapsed="0.000192"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:48.953082" 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-19T02:14:48.953197" 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-19T02:14:48.952923" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:48.953648" level="INFO">{1: 10, 2: 40, 3: 36}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:48.953378" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:14:48.954131" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:14:48.953848" elapsed="0.000337"/>
</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-19T02:14:48.954713" elapsed="0.000266"/>
</kw>
<msg time="2026-04-19T02:14:48.955226" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:14:48.955353" 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-19T02:14:48.954348" elapsed="0.001034"/>
</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-19T02:14:48.956238" elapsed="0.000201"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:14:58.957971" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:14:48.957118" elapsed="10.001866">No match found for '
' in 10 seconds
Output:
.</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-19T02:14:48.956608" elapsed="10.002545"/>
</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-19T02:14:58.959985" elapsed="0.000460"/>
</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-19T02:14:58.959428" elapsed="0.001101"/>
</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-19T02:14:48.955693" elapsed="10.004885"/>
</kw>
<status status="PASS" start="2026-04-19T02:14:48.955465" elapsed="10.005164"/>
</branch>
<status status="PASS" start="2026-04-19T02:14:48.955445" elapsed="10.005219"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:14:58.961648" level="INFO">${ip_address} = 10.30.171.206</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-19T02:14:58.961299" elapsed="0.000376"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:14:58.961727" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:14:58.961888" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:14:58.960903" elapsed="0.001010"/>
</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-19T02:14:58.962084" elapsed="0.000647"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:14:58.963020" level="INFO">index=43
host=10.30.171.206
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-19T02:14:58.963139" level="INFO">${karaf_connection_object} = index=43
host=10.30.171.206
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-19T02:14:58.962902" 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-19T02:14:58.963313" elapsed="0.002268"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:14:58.966002" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:15:09.032413" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:14:58.965741" elapsed="10.067495">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:15:09.047490" 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-19T02:15:09.048455" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:09.048772" 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-19T02:15:09.034446" elapsed="0.014481"/>
</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-19T02:15:09.033735" elapsed="0.015238"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:14:48.952300" elapsed="20.096776">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:15:09.049446" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.049523" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T02:14:28.937852" elapsed="40.111785">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:15:09.049750" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:09.049795" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:14:28.933248" elapsed="40.116681"/>
</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-19T02:15:09.050298" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.050025" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.050003" elapsed="0.000374"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:14:28.933112" elapsed="40.117296"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:14:28.787714" elapsed="40.262729"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:14:28.785362" elapsed="40.265141"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:14:28.780613" elapsed="40.269948"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:14:28.780195" elapsed="40.270413"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:14:28.777265" elapsed="40.273401"/>
</kw>
<kw name="Verify_Keyword_Does_Not_Fail_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Confirm_Keyword_Fails_Within_Timeout" owner="WaitForFailure">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Invert_Failure" owner="WaitForFailure">
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Verify_Singleton_Constant_During_Isolation" owner="CsCommon">
<for flavor="IN">
<iter>
<if>
<branch type="IF" condition="&quot;${index}&quot; == &quot;${cs_isolated_index}&quot;">
<kw name="Log" owner="BuiltIn">
<arg>Node not triggered, behavior not well described, see bugs 8207, 8214.</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:09.062344" elapsed="0.000023"/>
</kw>
<msg time="2026-04-19T02:15:09.062426" level="FAIL">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</msg>
<status status="FAIL" start="2026-04-19T02:15:09.057967" elapsed="0.004540">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</branch>
<status status="FAIL" start="2026-04-19T02:15:09.057914" elapsed="0.004641">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</if>
<if>
<branch type="IF" condition="&quot;${index}&quot; != &quot;${cs_isolated_index}&quot;">
<kw name="Verify_Singleton_Constant_On_Node" owner="CsCommon">
<arg>${index}</arg>
<arg>${CS_CONSTANT_PREFIX}${cs_owner}</arg>
<doc>Verify that the expected constant is return from the given node.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:09.062986" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.062716" elapsed="0.000422"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:15:09.062663" elapsed="0.000517"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:15:09.057852" elapsed="0.005412">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</iter>
<var>${index}</var>
<value>@{cs_all_indices}</value>
<status status="FAIL" start="2026-04-19T02:15:09.057418" elapsed="0.005938">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</for>
<doc>Iterate over all non-isolated cluster nodes. They should return the correct constant.</doc>
<status status="FAIL" start="2026-04-19T02:15:09.057243" elapsed="0.006324">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</kw>
<msg time="2026-04-19T02:15:09.063669" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:09.063713" level="INFO">${output} = Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:15:09.056657" elapsed="0.007080"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:15:09.063918" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:15:09.063807" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.063789" elapsed="0.000214"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:09.064168" elapsed="0.000022"/>
</kw>
<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-19T02:15:09.064332" elapsed="0.000020"/>
</kw>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="PASS" start="2026-04-19T02:15:09.056011" elapsed="0.008438"/>
</kw>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:15:09.053585" elapsed="0.010913"/>
</kw>
<msg time="2026-04-19T02:15:09.064549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>BuiltIn.Wait_Until_Keyword_Succeeds</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>Invert_Failure</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:15:09.053225" elapsed="0.011409"/>
</kw>
<arg>120s</arg>
<arg>3s</arg>
<arg>CsCommon.Verify_Singleton_Constant_During_Isolation</arg>
<doc>Some Keywords need several tries to finally fail, this keyword passes if and only if the failure ultimately happens.</doc>
<status status="PASS" start="2026-04-19T02:15:09.052889" elapsed="0.011841"/>
</kw>
<msg time="2026-04-19T02:15:09.064825" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:09.064867" level="INFO">${output} = Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</msg>
<var>${status}</var>
<var>${output}</var>
<arg>@{cell_sequence}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:15:09.052490" elapsed="0.012439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; != &quot;PASS&quot;">
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.065127" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.065001" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.064984" elapsed="0.000207"/>
</if>
<kw name="Convert To String" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.065642" level="INFO">${output} = Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</msg>
<var>${output}</var>
<arg>${output}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="PASS" start="2026-04-19T02:15:09.065331" elapsed="0.000337"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.066128" level="FAIL">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</msg>
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="FAIL" start="2026-04-19T02:15:09.065817" elapsed="0.000374">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</kw>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>The response of Keyword execution is either a return value or a failure message.
This keyword calls the argument keyword and returns its failure message string,
or fails with its return value converted to string.</doc>
<status status="FAIL" start="2026-04-19T02:15:09.051727" elapsed="0.014562">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</kw>
<msg time="2026-04-19T02:15:09.066341" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Invert_Failure</arg>
<arg>Confirm_Keyword_Fails_Within_Timeout</arg>
<arg>${timeout}</arg>
<arg>${refresh}</arg>
<arg>@{cell_list}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T02:15:09.051280" elapsed="0.015104"/>
</kw>
<arg>${STABILITY_TIMEOUT_ISOLATED}</arg>
<arg>3s</arg>
<arg>CsCommon.Verify_Singleton_Constant_During_Isolation</arg>
<doc>Some positive checks report false success for a short time. This keyword verifies no failure does happen within timeout period.
This implementation needs more complicated logic than, Verify_Keyword_Never_Passes_Within_Timeout,
so use that keyword in case you have a negative check handy.</doc>
<status status="FAIL" start="2026-04-19T02:15:09.050876" elapsed="0.015599">Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:09.067740" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.067368" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.067351" elapsed="0.000474"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:15:09.067967" elapsed="0.000383"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.073523" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:15:09.072965" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:15:09.073772" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.073627" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.073609" elapsed="0.000224"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.074297" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:15:09.073976" elapsed="0.000347"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:15:09.074739" level="INFO">${reference} = controller_clustering_ask_txt_Partition_And_Heal_Monitor_Stability_While_Isolated</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:15:09.074479" elapsed="0.000286"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:15:09.075133" level="INFO">${reference} = controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:15:09.074936" elapsed="0.000223"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.075651" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:15:09.075309" elapsed="0.000368"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.076150" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:15:09.075829" elapsed="0.000348"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.076766" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated&amp;order=bug_status"

Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:15:09.076328" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.077327" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:09.077011" elapsed="0.000364"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:15:09.072639" elapsed="0.004792"/>
</kw>
<status status="PASS" start="2026-04-19T02:15:09.067161" elapsed="0.010320"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:15:09.066776" elapsed="0.010747"/>
</kw>
<doc>Monitor the stability of the singleton application and fail the the owner is changed during the monitoring.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:14:28.776646" elapsed="40.300918">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_monitor_stability_while_isolated&amp;order=bug_status"

Invalid IF condition: Evaluating expression '"${index}" == "${cs_isolated_index}"' failed: Variable '${cs_isolated_index}' not found.</status>
</test>
<test id="s1-s12-t5" name="Rejoin_Isolated_node" line="66">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:15:09.080919" elapsed="0.000228"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:15:09.080657" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.082219" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.082109" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.082089" elapsed="0.000199"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.087298" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.087190" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.087171" elapsed="0.000197"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.088375" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:15:09.087969" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.088869" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:15:09.088560" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:15:09.088941" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:15:09.089118" level="INFO">${index_list} = [1, 2, 3]</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-19T02:15:09.087592" elapsed="0.001552"/>
</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-19T02:15:09.094636" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.094501" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.094482" elapsed="0.000224"/>
</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-19T02:15:09.095891" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.095785" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.095767" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:09.096452" 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-19T02:15:09.096135" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.096855" 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-19T02:15:09.096634" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.137317" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:15:09.097385" elapsed="0.040040"/>
</kw>
<msg time="2026-04-19T02:15:09.137615" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:15:09.137663" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:15:09.097052" elapsed="0.040648"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.169650" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:15:09.138346" elapsed="0.031412"/>
</kw>
<msg time="2026-04-19T02:15:09.169929" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:15:09.169975" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "...</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-19T02:15:09.137922" elapsed="0.032090"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:09.170342" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.170115" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.170095" elapsed="0.000326"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.170865" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "o "l "a "t "e "d "_ "n "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:09.170561" elapsed="0.000373"/>
</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-19T02:15:09.171233" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.171001" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.170983" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:15:09.171345" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:15:09.172825" elapsed="0.000894"/>
</kw>
<kw name="Open 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-19T02:15:09.174013" elapsed="0.000536"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:09.174835" elapsed="0.000436"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:15:09.172173" elapsed="0.003211"/>
</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-19T02:15:09.171618" elapsed="0.003832"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:15:09.095467" elapsed="0.080084"/>
</kw>
<msg time="2026-04-19T02:15:09.175643" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:09.175688" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "...</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-19T02:15:09.094856" elapsed="0.080870"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:15:09.175911" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:15:09.175803" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.175785" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:09.176410" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:09.176741" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.176813" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:15:09.094125" elapsed="0.082797"/>
</kw>
<msg time="2026-04-19T02:15:09.177017" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:09.177077" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "R "e "j "o "i "n "_ "I "s "...</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-19T02:15:09.089511" elapsed="0.087604"/>
</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-19T02:15:09.177449" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.177192" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.177174" elapsed="0.000353"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:15:09.089371" elapsed="0.088179"/>
</iter>
<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-19T02:15:09.182992" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.182882" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.182863" elapsed="0.000394"/>
</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-19T02:15:09.184414" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.184306" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.184288" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:09.184935" level="INFO">${karaf_connection_index} = 40</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-19T02:15:09.184624" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.185387" 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-19T02:15:09.185135" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.186180" 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-19T02:15:09.185903" elapsed="0.000944">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:15:09.187061" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:15:09.187109" 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-19T02:15:09.185571" elapsed="0.001562"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.187882" 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-19T02:15:09.187634" elapsed="0.000935">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:15:09.188765" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:15:09.188810" 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-19T02:15:09.187299" elapsed="0.001535"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.189813" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</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-19T02:15:09.189146" elapsed="0.000729">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:15:09.188909" elapsed="0.001033">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:15:09.188890" elapsed="0.001084">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</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-19T02:15:09.190150" 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-19T02:15:09.190373" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.190236" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:15:09.190220" elapsed="0.000227"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.190480" elapsed="0.000014"/>
</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-19T02:15:09.191916" elapsed="0.000870"/>
</kw>
<kw name="Open 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-19T02:15:09.193115" elapsed="0.000520"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:09.193915" elapsed="0.000421"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:15:09.191266" elapsed="0.003177"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T02:15:09.190731" elapsed="0.003778"/>
</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-19T02:15:09.183980" elapsed="0.010613">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</status>
</kw>
<msg time="2026-04-19T02:15:09.194694" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:09.194740" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</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-19T02:15:09.183410" elapsed="0.011354"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.194948" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.194840" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.194822" elapsed="0.000237"/>
</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-19T02:15:09.195845" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.195740" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.195722" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.196375" 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-19T02:15:09.196482" 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-19T02:15:09.196075" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.196920" level="INFO">{1: 10, 2: 40, 3: 43}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:09.196659" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:09.197493" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:09.197243" 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-19T02:15:09.198064" elapsed="0.000270"/>
</kw>
<msg time="2026-04-19T02:15:09.198432" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:09.198479" level="INFO">${old_connection_index} = 40</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-19T02:15:09.197694" 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-19T02:15:09.199476" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.200801" 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-19T02:15:09.200357" elapsed="0.001368">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-19T02:15:09.199843" elapsed="0.001985"/>
</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-19T02:15:09.202485" elapsed="0.000299"/>
</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-19T02:15:09.201995" elapsed="0.000875"/>
</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-19T02:15:09.198792" elapsed="0.004124"/>
</kw>
<status status="PASS" start="2026-04-19T02:15:09.198576" elapsed="0.004388"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.198558" elapsed="0.004431"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:09.203995" level="INFO">${ip_address} = 10.30.171.128</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-19T02:15:09.203692" elapsed="0.000330"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:15:09.204087" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:15:09.204239" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:15:09.203247" elapsed="0.001016"/>
</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-19T02:15:09.204414" elapsed="0.000398"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.205112" level="INFO">index=47
host=10.30.171.128
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-19T02:15:09.205212" level="INFO">${karaf_connection_object} = index=47
host=10.30.171.128
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-19T02:15:09.204975" elapsed="0.000263"/>
</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-19T02:15:09.205382" elapsed="0.002250"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.208066" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:15:09.210268" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:09.207793" elapsed="0.002867">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:09.224598" elapsed="0.000553"/>
</kw>
<kw name="Open 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-19T02:15:09.225312" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:09.225646" 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-19T02:15:09.211449" elapsed="0.014346"/>
</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-19T02:15:09.210932" elapsed="0.014909"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:15:09.195448" elapsed="0.030475">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:09.226267" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.226341" 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-19T02:15:09.182497" elapsed="0.043948">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</status>
</kw>
<msg time="2026-04-19T02:15:09.226548" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:09.226591" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:09.177812" elapsed="0.048801"/>
</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-19T02:15:09.226936" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:09.226689" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.226671" elapsed="0.000341"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:15:09.177675" elapsed="0.049405"/>
</iter>
<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-19T02:15:09.232801" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.232693" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.232674" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:09.234000" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:09.233895" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:09.233877" elapsed="0.000206"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:09.234527" level="INFO">${karaf_connection_index} = 43</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-19T02:15:09.234224" elapsed="0.000330"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:09.234921" 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-19T02:15:09.234706" elapsed="0.000240"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:19.236285" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:15:09.235565" elapsed="10.001715">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:15:19.237565" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:15:19.237616" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:15:09.235234" elapsed="10.002406"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:15:29.238826" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:15:19.238392" elapsed="10.001266">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:15:29.239913" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:15:29.239961" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:15:19.237916" elapsed="10.002070"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:15:29.241212" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</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-19T02:15:29.240452" elapsed="0.000825">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:15:29.240128" elapsed="0.001219">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:15:29.240093" elapsed="0.001302">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</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-19T02:15:29.241645" 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-19T02:15:29.241876" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:29.241735" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:15:29.241718" elapsed="0.000233"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:15:29.241988" 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-19T02:15:29.243852" elapsed="0.000882"/>
</kw>
<kw name="Open 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-19T02:15:29.245048" elapsed="0.000673"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:29.246008" elapsed="0.000615"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:15:29.242889" elapsed="0.003844"/>
</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-19T02:15:29.242312" elapsed="0.004490"/>
</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-19T02:15:09.233595" elapsed="20.013292">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</status>
</kw>
<msg time="2026-04-19T02:15:29.246991" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:29.247052" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Rejoin_Isolated_node"</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-19T02:15:09.233014" elapsed="20.014064"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:29.247306" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:29.247156" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:29.247137" elapsed="0.000236"/>
</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-19T02:15:29.248255" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:29.248148" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:29.248129" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:29.248611" 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-19T02:15:29.248715" 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-19T02:15:29.248470" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:29.249164" level="INFO">{1: 10, 2: 47, 3: 43}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:29.248887" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:29.249597" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:29.249357" 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-19T02:15:29.250159" elapsed="0.000273"/>
</kw>
<msg time="2026-04-19T02:15:29.250529" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:29.250574" level="INFO">${old_connection_index} = 43</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-19T02:15:29.249793" elapsed="0.000803"/>
</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-19T02:15:29.251436" elapsed="0.000200"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:39.253341" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:15:29.252413" elapsed="10.001967">No match found for '
' in 10 seconds
Output:
.</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-19T02:15:29.251798" elapsed="10.002725"/>
</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-19T02:15:39.255510" elapsed="0.000477"/>
</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-19T02:15:39.254802" elapsed="0.001292"/>
</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-19T02:15:29.250887" elapsed="10.005256"/>
</kw>
<status status="PASS" start="2026-04-19T02:15:29.250670" elapsed="10.005525"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:29.250652" elapsed="10.005656"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:39.257548" level="INFO">${ip_address} = 10.30.171.206</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-19T02:15:39.256945" elapsed="0.000631"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:15:39.257630" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:15:39.257795" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:15:39.256556" elapsed="0.001265"/>
</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-19T02:15:39.257978" elapsed="0.000633"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:39.258901" level="INFO">index=50
host=10.30.171.206
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-19T02:15:39.259004" level="INFO">${karaf_connection_object} = index=50
host=10.30.171.206
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-19T02:15:39.258780" elapsed="0.000296"/>
</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-19T02:15:39.259226" elapsed="0.002648"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:15:39.262323" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:15:49.369879" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:15:39.262053" elapsed="10.108748">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:15:49.383352" elapsed="0.000509"/>
</kw>
<kw name="Open 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-19T02:15:49.384029" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:49.384383" 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-19T02:15:49.372125" elapsed="0.012412"/>
</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-19T02:15:49.371371" elapsed="0.013212"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:15:29.247772" elapsed="20.136900">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:15:49.385063" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.385143" elapsed="0.000020"/>
</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-19T02:15:09.232341" elapsed="40.152916">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:15:49.385379" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:49.385423" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:15:09.227347" elapsed="40.158100"/>
</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-19T02:15:49.385794" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:49.385537" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.385517" elapsed="0.000355"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:15:09.227209" elapsed="40.158694"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:15:09.089198" elapsed="40.296740"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:15:09.086802" elapsed="40.299198"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:15:09.081774" elapsed="40.304484"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:15:09.081353" elapsed="40.304956"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:15:09.078298" elapsed="40.308067"/>
</kw>
<kw name="Rejoin_Node_And_Verify_Rejoined" owner="CsCommon">
<kw name="Rejoin_Member_From_List_Or_All" owner="ClusterManagement">
<msg time="2026-04-19T02:15:49.391631" level="FAIL">Variable '${cs_isolated_index}' not found.</msg>
<arg>${cs_isolated_index}</arg>
<doc>If the list is empty, rejoin member from all ODL instances. Otherwise, rejoin member based on present indices.</doc>
<status status="FAIL" start="2026-04-19T02:15:49.387124" elapsed="0.004546">Variable '${cs_isolated_index}' not found.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>70s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:49.391843" elapsed="0.000022"/>
</kw>
<doc>Rejoin isolated node.</doc>
<status status="FAIL" start="2026-04-19T02:15:49.386679" elapsed="0.005282">Variable '${cs_isolated_index}' not found.</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:49.393249" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:49.392851" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.392833" elapsed="0.000502"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:15:49.393477" elapsed="0.000316"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.398760" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:15:49.398263" elapsed="0.000525"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:15:49.399003" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.398861" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.398844" elapsed="0.000246"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.399532" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:15:49.399232" elapsed="0.000327"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:15:49.399973" level="INFO">${reference} = controller_clustering_ask_txt_Partition_And_Heal_Rejoin_Isolated_node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:15:49.399712" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:15:49.400349" level="INFO">${reference} = controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:15:49.400174" elapsed="0.000202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.400889" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:15:49.400542" elapsed="0.000375"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.401394" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:15:49.401083" elapsed="0.000339"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.402008" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node&amp;order=bug_status"

Variable '${cs_isolated_index}' not found.</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:15:49.401572" elapsed="0.000513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.402530" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:49.402236" elapsed="0.000342"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:15:49.397947" elapsed="0.004686"/>
</kw>
<status status="PASS" start="2026-04-19T02:15:49.392642" elapsed="0.010040"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:15:49.392266" elapsed="0.010457"/>
</kw>
<doc>Rejoin isolated node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:15:09.077823" elapsed="40.324938">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_rejoin_isolated_node&amp;order=bug_status"

Variable '${cs_isolated_index}' not found.</status>
</test>
<test id="s1-s12-t6" name="Unregister_Singleton_Constant_On_Each_Node" line="70">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:15:49.406135" elapsed="0.000208"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:15:49.405859" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.407385" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.407275" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.407256" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.412391" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.412284" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.412266" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.413523" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:15:49.413112" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.414015" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:15:49.413711" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:15:49.414106" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:15:49.414264" level="INFO">${index_list} = [1, 2, 3]</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-19T02:15:49.412716" elapsed="0.001573"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.419644" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.419533" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.419513" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.421023" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.420911" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.420893" elapsed="0.000223"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:49.421569" 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-19T02:15:49.421260" elapsed="0.000336"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.421964" 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-19T02:15:49.421750" elapsed="0.000239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.461080" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:15:49.422494" elapsed="0.038978"/>
</kw>
<msg time="2026-04-19T02:15:49.461723" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:15:49.461772" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:15:49.422163" elapsed="0.039646"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.498632" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:15:49.462595" elapsed="0.036165"/>
</kw>
<msg time="2026-04-19T02:15:49.498927" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:15:49.498973" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:15:49.462116" elapsed="0.036894"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:49.499418" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:49.499147" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.499113" elapsed="0.000391"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.499960" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "r "_ "S "i "n "g "l "e "t "o "n "_ "C "o "n "s "t "a "n "t "_ "O "n "_ "E "a "c "h "_ "N "o "d "e "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:49.499649" elapsed="0.000410"/>
</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-19T02:15:49.500445" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:49.500228" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.500206" elapsed="0.000317"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:15:49.500564" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:15:49.502189" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:15:49.503282" elapsed="0.000476"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:49.504023" elapsed="0.000604"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:15:49.501497" elapsed="0.003233"/>
</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-19T02:15:49.500896" elapsed="0.003897"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:15:49.420450" elapsed="0.084445"/>
</kw>
<msg time="2026-04-19T02:15:49.504986" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:49.505033" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:15:49.419861" elapsed="0.085225"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:15:49.505273" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:15:49.505166" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.505146" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:49.505805" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:15:49.506172" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.506245" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:15:49.419192" elapsed="0.087162"/>
</kw>
<msg time="2026-04-19T02:15:49.506446" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:49.506489" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "P "a "r "t "i "t "i "o "n "[C "A "n "d "[C "H "e "a "l ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:15:49.414656" elapsed="0.091869"/>
</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-19T02:15:49.506864" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:49.506601" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.506584" elapsed="0.000356"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:15:49.414516" elapsed="0.092447"/>
</iter>
<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-19T02:15:49.512284" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.512175" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.512155" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.513490" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.513384" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.513366" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:49.514025" level="INFO">${karaf_connection_index} = 47</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-19T02:15:49.513698" elapsed="0.000371"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.514442" 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-19T02:15:49.514225" elapsed="0.000244"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.515239" 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-19T02:15:49.514952" elapsed="0.000989">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:15:49.516146" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:15:49.516192" 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-19T02:15:49.514623" elapsed="0.001628"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.517033" 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-19T02:15:49.516784" elapsed="0.000931">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:15:49.517920" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:15:49.517966" 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-19T02:15:49.516420" elapsed="0.001570"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.518936" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</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-19T02:15:49.518322" elapsed="0.000676">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:15:49.518105" elapsed="0.001037">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:15:49.518084" elapsed="0.001243">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</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-19T02:15:49.519491" 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-19T02:15:49.519711" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:49.519577" elapsed="0.000187"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:15:49.519560" elapsed="0.000226"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.519818" 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-19T02:15:49.521378" elapsed="0.000796"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:15:49.522443" elapsed="0.000582"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:49.523301" elapsed="0.000347"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:15:49.520753" elapsed="0.002992"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T02:15:49.520083" elapsed="0.003723"/>
</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-19T02:15:49.513084" elapsed="0.010807">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T02:15:49.523990" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:49.524036" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</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-19T02:15:49.512499" elapsed="0.011575"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.524256" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.524149" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.524131" 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-19T02:15:49.525153" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.524984" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.524966" elapsed="0.000253"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.525519" 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-19T02:15:49.525621" 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-19T02:15:49.525369" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.526096" level="INFO">{1: 10, 2: 47, 3: 50}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:49.525793" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:15:49.526531" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:15:49.526290" 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-19T02:15:49.527093" elapsed="0.000256"/>
</kw>
<msg time="2026-04-19T02:15:49.527487" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:15:49.527533" level="INFO">${old_connection_index} = 47</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-19T02:15:49.526725" elapsed="0.000830"/>
</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-19T02:15:49.528367" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.529664" 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-19T02:15:49.529273" elapsed="0.001262">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-19T02:15:49.528721" elapsed="0.001911"/>
</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-19T02:15:49.531265" elapsed="0.000268"/>
</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-19T02:15:49.530798" elapsed="0.000818"/>
</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-19T02:15:49.527848" elapsed="0.003813"/>
</kw>
<status status="PASS" start="2026-04-19T02:15:49.527631" elapsed="0.004078"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.527613" elapsed="0.004121"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:49.532568" level="INFO">${ip_address} = 10.30.171.128</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-19T02:15:49.532267" elapsed="0.000327"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:15:49.532642" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:15:49.532789" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:15:49.531934" elapsed="0.000879"/>
</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-19T02:15:49.532962" elapsed="0.000502"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.533738" level="INFO">index=54
host=10.30.171.128
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-19T02:15:49.533836" level="INFO">${karaf_connection_object} = index=54
host=10.30.171.128
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-19T02:15:49.533630" elapsed="0.000232"/>
</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-19T02:15:49.534006" elapsed="0.004247"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.538678" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:15:49.540585" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:49.538416" elapsed="0.002555">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:49.552717" elapsed="0.000496"/>
</kw>
<kw name="Open 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-19T02:15:49.553372" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:15:49.553663" 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-19T02:15:49.541767" elapsed="0.012042"/>
</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-19T02:15:49.541264" elapsed="0.012589"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:15:49.524699" elapsed="0.029235">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:49.554634" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.554711" 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-19T02:15:49.511810" elapsed="0.043004">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</status>
</kw>
<msg time="2026-04-19T02:15:49.554967" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:15:49.555011" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:15:49.507253" elapsed="0.047785"/>
</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-19T02:15:49.555379" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:15:49.555131" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.555113" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:15:49.507115" elapsed="0.048364"/>
</iter>
<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-19T02:15:49.560833" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.560726" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.560707" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:15:49.562022" elapsed="0.000184"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:15:49.561916" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T02:15:49.561898" elapsed="0.000366"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:15:49.562733" level="INFO">${karaf_connection_index} = 50</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-19T02:15:49.562405" elapsed="0.000354"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:15:49.563142" 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-19T02:15:49.562913" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:15:59.564195" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:15:49.563655" elapsed="10.001528">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:15:59.565446" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:15:59.565495" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:15:49.563322" elapsed="10.002197"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:16:09.566743" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:15:59.566223" elapsed="10.001350">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:16:09.567837" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:16:09.567886" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:15:59.565771" elapsed="10.002139"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:16:09.569367" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</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-19T02:16:09.568369" elapsed="0.001060">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:16:09.568022" elapsed="0.001475">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:16:09.567991" elapsed="0.001541">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</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-19T02:16:09.569694" 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-19T02:16:09.569918" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:09.569780" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:09.569763" elapsed="0.000231"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:16:09.570044" 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-19T02:16:09.571569" elapsed="0.000794"/>
</kw>
<kw name="Open 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-19T02:16:09.572639" elapsed="0.000493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:09.573397" elapsed="0.000366"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:09.570902" elapsed="0.002964"/>
</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-19T02:16:09.570344" elapsed="0.003586"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T02:15:49.561617" elapsed="20.012466">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</status>
</kw>
<msg time="2026-04-19T02:16:09.574188" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:16:09.574232" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Partition And Heal.Unregister_Singleton_Constant_On_Each_Node"</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-19T02:15:49.561062" elapsed="20.013195"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:16:09.574441" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:09.574333" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:09.574315" elapsed="0.000192"/>
</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-19T02:16:09.575319" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:09.575214" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:09.575196" elapsed="0.000219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:09.575705" 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-19T02:16:09.575807" 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-19T02:16:09.575565" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:09.576293" level="INFO">{1: 10, 2: 54, 3: 50}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:09.575983" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:09.576730" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:09.576487" 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-19T02:16:09.577296" elapsed="0.000262"/>
</kw>
<msg time="2026-04-19T02:16:09.577656" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:09.577702" level="INFO">${old_connection_index} = 50</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-19T02:16:09.576926" elapsed="0.000799"/>
</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-19T02:16:09.578540" elapsed="0.000195"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:19.580804" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:16:09.579412" elapsed="10.003280">No match found for '
' in 10 seconds
Output:
.</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-19T02:16:09.578900" elapsed="10.003930"/>
</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-19T02:16:19.583752" elapsed="0.000462"/>
</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-19T02:16:19.583179" elapsed="0.001121"/>
</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-19T02:16:09.578018" elapsed="10.006332"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:09.577801" elapsed="10.006601"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:09.577782" elapsed="10.006654"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:19.585428" level="INFO">${ip_address} = 10.30.171.206</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-19T02:16:19.585090" elapsed="0.000366"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:19.585509" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:16:19.585671" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:19.584687" elapsed="0.001009"/>
</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-19T02:16:19.585854" elapsed="0.000533"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:19.586692" level="INFO">index=57
host=10.30.171.206
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-19T02:16:19.586794" level="INFO">${karaf_connection_object} = index=57
host=10.30.171.206
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-19T02:16:19.586560" elapsed="0.000261"/>
</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-19T02:16:19.587189" elapsed="0.002769"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:19.590568" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:29.654647" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:19.590198" elapsed="10.065301">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:29.669776" elapsed="0.000985"/>
</kw>
<kw name="Open 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-19T02:16:29.670930" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:29.671267" 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-19T02:16:29.656712" elapsed="0.014711"/>
</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-19T02:16:29.656009" elapsed="0.015462"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:16:09.574905" elapsed="20.096653">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:29.671927" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.672005" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T02:15:49.560388" elapsed="40.111748">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:16:29.672257" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:16:29.672302" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:15:49.555739" elapsed="40.116585"/>
</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-19T02:16:29.672674" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.672416" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.672393" elapsed="0.000359"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:15:49.555602" elapsed="40.117181"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:15:49.414343" elapsed="40.258476"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:15:49.411903" elapsed="40.260977"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:15:49.406963" elapsed="40.265976"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:15:49.406544" elapsed="40.266441"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:15:49.403779" elapsed="40.269276"/>
</kw>
<kw name="Unregister_Singleton_Constant_On_Nodes" owner="CsCommon">
<for flavor="IN">
<iter>
<kw name="Unregister_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Unregister_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.675603" 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-19T02:16:29.675299" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:16:29.675677" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:16:29.675829" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:29.674939" elapsed="0.000916"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.710664" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.710196" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.711639" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.711207" elapsed="0.000608">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:16:29.712100" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:16:29.710853" elapsed="0.001273"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.712735" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:16:29.712287" elapsed="0.000476"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.713113" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:16:29.713279" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:16:29.712931" elapsed="0.000375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.713734" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.713462" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.715352" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.714650" elapsed="0.000851"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.716508" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:16:29.715792" elapsed="0.000759"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.717396" elapsed="0.000050"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.717995" elapsed="0.000068"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.718385" elapsed="0.000050"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:16:29.717084" elapsed="0.001405"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.716700" elapsed="0.001884"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:16:29.718799" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:16:29.719102" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:16:29.714205" elapsed="0.004923"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.713847" elapsed="0.005315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.719332" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.719187" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.713829" elapsed="0.005579"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.720095" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:29.719549" elapsed="0.000576"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:16:29.720175" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:16:29.709572" elapsed="0.010726"/>
</kw>
<msg time="2026-04-19T02:16:29.720352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:29.697558" elapsed="0.022843"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.732677" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.744446" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.756165" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.756356" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.756530" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.756886" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.756747" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:29.756733" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.757122" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.757290" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.757451" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:16:29.756705" elapsed="0.000799"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.756606" elapsed="0.000924"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.757670" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.757745" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:16:29.757853" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:16:29.693435" elapsed="0.064444"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.781689" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.781246" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.782655" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.782281" elapsed="0.000546">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:16:29.783110" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:16:29.781876" elapsed="0.001260"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.783747" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:16:29.783298" elapsed="0.000476"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.784106" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:16:29.784264" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:16:29.783930" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.784715" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.784443" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:16:29.785180" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.784824" elapsed="0.000416"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.785956" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.785419" elapsed="0.000563"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.785264" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.784806" elapsed="0.001251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.786694" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:29.786201" elapsed="0.000520"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:16:29.786771" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:16:29.780624" elapsed="0.006273"/>
</kw>
<msg time="2026-04-19T02:16:29.786949" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:29.768441" elapsed="0.018555"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.799332" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.811146" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.822827" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.823019" elapsed="0.000034"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.823205" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.823560" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.823423" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:29.823408" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.823773" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.823935" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.824110" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:16:29.823380" elapsed="0.000784"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.823280" elapsed="0.000909"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.824372" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.824448" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:16:29.824556" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:16:29.767591" elapsed="0.056990"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.825812" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.825579" elapsed="0.000295">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:16:29.825965" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:16:29.825245" elapsed="0.000744"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.826313" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.826074" elapsed="0.000324"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.826880" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.826588" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.826421" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.826055" elapsed="0.000907"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.829227" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:16:29.827122" elapsed="0.002131"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:16:29.829305" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:16:29.829457" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:16:29.824910" elapsed="0.004571"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.830997" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.830752" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.831448" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.831211" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.831881" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.831636" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.832321" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.832083" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:29.833168" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:16:29.832954" elapsed="0.000240"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:16:29.833518" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:16:29.833344" elapsed="0.000199"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:16:29.833689" elapsed="0.000219"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.834346" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.834077" elapsed="0.000315"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:16:29.834435" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:16:29.834589" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:16:29.832556" elapsed="0.002057"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:16:29.859321" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01s6so8306icy3al1g19eua5wr0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:16:29.859402" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant 
 status=204, reason=No Content 
 headers={} 
 body=None 
 </msg>
<msg time="2026-04-19T02:16:29.859496" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:16:29.836849" elapsed="0.022673"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.834683" elapsed="0.024883"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.859743" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.859593" elapsed="0.000218"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.834665" elapsed="0.025167"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.863152" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.860864" elapsed="0.002332"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.860647" elapsed="0.002584"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.860628" elapsed="0.002628"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.865796" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.863526" elapsed="0.002316"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.863311" elapsed="0.002565"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.863294" elapsed="0.002607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.866468" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:29.866072" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.866794" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.866564" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.867342" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.867043" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.866875" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.866546" elapsed="0.000878"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.867933" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:29.867577" elapsed="0.000382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.868276" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.868027" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.868808" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.868517" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.868356" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.868009" elapsed="0.000880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:29.869048" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:16:29.869837" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:29.869558" elapsed="0.000305"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:16:29.870012" elapsed="0.002285"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:16:29.860202" elapsed="0.012157"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T02:16:29.872542" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:16:29.872437" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.872418" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.872772" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.872838" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T02:16:29.875058" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T02:16:29.829802" elapsed="0.045283"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:16:29.875192" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:16:29.875348" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T02:16:29.682798" elapsed="0.192575"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.875707" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.875475" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.875458" elapsed="0.000345"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:16:29.875835" elapsed="0.000026"/>
</return>
<arg>${UNREGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T02:16:29.676120" elapsed="0.199835"/>
</kw>
<arg>${member_index}</arg>
<doc>Unregister singleton application on given node by invoking unregister-singleton-constant rpc.</doc>
<status status="PASS" start="2026-04-19T02:16:29.674572" elapsed="0.201440"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:16:29.876178" elapsed="0.000197"/>
</kw>
<arg>${index}</arg>
<doc>Unregister the singleton candidate. Also remove it from the list of [1].</doc>
<status status="PASS" start="2026-04-19T02:16:29.673908" elapsed="0.202533"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:16:29.673710" elapsed="0.202761"/>
</iter>
<iter>
<kw name="Unregister_Singleton_And_Update_Expected_Candidates" owner="CsCommon">
<kw name="Unregister_Singleton_Constant" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.878138" level="INFO">${session} = ClusterManagement__session_2</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-19T02:16:29.877826" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:16:29.878211" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:16:29.878375" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:29.877492" elapsed="0.000910"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.912694" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.912250" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.913533" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.913228" elapsed="0.000474">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:16:29.913966" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:16:29.912879" elapsed="0.001113"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.914626" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:16:29.914168" elapsed="0.000486"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.914966" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:16:29.915109" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:16:29.914808" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.915549" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.915284" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.917350" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.916442" elapsed="0.001054"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.918522" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:16:29.917780" elapsed="0.000785"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.919437" elapsed="0.000049"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.920022" elapsed="0.000069"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.920383" elapsed="0.000048"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:16:29.919130" elapsed="0.001360"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.918749" elapsed="0.001835"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:16:29.920795" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:16:29.921092" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:16:29.915996" elapsed="0.005123"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.915660" elapsed="0.005491"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.921318" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.921176" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.915641" elapsed="0.005753"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.922002" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:29.921531" elapsed="0.000564"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:16:29.922146" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:16:29.911627" elapsed="0.010643"/>
</kw>
<msg time="2026-04-19T02:16:29.922322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:29.899542" elapsed="0.022828"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.934576" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.946338" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.958105" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.958298" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.958494" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.958852" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.958711" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:29.958697" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.959081" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.959283" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.959448" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:16:29.958669" elapsed="0.000832"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.958570" elapsed="0.000957"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:29.959669" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:16:29.959746" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:16:29.959856" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:16:29.895474" elapsed="0.064408"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.983552" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.983107" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.984424" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.984107" elapsed="0.000503">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:16:29.984879" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:16:29.983740" elapsed="0.001165"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.985526" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:16:29.985080" elapsed="0.000473"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:16:29.985865" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:16:29.986001" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:16:29.985708" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.986473" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:29.986195" elapsed="0.000320"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:16:29.986922" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:29.986583" elapsed="0.000399"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.987688" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:29.987163" elapsed="0.000552"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:29.987006" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:29.986565" elapsed="0.001206"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:29.988384" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:29.987912" elapsed="0.000504"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:16:29.988465" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:16:29.982471" elapsed="0.006117"/>
</kw>
<msg time="2026-04-19T02:16:29.988638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:29.970366" elapsed="0.018318"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.001828" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.013547" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.025472" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.025661" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.025832" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.026200" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:30.026060" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:30.026045" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.026413" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.026583" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.026744" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:16:30.026004" elapsed="0.000792"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.025905" elapsed="0.000916"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.026960" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.027047" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T02:16:30.027158" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:16:29.969503" elapsed="0.057679"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:16:30.028413" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:16:30.028177" elapsed="0.000299">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:16:30.028566" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:16:30.027823" elapsed="0.000767"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.028932" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:30.028659" elapsed="0.000331"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.029486" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:30.029190" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:30.029014" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.028642" elapsed="0.000926"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.031838" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:16:30.029715" elapsed="0.002150"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:16:30.031916" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:16:30.032087" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_singleton_constant/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:16:30.027506" elapsed="0.004607"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.033616" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.033369" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.034061" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.033811" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.034504" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.034250" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.034935" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.034697" elapsed="0.000282"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:30.035781" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:16:30.035590" elapsed="0.000217"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:16:30.036141" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:16:30.035955" elapsed="0.000212"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:16:30.036310" elapsed="0.000201"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.036911" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.036663" elapsed="0.000292"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:16:30.036998" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:16:30.037168" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:16:30.035194" elapsed="0.001999"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:16:30.043315" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:16:30.039438" elapsed="0.005563">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T02:16:30.037261" elapsed="0.007844">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.045290" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:30.045140" elapsed="0.000217"/>
</branch>
<status status="FAIL" start="2026-04-19T02:16:30.037244" elapsed="0.008137">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.045746" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.045887" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:30.045850" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:30.045832" elapsed="0.000156"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.046152" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.046222" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:16:30.032428" elapsed="0.013900">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.046411" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.884904" elapsed="0.161640">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.046873" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:30.046662" elapsed="0.000304"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:30.046645" elapsed="0.000355"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.047067" elapsed="0.000021"/>
</return>
<arg>${UNREGISTER_SINGLETON_CONSTANT_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.878670" elapsed="0.168535">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<arg>${member_index}</arg>
<doc>Unregister singleton application on given node by invoking unregister-singleton-constant rpc.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.877127" elapsed="0.170217">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${cs_exp_candidates}</arg>
<arg>${member_index}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.047565" elapsed="0.000030"/>
</kw>
<arg>${index}</arg>
<doc>Unregister the singleton candidate. Also remove it from the list of [].</doc>
<status status="FAIL" start="2026-04-19T02:16:29.876751" elapsed="0.170966">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<var name="${index}">2</var>
<status status="FAIL" start="2026-04-19T02:16:29.876555" elapsed="0.171249">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:16:29.673573" elapsed="0.374310">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${cs_all_indices}</arg>
<doc>Unregister the application from given nodes.</doc>
<status status="FAIL" start="2026-04-19T02:16:29.673339" elapsed="0.374668">ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:30.049771" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:30.049250" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.049226" elapsed="0.000663"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:30.050115" elapsed="0.000458"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.056656" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:30.056232" elapsed="0.000451"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:16:30.056898" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:30.056757" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.056739" elapsed="0.000221"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.057412" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:16:30.057116" elapsed="0.000323"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:16:30.057851" level="INFO">${reference} = controller_clustering_ask_txt_Partition_And_Heal_Unregister_Singleton_Constant_On_Each_Node</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:16:30.057592" elapsed="0.000285"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:16:30.058228" level="INFO">${reference} = controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:16:30.058044" elapsed="0.000216"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.058775" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:30.058410" elapsed="0.000392"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.059277" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:16:30.058952" elapsed="0.000353"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.059881" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:16:30.059454" elapsed="0.000480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.060386" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.060096" elapsed="0.000337"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:16:30.055916" elapsed="0.004573"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:30.048938" elapsed="0.011600"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:16:30.048442" elapsed="0.012137"/>
</kw>
<doc>Unregister the application on every node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:15:49.403230" elapsed="40.657388">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_partition_and_heal_unregister_singleton_constant_on_each_node&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.128', port=8181): Max retries exceeded with url: /rests/operations/odl-mdsal-lowlevel-control:unregister-singleton-constant (Caused by NewConnectionError("HTTPConnection(host='10.30.171.128', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T02:16:30.061450" elapsed="0.000256"/>
</kw>
<doc>Cluster Singleton testing: Partition And Heal

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Cluster Singleton service is designed to ensure that only one instance of
an application is registered globally in the cluster.
The goal is to establish the service operates correctly in face of node
failures.</doc>
<status status="FAIL" start="2026-04-19T02:11:23.818294" elapsed="306.243448"/>
</suite>
<suite id="s1-s13" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.229142" 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-19T02:16:30.224576" elapsed="0.004624"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T02:16:30.224304" elapsed="0.005040"/>
</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-19T02:16:30.234542" 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-19T02:16:30.230448" elapsed="0.004121"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T02:16:30.234778" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:30.234665" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.234640" elapsed="0.000211"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.235354" 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-19T02:16:30.235003" elapsed="0.000393"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.235860" level="INFO">${cluster_size} = 3</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-19T02:16:30.235556" elapsed="0.000330"/>
</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-19T02:16:30.236400" elapsed="0.000272"/>
</kw>
<msg time="2026-04-19T02:16:30.236766" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:30.236814" level="INFO">${possibly_int_of_members} = 3</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-19T02:16:30.236064" elapsed="0.000772"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.237381" level="INFO">${int_of_members} = 3</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-19T02:16:30.237001" elapsed="0.000406"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.238371" 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-19T02:16:30.238111" elapsed="0.000287"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.238826" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:16:30.238550" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.239307" 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-19T02:16:30.239006" elapsed="0.000327"/>
</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-19T02:16:30.242465" elapsed="0.000227"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.243190" level="INFO">${member_ip} = 10.30.171.9</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-19T02:16:30.242850" elapsed="0.000366"/>
</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-19T02:16:30.243366" elapsed="0.000228"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.244385" 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-19T02:16:30.244092" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:16:30.244456" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:16:30.244613" 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-19T02:16:30.243787" elapsed="0.000851"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:16:30.245372" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7340e10&gt;, timeout=125, 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-19T02:16:30.244800" elapsed="0.000712"/>
</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-19T02:16:30.245673" elapsed="0.000216"/>
</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-19T02:16:30.241897" elapsed="0.004065"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:16:30.241709" elapsed="0.004298"/>
</iter>
<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-19T02:16:30.246863" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.247541" level="INFO">${member_ip} = 10.30.171.128</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-19T02:16:30.247223" elapsed="0.000344"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:16:30.247715" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.248758" level="INFO">${session} = ClusterManagement__session_2</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-19T02:16:30.248465" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:16:30.248830" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:16:30.248978" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T02:16:30.248174" elapsed="0.000829"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:16:30.249569" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782708011050&gt;, timeout=125, 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-19T02:16:30.249170" elapsed="0.000501"/>
</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-19T02:16:30.249831" elapsed="0.000186"/>
</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-19T02:16:30.246287" elapsed="0.003805"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:16:30.246108" elapsed="0.004027"/>
</iter>
<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-19T02:16:30.250956" elapsed="0.000202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.251633" level="INFO">${member_ip} = 10.30.171.206</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-19T02:16:30.251313" elapsed="0.000345"/>
</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-19T02:16:30.251806" elapsed="0.000215"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.252812" level="INFO">${session} = ClusterManagement__session_3</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-19T02:16:30.252518" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:16:30.252884" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:16:30.253049" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T02:16:30.252224" elapsed="0.000852"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:16:30.253633" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6e0a2d0&gt;, timeout=125, 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-19T02:16:30.253231" elapsed="0.000506"/>
</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-19T02:16:30.253896" elapsed="0.000204"/>
</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-19T02:16:30.250394" elapsed="0.003766"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:16:30.250219" elapsed="0.003985"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T02:16:30.239391" elapsed="0.014843"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.254801" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T02:16:30.254393" elapsed="0.000451"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.255404" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T02:16:30.255006" elapsed="0.000440"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.256012" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T02:16:30.255606" elapsed="0.000465"/>
</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-19T02:16:30.237651" elapsed="0.018477"/>
</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-19T02:16:30.230106" elapsed="0.026078"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.256362" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:30.256248" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.256230" elapsed="0.000198"/>
</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-19T02:16:30.259789" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:16:30.259412" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.260295" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:16:30.259975" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:16:30.260366" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:16:30.260519" level="INFO">${index_list} = [1, 2, 3]</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-19T02:16:30.259083" elapsed="0.001461"/>
</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-19T02:16:30.261531" level="INFO">${member_ip} = 10.30.171.9</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-19T02:16:30.261266" elapsed="0.000292"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.262300" 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-19T02:16:30.262401" 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-19T02:16:30.262144" elapsed="0.000284"/>
</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-19T02:16:30.265100" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:30.264766" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.264747" elapsed="0.000544"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.265568" 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-19T02:16:30.265689" 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-19T02:16:30.265439" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.266789" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.265868" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.267634" 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-19T02:16:30.266994" elapsed="0.000668"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.268955" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:16:30.269171" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:16:30.268410" elapsed="0.000808"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:30.269495" elapsed="0.000739"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.271709" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:16:30.847601" 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 Sun Apr 19 02:16:30 UTC 2026

  System load:  0.03               Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:11:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:16:30.271322" elapsed="0.576530"/>
</kw>
<msg time="2026-04-19T02:16:30.847965" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:30.270553" elapsed="0.577617"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:16:30.267880" elapsed="0.580641"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.849170" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:16:30.862023" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:16:30.862411" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:16:30.862514" 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-19T02:16:30.848800" elapsed="0.013768"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:30.862952" elapsed="0.000544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.865023" 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-19T02:16:30.863918" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.865694" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:30.865343" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.865287" elapsed="0.000567"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:16:30.866291" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T02:16:30.865975" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.865941" elapsed="0.000539"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:16:30.866557" 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-19T02:16:30.871417" elapsed="0.001048"/>
</kw>
<kw name="Open 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-19T02:16:30.872781" elapsed="0.000591"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:30.873639" elapsed="0.000266"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:30.867361" elapsed="0.006659"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:16:30.264285" elapsed="0.609888"/>
</kw>
<msg time="2026-04-19T02:16:30.874248" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:30.263616" elapsed="0.610704"/>
</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-19T02:16:30.263131" elapsed="0.611299"/>
</kw>
<msg time="2026-04-19T02:16:30.874488" 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-19T02:16:30.262584" elapsed="0.611966"/>
</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-19T02:16:30.877841" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:16:30.878336" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:30.878626" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:30.874951" elapsed="0.003821"/>
</kw>
<msg time="2026-04-19T02:16:30.878862" 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-19T02:16:30.261773" elapsed="0.617113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.879339" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.879089" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:16:30.879426" 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-19T02:16:30.260893" elapsed="0.618657"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:16:30.260719" elapsed="0.618870"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:30.880623" level="INFO">${member_ip} = 10.30.171.128</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-19T02:16:30.880348" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.881641" 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-19T02:16:30.881745" 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-19T02:16:30.881297" elapsed="0.000475"/>
</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-19T02:16:30.884461" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:30.884154" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:30.884135" elapsed="0.000516"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.884930" 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-19T02:16:30.885069" 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-19T02:16:30.884802" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.886166" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:30.885250" elapsed="0.000963"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.887005" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:16:30.886370" elapsed="0.000674"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:16:30.888358" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:16:30.888557" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:16:30.887791" elapsed="0.000813"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:30.888884" elapsed="0.000757"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:16:30.891127" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:16:31.616521" 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 Sun Apr 19 02:16:31 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:11:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:16:30.890699" elapsed="0.726039"/>
</kw>
<msg time="2026-04-19T02:16:31.616844" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:30.889961" elapsed="0.727055"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:16:30.887274" elapsed="0.730009"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:16:31.617895" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:16:31.630753" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:16:31.631144" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:16:31.631247" 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-19T02:16:31.617564" elapsed="0.013739"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:31.631698" elapsed="0.000469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:31.633644" 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-19T02:16:31.632569" elapsed="0.001177"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:16:31.634268" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:31.633913" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:31.633865" elapsed="0.000561"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:16:31.634898" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T02:16:31.634542" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:31.634509" elapsed="0.000612"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:16:31.635196" 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-19T02:16:31.640226" elapsed="0.001078"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:16:31.641636" elapsed="0.000767"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:31.642682" elapsed="0.000276"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:31.635917" elapsed="0.007202"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:16:30.883626" elapsed="0.759632"/>
</kw>
<msg time="2026-04-19T02:16:31.643337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:30.882942" elapsed="0.760469"/>
</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-19T02:16:30.882460" elapsed="0.761069"/>
</kw>
<msg time="2026-04-19T02:16:31.643588" 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-19T02:16:30.881929" elapsed="0.761757"/>
</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-19T02:16:31.646910" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:16:31.647408" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:31.647709" 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-19T02:16:31.644138" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T02:16:31.647946" 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-19T02:16:30.880868" elapsed="0.767104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:31.648412" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:31.648165" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:16:31.648495" 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-19T02:16:30.879911" elapsed="0.768706"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:16:30.879691" elapsed="0.768964"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:31.649576" level="INFO">${member_ip} = 10.30.171.206</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-19T02:16:31.649306" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:31.650320" 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-19T02:16:31.650418" 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-19T02:16:31.650185" elapsed="0.000259"/>
</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-19T02:16:31.653122" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:31.652799" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:31.652781" elapsed="0.000527"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:31.653586" 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-19T02:16:31.653706" 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-19T02:16:31.653458" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:31.654828" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:31.653926" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:31.655867" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:16:31.655049" elapsed="0.000845"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:16:31.657217" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:16:31.657416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:16:31.656650" elapsed="0.000816"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:31.657741" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:16:31.659824" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:16:32.249811" 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 Sun Apr 19 02:16:31 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:11:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:16:31.659411" elapsed="0.590602"/>
</kw>
<msg time="2026-04-19T02:16:32.250137" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:31.658672" elapsed="0.591633"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:16:31.656130" elapsed="0.594415"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:16:32.251110" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:16:32.263977" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:16:32.264232" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:16:32.264295" 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-19T02:16:32.250789" elapsed="0.013540"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:32.264560" elapsed="0.000288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:32.265826" 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-19T02:16:32.265151" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:16:32.266255" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:32.266011" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:32.265978" elapsed="0.000374"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:16:32.266601" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:16:32.266427" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:32.266405" elapsed="0.000314"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:16:32.266766" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:32.271241" elapsed="0.001030"/>
</kw>
<kw name="Open 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-19T02:16:32.272596" elapsed="0.000601"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:32.273462" elapsed="0.000263"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:32.267225" elapsed="0.006612"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:16:31.652321" elapsed="0.621651"/>
</kw>
<msg time="2026-04-19T02:16:32.274134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:31.651675" elapsed="0.622532"/>
</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-19T02:16:31.651169" elapsed="0.623147"/>
</kw>
<msg time="2026-04-19T02:16:32.274372" 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-19T02:16:31.650596" elapsed="0.623837"/>
</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-19T02:16:32.278006" 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-19T02:16:32.278499" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:32.278793" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:32.274832" elapsed="0.004110"/>
</kw>
<msg time="2026-04-19T02:16:32.279046" 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-19T02:16:31.649816" elapsed="0.629257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:32.279497" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:32.279249" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:16:32.279582" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:16:31.648928" elapsed="0.630777"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:16:31.648747" elapsed="0.630996"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:16:30.260595" elapsed="2.019182"/>
</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-19T02:16:30.256682" elapsed="2.023151"/>
</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-19T02:16:32.280010" elapsed="0.000249"/>
</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-19T02:16:32.294452" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:32.294342" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:32.294322" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:32.294807" 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-19T02:16:32.294910" 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-19T02:16:32.294674" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:32.295364" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:32.295106" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:32.295801" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:32.295560" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:32.296609" 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-19T02:16:32.296386" elapsed="0.000327">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T02:16:32.296819" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:16:32.296864" 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-19T02:16:32.296000" elapsed="0.000887"/>
</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-19T02:16:32.297211" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:32.296962" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:32.296944" elapsed="0.000374"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:32.298068" level="INFO">${ip_address} = 10.30.171.9</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-19T02:16:32.297789" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:32.298144" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:16:32.298291" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:32.297518" elapsed="0.000834"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:16:32.298510" elapsed="0.000398"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:32.299207" level="INFO">index=10
host=10.30.171.9
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-19T02:16:32.299307" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T02:16:32.299092" 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-19T02:16:32.299482" elapsed="0.002619"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:32.302548" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:32.522763" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:16:32.302287" elapsed="0.220692"/>
</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-19T02:16:32.526973" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:16:32.527473" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:32.527865" elapsed="0.000109"/>
</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-19T02:16:32.524349" elapsed="0.003694"/>
</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-19T02:16:32.523484" elapsed="0.004610"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:16:32.294061" elapsed="0.234088"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:16:32.280970" elapsed="0.247228"/>
</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-19T02:16:32.280598" elapsed="0.247666"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:16:32.280459" elapsed="0.247851"/>
</iter>
<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-19T02:16:32.542319" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:32.542193" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:32.542166" elapsed="0.000232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:32.542704" 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-19T02:16:32.542815" 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-19T02:16:32.542563" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:32.543280" 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-19T02:16:32.542996" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:32.543739" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:32.543475" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:32.544590" level="FAIL">Dictionary does not contain key '2'.</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-19T02:16:32.544343" elapsed="0.000366">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T02:16:32.544819" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:16:32.544943" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T02:16:32.543941" elapsed="0.001028"/>
</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-19T02:16:32.545291" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:32.545061" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:32.545028" elapsed="0.000363"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:32.546396" level="INFO">${ip_address} = 10.30.171.128</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-19T02:16:32.546124" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:32.546473" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:16:32.546633" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:32.545593" elapsed="0.001064"/>
</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-19T02:16:32.546813" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:32.547521" level="INFO">index=12
host=10.30.171.128
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-19T02:16:32.547618" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T02:16:32.547413" elapsed="0.000231"/>
</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-19T02:16:32.547795" elapsed="0.002418"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:32.550637" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:32.551824" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:32.550378" elapsed="0.001936">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:32.555815" 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-19T02:16:32.556329" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:32.556623" 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-19T02:16:32.553143" elapsed="0.003625"/>
</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-19T02:16:32.552593" elapsed="0.004220"/>
</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-19T02:16:32.541873" elapsed="0.015020">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:33.570492" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:33.570348" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:33.570320" elapsed="0.000257"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:33.570944" 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-19T02:16:33.571077" 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-19T02:16:33.570765" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:33.571565" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:33.571265" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:33.572010" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:33.571766" elapsed="0.000304"/>
</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-19T02:16:33.572623" elapsed="0.000185"/>
</kw>
<msg time="2026-04-19T02:16:33.572908" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:33.573074" level="INFO">${old_connection_index} = 12</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-19T02:16:33.572234" elapsed="0.000867"/>
</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-19T02:16:33.574086" elapsed="0.000142"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:33.574911" 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-19T02:16:33.574734" elapsed="0.000733">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-19T02:16:33.574399" elapsed="0.001131"/>
</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-19T02:16:33.576049" 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-19T02:16:33.575708" elapsed="0.000488"/>
</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-19T02:16:33.573550" elapsed="0.002690"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:33.573180" elapsed="0.003109"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:33.573161" elapsed="0.003153"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:33.577294" level="INFO">${ip_address} = 10.30.171.128</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-19T02:16:33.576794" elapsed="0.000528"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:33.577371" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:16:33.577530" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:33.576521" elapsed="0.001034"/>
</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-19T02:16:33.577710" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:33.578416" level="INFO">index=14
host=10.30.171.128
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-19T02:16:33.578516" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.128
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-19T02:16:33.578304" 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-19T02:16:33.578701" elapsed="0.002419"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:33.581549" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:33.582766" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:33.581287" elapsed="0.001890">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:33.586374" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:16:33.586850" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:33.587170" 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-19T02:16:33.583985" elapsed="0.003336"/>
</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-19T02:16:33.583462" elapsed="0.003904"/>
</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-19T02:16:33.569938" elapsed="0.017508">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:34.606918" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:34.606772" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:34.606746" elapsed="0.000260"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:34.607405" 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-19T02:16:34.607527" 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-19T02:16:34.607220" elapsed="0.000426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:34.608141" level="INFO">{1: 10, 2: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:34.607812" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:34.608669" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:34.608352" elapsed="0.000368"/>
</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-19T02:16:34.609345" elapsed="0.000189"/>
</kw>
<msg time="2026-04-19T02:16:34.609681" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:34.609734" level="INFO">${old_connection_index} = 14</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-19T02:16:34.608907" elapsed="0.000874"/>
</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-19T02:16:34.610672" elapsed="0.000149"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:34.611531" 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-19T02:16:34.611355" elapsed="0.000722">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-19T02:16:34.611002" elapsed="0.001141"/>
</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-19T02:16:34.612657" 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-19T02:16:34.612316" 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-19T02:16:34.610127" elapsed="0.002724"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:34.609874" elapsed="0.003027"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:34.609852" elapsed="0.003075"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:34.613788" level="INFO">${ip_address} = 10.30.171.128</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-19T02:16:34.613443" elapsed="0.000375"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:34.613869" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:16:34.614027" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:34.613159" elapsed="0.000911"/>
</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-19T02:16:34.614228" elapsed="0.001835"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:34.616489" level="INFO">index=16
host=10.30.171.128
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-19T02:16:34.616588" level="INFO">${karaf_connection_object} = index=16
host=10.30.171.128
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-19T02:16:34.616378" 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-19T02:16:34.616763" elapsed="0.002400"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:34.619586" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:34.620770" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:34.619327" elapsed="0.001851">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:34.624490" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:16:34.624963" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:34.625273" 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-19T02:16:34.622011" elapsed="0.003408"/>
</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-19T02:16:34.621463" elapsed="0.004003"/>
</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-19T02:16:34.606357" elapsed="0.019188">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:35.644417" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:35.644275" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:35.644248" elapsed="0.000259"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:35.644876" 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-19T02:16:35.644996" 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-19T02:16:35.644698" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:35.645503" level="INFO">{1: 10, 2: 16}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:35.645202" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:35.645948" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:35.645703" elapsed="0.000289"/>
</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-19T02:16:35.646585" elapsed="0.000186"/>
</kw>
<msg time="2026-04-19T02:16:35.646870" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:35.646917" level="INFO">${old_connection_index} = 16</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-19T02:16:35.646172" elapsed="0.000769"/>
</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-19T02:16:35.647772" elapsed="0.000137"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:35.648602" 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-19T02:16:35.648429" 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-19T02:16:35.648093" elapsed="0.001099"/>
</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-19T02:16:35.649690" 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-19T02:16:35.649362" 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-19T02:16:35.647257" elapsed="0.002623"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:35.647016" elapsed="0.002914"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:35.646998" elapsed="0.002958"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:35.650738" level="INFO">${ip_address} = 10.30.171.128</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-19T02:16:35.650470" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:35.650812" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:16:35.650970" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:35.650178" elapsed="0.000818"/>
</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-19T02:16:35.651168" elapsed="0.000415"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:35.652133" level="INFO">index=18
host=10.30.171.128
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-19T02:16:35.652237" level="INFO">${karaf_connection_object} = index=18
host=10.30.171.128
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-19T02:16:35.651808" elapsed="0.000455"/>
</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-19T02:16:35.652415" elapsed="0.002394"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:35.655249" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:35.656499" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:35.654974" elapsed="0.001975">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:35.660309" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:16:35.660794" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:35.661110" 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-19T02:16:35.657834" elapsed="0.003438"/>
</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-19T02:16:35.657297" elapsed="0.004025"/>
</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-19T02:16:35.643869" elapsed="0.017536">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</status>
</kw>
<msg time="2026-04-19T02:16:35.661494" 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.171.128</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-19T02:16:32.528948" elapsed="3.132639">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.171.128</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-19T02:16:32.528578" elapsed="3.133076"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:16:32.528431" elapsed="3.133266"/>
</iter>
<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-19T02:16:35.675663" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:35.675547" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:35.675526" elapsed="0.000211"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:35.676047" 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-19T02:16:35.676152" 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-19T02:16:35.675894" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:35.676611" level="INFO">{1: 10, 2: 18}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:35.676334" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:35.677072" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:35.676810" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:35.677859" level="FAIL">Dictionary does not contain key '3'.</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-19T02:16:35.677646" elapsed="0.000301">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T02:16:35.678076" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:16:35.678123" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T02:16:35.677277" elapsed="0.000869"/>
</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-19T02:16:35.678479" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:35.678223" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:35.678204" elapsed="0.000390"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:35.679366" level="INFO">${ip_address} = 10.30.171.206</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-19T02:16:35.679098" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:35.679440" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:16:35.679601" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:35.678799" elapsed="0.000828"/>
</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-19T02:16:35.679782" elapsed="0.000411"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:35.680472" level="INFO">index=20
host=10.30.171.206
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-19T02:16:35.680580" level="INFO">${karaf_connection_object} = index=20
host=10.30.171.206
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-19T02:16:35.680364" elapsed="0.000283"/>
</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-19T02:16:35.680803" elapsed="0.002567"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:35.683806" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:45.748955" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:35.683536" elapsed="10.066290">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:45.753563" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:16:45.754062" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:45.754387" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:45.751057" elapsed="0.003485"/>
</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-19T02:16:45.750351" elapsed="0.004239"/>
</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-19T02:16:35.675253" elapsed="10.079421">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:16:45.754774" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:35.662341" elapsed="10.092526">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:35.661935" elapsed="10.092999"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:16:35.661793" elapsed="10.093183"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T02:16:32.280314" elapsed="13.474700"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T02:16:30.229648" elapsed="15.525443"/>
</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-19T02:16:45.757884" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.757766" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.757743" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.763136" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.763016" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.762998" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:16:45.764174" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:16:45.763769" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:16:45.764787" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:16:45.764466" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:16:45.764858" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:16:45.765015" level="INFO">${index_list} = [1, 2, 3]</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-19T02:16:45.763435" elapsed="0.001625"/>
</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-19T02:16:45.770600" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.770488" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.770467" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.771763" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.771654" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.771635" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:45.772295" 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-19T02:16:45.771979" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.772767" 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-19T02:16:45.772547" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.813237" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:16:45.773331" elapsed="0.040074"/>
</kw>
<msg time="2026-04-19T02:16:45.813523" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:16:45.813572" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:16:45.772959" elapsed="0.040650"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.870198" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:16:45.814183" elapsed="0.056196"/>
</kw>
<msg time="2026-04-19T02:16:45.870482" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:16:45.870527" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:16:45.813791" elapsed="0.056771"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:45.870884" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:45.870644" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.870622" elapsed="0.000342"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:45.871421" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:45.871133" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:45.871792" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:45.871576" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.871558" elapsed="0.000311"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:16:45.871906" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:16:45.873267" 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-19T02:16:45.874238" elapsed="0.000461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:45.874967" elapsed="0.000379"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:45.872753" elapsed="0.002730"/>
</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-19T02:16:45.872214" elapsed="0.003319"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:16:45.771376" elapsed="0.104258"/>
</kw>
<msg time="2026-04-19T02:16:45.875727" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:45.875772" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:16:45.770830" elapsed="0.104979"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:16:45.875996" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:16:45.875886" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.875868" elapsed="0.000239"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:45.876524" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:16:45.876911" elapsed="0.000085"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.877064" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:16:45.770187" elapsed="0.106991"/>
</kw>
<msg time="2026-04-19T02:16:45.877270" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:45.877313" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:16:45.765434" elapsed="0.111914"/>
</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-19T02:16:45.877678" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:45.877423" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.877405" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:16:45.765290" elapsed="0.112489"/>
</iter>
<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-19T02:16:45.883251" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.883143" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.883123" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.884417" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.884307" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.884289" elapsed="0.000202"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:45.884937" level="INFO">${karaf_connection_index} = 18</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-19T02:16:45.884639" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.885398" 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-19T02:16:45.885198" elapsed="0.000228"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.886201" 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-19T02:16:45.885923" elapsed="0.000793">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:16:45.886826" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:16:45.886872" 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-19T02:16:45.885587" elapsed="0.001309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.887664" 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-19T02:16:45.887423" elapsed="0.000756">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-19T02:16:45.888287" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:16:45.888333" 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-19T02:16:45.887081" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:16:45.889207" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:16:45.888654" elapsed="0.000617">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:16:45.888431" elapsed="0.000910">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:16:45.888412" elapsed="0.001119">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:16:45.889699" 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-19T02:16:45.889930" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:45.889786" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:16:45.889769" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.890065" 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-19T02:16:45.891307" elapsed="0.000570"/>
</kw>
<kw name="Open 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-19T02:16:45.892234" elapsed="0.000443"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:45.892990" elapsed="0.000215"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:16:45.890866" elapsed="0.002473"/>
</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-19T02:16:45.890332" elapsed="0.003056"/>
</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-19T02:16:45.884004" elapsed="0.009468">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T02:16:45.893574" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:16:45.893620" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T02:16:45.883482" elapsed="0.010162"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.893830" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.893721" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.893702" elapsed="0.000194"/>
</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-19T02:16:45.894666" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.894561" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.894543" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.895069" 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-19T02:16:45.895176" 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-19T02:16:45.894888" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:45.895627" level="INFO">{1: 10, 2: 18, 3: 20}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:45.895363" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:16:45.896088" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:16:45.895829" elapsed="0.000304"/>
</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-19T02:16:45.896656" elapsed="0.000239"/>
</kw>
<msg time="2026-04-19T02:16:45.896993" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:16:45.897055" level="INFO">${old_connection_index} = 18</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-19T02:16:45.896293" elapsed="0.000786"/>
</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-19T02:16:45.897884" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.899137" 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-19T02:16:45.898810" elapsed="0.001823">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-19T02:16:45.898306" elapsed="0.002500"/>
</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-19T02:16:45.901524" elapsed="0.000185"/>
</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-19T02:16:45.900991" elapsed="0.000847"/>
</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-19T02:16:45.897380" elapsed="0.004506"/>
</kw>
<status status="PASS" start="2026-04-19T02:16:45.897155" elapsed="0.004782"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.897137" elapsed="0.004826"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:45.902738" level="INFO">${ip_address} = 10.30.171.128</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-19T02:16:45.902469" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:16:45.902813" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:16:45.902977" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:16:45.902189" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:16:45.903229" elapsed="0.000448"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.903969" level="INFO">index=24
host=10.30.171.128
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-19T02:16:45.904087" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.128
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-19T02:16:45.903858" elapsed="0.000258"/>
</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-19T02:16:45.904270" elapsed="0.002608"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.907409" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:16:45.908509" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:45.907100" elapsed="0.001823">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:45.912222" elapsed="0.000554"/>
</kw>
<kw name="Open 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-19T02:16:45.912960" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:16:45.913280" 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-19T02:16:45.909720" elapsed="0.003707"/>
</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-19T02:16:45.909214" elapsed="0.004259"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:16:45.894320" elapsed="0.019233">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:45.913876" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.913949" 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-19T02:16:45.882830" elapsed="0.031235">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</status>
</kw>
<msg time="2026-04-19T02:16:45.914171" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:16:45.914214" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.128</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-19T02:16:45.878063" elapsed="0.036174"/>
</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-19T02:16:45.914562" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:16:45.914313" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.914295" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:16:45.877905" elapsed="0.036756"/>
</iter>
<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-19T02:16:45.920107" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.919984" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.919965" elapsed="0.000210"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:16:45.921251" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:16:45.921145" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:16:45.921127" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:16:45.921710" level="INFO">${karaf_connection_index} = 20</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-19T02:16:45.921459" elapsed="0.000277"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:16:45.922101" 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-19T02:16:45.921891" elapsed="0.000236"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:16:55.923093" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:16:45.922614" elapsed="10.001068">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:16:55.923956" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:16:55.924005" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:16:45.922285" elapsed="10.001758"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:17:05.925440" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:16:55.924757" elapsed="10.001660">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:17:05.926587" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:17:05.926636" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:16:55.924310" elapsed="10.002351"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:17:05.927728" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:17:05.927116" elapsed="0.000677">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:17:05.926775" elapsed="0.001088">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:17:05.926744" elapsed="0.001155">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:17:05.928103" elapsed="0.000024"/>
</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-19T02:17:05.928336" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:05.928193" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:17:05.928177" elapsed="0.000235"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:17:05.928448" 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-19T02:17:05.929761" elapsed="0.000581"/>
</kw>
<kw name="Open 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-19T02:17:05.930639" elapsed="0.000472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:05.931372" elapsed="0.000202"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:05.929331" elapsed="0.002375"/>
</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-19T02:17:05.928748" elapsed="0.003008"/>
</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-19T02:16:45.920856" elapsed="20.010983">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T02:17:05.931943" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:17:05.931990" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T02:16:45.920329" elapsed="20.011686"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:17:05.932242" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:05.932133" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:05.932113" elapsed="0.000195"/>
</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-19T02:17:05.933086" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:05.932954" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:05.932936" elapsed="0.000219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:05.933451" 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-19T02:17:05.933554" 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-19T02:17:05.933306" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:05.933994" level="INFO">{1: 10, 2: 24, 3: 20}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:05.933732" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:05.934532" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:05.934208" elapsed="0.000368"/>
</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-19T02:17:05.935115" elapsed="0.000222"/>
</kw>
<msg time="2026-04-19T02:17:05.935434" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:17:05.935482" level="INFO">${old_connection_index} = 20</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-19T02:17:05.934735" 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-19T02:17:05.936334" elapsed="0.000229"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:17:15.938211" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:17:05.937270" elapsed="10.002544">No match found for '
' in 10 seconds
Output:
.</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-19T02:17:05.936731" elapsed="10.003272"/>
</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-19T02:17:15.940984" elapsed="0.000440"/>
</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-19T02:17:15.940352" elapsed="0.001227"/>
</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-19T02:17:05.935799" elapsed="10.005837"/>
</kw>
<status status="PASS" start="2026-04-19T02:17:05.935580" elapsed="10.006109"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:05.935562" elapsed="10.006163"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:15.942701" level="INFO">${ip_address} = 10.30.171.206</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-19T02:17:15.942389" elapsed="0.000340"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:17:15.942784" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:17:15.942944" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:17:15.941974" 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-19T02:17:15.943175" elapsed="0.000437"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:15.944356" level="INFO">index=27
host=10.30.171.206
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-19T02:17:15.944465" level="INFO">${karaf_connection_object} = index=27
host=10.30.171.206
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-19T02:17:15.943791" elapsed="0.000701"/>
</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-19T02:17:15.944647" elapsed="0.002638"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:17:15.947719" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:17:26.013933" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:17:15.947454" elapsed="10.067343">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:17:26.018684" elapsed="0.000644"/>
</kw>
<kw name="Open 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-19T02:17:26.019499" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:26.019829" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:26.016048" elapsed="0.003943"/>
</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-19T02:17:26.015334" elapsed="0.004720"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:17:05.932709" elapsed="20.087433">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:17:26.020519" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:17:26.020687" elapsed="0.000022"/>
</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-19T02:16:45.919690" elapsed="40.101119">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:17:26.020927" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:17:26.020988" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:16:45.914925" elapsed="40.106087"/>
</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-19T02:17:26.021385" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:26.021122" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:26.021101" elapsed="0.000363"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:16:45.914784" elapsed="40.106712"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:16:45.765116" elapsed="40.256415"/>
</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-19T02:16:45.762725" elapsed="40.258866"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T02:16:45.755706" elapsed="40.265949"/>
</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-19T02:16:45.755252" elapsed="40.266446"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T02:16:30.223915" elapsed="55.797837"/>
</kw>
<test id="s1-s13-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.027765" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:17:26.027372" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.028358" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:17:26.028044" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:17:26.028430" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:17:26.028591" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T02:17:26.026926" elapsed="0.001691"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.029636" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:17:26.029250" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.030144" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:17:26.029826" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:17:26.030214" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:17:26.030369" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T02:17:26.028827" elapsed="0.001567"/>
</kw>
<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-19T02:17:26.031856" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:17:26.031478" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.032365" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:17:26.032062" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:17:26.032435" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:17:26.032589" level="INFO">${index_list} = [1, 2, 3]</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-19T02:17:26.031106" elapsed="0.001509"/>
</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-19T02:17:26.033701" level="INFO">${member_ip} = 10.30.171.9</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-19T02:17:26.033420" elapsed="0.000308"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.034561" 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-19T02:17:26.034664" 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-19T02:17:26.034368" elapsed="0.000323"/>
</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-19T02:17:26.037541" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:26.037266" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:26.037246" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.037898" 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-19T02:17:26.037998" 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-19T02:17:26.037769" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.038684" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:26.038199" elapsed="0.000532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.039325" 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-19T02:17:26.038887" elapsed="0.000464"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.040701" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:26.040855" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:26.040114" elapsed="0.000766"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:26.041099" elapsed="0.000734"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.044214" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:26.357762" 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 Sun Apr 19 02:16:30 UTC 2026

  System load:  0.03               Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:16:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:17:26.043594" elapsed="0.314393"/>
</kw>
<msg time="2026-04-19T02:17:26.358149" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:26.042099" elapsed="0.316234"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:26.039568" elapsed="0.318944"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.359024" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:17:26.734886" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:26.735276" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:17:26.735381" 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-19T02:17:26.358754" elapsed="0.376681"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:26.735897" elapsed="0.000610"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.737749" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:26.736955" elapsed="0.000893"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:26.738595" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:26.738022" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:26.737971" elapsed="0.000779"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:26.738982" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T02:17:26.738833" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:26.738812" elapsed="0.000343"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:26.739202" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:26.759231" elapsed="0.001280"/>
</kw>
<kw name="Open 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-19T02:17:26.760744" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:26.761122" elapsed="0.000134"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:26.739680" elapsed="0.021643"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:26.036502" elapsed="0.724924"/>
</kw>
<msg time="2026-04-19T02:17:26.761492" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:26.035907" elapsed="0.725665"/>
</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-19T02:17:26.035378" elapsed="0.726296"/>
</kw>
<msg time="2026-04-19T02:17:26.761725" 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-19T02:17:26.034849" elapsed="0.726925"/>
</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-19T02:17:26.765358" 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-19T02:17:26.765849" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:26.766203" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:26.762173" elapsed="0.004187"/>
</kw>
<msg time="2026-04-19T02:17:26.766454" 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-19T02:17:26.033943" elapsed="0.732536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.766931" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:26.766680" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:26.767051" elapsed="0.000036"/>
</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-19T02:17:26.032990" elapsed="0.734198"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:17:26.032798" elapsed="0.734431"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:26.768242" level="INFO">${member_ip} = 10.30.171.128</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-19T02:17:26.767934" elapsed="0.000336"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.769052" 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-19T02:17:26.769155" 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-19T02:17:26.768891" elapsed="0.000290"/>
</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-19T02:17:26.771895" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:26.771606" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:26.771585" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.772294" 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-19T02:17:26.772396" 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-19T02:17:26.772145" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.773071" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:26.772576" elapsed="0.000544"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.774109" level="INFO">${conn_id} = 32</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:26.773591" elapsed="0.000546"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:26.775417" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:26.775551" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:26.774806" elapsed="0.000770"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:26.775828" elapsed="0.002687"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:26.780913" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:27.229795" 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 Sun Apr 19 02:16:31 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:16:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:17:26.780307" elapsed="0.449754"/>
</kw>
<msg time="2026-04-19T02:17:27.230203" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:26.778772" elapsed="0.451618"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:26.774366" elapsed="0.456209"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:27.231134" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:17:27.588352" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T02:17:27.588727" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:17:27.588827" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:17:27.230830" elapsed="0.358053"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:27.589425" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:27.591534" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:27.590747" elapsed="0.000891"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:27.592201" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:27.591814" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:27.591762" elapsed="0.000601"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:27.592726" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T02:17:27.592484" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:27.592449" elapsed="0.000477"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:27.593003" elapsed="0.000069"/>
</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-19T02:17:27.612154" elapsed="0.000553"/>
</kw>
<kw name="Open 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-19T02:17:27.612876" elapsed="0.000505"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:27.613533" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:27.593771" elapsed="0.019922"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:26.771064" elapsed="0.842724"/>
</kw>
<msg time="2026-04-19T02:17:27.613842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:26.770438" elapsed="0.843462"/>
</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-19T02:17:26.769862" elapsed="0.844118"/>
</kw>
<msg time="2026-04-19T02:17:27.614022" 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-19T02:17:26.769336" elapsed="0.844811"/>
</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-19T02:17:27.617166" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:17:27.617644" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:27.617939" elapsed="0.000399"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:27.614445" elapsed="0.003947"/>
</kw>
<msg time="2026-04-19T02:17:27.618485" 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-19T02:17:26.768485" elapsed="0.850036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:27.619000" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:27.618747" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:27.619108" 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-19T02:17:26.767517" elapsed="0.851716"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:17:26.767332" elapsed="0.851939"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:27.620310" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:27.619993" elapsed="0.000345"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:27.621142" 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-19T02:17:27.621256" 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-19T02:17:27.620967" elapsed="0.000317"/>
</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-19T02:17:27.624315" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:27.624000" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:27.623981" elapsed="0.000418"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:27.624681" 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-19T02:17:27.624782" 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-19T02:17:27.624549" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:27.625472" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:27.624961" elapsed="0.000559"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:27.626119" level="INFO">${conn_id} = 35</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:27.625680" elapsed="0.000465"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:27.627486" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:27.627620" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:27.626850" elapsed="0.000795"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:27.627836" elapsed="0.000742"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:27.630854" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:27.996370" 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 Sun Apr 19 02:16:31 UTC 2026

  System load:  0.06               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:16:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:27.630252" elapsed="0.366460"/>
</kw>
<msg time="2026-04-19T02:17:27.996900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:27.628815" elapsed="0.368298"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:27.626364" elapsed="0.370935"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:27.997811" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:17:28.354807" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T02:17:28.355275" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:17:28.355384" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:17:27.997546" elapsed="0.357895"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:28.355950" elapsed="0.000654"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.357851" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:28.357098" elapsed="0.000862"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:28.358547" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:28.358210" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:28.358141" elapsed="0.000569"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:28.359103" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:17:28.358830" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:28.358797" elapsed="0.000533"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:28.359408" 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-19T02:17:28.379826" elapsed="0.000592"/>
</kw>
<kw name="Open 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-19T02:17:28.380601" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:28.380923" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:28.360186" elapsed="0.020912"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:27.623471" elapsed="0.757720"/>
</kw>
<msg time="2026-04-19T02:17:28.381249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:27.622833" elapsed="0.758476"/>
</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-19T02:17:27.622210" elapsed="0.759179"/>
</kw>
<msg time="2026-04-19T02:17:28.381430" 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-19T02:17:27.621442" elapsed="0.760033"/>
</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-19T02:17:28.384804" 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-19T02:17:28.385297" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:28.385589" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:28.381780" elapsed="0.003964"/>
</kw>
<msg time="2026-04-19T02:17:28.385840" 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-19T02:17:27.620558" elapsed="0.765307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.386332" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:28.386082" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:28.386418" 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-19T02:17:27.619547" elapsed="0.766998"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:17:27.619365" elapsed="0.767217"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:17:26.032669" elapsed="2.353949"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:17:26.030599" elapsed="2.356143"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.387261" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:17:28.386901" elapsed="0.000387"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:17:28.387441" elapsed="0.000224"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:17:28.387847" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:28.387739" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:28.387720" elapsed="0.000192"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.390268" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:28.389931" elapsed="0.000366"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:28.391259" level="INFO">${member_ip} = 10.30.171.9</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-19T02:17:28.390923" elapsed="0.000363"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:28.392075" 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-19T02:17:28.392178" 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-19T02:17:28.391925" elapsed="0.000280"/>
</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-19T02:17:28.396495" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:28.395807" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:28.395746" elapsed="0.000898"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:28.398318" 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-19T02:17:28.398585" 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-19T02:17:28.397801" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.401062" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:28.400481" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:28.403137" level="INFO">${conn_id} = 38</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:28.402380" elapsed="0.000868"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.405760" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:28.405836" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:28.405486" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:28.406092" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:28.407470" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:28.715612" 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 Sun Apr 19 02:16:30 UTC 2026

  System load:  0.03               Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:17:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:17:28.407000" elapsed="0.308778"/>
</kw>
<msg time="2026-04-19T02:17:28.715917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:28.406646" elapsed="0.309427"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:28.404645" elapsed="0.311959"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:28.719005" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:28.741997" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:28.742666" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:28.743111" 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-19T02:17:28.718431" elapsed="0.024934"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:28.746104" elapsed="0.001116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.749897" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:28.748733" elapsed="0.001517"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:28.751156" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:28.750651" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:28.750509" elapsed="0.000856"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:28.751958" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-19T02:17:28.751642" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:28.751544" elapsed="0.000682"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:28.752348" elapsed="0.000058"/>
</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-19T02:17:28.759721" elapsed="0.000528"/>
</kw>
<kw name="Open 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-19T02:17:28.760575" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:28.761114" 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-19T02:17:28.754599" elapsed="0.006830"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:28.394301" elapsed="0.367526"/>
</kw>
<msg time="2026-04-19T02:17:28.762369" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:28.393609" elapsed="0.368842"/>
</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-19T02:17:28.392895" elapsed="0.369675"/>
</kw>
<msg time="2026-04-19T02:17:28.762630" 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-19T02:17:28.392360" elapsed="0.370336"/>
</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-19T02:17:28.767336" elapsed="0.000468"/>
</kw>
<kw name="Open 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-19T02:17:28.768067" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:28.768493" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:28.763378" elapsed="0.005329"/>
</kw>
<msg time="2026-04-19T02:17:28.768853" level="INFO">${output} = 1</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-19T02:17:28.391506" elapsed="0.377384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.769533" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:28.769169" elapsed="0.000426"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:28.769672" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:17:28.769896" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:28.390498" elapsed="0.379433"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:28.769999" elapsed="0.000058"/>
</return>
<msg time="2026-04-19T02:17:28.770232" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:28.389587" elapsed="0.380678"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:28.771225" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:28.770487" elapsed="0.000866">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:28.388863" elapsed="0.382733">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:30.775251" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:30.774493" elapsed="0.000826"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:30.777380" level="INFO">${member_ip} = 10.30.171.9</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-19T02:17:30.776735" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:30.779206" 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-19T02:17:30.779431" 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-19T02:17:30.778853" elapsed="0.000637"/>
</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-19T02:17:30.784367" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:30.783856" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:30.783794" elapsed="0.000724"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:30.786465" 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-19T02:17:30.786744" 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-19T02:17:30.785716" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:30.788616" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:30.788046" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:30.790702" level="INFO">${conn_id} = 41</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:30.789924" elapsed="0.000894"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:30.793708" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:30.793786" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:30.793425" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:30.794221" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:30.795773" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:31.389524" 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 Sun Apr 19 02:17:30 UTC 2026

  System load:  0.04               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:17:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:17:30.795446" elapsed="0.594212"/>
</kw>
<msg time="2026-04-19T02:17:31.389736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:30.794787" elapsed="0.595042"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:30.792558" elapsed="0.597593"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:31.391810" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:31.414845" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:31.415420" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:31.415795" 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-19T02:17:31.391400" elapsed="0.024673"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:31.418740" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:31.422317" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:31.421138" elapsed="0.001441"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:31.423520" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:31.422956" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:31.422821" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:31.425001" elapsed="0.000155"/>
</return>
<status status="PASS" start="2026-04-19T02:17:31.424521" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:31.424396" elapsed="0.001019"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:31.425651" elapsed="0.000097"/>
</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-19T02:17:31.430914" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:17:31.431478" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:31.431838" 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-19T02:17:31.427419" elapsed="0.004722"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:30.782301" elapsed="0.650088"/>
</kw>
<msg time="2026-04-19T02:17:31.432743" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:30.781564" elapsed="0.651238"/>
</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-19T02:17:30.780988" elapsed="0.651898"/>
</kw>
<msg time="2026-04-19T02:17:31.432927" 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-19T02:17:30.779842" elapsed="0.653130"/>
</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-19T02:17:31.435990" elapsed="0.000514"/>
</kw>
<kw name="Open 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-19T02:17:31.436673" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:31.436968" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:31.433279" elapsed="0.003857"/>
</kw>
<msg time="2026-04-19T02:17:31.437227" level="INFO">${output} = 1</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-19T02:17:30.777917" elapsed="0.659335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:31.437702" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:31.437430" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:31.437790" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:31.437943" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:30.775776" elapsed="0.662192"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:31.438015" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T02:17:31.438186" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:30.773597" elapsed="0.664614"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:31.438757" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:31.438367" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:30.772486" elapsed="0.666453">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.442492" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:33.441724" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:33.444605" level="INFO">${member_ip} = 10.30.171.9</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-19T02:17:33.443952" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.446609" 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-19T02:17:33.446835" 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-19T02:17:33.446279" elapsed="0.000616"/>
</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-19T02:17:33.453257" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:33.452301" elapsed="0.001067"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:33.452225" elapsed="0.001226"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.455460" 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-19T02:17:33.455799" 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-19T02:17:33.454818" elapsed="0.001120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.458112" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:33.457344" elapsed="0.000928"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.460792" level="INFO">${conn_id} = 44</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:33.459670" elapsed="0.001275"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.463414" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:33.463491" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:33.462956" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:33.463725" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.465044" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:33.777987" 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 Sun Apr 19 02:17:30 UTC 2026

  System load:  0.04               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:17:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:17:33.464697" elapsed="0.313443"/>
</kw>
<msg time="2026-04-19T02:17:33.778224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:33.464311" elapsed="0.313998"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:33.462193" elapsed="0.316389"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.780133" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:33.802663" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:33.803224" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T02:17:33.803550" 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-19T02:17:33.779689" elapsed="0.024064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:33.805921" elapsed="0.000863"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.809019" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:33.808100" elapsed="0.001174"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:33.810123" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:33.809611" elapsed="0.000674"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:33.809491" elapsed="0.000915"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:33.811424" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:17:33.810715" elapsed="0.001027"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:33.810610" elapsed="0.001266"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:33.811983" 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-19T02:17:33.816649" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:17:33.817205" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:33.817561" 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-19T02:17:33.813319" elapsed="0.004446"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:33.450389" elapsed="0.367596"/>
</kw>
<msg time="2026-04-19T02:17:33.818304" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:33.449427" elapsed="0.368933"/>
</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-19T02:17:33.448501" elapsed="0.369941"/>
</kw>
<msg time="2026-04-19T02:17:33.818484" 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-19T02:17:33.447279" elapsed="0.371251"/>
</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-19T02:17:33.821594" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:17:33.822092" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:33.822389" 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-19T02:17:33.818822" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T02:17:33.822630" level="INFO">${output} = 0</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-19T02:17:33.445331" elapsed="0.377325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.823209" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:33.822834" elapsed="0.000420"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:33.823297" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:33.823450" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:33.443012" elapsed="0.380464"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:33.823523" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:17:33.823668" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:33.440887" elapsed="0.382805"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T02:17:33.823851" elapsed="0.000370"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T02:17:33.439755" elapsed="0.384529"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:17:28.388294" elapsed="5.436039"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:17:28.388147" elapsed="5.436226"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.826176" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:33.825867" elapsed="0.000336"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:33.827180" level="INFO">${member_ip} = 10.30.171.128</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-19T02:17:33.826801" elapsed="0.000406"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.827960" 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-19T02:17:33.828074" 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-19T02:17:33.827823" elapsed="0.000314"/>
</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-19T02:17:33.831774" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:33.831350" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:33.831298" elapsed="0.000798"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.833484" 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-19T02:17:33.833721" 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-19T02:17:33.833056" elapsed="0.000763"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.835340" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:33.834774" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.837160" 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-19T02:17:33.836406" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:33.839551" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:33.839628" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:33.839218" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:33.839897" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:33.841397" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:34.435185" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.03               Processes:             122
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:17:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:17:33.840818" elapsed="0.594511"/>
</kw>
<msg time="2026-04-19T02:17:34.435414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:33.840462" elapsed="0.595037"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:33.838420" elapsed="0.597359"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:34.437309" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:34.460200" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:34.460722" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T02:17:34.461120" 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-19T02:17:34.436903" elapsed="0.024428"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:34.463534" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:34.466126" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:34.465449" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:34.466850" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:34.466512" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:34.466430" 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-19T02:17:34.467587" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:17:34.467289" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:34.467216" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:34.467935" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:34.474903" elapsed="0.000512"/>
</kw>
<kw name="Open 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-19T02:17:34.475729" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:34.476341" elapsed="0.000180"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:34.469926" elapsed="0.006755"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:33.829973" elapsed="0.647011"/>
</kw>
<msg time="2026-04-19T02:17:34.477306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:33.829342" elapsed="0.648022"/>
</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-19T02:17:33.828799" elapsed="0.648648"/>
</kw>
<msg time="2026-04-19T02:17:34.477490" 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-19T02:17:33.828298" elapsed="0.649238"/>
</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-19T02:17:34.480597" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:17:34.481091" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:34.481393" 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-19T02:17:34.477827" elapsed="0.003713"/>
</kw>
<msg time="2026-04-19T02:17:34.481630" level="INFO">${output} = 0</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-19T02:17:33.827420" elapsed="0.654235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:34.482101" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:34.481830" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:34.482190" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:34.482341" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:33.826398" elapsed="0.655969"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:34.482414" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:17:34.482558" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:33.825528" elapsed="0.657055"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T02:17:34.482739" elapsed="0.000370"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T02:17:33.825141" elapsed="0.658032"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:17:33.824613" elapsed="0.658607"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:17:33.824470" elapsed="0.658790"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:34.485089" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:34.484775" elapsed="0.000342"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:34.485998" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:34.485728" elapsed="0.000337"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:34.486852" 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-19T02:17:34.486952" 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-19T02:17:34.486718" elapsed="0.000260"/>
</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-19T02:17:34.490722" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:34.490303" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:34.490253" elapsed="0.000642"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:34.492542" 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-19T02:17:34.492800" 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-19T02:17:34.491858" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:34.494464" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:34.493895" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:34.496284" level="INFO">${conn_id} = 50</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:34.495558" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:34.500801" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:34.500979" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:34.499782" elapsed="0.001292"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:34.501627" elapsed="0.000957"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:34.504490" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:35.089255" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:34.504130" elapsed="0.585257"/>
</kw>
<msg time="2026-04-19T02:17:35.089466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:34.503115" elapsed="0.586432"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:34.497897" elapsed="0.591918"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:35.091328" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:35.113682" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:35.114360" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:35.114703" 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-19T02:17:35.090909" elapsed="0.024003"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:35.117153" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:35.119890" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:35.119287" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:35.120624" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:35.120306" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:35.120230" elapsed="0.000581"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:35.121311" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:17:35.121009" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:35.120944" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:35.121642" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:35.130349" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T02:17:35.131149" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:35.131640" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:35.123560" elapsed="0.008370"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:34.488957" elapsed="0.643337"/>
</kw>
<msg time="2026-04-19T02:17:35.132781" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:34.488251" elapsed="0.644610"/>
</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-19T02:17:34.487686" elapsed="0.645288"/>
</kw>
<msg time="2026-04-19T02:17:35.133050" 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-19T02:17:34.487177" elapsed="0.645939"/>
</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-19T02:17:35.136684" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:17:35.137177" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:35.137470" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:35.133523" elapsed="0.004093"/>
</kw>
<msg time="2026-04-19T02:17:35.137706" level="INFO">${output} = 1</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-19T02:17:34.486285" elapsed="0.651446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:35.138179" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:35.137910" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:35.138277" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:17:35.138433" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:34.485324" elapsed="0.653135"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:35.138505" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:17:35.138646" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:34.484413" elapsed="0.654259"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:35.139242" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:35.138826" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:34.484007" elapsed="0.655413">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:37.143008" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:37.142206" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:37.145515" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:37.144858" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:37.147360" 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-19T02:17:37.147589" 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-19T02:17:37.147000" elapsed="0.000648"/>
</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-19T02:17:37.152664" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:37.152175" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:37.152120" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:37.154456" 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-19T02:17:37.154698" 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-19T02:17:37.153788" elapsed="0.001009"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:37.156410" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:37.155768" elapsed="0.000760"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:37.158360" 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-19T02:17:37.157640" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:37.160843" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:37.160922" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:37.160548" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:37.161257" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:37.163105" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:37.472399" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:37.162575" elapsed="0.309982"/>
</kw>
<msg time="2026-04-19T02:17:37.472644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:37.162063" elapsed="0.310675"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:37.159688" elapsed="0.313335"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:37.474570" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:37.497485" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:37.497991" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:37.498380" 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-19T02:17:37.474179" elapsed="0.024416"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:37.500877" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:37.504179" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:37.503110" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:37.504884" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:37.504555" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:37.504474" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:37.505591" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:17:37.505307" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:37.505239" elapsed="0.000574"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:37.505922" elapsed="0.000051"/>
</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-19T02:17:37.512738" 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-19T02:17:37.513513" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:37.514062" elapsed="0.000172"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:37.507838" elapsed="0.006548"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:37.150621" elapsed="0.364079"/>
</kw>
<msg time="2026-04-19T02:17:37.515174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:37.149753" elapsed="0.365710"/>
</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-19T02:17:37.149214" elapsed="0.366368"/>
</kw>
<msg time="2026-04-19T02:17:37.515640" 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-19T02:17:37.147998" elapsed="0.367705"/>
</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-19T02:17:37.518976" 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-19T02:17:37.519499" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:37.519794" 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-19T02:17:37.516269" elapsed="0.003672"/>
</kw>
<msg time="2026-04-19T02:17:37.520108" level="INFO">${output} = 1</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-19T02:17:37.146086" elapsed="0.374051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:37.520564" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:37.520317" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:37.520651" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:37.520803" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:37.143705" elapsed="0.377123"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:37.520876" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:17:37.521146" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:37.141348" elapsed="0.379825"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:37.521739" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:37.521335" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:37.140259" elapsed="0.381672">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:39.525715" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:39.524771" elapsed="0.001022"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:39.527702" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:39.527307" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:39.529091" 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-19T02:17:39.529236" 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-19T02:17:39.528842" elapsed="0.000431"/>
</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-19T02:17:39.534862" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:39.534202" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:39.534127" elapsed="0.000969"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:39.537416" 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-19T02:17:39.537761" 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-19T02:17:39.536468" elapsed="0.001432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:39.539925" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:39.539378" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:39.541748" level="INFO">${conn_id} = 56</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:39.541044" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:39.544220" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:39.544297" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:39.543900" 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-19T02:17:39.544535" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:39.545890" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:39.892652" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:39.545562" elapsed="0.347241"/>
</kw>
<msg time="2026-04-19T02:17:39.892888" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:39.545191" elapsed="0.347785"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:39.543128" elapsed="0.350146"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:39.894770" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:39.917238" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:39.917737" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:39.918133" 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-19T02:17:39.894377" elapsed="0.023971"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:39.920569" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:39.923533" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:39.922757" elapsed="0.000917"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:39.924261" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:39.923901" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:39.923822" elapsed="0.000623"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:39.924930" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:17:39.924650" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:39.924581" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:39.925287" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:39.932047" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T02:17:39.932808" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:39.933324" 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-19T02:17:39.927248" elapsed="0.006362"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:39.532175" elapsed="0.401770"/>
</kw>
<msg time="2026-04-19T02:17:39.934400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:39.531173" elapsed="0.403285"/>
</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-19T02:17:39.530269" elapsed="0.404273"/>
</kw>
<msg time="2026-04-19T02:17:39.934582" 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-19T02:17:39.529498" elapsed="0.405129"/>
</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-19T02:17:39.937662" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:39.938164" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:39.938461" 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-19T02:17:39.934919" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T02:17:39.938758" level="INFO">${output} = 1</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-19T02:17:39.528090" elapsed="0.410694"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:39.939236" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:39.938958" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:39.939323" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:39.939475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:39.526297" elapsed="0.413203"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:39.939546" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:17:39.939690" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:39.523869" elapsed="0.415846"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:39.940286" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:39.939873" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:39.522721" elapsed="0.417751">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:41.944517" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:41.943728" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:41.946633" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:41.945980" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:41.948490" 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-19T02:17:41.948711" 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-19T02:17:41.948150" elapsed="0.000619"/>
</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-19T02:17:41.953974" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:41.953513" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:41.953456" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:41.955824" 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-19T02:17:41.956082" 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-19T02:17:41.955142" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:41.957691" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:41.957150" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:41.959501" level="INFO">${conn_id} = 59</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:41.958795" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:41.961914" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:41.961991" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:41.961625" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:41.962241" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:41.963519" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:42.269800" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:41.963194" elapsed="0.306801"/>
</kw>
<msg time="2026-04-19T02:17:42.270081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:41.962820" elapsed="0.307341"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:41.960779" elapsed="0.309628"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:42.271838" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:42.294796" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:42.295340" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:42.295666" 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-19T02:17:42.271466" elapsed="0.024410"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:42.298118" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:42.301197" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:42.300239" elapsed="0.001189"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:42.302357" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:42.301766" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:42.301648" elapsed="0.000997"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:42.303170" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:17:42.302850" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:42.302780" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:42.303508" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:42.310153" 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-19T02:17:42.310921" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:42.311433" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:42.305401" elapsed="0.006318"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:41.952143" elapsed="0.359881"/>
</kw>
<msg time="2026-04-19T02:17:42.312556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:41.951426" elapsed="0.361209"/>
</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-19T02:17:41.950317" elapsed="0.362432"/>
</kw>
<msg time="2026-04-19T02:17:42.312804" 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-19T02:17:41.949153" elapsed="0.363713"/>
</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-19T02:17:42.317336" 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-19T02:17:42.318015" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:42.318449" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:42.313338" elapsed="0.005315"/>
</kw>
<msg time="2026-04-19T02:17:42.318776" level="INFO">${output} = 1</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-19T02:17:41.947209" elapsed="0.371602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:42.319430" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:42.319080" elapsed="0.000412"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:42.319551" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:17:42.319762" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:41.945069" elapsed="0.374727"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:42.319860" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:17:42.320151" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:41.942875" elapsed="0.377313"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:42.321083" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:42.320497" elapsed="0.000691">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:41.941353" elapsed="0.379994">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:44.324932" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:44.324195" elapsed="0.000813"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:44.327147" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:44.326451" elapsed="0.000758"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:44.328350" 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-19T02:17:44.328491" 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-19T02:17:44.328127" elapsed="0.000400"/>
</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-19T02:17:44.334282" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:44.333620" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:44.333245" elapsed="0.001234"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:44.336511" 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-19T02:17:44.336859" 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-19T02:17:44.335873" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:44.339200" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:44.338386" elapsed="0.000990"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:44.341138" level="INFO">${conn_id} = 62</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:44.340420" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:44.343551" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:44.343629" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:44.343263" 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-19T02:17:44.343867" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:44.345260" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:44.663068" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:44.344920" elapsed="0.318293"/>
</kw>
<msg time="2026-04-19T02:17:44.663295" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:44.344558" elapsed="0.318824"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:44.342446" elapsed="0.321209"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:44.665151" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:44.688081" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:44.688594" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:44.688930" 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-19T02:17:44.664733" elapsed="0.024452"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:44.691433" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:44.694680" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:44.693649" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:44.695785" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:44.695290" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:44.695168" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:44.696872" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:17:44.696429" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:44.696325" elapsed="0.000929"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:44.697429" elapsed="0.000084"/>
</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-19T02:17:44.703315" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:17:44.703858" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:44.704234" 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-19T02:17:44.699904" elapsed="0.004546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:44.331365" elapsed="0.373310"/>
</kw>
<msg time="2026-04-19T02:17:44.704982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:44.330254" elapsed="0.374799"/>
</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-19T02:17:44.329489" elapsed="0.375648"/>
</kw>
<msg time="2026-04-19T02:17:44.705178" 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-19T02:17:44.328746" elapsed="0.376478"/>
</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-19T02:17:44.708355" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:17:44.708829" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:44.709598" elapsed="0.000247"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:44.705516" elapsed="0.004453"/>
</kw>
<msg time="2026-04-19T02:17:44.710216" level="INFO">${output} = 1</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-19T02:17:44.327535" elapsed="0.382738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:44.711278" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:44.710684" elapsed="0.000694"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:44.711473" elapsed="0.000064"/>
</return>
<msg time="2026-04-19T02:17:44.711808" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:44.325497" elapsed="0.386365"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:44.711964" elapsed="0.000056"/>
</return>
<msg time="2026-04-19T02:17:44.712309" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:44.323355" elapsed="0.389007"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:44.713728" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:44.712704" elapsed="0.001169">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:44.322235" elapsed="0.391900">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:46.717794" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:46.717007" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:46.720139" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:46.719463" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:46.721396" 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-19T02:17:46.721539" 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-19T02:17:46.721165" elapsed="0.000410"/>
</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-19T02:17:46.727186" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:46.726512" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:46.726133" elapsed="0.001248"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:46.729435" 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-19T02:17:46.729771" 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-19T02:17:46.728786" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:46.732184" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:46.731384" elapsed="0.000957"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:46.734093" level="INFO">${conn_id} = 65</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:46.733379" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:46.736539" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:46.736616" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:46.736252" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:46.736851" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:46.738120" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:47.066970" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:46.737779" elapsed="0.329328"/>
</kw>
<msg time="2026-04-19T02:17:47.067182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:46.737422" elapsed="0.329840"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:46.735465" elapsed="0.332056"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:47.068965" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:47.092300" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:47.092830" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:47.093209" 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-19T02:17:47.068600" elapsed="0.024829"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:47.095641" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:47.098909" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:47.097901" 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-19T02:17:47.100184" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:47.099523" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:47.099400" elapsed="0.001086"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:47.101443" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:17:47.100815" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:47.100705" elapsed="0.001095"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:47.101977" elapsed="0.000114"/>
</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-19T02:17:47.108340" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:17:47.108889" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:47.109293" 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-19T02:17:47.104959" elapsed="0.004540"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:46.724290" elapsed="0.385430"/>
</kw>
<msg time="2026-04-19T02:17:47.110022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:46.723319" elapsed="0.386781"/>
</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-19T02:17:46.722540" elapsed="0.387643"/>
</kw>
<msg time="2026-04-19T02:17:47.110224" 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-19T02:17:46.721798" elapsed="0.388471"/>
</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-19T02:17:47.113363" 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-19T02:17:47.113846" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:47.114154" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:47.110558" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T02:17:47.114395" level="INFO">${output} = 1</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-19T02:17:46.720571" elapsed="0.393852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:47.114852" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:47.114605" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:47.114938" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:47.115106" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:46.718509" elapsed="0.396623"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:47.115180" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:17:47.115324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:46.716186" elapsed="0.399162"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:47.115920" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:47.115502" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:46.714989" elapsed="0.401126">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:49.119820" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:49.118879" elapsed="0.001010"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:49.122127" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:49.121438" elapsed="0.000751"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:49.123391" 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-19T02:17:49.123643" 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-19T02:17:49.123160" elapsed="0.000522"/>
</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-19T02:17:49.129219" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:49.128566" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:49.128221" elapsed="0.001189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:49.131402" 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-19T02:17:49.131741" 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-19T02:17:49.130773" elapsed="0.001104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:49.134006" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:49.133230" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:49.135961" level="INFO">${conn_id} = 68</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:49.135275" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:49.138326" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:49.138405" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:49.138044" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:49.138636" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:49.140068" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:49.456957" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:49.139732" elapsed="0.317392"/>
</kw>
<msg time="2026-04-19T02:17:49.457210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:49.139371" elapsed="0.317928"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:49.137260" elapsed="0.320341"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:49.459111" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:49.482188" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:49.482691" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:49.483026" 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-19T02:17:49.458702" elapsed="0.024575"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:49.485739" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:49.489212" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:49.488161" elapsed="0.001303"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:49.490596" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:49.489820" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:49.489693" elapsed="0.001201"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:49.491699" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:17:49.491251" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:49.491143" elapsed="0.000969"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:49.492299" elapsed="0.000084"/>
</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-19T02:17:49.500144" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:17:49.500757" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:49.501221" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:49.494920" elapsed="0.006531"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:49.126390" elapsed="0.375285"/>
</kw>
<msg time="2026-04-19T02:17:49.501982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:49.125419" elapsed="0.376634"/>
</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-19T02:17:49.124656" elapsed="0.377479"/>
</kw>
<msg time="2026-04-19T02:17:49.502175" 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-19T02:17:49.123907" elapsed="0.378313"/>
</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-19T02:17:49.505239" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:17:49.505749" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:49.506054" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:49.502514" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T02:17:49.506292" level="INFO">${output} = 1</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-19T02:17:49.122574" elapsed="0.383743"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:49.506753" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:49.506509" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:49.506839" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:49.506987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:49.120384" elapsed="0.386627"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:49.507072" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:17:49.507212" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:49.118070" elapsed="0.389167"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:49.507776" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:49.507390" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:49.116966" elapsed="0.390990">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:51.511445" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:51.510679" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:51.513553" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:51.512912" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:51.515489" 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-19T02:17:51.515858" 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-19T02:17:51.515142" elapsed="0.000786"/>
</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-19T02:17:51.521412" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:51.520921" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:51.520864" elapsed="0.000771"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:51.523332" 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-19T02:17:51.523584" 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-19T02:17:51.522656" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:51.525237" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:51.524679" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:51.527235" level="INFO">${conn_id} = 71</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:51.526519" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:51.529601" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:51.529678" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:51.529321" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:51.529914" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:51.531350" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:51.848675" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:51.530857" elapsed="0.317952"/>
</kw>
<msg time="2026-04-19T02:17:51.848892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:51.530485" elapsed="0.318494"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:51.528537" elapsed="0.320731"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:51.850758" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:51.874086" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:51.874349" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:51.874502" 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-19T02:17:51.850374" elapsed="0.024223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:51.875600" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:51.877050" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:51.876607" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:51.877580" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:51.877335" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:51.877276" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:51.878075" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T02:17:51.877857" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:51.877810" elapsed="0.000426"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:51.878328" 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-19T02:17:51.883060" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:17:51.883621" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:51.883975" elapsed="0.000206"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:51.879658" elapsed="0.004633"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:51.519512" elapsed="0.365007"/>
</kw>
<msg time="2026-04-19T02:17:51.884888" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:51.518803" elapsed="0.366143"/>
</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-19T02:17:51.517645" elapsed="0.367382"/>
</kw>
<msg time="2026-04-19T02:17:51.885086" 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-19T02:17:51.516352" elapsed="0.368781"/>
</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-19T02:17:51.888221" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:17:51.888700" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:51.888995" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:51.885424" elapsed="0.003747"/>
</kw>
<msg time="2026-04-19T02:17:51.889262" level="INFO">${output} = 1</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-19T02:17:51.514147" elapsed="0.375141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:51.889718" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:51.889466" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:51.889807" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:51.889959" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:51.511965" elapsed="0.378020"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:51.890036" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:17:51.890197" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:51.509801" elapsed="0.380421"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:51.890871" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:51.890378" elapsed="0.000566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:51.508726" elapsed="0.382350">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:53.894641" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:53.893855" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:53.896776" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:53.896171" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:53.898626" 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-19T02:17:53.898855" 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-19T02:17:53.898297" elapsed="0.000618"/>
</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-19T02:17:53.904923" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:53.904291" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:53.904186" elapsed="0.000953"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:53.907456" 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-19T02:17:53.907799" 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-19T02:17:53.906485" elapsed="0.001456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:53.909736" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:53.909191" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:53.911685" level="INFO">${conn_id} = 74</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:53.910959" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:53.914096" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:53.914175" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:53.913797" 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-19T02:17:53.914412" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:53.915917" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:54.259156" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:53.915590" elapsed="0.343825"/>
</kw>
<msg time="2026-04-19T02:17:54.259573" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:53.914970" elapsed="0.344765"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:53.913016" elapsed="0.347377"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:54.263767" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:54.286942" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:54.287495" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:54.287835" 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-19T02:17:54.262827" elapsed="0.025257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:54.290400" elapsed="0.000681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:54.292536" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:54.291879" elapsed="0.000848"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:54.293336" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:54.292970" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:54.292885" 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-19T02:17:54.294106" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:17:54.293764" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:54.293690" elapsed="0.000643"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:54.294446" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:54.300552" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:54.301123" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:54.301485" 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-19T02:17:54.296403" elapsed="0.005290"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:53.902328" elapsed="0.399585"/>
</kw>
<msg time="2026-04-19T02:17:54.302253" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:53.901364" elapsed="0.400947"/>
</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-19T02:17:53.900580" elapsed="0.401817"/>
</kw>
<msg time="2026-04-19T02:17:54.302438" 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-19T02:17:53.899298" elapsed="0.403187"/>
</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-19T02:17:54.305626" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:17:54.306145" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:54.306448" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:54.302847" elapsed="0.003749"/>
</kw>
<msg time="2026-04-19T02:17:54.306688" level="INFO">${output} = 1</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-19T02:17:53.897350" elapsed="0.409363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:54.307158" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:54.306891" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:54.307246" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:54.307399" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:53.895203" elapsed="0.412221"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:54.307472" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:17:54.307618" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:53.893007" elapsed="0.414635"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:54.308246" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:54.307801" elapsed="0.000524">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:53.891942" elapsed="0.416499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:56.312623" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:56.311777" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:56.314962" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:56.314343" elapsed="0.000680"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:56.316971" 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-19T02:17:56.317238" 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-19T02:17:56.316604" elapsed="0.000696"/>
</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-19T02:17:56.324067" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:56.323383" elapsed="0.000801"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:56.323303" elapsed="0.000966"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:56.326221" 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-19T02:17:56.326625" 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-19T02:17:56.325486" elapsed="0.001249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:56.328363" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:56.327775" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:56.330470" 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-19T02:17:56.329582" elapsed="0.001013"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:56.333020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:56.333120" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:56.332711" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:56.333365" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:56.335411" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:56.655237" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:56.334917" elapsed="0.320476"/>
</kw>
<msg time="2026-04-19T02:17:56.655479" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:56.334385" elapsed="0.321185"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:56.331873" elapsed="0.323982"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:56.657380" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:56.680880" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:56.681430" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:56.681760" 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-19T02:17:56.656963" elapsed="0.025006"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:56.684314" elapsed="0.001006"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:56.687865" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:56.686645" elapsed="0.001371"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:56.688635" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:56.688293" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:56.688208" elapsed="0.000628"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:56.689509" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:17:56.689221" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:56.689150" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:56.689865" elapsed="0.000057"/>
</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-19T02:17:56.696650" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:17:56.697240" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:56.697624" 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-19T02:17:56.691905" elapsed="0.005944"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:56.321407" elapsed="0.376753"/>
</kw>
<msg time="2026-04-19T02:17:56.698486" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:56.320134" elapsed="0.378414"/>
</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-19T02:17:56.318832" elapsed="0.379802"/>
</kw>
<msg time="2026-04-19T02:17:56.698675" 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-19T02:17:56.317656" elapsed="0.381065"/>
</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-19T02:17:56.701722" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:56.702301" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:56.702603" 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-19T02:17:56.699016" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T02:17:56.702917" level="INFO">${output} = 1</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-19T02:17:56.315556" elapsed="0.387388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:56.703432" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:56.703140" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:56.703522" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:17:56.703694" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:56.313276" elapsed="0.390445"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:56.703770" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:17:56.703921" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:56.310848" elapsed="0.393098"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:56.704533" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:56.704125" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:56.309705" elapsed="0.395056">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:17:58.708533" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:17:58.707731" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:17:58.710702" level="INFO">${member_ip} = 10.30.171.206</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-19T02:17:58.710005" elapsed="0.000757"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:58.712117" 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-19T02:17:58.712259" 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-19T02:17:58.711862" elapsed="0.000434"/>
</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-19T02:17:58.717949" elapsed="0.000397"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:17:58.717319" elapsed="0.001092"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:58.717241" elapsed="0.001310"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:58.720033" 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-19T02:17:58.720291" 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-19T02:17:58.719592" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:58.721885" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:58.721353" elapsed="0.000640"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:17:58.723709" level="INFO">${conn_id} = 80</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:58.722991" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:17:58.726156" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:17:58.726234" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:17:58.725855" 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-19T02:17:58.726469" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:17:58.727762" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:17:59.053217" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:17:58.727436" elapsed="0.326089"/>
</kw>
<msg time="2026-04-19T02:17:59.053620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:58.727071" elapsed="0.326651"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:17:58.725098" elapsed="0.328915"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:17:59.055578" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:17:59.078632" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:17:59.079182" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:17:59.079572" 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-19T02:17:59.055176" elapsed="0.024613"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:59.082074" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:59.085324" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:59.084282" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:59.086463" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:17:59.085907" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:59.085785" elapsed="0.000968"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:17:59.087617" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:17:59.087113" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T02:17:59.086971" elapsed="0.000879"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:17:59.087928" 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-19T02:17:59.092690" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:17:59.093313" elapsed="0.000294"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:59.093809" 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-19T02:17:59.089383" elapsed="0.004639"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:17:58.715023" elapsed="0.379244"/>
</kw>
<msg time="2026-04-19T02:17:59.094577" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:17:58.714009" elapsed="0.380624"/>
</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-19T02:17:58.713267" elapsed="0.381449"/>
</kw>
<msg time="2026-04-19T02:17:59.094757" 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-19T02:17:58.712520" elapsed="0.382284"/>
</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-19T02:17:59.097878" 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-19T02:17:59.098372" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:17:59.098668" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:17:59.095112" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T02:17:59.098913" level="INFO">${output} = 1</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-19T02:17:58.711284" elapsed="0.387655"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:17:59.099375" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:17:59.099130" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:17:59.099462" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:17:59.099616" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:17:58.709096" elapsed="0.390558"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:17:59.099701" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:17:59.099845" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:17:58.706838" elapsed="0.393031"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:17:59.100505" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:17:59.100100" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:17:58.705677" elapsed="0.395022">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:01.104206" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:01.103447" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:01.106295" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:01.105666" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:01.107690" 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-19T02:18:01.107832" 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-19T02:18:01.107461" elapsed="0.000413"/>
</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-19T02:18:01.113765" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:01.112779" elapsed="0.001119"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:01.112699" elapsed="0.001299"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:01.116076" 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-19T02:18:01.116317" 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-19T02:18:01.115457" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:01.117960" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:01.117423" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:01.119768" 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-19T02:18:01.119073" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:01.122298" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:01.122376" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:01.121976" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:01.122608" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:01.123918" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:01.437893" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:17:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:01.123572" elapsed="0.314432"/>
</kw>
<msg time="2026-04-19T02:18:01.438096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:01.123214" elapsed="0.314962"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:01.121195" elapsed="0.317223"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:01.439835" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:01.462448" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:01.462672" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:01.462823" 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-19T02:18:01.439469" elapsed="0.023449"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:01.463908" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:01.465343" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:01.464896" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:01.465849" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:01.465611" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:01.465552" elapsed="0.000430"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:01.466379" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:18:01.466179" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:01.466130" elapsed="0.000407"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:01.466617" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:01.471334" 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-19T02:18:01.471872" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:01.472256" 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-19T02:18:01.467944" elapsed="0.004516"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:01.110748" elapsed="0.361931"/>
</kw>
<msg time="2026-04-19T02:18:01.472982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:01.109722" elapsed="0.363478"/>
</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-19T02:18:01.108940" elapsed="0.364346"/>
</kw>
<msg time="2026-04-19T02:18:01.473326" 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-19T02:18:01.108116" elapsed="0.365255"/>
</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-19T02:18:01.476373" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T02:18:01.476841" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:01.477185" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:01.473658" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T02:18:01.477425" level="INFO">${output} = 1</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-19T02:18:01.106864" elapsed="0.370586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:01.477873" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:01.477627" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:01.477959" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:01.478131" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:01.104720" elapsed="0.373436"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:01.478214" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:18:01.478360" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:01.102605" elapsed="0.375780"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:01.478938" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:01.478540" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:01.101549" elapsed="0.377591">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:03.482789" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:03.481995" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:03.485143" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:03.484497" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:03.486972" 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-19T02:18:03.487234" 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-19T02:18:03.486641" elapsed="0.000675"/>
</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-19T02:18:03.492054" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:03.491536" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:03.491239" elapsed="0.000971"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:03.493696" 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-19T02:18:03.493959" 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-19T02:18:03.493237" elapsed="0.000845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:03.495690" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:03.495101" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:03.498395" level="INFO">${conn_id} = 86</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:03.496849" elapsed="0.001774"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:03.502004" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:03.502110" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:03.501708" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:03.502356" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:03.503708" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:03.824521" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:03.503337" elapsed="0.321345"/>
</kw>
<msg time="2026-04-19T02:18:03.824769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:03.502922" elapsed="0.321944"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:03.500900" elapsed="0.324291"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:03.826820" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:03.849922" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:03.850479" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:03.850818" 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-19T02:18:03.826402" elapsed="0.024665"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:03.853302" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:03.856534" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:03.855507" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:03.857840" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:03.857148" elapsed="0.000965"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:03.856990" elapsed="0.001258"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:03.859012" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T02:18:03.858575" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:03.858466" elapsed="0.000739"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:03.859285" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:03.866288" 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-19T02:18:03.866877" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:03.867287" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:03.860695" elapsed="0.006807"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:03.489828" elapsed="0.377899"/>
</kw>
<msg time="2026-04-19T02:18:03.868140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:03.489077" elapsed="0.379131"/>
</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-19T02:18:03.488523" elapsed="0.379773"/>
</kw>
<msg time="2026-04-19T02:18:03.868338" 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-19T02:18:03.487773" elapsed="0.380612"/>
</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-19T02:18:03.872147" elapsed="0.000421"/>
</kw>
<kw name="Open 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-19T02:18:03.872784" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:03.873177" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:03.868678" elapsed="0.004688"/>
</kw>
<msg time="2026-04-19T02:18:03.873478" level="INFO">${output} = 1</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-19T02:18:03.485690" elapsed="0.387819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:03.874145" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:03.873768" elapsed="0.000441"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:03.874268" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:18:03.874474" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:03.483536" elapsed="0.390973"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:03.874576" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:18:03.874777" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:03.481168" elapsed="0.393644"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:03.875586" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:03.875051" elapsed="0.000633">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:03.480068" elapsed="0.395763">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:05.879446" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:05.878529" elapsed="0.000987"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:05.881554" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:05.880919" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:05.883340" 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-19T02:18:05.883578" 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-19T02:18:05.883119" elapsed="0.000498"/>
</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-19T02:18:05.888906" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:05.888279" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:05.888202" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:05.891538" 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-19T02:18:05.891890" 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-19T02:18:05.890508" elapsed="0.001511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:05.893570" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:05.893011" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:05.895452" 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-19T02:18:05.894667" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:05.897797" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:05.897875" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:05.897516" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:05.898133" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:05.899607" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:06.209815" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:05.899277" elapsed="0.310643"/>
</kw>
<msg time="2026-04-19T02:18:06.209992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:05.898688" elapsed="0.311398"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:05.896738" elapsed="0.313598"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:06.211723" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:06.234621" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:06.234853" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:06.235004" 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-19T02:18:06.211366" elapsed="0.023759"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:06.236138" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:06.237590" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:06.237158" elapsed="0.000536"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:06.238112" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:06.237857" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:06.237801" elapsed="0.000446"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:06.238596" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T02:18:06.238392" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:06.238343" elapsed="0.000414"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:06.238837" 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-19T02:18:06.243567" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:18:06.244207" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:06.244568" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:06.240193" elapsed="0.004588"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:05.886307" elapsed="0.358719"/>
</kw>
<msg time="2026-04-19T02:18:06.245499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:05.885351" elapsed="0.360206"/>
</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-19T02:18:05.884582" elapsed="0.361058"/>
</kw>
<msg time="2026-04-19T02:18:06.245682" 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-19T02:18:05.883840" elapsed="0.361889"/>
</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-19T02:18:06.248725" elapsed="0.000399"/>
</kw>
<kw name="Open 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-19T02:18:06.249293" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:06.249593" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:06.246050" elapsed="0.003692"/>
</kw>
<msg time="2026-04-19T02:18:06.249833" level="INFO">${output} = 1</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-19T02:18:05.882124" elapsed="0.367735"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:06.250344" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:06.250076" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:06.250434" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:06.250588" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:05.879973" elapsed="0.370641"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:06.250662" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:06.250808" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:05.877689" elapsed="0.373145"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:06.251406" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:06.250993" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:05.876653" elapsed="0.374932">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:08.255234" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:08.254450" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:08.257347" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:08.256709" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:08.259225" 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-19T02:18:08.259452" 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-19T02:18:08.258866" elapsed="0.000650"/>
</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-19T02:18:08.265507" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:08.265024" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:08.264968" elapsed="0.000756"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:08.267445" 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-19T02:18:08.267693" 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-19T02:18:08.266757" elapsed="0.001039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:08.269379" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:08.268797" elapsed="0.000693"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:08.271221" level="INFO">${conn_id} = 92</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:08.270497" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:08.273774" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:08.273852" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:08.273494" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:08.274106" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:08.275369" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:08.591781" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:08.275032" elapsed="0.316880"/>
</kw>
<msg time="2026-04-19T02:18:08.591990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:08.274674" elapsed="0.317415"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:08.272556" elapsed="0.319799"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:08.593800" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:08.616763" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:08.617312" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:08.617647" 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-19T02:18:08.593422" elapsed="0.024437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:08.620140" elapsed="0.000548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:08.622198" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:08.621534" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:08.622914" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:08.622585" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:08.622505" elapsed="0.000683"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:08.623673" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:18:08.623393" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:08.623324" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:08.624022" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:08.629894" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:18:08.630455" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:08.630811" 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-19T02:18:08.625878" elapsed="0.005141"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:08.263546" elapsed="0.367787"/>
</kw>
<msg time="2026-04-19T02:18:08.631751" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:08.262321" elapsed="0.369489"/>
</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-19T02:18:08.261069" elapsed="0.370839"/>
</kw>
<msg time="2026-04-19T02:18:08.631950" 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-19T02:18:08.259867" elapsed="0.372130"/>
</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-19T02:18:08.634975" elapsed="0.000437"/>
</kw>
<kw name="Open 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-19T02:18:08.635576" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:08.635872" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:08.632313" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T02:18:08.636156" level="INFO">${output} = 1</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-19T02:18:08.257895" elapsed="0.378287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:08.636611" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:08.636361" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:08.636700" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:08.636852" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:08.255760" elapsed="0.381118"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:08.636925" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:18:08.637097" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:08.253549" elapsed="0.383581"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:08.637699" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:08.637306" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:08.252451" elapsed="0.385429">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:10.640393" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:10.639866" elapsed="0.000574"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:10.641714" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:10.641331" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:10.642884" 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-19T02:18:10.643049" 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-19T02:18:10.642665" elapsed="0.000425"/>
</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-19T02:18:10.648339" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:10.647742" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:10.647665" elapsed="0.000815"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:10.650192" 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-19T02:18:10.650443" 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-19T02:18:10.649481" elapsed="0.001065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:10.652115" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:10.651552" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:10.653990" 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-19T02:18:10.653284" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:10.656460" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:10.656537" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:10.656175" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:10.656773" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:10.658027" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:10.969720" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:10.657702" elapsed="0.312198"/>
</kw>
<msg time="2026-04-19T02:18:10.970013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:10.657343" elapsed="0.312826"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:10.655395" elapsed="0.315165"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:10.972743" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:10.995821" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:10.996443" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:10.996783" 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-19T02:18:10.972191" elapsed="0.024804"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:10.999291" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:11.001973" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:11.001369" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:11.002695" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:11.002375" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:11.002297" elapsed="0.000582"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:11.003457" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:18:11.003177" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:11.003014" elapsed="0.000662"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:11.003785" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:11.010047" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:18:11.010593" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:11.010950" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:11.005659" elapsed="0.005542"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:10.645766" elapsed="0.365656"/>
</kw>
<msg time="2026-04-19T02:18:11.011723" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:10.644813" elapsed="0.366969"/>
</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-19T02:18:10.644071" elapsed="0.367794"/>
</kw>
<msg time="2026-04-19T02:18:11.011906" 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-19T02:18:10.643332" elapsed="0.368621"/>
</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-19T02:18:11.015002" 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-19T02:18:11.015596" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:11.015892" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:11.012346" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T02:18:11.016154" level="INFO">${output} = 1</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-19T02:18:10.642077" elapsed="0.374103"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:11.016634" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:11.016384" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:11.016723" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:11.016875" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:10.640733" elapsed="0.376168"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:11.016947" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:11.017110" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:10.639337" elapsed="0.377798"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:11.017681" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:11.017290" elapsed="0.000529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:10.638546" elapsed="0.379387">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:13.021633" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:13.020822" elapsed="0.000886"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:13.023943" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:13.023293" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:13.025959" 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-19T02:18:13.026221" 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-19T02:18:13.025575" elapsed="0.000674"/>
</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-19T02:18:13.030292" elapsed="0.000297"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:13.029746" elapsed="0.000891"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:13.029688" elapsed="0.001011"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:13.032202" 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-19T02:18:13.032463" 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-19T02:18:13.031726" elapsed="0.000840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:13.034208" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:13.033582" elapsed="0.000762"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:13.036165" level="INFO">${conn_id} = 98</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:13.035419" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:13.038697" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:13.038774" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:13.038410" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:13.039008" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:13.040361" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:13.360147" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:13.040016" elapsed="0.320286"/>
</kw>
<msg time="2026-04-19T02:18:13.360389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:13.039652" elapsed="0.320827"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:13.037582" elapsed="0.323182"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:13.362278" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:13.385213" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:13.385714" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:13.386095" 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-19T02:18:13.361866" elapsed="0.024446"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:13.388685" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:13.391911" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:13.390891" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:13.393110" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:13.392536" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:13.392412" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:13.394233" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:18:13.393745" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:13.393635" elapsed="0.000960"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:13.394775" elapsed="0.000130"/>
</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-19T02:18:13.399840" elapsed="0.000421"/>
</kw>
<kw name="Open 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-19T02:18:13.400478" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:13.400837" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:13.396464" 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-19T02:18:13.028324" elapsed="0.372991"/>
</kw>
<msg time="2026-04-19T02:18:13.401623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:13.027574" elapsed="0.374105"/>
</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-19T02:18:13.026999" elapsed="0.374763"/>
</kw>
<msg time="2026-04-19T02:18:13.401802" 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-19T02:18:13.026409" elapsed="0.375440"/>
</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-19T02:18:13.404901" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:13.405404" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:13.405701" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:13.402215" elapsed="0.003636"/>
</kw>
<msg time="2026-04-19T02:18:13.406004" level="INFO">${output} = 1</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-19T02:18:13.024561" elapsed="0.381562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:13.406562" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:13.406308" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:13.406652" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:13.406806" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:13.022272" elapsed="0.384570"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:13.406891" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:13.407054" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:13.019914" elapsed="0.387166"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:13.407637" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:13.407240" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:13.018740" elapsed="0.389080">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:15.411292" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:15.410506" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:15.413398" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:15.412757" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:15.415286" 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-19T02:18:15.415520" 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-19T02:18:15.414883" elapsed="0.000696"/>
</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-19T02:18:15.420020" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:15.419323" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:15.419268" elapsed="0.000909"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:15.421586" 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-19T02:18:15.421827" 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-19T02:18:15.421153" elapsed="0.000774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:15.423482" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:15.422893" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:15.425273" level="INFO">${conn_id} = 101</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:15.424565" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:15.427719" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:15.427798" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:15.427419" 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-19T02:18:15.428046" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:15.429309" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:15.772782" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:15.428959" elapsed="0.344052"/>
</kw>
<msg time="2026-04-19T02:18:15.773111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:15.428599" elapsed="0.344598"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:15.426562" elapsed="0.346908"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:15.774937" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:15.798156" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:15.798656" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:15.798995" 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-19T02:18:15.774554" elapsed="0.024693"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:15.801506" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:15.804650" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:15.803632" elapsed="0.001163"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:15.805398" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:15.805016" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:15.804938" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:15.806108" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:18:15.805778" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:15.805712" elapsed="0.000615"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:15.806434" elapsed="0.000050"/>
</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-19T02:18:15.812845" elapsed="0.000458"/>
</kw>
<kw name="Open 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-19T02:18:15.813514" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:15.813869" 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-19T02:18:15.808285" elapsed="0.005806"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:15.417925" elapsed="0.396391"/>
</kw>
<msg time="2026-04-19T02:18:15.814624" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:15.417241" elapsed="0.397440"/>
</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-19T02:18:15.416687" elapsed="0.398076"/>
</kw>
<msg time="2026-04-19T02:18:15.814804" 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-19T02:18:15.415933" elapsed="0.398916"/>
</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-19T02:18:15.817856" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:18:15.818344" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:15.818635" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:15.815155" elapsed="0.003626"/>
</kw>
<msg time="2026-04-19T02:18:15.818871" level="INFO">${output} = 1</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-19T02:18:15.413939" elapsed="0.404957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:15.819332" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:15.819086" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:15.819420" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:18:15.819571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:15.411817" elapsed="0.407779"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:15.819642" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:18:15.819785" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:15.409658" elapsed="0.410152"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:15.820460" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:15.820058" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:15.408605" elapsed="0.412043">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:17.824293" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:17.823508" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:17.826535" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:17.825893" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:17.828407" 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-19T02:18:17.828635" 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-19T02:18:17.828079" elapsed="0.000615"/>
</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-19T02:18:17.834848" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:17.834358" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:17.834025" elapsed="0.000968"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:17.836490" 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-19T02:18:17.836731" 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-19T02:18:17.836020" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:17.838362" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:17.837797" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:17.840199" level="INFO">${conn_id} = 104</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:17.839491" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:17.842594" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:17.842670" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:17.842307" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:17.842902" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:17.844206" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:18.161366" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:17.843867" elapsed="0.317658"/>
</kw>
<msg time="2026-04-19T02:18:18.161610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:17.843509" elapsed="0.318195"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:17.841481" elapsed="0.320514"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:18.163505" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:18.186537" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:18.187073" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:18.187419" 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-19T02:18:18.163101" elapsed="0.024527"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:18.189832" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:18.192875" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:18.192132" elapsed="0.000886"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:18.193615" elapsed="0.000056"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:18.193282" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:18.193193" elapsed="0.000649"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:18.194389" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:18:18.194080" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:18.193989" elapsed="0.000625"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:18.194722" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:18.202907" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:18.203507" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:18.203872" 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-19T02:18:18.196702" elapsed="0.007445"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:17.832703" elapsed="0.371681"/>
</kw>
<msg time="2026-04-19T02:18:18.204701" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:17.831522" elapsed="0.373237"/>
</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-19T02:18:17.830246" elapsed="0.374594"/>
</kw>
<msg time="2026-04-19T02:18:18.204880" 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-19T02:18:17.829075" elapsed="0.375850"/>
</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-19T02:18:18.208074" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:18.208578" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:18.208874" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:18.205233" elapsed="0.003789"/>
</kw>
<msg time="2026-04-19T02:18:18.209130" level="INFO">${output} = 1</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-19T02:18:17.827107" elapsed="0.382048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:18.209598" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:18.209348" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:18.209685" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:18.209836" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:17.824871" elapsed="0.384990"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:18.209907" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:18.210064" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:17.822644" elapsed="0.387446"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:18.210662" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:18.210261" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:17.821547" elapsed="0.389581">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:20.214655" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:20.213858" elapsed="0.000918"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:20.216611" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:20.216228" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:20.217781" 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-19T02:18:20.217924" 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-19T02:18:20.217549" elapsed="0.000412"/>
</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-19T02:18:20.223344" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:20.222656" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:20.222580" elapsed="0.000982"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:20.225236" 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-19T02:18:20.225479" 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-19T02:18:20.224571" elapsed="0.001016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:20.227194" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:20.226561" elapsed="0.000744"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:20.228961" level="INFO">${conn_id} = 107</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:20.228264" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:20.231447" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:20.231526" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:20.231150" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:20.231763" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:20.233005" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:20.540150" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:20.232678" elapsed="0.307620"/>
</kw>
<msg time="2026-04-19T02:18:20.540406" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:20.232323" elapsed="0.308180"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:20.230290" elapsed="0.310495"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:20.542294" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:20.565351" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:20.565856" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:20.566251" 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-19T02:18:20.541887" elapsed="0.024599"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:20.568774" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:20.571829" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:20.570977" 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-19T02:18:20.572827" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:20.572412" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:20.572316" elapsed="0.000728"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:20.573553" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:18:20.573256" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:20.573187" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:20.573897" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:20.580164" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:18:20.580712" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:20.581086" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:20.575801" elapsed="0.005496"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:20.220744" elapsed="0.360785"/>
</kw>
<msg time="2026-04-19T02:18:20.581840" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:20.219807" elapsed="0.362089"/>
</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-19T02:18:20.218980" elapsed="0.362998"/>
</kw>
<msg time="2026-04-19T02:18:20.582018" 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-19T02:18:20.218202" elapsed="0.363995"/>
</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-19T02:18:20.585188" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:18:20.585664" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:20.585957" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:20.582500" elapsed="0.003620"/>
</kw>
<msg time="2026-04-19T02:18:20.586210" level="INFO">${output} = 1</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-19T02:18:20.216952" elapsed="0.369283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:20.586661" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:20.586412" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:20.586747" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:20.586898" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:20.215591" elapsed="0.371332"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:20.586970" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:20.587222" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:20.213004" elapsed="0.374245"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:20.587808" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:20.587408" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:20.211900" elapsed="0.376095">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:22.591727" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:22.590927" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:22.594075" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:22.593422" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:22.595975" 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-19T02:18:22.596615" 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-19T02:18:22.595643" elapsed="0.001039"/>
</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-19T02:18:22.602405" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:22.601913" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:22.601858" elapsed="0.000703"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:22.604374" 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-19T02:18:22.604623" 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-19T02:18:22.603660" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:22.606332" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:22.605751" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:22.608128" level="INFO">${conn_id} = 110</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:22.607418" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:22.610576" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:22.610656" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:22.610268" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:22.610892" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:22.612174" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:22.934152" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:22.611831" elapsed="0.322485"/>
</kw>
<msg time="2026-04-19T02:18:22.934408" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:22.611470" elapsed="0.323031"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:22.609411" elapsed="0.325380"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:22.936382" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:22.959357" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:22.959914" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:22.960301" 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-19T02:18:22.935946" elapsed="0.024568"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:22.962838" elapsed="0.000994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:22.966149" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:22.965157" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:22.967360" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:22.966791" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:22.966659" elapsed="0.001038"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:22.968521" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:18:22.968024" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:22.967914" elapsed="0.000959"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:22.969207" elapsed="0.000088"/>
</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-19T02:18:22.974988" 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-19T02:18:22.975653" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:22.976024" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:22.971335" elapsed="0.004918"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:22.600518" elapsed="0.375966"/>
</kw>
<msg time="2026-04-19T02:18:22.976791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:22.599725" elapsed="0.377127"/>
</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-19T02:18:22.598453" elapsed="0.378484"/>
</kw>
<msg time="2026-04-19T02:18:22.976980" 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-19T02:18:22.597077" elapsed="0.380012"/>
</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-19T02:18:22.980152" 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-19T02:18:22.980643" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:22.980939" elapsed="0.000201"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:22.977393" elapsed="0.003802"/>
</kw>
<msg time="2026-04-19T02:18:22.981289" level="INFO">${output} = 1</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-19T02:18:22.594632" elapsed="0.386684"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:22.981753" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:22.981498" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:22.981841" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:18:22.982053" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:22.592310" elapsed="0.389772"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:22.982131" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:18:22.982310" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:22.589977" elapsed="0.392362"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:22.982913" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:22.982502" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:22.588858" elapsed="0.394272">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:24.986626" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:24.985843" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:24.988840" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:24.988225" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:24.990709" 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-19T02:18:24.990986" 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-19T02:18:24.990377" elapsed="0.000713"/>
</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-19T02:18:24.995228" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:24.994719" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:24.994662" elapsed="0.000790"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:24.997123" 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-19T02:18:24.997370" 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-19T02:18:24.996430" elapsed="0.001041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:24.999087" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:24.998439" elapsed="0.000763"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:25.000859" 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-19T02:18:25.000167" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:25.003348" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:25.003428" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:25.003058" 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-19T02:18:25.003665" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:25.004955" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:25.329711" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:25.004625" elapsed="0.325180"/>
</kw>
<msg time="2026-04-19T02:18:25.329871" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:25.004241" elapsed="0.325701"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:25.002247" elapsed="0.327954"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:25.331567" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:25.354396" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:25.354893" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:25.355286" 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-19T02:18:25.331221" elapsed="0.024277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:25.357996" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:25.361536" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:25.360451" elapsed="0.001319"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:25.362631" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:25.362147" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:25.361993" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:25.363736" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:18:25.363283" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:25.363174" elapsed="0.000981"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:25.364336" elapsed="0.000084"/>
</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-19T02:18:25.369920" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:18:25.370478" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:25.370840" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:25.366577" elapsed="0.004488"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:24.993341" elapsed="0.377952"/>
</kw>
<msg time="2026-04-19T02:18:25.371651" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:24.992638" elapsed="0.379071"/>
</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-19T02:18:24.992095" elapsed="0.379696"/>
</kw>
<msg time="2026-04-19T02:18:25.371834" 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-19T02:18:24.991452" elapsed="0.380428"/>
</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-19T02:18:25.374963" 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-19T02:18:25.375460" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:25.375759" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:25.372204" elapsed="0.003706"/>
</kw>
<msg time="2026-04-19T02:18:25.376001" level="INFO">${output} = 1</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-19T02:18:24.989419" elapsed="0.386632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:25.376504" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:25.376233" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:25.376595" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:25.376749" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:24.987226" elapsed="0.389549"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:25.376823" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:25.376969" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:24.984941" elapsed="0.392054"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:25.377628" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:25.377237" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:24.983879" elapsed="0.393930">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:27.381743" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:27.380953" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:27.383842" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:27.383238" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:27.385375" 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-19T02:18:27.385519" 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-19T02:18:27.385145" elapsed="0.000410"/>
</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-19T02:18:27.390830" elapsed="0.000400"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:27.390198" elapsed="0.001099"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:27.390119" elapsed="0.001265"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:27.393429" 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-19T02:18:27.393766" 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-19T02:18:27.392786" elapsed="0.001120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:27.396148" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:27.395328" elapsed="0.000975"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:27.398245" level="INFO">${conn_id} = 116</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:27.397479" elapsed="0.000864"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:27.400631" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:27.400710" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:27.400349" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:27.400953" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:27.402340" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:27.719879" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:27.401888" elapsed="0.318074"/>
</kw>
<msg time="2026-04-19T02:18:27.720022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:27.401529" elapsed="0.318591"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:27.399547" elapsed="0.320800"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:27.721669" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:27.744438" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:27.744928" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:27.745313" 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-19T02:18:27.721345" elapsed="0.024178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:27.747726" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:27.750810" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:27.749857" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:27.751989" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:27.751497" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:27.751377" elapsed="0.000936"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:27.753106" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:18:27.752635" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:27.752528" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:27.753632" elapsed="0.000084"/>
</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-19T02:18:27.760130" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:18:27.760668" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:27.761017" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:27.756798" elapsed="0.004444"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:27.388257" elapsed="0.373207"/>
</kw>
<msg time="2026-04-19T02:18:27.761766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:27.387280" elapsed="0.374541"/>
</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-19T02:18:27.386514" elapsed="0.375388"/>
</kw>
<msg time="2026-04-19T02:18:27.762080" 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-19T02:18:27.385775" elapsed="0.376355"/>
</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-19T02:18:27.765229" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:18:27.765708" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:27.766010" elapsed="0.000127"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:27.762473" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T02:18:27.766280" level="INFO">${output} = 1</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-19T02:18:27.384453" elapsed="0.381852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:27.766729" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:27.766482" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:27.766818" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:27.766970" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:27.382302" elapsed="0.384694"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:27.767120" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:18:27.767268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:27.380109" elapsed="0.387184"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:27.767862" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:27.767450" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:27.378787" elapsed="0.389273">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:29.771537" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:29.770733" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:29.773655" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:29.773018" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:29.775519" 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-19T02:18:29.775747" 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-19T02:18:29.775191" elapsed="0.000616"/>
</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-19T02:18:29.782092" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:29.781365" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:29.781311" elapsed="0.000930"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:29.783695" 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-19T02:18:29.783937" 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-19T02:18:29.783258" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:29.785576" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:29.785023" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:29.787463" 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-19T02:18:29.786676" elapsed="0.000886"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:29.789798" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:29.789880" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:29.789516" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:29.790139" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:29.791552" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:30.121824" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:29.791227" elapsed="0.330734"/>
</kw>
<msg time="2026-04-19T02:18:30.122064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:29.790777" elapsed="0.331379"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:29.788741" elapsed="0.333687"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:30.123946" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:30.147099" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:30.147695" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:30.148087" 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-19T02:18:30.123520" elapsed="0.024788"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:30.150617" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:30.153934" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:30.152904" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:30.155134" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:30.154584" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:30.154436" elapsed="0.001031"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:30.156374" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:18:30.155822" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:30.155709" elapsed="0.001057"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:30.156943" elapsed="0.000228"/>
</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-19T02:18:30.164582" 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-19T02:18:30.165173" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:30.165538" 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-19T02:18:30.160141" elapsed="0.005614"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:29.779997" elapsed="0.385989"/>
</kw>
<msg time="2026-04-19T02:18:30.166313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:29.778588" elapsed="0.387785"/>
</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-19T02:18:29.777375" elapsed="0.389082"/>
</kw>
<msg time="2026-04-19T02:18:30.166498" 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-19T02:18:29.776187" elapsed="0.390357"/>
</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-19T02:18:30.169614" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:18:30.170121" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:30.170418" 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-19T02:18:30.166845" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T02:18:30.170721" level="INFO">${output} = 1</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-19T02:18:29.774229" elapsed="0.396519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:30.171218" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:30.170936" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:30.171310" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:30.171464" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:29.772094" elapsed="0.399395"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:30.171538" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:30.171692" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:29.769891" elapsed="0.401826"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:30.172319" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:30.171885" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:29.768842" elapsed="0.403664">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:32.176148" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:32.175322" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:32.178277" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:32.177645" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:32.180139" 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-19T02:18:32.180367" 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-19T02:18:32.179762" elapsed="0.000664"/>
</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-19T02:18:32.187004" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:32.186536" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:32.186250" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:32.188635" 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-19T02:18:32.188873" 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-19T02:18:32.188196" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:32.190501" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:32.189940" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:32.192374" level="INFO">${conn_id} = 122</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:32.191576" elapsed="0.000894"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:32.194717" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:32.194795" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:32.194438" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:32.195048" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:32.196540" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:32.508657" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:32.196005" elapsed="0.312839"/>
</kw>
<msg time="2026-04-19T02:18:32.508917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:32.195598" elapsed="0.313399"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:32.193657" elapsed="0.315603"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:32.510739" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:32.533636" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:32.534323" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:32.534656" 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-19T02:18:32.510377" elapsed="0.024492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:32.537108" elapsed="0.001440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:32.540912" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:32.539915" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:32.541983" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:32.541567" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:32.541398" elapsed="0.000738"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:32.542483" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T02:18:32.542281" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:32.542232" elapsed="0.000426"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:32.542739" 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-19T02:18:32.549356" 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-19T02:18:32.549915" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:32.550319" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:32.544169" elapsed="0.006358"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:32.184808" elapsed="0.365938"/>
</kw>
<msg time="2026-04-19T02:18:32.551138" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:32.183191" elapsed="0.368005"/>
</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-19T02:18:32.181946" elapsed="0.369330"/>
</kw>
<msg time="2026-04-19T02:18:32.551315" 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-19T02:18:32.180781" elapsed="0.370578"/>
</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-19T02:18:32.554451" 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-19T02:18:32.554950" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:32.555345" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:32.551646" elapsed="0.003848"/>
</kw>
<msg time="2026-04-19T02:18:32.555583" level="INFO">${output} = 1</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-19T02:18:32.178818" elapsed="0.376790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:32.556055" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:32.555790" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:32.556148" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:32.556299" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:32.176675" elapsed="0.379649"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:32.556368" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:32.556509" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:32.174477" elapsed="0.382057"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:32.557147" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:32.556736" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:32.173368" elapsed="0.383976">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:34.560811" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:34.560085" elapsed="0.000794"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:34.562912" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:34.562315" elapsed="0.000655"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:34.564765" 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-19T02:18:34.564991" 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-19T02:18:34.564403" elapsed="0.000671"/>
</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-19T02:18:34.572731" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:34.572056" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:34.571949" elapsed="0.000994"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:34.575328" 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-19T02:18:34.575606" 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-19T02:18:34.574498" elapsed="0.001212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:34.577259" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:34.576696" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:34.579187" 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-19T02:18:34.578415" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:34.581653" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:34.581731" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:34.581364" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:34.581981" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:34.583359" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:34.915101" 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 Sun Apr 19 02:17:34 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:34.583021" elapsed="0.332256"/>
</kw>
<msg time="2026-04-19T02:18:34.915370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:34.582665" elapsed="0.332801"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:34.580567" elapsed="0.335192"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:34.917314" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:34.940283" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:34.940779" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:34.941149" 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-19T02:18:34.916887" elapsed="0.024471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:34.943839" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:34.947338" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:34.946300" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:34.948602" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:34.947960" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:34.947823" elapsed="0.001089"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:34.949517" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:18:34.949238" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:34.949158" elapsed="0.000581"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:34.949848" elapsed="0.000055"/>
</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-19T02:18:34.956716" elapsed="0.000499"/>
</kw>
<kw name="Open 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-19T02:18:34.957517" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:34.958115" 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-19T02:18:34.951783" elapsed="0.006638"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:34.569463" elapsed="0.389272"/>
</kw>
<msg time="2026-04-19T02:18:34.959193" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:34.567925" elapsed="0.391348"/>
</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-19T02:18:34.566601" elapsed="0.392788"/>
</kw>
<msg time="2026-04-19T02:18:34.959446" 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-19T02:18:34.565425" elapsed="0.394086"/>
</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-19T02:18:34.963134" 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-19T02:18:34.963626" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:34.963925" elapsed="0.000129"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:34.959924" elapsed="0.004192"/>
</kw>
<msg time="2026-04-19T02:18:34.964210" level="INFO">${output} = 1</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-19T02:18:34.563473" elapsed="0.400762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:34.964671" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:34.964417" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:34.964758" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:18:34.964913" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:34.561359" elapsed="0.403579"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:34.964984" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:18:34.965150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:34.559210" elapsed="0.405965"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:34.965733" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:34.965331" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:34.558163" elapsed="0.407757">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:36.969377" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:36.968607" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:36.971803" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:36.971005" elapsed="0.000860"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:36.973219" 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-19T02:18:36.973362" 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-19T02:18:36.972978" elapsed="0.000421"/>
</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-19T02:18:36.978753" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:36.978109" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:36.978004" elapsed="0.000948"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:36.981299" 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-19T02:18:36.981650" 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-19T02:18:36.980364" elapsed="0.001425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:36.984001" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:36.983158" elapsed="0.000991"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:36.985863" level="INFO">${conn_id} = 128</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:36.985175" elapsed="0.000786"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:36.988253" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:36.988331" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:36.987941" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:36.988569" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:36.989965" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:37.585182" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:36.989637" elapsed="0.595696"/>
</kw>
<msg time="2026-04-19T02:18:37.585432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:36.989272" elapsed="0.596251"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:36.987156" elapsed="0.598654"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:37.587308" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:37.610372" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:37.610886" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:37.611265" 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-19T02:18:37.586889" elapsed="0.024589"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:37.613907" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:37.617145" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:37.616159" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:37.618334" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:37.617782" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:37.617656" elapsed="0.000815"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:37.618821" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T02:18:37.618616" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:37.618567" elapsed="0.000415"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:37.619082" 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-19T02:18:37.623826" elapsed="0.000397"/>
</kw>
<kw name="Open 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-19T02:18:37.624436" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:37.624795" 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-19T02:18:37.620490" elapsed="0.004514"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:36.976076" elapsed="0.649186"/>
</kw>
<msg time="2026-04-19T02:18:37.625575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:36.975109" elapsed="0.650525"/>
</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-19T02:18:36.974352" elapsed="0.651363"/>
</kw>
<msg time="2026-04-19T02:18:37.625756" 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-19T02:18:36.973620" elapsed="0.652182"/>
</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-19T02:18:37.628871" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:18:37.629384" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:37.629677" 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-19T02:18:37.626110" elapsed="0.003713"/>
</kw>
<msg time="2026-04-19T02:18:37.629914" level="INFO">${output} = 1</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-19T02:18:36.972404" elapsed="0.657535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:37.630378" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:37.630131" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:37.630465" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:18:37.630616" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:36.970086" elapsed="0.660555"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:37.630688" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:18:37.630833" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:36.967761" elapsed="0.663096"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:37.631423" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:37.631012" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:36.966690" elapsed="0.664919">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:39.635213" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:39.634373" elapsed="0.000911"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:39.636879" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:39.636496" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:39.638059" 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-19T02:18:39.638324" 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-19T02:18:39.637820" elapsed="0.000542"/>
</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-19T02:18:39.643827" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:39.643154" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:39.643065" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:39.646388" 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-19T02:18:39.646734" 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-19T02:18:39.645448" elapsed="0.001424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:39.648558" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:39.647941" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:39.650628" level="INFO">${conn_id} = 131</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:39.649653" elapsed="0.001072"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:39.653131" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:39.653211" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:39.652832" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:39.653450" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:39.654710" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:39.983232" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:39.654387" elapsed="0.329002"/>
</kw>
<msg time="2026-04-19T02:18:39.983475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:39.654009" elapsed="0.329556"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:39.652011" elapsed="0.331839"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:39.985346" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:40.007879" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:40.008412" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:40.008737" 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-19T02:18:39.984939" elapsed="0.024009"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:40.011205" elapsed="0.000872"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:40.014319" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:40.013330" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:40.015436" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:40.014895" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:40.014770" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:40.016520" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:18:40.016071" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:40.015938" elapsed="0.000932"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:40.017193" elapsed="0.000088"/>
</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-19T02:18:40.024840" 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-19T02:18:40.025499" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:40.025857" elapsed="0.000128"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:40.020146" elapsed="0.005998"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:39.641224" elapsed="0.385147"/>
</kw>
<msg time="2026-04-19T02:18:40.026680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:39.640189" elapsed="0.386549"/>
</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-19T02:18:39.639403" elapsed="0.387419"/>
</kw>
<msg time="2026-04-19T02:18:40.026865" 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-19T02:18:39.638587" elapsed="0.388325"/>
</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-19T02:18:40.029984" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:18:40.030483" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:40.030775" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:40.027224" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T02:18:40.031012" level="INFO">${output} = 1</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-19T02:18:39.637243" elapsed="0.393810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:40.031480" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:40.031233" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:40.031567" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:18:40.031719" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:39.635750" elapsed="0.395995"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:40.031791" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:40.031936" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:39.633531" elapsed="0.398430"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:40.032528" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:40.032132" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:39.632465" elapsed="0.400248">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:42.034801" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:42.034377" elapsed="0.000461"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:42.036573" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:42.035905" elapsed="0.000728"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:42.038403" 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-19T02:18:42.038544" 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-19T02:18:42.038144" elapsed="0.000437"/>
</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-19T02:18:42.043802" elapsed="0.000401"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:42.043171" elapsed="0.001175"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:42.043096" elapsed="0.001336"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:42.046455" 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-19T02:18:42.046794" 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-19T02:18:42.045818" elapsed="0.001116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:42.049084" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:42.048288" elapsed="0.000957"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:42.051304" level="INFO">${conn_id} = 134</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:42.050589" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:42.053672" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:42.053751" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:42.053389" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:42.053988" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:42.055535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:42.374250" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:42.055205" elapsed="0.319135"/>
</kw>
<msg time="2026-04-19T02:18:42.374404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:42.054718" elapsed="0.319758"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:42.052599" elapsed="0.322102"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:42.376066" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:42.399080" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:42.399560" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:42.399884" 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-19T02:18:42.375712" elapsed="0.024415"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:42.402336" elapsed="0.000859"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:42.405325" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:42.404405" elapsed="0.001144"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:42.406483" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:42.405874" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:42.405759" elapsed="0.001006"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:42.407535" elapsed="0.000110"/>
</return>
<status status="PASS" start="2026-04-19T02:18:42.407103" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:42.406968" elapsed="0.000902"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:42.408069" 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-19T02:18:42.415618" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:18:42.416177" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:42.416546" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:42.411102" elapsed="0.005653"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:42.041274" elapsed="0.375704"/>
</kw>
<msg time="2026-04-19T02:18:42.417352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:42.040297" elapsed="0.377113"/>
</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-19T02:18:42.039532" elapsed="0.377960"/>
</kw>
<msg time="2026-04-19T02:18:42.417533" 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-19T02:18:42.038800" elapsed="0.378779"/>
</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-19T02:18:42.420649" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:18:42.421144" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:42.421441" 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-19T02:18:42.417872" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T02:18:42.421680" level="INFO">${output} = 1</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-19T02:18:42.037193" elapsed="0.384512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:42.422182" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:42.421881" elapsed="0.000346"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:42.422270" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:42.422421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:42.035072" elapsed="0.387375"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:42.422493" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:18:42.422635" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:42.033983" elapsed="0.388677"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:42.423220" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:42.422815" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:42.033462" elapsed="0.389944">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:44.426930" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:44.426201" elapsed="0.000804"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:44.429110" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:44.428428" elapsed="0.000744"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:44.430343" 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-19T02:18:44.430490" 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-19T02:18:44.430115" elapsed="0.000413"/>
</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-19T02:18:44.436165" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:44.435194" elapsed="0.001085"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:44.435117" elapsed="0.001250"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:44.438390" 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-19T02:18:44.438733" 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-19T02:18:44.437750" elapsed="0.001123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:44.441055" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:44.440247" elapsed="0.000965"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:44.443103" level="INFO">${conn_id} = 137</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:44.442386" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:44.445493" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:44.445571" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:44.445211" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:44.445810" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:44.447211" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:44.762795" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:44.446867" elapsed="0.316087"/>
</kw>
<msg time="2026-04-19T02:18:44.763060" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:44.446504" elapsed="0.316661"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:44.444407" elapsed="0.319046"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:44.764959" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:44.787768" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:44.788331" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:44.788665" 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-19T02:18:44.764566" elapsed="0.024309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:44.791127" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:44.794326" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:44.793318" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:44.795473" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:44.794919" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:44.794795" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:44.796518" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:18:44.796176" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:44.796060" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:44.796756" 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-19T02:18:44.801763" 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-19T02:18:44.802322" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:44.802771" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:44.798150" elapsed="0.004832"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:44.433239" elapsed="0.369985"/>
</kw>
<msg time="2026-04-19T02:18:44.803533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:44.432256" elapsed="0.371334"/>
</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-19T02:18:44.431486" elapsed="0.372187"/>
</kw>
<msg time="2026-04-19T02:18:44.803715" 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-19T02:18:44.430748" elapsed="0.373012"/>
</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-19T02:18:44.806865" 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-19T02:18:44.807437" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:44.807731" 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-19T02:18:44.804162" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T02:18:44.808000" level="INFO">${output} = 1</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-19T02:18:44.429520" elapsed="0.378522"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:44.808471" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:44.808223" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:44.808558" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:44.808709" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:44.427492" elapsed="0.381241"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:44.808779" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:18:44.808921" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:44.425367" elapsed="0.383578"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:44.809513" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:44.809115" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:44.424261" elapsed="0.385444">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:46.812126" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:46.811619" elapsed="0.000554"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:46.813471" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:46.813082" elapsed="0.000427"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:46.814639" 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-19T02:18:46.814782" 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-19T02:18:46.814402" elapsed="0.000417"/>
</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-19T02:18:46.820481" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:46.819822" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:46.819456" elapsed="0.001222"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:46.822660" 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-19T02:18:46.823116" 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-19T02:18:46.822053" elapsed="0.001238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:46.825680" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:46.824888" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:46.827573" level="INFO">${conn_id} = 140</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:46.826793" elapsed="0.000877"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:46.829936" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:46.830014" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:46.829645" 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-19T02:18:46.830261" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:46.831716" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:47.147691" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:46.831392" elapsed="0.316439"/>
</kw>
<msg time="2026-04-19T02:18:47.147911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:46.830881" elapsed="0.317119"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:46.828856" elapsed="0.319434"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:47.149772" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:47.172979" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:47.173516" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:47.173848" 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-19T02:18:47.149381" elapsed="0.024718"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:47.176302" elapsed="0.000975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:47.179478" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:47.178521" elapsed="0.001188"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:47.180603" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:47.180087" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:47.179935" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:47.181693" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:18:47.181246" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:47.181139" elapsed="0.001114"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:47.182438" 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-19T02:18:47.192653" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:18:47.193225" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:47.193651" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:47.185336" elapsed="0.008526"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:46.817636" elapsed="0.376567"/>
</kw>
<msg time="2026-04-19T02:18:47.194517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:46.816654" elapsed="0.377923"/>
</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-19T02:18:46.815835" elapsed="0.378822"/>
</kw>
<msg time="2026-04-19T02:18:47.194697" 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-19T02:18:46.815059" elapsed="0.379683"/>
</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-19T02:18:47.197709" 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-19T02:18:47.198204" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:47.198501" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:47.195050" elapsed="0.003597"/>
</kw>
<msg time="2026-04-19T02:18:47.198804" level="INFO">${output} = 1</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-19T02:18:46.813812" elapsed="0.385018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:47.199343" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:47.199023" elapsed="0.000365"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:47.199431" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:18:47.199584" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:46.812463" elapsed="0.387146"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:47.199656" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:18:47.199800" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:46.811098" elapsed="0.388726"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:47.200402" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:47.199980" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:46.810345" elapsed="0.390268">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:49.204716" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:49.203961" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:49.207159" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:49.206608" elapsed="0.000603"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:49.208660" 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-19T02:18:49.208838" 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-19T02:18:49.208374" elapsed="0.000511"/>
</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-19T02:18:49.214210" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:49.213549" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:49.213471" elapsed="0.000931"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:49.216670" 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-19T02:18:49.217004" 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-19T02:18:49.215749" elapsed="0.001434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:49.219111" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:49.218551" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:49.220888" 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-19T02:18:49.220189" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:49.223306" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:49.223383" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:49.223011" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:49.223619" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:49.224874" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:49.540554" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:49.224547" elapsed="0.316149"/>
</kw>
<msg time="2026-04-19T02:18:49.540760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:49.224185" elapsed="0.316647"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:49.222251" elapsed="0.318829"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:49.542453" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:49.565427" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:49.565930" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:49.566306" 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-19T02:18:49.542124" elapsed="0.024402"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:49.568719" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:49.571779" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:49.570828" elapsed="0.001174"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:49.572930" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:49.572460" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:49.572342" elapsed="0.000911"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:49.574084" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:18:49.573563" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:49.573459" elapsed="0.000980"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:49.574630" 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-19T02:18:49.579310" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:18:49.579844" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:49.580277" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:49.575930" elapsed="0.004553"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:49.211608" elapsed="0.369092"/>
</kw>
<msg time="2026-04-19T02:18:49.580997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:49.210649" elapsed="0.370419"/>
</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-19T02:18:49.209870" elapsed="0.371281"/>
</kw>
<msg time="2026-04-19T02:18:49.581191" 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-19T02:18:49.209146" elapsed="0.372090"/>
</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-19T02:18:49.584367" 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-19T02:18:49.584968" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:49.585375" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:49.581524" elapsed="0.004031"/>
</kw>
<msg time="2026-04-19T02:18:49.585663" level="INFO">${output} = 1</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-19T02:18:49.207624" elapsed="0.378064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:49.586126" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:49.585863" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:49.586214" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:49.586365" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:49.205369" elapsed="0.381020"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:49.586435" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:49.586579" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:49.203143" elapsed="0.383460"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:49.587218" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:49.586798" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:49.201993" elapsed="0.385412">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:51.590992" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:51.590251" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:51.593167" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:51.592532" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:51.595150" 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-19T02:18:51.595383" 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-19T02:18:51.594783" elapsed="0.000660"/>
</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-19T02:18:51.601255" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:51.600603" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:51.600526" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:51.603808" 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-19T02:18:51.604194" 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-19T02:18:51.602855" elapsed="0.001480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:51.606576" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:51.605794" elapsed="0.000934"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:51.609147" level="INFO">${conn_id} = 146</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:51.608162" elapsed="0.001088"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:51.611511" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:51.611601" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:51.611229" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:51.611840" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:51.613274" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:51.927844" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:51.612796" elapsed="0.315186"/>
</kw>
<msg time="2026-04-19T02:18:51.928079" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:51.612430" elapsed="0.315749"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:51.610446" elapsed="0.318031"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:51.929942" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:51.953085" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:51.953587" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:51.953922" 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-19T02:18:51.929559" elapsed="0.024616"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:51.956469" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:51.959709" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:51.958657" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:51.960877" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:51.960351" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:51.960213" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:51.961990" elapsed="0.000258"/>
</return>
<status status="PASS" start="2026-04-19T02:18:51.961536" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:51.961428" elapsed="0.001063"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:51.962668" 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-19T02:18:51.968022" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:18:51.968588" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:51.968950" 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-19T02:18:51.964632" elapsed="0.004543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:51.598585" elapsed="0.370815"/>
</kw>
<msg time="2026-04-19T02:18:51.969707" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:51.597616" elapsed="0.372148"/>
</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-19T02:18:51.596845" elapsed="0.373002"/>
</kw>
<msg time="2026-04-19T02:18:51.969888" 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-19T02:18:51.595848" elapsed="0.374086"/>
</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-19T02:18:51.973053" 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-19T02:18:51.973531" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:51.973825" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:51.970288" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T02:18:51.974172" level="INFO">${output} = 1</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-19T02:18:51.593710" elapsed="0.380489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:51.974635" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:51.974381" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:51.974723" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:51.974876" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:51.591551" elapsed="0.383350"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:51.974948" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:51.975109" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:51.589400" elapsed="0.385734"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:51.975696" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:51.975303" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:51.588275" elapsed="0.387602">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:53.979443" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:53.978679" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:53.981809" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:53.981143" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:53.983300" 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-19T02:18:53.983446" 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-19T02:18:53.983069" elapsed="0.000414"/>
</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-19T02:18:53.988788" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:53.988146" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:53.988068" elapsed="0.000913"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:53.991340" 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-19T02:18:53.991693" 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-19T02:18:53.990391" elapsed="0.001442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:53.994002" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:53.993213" elapsed="0.000967"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:53.996089" 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-19T02:18:53.995371" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:53.998481" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:53.998559" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:53.998197" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:53.998797" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:54.000201" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:54.319874" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:53.999759" elapsed="0.320290"/>
</kw>
<msg time="2026-04-19T02:18:54.320139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:53.999395" elapsed="0.320838"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:53.997397" elapsed="0.323125"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:54.322163" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:54.344860" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:54.345463" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:54.345804" 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-19T02:18:54.321723" elapsed="0.024291"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:54.348324" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:54.351539" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:54.350545" elapsed="0.001230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:54.352797" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:54.352161" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:54.352003" elapsed="0.001128"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:54.353855" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T02:18:54.353539" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:54.353425" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:54.354177" 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-19T02:18:54.358995" 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-19T02:18:54.359554" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:54.359913" 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-19T02:18:54.355521" elapsed="0.004624"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:53.986232" elapsed="0.374138"/>
</kw>
<msg time="2026-04-19T02:18:54.360685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:53.985254" elapsed="0.375492"/>
</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-19T02:18:53.984477" elapsed="0.376352"/>
</kw>
<msg time="2026-04-19T02:18:54.360872" 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-19T02:18:53.983715" elapsed="0.377203"/>
</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-19T02:18:54.364073" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:18:54.364548" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:54.364847" 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-19T02:18:54.361355" elapsed="0.003639"/>
</kw>
<msg time="2026-04-19T02:18:54.365104" level="INFO">${output} = 1</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-19T02:18:53.982387" elapsed="0.382742"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:54.365594" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:54.365343" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:54.365680" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:54.365834" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:53.980173" elapsed="0.385687"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:54.365907" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:18:54.366165" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:53.977831" elapsed="0.388361"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:54.366750" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:54.366352" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:53.976719" elapsed="0.390220">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:56.370837" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:56.370050" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:56.372956" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:56.372352" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:56.374819" 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-19T02:18:56.375321" 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-19T02:18:56.374479" elapsed="0.000905"/>
</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-19T02:18:56.380046" elapsed="0.000331"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:56.379569" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:56.379511" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:56.381939" 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-19T02:18:56.382205" 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-19T02:18:56.381495" elapsed="0.000819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:56.383872" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:56.383322" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:56.385775" level="INFO">${conn_id} = 152</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:56.385033" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:56.388301" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:56.388382" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:56.387987" 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-19T02:18:56.388658" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:56.389932" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:56.714423" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:56.389599" elapsed="0.324949"/>
</kw>
<msg time="2026-04-19T02:18:56.714625" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:56.389239" elapsed="0.325468"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:56.387213" elapsed="0.327759"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:56.716444" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:56.739994" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:56.740527" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:56.740856" 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-19T02:18:56.716050" elapsed="0.025053"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:56.743369" elapsed="0.000711"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:56.745579" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:56.744910" elapsed="0.000839"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:56.746356" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:56.745988" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:56.745902" elapsed="0.000649"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:56.747077" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:18:56.746763" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:56.746693" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:56.747489" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:56.753708" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:18:56.754339" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:56.754698" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:56.749546" elapsed="0.005358"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:56.378183" elapsed="0.377023"/>
</kw>
<msg time="2026-04-19T02:18:56.755512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:56.377477" elapsed="0.378098"/>
</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-19T02:18:56.376904" elapsed="0.378777"/>
</kw>
<msg time="2026-04-19T02:18:56.755723" 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-19T02:18:56.375744" elapsed="0.380026"/>
</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-19T02:18:56.758862" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:18:56.759351" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:56.759643" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:56.756106" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T02:18:56.759911" level="INFO">${output} = 1</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-19T02:18:56.373533" elapsed="0.386404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:56.760409" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:56.760158" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:56.760496" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:18:56.760648" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:56.371397" elapsed="0.389276"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:56.760720" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:18:56.760864" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:56.369199" elapsed="0.391689"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:56.761475" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:56.761049" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:56.368038" elapsed="0.393630">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:18:58.765309" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:18:58.764515" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:18:58.767466" level="INFO">${member_ip} = 10.30.171.206</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-19T02:18:58.766825" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:58.769370" 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-19T02:18:58.769598" 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-19T02:18:58.768956" elapsed="0.000700"/>
</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-19T02:18:58.776097" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:18:58.775368" elapsed="0.000881"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:58.775309" elapsed="0.001003"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:58.777782" 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-19T02:18:58.778026" 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-19T02:18:58.777337" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:58.779651" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:58.779115" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:18:58.781470" level="INFO">${conn_id} = 155</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:18:58.780732" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:18:58.783872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:18:58.783949" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:18:58.783589" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:58.784201" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:18:58.785499" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:18:59.143151" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:18:58.785137" elapsed="0.358170"/>
</kw>
<msg time="2026-04-19T02:18:59.143393" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:58.784757" elapsed="0.358728"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:18:58.782757" elapsed="0.361015"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:18:59.145289" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:18:59.168819" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:18:59.169412" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:18:59.169827" 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-19T02:18:59.144869" elapsed="0.025180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:59.172383" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:59.175451" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:59.174763" 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-19T02:18:59.176206" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:18:59.175845" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:59.175763" elapsed="0.000634"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:18:59.176898" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:18:59.176597" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:18:59.176530" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:18:59.177263" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:59.184008" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T02:18:59.184585" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:59.185090" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:59.179270" elapsed="0.006037"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:18:58.773849" elapsed="0.411685"/>
</kw>
<msg time="2026-04-19T02:18:59.185906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:18:58.772418" elapsed="0.413548"/>
</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-19T02:18:58.771206" elapsed="0.414871"/>
</kw>
<msg time="2026-04-19T02:18:59.186128" 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-19T02:18:58.770011" elapsed="0.416166"/>
</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-19T02:18:59.189303" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:18:59.189786" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:18:59.190101" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:18:59.186473" elapsed="0.003789"/>
</kw>
<msg time="2026-04-19T02:18:59.190354" level="INFO">${output} = 1</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-19T02:18:58.768007" elapsed="0.422372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:18:59.190809" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:18:59.190558" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:18:59.190926" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:18:59.191113" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:18:58.765846" elapsed="0.425294"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:18:59.191188" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:18:59.191344" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:18:58.763674" elapsed="0.427696"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:18:59.191927" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:18:59.191527" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:18:58.762601" elapsed="0.429534">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:01.195650" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:01.194872" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:01.197762" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:01.197159" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:01.199638" 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-19T02:19:01.199872" 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-19T02:19:01.199310" elapsed="0.000621"/>
</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-19T02:19:01.205784" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:01.205312" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:01.205010" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:01.207395" 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-19T02:19:01.207647" 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-19T02:19:01.206938" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:01.209316" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:01.208736" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:01.211418" level="INFO">${conn_id} = 158</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:01.210695" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:01.213864" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:01.213942" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:01.213582" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:01.214346" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:01.215600" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:01.567593" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:18:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:01.215278" elapsed="0.352432"/>
</kw>
<msg time="2026-04-19T02:19:01.567780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:01.214900" elapsed="0.352960"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:01.212741" elapsed="0.355431"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:01.569603" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:01.592760" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:01.593305" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:01.593638" 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-19T02:19:01.569234" elapsed="0.024615"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:01.596106" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:01.599255" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:01.598296" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:01.600360" elapsed="0.000116"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:01.599835" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:01.599714" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:01.601212" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:19:01.600991" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:01.600928" elapsed="0.000443"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:01.601452" 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-19T02:19:01.608193" 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-19T02:19:01.608810" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:01.609188" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:01.602816" elapsed="0.006585"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:01.203668" elapsed="0.405955"/>
</kw>
<msg time="2026-04-19T02:19:01.609938" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:01.202740" elapsed="0.407260"/>
</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-19T02:19:01.201487" elapsed="0.408615"/>
</kw>
<msg time="2026-04-19T02:19:01.610143" 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-19T02:19:01.200322" elapsed="0.409866"/>
</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-19T02:19:01.613361" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:01.613840" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:01.614175" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:01.610618" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T02:19:01.614415" level="INFO">${output} = 1</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-19T02:19:01.198364" elapsed="0.416076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:01.614883" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:01.614636" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:01.614970" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:19:01.615143" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:01.196212" elapsed="0.418956"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:01.615214" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:01.615354" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:01.194014" elapsed="0.421365"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:01.615923" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:01.615533" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:01.192864" elapsed="0.423324">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:03.619934" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:03.619193" elapsed="0.000811"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:03.622107" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:03.621464" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:03.624287" 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-19T02:19:03.624534" 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-19T02:19:03.623876" elapsed="0.000721"/>
</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-19T02:19:03.633685" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:03.632543" elapsed="0.001335"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:03.632417" elapsed="0.001595"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:03.635730" 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-19T02:19:03.635978" 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-19T02:19:03.635030" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:03.637647" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:03.637088" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:03.639510" level="INFO">${conn_id} = 161</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:03.638796" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:03.641910" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:03.641988" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:03.641629" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:03.642339" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:03.643657" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:03.961772" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:03.643334" elapsed="0.318529"/>
</kw>
<msg time="2026-04-19T02:19:03.961927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:03.642955" elapsed="0.319046"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:03.640819" elapsed="0.321430"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:03.963587" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:03.986363" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:03.986856" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:03.987243" 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-19T02:19:03.963260" elapsed="0.024200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:03.989675" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:03.992796" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:03.991826" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:03.993882" elapsed="0.000111"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:03.993403" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:03.993283" elapsed="0.000973"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:03.995022" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:19:03.994578" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:03.994469" elapsed="0.000734"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:03.995282" 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-19T02:19:03.999933" elapsed="0.000422"/>
</kw>
<kw name="Open 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-19T02:19:04.000566" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:04.000913" 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-19T02:19:03.996645" elapsed="0.004493"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:03.629190" elapsed="0.372171"/>
</kw>
<msg time="2026-04-19T02:19:04.001665" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:03.627546" elapsed="0.374175"/>
</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-19T02:19:03.626230" elapsed="0.375571"/>
</kw>
<msg time="2026-04-19T02:19:04.001842" 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-19T02:19:03.624974" elapsed="0.376914"/>
</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-19T02:19:04.005960" 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-19T02:19:04.006479" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:04.006772" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:04.003156" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T02:19:04.007080" level="INFO">${output} = 1</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-19T02:19:03.622858" elapsed="0.384249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:04.007531" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:04.007284" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:04.007618" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:19:04.007768" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:03.620487" elapsed="0.387306"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:04.007839" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:19:04.007982" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:03.618355" elapsed="0.389651"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:04.008643" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:04.008246" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:03.617172" elapsed="0.391656">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:06.012357" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:06.011591" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:06.014457" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:06.013820" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:06.016350" 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-19T02:19:06.016493" 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-19T02:19:06.016119" elapsed="0.000411"/>
</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-19T02:19:06.022152" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:06.021481" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:06.021405" elapsed="0.000978"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:06.024633" 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-19T02:19:06.024884" 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-19T02:19:06.023832" elapsed="0.001159"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:06.026606" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:06.025968" elapsed="0.000751"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:06.028485" level="INFO">${conn_id} = 164</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:06.027722" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:06.030895" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:06.030974" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:06.030602" 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-19T02:19:06.031229" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:06.032717" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:06.360258" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:06.032385" elapsed="0.328100"/>
</kw>
<msg time="2026-04-19T02:19:06.360565" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:06.031844" elapsed="0.328805"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:06.029822" elapsed="0.331093"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:06.362398" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:06.385571" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:06.385804" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:06.385955" 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-19T02:19:06.361993" elapsed="0.024085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:06.387105" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:06.388693" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:06.388196" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:06.389229" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:06.388964" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:06.388904" elapsed="0.000459"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:06.389709" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:19:06.389507" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:06.389459" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:06.389952" 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-19T02:19:06.394773" elapsed="0.000539"/>
</kw>
<kw name="Open 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-19T02:19:06.395541" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:06.395919" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:06.391364" elapsed="0.004790"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:06.019482" elapsed="0.376901"/>
</kw>
<msg time="2026-04-19T02:19:06.396697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:06.018425" elapsed="0.378334"/>
</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-19T02:19:06.017576" elapsed="0.379268"/>
</kw>
<msg time="2026-04-19T02:19:06.396888" 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-19T02:19:06.016752" elapsed="0.380185"/>
</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-19T02:19:06.400139" 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-19T02:19:06.400627" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:06.400929" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:06.397259" elapsed="0.003848"/>
</kw>
<msg time="2026-04-19T02:19:06.401204" level="INFO">${output} = 1</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-19T02:19:06.015103" elapsed="0.386128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:06.401679" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:06.401423" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:06.401770" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:19:06.401926" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:06.012882" elapsed="0.389073"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:06.402020" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:19:06.402188" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:06.010728" elapsed="0.391485"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:06.402861" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:06.402434" elapsed="0.000535">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:06.009681" elapsed="0.393455">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:08.405405" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:08.404925" elapsed="0.000523"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:08.406581" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:08.406244" elapsed="0.000370"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:08.407691" 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-19T02:19:08.407824" 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-19T02:19:08.407478" elapsed="0.000380"/>
</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-19T02:19:08.412536" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:08.411940" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:08.411873" elapsed="0.000834"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:08.414827" 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-19T02:19:08.415179" 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-19T02:19:08.413861" elapsed="0.001439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:08.417137" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:08.416432" elapsed="0.000836"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:08.419420" level="INFO">${conn_id} = 167</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:08.418410" elapsed="0.001127"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:08.422330" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:08.422428" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:08.421936" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:08.422760" elapsed="0.000740"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:08.424679" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:08.735444" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:08.424269" elapsed="0.311343"/>
</kw>
<msg time="2026-04-19T02:19:08.735704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:08.423782" elapsed="0.312021"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:08.420960" elapsed="0.315170"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:08.737736" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:08.760212" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:08.760724" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:08.761170" 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-19T02:19:08.737304" elapsed="0.024089"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:08.763680" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:08.766794" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:08.766161" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:08.767552" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:08.767215" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:08.767132" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:08.768272" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:19:08.767946" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:08.767879" elapsed="0.000621"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:08.768612" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:08.775080" 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-19T02:19:08.775657" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:08.776024" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:08.770596" elapsed="0.005670"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:08.410290" elapsed="0.366207"/>
</kw>
<msg time="2026-04-19T02:19:08.776802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:08.409409" elapsed="0.367453"/>
</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-19T02:19:08.408730" elapsed="0.368215"/>
</kw>
<msg time="2026-04-19T02:19:08.776988" 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-19T02:19:08.408081" elapsed="0.368986"/>
</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-19T02:19:08.780187" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:19:08.780695" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:08.780995" elapsed="0.000154"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:08.777387" elapsed="0.003817"/>
</kw>
<msg time="2026-04-19T02:19:08.781298" level="INFO">${output} = 1</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-19T02:19:08.406932" elapsed="0.374396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:08.781777" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:08.781517" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:08.781868" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:19:08.782032" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:08.405712" elapsed="0.376383"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:08.782145" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:19:08.782297" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:08.404445" elapsed="0.377878"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:08.782911" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:08.782494" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:08.403760" elapsed="0.379360">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:10.786672" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:10.785905" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:10.788974" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:10.788321" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:10.790357" 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-19T02:19:10.790511" 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-19T02:19:10.790095" elapsed="0.000455"/>
</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-19T02:19:10.795965" elapsed="0.000382"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:10.795327" elapsed="0.001088"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:10.795249" elapsed="0.001249"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:10.798210" 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-19T02:19:10.798456" 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-19T02:19:10.797745" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:10.800107" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:10.799544" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:10.801920" level="INFO">${conn_id} = 170</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:10.801213" elapsed="0.000903"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:10.804515" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:10.804592" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:10.804233" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:10.804826" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:10.806120" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:11.122873" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:10.805782" elapsed="0.317200"/>
</kw>
<msg time="2026-04-19T02:19:11.123070" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:10.805424" elapsed="0.317725"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:10.803453" elapsed="0.319938"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:11.124801" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:11.147718" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:11.148269" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:11.148605" 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-19T02:19:11.124437" elapsed="0.024380"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:11.151095" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:11.154232" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:11.153267" elapsed="0.001197"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:11.155434" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:11.154852" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:11.154685" elapsed="0.000886"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:11.155917" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:19:11.155713" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:11.155666" elapsed="0.000429"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:11.156176" 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-19T02:19:11.160895" elapsed="0.000428"/>
</kw>
<kw name="Open 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-19T02:19:11.161535" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:11.161888" 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-19T02:19:11.157524" elapsed="0.004590"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:10.793320" elapsed="0.369018"/>
</kw>
<msg time="2026-04-19T02:19:11.162649" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:10.792344" elapsed="0.370361"/>
</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-19T02:19:10.791573" elapsed="0.371244"/>
</kw>
<msg time="2026-04-19T02:19:11.162860" 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-19T02:19:10.790799" elapsed="0.372108"/>
</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-19T02:19:11.165961" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:19:11.166458" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:11.166753" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:11.163215" elapsed="0.003700"/>
</kw>
<msg time="2026-04-19T02:19:11.167004" level="INFO">${output} = 1</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-19T02:19:10.789470" elapsed="0.377560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:11.167472" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:11.167223" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:11.167559" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:11.167711" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:10.787376" elapsed="0.380360"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:11.167784" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:19:11.167927" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:10.785091" elapsed="0.382860"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:11.168515" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:11.168123" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:10.783930" elapsed="0.384771">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:13.172246" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:13.171453" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:13.174723" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:13.173916" elapsed="0.000866"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:13.176482" 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-19T02:19:13.176688" 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-19T02:19:13.176275" elapsed="0.000440"/>
</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-19T02:19:13.180753" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:13.180058" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:13.179988" elapsed="0.000902"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:13.182322" 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-19T02:19:13.182560" 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-19T02:19:13.181869" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:13.184219" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:13.183621" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:13.185997" 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-19T02:19:13.185286" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:13.188444" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:13.188522" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:13.188159" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:13.188755" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:13.190073" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:13.506732" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:13.189734" elapsed="0.317127"/>
</kw>
<msg time="2026-04-19T02:19:13.506939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:13.189375" elapsed="0.317643"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:13.187339" elapsed="0.319974"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:13.508782" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:13.531207" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:13.531700" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:13.532077" 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-19T02:19:13.508393" elapsed="0.023930"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:13.534576" elapsed="0.000870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:13.537763" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:13.536717" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:13.538868" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:13.538376" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:13.538254" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:13.539952" elapsed="0.000166"/>
</return>
<status status="PASS" start="2026-04-19T02:19:13.539512" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:13.539405" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:13.540552" 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-19T02:19:13.545830" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:19:13.546485" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:13.546860" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:13.542442" elapsed="0.004655"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:13.178644" elapsed="0.368690"/>
</kw>
<msg time="2026-04-19T02:19:13.547661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:13.177946" elapsed="0.369776"/>
</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-19T02:19:13.177414" elapsed="0.370392"/>
</kw>
<msg time="2026-04-19T02:19:13.547848" 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-19T02:19:13.176878" elapsed="0.371018"/>
</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-19T02:19:13.550961" 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-19T02:19:13.551478" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:13.551780" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:13.548224" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T02:19:13.552025" level="INFO">${output} = 1</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-19T02:19:13.175288" elapsed="0.376789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:13.552531" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:13.552273" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:13.552621" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:19:13.552778" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:13.172956" elapsed="0.379848"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:13.552851" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:13.552999" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:13.170598" elapsed="0.382427"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:13.553728" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:13.553321" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:13.169538" elapsed="0.384375">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:15.557698" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:15.556826" elapsed="0.000950"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:15.560286" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:15.559526" elapsed="0.000818"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:15.561499" 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-19T02:19:15.561643" 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-19T02:19:15.561264" elapsed="0.000415"/>
</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-19T02:19:15.567960" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:15.567238" elapsed="0.000976"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:15.566813" elapsed="0.001499"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:15.569947" 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-19T02:19:15.570240" 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-19T02:19:15.569443" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:15.571993" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:15.571369" elapsed="0.000762"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:15.573905" level="INFO">${conn_id} = 176</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:15.573190" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:15.576549" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:15.576669" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:15.576158" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:15.577024" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:15.578898" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:15.905042" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:15.578420" elapsed="0.326783"/>
</kw>
<msg time="2026-04-19T02:19:15.905294" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:15.577867" elapsed="0.327521"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:15.575335" elapsed="0.330344"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:15.907208" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:15.929809" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:15.930343" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:15.930670" 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-19T02:19:15.906790" elapsed="0.024087"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:15.933159" elapsed="0.000631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:15.935233" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:15.934605" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:15.935932" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:15.935603" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:15.935523" elapsed="0.000638"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:15.936657" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:19:15.936371" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:15.936300" elapsed="0.000578"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:15.937012" elapsed="0.000072"/>
</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-19T02:19:15.944874" 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-19T02:19:15.945468" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:15.945826" 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-19T02:19:15.939010" elapsed="0.007138"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:15.564745" elapsed="0.381635"/>
</kw>
<msg time="2026-04-19T02:19:15.946793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:15.563710" elapsed="0.383147"/>
</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-19T02:19:15.562880" elapsed="0.384058"/>
</kw>
<msg time="2026-04-19T02:19:15.946978" 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-19T02:19:15.561900" elapsed="0.385124"/>
</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-19T02:19:15.950010" 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-19T02:19:15.950566" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:15.950864" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:15.947339" elapsed="0.003675"/>
</kw>
<msg time="2026-04-19T02:19:15.951124" level="INFO">${output} = 1</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-19T02:19:15.560660" elapsed="0.390489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:15.951585" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:15.951332" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:15.951672" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:15.951822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:15.558444" elapsed="0.393403"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:15.951892" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:19:15.952048" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:15.555877" elapsed="0.396198"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:15.952636" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:15.952231" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:15.554716" elapsed="0.398103">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:17.956929" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:17.956140" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:17.958944" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:17.958556" elapsed="0.000428"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:17.960146" 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-19T02:19:17.960295" 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-19T02:19:17.959903" elapsed="0.000439"/>
</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-19T02:19:17.965831" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:17.965189" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:17.965111" elapsed="0.000937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:17.967953" 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-19T02:19:17.968234" 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-19T02:19:17.967274" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:17.969880" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:17.969327" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:17.971815" 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-19T02:19:17.971096" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:17.974250" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:17.974331" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:17.973925" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:17.974567" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:17.975826" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:18.341611" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:17.975496" elapsed="0.366292"/>
</kw>
<msg time="2026-04-19T02:19:18.341880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:17.975132" elapsed="0.366850"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:17.973170" elapsed="0.369138"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:18.343912" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:18.367256" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:18.367948" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:18.368344" 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-19T02:19:18.343486" elapsed="0.025070"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:18.370848" elapsed="0.001073"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:18.374408" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:18.373330" elapsed="0.001307"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:18.375513" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:18.374989" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:18.374862" elapsed="0.000795"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:18.376068" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T02:19:18.375806" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:18.375756" elapsed="0.000485"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:18.376323" 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-19T02:19:18.381307" 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-19T02:19:18.381867" elapsed="0.000287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:18.382350" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:18.377705" elapsed="0.004858"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:17.963191" elapsed="0.419599"/>
</kw>
<msg time="2026-04-19T02:19:18.383119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:17.962181" elapsed="0.421039"/>
</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-19T02:19:17.961362" elapsed="0.421952"/>
</kw>
<msg time="2026-04-19T02:19:18.383357" 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-19T02:19:17.960575" elapsed="0.422829"/>
</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-19T02:19:18.386617" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:19:18.387132" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:18.387478" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:18.383778" elapsed="0.003851"/>
</kw>
<msg time="2026-04-19T02:19:18.387726" level="INFO">${output} = 1</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-19T02:19:17.959314" elapsed="0.428438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:18.388236" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:18.387961" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:18.388329" elapsed="0.000052"/>
</return>
<msg time="2026-04-19T02:19:18.388529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:17.957535" elapsed="0.431020"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:18.388604" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:19:18.388751" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:17.955207" elapsed="0.433570"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:18.389379" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:18.388936" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:17.953806" elapsed="0.435760">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:20.393061" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:20.392262" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:20.395131" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:20.394509" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:20.396980" 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-19T02:19:20.397233" 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-19T02:19:20.396652" elapsed="0.000642"/>
</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-19T02:19:20.402593" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:20.402092" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:20.401998" elapsed="0.000744"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:20.404510" 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-19T02:19:20.404759" 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-19T02:19:20.403781" elapsed="0.001079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:20.406406" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:20.405829" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:20.408296" level="INFO">${conn_id} = 182</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:20.407581" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:20.410897" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:20.410977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:20.410599" 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-19T02:19:20.411438" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:20.412786" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:20.737811" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:20.412452" elapsed="0.325515"/>
</kw>
<msg time="2026-04-19T02:19:20.738071" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:20.412085" elapsed="0.326080"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:20.409802" elapsed="0.328646"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:20.740012" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:20.763211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:20.763728" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:20.764140" 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-19T02:19:20.739546" elapsed="0.024810"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:20.766540" elapsed="0.001004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:20.769387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:20.768734" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:20.770126" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:20.769769" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:20.769689" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:20.770803" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:19:20.770518" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:20.770448" elapsed="0.000578"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:20.771161" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:20.777564" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:19:20.778130" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:20.778491" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:20.773027" elapsed="0.005673"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:20.400618" elapsed="0.378303"/>
</kw>
<msg time="2026-04-19T02:19:20.779247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:20.399859" elapsed="0.379446"/>
</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-19T02:19:20.398971" elapsed="0.380417"/>
</kw>
<msg time="2026-04-19T02:19:20.779433" 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-19T02:19:20.397691" elapsed="0.381789"/>
</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-19T02:19:20.782557" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:20.783052" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:20.783348" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:20.779777" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T02:19:20.783648" level="INFO">${output} = 1</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-19T02:19:20.395722" elapsed="0.387952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:20.784147" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:20.783875" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:20.784234" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:20.784387" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:20.393584" elapsed="0.390828"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:20.784460" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:20.784607" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:20.391430" elapsed="0.393202"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:20.785265" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:20.784789" elapsed="0.000573">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:20.390386" elapsed="0.395123">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:22.789260" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:22.788462" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:22.791546" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:22.790819" elapsed="0.000782"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:22.792782" 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-19T02:19:22.792930" 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-19T02:19:22.792552" elapsed="0.000417"/>
</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-19T02:19:22.798650" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:22.797978" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:22.797731" elapsed="0.001273"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:22.800971" 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-19T02:19:22.801252" 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-19T02:19:22.800250" elapsed="0.001101"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:22.802908" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:22.802342" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:22.804788" 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-19T02:19:22.804061" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:22.807326" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:22.807408" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:22.806989" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:22.807656" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:22.808980" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:23.169088" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:22.808631" elapsed="0.360706"/>
</kw>
<msg time="2026-04-19T02:19:23.169424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:22.808256" elapsed="0.361262"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:22.806196" elapsed="0.363601"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:23.171311" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:23.195225" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:23.195757" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:23.196146" 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-19T02:19:23.170896" elapsed="0.025466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:23.198609" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:23.201815" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:23.200803" elapsed="0.001369"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:23.203069" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:23.202529" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:23.202407" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:23.204212" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:19:23.203727" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:23.203577" elapsed="0.000988"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:23.204694" 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-19T02:19:23.209528" 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-19T02:19:23.210197" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:23.210557" 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-19T02:19:23.206157" elapsed="0.004671"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:22.795795" elapsed="0.415278"/>
</kw>
<msg time="2026-04-19T02:19:23.211380" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:22.794763" elapsed="0.416678"/>
</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-19T02:19:22.793969" elapsed="0.417556"/>
</kw>
<msg time="2026-04-19T02:19:23.211566" 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-19T02:19:22.793222" elapsed="0.418390"/>
</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-19T02:19:23.214703" 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-19T02:19:23.215198" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:23.215498" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:23.211934" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T02:19:23.215757" level="INFO">${output} = 1</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-19T02:19:22.791916" elapsed="0.423867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:23.216237" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:23.215968" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:23.216327" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:19:23.216480" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:22.789821" elapsed="0.426684"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:23.216553" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:23.216699" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:22.787574" elapsed="0.429150"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:23.217364" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:23.216937" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:22.786420" elapsed="0.431128">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:25.221185" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:25.220356" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:25.223175" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:25.222770" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:25.224344" 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-19T02:19:25.224493" 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-19T02:19:25.224112" elapsed="0.000417"/>
</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-19T02:19:25.229907" elapsed="0.000438"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:25.229274" elapsed="0.001142"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:25.229198" elapsed="0.001321"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:25.232160" 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-19T02:19:25.232410" 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-19T02:19:25.231679" elapsed="0.000831"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:25.234266" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:25.233709" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:25.236102" level="INFO">${conn_id} = 188</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:25.235375" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:25.238786" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:25.238863" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:25.238499" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:25.239113" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:25.240387" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:25.559257" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:25.240058" elapsed="0.319306"/>
</kw>
<msg time="2026-04-19T02:19:25.559435" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:25.239673" elapsed="0.319840"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:25.237536" elapsed="0.322223"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:25.561170" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:25.583859" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:25.584389" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:25.584723" 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-19T02:19:25.560771" elapsed="0.024162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:25.587296" elapsed="0.000703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:25.589473" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:25.588834" 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-19T02:19:25.590244" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:25.589858" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:25.589777" elapsed="0.000661"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:25.590959" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T02:19:25.590650" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:25.590579" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:25.591333" elapsed="0.000056"/>
</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-19T02:19:25.597387" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:19:25.597932" elapsed="0.000261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:25.598387" 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-19T02:19:25.593294" elapsed="0.005299"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:25.227242" elapsed="0.371585"/>
</kw>
<msg time="2026-04-19T02:19:25.599148" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:25.226247" elapsed="0.372958"/>
</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-19T02:19:25.225482" elapsed="0.373806"/>
</kw>
<msg time="2026-04-19T02:19:25.599328" 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-19T02:19:25.224748" elapsed="0.374626"/>
</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-19T02:19:25.602470" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:19:25.602970" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:25.603325" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:25.599661" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T02:19:25.603565" level="INFO">${output} = 1</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-19T02:19:25.223514" elapsed="0.380077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:25.604023" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:25.603775" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:25.604130" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:25.604283" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:25.221720" elapsed="0.382589"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:25.604356" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:25.604502" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:25.219497" elapsed="0.385030"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:25.605093" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:25.604684" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:25.218412" elapsed="0.386868">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:27.608729" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:27.607941" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:27.611069" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:27.610433" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:27.612914" 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-19T02:19:27.613172" 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-19T02:19:27.612578" elapsed="0.000656"/>
</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-19T02:19:27.619209" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:27.618495" elapsed="0.000795"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:27.618439" elapsed="0.000910"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:27.620792" 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-19T02:19:27.621050" 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-19T02:19:27.620348" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:27.622709" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:27.622119" elapsed="0.000704"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:27.624530" 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-19T02:19:27.623815" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:27.626954" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:27.627045" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:27.626670" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:27.627278" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:27.628579" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:27.955229" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:27.628242" elapsed="0.327171"/>
</kw>
<msg time="2026-04-19T02:19:27.955522" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:27.627865" elapsed="0.327770"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:27.625818" elapsed="0.330204"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:27.958223" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:27.981562" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:27.982148" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:27.982483" 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-19T02:19:27.957631" elapsed="0.025064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:27.984990" elapsed="0.000873"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:27.987416" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:27.986729" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:27.988281" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:27.987812" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:27.987726" elapsed="0.000759"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:27.989062" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:19:27.988720" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:27.988645" elapsed="0.000657"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:27.989419" elapsed="0.000055"/>
</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-19T02:19:27.995733" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:27.996351" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:27.996729" 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-19T02:19:27.991503" elapsed="0.005444"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:27.617135" elapsed="0.380063"/>
</kw>
<msg time="2026-04-19T02:19:27.997511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:27.616010" elapsed="0.381565"/>
</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-19T02:19:27.614741" elapsed="0.382915"/>
</kw>
<msg time="2026-04-19T02:19:27.997699" 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-19T02:19:27.613584" elapsed="0.384161"/>
</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-19T02:19:28.000891" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:19:28.001388" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:28.001684" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:27.998063" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T02:19:28.001925" level="INFO">${output} = 1</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-19T02:19:27.611617" elapsed="0.390334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:28.002429" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:28.002175" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:28.002519" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:19:28.002674" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:27.609433" elapsed="0.393266"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:28.002747" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:28.002891" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:27.607130" elapsed="0.395786"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:28.003519" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:28.003117" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:27.606021" elapsed="0.397688">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:30.007452" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:30.006646" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:30.009714" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:30.009014" elapsed="0.000764"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:30.011715" 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-19T02:19:30.012111" 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-19T02:19:30.011387" elapsed="0.000788"/>
</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-19T02:19:30.019452" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:30.018969" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:30.018685" elapsed="0.000904"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:30.021077" 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-19T02:19:30.021323" 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-19T02:19:30.020569" elapsed="0.000855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:30.022952" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:30.022412" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:30.024798" level="INFO">${conn_id} = 194</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:30.024084" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:30.027269" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:30.027347" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:30.026968" 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-19T02:19:30.027582" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:30.028855" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:30.348481" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:30.028526" elapsed="0.320314"/>
</kw>
<msg time="2026-04-19T02:19:30.349026" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:30.028144" elapsed="0.321115"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:30.026169" elapsed="0.323688"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:30.352411" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:30.375496" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:30.376001" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:30.376394" 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-19T02:19:30.351834" elapsed="0.024771"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:30.378862" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:30.382173" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:30.381108" elapsed="0.001296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:30.383160" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:30.382766" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:30.382642" elapsed="0.000703"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:30.383858" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:19:30.383556" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:30.383486" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:30.384215" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:30.392515" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:30.393248" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:30.393623" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:30.386163" elapsed="0.007667"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:30.016485" elapsed="0.377587"/>
</kw>
<msg time="2026-04-19T02:19:30.394379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:30.014947" elapsed="0.379490"/>
</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-19T02:19:30.013728" elapsed="0.380788"/>
</kw>
<msg time="2026-04-19T02:19:30.394558" 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-19T02:19:30.012530" elapsed="0.382074"/>
</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-19T02:19:30.397626" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:19:30.398121" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:30.398422" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:30.394895" elapsed="0.003675"/>
</kw>
<msg time="2026-04-19T02:19:30.398660" level="INFO">${output} = 1</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-19T02:19:30.010449" elapsed="0.388236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:30.399133" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:30.398872" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:30.399219" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:30.399369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:30.008007" elapsed="0.391386"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:30.399438" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:30.399579" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:30.005728" elapsed="0.393876"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:30.400159" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:30.399758" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:30.004589" elapsed="0.395761">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:32.403691" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:32.403205" elapsed="0.000532"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:32.405011" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:32.404630" elapsed="0.000438"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:32.406215" 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-19T02:19:32.406359" 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-19T02:19:32.405949" elapsed="0.000447"/>
</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-19T02:19:32.411683" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:32.411026" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:32.410948" elapsed="0.001010"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:32.457265" 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-19T02:19:32.457603" 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-19T02:19:32.413333" elapsed="0.044373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:32.459402" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:32.458755" elapsed="0.000759"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:32.461257" level="INFO">${conn_id} = 197</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:32.460495" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:32.463687" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:32.463765" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:32.463400" 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-19T02:19:32.464006" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:32.465380" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:32.763409" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:32.465052" elapsed="0.298496"/>
</kw>
<msg time="2026-04-19T02:19:32.763632" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:32.464650" elapsed="0.299070"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:32.462570" elapsed="0.301434"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:32.765518" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:32.788181" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:32.788668" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:32.788995" 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-19T02:19:32.765124" elapsed="0.024122"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:32.791449" elapsed="0.000869"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:32.794593" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:32.793548" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:32.795679" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:32.795194" elapsed="0.000647"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:32.795070" elapsed="0.000891"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:32.796865" elapsed="0.000110"/>
</return>
<status status="PASS" start="2026-04-19T02:19:32.796422" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:32.796313" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:32.797411" elapsed="0.000080"/>
</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-19T02:19:32.805158" elapsed="0.000604"/>
</kw>
<kw name="Open 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-19T02:19:32.806108" elapsed="0.000293"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:32.806801" elapsed="0.000159"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:32.799961" elapsed="0.007309"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:32.409120" elapsed="0.398482"/>
</kw>
<msg time="2026-04-19T02:19:32.808143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:32.408109" elapsed="0.400125"/>
</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-19T02:19:32.407350" elapsed="0.401005"/>
</kw>
<msg time="2026-04-19T02:19:32.808415" 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-19T02:19:32.406616" elapsed="0.401866"/>
</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-19T02:19:32.811995" 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-19T02:19:32.812547" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:32.812844" 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-19T02:19:32.808930" elapsed="0.004066"/>
</kw>
<msg time="2026-04-19T02:19:32.813109" level="INFO">${output} = 1</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-19T02:19:32.405375" elapsed="0.407759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:32.813595" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:32.813333" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:32.813682" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:19:32.813837" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:32.404048" elapsed="0.409814"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:32.813909" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:19:32.814075" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:32.402454" elapsed="0.411647"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:32.814654" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:32.814258" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:32.401197" elapsed="0.413647">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:34.818648" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:34.817825" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:34.820902" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:34.820233" elapsed="0.000729"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:34.822912" 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-19T02:19:34.823190" 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-19T02:19:34.822565" elapsed="0.000688"/>
</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-19T02:19:34.829434" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:34.828905" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:34.828823" elapsed="0.000767"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:34.831085" 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-19T02:19:34.831330" 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-19T02:19:34.830612" elapsed="0.000819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:34.832987" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:34.832426" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:34.834890" level="INFO">${conn_id} = 200</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:34.834172" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:34.837376" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:34.837457" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:34.837083" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:34.837709" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:34.839018" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:35.183781" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:34.838681" elapsed="0.345252"/>
</kw>
<msg time="2026-04-19T02:19:35.184022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:34.838310" elapsed="0.345823"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:34.836278" elapsed="0.348140"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:35.185908" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:35.208738" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:35.209279" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:35.209610" 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-19T02:19:35.185516" elapsed="0.024299"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:35.212022" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:35.215241" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:35.214204" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:35.216471" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:35.215816" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:35.215694" elapsed="0.001063"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:35.217552" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:19:35.217109" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:35.216969" elapsed="0.000981"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:35.218168" elapsed="0.000084"/>
</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-19T02:19:35.223346" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:19:35.223888" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:35.224277" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:35.219934" 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-19T02:19:34.826508" elapsed="0.398194"/>
</kw>
<msg time="2026-04-19T02:19:35.225004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:34.825487" elapsed="0.399590"/>
</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-19T02:19:34.824654" elapsed="0.400508"/>
</kw>
<msg time="2026-04-19T02:19:35.225203" 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-19T02:19:34.823771" elapsed="0.401478"/>
</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-19T02:19:35.228384" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:19:35.228867" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:35.229180" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:35.225604" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T02:19:35.229419" level="INFO">${output} = 1</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-19T02:19:34.821542" elapsed="0.407903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:35.229890" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:35.229623" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:35.229978" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:19:35.230151" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:34.819230" elapsed="0.410946"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:35.230224" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:19:35.230369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:34.816898" elapsed="0.413495"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:35.230937" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:35.230548" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:34.815700" elapsed="0.415444">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:37.233254" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:37.232816" elapsed="0.000479"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:37.234371" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:37.234046" elapsed="0.000356"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:37.235435" 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-19T02:19:37.235563" 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-19T02:19:37.235222" elapsed="0.000371"/>
</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-19T02:19:37.240502" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:37.239790" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:37.239725" elapsed="0.000959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:37.242339" 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-19T02:19:37.242613" 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-19T02:19:37.241804" elapsed="0.000941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:37.244597" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:37.243909" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:37.246621" level="INFO">${conn_id} = 203</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:37.245805" elapsed="0.000929"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:37.249453" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:37.249540" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:37.249129" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:37.249811" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:37.251504" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:37.571107" 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 Sun Apr 19 02:18:37 UTC 2026

  System load:  0.09               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:37.251104" elapsed="0.320150"/>
</kw>
<msg time="2026-04-19T02:19:37.571525" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:37.250595" elapsed="0.321020"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:37.248263" elapsed="0.323631"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:37.573439" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:37.596204" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:37.596705" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:37.597084" 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-19T02:19:37.572996" elapsed="0.024313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:37.599672" elapsed="0.001024"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:37.603174" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:37.601967" elapsed="0.001445"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:37.604305" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:37.603768" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:37.603643" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:37.605391" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:19:37.604912" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:37.604806" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:37.605918" 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-19T02:19:37.612726" 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-19T02:19:37.613295" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:37.613658" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:37.609242" elapsed="0.004626"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:37.237874" elapsed="0.376252"/>
</kw>
<msg time="2026-04-19T02:19:37.614439" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:37.237076" elapsed="0.377433"/>
</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-19T02:19:37.236422" elapsed="0.378171"/>
</kw>
<msg time="2026-04-19T02:19:37.614636" 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-19T02:19:37.235788" elapsed="0.378894"/>
</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-19T02:19:37.617717" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T02:19:37.618215" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:37.618526" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:37.614975" elapsed="0.003705"/>
</kw>
<msg time="2026-04-19T02:19:37.618836" level="INFO">${output} = 1</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-19T02:19:37.234699" elapsed="0.384163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:37.619363" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:37.619110" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:37.619450" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:37.619603" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:37.233544" elapsed="0.386084"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:37.619675" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:37.619822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:37.232369" elapsed="0.387478"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:37.620414" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:37.620003" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:37.231704" elapsed="0.388897">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:39.624166" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:39.623411" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:39.626255" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:39.625624" elapsed="0.000691"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:39.627783" 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-19T02:19:39.627925" 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-19T02:19:39.627562" elapsed="0.000401"/>
</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-19T02:19:39.633911" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:39.633276" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:39.633198" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:39.636162" 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-19T02:19:39.636506" 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-19T02:19:39.635525" elapsed="0.001121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:39.638842" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:39.638016" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:39.640764" level="INFO">${conn_id} = 206</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:39.640063" elapsed="0.000800"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:39.643360" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:39.643436" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:39.643021" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:39.643670" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:39.644914" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:40.268702" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:39.644592" elapsed="0.624335"/>
</kw>
<msg time="2026-04-19T02:19:40.269008" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:39.644234" elapsed="0.624874"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:39.642263" elapsed="0.627132"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:40.270871" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:40.293744" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:40.294293" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:40.294648" 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-19T02:19:40.270487" elapsed="0.024379"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:40.297161" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:40.300280" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:40.299308" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:40.301402" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:40.300874" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:40.300739" elapsed="0.000848"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:40.302114" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T02:19:40.301804" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:40.301734" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:40.302470" elapsed="0.000051"/>
</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-19T02:19:40.309016" 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-19T02:19:40.309811" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:40.310338" 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-19T02:19:40.304389" elapsed="0.006245"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:39.630753" elapsed="0.680187"/>
</kw>
<msg time="2026-04-19T02:19:40.311476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:39.629793" elapsed="0.681766"/>
</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-19T02:19:39.629018" elapsed="0.682654"/>
</kw>
<msg time="2026-04-19T02:19:40.311728" 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-19T02:19:39.628207" elapsed="0.683586"/>
</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-19T02:19:40.315255" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:19:40.315730" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:40.316025" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:40.312226" elapsed="0.003964"/>
</kw>
<msg time="2026-04-19T02:19:40.316280" level="INFO">${output} = 1</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-19T02:19:39.626845" elapsed="0.689460"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:40.316732" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:40.316485" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:40.316821" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:19:40.316995" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:39.624686" elapsed="0.692350"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:40.317086" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:40.317231" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:39.622512" elapsed="0.694744"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:40.317868" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:40.317473" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:39.621448" elapsed="0.696617">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:42.321690" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:42.320898" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:42.323938" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:42.323300" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:42.325794" 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-19T02:19:42.326062" 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-19T02:19:42.325457" elapsed="0.000668"/>
</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-19T02:19:42.332149" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:42.331484" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:42.331100" elapsed="0.001245"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:42.334323" 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-19T02:19:42.334656" 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-19T02:19:42.333697" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:42.336920" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:42.336177" elapsed="0.000915"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:42.339440" level="INFO">${conn_id} = 209</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:42.338455" elapsed="0.001082"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:42.341804" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:42.341881" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:42.341518" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:42.342250" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:42.343530" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:42.641494" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:42.343206" elapsed="0.298445"/>
</kw>
<msg time="2026-04-19T02:19:42.641740" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:42.342823" elapsed="0.299011"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:42.340739" elapsed="0.301411"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:42.643663" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:42.666181" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:42.666686" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:42.667023" 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-19T02:19:42.643257" elapsed="0.024024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:42.669529" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:42.672715" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:42.671678" elapsed="0.001286"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:42.673966" elapsed="0.000101"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:42.673442" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:42.673249" elapsed="0.001063"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:42.675116" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:19:42.674635" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:42.674527" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:42.675647" elapsed="0.000084"/>
</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-19T02:19:42.681404" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:42.681955" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:42.682332" 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-19T02:19:42.677987" elapsed="0.004551"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:42.329258" elapsed="0.353502"/>
</kw>
<msg time="2026-04-19T02:19:42.683083" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:42.328293" elapsed="0.354847"/>
</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-19T02:19:42.327527" elapsed="0.355697"/>
</kw>
<msg time="2026-04-19T02:19:42.683268" 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-19T02:19:42.326479" elapsed="0.356834"/>
</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-19T02:19:42.686309" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:19:42.686782" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:42.687088" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:42.683600" elapsed="0.003637"/>
</kw>
<msg time="2026-04-19T02:19:42.687329" level="INFO">${output} = 1</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-19T02:19:42.324512" elapsed="0.362841"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:42.687772" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:42.687528" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:42.687856" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:42.688008" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:42.322250" elapsed="0.365871"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:42.688171" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:42.688317" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:42.320068" elapsed="0.368273"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:42.688924" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:42.688495" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:42.318925" elapsed="0.370197">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:44.692678" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:44.691916" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:44.694940" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:44.694336" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:44.696779" 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-19T02:19:44.697001" 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-19T02:19:44.696448" elapsed="0.000643"/>
</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-19T02:19:44.701824" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:44.701354" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:44.701073" elapsed="0.000891"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:44.703425" 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-19T02:19:44.703667" 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-19T02:19:44.702972" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:44.705342" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:44.704776" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:44.707136" level="INFO">${conn_id} = 212</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:44.706431" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:44.709599" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:44.709677" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:44.709269" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:44.709912" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:44.711205" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:45.017947" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:44.710866" elapsed="0.307186"/>
</kw>
<msg time="2026-04-19T02:19:45.018119" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:44.710503" elapsed="0.307688"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:44.708429" elapsed="0.309988"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:45.019782" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:45.042419" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:45.042907" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:45.043289" 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-19T02:19:45.019445" elapsed="0.024055"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:45.045704" elapsed="0.000864"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:45.048797" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:45.047789" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:45.049733" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:45.049371" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:45.049281" elapsed="0.000634"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:45.050418" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:19:45.050135" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:45.050065" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:45.050746" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:45.057312" elapsed="0.000460"/>
</kw>
<kw name="Open 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-19T02:19:45.058085" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:45.058572" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:45.052645" elapsed="0.006213"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:44.699750" elapsed="0.359448"/>
</kw>
<msg time="2026-04-19T02:19:45.059627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:44.699070" elapsed="0.360635"/>
</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-19T02:19:44.698511" elapsed="0.361308"/>
</kw>
<msg time="2026-04-19T02:19:45.059876" 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-19T02:19:44.697445" elapsed="0.362495"/>
</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-19T02:19:45.063424" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:19:45.063897" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:45.064230" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:45.060530" elapsed="0.003861"/>
</kw>
<msg time="2026-04-19T02:19:45.064486" level="INFO">${output} = 1</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-19T02:19:44.695511" elapsed="0.369001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:45.064936" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:45.064689" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:45.065023" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:19:45.065192" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:44.693360" elapsed="0.371858"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:45.065266" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:19:45.065409" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:44.691101" elapsed="0.374332"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:45.065973" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:45.065587" elapsed="0.000541">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:44.690003" elapsed="0.376244">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:47.070418" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:47.069587" elapsed="0.000907"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:47.072666" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:47.071896" elapsed="0.000832"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:47.074619" 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-19T02:19:47.075055" 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-19T02:19:47.074245" elapsed="0.000876"/>
</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-19T02:19:47.083105" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:47.082570" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:47.080212" elapsed="0.003039"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:47.084736" 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-19T02:19:47.084980" 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-19T02:19:47.084273" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:47.086637" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:47.086096" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:47.088536" level="INFO">${conn_id} = 215</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:47.087740" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:47.090928" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:47.091006" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:47.090632" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:47.091263" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:47.092711" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:47.410217" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:47.092365" elapsed="0.317980"/>
</kw>
<msg time="2026-04-19T02:19:47.410440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:47.091821" elapsed="0.318722"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:47.089850" elapsed="0.321033"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:47.412887" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:47.436114" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:47.436491" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:47.436713" 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-19T02:19:47.412403" elapsed="0.024452"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:47.438384" elapsed="0.000630"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:47.440714" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:47.439909" elapsed="0.000959"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:47.441486" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:47.441136" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:47.441023" elapsed="0.000658"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:47.442223" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T02:19:47.441896" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:47.441824" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:47.442583" elapsed="0.000055"/>
</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-19T02:19:47.449509" 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-19T02:19:47.450170" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:47.450539" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:47.444667" elapsed="0.006086"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:47.078562" elapsed="0.372415"/>
</kw>
<msg time="2026-04-19T02:19:47.451326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:47.077830" elapsed="0.373561"/>
</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-19T02:19:47.076729" elapsed="0.374746"/>
</kw>
<msg time="2026-04-19T02:19:47.451516" 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-19T02:19:47.075490" elapsed="0.376072"/>
</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-19T02:19:47.454615" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:19:47.455174" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:47.455522" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:47.451855" elapsed="0.003822"/>
</kw>
<msg time="2026-04-19T02:19:47.455771" level="INFO">${output} = 1</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-19T02:19:47.073250" elapsed="0.382547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:47.456255" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:47.455986" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:47.456342" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:19:47.456495" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:47.070956" elapsed="0.385564"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:47.456566" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:19:47.456709" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:47.068718" elapsed="0.388015"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:47.457315" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:47.456888" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:47.067551" elapsed="0.389952">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:49.461067" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:49.460299" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:49.463206" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:49.462576" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:49.464937" 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-19T02:19:49.465105" 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-19T02:19:49.464714" elapsed="0.000430"/>
</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-19T02:19:49.470431" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:49.469779" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:49.469704" elapsed="0.001014"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:49.472985" 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-19T02:19:49.473398" 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-19T02:19:49.472082" elapsed="0.001443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:49.475044" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:49.474492" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:49.476810" level="INFO">${conn_id} = 218</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:49.476121" elapsed="0.000787"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:49.479235" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:49.479313" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:49.478936" 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-19T02:19:49.479549" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:49.480806" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:49.791667" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:49.480481" elapsed="0.311335"/>
</kw>
<msg time="2026-04-19T02:19:49.791901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:49.480115" elapsed="0.311873"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:49.478183" elapsed="0.314102"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:49.793790" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:49.816436" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:49.816947" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:49.817317" 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-19T02:19:49.793390" elapsed="0.024136"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:49.819769" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:49.822645" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:49.821904" elapsed="0.000892"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:49.823398" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:49.823053" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:49.822949" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:49.824117" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:19:49.823803" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:49.823734" elapsed="0.000640"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:49.824490" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:49.831495" elapsed="0.000487"/>
</kw>
<kw name="Open 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-19T02:19:49.832351" elapsed="0.000208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:49.832754" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:49.826554" elapsed="0.006412"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:49.467835" elapsed="0.365376"/>
</kw>
<msg time="2026-04-19T02:19:49.833591" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:49.466877" elapsed="0.366777"/>
</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-19T02:19:49.466136" elapsed="0.367601"/>
</kw>
<msg time="2026-04-19T02:19:49.833779" 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-19T02:19:49.465396" elapsed="0.368429"/>
</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-19T02:19:49.837106" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:19:49.837585" elapsed="0.000326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:49.838096" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:49.834247" elapsed="0.003999"/>
</kw>
<msg time="2026-04-19T02:19:49.838340" level="INFO">${output} = 1</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-19T02:19:49.463864" elapsed="0.374501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:49.838809" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:49.838560" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:49.838896" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:19:49.839066" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:49.461622" elapsed="0.377471"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:49.839142" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:49.839288" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:49.459456" elapsed="0.379858"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:49.839862" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:49.839471" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:49.458377" elapsed="0.381685">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:51.843571" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:51.842810" elapsed="0.000883"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:51.845303" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:51.844901" elapsed="0.000439"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:51.846651" 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-19T02:19:51.846795" 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-19T02:19:51.846417" elapsed="0.000414"/>
</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-19T02:19:51.852397" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:51.851705" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:51.851624" elapsed="0.000970"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:51.854949" 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-19T02:19:51.855328" 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-19T02:19:51.853990" elapsed="0.001492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:51.857383" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:51.856818" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:51.859332" level="INFO">${conn_id} = 221</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:51.858549" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:51.861718" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:51.861796" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:51.861427" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:51.862045" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:51.863454" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:52.181267" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:51.862975" elapsed="0.318450"/>
</kw>
<msg time="2026-04-19T02:19:52.181510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:51.862614" elapsed="0.318989"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:51.860649" elapsed="0.321244"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:52.183434" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:52.206334" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:52.206847" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:52.207283" 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-19T02:19:52.183017" elapsed="0.024511"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:52.209916" elapsed="0.000991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:52.213388" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:52.212270" 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-19T02:19:52.214556" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:52.214008" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:52.213881" elapsed="0.001273"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:52.215761" elapsed="0.000198"/>
</return>
<status status="PASS" start="2026-04-19T02:19:52.215510" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:52.215399" elapsed="0.000696"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:52.216180" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:52.221142" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:52.221691" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:52.222066" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:52.217576" elapsed="0.004702"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:51.849745" elapsed="0.372754"/>
</kw>
<msg time="2026-04-19T02:19:52.222810" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:51.848656" elapsed="0.374226"/>
</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-19T02:19:51.847880" elapsed="0.375087"/>
</kw>
<msg time="2026-04-19T02:19:52.223008" 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-19T02:19:51.847074" elapsed="0.375996"/>
</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-19T02:19:52.226224" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:19:52.226706" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:52.227044" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:52.223431" elapsed="0.003765"/>
</kw>
<msg time="2026-04-19T02:19:52.227290" level="INFO">${output} = 1</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-19T02:19:51.845640" elapsed="0.381675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:52.227747" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:52.227499" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:52.227834" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:52.227987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:51.844185" elapsed="0.383828"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:52.228088" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:19:52.228238" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:51.841970" elapsed="0.386293"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:52.228821" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:52.228420" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:51.840878" elapsed="0.388138">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:54.232677" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:54.231893" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:54.234747" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:54.234150" elapsed="0.000655"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:54.236618" 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-19T02:19:54.236839" 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-19T02:19:54.236281" elapsed="0.000614"/>
</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-19T02:19:54.244426" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:54.243941" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:54.243882" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:54.246313" 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-19T02:19:54.246557" 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-19T02:19:54.245589" elapsed="0.001066"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:54.248186" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:54.247629" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:54.249987" level="INFO">${conn_id} = 224</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:54.249271" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:54.252380" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:54.252457" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:54.252086" 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-19T02:19:54.252695" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:54.254050" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:54.566083" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:54.253708" elapsed="0.312542"/>
</kw>
<msg time="2026-04-19T02:19:54.566336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:54.253346" elapsed="0.313082"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:54.251311" elapsed="0.315420"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:54.568236" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:54.591401" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:54.592019" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:54.592406" 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-19T02:19:54.567816" elapsed="0.024805"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:54.594986" elapsed="0.000998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:54.598291" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:54.597291" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:54.599432" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:54.598894" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:54.598767" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:54.600520" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T02:19:54.600072" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:54.599938" elapsed="0.000942"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:54.601218" elapsed="0.000089"/>
</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-19T02:19:54.607488" elapsed="0.000379"/>
</kw>
<kw name="Open 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-19T02:19:54.608146" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:54.608524" 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-19T02:19:54.603907" elapsed="0.004831"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:54.241222" elapsed="0.367743"/>
</kw>
<msg time="2026-04-19T02:19:54.609344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:54.239681" elapsed="0.369734"/>
</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-19T02:19:54.238424" elapsed="0.371076"/>
</kw>
<msg time="2026-04-19T02:19:54.609541" 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-19T02:19:54.237273" elapsed="0.372315"/>
</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-19T02:19:54.612796" 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-19T02:19:54.613593" elapsed="0.000388"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:54.614368" elapsed="0.000224"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:54.609899" elapsed="0.004840"/>
</kw>
<msg time="2026-04-19T02:19:54.615110" level="INFO">${output} = 1</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-19T02:19:54.235337" elapsed="0.379834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:54.616361" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:54.615600" elapsed="0.000862"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:54.616562" elapsed="0.000077"/>
</return>
<msg time="2026-04-19T02:19:54.616917" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:54.233230" elapsed="0.383742"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:54.617110" elapsed="0.000058"/>
</return>
<msg time="2026-04-19T02:19:54.617432" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:54.231001" elapsed="0.386486"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:54.618785" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:54.617844" elapsed="0.001096">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:54.229869" elapsed="0.389343">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:56.622937" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:56.622167" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:56.625195" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:56.624540" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:56.627054" 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-19T02:19:56.627287" 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-19T02:19:56.626690" elapsed="0.000657"/>
</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-19T02:19:56.632392" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:56.631876" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:56.631546" elapsed="0.001025"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:56.634134" 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-19T02:19:56.634390" 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-19T02:19:56.633662" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:56.636095" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:56.635489" elapsed="0.000720"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:56.637940" level="INFO">${conn_id} = 227</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:56.637199" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:56.641084" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:56.641193" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:56.640675" 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-19T02:19:56.641518" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:56.643512" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:56.961411" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:56.642805" elapsed="0.318865"/>
</kw>
<msg time="2026-04-19T02:19:56.961755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:56.642309" elapsed="0.319535"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:56.639584" elapsed="0.322566"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:56.963641" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:56.986683" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:56.987245" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:56.987600" 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-19T02:19:56.963231" elapsed="0.024578"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:56.990193" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:56.992816" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:56.992208" elapsed="0.000750"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:56.993538" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:56.993209" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:56.993125" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:56.994223" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:19:56.993923" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:56.993856" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:56.994558" elapsed="0.000051"/>
</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-19T02:19:57.001439" elapsed="0.000419"/>
</kw>
<kw name="Open 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-19T02:19:57.002188" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:57.002550" 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-19T02:19:56.996503" elapsed="0.006253"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:56.630187" elapsed="0.372788"/>
</kw>
<msg time="2026-04-19T02:19:57.003310" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:56.629431" elapsed="0.373939"/>
</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-19T02:19:56.628876" elapsed="0.374577"/>
</kw>
<msg time="2026-04-19T02:19:57.003494" 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-19T02:19:56.627699" elapsed="0.375841"/>
</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-19T02:19:57.006580" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:19:57.007068" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:57.007375" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:57.003830" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T02:19:57.007614" level="INFO">${output} = 1</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-19T02:19:56.625738" elapsed="0.381901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:57.008083" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:57.007820" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:57.008172" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:57.008324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:56.623505" elapsed="0.384844"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:57.008395" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:57.008541" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:56.621272" elapsed="0.387293"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:57.009198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:57.008779" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:56.620170" elapsed="0.389218">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:19:59.012916" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:19:59.012155" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:19:59.014625" level="INFO">${member_ip} = 10.30.171.206</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-19T02:19:59.014242" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:59.015814" 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-19T02:19:59.015956" 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-19T02:19:59.015597" elapsed="0.000396"/>
</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-19T02:19:59.021858" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:19:59.021212" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:59.020768" elapsed="0.001316"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:59.024099" 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-19T02:19:59.024433" 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-19T02:19:59.023461" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:59.026715" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:59.026077" elapsed="0.000764"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:19:59.028650" level="INFO">${conn_id} = 230</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:19:59.027870" elapsed="0.000876"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:19:59.031150" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:19:59.031228" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:19:59.030836" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:59.031465" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:19:59.033065" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:19:59.367920" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:19:59.032689" elapsed="0.335391"/>
</kw>
<msg time="2026-04-19T02:19:59.368166" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:59.032234" elapsed="0.336018"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:19:59.030016" elapsed="0.338518"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:19:59.370018" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:19:59.393809" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:19:59.394359" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:19:59.394694" 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-19T02:19:59.369627" elapsed="0.025276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:59.397177" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:59.400389" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:59.399315" elapsed="0.001336"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:59.401280" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:19:59.400932" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:59.400851" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:19:59.401942" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T02:19:59.401660" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T02:19:59.401593" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:19:59.402312" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:59.408946" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:19:59.409510" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:59.409864" 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-19T02:19:59.404236" elapsed="0.005854"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:19:59.018938" elapsed="0.391375"/>
</kw>
<msg time="2026-04-19T02:19:59.410619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:19:59.017932" elapsed="0.392744"/>
</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-19T02:19:59.016947" elapsed="0.393811"/>
</kw>
<msg time="2026-04-19T02:19:59.410799" 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-19T02:19:59.016237" elapsed="0.394608"/>
</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-19T02:19:59.413931" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:19:59.414429" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:19:59.414725" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:19:59.411152" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T02:19:59.414970" level="INFO">${output} = 1</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-19T02:19:59.015000" elapsed="0.399996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:19:59.415442" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:19:59.415193" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:19:59.415530" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:19:59.415683" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:19:59.013547" elapsed="0.402161"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:19:59.415757" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:19:59.415901" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:19:59.011300" elapsed="0.404626"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:19:59.416647" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:19:59.416254" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:19:59.010213" elapsed="0.406638">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:01.420370" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:01.419599" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:01.422654" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:01.422012" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:01.424505" 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-19T02:20:01.424730" 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-19T02:20:01.424174" elapsed="0.000616"/>
</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-19T02:20:01.433440" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:01.432703" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:01.429777" elapsed="0.003862"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:01.435192" 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-19T02:20:01.435430" 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-19T02:20:01.434733" elapsed="0.000797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:01.437047" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:01.436497" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:01.438894" level="INFO">${conn_id} = 233</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:01.438206" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:01.441316" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:01.441401" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:01.440965" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:01.441640" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:01.443095" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:01.799011" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:19:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:01.442753" elapsed="0.356429"/>
</kw>
<msg time="2026-04-19T02:20:01.799265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:01.442387" elapsed="0.356967"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:01.440209" elapsed="0.359423"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:01.801138" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:01.823770" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:01.824326" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:01.824661" 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-19T02:20:01.800731" elapsed="0.024142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:01.827148" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:01.829781" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:01.829188" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:01.830603" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:01.830205" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:01.830125" elapsed="0.000662"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:01.831297" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:20:01.830983" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:01.830916" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:01.831627" elapsed="0.000051"/>
</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-19T02:20:01.837888" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:20:01.838451" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:01.838809" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:01.833651" elapsed="0.005370"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:01.427898" elapsed="0.411435"/>
</kw>
<msg time="2026-04-19T02:20:01.839634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:01.426959" elapsed="0.412732"/>
</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-19T02:20:01.426220" elapsed="0.413553"/>
</kw>
<msg time="2026-04-19T02:20:01.839814" 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-19T02:20:01.425233" elapsed="0.414627"/>
</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-19T02:20:01.843122" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:20:01.843602" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:01.843897" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:01.840180" elapsed="0.003882"/>
</kw>
<msg time="2026-04-19T02:20:01.844329" level="INFO">${output} = 1</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-19T02:20:01.423233" elapsed="0.421122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:01.844783" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:01.844533" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:01.844870" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:01.845023" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:01.421087" elapsed="0.423978"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:01.845114" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:01.845261" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:01.418752" elapsed="0.426534"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:01.845832" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:01.845443" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:01.417701" elapsed="0.428310">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:03.849775" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:03.849010" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:03.851905" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:03.851300" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:03.853818" 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-19T02:20:03.854262" 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-19T02:20:03.853448" elapsed="0.000878"/>
</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-19T02:20:03.861868" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:03.861241" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:03.861162" elapsed="0.000981"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:03.864476" 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-19T02:20:03.864721" 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-19T02:20:03.863637" elapsed="0.001184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:03.866401" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:03.865784" elapsed="0.000726"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:03.868317" level="INFO">${conn_id} = 236</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:03.867588" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:03.870784" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:03.870864" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:03.870502" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:03.871118" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:03.872436" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:04.190299" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:03.872108" elapsed="0.318344"/>
</kw>
<msg time="2026-04-19T02:20:04.190540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:03.871724" elapsed="0.318908"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:03.869650" elapsed="0.321287"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:04.192465" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:04.215682" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:04.216322" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:04.216664" 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-19T02:20:04.192041" elapsed="0.024834"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:04.219333" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:04.221950" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:04.221310" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:04.222738" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:04.222393" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:04.222308" elapsed="0.000680"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:04.223520" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:20:04.223228" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:04.223157" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:04.223867" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:04.230032" elapsed="0.000506"/>
</kw>
<kw name="Open 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-19T02:20:04.230857" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:04.231265" 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-19T02:20:04.225781" elapsed="0.005701"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:03.858766" elapsed="0.372946"/>
</kw>
<msg time="2026-04-19T02:20:04.232038" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:03.857237" elapsed="0.374876"/>
</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-19T02:20:03.855948" elapsed="0.376251"/>
</kw>
<msg time="2026-04-19T02:20:04.232242" 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-19T02:20:03.854685" elapsed="0.377605"/>
</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-19T02:20:04.235395" 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-19T02:20:04.236019" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:04.236357" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:04.232589" elapsed="0.003922"/>
</kw>
<msg time="2026-04-19T02:20:04.236604" level="INFO">${output} = 1</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-19T02:20:03.852494" elapsed="0.384136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:04.237095" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:04.236813" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:04.237186" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:04.237345" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:03.850335" elapsed="0.387035"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:04.237418" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:04.237568" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:03.848203" elapsed="0.389390"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:04.238408" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:04.237752" elapsed="0.000734">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:03.847035" elapsed="0.391568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:06.242163" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:06.241362" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:06.243556" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:06.243151" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:06.244785" 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-19T02:20:06.244933" 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-19T02:20:06.244552" elapsed="0.000420"/>
</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-19T02:20:06.250623" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:06.250144" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:06.250084" elapsed="0.000810"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:06.252625" 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-19T02:20:06.252872" 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-19T02:20:06.251901" elapsed="0.001071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:06.254544" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:06.253984" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:06.256362" level="INFO">${conn_id} = 239</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:06.255644" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:06.258818" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:06.258894" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:06.258525" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:06.259148" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:06.260420" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:06.588938" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:06.260094" elapsed="0.329038"/>
</kw>
<msg time="2026-04-19T02:20:06.589225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:06.259704" elapsed="0.329616"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:06.257720" elapsed="0.331895"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:06.591161" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:06.614325" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:06.614817" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:06.615220" 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-19T02:20:06.590741" elapsed="0.024693"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:06.617649" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:06.620553" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:06.619815" elapsed="0.000889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:06.621314" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:06.620938" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:06.620854" elapsed="0.000657"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:06.622018" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-19T02:20:06.621722" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:06.621651" elapsed="0.000625"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:06.622395" elapsed="0.000057"/>
</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-19T02:20:06.629128" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:20:06.629676" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:06.630036" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:06.624443" elapsed="0.005815"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:06.247898" elapsed="0.382584"/>
</kw>
<msg time="2026-04-19T02:20:06.630857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:06.246827" elapsed="0.384088"/>
</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-19T02:20:06.246007" elapsed="0.384992"/>
</kw>
<msg time="2026-04-19T02:20:06.631113" 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-19T02:20:06.245228" elapsed="0.385936"/>
</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-19T02:20:06.634142" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:20:06.634616" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:06.634908" 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-19T02:20:06.631471" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T02:20:06.635234" level="INFO">${output} = 1</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-19T02:20:06.243913" elapsed="0.391350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:06.635719" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:06.635471" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:06.635807" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:06.635959" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:06.242518" elapsed="0.393467"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:06.636035" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:20:06.636201" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:06.240531" elapsed="0.395695"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:06.636776" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:06.636383" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:06.239479" elapsed="0.397488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:08.640727" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:08.639947" elapsed="0.000918"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:08.642427" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:08.641999" elapsed="0.000468"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:08.643624" 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-19T02:20:08.643773" 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-19T02:20:08.643397" elapsed="0.000414"/>
</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-19T02:20:08.649327" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:08.648678" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:08.648595" elapsed="0.000880"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:08.651245" 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-19T02:20:08.651507" 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-19T02:20:08.650503" elapsed="0.001110"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:08.653261" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:08.652661" elapsed="0.000715"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:08.655273" level="INFO">${conn_id} = 242</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:08.654462" elapsed="0.000916"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:08.657792" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:08.657872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:08.657497" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:08.658132" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:08.659637" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:08.979424" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:08.659298" elapsed="0.320279"/>
</kw>
<msg time="2026-04-19T02:20:08.979662" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:08.658711" elapsed="0.321039"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:08.656634" elapsed="0.323430"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:08.981644" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:09.004398" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:09.004948" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:09.005328" 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-19T02:20:08.981222" elapsed="0.024320"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:09.007765" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:09.010964" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:09.009959" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:09.012130" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:09.011590" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:09.011468" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:09.013321" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:20:09.012739" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:09.012632" elapsed="0.000922"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:09.013665" elapsed="0.000051"/>
</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-19T02:20:09.023586" elapsed="0.000515"/>
</kw>
<kw name="Open 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-19T02:20:09.024426" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:09.024951" elapsed="0.000195"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:09.016605" elapsed="0.008703"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:08.646615" elapsed="0.379028"/>
</kw>
<msg time="2026-04-19T02:20:09.026225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:08.645613" elapsed="0.380697"/>
</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-19T02:20:08.644801" elapsed="0.381633"/>
</kw>
<msg time="2026-04-19T02:20:09.026500" 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-19T02:20:08.644059" elapsed="0.382511"/>
</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-19T02:20:09.030869" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T02:20:09.031504" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:09.031836" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:09.027097" elapsed="0.004892"/>
</kw>
<msg time="2026-04-19T02:20:09.032103" level="INFO">${output} = 1</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-19T02:20:08.642780" elapsed="0.389352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:09.032600" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:09.032320" elapsed="0.000347"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:09.032714" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:20:09.032875" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:08.641338" elapsed="0.391564"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:09.032951" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:20:09.033137" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:08.639105" elapsed="0.394059"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:09.033779" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:09.033328" elapsed="0.000529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:08.637878" elapsed="0.396096">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:11.037590" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:11.036812" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:11.039734" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:11.039121" elapsed="0.000674"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:11.041141" 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-19T02:20:11.041285" 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-19T02:20:11.040898" elapsed="0.000425"/>
</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-19T02:20:11.046946" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:11.046307" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:11.045888" elapsed="0.001279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:11.049180" 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-19T02:20:11.049466" 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-19T02:20:11.048546" elapsed="0.001018"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:11.051453" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:11.050885" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:11.053343" level="INFO">${conn_id} = 245</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:11.052572" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:11.055668" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:11.055745" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:11.055384" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:11.055977" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:11.057516" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:11.377831" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:11.057002" elapsed="0.320925"/>
</kw>
<msg time="2026-04-19T02:20:11.377991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:11.056641" elapsed="0.321448"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:11.054615" elapsed="0.323713"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:11.379717" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:11.402945" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:11.403493" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:11.403815" 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-19T02:20:11.379379" elapsed="0.024646"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:11.406241" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:11.408587" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:11.407988" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:11.409270" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:11.408940" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:11.408865" elapsed="0.000584"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:11.409955" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:20:11.409677" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:11.409599" elapsed="0.000690"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:11.410397" elapsed="0.000051"/>
</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-19T02:20:11.416733" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:20:11.417307" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:11.417668" 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-19T02:20:11.412204" elapsed="0.005669"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:11.043994" elapsed="0.374192"/>
</kw>
<msg time="2026-04-19T02:20:11.418539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:11.043056" elapsed="0.375542"/>
</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-19T02:20:11.042287" elapsed="0.376394"/>
</kw>
<msg time="2026-04-19T02:20:11.418723" 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-19T02:20:11.041543" elapsed="0.377225"/>
</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-19T02:20:11.421746" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T02:20:11.422326" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:11.422620" 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-19T02:20:11.419078" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T02:20:11.422914" level="INFO">${output} = 1</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-19T02:20:11.040313" elapsed="0.382627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:11.423414" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:11.423163" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:11.423503" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:11.423654" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:11.038151" elapsed="0.385529"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:11.423733" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:20:11.423884" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:11.035890" elapsed="0.388019"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:11.424528" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:11.424083" elapsed="0.000521">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:11.034831" elapsed="0.389891">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:13.428435" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:13.427619" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:13.430617" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:13.429976" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:13.432511" 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-19T02:20:13.432744" 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-19T02:20:13.432136" elapsed="0.000666"/>
</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-19T02:20:13.440692" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:13.440003" elapsed="0.000801"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:13.439603" elapsed="0.001283"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:13.442823" 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-19T02:20:13.443108" 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-19T02:20:13.442310" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:13.444763" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:13.444198" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:13.446658" level="INFO">${conn_id} = 248</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:13.445868" elapsed="0.000890"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:13.449134" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:13.449215" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:13.448778" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:13.449490" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:13.450882" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:13.809535" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:13.450557" elapsed="0.359237"/>
</kw>
<msg time="2026-04-19T02:20:13.809881" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:13.450190" elapsed="0.359786"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:13.447953" elapsed="0.362327"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:13.811804" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:13.834882" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:13.835428" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:13.835795" 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-19T02:20:13.811373" elapsed="0.024635"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:13.838367" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:13.841101" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:13.840476" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:13.841794" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:13.841468" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:13.841388" elapsed="0.000590"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:13.842488" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:20:13.842205" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:13.842136" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:13.842824" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:13.849331" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:20:13.849875" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:13.850296" 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-19T02:20:13.844748" elapsed="0.005803"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:13.437342" elapsed="0.413431"/>
</kw>
<msg time="2026-04-19T02:20:13.851097" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:13.435692" elapsed="0.415464"/>
</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-19T02:20:13.434469" elapsed="0.416769"/>
</kw>
<msg time="2026-04-19T02:20:13.851279" 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-19T02:20:13.433268" elapsed="0.418056"/>
</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-19T02:20:13.854463" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:20:13.854950" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:13.855268" 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-19T02:20:13.851613" elapsed="0.003801"/>
</kw>
<msg time="2026-04-19T02:20:13.855514" level="INFO">${output} = 1</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-19T02:20:13.431191" elapsed="0.424350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:13.856011" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:13.855757" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:13.856120" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:13.856273" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:13.428975" elapsed="0.427323"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:13.856345" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:13.856490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:13.426761" elapsed="0.429754"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:13.857155" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:13.856735" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:13.425664" elapsed="0.431683">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:15.861798" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:15.860742" elapsed="0.001150"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:15.863742" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:15.863344" elapsed="0.000437"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:15.865298" 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-19T02:20:15.865506" 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-19T02:20:15.864969" elapsed="0.000588"/>
</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-19T02:20:15.872101" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:15.871550" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:15.869492" elapsed="0.002756"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:15.873743" 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-19T02:20:15.873988" 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-19T02:20:15.873279" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:15.875720" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:15.875126" elapsed="0.000707"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:15.877618" level="INFO">${conn_id} = 251</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:15.876827" elapsed="0.000890"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:15.880212" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:15.880291" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:15.879897" 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-19T02:20:15.880530" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:15.881932" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:16.196566" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:15.881604" elapsed="0.315113"/>
</kw>
<msg time="2026-04-19T02:20:16.196802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:15.881225" elapsed="0.315663"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:15.879009" elapsed="0.318192"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:16.198718" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:16.221746" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:16.222292" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:16.222694" 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-19T02:20:16.198316" elapsed="0.024601"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:16.225263" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:16.228450" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:16.227434" elapsed="0.001161"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:16.229176" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:16.228821" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:16.228740" 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-19T02:20:16.229850" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:20:16.229564" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:16.229497" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:16.230226" elapsed="0.000063"/>
</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-19T02:20:16.236957" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:20:16.237521" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:16.237880" 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-19T02:20:16.232211" elapsed="0.005895"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:15.868144" elapsed="0.370211"/>
</kw>
<msg time="2026-04-19T02:20:16.238659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:15.867420" elapsed="0.371298"/>
</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-19T02:20:15.866755" elapsed="0.372046"/>
</kw>
<msg time="2026-04-19T02:20:16.238842" 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-19T02:20:15.865873" elapsed="0.373014"/>
</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-19T02:20:16.241959" 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-19T02:20:16.242459" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:16.242753" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:16.239279" elapsed="0.003623"/>
</kw>
<msg time="2026-04-19T02:20:16.242992" level="INFO">${output} = 1</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-19T02:20:15.864186" elapsed="0.378832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:16.243591" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:16.243274" elapsed="0.000369"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:16.243687" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:16.243842" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:15.862492" elapsed="0.381375"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:16.243960" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:20:16.244128" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:15.859589" elapsed="0.384564"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:16.244706" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:16.244313" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:15.858296" elapsed="0.386591">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:18.248416" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:18.247623" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:18.250756" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:18.250146" elapsed="0.000672"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:18.252642" 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-19T02:20:18.252867" 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-19T02:20:18.252310" elapsed="0.000617"/>
</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-19T02:20:18.258823" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:18.258334" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:18.258276" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:18.260638" 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-19T02:20:18.260884" 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-19T02:20:18.259955" elapsed="0.001030"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:18.262517" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:18.261954" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:18.264353" level="INFO">${conn_id} = 254</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:18.263598" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:18.266784" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:18.266862" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:18.266502" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:18.267114" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:18.268391" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:18.585869" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:18.268061" elapsed="0.317915"/>
</kw>
<msg time="2026-04-19T02:20:18.586064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:18.267668" elapsed="0.318477"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:18.265648" elapsed="0.320747"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:18.587795" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:18.610676" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:18.611001" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:18.611266" 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-19T02:20:18.587436" elapsed="0.023971"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:18.613734" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:18.616970" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:18.615955" elapsed="0.001364"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:18.618067" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:18.617640" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:18.617550" elapsed="0.000714"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:18.618799" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:20:18.618502" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:18.618431" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:18.619171" elapsed="0.000070"/>
</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-19T02:20:18.625917" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:20:18.626479" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:18.626832" 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-19T02:20:18.621239" elapsed="0.005814"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:18.256930" elapsed="0.370351"/>
</kw>
<msg time="2026-04-19T02:20:18.627590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:18.255922" elapsed="0.371726"/>
</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-19T02:20:18.254535" elapsed="0.373194"/>
</kw>
<msg time="2026-04-19T02:20:18.627770" 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-19T02:20:18.253310" elapsed="0.374506"/>
</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-19T02:20:18.631265" 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-19T02:20:18.631758" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:18.632084" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:18.628233" elapsed="0.004018"/>
</kw>
<msg time="2026-04-19T02:20:18.632346" level="INFO">${output} = 1</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-19T02:20:18.251343" elapsed="0.381029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:18.632799" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:18.632549" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:18.632887" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:18.633062" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:18.249188" elapsed="0.383928"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:18.633175" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:20:18.633339" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:18.246765" elapsed="0.386599"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:18.633926" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:18.633522" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:18.245717" elapsed="0.388421">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:20.637637" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:20.636877" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:20.639696" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:20.639171" elapsed="0.000563"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:20.640897" 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-19T02:20:20.641217" 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-19T02:20:20.640673" elapsed="0.000584"/>
</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-19T02:20:20.647846" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:20.645910" elapsed="0.002040"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:20.645834" elapsed="0.002175"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:20.649886" 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-19T02:20:20.650153" 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-19T02:20:20.649101" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:20.651857" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:20.651302" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:20.653657" level="INFO">${conn_id} = 257</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:20.652936" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:20.656078" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:20.656158" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:20.655772" 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-19T02:20:20.656394" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:20.657661" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:20.980427" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:20.657336" elapsed="0.323241"/>
</kw>
<msg time="2026-04-19T02:20:20.980672" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:20.656955" elapsed="0.323812"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:20.654947" elapsed="0.326137"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:20.982598" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:21.005317" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:21.005548" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:21.005698" 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-19T02:20:20.982188" elapsed="0.023603"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:21.006791" elapsed="0.000440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:21.008296" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:21.007809" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:21.008824" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:21.008576" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:21.008516" 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-19T02:20:21.009324" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:20:21.009122" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:21.009071" elapsed="0.000414"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:21.009563" 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-19T02:20:21.014479" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T02:20:21.015273" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:21.015646" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:21.010953" elapsed="0.004921"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:20.643988" elapsed="0.372147"/>
</kw>
<msg time="2026-04-19T02:20:21.016452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:20.643016" elapsed="0.373500"/>
</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-19T02:20:20.642266" elapsed="0.374340"/>
</kw>
<msg time="2026-04-19T02:20:21.016649" 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-19T02:20:20.641485" elapsed="0.375211"/>
</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-19T02:20:21.019862" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:21.020475" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:21.020787" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:21.017011" elapsed="0.003951"/>
</kw>
<msg time="2026-04-19T02:20:21.021079" level="INFO">${output} = 1</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-19T02:20:20.640059" elapsed="0.381048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:21.021558" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:21.021300" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:21.021648" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:20:21.021839" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:20.638186" elapsed="0.383682"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:21.021918" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:20:21.022089" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:20.635999" elapsed="0.386116"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:21.022679" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:21.022276" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:20.634908" elapsed="0.387981">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:23.026565" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:23.025754" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:23.028831" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:23.028169" elapsed="0.000732"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:23.030720" 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-19T02:20:23.031188" 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-19T02:20:23.030389" elapsed="0.000889"/>
</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-19T02:20:23.035435" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:23.034932" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:23.034873" elapsed="0.000796"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:23.037434" 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-19T02:20:23.037690" 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-19T02:20:23.036694" elapsed="0.001097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:23.039431" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:23.038811" elapsed="0.000733"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:23.041378" level="INFO">${conn_id} = 260</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:23.040595" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:23.043887" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:23.043965" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:23.043599" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:23.044219" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:23.045544" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:23.341073" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:23.045216" elapsed="0.296002"/>
</kw>
<msg time="2026-04-19T02:20:23.341303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:23.044802" elapsed="0.296589"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:23.042720" elapsed="0.298964"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:23.343197" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:23.365811" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:23.366077" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:23.366228" 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-19T02:20:23.342781" elapsed="0.023543"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:23.367351" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:23.368826" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:23.368375" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:23.369357" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:23.369113" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:23.369051" elapsed="0.000444"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:23.369890" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T02:20:23.369682" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:23.369630" elapsed="0.000448"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:23.370162" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:23.374809" 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-19T02:20:23.375472" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:23.375833" 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-19T02:20:23.371506" elapsed="0.004551"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:23.033501" elapsed="0.342784"/>
</kw>
<msg time="2026-04-19T02:20:23.376659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:23.032749" elapsed="0.343972"/>
</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-19T02:20:23.032179" elapsed="0.344625"/>
</kw>
<msg time="2026-04-19T02:20:23.376845" 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-19T02:20:23.031630" elapsed="0.345261"/>
</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-19T02:20:23.380051" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:20:23.380530" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:23.380828" 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-19T02:20:23.377202" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T02:20:23.381082" level="INFO">${output} = 1</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-19T02:20:23.029436" elapsed="0.351672"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:23.381529" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:23.381284" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:23.381630" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:20:23.381781" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:23.027127" elapsed="0.354680"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:23.381854" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:23.381998" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:23.024851" elapsed="0.357172"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:23.382594" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:23.382199" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:23.023720" elapsed="0.359061">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:25.386407" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:25.385620" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:25.388481" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:25.387855" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:25.390347" 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-19T02:20:25.390572" 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-19T02:20:25.389993" elapsed="0.000637"/>
</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-19T02:20:25.399017" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:25.398315" elapsed="0.000857"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:25.397834" elapsed="0.001427"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:25.401488" 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-19T02:20:25.401805" 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-19T02:20:25.400724" elapsed="0.001181"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:25.403519" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:25.402904" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:25.405587" level="INFO">${conn_id} = 263</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:25.404788" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:25.408013" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:25.408245" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:25.407711" elapsed="0.000559"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:25.408487" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:25.409951" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:25.757600" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:25.409603" elapsed="0.348149"/>
</kw>
<msg time="2026-04-19T02:20:25.757853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:25.409087" elapsed="0.348855"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:25.406907" elapsed="0.351343"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:25.759763" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:25.782763" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:25.783312" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:25.783646" 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-19T02:20:25.759360" elapsed="0.024496"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:25.786210" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:25.789463" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:25.788470" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:25.790643" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:25.790134" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:25.789975" elapsed="0.000890"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:25.791381" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:20:25.791099" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:25.791008" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:25.791713" elapsed="0.000051"/>
</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-19T02:20:25.798471" elapsed="0.000401"/>
</kw>
<kw name="Open 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-19T02:20:25.799221" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:25.799583" 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-19T02:20:25.793635" elapsed="0.006155"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:25.394970" elapsed="0.405043"/>
</kw>
<msg time="2026-04-19T02:20:25.800336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:25.393485" elapsed="0.406911"/>
</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-19T02:20:25.392243" elapsed="0.408236"/>
</kw>
<msg time="2026-04-19T02:20:25.800520" 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-19T02:20:25.390980" elapsed="0.409586"/>
</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-19T02:20:25.803598" 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-19T02:20:25.804093" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:25.804389" 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-19T02:20:25.800921" elapsed="0.003616"/>
</kw>
<msg time="2026-04-19T02:20:25.804627" level="INFO">${output} = 1</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-19T02:20:25.389014" elapsed="0.415638"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:25.805096" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:25.804827" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:25.805184" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:25.805334" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:25.386929" elapsed="0.418430"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:25.805405" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:25.805546" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:25.384672" elapsed="0.420898"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:25.806155" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:25.805723" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:25.383611" elapsed="0.422729">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:27.809847" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:27.809110" elapsed="0.000807"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:27.811953" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:27.811349" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:27.813850" 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-19T02:20:27.814240" 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-19T02:20:27.813516" elapsed="0.000801"/>
</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-19T02:20:27.820456" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:27.819951" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:27.819655" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:27.822095" 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-19T02:20:27.822345" 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-19T02:20:27.821620" elapsed="0.000827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:27.823981" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:27.823430" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:27.825892" level="INFO">${conn_id} = 266</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:27.825121" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:27.828381" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:27.828458" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:27.828096" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:27.828690" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:27.830063" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:28.152400" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:27.829723" elapsed="0.322828"/>
</kw>
<msg time="2026-04-19T02:20:28.152636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:27.829363" elapsed="0.323371"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:27.827329" elapsed="0.325692"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:28.154554" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:28.177425" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:28.177922" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:28.178497" 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-19T02:20:28.154161" elapsed="0.024549"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:28.180953" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:28.183295" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:28.182655" 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-19T02:20:28.183991" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:28.183663" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:28.183583" elapsed="0.000627"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:28.184728" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:20:28.184440" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:28.184371" elapsed="0.000581"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:28.185275" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:28.191600" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:20:28.192159" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:28.192516" 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-19T02:20:28.187433" elapsed="0.005290"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:27.818296" elapsed="0.374648"/>
</kw>
<msg time="2026-04-19T02:20:28.193269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:27.817168" elapsed="0.376161"/>
</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-19T02:20:27.815859" elapsed="0.377566"/>
</kw>
<msg time="2026-04-19T02:20:28.193466" 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-19T02:20:27.814678" elapsed="0.378833"/>
</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-19T02:20:28.196706" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:20:28.197284" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:28.197600" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:28.193806" elapsed="0.003940"/>
</kw>
<msg time="2026-04-19T02:20:28.197900" level="INFO">${output} = 1</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-19T02:20:27.812527" elapsed="0.385399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:28.198410" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:28.198136" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:28.198498" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:28.198651" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:27.810404" elapsed="0.388273"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:28.198724" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:28.198869" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:27.808232" elapsed="0.390661"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:28.199632" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:28.199087" elapsed="0.000620">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:27.807181" elapsed="0.392637">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:30.203407" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:30.202613" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:30.205632" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:30.204987" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:30.207495" 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-19T02:20:30.207720" 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-19T02:20:30.207152" elapsed="0.000626"/>
</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-19T02:20:30.216296" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:30.215510" elapsed="0.000903"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:30.212830" elapsed="0.003665"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:30.218163" 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-19T02:20:30.218419" 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-19T02:20:30.217695" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:30.220057" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:30.219479" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:30.221872" level="INFO">${conn_id} = 269</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:30.221180" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:30.224291" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:30.224369" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:30.223976" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:30.224604" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:30.226039" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:30.545366" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:30.225699" elapsed="0.319917"/>
</kw>
<msg time="2026-04-19T02:20:30.545703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:30.225340" elapsed="0.320456"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:30.223169" elapsed="0.322921"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:30.547558" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:30.570489" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:30.570991" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:30.571377" 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-19T02:20:30.547177" elapsed="0.024413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:30.573873" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:30.576985" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:30.576086" elapsed="0.001070"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:30.577704" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:30.577382" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:30.577300" elapsed="0.000588"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:30.578391" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:20:30.578111" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:30.578021" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:30.578726" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:30.585227" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:20:30.585788" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:30.586183" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:30.580648" elapsed="0.005748"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:30.210891" elapsed="0.375844"/>
</kw>
<msg time="2026-04-19T02:20:30.587066" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:30.209928" elapsed="0.377202"/>
</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-19T02:20:30.209185" elapsed="0.378029"/>
</kw>
<msg time="2026-04-19T02:20:30.587255" 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-19T02:20:30.208215" elapsed="0.379087"/>
</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-19T02:20:30.590602" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T02:20:30.591157" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:30.591454" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:30.587690" elapsed="0.003910"/>
</kw>
<msg time="2026-04-19T02:20:30.591692" level="INFO">${output} = 1</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-19T02:20:30.206210" elapsed="0.385507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:30.592216" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:30.591920" elapsed="0.000366"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:30.592332" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:20:30.592496" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:30.204063" elapsed="0.388458"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:30.592567" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:30.592711" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:30.201762" elapsed="0.390973"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:30.593377" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:30.592956" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:30.200672" elapsed="0.392896">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:32.597162" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:32.596300" elapsed="0.000960"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:32.598826" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:32.598447" elapsed="0.000417"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:32.600006" 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-19T02:20:32.600189" 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-19T02:20:32.599770" elapsed="0.000471"/>
</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-19T02:20:32.605546" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:32.604890" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:32.604813" elapsed="0.000956"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:32.607513" 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-19T02:20:32.607758" 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-19T02:20:32.606819" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:32.609413" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:32.608851" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:32.611277" level="INFO">${conn_id} = 272</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:32.610562" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:32.613625" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:32.613702" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:32.613335" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:32.613964" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:32.615345" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:32.966736" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:32.614993" elapsed="0.351906"/>
</kw>
<msg time="2026-04-19T02:20:32.966994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:32.614634" elapsed="0.352473"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:32.612558" elapsed="0.354844"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:32.968961" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:32.992123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:32.992789" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:32.993225" 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-19T02:20:32.968532" elapsed="0.024916"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:32.995800" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:32.999198" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:32.998134" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:33.000359" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:32.999797" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:32.999666" elapsed="0.000997"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:33.001549" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:20:33.000994" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:33.000882" elapsed="0.001078"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:33.002249" elapsed="0.000093"/>
</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-19T02:20:33.007560" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:33.008134" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:33.008499" 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-19T02:20:33.004010" elapsed="0.004695"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:32.602963" elapsed="0.405965"/>
</kw>
<msg time="2026-04-19T02:20:33.009301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:32.601999" elapsed="0.407363"/>
</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-19T02:20:32.601227" elapsed="0.408220"/>
</kw>
<msg time="2026-04-19T02:20:33.009490" 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-19T02:20:32.600470" elapsed="0.409067"/>
</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-19T02:20:33.012539" 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-19T02:20:33.013016" elapsed="0.000275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:33.013454" 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-19T02:20:33.009828" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T02:20:33.013707" level="INFO">${output} = 1</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-19T02:20:32.599184" elapsed="0.414549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:33.014229" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:33.013915" elapsed="0.000360"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:33.014320" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:33.014479" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:32.597791" elapsed="0.416713"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:33.014559" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:20:33.014722" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:32.595441" elapsed="0.419307"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:33.015429" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:33.014908" elapsed="0.000605">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:32.594393" elapsed="0.421241">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:35.019280" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:35.018457" elapsed="0.000895"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:35.021585" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:35.020945" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:35.023564" 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-19T02:20:35.023793" 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-19T02:20:35.023224" elapsed="0.000628"/>
</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-19T02:20:35.029377" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:35.028892" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:35.028834" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:35.031250" 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-19T02:20:35.031545" 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-19T02:20:35.030510" elapsed="0.001145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:35.033226" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:35.032659" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:35.035059" level="INFO">${conn_id} = 275</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:35.034332" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:35.037545" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:35.037622" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:35.037257" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:35.037858" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:35.039161" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:35.362233" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:35.038786" elapsed="0.323597"/>
</kw>
<msg time="2026-04-19T02:20:35.362466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:35.038429" elapsed="0.324127"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:35.036470" elapsed="0.326374"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:35.364508" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:35.387517" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:35.388079" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:35.388449" 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-19T02:20:35.363977" elapsed="0.024715"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:35.390955" elapsed="0.000996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:35.394353" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:35.393342" elapsed="0.001249"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:35.395721" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:35.394953" elapsed="0.000953"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:35.394826" elapsed="0.001232"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:35.396446" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:20:35.396218" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:35.396168" elapsed="0.000451"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:35.396704" 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-19T02:20:35.401824" 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-19T02:20:35.402400" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:35.402767" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:35.398155" elapsed="0.004827"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:35.027206" elapsed="0.376033"/>
</kw>
<msg time="2026-04-19T02:20:35.403553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:35.026199" elapsed="0.377415"/>
</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-19T02:20:35.025430" elapsed="0.378271"/>
</kw>
<msg time="2026-04-19T02:20:35.403743" 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-19T02:20:35.024385" elapsed="0.379405"/>
</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-19T02:20:35.406859" 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-19T02:20:35.407420" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:35.407725" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:35.404104" elapsed="0.003773"/>
</kw>
<msg time="2026-04-19T02:20:35.407973" level="INFO">${output} = 1</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-19T02:20:35.022159" elapsed="0.385840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:35.408471" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:35.408200" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:35.408561" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:35.408717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:35.019964" elapsed="0.388778"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:35.408790" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:35.408940" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:35.017571" elapsed="0.391394"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:35.409612" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:35.409213" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:35.016479" elapsed="0.393324">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:37.413525" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:37.412726" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:37.415713" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:37.415098" elapsed="0.000677"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:37.417714" 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-19T02:20:37.418125" 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-19T02:20:37.417377" elapsed="0.000831"/>
</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-19T02:20:37.426534" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:37.425855" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:37.425776" elapsed="0.000953"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:37.429165" 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-19T02:20:37.429516" 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-19T02:20:37.428139" elapsed="0.001520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:37.431887" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:37.431007" elapsed="0.001057"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:37.434481" level="INFO">${conn_id} = 278</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:37.433476" elapsed="0.001155"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:37.437975" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:37.438114" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:37.437573" elapsed="0.000577"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:37.438462" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:37.440462" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:37.768961" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:37.439930" elapsed="0.329190"/>
</kw>
<msg time="2026-04-19T02:20:37.769204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:37.439411" elapsed="0.329878"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:37.436482" elapsed="0.333081"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:37.771054" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:37.794217" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:37.794724" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:37.795101" 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-19T02:20:37.770649" elapsed="0.024672"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:37.797580" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:37.800994" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:37.799878" elapsed="0.001390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:37.802150" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:37.801615" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:37.801492" elapsed="0.001025"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:37.803387" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:20:37.802887" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:37.802767" elapsed="0.000987"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:37.803982" elapsed="0.000269"/>
</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-19T02:20:37.809638" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:20:37.810283" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:37.810647" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:37.806137" elapsed="0.004720"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:37.422852" elapsed="0.388264"/>
</kw>
<msg time="2026-04-19T02:20:37.811420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:37.421209" elapsed="0.390270"/>
</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-19T02:20:37.419874" elapsed="0.391691"/>
</kw>
<msg time="2026-04-19T02:20:37.811608" 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-19T02:20:37.418664" elapsed="0.392993"/>
</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-19T02:20:37.814631" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:20:37.815208" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:37.815512" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:37.811951" elapsed="0.003713"/>
</kw>
<msg time="2026-04-19T02:20:37.815756" level="INFO">${output} = 1</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-19T02:20:37.416331" elapsed="0.399451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:37.816237" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:37.815962" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:37.816326" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:37.816522" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:37.414091" elapsed="0.402460"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:37.816603" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:37.816757" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:37.411785" elapsed="0.404997"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:37.817361" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:37.816941" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:37.410672" elapsed="0.406879">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:39.821079" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:39.820320" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:39.823233" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:39.822595" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:39.825165" 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-19T02:20:39.825396" 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-19T02:20:39.824807" elapsed="0.000649"/>
</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-19T02:20:39.833015" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:39.832376" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:39.831962" elapsed="0.001347"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:39.835096" 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-19T02:20:39.835381" 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-19T02:20:39.834587" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:39.836983" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:39.836447" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:39.838791" level="INFO">${conn_id} = 281</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:39.838100" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:39.841207" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:39.841286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:39.840905" 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-19T02:20:39.841540" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:39.842802" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:40.174599" 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 Sun Apr 19 02:19:39 UTC 2026

  System load:  0.21               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:39.842477" elapsed="0.332272"/>
</kw>
<msg time="2026-04-19T02:20:40.174835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:39.842114" elapsed="0.332810"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:39.840144" elapsed="0.335093"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:40.176742" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:40.199685" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:40.200251" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:40.200592" 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-19T02:20:40.176342" elapsed="0.024482"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:40.203166" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:40.206399" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:40.205451" elapsed="0.001096"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:40.207144" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:40.206776" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:40.206696" 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-19T02:20:40.207834" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:20:40.207544" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:40.207474" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:40.208219" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:40.215333" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:40.216147" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:40.216659" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:40.210321" elapsed="0.006633"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:39.829786" elapsed="0.387518"/>
</kw>
<msg time="2026-04-19T02:20:40.217853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:39.828255" elapsed="0.389684"/>
</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-19T02:20:39.827002" elapsed="0.391088"/>
</kw>
<msg time="2026-04-19T02:20:40.218155" 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-19T02:20:39.825834" elapsed="0.392382"/>
</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-19T02:20:40.221291" 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-19T02:20:40.221805" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:40.222132" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:40.218519" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T02:20:40.222393" level="INFO">${output} = 1</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-19T02:20:39.823795" elapsed="0.398624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:40.222867" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:40.222610" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:40.222959" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:20:40.223166" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:39.821644" elapsed="0.401551"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:40.223244" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:20:40.223394" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:39.819481" elapsed="0.403939"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:40.223981" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:40.223580" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:39.818406" elapsed="0.405789">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:42.227881" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:42.227096" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:42.230275" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:42.229623" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:42.231885" 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-19T02:20:42.232053" 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-19T02:20:42.231654" elapsed="0.000441"/>
</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-19T02:20:42.237890" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:42.237213" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:42.236801" elapsed="0.001312"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:42.239930" 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-19T02:20:42.240205" 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-19T02:20:42.239467" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:42.241850" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:42.241283" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:42.243773" level="INFO">${conn_id} = 284</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:42.243052" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:42.246254" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:42.246336" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:42.245936" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:42.246577" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:42.247933" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:42.836627" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:42.247595" elapsed="0.589275"/>
</kw>
<msg time="2026-04-19T02:20:42.837001" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:42.247220" elapsed="0.589957"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:42.245155" elapsed="0.592470"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:42.840232" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:42.862714" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:42.862944" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:42.863130" 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-19T02:20:42.839465" elapsed="0.023761"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:42.864227" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:42.865674" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:42.865226" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:42.866203" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:42.865944" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:42.865885" elapsed="0.000453"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:42.866687" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:20:42.866485" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:42.866436" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:42.866927" 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-19T02:20:42.872440" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:20:42.872991" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:42.873366" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:42.868296" elapsed="0.005281"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:42.234871" elapsed="0.638929"/>
</kw>
<msg time="2026-04-19T02:20:42.874123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:42.233849" elapsed="0.640333"/>
</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-19T02:20:42.233085" elapsed="0.641178"/>
</kw>
<msg time="2026-04-19T02:20:42.874304" 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-19T02:20:42.232322" elapsed="0.642028"/>
</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-19T02:20:42.877550" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:20:42.878044" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:42.878342" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:42.874708" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T02:20:42.878582" level="INFO">${output} = 1</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-19T02:20:42.230910" elapsed="0.647698"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:42.879049" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:42.878788" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:42.879164" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:42.879317" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:42.228632" elapsed="0.650710"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:42.879389" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:42.879531" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:42.226186" elapsed="0.653370"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:42.880138" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:42.879712" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:42.225013" elapsed="0.655311">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:44.883874" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:44.883092" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:44.886020" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:44.885427" elapsed="0.000680"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:44.887889" 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-19T02:20:44.888194" 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-19T02:20:44.887540" elapsed="0.000718"/>
</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-19T02:20:44.895155" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:44.894639" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:44.892520" elapsed="0.002780"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:44.896806" 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-19T02:20:44.897070" 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-19T02:20:44.896336" elapsed="0.000837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:44.898693" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:44.898137" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:44.900607" level="INFO">${conn_id} = 287</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:44.899783" elapsed="0.000921"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:44.903038" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:44.903119" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:44.902723" 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-19T02:20:44.903362" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:44.904866" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:45.220996" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:44.904537" elapsed="0.316642"/>
</kw>
<msg time="2026-04-19T02:20:45.221266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:44.904016" elapsed="0.317340"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:44.901899" elapsed="0.319743"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:45.223162" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:45.246165" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:45.246760" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:45.247132" 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-19T02:20:45.222751" elapsed="0.024592"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:45.249675" elapsed="0.001039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:45.253221" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:45.252004" elapsed="0.001456"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:45.254404" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:45.253823" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:45.253700" elapsed="0.000991"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:45.255481" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:20:45.255008" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:45.254903" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:45.256010" elapsed="0.000110"/>
</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-19T02:20:45.261778" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T02:20:45.262359" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:45.262730" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:45.258324" elapsed="0.004716"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:44.891107" elapsed="0.372165"/>
</kw>
<msg time="2026-04-19T02:20:45.263588" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:44.890376" elapsed="0.373276"/>
</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-19T02:20:44.889773" elapsed="0.373962"/>
</kw>
<msg time="2026-04-19T02:20:45.263775" 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-19T02:20:44.888613" elapsed="0.375207"/>
</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-19T02:20:45.266914" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:20:45.267415" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:45.267713" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:45.264127" elapsed="0.003733"/>
</kw>
<msg time="2026-04-19T02:20:45.268041" level="INFO">${output} = 1</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-19T02:20:44.886584" elapsed="0.381485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:45.268546" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:45.268285" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:45.268634" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:20:45.268793" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:44.884471" elapsed="0.384347"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:45.268865" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:45.269008" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:44.882264" elapsed="0.386884"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:45.269715" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:45.269309" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:44.881200" elapsed="0.388701">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:47.273460" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:47.272669" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:47.275768" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:47.275154" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:47.277636" 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-19T02:20:47.277863" 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-19T02:20:47.277289" elapsed="0.000634"/>
</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-19T02:20:47.284218" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:47.283732" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:47.283675" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:47.286021" 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-19T02:20:47.286282" 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-19T02:20:47.285329" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:47.287891" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:47.287350" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:47.289727" level="INFO">${conn_id} = 290</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:47.288986" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:47.292140" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:47.292219" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:47.291829" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:47.292456" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:47.293957" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:47.610528" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:47.293631" elapsed="0.317114"/>
</kw>
<msg time="2026-04-19T02:20:47.610825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:47.293023" elapsed="0.317891"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:47.291066" elapsed="0.320135"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:47.612731" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:47.635312" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:47.635841" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:47.636232" 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-19T02:20:47.612345" elapsed="0.024101"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:47.638722" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:47.642028" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:47.640898" elapsed="0.001497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:47.643359" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:47.642751" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:47.642623" elapsed="0.001045"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:47.644501" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:20:47.643992" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:47.643883" elapsed="0.000977"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:47.645097" elapsed="0.000094"/>
</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-19T02:20:47.650926" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:20:47.651492" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:47.651848" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:47.647425" elapsed="0.004652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:47.282281" elapsed="0.370022"/>
</kw>
<msg time="2026-04-19T02:20:47.652619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:47.280687" elapsed="0.371991"/>
</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-19T02:20:47.279470" elapsed="0.373291"/>
</kw>
<msg time="2026-04-19T02:20:47.652801" 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-19T02:20:47.278306" elapsed="0.374542"/>
</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-19T02:20:47.655931" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T02:20:47.656472" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:47.656774" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:47.653166" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T02:20:47.657012" level="INFO">${output} = 1</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-19T02:20:47.276341" elapsed="0.380722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:47.657491" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:47.657244" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:47.657591" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:47.657746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:47.274206" elapsed="0.383565"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:47.657818" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:47.657963" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:47.271824" elapsed="0.386164"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:47.658670" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:47.658272" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:47.270761" elapsed="0.388095">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:49.662612" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:49.661786" elapsed="0.000965"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:49.664366" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:49.663942" elapsed="0.000462"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:49.665678" 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-19T02:20:49.665829" 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-19T02:20:49.665447" elapsed="0.000421"/>
</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-19T02:20:49.671490" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:49.670830" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:49.670751" elapsed="0.000887"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:49.673347" 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-19T02:20:49.673602" 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-19T02:20:49.672637" elapsed="0.001212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:49.675626" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:49.675024" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:49.677437" level="INFO">${conn_id} = 293</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:49.676720" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:49.679947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:49.680026" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:49.679664" 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-19T02:20:49.680278" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:49.681553" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:50.009666" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:49.681217" elapsed="0.328605"/>
</kw>
<msg time="2026-04-19T02:20:50.009907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:49.680838" elapsed="0.329159"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:49.678761" elapsed="0.331544"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:50.011810" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:50.034727" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:50.035313" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:50.035647" 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-19T02:20:50.011420" elapsed="0.024442"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:50.038118" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:50.041349" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:50.040371" elapsed="0.001210"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:50.042467" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:50.041933" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:50.041808" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:50.043782" elapsed="0.000200"/>
</return>
<status status="PASS" start="2026-04-19T02:20:50.043312" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:50.043194" elapsed="0.001041"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:50.044314" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:50.049106" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:20:50.049647" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:50.050004" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:50.045645" elapsed="0.004587"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:49.668705" elapsed="0.381756"/>
</kw>
<msg time="2026-04-19T02:20:50.050774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:49.667699" elapsed="0.383141"/>
</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-19T02:20:49.666890" elapsed="0.384036"/>
</kw>
<msg time="2026-04-19T02:20:50.050969" 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-19T02:20:49.666134" elapsed="0.384882"/>
</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-19T02:20:50.054057" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:20:50.054564" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:50.054885" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:50.051326" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T02:20:50.055162" level="INFO">${output} = 1</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-19T02:20:49.664715" elapsed="0.390479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:50.055631" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:50.055374" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:50.055720" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:50.055873" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:49.663272" elapsed="0.392627"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:50.055945" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:50.056198" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:49.660873" elapsed="0.395350"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:50.056790" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:50.056380" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:49.659742" elapsed="0.397234">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:52.060672" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:52.059828" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:52.062981" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:52.062373" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:52.064755" 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-19T02:20:52.064859" 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-19T02:20:52.064561" elapsed="0.000325"/>
</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-19T02:20:52.068685" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:52.068223" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:52.068168" elapsed="0.000655"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:52.070496" 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-19T02:20:52.070738" 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-19T02:20:52.069803" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:52.072396" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:52.071801" elapsed="0.000703"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:52.074178" level="INFO">${conn_id} = 296</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:52.073474" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:52.076751" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:52.076830" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:52.076459" 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-19T02:20:52.077087" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:52.078367" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:52.404927" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:52.078022" elapsed="0.327081"/>
</kw>
<msg time="2026-04-19T02:20:52.405188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:52.077656" elapsed="0.327626"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:52.075514" elapsed="0.330052"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:52.407063" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:52.429544" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:52.429846" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:52.430020" 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-19T02:20:52.406642" elapsed="0.023520"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:52.431379" elapsed="0.000525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:52.433250" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:52.432660" elapsed="0.000714"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:52.434059" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:52.433578" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:52.433503" elapsed="0.000731"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:52.434660" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:20:52.434415" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:52.434356" elapsed="0.000507"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:52.434961" 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-19T02:20:52.440119" elapsed="0.000458"/>
</kw>
<kw name="Open 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-19T02:20:52.440854" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:52.441256" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:52.436616" elapsed="0.004852"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:52.066824" elapsed="0.374871"/>
</kw>
<msg time="2026-04-19T02:20:52.442007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:52.066129" elapsed="0.375955"/>
</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-19T02:20:52.065579" elapsed="0.376591"/>
</kw>
<msg time="2026-04-19T02:20:52.442212" 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-19T02:20:52.065061" elapsed="0.377198"/>
</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-19T02:20:52.445433" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:20:52.445915" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:52.446232" 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-19T02:20:52.442606" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T02:20:52.446474" level="INFO">${output} = 1</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-19T02:20:52.063564" elapsed="0.382935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:52.446929" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:52.446680" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:52.447016" elapsed="0.000105"/>
</return>
<msg time="2026-04-19T02:20:52.447251" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:52.061393" elapsed="0.385884"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:52.447324" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:52.447469" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:52.058878" elapsed="0.388616"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:52.448069" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:52.447651" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:52.057785" elapsed="0.390505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:54.451812" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:54.451071" elapsed="0.000810"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:54.453889" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:54.453295" elapsed="0.000651"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:54.455701" 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-19T02:20:54.456096" 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-19T02:20:54.455374" elapsed="0.000785"/>
</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-19T02:20:54.463981" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:54.463290" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:54.462844" elapsed="0.001395"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:54.466233" 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-19T02:20:54.466486" 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-19T02:20:54.465750" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:54.468181" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:54.467593" elapsed="0.000704"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:54.470095" level="INFO">${conn_id} = 299</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:54.469365" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:54.472512" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:54.472590" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:54.472210" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:54.472828" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:54.474292" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:54.793149" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:54.473946" elapsed="0.319360"/>
</kw>
<msg time="2026-04-19T02:20:54.793419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:54.473575" elapsed="0.319939"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:54.471397" elapsed="0.322410"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:54.795337" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:54.818187" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:54.818815" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:54.819226" 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-19T02:20:54.794908" elapsed="0.024551"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:54.821790" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:54.825007" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:54.824068" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:54.826142" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:54.825625" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:54.825507" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:54.827350" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T02:20:54.826772" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:54.826667" elapsed="0.001056"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:54.827912" elapsed="0.000081"/>
</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-19T02:20:54.834229" elapsed="0.000423"/>
</kw>
<kw name="Open 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-19T02:20:54.835021" elapsed="0.000292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:54.835512" 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-19T02:20:54.830331" elapsed="0.005406"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:54.460473" elapsed="0.375493"/>
</kw>
<msg time="2026-04-19T02:20:54.836306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:54.458907" elapsed="0.377473"/>
</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-19T02:20:54.457695" elapsed="0.378773"/>
</kw>
<msg time="2026-04-19T02:20:54.836510" 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-19T02:20:54.456514" elapsed="0.380044"/>
</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-19T02:20:54.840108" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:20:54.840709" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:54.841064" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:54.836880" elapsed="0.004346"/>
</kw>
<msg time="2026-04-19T02:20:54.841326" level="INFO">${output} = 1</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-19T02:20:54.454447" elapsed="0.386927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:54.841858" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:54.841594" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:54.841950" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:20:54.842142" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:54.452360" elapsed="0.389808"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:54.842216" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:20:54.842362" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:54.450243" elapsed="0.392144"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:54.842957" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:54.842549" elapsed="0.000573">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:54.449132" elapsed="0.394105">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:56.847550" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:56.846800" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:56.849536" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:56.848959" elapsed="0.000632"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:56.851192" 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-19T02:20:56.851364" 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-19T02:20:56.850904" elapsed="0.000501"/>
</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-19T02:20:56.857622" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:56.856874" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:56.856403" elapsed="0.001531"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:56.859737" 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-19T02:20:56.859988" 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-19T02:20:56.859259" elapsed="0.000846"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:56.861665" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:56.861104" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:56.863537" level="INFO">${conn_id} = 302</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:56.862803" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:56.866081" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:56.866161" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:56.865767" 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-19T02:20:56.866431" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:56.867787" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:57.186070" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:56.867411" elapsed="0.318809"/>
</kw>
<msg time="2026-04-19T02:20:57.186307" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:56.867044" elapsed="0.319350"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:56.864942" elapsed="0.321767"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:57.188242" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:57.211208" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:57.211710" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:57.212126" 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-19T02:20:57.187812" elapsed="0.024529"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:57.214815" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:57.218008" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:57.216989" elapsed="0.001387"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:57.219321" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:57.218781" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:57.218647" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:57.220428" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:20:57.219942" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:57.219835" elapsed="0.000951"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:57.220963" elapsed="0.000142"/>
</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-19T02:20:57.227410" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:20:57.228045" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:57.228409" 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-19T02:20:57.224003" elapsed="0.004613"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:56.854377" elapsed="0.374463"/>
</kw>
<msg time="2026-04-19T02:20:57.229238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:56.853306" elapsed="0.375990"/>
</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-19T02:20:56.852460" elapsed="0.376919"/>
</kw>
<msg time="2026-04-19T02:20:57.229420" 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-19T02:20:56.851658" elapsed="0.377808"/>
</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-19T02:20:57.232538" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:57.233023" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:57.233352" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:57.229760" elapsed="0.003741"/>
</kw>
<msg time="2026-04-19T02:20:57.233592" level="INFO">${output} = 1</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-19T02:20:56.850079" elapsed="0.383539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:57.234116" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:57.233795" elapsed="0.000369"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:57.234206" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:20:57.234359" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:56.848075" elapsed="0.386309"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:57.234431" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:57.234576" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:56.845670" elapsed="0.388965"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:57.235231" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:57.234809" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:56.844256" elapsed="0.391158">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:20:59.239061" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:20:59.238199" elapsed="0.000938"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:20:59.241294" level="INFO">${member_ip} = 10.30.171.206</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-19T02:20:59.240655" elapsed="0.000765"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:59.243773" 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-19T02:20:59.244007" 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-19T02:20:59.243371" elapsed="0.000726"/>
</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-19T02:20:59.252338" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:20:59.251598" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:59.248963" elapsed="0.003569"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:59.254132" 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-19T02:20:59.254372" 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-19T02:20:59.253670" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:59.255980" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:59.255429" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:20:59.257873" level="INFO">${conn_id} = 305</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:20:59.257183" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:20:59.260281" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:20:59.260358" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:20:59.259964" 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-19T02:20:59.260595" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:20:59.262058" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:20:59.595231" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:20:59.261722" elapsed="0.333737"/>
</kw>
<msg time="2026-04-19T02:20:59.595547" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:59.261360" elapsed="0.334280"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:20:59.259174" elapsed="0.336777"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:20:59.597471" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:20:59.620545" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:20:59.621087" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:20:59.621432" 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-19T02:20:59.597078" elapsed="0.024589"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:59.623835" elapsed="0.001100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:59.627751" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:59.626676" elapsed="0.001328"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:59.628884" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:20:59.628385" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:59.628262" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:20:59.630228" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:20:59.629537" elapsed="0.000921"/>
</branch>
<status status="PASS" start="2026-04-19T02:20:59.629429" elapsed="0.001158"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:20:59.630763" elapsed="0.000084"/>
</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-19T02:20:59.636752" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:20:59.637319" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:59.637675" 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-19T02:20:59.633330" elapsed="0.004553"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:20:59.247137" elapsed="0.391028"/>
</kw>
<msg time="2026-04-19T02:20:59.638466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:20:59.246167" elapsed="0.392355"/>
</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-19T02:20:59.245328" elapsed="0.393276"/>
</kw>
<msg time="2026-04-19T02:20:59.638646" 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-19T02:20:59.244456" elapsed="0.394235"/>
</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-19T02:20:59.641718" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T02:20:59.642301" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:20:59.642599" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:20:59.639054" elapsed="0.003695"/>
</kw>
<msg time="2026-04-19T02:20:59.642840" level="INFO">${output} = 1</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-19T02:20:59.241902" elapsed="0.400963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:20:59.643317" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:20:59.643065" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:20:59.643405" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:20:59.643557" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:20:59.239665" elapsed="0.403917"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:20:59.643629" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:20:59.643773" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:20:59.237364" elapsed="0.406434"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:20:59.644386" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:20:59.643977" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:20:59.236294" elapsed="0.408274">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:01.648150" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:01.647350" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:01.650212" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:01.649732" elapsed="0.000520"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:01.651407" 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-19T02:21:01.651557" 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-19T02:21:01.651183" elapsed="0.000412"/>
</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-19T02:21:01.657085" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:01.656373" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:01.656296" elapsed="0.000994"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:01.659183" 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-19T02:21:01.659439" 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-19T02:21:01.658462" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:01.661133" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:01.660540" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:01.662948" level="INFO">${conn_id} = 308</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:01.662236" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:01.665533" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:01.665613" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:01.665245" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:01.665848" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:01.667234" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:02.000310" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:20:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:01.666864" elapsed="0.333557"/>
</kw>
<msg time="2026-04-19T02:21:02.000498" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:01.666496" elapsed="0.334085"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:01.664430" elapsed="0.336402"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:02.002331" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:02.025322" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:02.025816" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:02.026200" 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-19T02:21:02.001926" elapsed="0.024487"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:02.028643" elapsed="0.000934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:02.031208" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:02.030528" elapsed="0.000832"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:02.031929" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:02.031594" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:02.031511" elapsed="0.000703"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:02.032722" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:21:02.032428" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:02.032357" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:02.033088" elapsed="0.000079"/>
</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-19T02:21:02.039455" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:21:02.040018" elapsed="0.000307"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:02.040523" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:02.035100" elapsed="0.005632"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:01.654404" elapsed="0.386549"/>
</kw>
<msg time="2026-04-19T02:21:02.041285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:01.653409" elapsed="0.387935"/>
</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-19T02:21:01.652589" elapsed="0.388837"/>
</kw>
<msg time="2026-04-19T02:21:02.041467" 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-19T02:21:01.651820" elapsed="0.389693"/>
</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-19T02:21:02.044510" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:21:02.044993" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:02.045329" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:02.041807" elapsed="0.003669"/>
</kw>
<msg time="2026-04-19T02:21:02.045626" level="INFO">${output} = 1</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-19T02:21:01.650564" elapsed="0.395088"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:02.046102" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:02.045832" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:02.046190" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:02.046346" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:01.648696" elapsed="0.397675"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:02.046420" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:21:02.046567" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:01.646504" elapsed="0.400088"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:02.047179" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:02.046753" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:01.645439" elapsed="0.401930">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:04.051006" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:04.050235" elapsed="0.000877"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:04.053281" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:04.052613" elapsed="0.000732"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:04.055254" 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-19T02:21:04.055510" 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-19T02:21:04.054877" elapsed="0.000703"/>
</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-19T02:21:04.063886" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:04.063220" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:04.063142" elapsed="0.000965"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:04.066526" 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-19T02:21:04.066882" 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-19T02:21:04.065479" elapsed="0.001574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:04.068633" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:04.068063" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:04.070584" level="INFO">${conn_id} = 311</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:04.069744" elapsed="0.000939"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:04.073140" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:04.073220" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:04.072823" 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-19T02:21:04.073456" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:04.074878" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:04.385998" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:04.074551" elapsed="0.311685"/>
</kw>
<msg time="2026-04-19T02:21:04.386316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:04.074013" elapsed="0.312411"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:04.071895" elapsed="0.314794"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:04.388158" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:04.410692" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:04.411243" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:04.411578" 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-19T02:21:04.387750" elapsed="0.024039"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:04.414054" elapsed="0.000993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:04.416487" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:04.415842" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:04.417238" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:04.416858" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:04.416779" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:04.417903" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:21:04.417622" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:04.417556" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:04.418264" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:04.424835" elapsed="0.000641"/>
</kw>
<kw name="Open 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-19T02:21:04.425771" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:04.426284" elapsed="0.000175"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:04.420149" elapsed="0.006463"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:04.060161" elapsed="0.366759"/>
</kw>
<msg time="2026-04-19T02:21:04.427329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:04.058554" elapsed="0.368834"/>
</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-19T02:21:04.057262" elapsed="0.370209"/>
</kw>
<msg time="2026-04-19T02:21:04.427513" 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-19T02:21:04.055950" elapsed="0.371609"/>
</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-19T02:21:04.430556" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:21:04.431047" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:04.431347" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:04.427847" elapsed="0.003649"/>
</kw>
<msg time="2026-04-19T02:21:04.431588" level="INFO">${output} = 1</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-19T02:21:04.053851" elapsed="0.377762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:04.432065" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:04.431791" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:04.432158" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:04.432312" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:04.051612" elapsed="0.380726"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:04.432436" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:21:04.432586" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:04.049334" elapsed="0.383277"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:04.433263" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:04.432818" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:04.048184" elapsed="0.385264">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:06.436956" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:06.436218" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:06.439104" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:06.438472" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:06.440954" 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-19T02:21:06.441217" 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-19T02:21:06.440610" elapsed="0.000667"/>
</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-19T02:21:06.446144" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:06.445658" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:06.445601" elapsed="0.000687"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:06.447976" 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-19T02:21:06.448241" 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-19T02:21:06.447276" elapsed="0.001065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:06.449857" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:06.449319" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:06.451906" level="INFO">${conn_id} = 314</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:06.450967" elapsed="0.001036"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:06.454401" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:06.454480" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:06.453979" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:06.454713" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:06.455977" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:06.819562" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:06.455653" elapsed="0.364039"/>
</kw>
<msg time="2026-04-19T02:21:06.819764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:06.455280" elapsed="0.364562"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:06.453222" elapsed="0.366892"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:06.821525" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:06.844665" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:06.844888" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:06.845058" 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-19T02:21:06.821165" elapsed="0.023997"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:06.846145" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:06.847563" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:06.847133" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:06.848108" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:06.847849" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:06.847791" elapsed="0.000451"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:06.848591" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T02:21:06.848385" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:06.848337" elapsed="0.000410"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:06.848824" 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-19T02:21:06.853559" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:21:06.854261" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:06.854620" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:06.850156" elapsed="0.004672"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:06.444288" elapsed="0.410774"/>
</kw>
<msg time="2026-04-19T02:21:06.855366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:06.443575" elapsed="0.411852"/>
</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-19T02:21:06.442924" elapsed="0.412586"/>
</kw>
<msg time="2026-04-19T02:21:06.855550" 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-19T02:21:06.441629" elapsed="0.413967"/>
</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-19T02:21:06.858862" 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-19T02:21:06.859350" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:06.859669" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:06.855899" elapsed="0.003925"/>
</kw>
<msg time="2026-04-19T02:21:06.859916" level="INFO">${output} = 1</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-19T02:21:06.439673" elapsed="0.420268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:06.860399" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:06.860149" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:06.860485" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:06.860638" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:06.437520" elapsed="0.423143"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:06.860710" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:06.860856" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:06.435348" elapsed="0.425532"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:06.861505" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:06.861089" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:06.434304" elapsed="0.427396">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:08.865433" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:08.864558" elapsed="0.000955"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:08.868379" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:08.867469" elapsed="0.000997"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:08.870019" 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-19T02:21:08.870351" 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-19T02:21:08.869785" elapsed="0.000604"/>
</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-19T02:21:08.875923" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:08.875379" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:08.874963" elapsed="0.001131"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:08.877660" 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-19T02:21:08.877904" 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-19T02:21:08.877188" elapsed="0.000826"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:08.879781" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:08.879155" elapsed="0.000741"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:08.881681" level="INFO">${conn_id} = 317</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:08.880907" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:08.884221" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:08.884300" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:08.883908" 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-19T02:21:08.884574" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:08.885920" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:09.217829" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:08.885580" elapsed="0.332426"/>
</kw>
<msg time="2026-04-19T02:21:09.218134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:08.885214" elapsed="0.333034"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:08.883123" elapsed="0.335495"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:09.220722" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:09.243507" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:09.243818" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:09.244026" 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-19T02:21:09.220201" elapsed="0.023994"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:09.245799" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:09.247916" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:09.247154" elapsed="0.000939"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:09.248724" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:09.248318" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:09.248240" elapsed="0.000694"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:09.249502" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:21:09.249196" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:09.249112" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:09.249833" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:09.255488" 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-19T02:21:09.256043" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:09.256403" 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-19T02:21:09.251687" elapsed="0.004923"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:08.873130" elapsed="0.383708"/>
</kw>
<msg time="2026-04-19T02:21:09.257276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:08.872129" elapsed="0.385207"/>
</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-19T02:21:08.871373" elapsed="0.386046"/>
</kw>
<msg time="2026-04-19T02:21:09.257462" 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-19T02:21:08.870620" elapsed="0.386888"/>
</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-19T02:21:09.260471" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:09.260969" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:09.261359" 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-19T02:21:09.257795" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T02:21:09.261597" level="INFO">${output} = 1</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-19T02:21:08.869210" elapsed="0.392413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:09.262082" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:09.261801" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:09.262171" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:09.262324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:08.866285" elapsed="0.396064"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:09.262397" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:21:09.262540" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:08.863665" elapsed="0.398899"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:09.263129" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:09.262721" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:08.862549" elapsed="0.400763">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:11.267217" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:11.266432" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:11.269385" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:11.268723" elapsed="0.000723"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:11.270922" 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-19T02:21:11.271195" 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-19T02:21:11.270704" elapsed="0.000531"/>
</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-19T02:21:11.277130" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:11.276474" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:11.276076" elapsed="0.001247"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:11.279381" 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-19T02:21:11.279625" 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-19T02:21:11.278885" elapsed="0.000845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:11.281263" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:11.280704" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:11.283154" level="INFO">${conn_id} = 320</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:11.282381" elapsed="0.000889"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:11.285605" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:11.285684" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:11.285324" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:11.285919" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:11.287647" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:11.609936" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:11.287128" elapsed="0.323017"/>
</kw>
<msg time="2026-04-19T02:21:11.610250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:11.286511" elapsed="0.323851"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:11.284536" elapsed="0.326130"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:11.612281" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:11.635322" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:11.635832" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:11.636228" 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-19T02:21:11.611811" elapsed="0.024636"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:11.638743" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:11.640981" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:11.640359" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:11.641718" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:11.641383" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:11.641299" elapsed="0.000607"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:11.642429" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:21:11.642140" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:11.642059" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:11.642756" elapsed="0.000051"/>
</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-19T02:21:11.649598" 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-19T02:21:11.650422" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:11.650792" 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-19T02:21:11.644751" elapsed="0.006249"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:11.274175" elapsed="0.377069"/>
</kw>
<msg time="2026-04-19T02:21:11.651557" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:11.273190" elapsed="0.378423"/>
</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-19T02:21:11.272202" elapsed="0.379497"/>
</kw>
<msg time="2026-04-19T02:21:11.651742" 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-19T02:21:11.271464" elapsed="0.380325"/>
</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-19T02:21:11.654850" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:21:11.655346" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:11.655637" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:11.652187" elapsed="0.003596"/>
</kw>
<msg time="2026-04-19T02:21:11.655880" level="INFO">${output} = 1</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-19T02:21:11.269923" elapsed="0.385982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:11.656387" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:11.656137" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:11.656473" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:11.656625" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:11.267758" elapsed="0.388892"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:11.656697" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:11.656840" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:11.265357" elapsed="0.391508"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:11.657444" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:11.657021" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:11.264185" elapsed="0.393447">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:13.661090" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:13.660322" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:13.663228" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:13.662563" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:13.665151" 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-19T02:21:13.665381" 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-19T02:21:13.664790" elapsed="0.000651"/>
</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-19T02:21:13.672779" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:13.672287" elapsed="0.000634"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:13.670328" elapsed="0.002659"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:13.674430" 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-19T02:21:13.674668" 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-19T02:21:13.673966" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:13.676308" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:13.675751" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:13.678175" level="INFO">${conn_id} = 323</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:13.677399" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:13.680522" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:13.680598" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:13.680240" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:13.680833" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:13.682226" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:13.998432" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:13.681763" elapsed="0.316803"/>
</kw>
<msg time="2026-04-19T02:21:13.998646" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:13.681401" elapsed="0.317328"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:13.679463" elapsed="0.319536"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:14.000525" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:14.023894" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:14.024460" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:14.024816" 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-19T02:21:14.000132" elapsed="0.024947"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:14.027464" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:14.030729" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:14.029706" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:14.032123" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:14.031559" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:14.031365" elapsed="0.001067"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:14.033080" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T02:21:14.032782" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:14.032656" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:14.033337" 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-19T02:21:14.038591" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:14.039168" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:14.039550" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:14.034671" 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-19T02:21:13.668980" elapsed="0.371003"/>
</kw>
<msg time="2026-04-19T02:21:14.040367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:13.668262" elapsed="0.372167"/>
</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-19T02:21:13.666960" elapsed="0.373552"/>
</kw>
<msg time="2026-04-19T02:21:14.040554" 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-19T02:21:13.665789" elapsed="0.374812"/>
</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-19T02:21:14.043686" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:21:14.044176" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:14.044475" 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-19T02:21:14.040893" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T02:21:14.044713" level="INFO">${output} = 1</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-19T02:21:13.663842" elapsed="0.380895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:14.045184" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:14.044920" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:14.045271" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:14.045421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:13.661617" elapsed="0.383828"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:14.045492" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:21:14.045633" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:13.659484" elapsed="0.386175"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:14.046219" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:14.045813" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:13.658424" elapsed="0.387979">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:16.049973" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:16.049240" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:16.052107" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:16.051473" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:16.053964" 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-19T02:21:16.054227" 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-19T02:21:16.053636" elapsed="0.000650"/>
</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-19T02:21:16.059827" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:16.059358" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:16.059301" elapsed="0.000666"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:16.061661" 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-19T02:21:16.061907" 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-19T02:21:16.060972" elapsed="0.001036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:16.063564" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:16.063000" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:16.065454" level="INFO">${conn_id} = 326</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:16.064733" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:16.067899" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:16.067977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:16.067618" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:16.068229" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:16.069510" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:16.383281" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:16.069187" elapsed="0.314181"/>
</kw>
<msg time="2026-04-19T02:21:16.383428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:16.068809" elapsed="0.314689"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:16.066763" elapsed="0.316955"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:16.385081" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:16.407960" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:16.408490" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:16.408893" 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-19T02:21:16.384742" elapsed="0.024410"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:16.411309" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:16.414068" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:16.413456" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:16.414713" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:16.414419" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:16.414346" elapsed="0.000545"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:16.415388" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T02:21:16.415111" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:16.415020" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:16.415713" elapsed="0.000051"/>
</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-19T02:21:16.422235" elapsed="0.000472"/>
</kw>
<kw name="Open 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-19T02:21:16.423006" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:16.423523" 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-19T02:21:16.417624" elapsed="0.006187"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:16.057956" elapsed="0.366189"/>
</kw>
<msg time="2026-04-19T02:21:16.424571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:16.057105" elapsed="0.367574"/>
</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-19T02:21:16.055813" elapsed="0.368984"/>
</kw>
<msg time="2026-04-19T02:21:16.424853" 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-19T02:21:16.054634" elapsed="0.370283"/>
</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-19T02:21:16.428251" 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-19T02:21:16.428740" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:16.429075" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:16.425582" elapsed="0.003645"/>
</kw>
<msg time="2026-04-19T02:21:16.429318" level="INFO">${output} = 1</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-19T02:21:16.052680" elapsed="0.376664"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:16.429769" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:16.429520" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:16.429857" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:16.430008" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:16.050529" elapsed="0.379520"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:16.430097" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:16.430314" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:16.048381" elapsed="0.381958"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:16.430904" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:16.430510" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:16.047309" elapsed="0.383798">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:18.434980" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:18.434186" elapsed="0.000921"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:18.437568" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:18.436791" elapsed="0.000841"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:18.439274" 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-19T02:21:18.439445" 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-19T02:21:18.438986" elapsed="0.000499"/>
</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-19T02:21:18.445404" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:18.444684" elapsed="0.000858"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:18.444606" elapsed="0.001021"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:18.447777" 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-19T02:21:18.448061" 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-19T02:21:18.447012" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:18.449812" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:18.449191" elapsed="0.000735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:18.451732" level="INFO">${conn_id} = 329</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:18.450958" elapsed="0.000872"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:18.454345" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:18.454443" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:18.454053" 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-19T02:21:18.454715" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:18.456305" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:18.778943" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:18.455799" elapsed="0.323315"/>
</kw>
<msg time="2026-04-19T02:21:18.779199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:18.455380" elapsed="0.323910"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:18.453176" elapsed="0.326460"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:18.781144" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:18.804213" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:18.804795" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:18.805185" 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-19T02:21:18.780732" elapsed="0.024665"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:18.807663" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:18.810834" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:18.809811" elapsed="0.001286"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:18.811948" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:18.811449" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:18.811326" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:18.813082" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:21:18.812592" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:18.812484" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:18.813610" elapsed="0.000080"/>
</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-19T02:21:18.819123" 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-19T02:21:18.819730" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:18.820113" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:18.815524" elapsed="0.004806"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:18.442538" elapsed="0.378020"/>
</kw>
<msg time="2026-04-19T02:21:18.820868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:18.441447" elapsed="0.379480"/>
</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-19T02:21:18.440594" elapsed="0.380419"/>
</kw>
<msg time="2026-04-19T02:21:18.821072" 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-19T02:21:18.439713" elapsed="0.381407"/>
</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-19T02:21:18.824237" 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-19T02:21:18.824763" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:18.825096" 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-19T02:21:18.821417" elapsed="0.003833"/>
</kw>
<msg time="2026-04-19T02:21:18.825427" level="INFO">${output} = 1</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-19T02:21:18.438302" elapsed="0.387153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:18.825906" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:18.825640" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:18.825997" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:21:18.826171" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:18.435631" elapsed="0.390566"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:18.826247" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:21:18.826397" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:18.433200" elapsed="0.393222"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:18.826985" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:18.826583" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:18.431940" elapsed="0.395251">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:20.830681" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:20.829904" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:20.832893" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:20.832274" elapsed="0.000678"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:20.834747" 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-19T02:21:20.835014" 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-19T02:21:20.834414" elapsed="0.000753"/>
</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-19T02:21:20.840568" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:20.839919" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:20.839842" elapsed="0.000918"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:20.843289" 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-19T02:21:20.843625" 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-19T02:21:20.842181" elapsed="0.001545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:20.845284" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:20.844717" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:20.847191" level="INFO">${conn_id} = 332</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:20.846379" elapsed="0.000912"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:20.849574" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:20.849652" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:20.849288" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:20.849891" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:20.851403" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:21.167842" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:20.850840" elapsed="0.317272"/>
</kw>
<msg time="2026-04-19T02:21:21.168199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:20.850471" elapsed="0.317815"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:20.848500" elapsed="0.320067"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:21.170075" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:21.192879" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:21.193500" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:21.193904" 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-19T02:21:21.169663" elapsed="0.024498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:21.196643" elapsed="0.001013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:21.200285" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:21.199120" elapsed="0.001398"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:21.201543" elapsed="0.000104"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:21.200974" elapsed="0.000805"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:21.200803" elapsed="0.001148"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:21.202958" elapsed="0.000289"/>
</return>
<status status="PASS" start="2026-04-19T02:21:21.202404" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:21.202295" elapsed="0.001203"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:21.203662" elapsed="0.000055"/>
</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-19T02:21:21.208647" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:21:21.209271" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:21.209636" 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-19T02:21:21.205190" elapsed="0.004654"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:20.837979" elapsed="0.372103"/>
</kw>
<msg time="2026-04-19T02:21:21.210389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:20.837020" elapsed="0.373428"/>
</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-19T02:21:20.836275" elapsed="0.374256"/>
</kw>
<msg time="2026-04-19T02:21:21.210572" 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-19T02:21:20.835531" elapsed="0.375086"/>
</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-19T02:21:21.214714" elapsed="0.000536"/>
</kw>
<kw name="Open 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-19T02:21:21.215481" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:21.215894" elapsed="0.000156"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:21.210907" elapsed="0.005217"/>
</kw>
<msg time="2026-04-19T02:21:21.216251" level="INFO">${output} = 1</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-19T02:21:20.833471" elapsed="0.382816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:21.216881" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:21.216536" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:21.217004" elapsed="0.000060"/>
</return>
<msg time="2026-04-19T02:21:21.217240" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:20.831290" elapsed="0.385985"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:21.217341" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:21:21.217541" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:20.829079" elapsed="0.388501"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:21.218441" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:21.217870" elapsed="0.000670">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:20.827982" elapsed="0.390712">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:23.220614" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:23.220239" elapsed="0.000414"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:23.221599" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:23.221313" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:23.222460" 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-19T02:21:23.222565" 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-19T02:21:23.222289" elapsed="0.000302"/>
</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-19T02:21:23.226745" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:23.226258" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:23.225917" elapsed="0.000975"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:23.228487" 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-19T02:21:23.228757" 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-19T02:21:23.227909" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:23.230528" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:23.229870" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:23.232687" level="INFO">${conn_id} = 335</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:23.231836" elapsed="0.000949"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:23.235495" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:23.235573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:23.235192" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:23.235816" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:23.237405" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:23.597223" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:23.237072" elapsed="0.360293"/>
</kw>
<msg time="2026-04-19T02:21:23.597449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:23.236688" elapsed="0.360850"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:23.234225" elapsed="0.363576"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:23.599293" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:23.621475" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:23.621807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:23.622086" 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-19T02:21:23.598887" elapsed="0.023346"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:23.623723" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:23.625830" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:23.625195" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:23.626576" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:23.626241" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:23.626159" elapsed="0.000610"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:23.627319" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:21:23.626980" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:23.626909" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:23.627670" elapsed="0.000056"/>
</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-19T02:21:23.634057" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:23.634600" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:23.634951" elapsed="0.000131"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:23.629744" elapsed="0.005446"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:23.224580" elapsed="0.410836"/>
</kw>
<msg time="2026-04-19T02:21:23.635726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:23.223853" elapsed="0.411930"/>
</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-19T02:21:23.223303" elapsed="0.412562"/>
</kw>
<msg time="2026-04-19T02:21:23.635907" 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-19T02:21:23.222754" elapsed="0.413199"/>
</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-19T02:21:23.639171" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:23.639652" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:23.639946" elapsed="0.000149"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:23.636349" elapsed="0.003800"/>
</kw>
<msg time="2026-04-19T02:21:23.640240" level="INFO">${output} = 1</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-19T02:21:23.221852" elapsed="0.418414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:23.640723" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:23.640472" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:23.640811" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:23.640965" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:23.220871" elapsed="0.420121"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:23.641054" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:21:23.641205" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:23.219811" elapsed="0.421419"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:23.641777" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:23.641386" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:23.219264" elapsed="0.422692">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:25.645381" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:25.644614" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:25.647673" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:25.647066" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:25.649575" 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-19T02:21:25.649777" 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-19T02:21:25.649188" elapsed="0.000626"/>
</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-19T02:21:25.655504" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:25.654842" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:25.654478" elapsed="0.001221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:25.657728" 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-19T02:21:25.657968" 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-19T02:21:25.657085" elapsed="0.001001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:25.659657" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:25.659117" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:25.661441" level="INFO">${conn_id} = 338</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:25.660727" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:25.663863" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:25.663940" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:25.663577" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:25.664189" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:25.665433" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:25.977139" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:25.665108" elapsed="0.312129"/>
</kw>
<msg time="2026-04-19T02:21:25.977305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:25.664737" elapsed="0.312642"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:25.662763" elapsed="0.314852"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:25.979080" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:26.001943" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:26.002470" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:26.002805" 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-19T02:21:25.978677" elapsed="0.024337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:26.005234" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:26.008260" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:26.007330" elapsed="0.001181"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:26.009591" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:26.008844" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:26.008728" elapsed="0.001192"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:26.010706" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T02:21:26.010265" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:26.010159" elapsed="0.000917"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:26.011250" elapsed="0.000081"/>
</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-19T02:21:26.017855" 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-19T02:21:26.018416" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:26.018765" 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-19T02:21:26.014369" elapsed="0.004603"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:25.652587" elapsed="0.366627"/>
</kw>
<msg time="2026-04-19T02:21:26.019522" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:25.651645" elapsed="0.367934"/>
</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-19T02:21:25.650767" elapsed="0.368892"/>
</kw>
<msg time="2026-04-19T02:21:26.019699" 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-19T02:21:25.650054" elapsed="0.369691"/>
</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-19T02:21:26.022790" 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-19T02:21:26.023351" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:26.023652" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:26.020050" elapsed="0.003750"/>
</kw>
<msg time="2026-04-19T02:21:26.023892" level="INFO">${output} = 1</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-19T02:21:25.648247" elapsed="0.375670"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:26.024363" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:26.024114" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:26.024451" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:26.024603" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:25.646117" elapsed="0.378511"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:26.024675" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:26.024819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:25.643771" elapsed="0.381073"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:26.025465" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:26.024999" elapsed="0.000537">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:25.642731" elapsed="0.382913">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:28.029469" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:28.028653" elapsed="0.000887"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:28.031580" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:28.030952" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:28.033426" 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-19T02:21:28.033916" 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-19T02:21:28.033077" elapsed="0.000904"/>
</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-19T02:21:28.043666" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:28.042824" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:28.039792" elapsed="0.004107"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:28.046240" 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-19T02:21:28.046638" 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-19T02:21:28.045427" elapsed="0.001455"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:28.049315" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:28.048584" elapsed="0.000862"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:28.051383" level="INFO">${conn_id} = 341</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:28.050580" elapsed="0.000902"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:28.053932" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:28.054012" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:28.053620" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:28.054305" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:28.055848" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:28.384374" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:28.055512" elapsed="0.329026"/>
</kw>
<msg time="2026-04-19T02:21:28.384628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:28.054948" elapsed="0.329776"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:28.052787" elapsed="0.332232"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:28.386567" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:28.409541" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:28.410160" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:28.410496" 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-19T02:21:28.386154" elapsed="0.024557"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:28.413071" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:28.416214" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:28.415417" elapsed="0.000950"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:28.416959" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:28.416612" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:28.416523" elapsed="0.000656"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:28.417681" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T02:21:28.417391" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:28.417320" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:28.418066" elapsed="0.000056"/>
</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-19T02:21:28.424973" elapsed="0.000446"/>
</kw>
<kw name="Open 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-19T02:21:28.425782" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:28.426263" 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-19T02:21:28.420220" elapsed="0.006321"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:28.037578" elapsed="0.389230"/>
</kw>
<msg time="2026-04-19T02:21:28.427402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:28.036557" elapsed="0.390941"/>
</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-19T02:21:28.035715" elapsed="0.391896"/>
</kw>
<msg time="2026-04-19T02:21:28.427667" 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-19T02:21:28.034394" elapsed="0.393337"/>
</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-19T02:21:28.430874" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T02:21:28.431449" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:28.431756" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:28.428138" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T02:21:28.432011" level="INFO">${output} = 1</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-19T02:21:28.032140" elapsed="0.399915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:28.432535" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:28.432277" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:28.432625" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:21:28.432789" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:28.029994" elapsed="0.402820"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:28.432861" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:28.433006" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:28.027744" elapsed="0.405302"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:28.433614" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:28.433209" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:28.026596" elapsed="0.407213">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:30.437312" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:30.436542" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:30.439416" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:30.438779" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:30.441296" 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-19T02:21:30.441527" 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-19T02:21:30.440934" elapsed="0.000652"/>
</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-19T02:21:30.447242" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:30.446753" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:30.446694" elapsed="0.000765"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:30.449183" 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-19T02:21:30.449436" 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-19T02:21:30.448486" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:30.451130" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:30.450526" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:30.452928" level="INFO">${conn_id} = 344</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:30.452227" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:30.455391" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:30.455467" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:30.455007" elapsed="0.000484"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:30.455701" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:30.456982" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:30.780266" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:30.456653" elapsed="0.323775"/>
</kw>
<msg time="2026-04-19T02:21:30.780514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:30.456293" elapsed="0.324313"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:30.454251" elapsed="0.326636"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:30.782461" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:30.805652" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:30.806260" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:30.806593" 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-19T02:21:30.782065" elapsed="0.024736"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:30.809017" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:30.812263" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:30.811207" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:30.813231" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:30.812842" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:30.812718" elapsed="0.000791"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:30.814016" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T02:21:30.813727" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:30.813657" elapsed="0.000606"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:30.814375" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:30.821233" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:30.821783" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:30.822155" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:30.816389" elapsed="0.005979"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:30.445378" elapsed="0.377217"/>
</kw>
<msg time="2026-04-19T02:21:30.822975" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:30.444431" elapsed="0.378635"/>
</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-19T02:21:30.443151" elapsed="0.380002"/>
</kw>
<msg time="2026-04-19T02:21:30.823196" 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-19T02:21:30.441942" elapsed="0.381301"/>
</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-19T02:21:30.826399" 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-19T02:21:30.826889" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:30.827220" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:30.823543" elapsed="0.003828"/>
</kw>
<msg time="2026-04-19T02:21:30.827466" level="INFO">${output} = 1</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-19T02:21:30.439959" elapsed="0.387533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:30.827945" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:30.827692" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:30.828118" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:21:30.828312" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:30.437832" elapsed="0.390507"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:30.828387" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:21:30.828536" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:30.435671" elapsed="0.392891"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:30.829138" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:30.828720" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:30.434625" elapsed="0.394697">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:32.832757" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:32.831996" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:32.834895" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:32.834290" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:32.836861" 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-19T02:21:32.837182" 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-19T02:21:32.836529" elapsed="0.000765"/>
</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-19T02:21:32.843360" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:32.842681" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:32.842604" elapsed="0.000963"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:32.845910" 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-19T02:21:32.846207" 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-19T02:21:32.844916" elapsed="0.001390"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:32.847808" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:32.847261" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:32.849691" level="INFO">${conn_id} = 347</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:32.848959" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:32.852145" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:32.852222" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:32.851844" 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-19T02:21:32.852458" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:32.853746" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:33.179804" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:32.853420" elapsed="0.326590"/>
</kw>
<msg time="2026-04-19T02:21:33.180143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:32.853010" elapsed="0.327251"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:32.851090" elapsed="0.329509"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:33.182373" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:33.205320" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:33.205676" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:33.205852" 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-19T02:21:33.181885" elapsed="0.024082"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:33.207264" elapsed="0.000665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:33.209211" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:33.208643" elapsed="0.000693"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:33.209855" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:33.209556" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:33.209483" elapsed="0.000535"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:33.210462" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:21:33.210220" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:33.210161" elapsed="0.000506"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:33.210766" 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-19T02:21:33.216727" elapsed="0.000437"/>
</kw>
<kw name="Open 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-19T02:21:33.217438" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:33.217887" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:33.212377" elapsed="0.005782"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:32.840308" elapsed="0.378109"/>
</kw>
<msg time="2026-04-19T02:21:33.218770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:32.839344" elapsed="0.379500"/>
</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-19T02:21:32.838565" elapsed="0.380373"/>
</kw>
<msg time="2026-04-19T02:21:33.218997" 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-19T02:21:32.837657" elapsed="0.381582"/>
</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-19T02:21:33.222362" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:21:33.222841" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:33.223173" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:33.219639" elapsed="0.003685"/>
</kw>
<msg time="2026-04-19T02:21:33.223421" level="INFO">${output} = 1</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-19T02:21:32.835470" elapsed="0.387977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:33.223921" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:33.223664" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:33.224009" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T02:21:33.224188" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:32.833345" elapsed="0.390869"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:33.224263" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:33.224412" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:32.831189" elapsed="0.393248"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:33.225004" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:33.224594" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:32.830141" elapsed="0.395079">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:35.228733" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:35.227968" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:35.230919" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:35.230286" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:35.232784" 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-19T02:21:35.233008" 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-19T02:21:35.232446" elapsed="0.000651"/>
</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-19T02:21:35.239178" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:35.238432" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:35.238355" elapsed="0.001030"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:35.241701" 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-19T02:21:35.242088" 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-19T02:21:35.240743" elapsed="0.001484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:35.243993" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:35.243450" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:35.245782" level="INFO">${conn_id} = 350</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:35.245093" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:35.248206" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:35.248283" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:35.247904" 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-19T02:21:35.248516" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:35.249882" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:35.613375" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:35.249558" elapsed="0.363955"/>
</kw>
<msg time="2026-04-19T02:21:35.613596" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:35.249197" elapsed="0.364485"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:35.247143" elapsed="0.366810"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:35.615624" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:35.638654" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:35.639215" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:35.639542" 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-19T02:21:35.615064" elapsed="0.024689"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:35.641944" elapsed="0.000938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:35.644358" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:35.643728" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:35.645075" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:35.644727" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:35.644647" 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-19T02:21:35.645743" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:21:35.645465" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:35.645398" elapsed="0.000569"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:35.646099" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:35.652604" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:35.653161" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:35.653558" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:35.647951" elapsed="0.005816"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:35.236515" elapsed="0.417474"/>
</kw>
<msg time="2026-04-19T02:21:35.654312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:35.235555" elapsed="0.418837"/>
</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-19T02:21:35.234655" elapsed="0.419829"/>
</kw>
<msg time="2026-04-19T02:21:35.654526" 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-19T02:21:35.233448" elapsed="0.421125"/>
</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-19T02:21:35.657640" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:21:35.658136" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:35.658430" 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-19T02:21:35.654882" elapsed="0.003694"/>
</kw>
<msg time="2026-04-19T02:21:35.658744" level="INFO">${output} = 1</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-19T02:21:35.231496" elapsed="0.427277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:35.659225" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:35.658957" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:35.659312" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:35.659464" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:35.229292" elapsed="0.430196"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:35.659536" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:21:35.659681" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:35.227152" elapsed="0.432554"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:35.660295" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:35.659864" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:35.226081" elapsed="0.434406">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:37.663993" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:37.663220" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:37.666140" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:37.665498" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:37.667998" 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-19T02:21:37.668260" 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-19T02:21:37.667650" elapsed="0.000670"/>
</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-19T02:21:37.676829" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:37.676180" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:37.675570" elapsed="0.001478"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:37.679076" 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-19T02:21:37.679422" 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-19T02:21:37.678430" elapsed="0.001135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:37.681324" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:37.680717" elapsed="0.000716"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:37.683118" level="INFO">${conn_id} = 353</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:37.682412" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:37.685643" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:37.685720" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:37.685359" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:37.685955" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:37.687226" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:38.003398" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:37.686886" elapsed="0.316716"/>
</kw>
<msg time="2026-04-19T02:21:38.003679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:37.686527" elapsed="0.317235"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:37.684451" elapsed="0.319610"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:38.005484" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:38.028470" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:38.028966" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:38.029346" 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-19T02:21:38.005109" elapsed="0.024452"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:38.031790" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:38.034314" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:38.033700" elapsed="0.000758"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:38.035007" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:38.034682" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:38.034603" 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-19T02:21:38.035705" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:21:38.035425" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:38.035357" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:38.036166" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:38.042247" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:38.042796" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:38.043171" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:38.037990" elapsed="0.005391"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:37.672620" elapsed="0.370981"/>
</kw>
<msg time="2026-04-19T02:21:38.043903" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:37.671082" elapsed="0.372900"/>
</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-19T02:21:37.669842" elapsed="0.374277"/>
</kw>
<msg time="2026-04-19T02:21:38.044163" 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-19T02:21:37.668671" elapsed="0.375539"/>
</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-19T02:21:38.047287" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:21:38.047767" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:38.048192" 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-19T02:21:38.044502" elapsed="0.003844"/>
</kw>
<msg time="2026-04-19T02:21:38.048438" level="INFO">${output} = 1</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-19T02:21:37.666694" elapsed="0.381769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:38.048889" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:38.048641" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:38.048978" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:38.049148" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:37.664549" elapsed="0.384625"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:38.049220" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:38.049366" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:37.662375" elapsed="0.387017"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:38.049987" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:38.049594" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:37.661319" elapsed="0.388867">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:40.053781" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:40.052950" elapsed="0.000902"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:40.055960" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:40.055329" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:40.058107" 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-19T02:21:40.058284" 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-19T02:21:40.057733" elapsed="0.000589"/>
</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-19T02:21:40.064048" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:40.063242" elapsed="0.000920"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:40.062852" elapsed="0.001394"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:40.066281" 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-19T02:21:40.066527" 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-19T02:21:40.065650" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:40.068184" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:40.067621" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:40.070000" level="INFO">${conn_id} = 356</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:40.069299" elapsed="0.000878"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:40.072451" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:40.072528" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:40.072171" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:40.072763" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:40.074204" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:40.432468" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:40.073724" elapsed="0.358917"/>
</kw>
<msg time="2026-04-19T02:21:40.432735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:40.073362" elapsed="0.359468"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:40.071380" elapsed="0.361772"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:40.434691" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:40.458165" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:40.458832" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:40.459287" 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-19T02:21:40.434288" elapsed="0.025264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:40.461705" elapsed="0.000611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:40.463723" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:40.463113" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:40.464453" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:40.464115" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:40.464010" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:40.465139" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T02:21:40.464837" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:40.464772" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:40.465512" elapsed="0.000051"/>
</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-19T02:21:40.470441" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:21:40.470988" elapsed="0.000302"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:40.471484" 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-19T02:21:40.467079" elapsed="0.004611"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:40.060986" elapsed="0.410924"/>
</kw>
<msg time="2026-04-19T02:21:40.472235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:40.060062" elapsed="0.412233"/>
</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-19T02:21:40.059298" elapsed="0.413079"/>
</kw>
<msg time="2026-04-19T02:21:40.472418" 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-19T02:21:40.058546" elapsed="0.413918"/>
</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-19T02:21:40.475670" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:21:40.476165" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:40.476467" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:40.472753" elapsed="0.003859"/>
</kw>
<msg time="2026-04-19T02:21:40.476703" level="INFO">${output} = 1</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-19T02:21:40.056605" elapsed="0.420123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:40.477176" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:40.476909" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:40.477281" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:40.477435" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:40.054355" elapsed="0.423106"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:40.477508" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:40.477653" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:40.052096" elapsed="0.425581"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:40.478256" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:40.477833" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:40.050954" elapsed="0.427490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:42.481947" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:42.481210" elapsed="0.000807"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:42.484274" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:42.483637" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:42.486135" 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-19T02:21:42.486384" 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-19T02:21:42.485777" elapsed="0.000667"/>
</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-19T02:21:42.493237" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:42.492734" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:42.490833" elapsed="0.002549"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:42.494850" 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-19T02:21:42.495147" 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-19T02:21:42.494405" elapsed="0.000842"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:42.496761" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:42.496215" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:42.498600" level="INFO">${conn_id} = 359</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:42.497863" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:42.501014" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:42.501108" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:42.500734" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:42.501343" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:42.502605" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:42.819546" 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 Sun Apr 19 02:20:42 UTC 2026

  System load:  0.14               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:42.502269" elapsed="0.317436"/>
</kw>
<msg time="2026-04-19T02:21:42.819793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:42.501894" elapsed="0.317996"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:42.499947" elapsed="0.320251"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:42.821689" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:42.844956" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:42.845512" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:42.845847" 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-19T02:21:42.821287" elapsed="0.024801"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:42.848485" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:42.851561" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:42.850732" elapsed="0.000974"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:42.852365" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:42.851932" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:42.851852" elapsed="0.000700"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:42.853057" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:21:42.852754" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:42.852686" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:42.853403" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:42.859881" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:21:42.860443" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:42.860797" 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-19T02:21:42.855335" 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-19T02:21:42.489488" elapsed="0.371758"/>
</kw>
<msg time="2026-04-19T02:21:42.861556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:42.488795" elapsed="0.372819"/>
</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-19T02:21:42.488127" elapsed="0.373569"/>
</kw>
<msg time="2026-04-19T02:21:42.861737" 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-19T02:21:42.486797" elapsed="0.374986"/>
</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-19T02:21:42.864907" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:42.865405" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:42.865703" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:42.862234" elapsed="0.003618"/>
</kw>
<msg time="2026-04-19T02:21:42.865945" level="INFO">${output} = 1</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-19T02:21:42.484824" elapsed="0.381146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:42.866413" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:42.866164" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:42.866525" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:21:42.866679" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:42.482681" elapsed="0.384023"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:42.866750" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:42.866894" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:42.480374" elapsed="0.386544"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:42.867520" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:42.867119" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:42.479339" elapsed="0.388364">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:44.871266" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:44.870477" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:44.873133" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:44.872702" elapsed="0.000472"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:44.874376" 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-19T02:21:44.874642" 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-19T02:21:44.874131" elapsed="0.000551"/>
</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-19T02:21:44.880313" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:44.879618" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:44.879501" elapsed="0.000963"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:44.882177" 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-19T02:21:44.882433" 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-19T02:21:44.881463" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:44.884296" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:44.883650" elapsed="0.000759"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:44.886113" level="INFO">${conn_id} = 362</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:44.885393" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:44.888675" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:44.888755" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:44.888371" 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-19T02:21:44.888995" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:44.890348" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:45.498285" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:44.889957" elapsed="0.608520"/>
</kw>
<msg time="2026-04-19T02:21:45.498579" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:44.889585" elapsed="0.609103"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:44.887480" elapsed="0.611538"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:45.500824" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:45.523839" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:45.524347" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:45.524532" 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-19T02:21:45.500352" elapsed="0.024299"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:45.525980" elapsed="0.000689"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:45.527955" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:45.527379" elapsed="0.000717"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:45.528599" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:45.528303" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:45.528228" elapsed="0.000533"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:45.529198" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:21:45.528939" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:45.528883" elapsed="0.000519"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:45.529500" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:45.535562" elapsed="0.000438"/>
</kw>
<kw name="Open 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-19T02:21:45.536368" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:45.536822" elapsed="0.000126"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:45.531136" 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-19T02:21:44.877535" elapsed="0.659822"/>
</kw>
<msg time="2026-04-19T02:21:45.537715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:44.876538" elapsed="0.661252"/>
</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-19T02:21:44.875726" elapsed="0.662164"/>
</kw>
<msg time="2026-04-19T02:21:45.537941" 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-19T02:21:44.874917" elapsed="0.663080"/>
</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-19T02:21:45.541867" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:45.542551" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:45.542918" 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-19T02:21:45.538491" elapsed="0.004627"/>
</kw>
<msg time="2026-04-19T02:21:45.543233" level="INFO">${output} = 1</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-19T02:21:44.873497" elapsed="0.669767"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:45.543817" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:45.543513" elapsed="0.000373"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:45.543941" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:21:45.544149" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:44.871932" elapsed="0.672248"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:45.544238" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:21:45.544413" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:44.869609" elapsed="0.674833"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:45.545158" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:45.544643" elapsed="0.000608">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:44.868536" elapsed="0.676855">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:47.548994" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:47.548209" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:47.551149" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:47.550510" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:47.553018" 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-19T02:21:47.553282" 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-19T02:21:47.552666" elapsed="0.000677"/>
</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-19T02:21:47.559625" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:47.559151" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:47.559093" elapsed="0.000753"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:47.561561" 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-19T02:21:47.561810" 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-19T02:21:47.560845" elapsed="0.001065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:47.563495" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:47.562898" elapsed="0.000707"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:47.565399" level="INFO">${conn_id} = 365</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:47.564621" elapsed="0.000877"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:47.567890" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:47.567967" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:47.567597" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:47.568221" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:47.569512" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:47.889709" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:47.569180" elapsed="0.320681"/>
</kw>
<msg time="2026-04-19T02:21:47.889947" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:47.568791" elapsed="0.321266"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:47.566711" elapsed="0.323631"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:47.891827" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:47.914917" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:47.915264" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:47.915435" 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-19T02:21:47.891436" elapsed="0.024108"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:47.916566" elapsed="0.000449"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:47.918122" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:47.917642" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:47.918654" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:47.918402" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:47.918339" elapsed="0.000455"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:47.919171" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T02:21:47.918947" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:47.918895" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:47.919422" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:47.924238" 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-19T02:21:47.924798" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:47.925285" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:47.920759" elapsed="0.004830"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:47.557593" elapsed="0.368587"/>
</kw>
<msg time="2026-04-19T02:21:47.927365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:47.556202" elapsed="0.371312"/>
</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-19T02:21:47.554924" elapsed="0.372794"/>
</kw>
<msg time="2026-04-19T02:21:47.927820" 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-19T02:21:47.553696" elapsed="0.374236"/>
</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-19T02:21:47.932941" elapsed="0.000514"/>
</kw>
<kw name="Open 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-19T02:21:47.933620" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:47.933922" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:47.928677" elapsed="0.005415"/>
</kw>
<msg time="2026-04-19T02:21:47.934188" level="INFO">${output} = 1</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-19T02:21:47.551696" elapsed="0.382518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:47.934667" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:47.934407" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:47.934756" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:21:47.934913" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:47.549556" elapsed="0.385383"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:47.934986" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:21:47.935196" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:47.547366" elapsed="0.387856"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:47.935786" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:47.935382" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:47.546289" elapsed="0.389688">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:49.939464" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:49.938701" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:49.941570" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:49.940926" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:49.943225" 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-19T02:21:49.943369" 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-19T02:21:49.942969" elapsed="0.000437"/>
</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-19T02:21:49.948725" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:49.948094" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:49.947984" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:49.951224" 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-19T02:21:49.951471" 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-19T02:21:49.950316" elapsed="0.001253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:49.953172" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:49.952550" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:49.955042" level="INFO">${conn_id} = 368</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:49.954335" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:49.957530" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:49.957608" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:49.957246" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:49.957841" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:49.959133" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:50.281252" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:49.958792" elapsed="0.322595"/>
</kw>
<msg time="2026-04-19T02:21:50.281466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:49.958431" elapsed="0.323116"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:49.956340" elapsed="0.325477"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:50.283334" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:50.308624" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:50.309195" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:50.309533" 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-19T02:21:50.282910" elapsed="0.026842"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:50.312075" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:50.315373" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:50.314283" elapsed="0.001323"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:50.316176" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:50.315832" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:50.315753" elapsed="0.000607"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:50.316846" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:21:50.316563" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:50.316494" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:50.317210" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:50.323842" 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-19T02:21:50.324403" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:50.324769" 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-19T02:21:50.319295" elapsed="0.005682"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:49.946183" elapsed="0.379036"/>
</kw>
<msg time="2026-04-19T02:21:50.325535" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:49.945183" elapsed="0.380412"/>
</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-19T02:21:49.944372" elapsed="0.381307"/>
</kw>
<msg time="2026-04-19T02:21:50.325720" 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-19T02:21:49.943633" elapsed="0.382134"/>
</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-19T02:21:50.328877" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:21:50.329377" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:50.329680" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:50.326152" elapsed="0.003678"/>
</kw>
<msg time="2026-04-19T02:21:50.329922" level="INFO">${output} = 1</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-19T02:21:49.942286" elapsed="0.387662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:50.330416" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:50.330153" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:50.330506" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:50.330660" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:49.939987" elapsed="0.390699"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:50.330733" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:50.330880" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:49.937818" elapsed="0.393087"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:50.331537" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:50.331141" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:49.936745" elapsed="0.394980">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:52.335275" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:52.334508" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:52.337395" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:52.336761" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:52.339378" 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-19T02:21:52.339650" 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-19T02:21:52.339024" elapsed="0.000703"/>
</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-19T02:21:52.345300" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:52.344640" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:52.344252" elapsed="0.001244"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:52.347506" 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-19T02:21:52.347848" 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-19T02:21:52.346847" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:52.349690" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:52.349154" elapsed="0.000643"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:52.351483" level="INFO">${conn_id} = 371</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:52.350766" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:52.353872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:52.353950" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:52.353591" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:52.354197" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:52.355554" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:52.682764" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:52.355196" elapsed="0.327689"/>
</kw>
<msg time="2026-04-19T02:21:52.682964" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:52.354820" elapsed="0.328243"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:52.352816" elapsed="0.330498"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:52.684793" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:52.707771" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:52.708323" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:52.708673" 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-19T02:21:52.684415" elapsed="0.024469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:52.711160" elapsed="0.000985"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:52.713752" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:52.713123" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:52.714521" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:52.714184" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:52.714086" elapsed="0.000648"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:52.715263" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:21:52.714959" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:52.714890" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:52.715594" elapsed="0.000064"/>
</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-19T02:21:52.721972" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:21:52.722538" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:52.722895" 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-19T02:21:52.717635" elapsed="0.005486"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:52.342419" elapsed="0.380925"/>
</kw>
<msg time="2026-04-19T02:21:52.723667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:52.341480" elapsed="0.382254"/>
</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-19T02:21:52.340719" elapsed="0.383097"/>
</kw>
<msg time="2026-04-19T02:21:52.723856" 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-19T02:21:52.339987" elapsed="0.383915"/>
</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-19T02:21:52.726944" 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-19T02:21:52.727433" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:52.727742" 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-19T02:21:52.724206" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T02:21:52.728072" level="INFO">${output} = 1</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-19T02:21:52.337936" elapsed="0.390163"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:52.728533" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:52.728278" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:52.728620" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:52.728772" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:52.335820" elapsed="0.392978"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:52.728845" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:21:52.728990" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:52.333672" elapsed="0.395342"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:52.729627" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:52.729215" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:52.332558" elapsed="0.397263">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:54.733465" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:54.732643" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:54.735595" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:54.734946" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:54.737547" 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-19T02:21:54.737785" 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-19T02:21:54.737193" elapsed="0.000653"/>
</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-19T02:21:54.744161" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:54.743657" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:54.743368" elapsed="0.000937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:54.745748" 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-19T02:21:54.745996" 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-19T02:21:54.745300" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:54.747646" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:54.747091" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:54.749485" level="INFO">${conn_id} = 374</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:54.748755" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:54.751911" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:54.751988" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:54.751620" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:54.752239" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:54.753565" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:55.082683" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:54.753229" elapsed="0.329698"/>
</kw>
<msg time="2026-04-19T02:21:55.083010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:54.752834" elapsed="0.330295"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:54.750777" elapsed="0.332668"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:55.085018" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:55.108133" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:55.108635" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:55.109007" 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-19T02:21:55.084592" elapsed="0.024680"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:55.111681" elapsed="0.000993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:55.114724" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:55.113947" elapsed="0.000963"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:55.115522" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:55.115173" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:55.115085" 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-19T02:21:55.116325" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:21:55.115926" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:55.115857" elapsed="0.000702"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:55.116670" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:55.123018" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:21:55.123595" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:55.123960" elapsed="0.000187"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:55.118704" elapsed="0.005556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:54.742007" elapsed="0.382482"/>
</kw>
<msg time="2026-04-19T02:21:55.124803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:54.740782" elapsed="0.384081"/>
</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-19T02:21:54.739467" elapsed="0.385495"/>
</kw>
<msg time="2026-04-19T02:21:55.125006" 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-19T02:21:54.738239" elapsed="0.386830"/>
</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-19T02:21:55.128150" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:21:55.128643" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:55.128969" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:55.125369" elapsed="0.003786"/>
</kw>
<msg time="2026-04-19T02:21:55.129250" level="INFO">${output} = 1</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-19T02:21:54.736193" elapsed="0.393084"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:55.129717" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:55.129460" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:55.129808" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:55.129963" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:54.733989" elapsed="0.396001"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:55.130056" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:21:55.130208" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:54.731785" elapsed="0.398449"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:55.130848" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:55.130439" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:54.730697" elapsed="0.400352">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:57.134785" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:57.134012" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:57.136903" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:57.136297" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:57.138819" 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-19T02:21:57.138939" 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-19T02:21:57.138486" elapsed="0.000480"/>
</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-19T02:21:57.144855" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:57.144358" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:57.142303" elapsed="0.002693"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:57.146488" 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-19T02:21:57.146730" 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-19T02:21:57.146023" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:57.148362" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:57.147806" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:57.150229" level="INFO">${conn_id} = 377</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:57.149431" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:57.152567" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:57.152645" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:57.152282" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:57.152880" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:57.154281" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:57.469317" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:57.153808" elapsed="0.315663"/>
</kw>
<msg time="2026-04-19T02:21:57.469558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:57.153449" elapsed="0.316200"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:57.151511" elapsed="0.318422"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:57.471470" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:57.494654" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:57.495205" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:57.495541" 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-19T02:21:57.471070" elapsed="0.024686"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:57.498178" elapsed="0.000971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:57.501529" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:57.500493" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:57.502729" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:57.502199" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:57.502014" elapsed="0.001188"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:57.504027" elapsed="0.000158"/>
</return>
<status status="PASS" start="2026-04-19T02:21:57.503550" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:57.503438" elapsed="0.000998"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:57.504625" elapsed="0.000088"/>
</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-19T02:21:57.513171" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:21:57.513714" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:57.514091" 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-19T02:21:57.508101" elapsed="0.006214"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:57.140901" elapsed="0.373641"/>
</kw>
<msg time="2026-04-19T02:21:57.514853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:57.140210" elapsed="0.374702"/>
</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-19T02:21:57.139659" elapsed="0.375336"/>
</kw>
<msg time="2026-04-19T02:21:57.515131" 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-19T02:21:57.139143" elapsed="0.376039"/>
</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-19T02:21:57.518314" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:21:57.518805" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:57.519142" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:57.515477" elapsed="0.003817"/>
</kw>
<msg time="2026-04-19T02:21:57.519386" level="INFO">${output} = 1</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-19T02:21:57.137479" elapsed="0.381932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:57.519846" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:57.519593" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:57.519932" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:21:57.520102" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:57.135349" elapsed="0.384780"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:57.520212" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:21:57.520400" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:57.133157" elapsed="0.387274"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:57.521120" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:57.520627" elapsed="0.000578">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:57.132024" elapsed="0.389312">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:21:59.524960" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:21:59.524224" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:21:59.527652" level="INFO">${member_ip} = 10.30.171.206</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-19T02:21:59.526812" elapsed="0.000901"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:59.529509" 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-19T02:21:59.529737" 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-19T02:21:59.529165" elapsed="0.000630"/>
</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-19T02:21:59.536481" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:21:59.535820" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:59.535743" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:59.539009" 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-19T02:21:59.539405" 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-19T02:21:59.538079" elapsed="0.001470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:59.541794" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:59.540916" elapsed="0.001153"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:21:59.545282" level="INFO">${conn_id} = 380</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:21:59.544275" elapsed="0.001146"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:21:59.549972" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:21:59.550185" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:21:59.549345" elapsed="0.000895"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:59.550711" elapsed="0.001003"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:21:59.553850" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:21:59.875024" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:21:59.553119" elapsed="0.322071"/>
</kw>
<msg time="2026-04-19T02:21:59.875275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:59.552244" elapsed="0.323145"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:21:59.547473" elapsed="0.328205"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:21:59.877244" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:21:59.900353" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:21:59.901017" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:21:59.901412" 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-19T02:21:59.876822" elapsed="0.024806"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:59.904090" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:59.907758" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:59.906607" elapsed="0.001377"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:59.909021" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:21:59.908378" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:59.908248" elapsed="0.001108"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:21:59.910200" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T02:21:59.909677" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T02:21:59.909570" elapsed="0.001097"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:21:59.910880" elapsed="0.000120"/>
</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-19T02:21:59.918407" elapsed="0.000973"/>
</kw>
<kw name="Open 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-19T02:21:59.919891" elapsed="0.000391"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:59.920711" 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-19T02:21:59.912985" elapsed="0.008217"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:21:59.533858" elapsed="0.387841"/>
</kw>
<msg time="2026-04-19T02:21:59.922446" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:21:59.532708" elapsed="0.389872"/>
</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-19T02:21:59.531590" elapsed="0.391172"/>
</kw>
<msg time="2026-04-19T02:21:59.922852" 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-19T02:21:59.530179" elapsed="0.392774"/>
</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-19T02:21:59.927654" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T02:21:59.928351" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:21:59.928761" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:21:59.923721" elapsed="0.005245"/>
</kw>
<msg time="2026-04-19T02:21:59.929117" level="INFO">${output} = 1</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-19T02:21:59.528226" elapsed="0.400927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:21:59.929753" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:21:59.929408" elapsed="0.000407"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:21:59.929875" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:21:59.930128" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:21:59.525696" elapsed="0.404470"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:21:59.930233" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:21:59.930439" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:21:59.523371" elapsed="0.407103"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:21:59.931276" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:21:59.930693" elapsed="0.000684">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:21:59.522176" elapsed="0.409392">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:01.935125" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:01.934363" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:01.937257" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:01.936619" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:01.939098" 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-19T02:22:01.939475" 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-19T02:22:01.938745" elapsed="0.000792"/>
</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-19T02:22:01.946387" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:01.945905" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:01.945850" elapsed="0.000677"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:01.948228" 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-19T02:22:01.948496" 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-19T02:22:01.947509" elapsed="0.001093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:01.950137" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:01.949578" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:01.951923" level="INFO">${conn_id} = 383</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:01.951228" elapsed="0.000793"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:01.954361" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:01.954440" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:01.954076" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:01.954677" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:01.955934" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:02.276985" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:21:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:01.955607" elapsed="0.321520"/>
</kw>
<msg time="2026-04-19T02:22:02.277207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:01.955245" elapsed="0.322042"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:01.953307" elapsed="0.324246"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:02.278975" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:02.301729" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:02.302277" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:02.302612" 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-19T02:22:02.278604" elapsed="0.024219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:02.305184" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:02.308438" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:02.307469" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:02.309677" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:02.309093" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:02.308942" elapsed="0.001033"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:02.310804" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:22:02.310335" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:02.310225" elapsed="0.001079"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:02.311481" elapsed="0.000082"/>
</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-19T02:22:02.317238" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:22:02.317839" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:02.318218" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:02.313706" elapsed="0.004728"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:01.943859" elapsed="0.374802"/>
</kw>
<msg time="2026-04-19T02:22:02.319020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:01.942364" elapsed="0.376774"/>
</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-19T02:22:01.941128" elapsed="0.378096"/>
</kw>
<msg time="2026-04-19T02:22:02.319268" 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-19T02:22:01.939894" elapsed="0.379421"/>
</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-19T02:22:02.322309" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:22:02.322833" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:02.323231" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:02.319607" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T02:22:02.323477" level="INFO">${output} = 1</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-19T02:22:01.937800" elapsed="0.385703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:02.323933" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:02.323682" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:02.324021" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:22:02.324193" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:01.935653" elapsed="0.388565"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:02.324266" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:02.324410" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:01.933523" elapsed="0.390912"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:02.325009" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:02.324592" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:01.932434" elapsed="0.392777">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:04.328636" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:04.327871" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:04.330762" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:04.330158" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:04.332611" 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-19T02:22:04.332841" 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-19T02:22:04.332280" elapsed="0.000620"/>
</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-19T02:22:04.337425" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:04.336930" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:04.336876" elapsed="0.000771"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:04.339343" 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-19T02:22:04.339589" 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-19T02:22:04.338650" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:04.341231" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:04.340654" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:04.343079" level="INFO">${conn_id} = 386</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:04.342377" elapsed="0.000800"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:04.345434" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:04.345511" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:04.345153" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:04.345775" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:04.347224" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:04.664247" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:04.346873" elapsed="0.317512"/>
</kw>
<msg time="2026-04-19T02:22:04.664466" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:04.346513" elapsed="0.318040"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:04.344367" elapsed="0.320458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:04.666356" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:04.689328" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:04.689822" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:04.690232" 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-19T02:22:04.665923" elapsed="0.024520"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:04.692829" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:04.695666" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:04.695023" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:04.696445" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:04.696112" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:04.695956" elapsed="0.000676"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:04.697136" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:22:04.696832" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:04.696765" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:04.697466" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:04.704016" elapsed="0.000640"/>
</kw>
<kw name="Open 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-19T02:22:04.704950" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:04.705464" 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-19T02:22:04.699347" elapsed="0.006403"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:04.335577" elapsed="0.370616"/>
</kw>
<msg time="2026-04-19T02:22:04.706698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:04.334878" elapsed="0.371903"/>
</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-19T02:22:04.334339" elapsed="0.372557"/>
</kw>
<msg time="2026-04-19T02:22:04.706953" 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-19T02:22:04.333282" elapsed="0.373736"/>
</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-19T02:22:04.710045" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:22:04.710527" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:04.710822" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:04.707350" elapsed="0.003622"/>
</kw>
<msg time="2026-04-19T02:22:04.711091" level="INFO">${output} = 1</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-19T02:22:04.331337" elapsed="0.379781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:04.711551" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:04.711298" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:04.711640" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:22:04.711794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:04.329192" elapsed="0.382628"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:04.711866" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:04.712011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:04.327058" elapsed="0.385056"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:04.712673" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:04.712276" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:04.325972" elapsed="0.386882">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:06.716445" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:06.715676" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:06.718564" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:06.717916" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:06.720402" 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-19T02:22:06.720544" 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-19T02:22:06.720182" elapsed="0.000399"/>
</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-19T02:22:06.726426" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:06.725700" elapsed="0.000841"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:06.725310" elapsed="0.001316"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:06.729142" 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-19T02:22:06.729678" 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-19T02:22:06.728118" elapsed="0.001782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:06.732412" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:06.731832" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:06.734304" level="INFO">${conn_id} = 389</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:06.733572" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:06.736774" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:06.736852" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:06.736491" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:06.737099" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:06.738364" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:07.094148" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:06.738011" elapsed="0.356282"/>
</kw>
<msg time="2026-04-19T02:22:07.094378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:06.737653" elapsed="0.356812"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:06.735689" elapsed="0.359057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:07.096280" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:07.119467" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:07.120007" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:07.120473" 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-19T02:22:07.095854" elapsed="0.024845"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:07.123096" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:07.125641" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:07.124948" 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-19T02:22:07.126487" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:07.126119" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:07.125958" elapsed="0.000733"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:07.127268" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:22:07.126913" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:07.126838" elapsed="0.000678"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:07.127639" elapsed="0.000057"/>
</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-19T02:22:07.133920" elapsed="0.000400"/>
</kw>
<kw name="Open 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-19T02:22:07.134540" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:07.134940" elapsed="0.000206"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:07.129678" elapsed="0.005598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:06.723311" elapsed="0.412201"/>
</kw>
<msg time="2026-04-19T02:22:07.135831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:06.722316" elapsed="0.413577"/>
</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-19T02:22:06.721545" elapsed="0.414430"/>
</kw>
<msg time="2026-04-19T02:22:07.136017" 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-19T02:22:06.720802" elapsed="0.415280"/>
</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-19T02:22:07.139159" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:22:07.139660" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:07.139961" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:07.136453" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T02:22:07.140222" level="INFO">${output} = 1</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-19T02:22:06.719256" elapsed="0.420991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:07.140680" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:07.140430" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:07.140768" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:07.140920" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:06.716970" elapsed="0.423975"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:07.140993" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:07.141169" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:06.714768" elapsed="0.426425"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:07.141825" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:07.141422" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:06.713686" elapsed="0.428322">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:09.145641" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:09.144869" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:09.147742" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:09.147139" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:09.149596" 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-19T02:22:09.149826" 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-19T02:22:09.149268" elapsed="0.000618"/>
</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-19T02:22:09.157512" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:09.157027" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:09.156745" elapsed="0.000906"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:09.159114" 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-19T02:22:09.159358" 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-19T02:22:09.158650" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:09.161000" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:09.160449" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:09.162808" level="INFO">${conn_id} = 392</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:09.162109" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:09.165244" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:09.165322" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:09.164947" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:09.165557" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:09.166879" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:09.493357" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:09.166557" elapsed="0.326965"/>
</kw>
<msg time="2026-04-19T02:22:09.493611" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:09.166192" elapsed="0.327515"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:09.164182" elapsed="0.329821"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:09.495580" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:09.518244" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:09.518787" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:09.519236" 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-19T02:22:09.495151" elapsed="0.024304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:09.521747" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:09.525133" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:09.524123" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:09.526319" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:09.525726" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:09.525601" elapsed="0.001093"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:09.527385" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T02:22:09.527073" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:09.526920" elapsed="0.000633"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:09.527635" 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-19T02:22:09.532605" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:22:09.533196" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:09.533572" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:09.529154" elapsed="0.004631"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:09.154331" elapsed="0.379680"/>
</kw>
<msg time="2026-04-19T02:22:09.534353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:09.152792" elapsed="0.381622"/>
</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-19T02:22:09.151542" elapsed="0.382957"/>
</kw>
<msg time="2026-04-19T02:22:09.534541" 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-19T02:22:09.150360" elapsed="0.384227"/>
</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-19T02:22:09.537647" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:22:09.538202" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:09.538514" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:09.534877" elapsed="0.003788"/>
</kw>
<msg time="2026-04-19T02:22:09.538822" level="INFO">${output} = 1</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-19T02:22:09.148331" elapsed="0.390518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:09.539303" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:09.539048" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:09.539392" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:09.539546" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:09.146196" elapsed="0.393375"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:09.539619" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:09.539764" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:09.143958" elapsed="0.395830"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:09.540462" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:09.539946" elapsed="0.000596">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:09.142878" elapsed="0.397779">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:11.544175" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:11.543396" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:11.546328" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:11.545683" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:11.547847" 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-19T02:22:11.547989" 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-19T02:22:11.547629" elapsed="0.000397"/>
</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-19T02:22:11.555685" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:11.554998" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:11.552567" elapsed="0.003311"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:11.557871" 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-19T02:22:11.558236" 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-19T02:22:11.557270" elapsed="0.001106"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:11.560221" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:11.559605" elapsed="0.000730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:11.561983" level="INFO">${conn_id} = 395</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:11.561293" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:11.564446" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:11.564524" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:11.564163" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:11.564758" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:11.566004" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:11.880449" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:11.565684" elapsed="0.315064"/>
</kw>
<msg time="2026-04-19T02:22:11.880860" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:11.565326" elapsed="0.315644"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:11.563297" elapsed="0.318044"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:11.883407" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:11.906095" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:11.906458" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:11.906690" 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-19T02:22:11.882856" elapsed="0.024041"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:11.908443" elapsed="0.000625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:11.910644" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:11.909950" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:11.911411" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:11.911053" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:11.910946" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:11.912149" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:22:11.911832" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:11.911761" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:11.912503" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:11.919873" elapsed="0.000555"/>
</kw>
<kw name="Open 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-19T02:22:11.920761" elapsed="0.000263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:11.921351" elapsed="0.000163"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:11.914440" elapsed="0.007245"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:11.550704" elapsed="0.371355"/>
</kw>
<msg time="2026-04-19T02:22:11.922507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:11.549756" elapsed="0.372846"/>
</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-19T02:22:11.548986" elapsed="0.373910"/>
</kw>
<msg time="2026-04-19T02:22:11.922962" 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-19T02:22:11.548271" elapsed="0.374913"/>
</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-19T02:22:11.927915" elapsed="0.000580"/>
</kw>
<kw name="Open 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-19T02:22:11.928764" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:11.929277" elapsed="0.000154"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:11.923646" elapsed="0.005866"/>
</kw>
<msg time="2026-04-19T02:22:11.929655" level="INFO">${output} = 1</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-19T02:22:11.546872" elapsed="0.382836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:11.930427" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:11.930048" elapsed="0.000632"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:11.930745" elapsed="0.000050"/>
</return>
<msg time="2026-04-19T02:22:11.930977" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:11.544708" elapsed="0.386306"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:11.931199" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:22:11.931419" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:11.542525" elapsed="0.388931"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:11.932562" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:11.931960" elapsed="0.000709">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:11.541468" elapsed="0.391369">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:13.936608" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:13.935826" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:13.938721" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:13.938116" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:13.940644" 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-19T02:22:13.940905" 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-19T02:22:13.940274" elapsed="0.000692"/>
</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-19T02:22:13.946280" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:13.945795" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:13.945736" elapsed="0.000692"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:13.948124" 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-19T02:22:13.948371" 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-19T02:22:13.947433" elapsed="0.001036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:13.949986" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:13.949447" elapsed="0.000707"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:13.951820" level="INFO">${conn_id} = 398</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:13.951129" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:13.954356" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:13.954434" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:13.953932" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:13.954667" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:13.955962" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:14.264901" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:13.955636" elapsed="0.309378"/>
</kw>
<msg time="2026-04-19T02:22:14.265108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:13.955272" elapsed="0.309933"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:13.953121" elapsed="0.312336"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:14.266871" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:14.289778" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:14.290326" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:14.290662" 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-19T02:22:14.266505" elapsed="0.024368"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:14.293152" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:14.296307" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:14.295299" elapsed="0.001237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:14.297540" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:14.296943" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:14.296816" elapsed="0.001028"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:14.298663" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:22:14.298202" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:14.298090" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:14.299344" elapsed="0.000085"/>
</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-19T02:22:14.305220" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:22:14.305763" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:14.306133" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:14.301805" elapsed="0.004536"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:13.944406" elapsed="0.362161"/>
</kw>
<msg time="2026-04-19T02:22:14.306867" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:13.943641" elapsed="0.363283"/>
</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-19T02:22:13.942610" elapsed="0.364398"/>
</kw>
<msg time="2026-04-19T02:22:14.307111" 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-19T02:22:13.941353" elapsed="0.365807"/>
</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-19T02:22:14.310124" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:22:14.310602" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:14.310936" elapsed="0.000217"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:14.307450" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T02:22:14.311325" level="INFO">${output} = 1</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-19T02:22:13.939316" elapsed="0.372042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:14.311787" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:14.311540" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:14.311873" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:14.312025" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:13.937171" elapsed="0.374894"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:14.312113" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:14.312257" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:13.934861" elapsed="0.377440"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:14.312852" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:14.312460" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:13.933675" elapsed="0.379377">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:16.316589" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:16.315805" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:16.318907" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:16.318295" elapsed="0.000674"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:16.320759" 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-19T02:22:16.320986" 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-19T02:22:16.320434" elapsed="0.000641"/>
</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-19T02:22:16.325696" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:16.325223" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:16.325165" elapsed="0.000670"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:16.327608" 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-19T02:22:16.327866" 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-19T02:22:16.326898" elapsed="0.001075"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:16.329592" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:16.329012" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:16.331443" level="INFO">${conn_id} = 401</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:16.330723" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:16.333934" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:16.334013" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:16.333618" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:16.334270" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:16.335524" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:16.645366" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:16.335199" elapsed="0.310262"/>
</kw>
<msg time="2026-04-19T02:22:16.645527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:16.334823" elapsed="0.310779"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:16.332765" elapsed="0.313075"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:16.647317" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:16.669952" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:16.670548" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:16.670884" 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-19T02:22:16.646920" elapsed="0.024242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:16.673454" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:16.675932" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:16.675308" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:16.676766" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:16.676351" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:16.676269" elapsed="0.000685"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:16.677461" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T02:22:16.677178" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:16.677111" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:16.677824" elapsed="0.000051"/>
</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-19T02:22:16.684497" elapsed="0.000460"/>
</kw>
<kw name="Open 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-19T02:22:16.685272" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:16.685786" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:16.679685" elapsed="0.006414"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:16.323818" elapsed="0.362595"/>
</kw>
<msg time="2026-04-19T02:22:16.686844" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:16.323145" elapsed="0.363781"/>
</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-19T02:22:16.322589" elapsed="0.364468"/>
</kw>
<msg time="2026-04-19T02:22:16.687115" 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-19T02:22:16.321432" elapsed="0.365748"/>
</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-19T02:22:16.691467" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T02:22:16.692170" elapsed="0.000215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:16.692592" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:16.687584" elapsed="0.005212"/>
</kw>
<msg time="2026-04-19T02:22:16.692921" level="INFO">${output} = 1</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-19T02:22:16.319488" elapsed="0.373468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:16.693604" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:16.693223" elapsed="0.000442"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:16.693725" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:22:16.693936" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:16.317316" elapsed="0.376654"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:16.694056" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:22:16.694260" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:16.314957" elapsed="0.379337"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:16.694949" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:16.694539" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:16.313829" elapsed="0.381322">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:18.699014" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:18.698095" elapsed="0.001019"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:18.701144" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:18.700586" elapsed="0.000597"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:18.702323" 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-19T02:22:18.702599" 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-19T02:22:18.702090" elapsed="0.000548"/>
</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-19T02:22:18.708103" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:18.707319" elapsed="0.000897"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:18.707242" elapsed="0.001057"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:18.710641" 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-19T02:22:18.710982" 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-19T02:22:18.709683" elapsed="0.001456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:18.713284" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:18.712497" elapsed="0.000942"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:18.715851" level="INFO">${conn_id} = 404</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:18.714852" elapsed="0.001136"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:18.719223" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:18.719335" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:18.718771" elapsed="0.000598"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:18.719696" elapsed="0.000633"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:18.721299" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:19.074906" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:18.720959" elapsed="0.354092"/>
</kw>
<msg time="2026-04-19T02:22:19.075140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:18.720593" elapsed="0.354634"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:18.717649" elapsed="0.357831"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:19.076954" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:19.099259" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:19.099752" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:19.100185" 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-19T02:22:19.076569" elapsed="0.023833"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:19.102589" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:19.105781" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:19.104771" elapsed="0.001239"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:19.106884" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:19.106393" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:19.106271" elapsed="0.000939"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:19.108111" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T02:22:19.107537" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:19.107420" elapsed="0.001064"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:19.108653" elapsed="0.000048"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:19.113520" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:22:19.114190" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:19.114553" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:19.110053" elapsed="0.004710"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:18.705373" elapsed="0.409618"/>
</kw>
<msg time="2026-04-19T02:22:19.115316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:18.704403" elapsed="0.410972"/>
</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-19T02:22:18.703633" elapsed="0.411826"/>
</kw>
<msg time="2026-04-19T02:22:19.115500" 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-19T02:22:18.702865" elapsed="0.412683"/>
</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-19T02:22:19.118605" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:22:19.119096" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:19.119392" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:19.115859" elapsed="0.003682"/>
</kw>
<msg time="2026-04-19T02:22:19.119633" level="INFO">${output} = 1</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-19T02:22:18.701487" elapsed="0.418171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:19.120170" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:19.119872" elapsed="0.000345"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:19.120261" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:19.120414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:18.699565" elapsed="0.420874"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:19.120487" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:19.120631" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:18.697248" elapsed="0.423407"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:19.121303" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:19.120813" elapsed="0.000562">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:18.696024" elapsed="0.425459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:21.124995" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:21.124201" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:21.127253" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:21.126574" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:21.129326" 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-19T02:22:21.129595" 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-19T02:22:21.128884" elapsed="0.000771"/>
</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-19T02:22:21.138091" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:21.137503" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:21.137103" elapsed="0.001204"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:21.139734" 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-19T02:22:21.139980" 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-19T02:22:21.139286" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:21.141635" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:21.141089" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:21.143418" level="INFO">${conn_id} = 407</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:21.142710" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:21.145847" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:21.145924" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:21.145564" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:21.146174" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:21.147435" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:21.471331" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:21.147112" elapsed="0.324370"/>
</kw>
<msg time="2026-04-19T02:22:21.471567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:21.146738" elapsed="0.324919"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:21.144789" elapsed="0.327148"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:21.473431" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:21.496170" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:21.496672" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:21.497002" 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-19T02:22:21.473024" elapsed="0.024230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:21.499686" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:21.502839" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:21.501826" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:21.503958" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:21.503463" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:21.503340" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:21.505077" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:22:21.504605" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:21.504497" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:21.505606" elapsed="0.000082"/>
</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-19T02:22:21.513278" elapsed="0.000468"/>
</kw>
<kw name="Open 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-19T02:22:21.514142" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:21.514648" 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-19T02:22:21.508166" elapsed="0.006774"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:21.134223" elapsed="0.381052"/>
</kw>
<msg time="2026-04-19T02:22:21.515778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:21.132589" elapsed="0.383271"/>
</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-19T02:22:21.131276" elapsed="0.384699"/>
</kw>
<msg time="2026-04-19T02:22:21.516052" 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-19T02:22:21.130014" elapsed="0.386106"/>
</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-19T02:22:21.520044" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:22:21.520526" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:21.520822" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:21.516529" elapsed="0.004442"/>
</kw>
<msg time="2026-04-19T02:22:21.521078" level="INFO">${output} = 1</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-19T02:22:21.127830" elapsed="0.393276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:21.521531" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:21.521282" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:21.521620" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:22:21.521776" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:21.125558" elapsed="0.396243"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:21.521847" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:22:21.522001" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:21.123319" elapsed="0.398758"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:21.522629" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:21.522238" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:21.122273" elapsed="0.400539">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:23.526418" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:23.525623" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:23.528246" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:23.527842" elapsed="0.000442"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:23.529396" 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-19T02:22:23.529540" 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-19T02:22:23.529175" elapsed="0.000403"/>
</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-19T02:22:23.535147" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:23.534477" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:23.534096" elapsed="0.001245"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:23.537321" 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-19T02:22:23.537656" 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-19T02:22:23.536688" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:23.539913" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:23.539171" elapsed="0.000849"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:23.541818" level="INFO">${conn_id} = 410</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:23.541125" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:23.544188" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:23.544267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:23.543891" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:23.544499" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:23.545882" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:23.869193" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:23.545556" elapsed="0.323789"/>
</kw>
<msg time="2026-04-19T02:22:23.869430" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:23.545187" elapsed="0.324346"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:23.543127" elapsed="0.326685"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:23.871304" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:23.893957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:23.894509" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:23.894843" 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-19T02:22:23.870906" elapsed="0.024182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:23.897335" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:23.900496" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:23.899490" elapsed="0.001238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:23.901616" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:23.901102" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:23.900949" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:23.902697" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T02:22:23.902252" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:23.902145" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:23.903276" 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-19T02:22:23.910740" 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-19T02:22:23.911309" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:23.911719" 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-19T02:22:23.906209" elapsed="0.005722"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:23.532272" elapsed="0.379954"/>
</kw>
<msg time="2026-04-19T02:22:23.912536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:23.531314" elapsed="0.381279"/>
</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-19T02:22:23.530543" elapsed="0.382136"/>
</kw>
<msg time="2026-04-19T02:22:23.912719" 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-19T02:22:23.529803" elapsed="0.382961"/>
</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-19T02:22:23.915924" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T02:22:23.916493" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:23.916788" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:23.913172" elapsed="0.003765"/>
</kw>
<msg time="2026-04-19T02:22:23.917042" level="INFO">${output} = 1</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-19T02:22:23.528584" elapsed="0.388486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:23.917538" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:23.917251" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:23.917629" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:23.917779" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:23.526944" elapsed="0.390866"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:23.917858" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:23.918000" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:23.524765" elapsed="0.393274"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:23.918595" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:23.918200" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:23.523653" elapsed="0.395131">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:25.922310" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:25.921517" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:25.924448" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:25.923784" elapsed="0.000725"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:25.926350" 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-19T02:22:25.926577" 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-19T02:22:25.925977" elapsed="0.000657"/>
</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-19T02:22:25.934569" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:25.934078" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:25.932156" elapsed="0.002554"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:25.936160" 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-19T02:22:25.936403" 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-19T02:22:25.935691" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:25.938049" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:25.937463" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:25.939804" level="INFO">${conn_id} = 413</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:25.939121" elapsed="0.000782"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:25.942250" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:25.942329" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:25.941948" 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-19T02:22:25.942567" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:25.943882" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:26.253886" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:25.943560" elapsed="0.310574"/>
</kw>
<msg time="2026-04-19T02:22:26.254283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:25.943200" elapsed="0.311232"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:25.941165" elapsed="0.313801"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:26.257938" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:26.281169" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:26.281663" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:26.281997" 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-19T02:22:26.257367" elapsed="0.024885"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:26.284425" elapsed="0.000729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:26.286547" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:26.285928" elapsed="0.000761"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:26.287288" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:26.286917" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:26.286839" elapsed="0.000631"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:26.287941" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:22:26.287667" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:26.287600" elapsed="0.000582"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:26.288290" elapsed="0.000051"/>
</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-19T02:22:26.343515" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T02:22:26.344182" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:26.344578" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:26.290124" elapsed="0.054671"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:25.930827" elapsed="0.414193"/>
</kw>
<msg time="2026-04-19T02:22:26.345361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:25.929403" elapsed="0.416024"/>
</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-19T02:22:25.928178" elapsed="0.417332"/>
</kw>
<msg time="2026-04-19T02:22:26.345550" 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-19T02:22:25.926981" elapsed="0.418615"/>
</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-19T02:22:26.348765" elapsed="0.000435"/>
</kw>
<kw name="Open 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-19T02:22:26.349364" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:26.349659" 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-19T02:22:26.345910" elapsed="0.003902"/>
</kw>
<msg time="2026-04-19T02:22:26.349972" level="INFO">${output} = 1</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-19T02:22:25.924994" elapsed="0.425004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:26.350462" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:26.350208" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:26.350553" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:22:26.350712" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:25.922836" elapsed="0.427901"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:26.350782" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:26.350923" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:25.920678" elapsed="0.430269"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:26.351553" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:26.351159" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:25.919603" elapsed="0.432134">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:28.355250" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:28.354441" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:28.357348" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:28.356712" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:28.359472" 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-19T02:22:28.359703" 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-19T02:22:28.359116" elapsed="0.000646"/>
</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-19T02:22:28.368361" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:28.367791" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:28.367667" elapsed="0.000832"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:28.369936" 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-19T02:22:28.370196" 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-19T02:22:28.369493" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:28.371833" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:28.371292" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:28.373690" level="INFO">${conn_id} = 416</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:28.372939" elapsed="0.000849"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:28.376218" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:28.376297" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:28.375871" 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-19T02:22:28.376536" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:28.377919" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:28.696357" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:28.377594" elapsed="0.318988"/>
</kw>
<msg time="2026-04-19T02:22:28.696663" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:28.377229" elapsed="0.319518"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:28.375011" elapsed="0.322052"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:28.698539" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:28.721014" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:28.721548" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:28.721941" 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-19T02:22:28.698128" elapsed="0.024093"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:28.724707" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:28.727981" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:28.726935" elapsed="0.001315"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:28.729136" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:28.728599" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:28.728477" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:28.730481" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:22:28.729757" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:28.729646" elapsed="0.001184"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:28.730908" 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-19T02:22:28.735748" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:28.736340" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:28.736697" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:28.732285" elapsed="0.004652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:28.364594" elapsed="0.372594"/>
</kw>
<msg time="2026-04-19T02:22:28.737501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:28.362586" elapsed="0.374971"/>
</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-19T02:22:28.361365" elapsed="0.376275"/>
</kw>
<msg time="2026-04-19T02:22:28.737681" 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-19T02:22:28.360191" elapsed="0.377536"/>
</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-19T02:22:28.740790" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:22:28.741289" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:28.741587" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:28.738018" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T02:22:28.741829" level="INFO">${output} = 1</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-19T02:22:28.357887" elapsed="0.383968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:28.742414" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:28.742139" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:28.742507" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:28.742661" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:28.355775" elapsed="0.386912"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:28.742734" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:28.742880" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:28.353608" elapsed="0.389297"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:28.743525" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:28.743126" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:28.352573" elapsed="0.391134">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:30.747517" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:30.746669" elapsed="0.000922"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:30.749804" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:30.749144" elapsed="0.000725"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:30.751843" 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-19T02:22:30.752052" 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-19T02:22:30.751493" elapsed="0.000599"/>
</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-19T02:22:30.757865" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:30.757209" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:30.757131" elapsed="0.000968"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:30.760162" 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-19T02:22:30.760503" 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-19T02:22:30.759514" elapsed="0.001129"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:30.762887" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:30.762015" elapsed="0.001096"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:30.765145" level="INFO">${conn_id} = 419</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:30.764430" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:30.767707" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:30.767784" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:30.767421" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:30.768023" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:30.769295" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:31.089285" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:30.768957" elapsed="0.320483"/>
</kw>
<msg time="2026-04-19T02:22:31.089526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:30.768596" elapsed="0.321023"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:30.766457" elapsed="0.323446"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:31.091427" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:31.113973" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:31.114643" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:31.115001" 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-19T02:22:31.091021" elapsed="0.024394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:31.117768" elapsed="0.000999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:31.120273" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:31.119649" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:31.120966" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:31.120641" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:31.120560" 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-19T02:22:31.121664" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:22:31.121380" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:31.121312" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:31.122002" elapsed="0.000074"/>
</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-19T02:22:31.128653" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:31.129434" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:31.129928" elapsed="0.000163"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:31.123889" elapsed="0.006356"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:30.754828" elapsed="0.375765"/>
</kw>
<msg time="2026-04-19T02:22:31.131146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:30.753865" elapsed="0.377341"/>
</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-19T02:22:30.753109" elapsed="0.378181"/>
</kw>
<msg time="2026-04-19T02:22:31.131331" 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-19T02:22:30.752317" elapsed="0.379061"/>
</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-19T02:22:31.134499" 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-19T02:22:31.134997" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:31.135359" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:31.131670" elapsed="0.003839"/>
</kw>
<msg time="2026-04-19T02:22:31.135601" level="INFO">${output} = 1</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-19T02:22:30.750424" elapsed="0.385207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:31.136077" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:31.135813" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:31.136166" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:22:31.136321" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:30.748115" elapsed="0.388232"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:31.136394" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:31.136539" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:30.745733" elapsed="0.390831"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:31.137133" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:31.136720" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:30.744593" elapsed="0.392721">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:33.140853" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:33.140097" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:33.143438" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:33.142647" elapsed="0.000852"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:33.145211" 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-19T02:22:33.145358" 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-19T02:22:33.144965" elapsed="0.000431"/>
</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-19T02:22:33.150970" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:33.150334" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:33.150256" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:33.153282" 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-19T02:22:33.153624" 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-19T02:22:33.152559" elapsed="0.001206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:33.155888" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:33.155129" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:33.158103" level="INFO">${conn_id} = 422</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:33.157396" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:33.160482" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:33.160560" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:33.160191" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:33.160795" elapsed="0.000484"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:33.162208" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:33.524848" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:33.161865" elapsed="0.363144"/>
</kw>
<msg time="2026-04-19T02:22:33.525123" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:33.161501" elapsed="0.363735"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:33.159392" elapsed="0.366144"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:33.527088" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:33.550079" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:33.550574" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:33.550900" 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-19T02:22:33.526661" elapsed="0.024484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:33.553348" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:33.556560" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:33.555467" elapsed="0.001326"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:33.557874" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:33.557182" elapsed="0.000896"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:33.557026" elapsed="0.001180"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:33.558984" elapsed="0.000414"/>
</return>
<status status="PASS" start="2026-04-19T02:22:33.558534" elapsed="0.000975"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:33.558425" elapsed="0.001212"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:33.559882" elapsed="0.000091"/>
</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-19T02:22:33.567271" elapsed="0.000511"/>
</kw>
<kw name="Open 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-19T02:22:33.568117" elapsed="0.000241"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:33.568641" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:33.562258" elapsed="0.006689"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:33.148084" elapsed="0.421265"/>
</kw>
<msg time="2026-04-19T02:22:33.569805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:33.147136" elapsed="0.422758"/>
</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-19T02:22:33.146368" elapsed="0.423647"/>
</kw>
<msg time="2026-04-19T02:22:33.570193" 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-19T02:22:33.145620" elapsed="0.424644"/>
</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-19T02:22:33.573924" 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-19T02:22:33.574494" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:33.574791" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:33.570697" elapsed="0.004242"/>
</kw>
<msg time="2026-04-19T02:22:33.575046" level="INFO">${output} = 1</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-19T02:22:33.143983" elapsed="0.431090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:33.575522" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:33.575271" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:33.575609" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:33.575785" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:33.141563" elapsed="0.434249"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:33.575865" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:22:33.576015" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:33.139248" elapsed="0.436811"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:33.576675" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:33.576253" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:33.138202" elapsed="0.438670">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:35.580500" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:35.579701" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:35.582622" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:35.581967" elapsed="0.000715"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:35.584492" 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-19T02:22:35.584885" 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-19T02:22:35.584130" elapsed="0.000816"/>
</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-19T02:22:35.590263" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:35.589769" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:35.589711" elapsed="0.000695"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:35.591860" 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-19T02:22:35.592125" 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-19T02:22:35.591414" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:35.593763" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:35.593214" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:35.595586" level="INFO">${conn_id} = 425</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:35.594870" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:35.598075" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:35.598155" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:35.597750" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:35.598390" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:35.599683" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:35.957125" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:35.599356" elapsed="0.357923"/>
</kw>
<msg time="2026-04-19T02:22:35.957363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:35.598977" elapsed="0.358477"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:35.596907" elapsed="0.360830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:35.959259" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:35.982230" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:35.982749" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:35.983127" 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-19T02:22:35.958853" elapsed="0.024492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:35.985559" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:35.988740" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:35.987724" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:35.989861" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:35.989362" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:35.989239" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:35.991020" elapsed="0.000150"/>
</return>
<status status="PASS" start="2026-04-19T02:22:35.990568" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:35.990455" elapsed="0.000826"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:35.991362" 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-19T02:22:35.996306" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:35.996922" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:35.997298" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:35.992751" elapsed="0.004759"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:35.588107" elapsed="0.409627"/>
</kw>
<msg time="2026-04-19T02:22:35.998056" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:35.587395" elapsed="0.410720"/>
</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-19T02:22:35.586553" elapsed="0.411648"/>
</kw>
<msg time="2026-04-19T02:22:35.998254" 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-19T02:22:35.585336" elapsed="0.412966"/>
</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-19T02:22:36.001379" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:22:36.001858" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:36.002176" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:35.998597" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T02:22:36.002445" level="INFO">${output} = 1</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-19T02:22:35.583189" elapsed="0.419282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:36.002899" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:36.002650" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:36.002987" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:36.003158" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:35.581026" elapsed="0.422157"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:36.003230" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:36.003376" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:35.578817" elapsed="0.424584"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:36.003949" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:36.003558" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:35.577699" elapsed="0.426522">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:38.007810" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:38.007078" elapsed="0.000803"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:38.010015" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:38.009359" elapsed="0.000751"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:38.011253" 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-19T02:22:38.011398" 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-19T02:22:38.011008" elapsed="0.000428"/>
</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-19T02:22:38.017049" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:38.016387" elapsed="0.000871"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:38.015960" elapsed="0.001406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:38.019513" 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-19T02:22:38.019865" 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-19T02:22:38.018795" elapsed="0.001213"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:38.022363" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:38.021649" elapsed="0.000820"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:38.024137" level="INFO">${conn_id} = 428</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:38.023425" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:38.026535" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:38.026614" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:38.026254" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:38.026850" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:38.028131" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:38.345367" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:38.027786" elapsed="0.317715"/>
</kw>
<msg time="2026-04-19T02:22:38.345595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:38.027423" elapsed="0.318263"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:38.025462" elapsed="0.320498"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:38.347645" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:38.370389" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:38.370885" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:38.371264" 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-19T02:22:38.347062" elapsed="0.024414"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:38.373728" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:38.376892" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:38.375890" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:38.378027" elapsed="0.000098"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:38.377526" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:38.377387" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:38.379161" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:22:38.378676" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:38.378568" elapsed="0.000952"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:38.379698" elapsed="0.000086"/>
</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-19T02:22:38.386023" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:22:38.386584" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:38.386935" 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-19T02:22:38.382591" elapsed="0.004682"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:38.014143" elapsed="0.373354"/>
</kw>
<msg time="2026-04-19T02:22:38.387865" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:38.013165" elapsed="0.374759"/>
</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-19T02:22:38.012400" elapsed="0.375607"/>
</kw>
<msg time="2026-04-19T02:22:38.388123" 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-19T02:22:38.011659" elapsed="0.376513"/>
</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-19T02:22:38.391158" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:22:38.391633" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:38.391928" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:38.388468" elapsed="0.003704"/>
</kw>
<msg time="2026-04-19T02:22:38.392265" level="INFO">${output} = 1</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-19T02:22:38.010425" elapsed="0.381865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:38.392721" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:38.392471" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:38.392808" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:38.392960" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:38.008405" elapsed="0.384581"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:38.393049" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:22:38.393199" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:38.006239" elapsed="0.386985"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:38.393804" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:38.393382" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:38.005104" elapsed="0.388887">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:40.397727" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:40.396792" elapsed="0.001010"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:40.399875" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:40.399266" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:40.401760" 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-19T02:22:40.401991" 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-19T02:22:40.401400" elapsed="0.000681"/>
</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-19T02:22:40.408432" elapsed="0.000221"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:40.407947" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:40.407628" elapsed="0.001126"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:40.410204" 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-19T02:22:40.410447" 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-19T02:22:40.409751" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:40.412075" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:40.411513" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:40.413936" level="INFO">${conn_id} = 431</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:40.413229" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:40.416367" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:40.416445" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:40.416084" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:40.416680" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:40.417967" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:40.739192" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:40.417639" elapsed="0.321705"/>
</kw>
<msg time="2026-04-19T02:22:40.739428" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:40.417252" elapsed="0.322266"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:40.415308" elapsed="0.324487"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:40.741288" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:40.764078" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:40.764309" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:40.764467" 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-19T02:22:40.740887" elapsed="0.023675"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:40.765572" elapsed="0.000438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:40.767054" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:40.766599" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:40.767566" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:40.767324" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:40.767265" elapsed="0.000433"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:40.768060" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:22:40.767844" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:40.767793" elapsed="0.000429"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:40.768305" 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-19T02:22:40.775067" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:40.775618" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:40.775976" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:40.769612" elapsed="0.006594"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:40.406316" elapsed="0.370112"/>
</kw>
<msg time="2026-04-19T02:22:40.776736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:40.404835" elapsed="0.371958"/>
</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-19T02:22:40.403613" elapsed="0.373260"/>
</kw>
<msg time="2026-04-19T02:22:40.776913" 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-19T02:22:40.402439" elapsed="0.374519"/>
</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-19T02:22:40.780131" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:22:40.780611" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:40.780905" 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-19T02:22:40.777324" elapsed="0.003744"/>
</kw>
<msg time="2026-04-19T02:22:40.781159" level="INFO">${output} = 1</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-19T02:22:40.400448" elapsed="0.380736"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:40.781612" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:40.781363" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:40.781737" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:22:40.781892" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:40.398308" elapsed="0.383609"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:40.781963" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:40.782120" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:40.395913" elapsed="0.386232"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:40.782691" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:40.782301" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:40.394825" elapsed="0.388047">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:42.786510" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:42.785711" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:42.788233" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:42.787821" elapsed="0.000450"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:42.789432" 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-19T02:22:42.789576" 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-19T02:22:42.789183" elapsed="0.000429"/>
</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-19T02:22:42.795155" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:42.794406" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:42.794314" elapsed="0.001033"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:42.797125" 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-19T02:22:42.797395" 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-19T02:22:42.796380" elapsed="0.001123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:42.799131" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:42.798527" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:42.801004" level="INFO">${conn_id} = 434</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:42.800272" elapsed="0.000914"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:42.803587" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:42.803668" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:42.803285" 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-19T02:22:42.803911" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:42.805457" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:43.135704" 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 Sun Apr 19 02:21:45 UTC 2026

  System load:  0.11               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:42.804953" elapsed="0.330916"/>
</kw>
<msg time="2026-04-19T02:22:43.135958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:42.804577" elapsed="0.331492"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:42.802444" elapsed="0.333919"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:43.137853" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:43.160972" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:43.161514" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:43.161850" 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-19T02:22:43.137460" elapsed="0.024643"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:43.164353" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:43.167528" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:43.166524" elapsed="0.001238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:43.168650" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:43.168145" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:43.167990" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:43.169891" elapsed="0.000308"/>
</return>
<status status="PASS" start="2026-04-19T02:22:43.169356" elapsed="0.000983"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:43.169229" elapsed="0.001247"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:43.170659" elapsed="0.000087"/>
</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-19T02:22:43.175869" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:22:43.176441" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:43.176803" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:43.172393" elapsed="0.004620"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:42.792397" elapsed="0.384857"/>
</kw>
<msg time="2026-04-19T02:22:43.177558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:42.791419" elapsed="0.386198"/>
</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-19T02:22:42.790626" elapsed="0.387073"/>
</kw>
<msg time="2026-04-19T02:22:43.177741" 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-19T02:22:42.789836" elapsed="0.387952"/>
</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-19T02:22:43.180840" 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-19T02:22:43.181334" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:43.181628" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:43.178144" elapsed="0.003633"/>
</kw>
<msg time="2026-04-19T02:22:43.181933" level="INFO">${output} = 1</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-19T02:22:42.788581" elapsed="0.393377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:43.182502" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:43.182243" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:43.182590" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:43.182743" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:42.787196" elapsed="0.395573"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:43.182817" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:43.182989" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:42.784852" elapsed="0.398164"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:43.183590" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:43.183192" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:42.783747" elapsed="0.400026">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:45.187491" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:45.186686" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:45.189231" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:45.188822" elapsed="0.000447"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:45.190403" 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-19T02:22:45.190550" 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-19T02:22:45.190174" elapsed="0.000414"/>
</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-19T02:22:45.195877" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:45.195249" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:45.195174" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:45.197882" 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-19T02:22:45.198146" 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-19T02:22:45.197184" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:45.199757" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:45.199212" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:45.201567" level="INFO">${conn_id} = 437</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:45.200851" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:45.203961" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:45.204080" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:45.203673" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:45.204320" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:45.205665" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:45.797859" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:45.205336" elapsed="0.592789"/>
</kw>
<msg time="2026-04-19T02:22:45.798208" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:45.204946" elapsed="0.593357"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:45.202902" elapsed="0.595685"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:45.800078" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:45.822757" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:45.823306" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:45.823646" 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-19T02:22:45.799669" elapsed="0.024192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:45.826175" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:45.829355" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:45.828367" elapsed="0.001223"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:45.830548" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:45.829937" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:45.829815" elapsed="0.001045"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:45.831967" elapsed="0.000292"/>
</return>
<status status="PASS" start="2026-04-19T02:22:45.831481" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:45.831357" elapsed="0.001222"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:45.832771" elapsed="0.000088"/>
</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-19T02:22:45.838060" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:22:45.838629" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:45.838996" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:45.834550" 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-19T02:22:45.193333" elapsed="0.646134"/>
</kw>
<msg time="2026-04-19T02:22:45.839788" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:45.192349" elapsed="0.647501"/>
</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-19T02:22:45.191549" elapsed="0.648387"/>
</kw>
<msg time="2026-04-19T02:22:45.839978" 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-19T02:22:45.190811" elapsed="0.649216"/>
</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-19T02:22:45.843112" 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-19T02:22:45.843617" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:45.843918" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:45.840423" elapsed="0.003761"/>
</kw>
<msg time="2026-04-19T02:22:45.844288" level="INFO">${output} = 1</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-19T02:22:45.189575" elapsed="0.654740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:45.844785" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:45.844529" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:45.844875" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:22:45.845046" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:45.188155" elapsed="0.656919"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:45.845123" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:22:45.845285" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:45.185814" elapsed="0.659497"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:45.845945" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:45.845527" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:45.184724" elapsed="0.661432">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:47.849828" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:47.848987" elapsed="0.000913"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:47.851486" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:47.851091" elapsed="0.000434"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:47.852718" 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-19T02:22:47.852866" 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-19T02:22:47.852478" elapsed="0.000426"/>
</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-19T02:22:47.858341" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:47.857679" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:47.857602" elapsed="0.000940"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:47.860908" 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-19T02:22:47.861300" 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-19T02:22:47.859912" elapsed="0.001568"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:47.863320" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:47.862748" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:47.865234" level="INFO">${conn_id} = 440</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:47.864426" elapsed="0.000908"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:47.867699" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:47.867779" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:47.867395" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:47.868021" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:47.869616" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:48.234997" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:47.869018" elapsed="0.366202"/>
</kw>
<msg time="2026-04-19T02:22:48.235336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:47.868644" elapsed="0.366810"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:47.866598" elapsed="0.369265"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:48.238144" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:48.261433" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:48.262005" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:48.262435" 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-19T02:22:48.237531" elapsed="0.025131"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:48.264997" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:48.268461" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:48.267442" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:48.269735" elapsed="0.000091"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:48.269108" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:48.268942" elapsed="0.001170"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:48.270682" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:22:48.270441" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:48.270334" elapsed="0.000509"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:48.270921" 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-19T02:22:48.275857" 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-19T02:22:48.276446" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:48.276810" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:48.272325" elapsed="0.004693"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:47.855675" elapsed="0.421585"/>
</kw>
<msg time="2026-04-19T02:22:48.277571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:47.854703" elapsed="0.422942"/>
</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-19T02:22:47.853925" elapsed="0.423805"/>
</kw>
<msg time="2026-04-19T02:22:48.277773" 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-19T02:22:47.853151" elapsed="0.424669"/>
</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-19T02:22:48.281196" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:22:48.281696" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:48.281989" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:48.278329" elapsed="0.003824"/>
</kw>
<msg time="2026-04-19T02:22:48.282246" level="INFO">${output} = 1</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-19T02:22:47.851834" elapsed="0.430438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:48.282725" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:48.282474" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:48.282812" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:22:48.282968" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:47.850481" elapsed="0.432512"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:48.283147" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:22:48.283301" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:47.848133" elapsed="0.435192"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:48.283894" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:48.283484" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:47.846993" elapsed="0.437111">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:50.287598" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:50.286834" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:50.289874" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:50.289262" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:50.291758" 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-19T02:22:50.291985" 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-19T02:22:50.291434" elapsed="0.000640"/>
</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-19T02:22:50.298187" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:50.297469" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:50.297413" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:50.299772" 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-19T02:22:50.300012" 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-19T02:22:50.299336" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:50.301666" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:50.301119" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:50.303485" level="INFO">${conn_id} = 443</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:50.302777" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:50.305913" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:50.305991" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:50.305632" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:50.306240" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:50.307512" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:50.629787" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:50.307187" elapsed="0.322749"/>
</kw>
<msg time="2026-04-19T02:22:50.630022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:50.306809" elapsed="0.323322"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:50.304786" elapsed="0.325635"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:50.632003" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:50.655395" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:50.655906" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:50.656316" 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-19T02:22:50.631581" elapsed="0.024975"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:50.658933" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:50.662422" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:50.661316" elapsed="0.001360"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:50.663786" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:50.663124" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:50.662964" elapsed="0.001024"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:50.664520" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T02:22:50.664224" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:50.664153" elapsed="0.000613"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:50.664881" elapsed="0.000056"/>
</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-19T02:22:50.671752" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T02:22:50.672335" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:50.672709" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:50.666974" elapsed="0.005962"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:50.296103" elapsed="0.377099"/>
</kw>
<msg time="2026-04-19T02:22:50.673523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:50.294945" elapsed="0.378643"/>
</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-19T02:22:50.293660" elapsed="0.380014"/>
</kw>
<msg time="2026-04-19T02:22:50.673725" 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-19T02:22:50.292432" elapsed="0.381348"/>
</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-19T02:22:50.676888" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:22:50.677405" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:50.677700" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:50.674172" elapsed="0.003678"/>
</kw>
<msg time="2026-04-19T02:22:50.677948" level="INFO">${output} = 1</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-19T02:22:50.290456" elapsed="0.387520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:50.678471" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:50.678216" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:50.678560" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:22:50.678716" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:50.288309" elapsed="0.390432"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:50.678790" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:50.678980" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:50.285962" elapsed="0.393047"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:50.679588" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:50.679187" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:50.284892" elapsed="0.394884">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:52.683373" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:52.682604" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:52.685217" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:52.684809" elapsed="0.000445"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:52.686372" 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-19T02:22:52.686638" 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-19T02:22:52.686142" elapsed="0.000537"/>
</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-19T02:22:52.692320" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:52.691622" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:52.691242" elapsed="0.001274"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:52.693958" 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-19T02:22:52.694232" 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-19T02:22:52.693521" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:52.695856" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:52.695316" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:52.697685" level="INFO">${conn_id} = 446</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:52.696966" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:52.700215" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:52.700293" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:52.699894" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:52.700529" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:52.701784" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:53.020771" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:52.701461" elapsed="0.319461"/>
</kw>
<msg time="2026-04-19T02:22:53.021011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:52.701098" elapsed="0.320027"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:52.698991" elapsed="0.322420"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:53.022914" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:53.045815" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:53.046358" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:53.046691" 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-19T02:22:53.022512" elapsed="0.024388"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:53.049183" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:53.052304" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:53.051317" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:53.053453" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:53.052890" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:53.052765" elapsed="0.000981"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:53.054695" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:22:53.054232" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:53.053965" elapsed="0.001119"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:53.055271" elapsed="0.000085"/>
</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-19T02:22:53.061185" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:22:53.061828" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:53.062214" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:53.057527" elapsed="0.004904"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:52.689388" elapsed="0.373273"/>
</kw>
<msg time="2026-04-19T02:22:53.062981" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:52.688435" elapsed="0.374622"/>
</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-19T02:22:52.687650" elapsed="0.375495"/>
</kw>
<msg time="2026-04-19T02:22:53.063188" 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-19T02:22:52.686905" elapsed="0.376330"/>
</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-19T02:22:53.066400" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:22:53.066923" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:53.067267" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:53.063532" elapsed="0.003888"/>
</kw>
<msg time="2026-04-19T02:22:53.067517" level="INFO">${output} = 1</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-19T02:22:52.685552" elapsed="0.381990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:53.068022" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:53.067757" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:53.068145" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:22:53.068315" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:52.683898" elapsed="0.384442"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:53.068388" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:53.068534" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:52.681761" elapsed="0.386798"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:53.069178" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:53.068717" elapsed="0.000538">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:52.680676" elapsed="0.388692">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:55.072890" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:55.072151" elapsed="0.000809"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:55.074556" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:55.074176" elapsed="0.000416"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:55.075727" 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-19T02:22:55.075868" 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-19T02:22:55.075497" elapsed="0.000408"/>
</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-19T02:22:55.081557" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:55.080852" elapsed="0.000885"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:55.080464" elapsed="0.001339"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:55.083264" 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-19T02:22:55.083510" 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-19T02:22:55.082802" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:55.085183" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:55.084617" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:55.086996" level="INFO">${conn_id} = 449</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:55.086289" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:55.089465" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:55.089544" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:55.089183" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:55.089781" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:55.091254" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:55.419539" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:55.090742" elapsed="0.328952"/>
</kw>
<msg time="2026-04-19T02:22:55.419786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:55.090373" elapsed="0.329506"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:55.088380" elapsed="0.331806"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:55.421702" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:55.444083" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:55.444577" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:55.444915" 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-19T02:22:55.421280" elapsed="0.023879"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:55.447419" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:55.450681" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:55.449668" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:55.452024" elapsed="0.000134"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:55.451436" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:55.451314" elapsed="0.001080"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:55.453494" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T02:22:55.452713" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:55.452607" elapsed="0.001170"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:55.453856" 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-19T02:22:55.460679" 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-19T02:22:55.461301" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:55.461678" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:55.455196" elapsed="0.006693"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:55.078596" elapsed="0.383533"/>
</kw>
<msg time="2026-04-19T02:22:55.462491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:55.077647" elapsed="0.384904"/>
</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-19T02:22:55.076865" elapsed="0.385767"/>
</kw>
<msg time="2026-04-19T02:22:55.462672" 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-19T02:22:55.076149" elapsed="0.386570"/>
</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-19T02:22:55.465835" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:22:55.466333" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:55.466628" elapsed="0.000169"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:55.463016" elapsed="0.003835"/>
</kw>
<msg time="2026-04-19T02:22:55.466941" level="INFO">${output} = 1</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-19T02:22:55.074897" elapsed="0.392069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:55.467447" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:55.467195" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:55.467536" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:22:55.467690" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:55.073510" elapsed="0.394206"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:55.467766" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:22:55.467907" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:55.071299" elapsed="0.396632"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:55.468491" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:55.468102" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:55.070189" elapsed="0.398485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:57.472239" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:57.471456" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:57.474336" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:57.473701" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:57.476221" 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-19T02:22:57.476448" 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-19T02:22:57.475849" elapsed="0.000657"/>
</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-19T02:22:57.481822" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:57.481354" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:57.481296" elapsed="0.000665"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:57.483672" 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-19T02:22:57.483917" 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-19T02:22:57.482959" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:57.485543" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:57.484984" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:57.487401" level="INFO">${conn_id} = 452</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:57.486694" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:57.489819" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:57.489896" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:57.489531" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:57.490144" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:57.491418" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:22:57.812400" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:57.491094" elapsed="0.321459"/>
</kw>
<msg time="2026-04-19T02:22:57.812638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:57.490719" elapsed="0.322027"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:57.488686" elapsed="0.324403"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:22:57.814576" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:22:57.837416" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:22:57.837918" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:22:57.838349" 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-19T02:22:57.814166" elapsed="0.024398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:57.840896" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:57.844159" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:57.843155" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:57.845531" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:22:57.844881" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:57.844702" elapsed="0.001137"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:22:57.846791" elapsed="0.000141"/>
</return>
<status status="PASS" start="2026-04-19T02:22:57.846202" elapsed="0.001008"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:57.846088" elapsed="0.001264"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:22:57.847532" 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-19T02:22:57.852695" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T02:22:57.853298" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:57.853698" 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-19T02:22:57.849142" elapsed="0.004768"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:57.479963" elapsed="0.374186"/>
</kw>
<msg time="2026-04-19T02:22:57.854454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:57.479266" elapsed="0.375253"/>
</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-19T02:22:57.478019" elapsed="0.376584"/>
</kw>
<msg time="2026-04-19T02:22:57.854674" 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-19T02:22:57.476860" elapsed="0.377862"/>
</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-19T02:22:57.857851" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:22:57.858345" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:22:57.858651" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:22:57.855171" elapsed="0.003630"/>
</kw>
<msg time="2026-04-19T02:22:57.858895" level="INFO">${output} = 1</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-19T02:22:57.474899" elapsed="0.384021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:57.859513" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:57.859257" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:22:57.859601" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:22:57.859762" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:57.472764" elapsed="0.387025"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:22:57.859837" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:22:57.859982" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:57.470602" elapsed="0.389404"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:22:57.860578" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:22:57.860180" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:57.469481" elapsed="0.391284">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:22:59.864347" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:22:59.863551" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:22:59.866514" level="INFO">${member_ip} = 10.30.171.206</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-19T02:22:59.865831" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:59.868280" 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-19T02:22:59.868424" 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-19T02:22:59.868053" elapsed="0.000409"/>
</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-19T02:22:59.873705" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:22:59.873083" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T02:22:59.872985" elapsed="0.000909"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:59.876247" 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-19T02:22:59.876592" 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-19T02:22:59.875257" elapsed="0.001473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:22:59.878292" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:22:59.877735" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:22:59.880163" level="INFO">${conn_id} = 455</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:22:59.879380" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:22:59.882512" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:22:59.882590" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:22:59.882230" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:59.882824" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:22:59.884328" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:00.205359" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:22:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:22:59.883856" elapsed="0.321646"/>
</kw>
<msg time="2026-04-19T02:23:00.205585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:59.883464" elapsed="0.322210"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:22:59.881447" elapsed="0.324502"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:00.207425" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:00.230072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:00.230590" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:00.230916" 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-19T02:23:00.207019" elapsed="0.024152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:00.233378" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:00.236498" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:00.235496" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:00.237749" elapsed="0.000081"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:00.237229" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:00.237091" elapsed="0.001102"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:00.239414" elapsed="0.000185"/>
</return>
<status status="PASS" start="2026-04-19T02:23:00.238626" elapsed="0.001101"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:00.238471" elapsed="0.001478"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:00.240457" elapsed="0.000109"/>
</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-19T02:23:00.245952" 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-19T02:23:00.246537" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:00.246901" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:00.242351" elapsed="0.004823"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:22:59.871167" elapsed="0.376234"/>
</kw>
<msg time="2026-04-19T02:23:00.247716" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:22:59.870193" elapsed="0.377582"/>
</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-19T02:22:59.869423" elapsed="0.378449"/>
</kw>
<msg time="2026-04-19T02:23:00.247917" 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-19T02:22:59.868686" elapsed="0.379280"/>
</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-19T02:23:00.250948" elapsed="0.000432"/>
</kw>
<kw name="Open 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-19T02:23:00.251548" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:00.251847" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:00.248277" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T02:23:00.252208" level="INFO">${output} = 1</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-19T02:22:59.867098" elapsed="0.385137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:00.252674" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:00.252419" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:00.252763" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:00.252921" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:22:59.864878" elapsed="0.388070"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:00.252997" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:23:00.253166" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:22:59.862707" elapsed="0.390484"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:00.253753" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:00.253349" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:22:59.861632" elapsed="0.392316">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:02.257566" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:02.256726" elapsed="0.000911"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:02.259020" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:02.258638" elapsed="0.000440"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:02.260207" 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-19T02:23:02.260352" 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-19T02:23:02.259962" elapsed="0.000428"/>
</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-19T02:23:02.266162" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:02.265483" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:02.265406" elapsed="0.000952"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:02.268746" 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-19T02:23:02.269156" 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-19T02:23:02.267730" elapsed="0.001567"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:02.271126" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:02.270483" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:02.272912" level="INFO">${conn_id} = 458</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:02.272210" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:02.275532" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:02.275611" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:02.275240" 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-19T02:23:02.275850" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:02.277156" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:02.600173" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:02.276792" elapsed="0.323622"/>
</kw>
<msg time="2026-04-19T02:23:02.600498" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:02.276427" elapsed="0.324157"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:02.274283" elapsed="0.326569"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:02.602375" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:02.625505" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:02.625956" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:02.626346" 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-19T02:23:02.601956" elapsed="0.024607"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:02.628898" elapsed="0.000995"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:02.632292" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:02.631267" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:02.633454" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:02.632879" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:02.632751" elapsed="0.001002"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:02.634558" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T02:23:02.634105" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:02.633965" elapsed="0.000959"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:02.635260" elapsed="0.000087"/>
</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-19T02:23:02.641697" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T02:23:02.642284" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:02.642655" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:02.638162" elapsed="0.004700"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:02.263478" elapsed="0.379675"/>
</kw>
<msg time="2026-04-19T02:23:02.643456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:02.262507" elapsed="0.381014"/>
</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-19T02:23:02.261363" elapsed="0.382245"/>
</kw>
<msg time="2026-04-19T02:23:02.643650" 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-19T02:23:02.260612" elapsed="0.383086"/>
</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-19T02:23:02.646707" 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-19T02:23:02.647284" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:02.647583" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:02.643991" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T02:23:02.647825" level="INFO">${output} = 1</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-19T02:23:02.259386" elapsed="0.388465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:02.648298" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:02.648046" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:02.648386" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:02.648543" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:02.258062" elapsed="0.390506"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:02.648616" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:02.648764" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:02.255879" elapsed="0.392910"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:02.649475" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:02.649021" elapsed="0.000535">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:02.254790" elapsed="0.394885">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:04.653365" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:04.652595" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:04.655539" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:04.654891" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:04.657431" 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-19T02:23:04.657660" 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-19T02:23:04.657075" elapsed="0.000645"/>
</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-19T02:23:04.662551" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:04.661807" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:04.661752" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:04.664118" 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-19T02:23:04.664362" 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-19T02:23:04.663670" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:04.665964" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:04.665423" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:04.667798" level="INFO">${conn_id} = 461</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:04.667101" elapsed="0.000795"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:04.670290" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:04.670370" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:04.669851" elapsed="0.000543"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:04.670605" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:04.671872" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:04.998676" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:04.671550" elapsed="0.327283"/>
</kw>
<msg time="2026-04-19T02:23:04.998921" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:04.671188" elapsed="0.327826"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:04.669095" elapsed="0.330231"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:05.000845" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:05.024044" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:05.024285" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:05.024438" 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-19T02:23:05.000444" elapsed="0.024091"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:05.025544" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:05.027059" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:05.026586" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:05.027594" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:05.027337" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:05.027276" elapsed="0.000457"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:05.028104" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:23:05.027879" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:05.027830" elapsed="0.000438"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:05.028347" 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-19T02:23:05.033090" 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-19T02:23:05.033644" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:05.034003" elapsed="0.000264"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:05.029689" elapsed="0.004697"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:04.660429" elapsed="0.374180"/>
</kw>
<msg time="2026-04-19T02:23:05.034916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:04.659732" elapsed="0.375243"/>
</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-19T02:23:04.659194" elapsed="0.375879"/>
</kw>
<msg time="2026-04-19T02:23:05.035116" 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-19T02:23:04.658149" elapsed="0.377014"/>
</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-19T02:23:05.038284" 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-19T02:23:05.038798" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:05.039113" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:05.035461" elapsed="0.003803"/>
</kw>
<msg time="2026-04-19T02:23:05.039356" level="INFO">${output} = 1</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-19T02:23:04.656126" elapsed="0.383257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:05.039827" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:05.039575" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:05.039915" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:05.040128" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:04.653893" elapsed="0.386262"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:05.040203" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:23:05.040353" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:04.651711" elapsed="0.388668"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:05.040941" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:05.040537" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:04.650579" elapsed="0.390566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:07.044850" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:07.044058" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:07.047637" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:07.046668" elapsed="0.001036"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:07.049000" 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-19T02:23:07.049166" 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-19T02:23:07.048775" elapsed="0.000429"/>
</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-19T02:23:07.055135" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:07.054452" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:07.054010" elapsed="0.001322"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:07.057065" 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-19T02:23:07.057307" 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-19T02:23:07.056592" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:07.058909" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:07.058369" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:07.060755" level="INFO">${conn_id} = 464</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:07.060059" elapsed="0.000794"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:07.063229" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:07.063307" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:07.062825" elapsed="0.000506"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:07.063561" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:07.064816" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:07.378348" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:07.064491" elapsed="0.314017"/>
</kw>
<msg time="2026-04-19T02:23:07.378593" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:07.064130" elapsed="0.314557"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:07.062063" elapsed="0.316914"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:07.380542" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:07.403496" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:07.404068" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:07.404436" 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-19T02:23:07.380136" elapsed="0.024506"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:07.406869" elapsed="0.000989"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:07.410249" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:07.409167" elapsed="0.001345"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:07.411740" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:07.410866" elapsed="0.001056"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:07.410741" elapsed="0.001338"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:07.412513" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:23:07.412298" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:07.412247" elapsed="0.000428"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:07.412788" 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-19T02:23:07.417600" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:23:07.418248" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:07.418623" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:07.414141" elapsed="0.004696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:07.052176" elapsed="0.366965"/>
</kw>
<msg time="2026-04-19T02:23:07.419457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:07.051153" elapsed="0.368366"/>
</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-19T02:23:07.050234" elapsed="0.369372"/>
</kw>
<msg time="2026-04-19T02:23:07.419717" 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-19T02:23:07.049439" elapsed="0.370335"/>
</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-19T02:23:07.422735" elapsed="0.000433"/>
</kw>
<kw name="Open 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-19T02:23:07.423337" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:07.423690" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:07.420092" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T02:23:07.423938" level="INFO">${output} = 1</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-19T02:23:07.048195" elapsed="0.375768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:07.424405" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:07.424156" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:07.424491" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:23:07.424643" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:07.045612" elapsed="0.379055"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:07.424714" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:07.424859" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:07.043146" elapsed="0.381737"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:07.425444" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:07.425052" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:07.041943" elapsed="0.383687">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:09.429302" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:09.428409" elapsed="0.000992"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:09.432114" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:09.431387" elapsed="0.000791"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:09.433741" 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-19T02:23:09.434092" 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-19T02:23:09.433484" elapsed="0.000653"/>
</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-19T02:23:09.438432" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:09.437935" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:09.437640" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:09.440093" 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-19T02:23:09.440369" 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-19T02:23:09.439604" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:09.442133" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:09.441564" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:09.444019" level="INFO">${conn_id} = 467</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:09.443306" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:09.446559" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:09.446638" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:09.446266" 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-19T02:23:09.446877" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:09.448169" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:09.789792" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:09.447828" elapsed="0.342119"/>
</kw>
<msg time="2026-04-19T02:23:09.790051" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:09.447466" elapsed="0.342677"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:09.445445" elapsed="0.344981"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:09.791906" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:09.815246" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:09.815564" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:09.815772" 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-19T02:23:09.791518" elapsed="0.024387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:09.817353" elapsed="0.000566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:09.819364" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:09.818729" elapsed="0.000777"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:09.820093" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:09.819737" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:09.819654" 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-19T02:23:09.820769" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:23:09.820488" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:09.820421" elapsed="0.000589"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:09.821162" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:09.830434" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T02:23:09.831285" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:09.831781" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:09.823119" elapsed="0.008971"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:09.436247" elapsed="0.396153"/>
</kw>
<msg time="2026-04-19T02:23:09.832826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:09.435517" elapsed="0.397421"/>
</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-19T02:23:09.434954" elapsed="0.398117"/>
</kw>
<msg time="2026-04-19T02:23:09.833130" 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-19T02:23:09.434399" elapsed="0.398794"/>
</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-19T02:23:09.836191" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:23:09.836664" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:09.836970" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:09.833495" elapsed="0.003640"/>
</kw>
<msg time="2026-04-19T02:23:09.837223" level="INFO">${output} = 1</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-19T02:23:09.432743" elapsed="0.404505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:09.837680" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:09.837429" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:09.837766" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:09.837917" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:09.430072" elapsed="0.407869"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:09.837986" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:09.838155" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:09.427540" elapsed="0.410640"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:09.838728" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:09.838340" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:09.426467" elapsed="0.412443">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:11.842706" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:11.841843" elapsed="0.000938"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:11.845066" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:11.844363" elapsed="0.000772"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:11.847102" 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-19T02:23:11.847352" 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-19T02:23:11.846722" elapsed="0.000695"/>
</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-19T02:23:11.853099" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:11.852605" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:11.852548" elapsed="0.000766"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:11.855004" 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-19T02:23:11.855278" 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-19T02:23:11.854318" elapsed="0.001060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:11.856919" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:11.856370" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:11.858743" level="INFO">${conn_id} = 470</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:11.858039" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:11.861165" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:11.861246" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:11.860854" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:11.861482" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:11.862791" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:12.229133" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:11.862460" elapsed="0.366827"/>
</kw>
<msg time="2026-04-19T02:23:12.229372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:11.862088" elapsed="0.367375"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:11.860054" elapsed="0.369721"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:12.231457" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:12.254649" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:12.255211" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:12.255542" 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-19T02:23:12.231016" elapsed="0.024734"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:12.257955" elapsed="0.000953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:12.261186" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:12.260197" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:12.262366" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:12.261759" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:12.261636" elapsed="0.001028"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:12.263372" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:23:12.262989" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:12.262879" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:12.263619" 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-19T02:23:12.268607" 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-19T02:23:12.269182" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:12.269545" 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-19T02:23:12.265007" elapsed="0.004751"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:11.851205" elapsed="0.418780"/>
</kw>
<msg time="2026-04-19T02:23:12.270403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:11.850422" elapsed="0.420045"/>
</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-19T02:23:11.849154" elapsed="0.421399"/>
</kw>
<msg time="2026-04-19T02:23:12.270594" 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-19T02:23:11.847801" elapsed="0.422840"/>
</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-19T02:23:12.273700" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:12.274215" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:12.274517" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:12.270936" elapsed="0.003731"/>
</kw>
<msg time="2026-04-19T02:23:12.274761" level="INFO">${output} = 1</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-19T02:23:11.845667" elapsed="0.429121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:12.275248" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:12.274975" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:12.275338" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:12.275494" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:11.843309" elapsed="0.432211"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:12.275569" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:12.275716" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:11.840910" elapsed="0.434832"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:12.276393" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:12.275899" elapsed="0.000567">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:11.839701" elapsed="0.436876">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:14.280109" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:14.279340" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:14.282447" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:14.281803" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:14.284414" 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-19T02:23:14.284559" 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-19T02:23:14.284099" elapsed="0.000497"/>
</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-19T02:23:14.289957" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:14.289321" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:14.289243" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:14.292534" 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-19T02:23:14.292880" 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-19T02:23:14.291554" elapsed="0.001467"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:14.294680" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:14.294137" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:14.296637" level="INFO">${conn_id} = 473</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:14.295858" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:14.299026" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:14.299124" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:14.298745" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:14.299367" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:14.300760" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:14.607952" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:14.300430" elapsed="0.307685"/>
</kw>
<msg time="2026-04-19T02:23:14.608198" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:14.299927" elapsed="0.308356"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:14.297960" elapsed="0.310602"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:14.610086" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:14.632654" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:14.633211" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:14.633544" 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-19T02:23:14.609651" elapsed="0.024106"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:14.636425" elapsed="0.000915"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:14.639694" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:14.638645" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:14.640819" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:14.640312" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:14.640189" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:14.641925" elapsed="0.000174"/>
</return>
<status status="PASS" start="2026-04-19T02:23:14.641474" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:14.641365" elapsed="0.001022"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:14.642469" 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-19T02:23:14.647462" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:23:14.648008" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:14.648384" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:14.643985" elapsed="0.004611"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:14.287313" elapsed="0.361515"/>
</kw>
<msg time="2026-04-19T02:23:14.649154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:14.286343" elapsed="0.362878"/>
</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-19T02:23:14.285579" elapsed="0.363723"/>
</kw>
<msg time="2026-04-19T02:23:14.649343" 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-19T02:23:14.284818" elapsed="0.364572"/>
</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-19T02:23:14.652568" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:23:14.653068" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:14.653370" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:14.649752" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T02:23:14.653622" level="INFO">${output} = 1</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-19T02:23:14.282993" elapsed="0.370655"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:14.654109" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:14.653828" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:14.654200" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:14.654368" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:14.280636" elapsed="0.373759"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:14.654443" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:14.654590" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:14.278488" elapsed="0.376128"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:14.655250" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:14.654774" elapsed="0.000548">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:14.277439" elapsed="0.377999">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:16.659621" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:16.658836" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:16.661882" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:16.661266" elapsed="0.000677"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:16.663763" 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-19T02:23:16.663993" 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-19T02:23:16.663430" elapsed="0.000656"/>
</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-19T02:23:16.670063" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:16.669409" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:16.669331" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:16.672777" 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-19T02:23:16.673174" 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-19T02:23:16.671740" elapsed="0.001573"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:16.674896" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:16.674341" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:16.676749" level="INFO">${conn_id} = 476</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:16.675998" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:16.679304" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:16.679389" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:16.678970" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:16.679636" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:16.681038" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:17.005203" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:16.680702" elapsed="0.324628"/>
</kw>
<msg time="2026-04-19T02:23:17.005413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:16.680308" elapsed="0.325186"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:16.678200" elapsed="0.327552"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:17.007225" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:17.029525" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:17.029747" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:17.029894" 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-19T02:23:17.006805" elapsed="0.023183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:17.030978" elapsed="0.000431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:17.032438" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:17.031972" elapsed="0.000593"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:17.032969" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:17.032729" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:17.032671" elapsed="0.000481"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:17.033502" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T02:23:17.033301" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:17.033252" elapsed="0.000415"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:17.033746" 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-19T02:23:17.038460" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:23:17.039009" elapsed="0.000401"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:17.039612" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:17.035093" elapsed="0.004729"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:16.667404" elapsed="0.372657"/>
</kw>
<msg time="2026-04-19T02:23:17.040374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:16.666431" elapsed="0.374003"/>
</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-19T02:23:16.665652" elapsed="0.374863"/>
</kw>
<msg time="2026-04-19T02:23:17.040558" 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-19T02:23:16.664514" elapsed="0.376105"/>
</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-19T02:23:17.043679" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:23:17.044213" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:17.044511" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:17.040917" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T02:23:17.044854" level="INFO">${output} = 1</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-19T02:23:16.662469" elapsed="0.382411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:17.045341" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:17.045083" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:17.045430" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:17.045583" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:16.660261" elapsed="0.385349"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:17.045658" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:17.045807" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:16.657747" elapsed="0.388085"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:17.046400" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:17.045991" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:16.656502" elapsed="0.390079">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:19.050275" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:19.049497" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:19.052475" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:19.051774" elapsed="0.000762"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:19.054002" 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-19T02:23:19.054180" 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-19T02:23:19.053779" elapsed="0.000440"/>
</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-19T02:23:19.059890" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:19.058890" elapsed="0.001166"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:19.058812" elapsed="0.001334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:19.061705" 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-19T02:23:19.061953" 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-19T02:23:19.061251" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:19.063658" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:19.063100" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:19.065488" level="INFO">${conn_id} = 479</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:19.064766" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:19.067910" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:19.068014" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:19.067624" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:19.068267" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:19.069535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:19.383052" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:19.069198" elapsed="0.314103"/>
</kw>
<msg time="2026-04-19T02:23:19.383387" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:19.068821" elapsed="0.314663"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:19.066808" elapsed="0.316949"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:19.385269" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:19.408189" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:19.408681" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:19.409010" 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-19T02:23:19.384849" elapsed="0.024413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:19.411598" elapsed="0.000602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:19.413610" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:19.412972" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:19.414419" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:19.413978" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:19.413900" elapsed="0.000710"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:19.415261" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:23:19.414817" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:19.414749" elapsed="0.000769"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:19.415631" elapsed="0.000051"/>
</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-19T02:23:19.421549" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:19.422130" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:19.422487" 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-19T02:23:19.417453" elapsed="0.005241"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:19.056951" elapsed="0.365974"/>
</kw>
<msg time="2026-04-19T02:23:19.423346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:19.055982" elapsed="0.367424"/>
</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-19T02:23:19.055217" elapsed="0.368273"/>
</kw>
<msg time="2026-04-19T02:23:19.423531" 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-19T02:23:19.054444" elapsed="0.369133"/>
</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-19T02:23:19.426531" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:23:19.427028" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:19.427376" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:19.423866" elapsed="0.003658"/>
</kw>
<msg time="2026-04-19T02:23:19.427619" level="INFO">${output} = 1</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-19T02:23:19.053082" elapsed="0.374563"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:19.428085" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:19.427821" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:19.428173" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:19.428326" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:19.050809" elapsed="0.377543"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:19.428398" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:19.428543" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:19.048612" elapsed="0.379955"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:19.429195" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:19.428776" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:19.047431" elapsed="0.381964">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:21.432875" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:21.432128" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:21.434501" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:21.434117" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:21.435664" 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-19T02:23:21.435805" 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-19T02:23:21.435433" elapsed="0.000410"/>
</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-19T02:23:21.441714" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:21.440966" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:21.440576" elapsed="0.001280"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:21.443509" 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-19T02:23:21.443754" 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-19T02:23:21.443065" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:21.445468" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:21.444858" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:21.447282" level="INFO">${conn_id} = 482</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:21.446566" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:21.449873" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:21.449951" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:21.449584" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:21.450200" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:21.451456" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:21.753492" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:21.451131" elapsed="0.302493"/>
</kw>
<msg time="2026-04-19T02:23:21.753703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:21.450756" elapsed="0.303030"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:21.448625" elapsed="0.305450"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:21.755583" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:21.778298" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:21.778797" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:21.779197" 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-19T02:23:21.755189" elapsed="0.024267"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:21.781692" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:21.784909" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:21.783904" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:21.786026" elapsed="0.000103"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:21.785528" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:21.785405" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:21.787169" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:23:21.786676" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:21.786569" elapsed="0.001025"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:21.787748" 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-19T02:23:21.792540" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:23:21.793104" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:21.793462" 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-19T02:23:21.789156" elapsed="0.004514"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:21.438515" elapsed="0.355379"/>
</kw>
<msg time="2026-04-19T02:23:21.794219" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:21.437569" elapsed="0.356707"/>
</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-19T02:23:21.436793" elapsed="0.357564"/>
</kw>
<msg time="2026-04-19T02:23:21.794398" 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-19T02:23:21.436083" elapsed="0.358360"/>
</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-19T02:23:21.797525" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:23:21.798011" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:21.798350" 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-19T02:23:21.794730" elapsed="0.003775"/>
</kw>
<msg time="2026-04-19T02:23:21.798602" level="INFO">${output} = 1</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-19T02:23:21.434841" elapsed="0.363791"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:21.799085" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:21.798815" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:21.799176" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:23:21.799335" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:21.433490" elapsed="0.365870"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:21.799408" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:23:21.799579" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:21.431284" elapsed="0.368321"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:21.800198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:21.799762" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:21.430232" elapsed="0.370161">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:23.803877" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:23.803150" elapsed="0.000795"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:23.806275" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:23.805568" elapsed="0.000771"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:23.807654" 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-19T02:23:23.807810" 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-19T02:23:23.807424" elapsed="0.000427"/>
</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-19T02:23:23.814111" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:23.813247" elapsed="0.001031"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:23.812850" elapsed="0.001528"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:23.815960" 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-19T02:23:23.816234" 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-19T02:23:23.815513" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:23.817911" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:23.817340" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:23.819789" level="INFO">${conn_id} = 485</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:23.819073" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:23.822294" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:23.822380" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:23.821960" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:23.822634" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:23.824118" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:24.139525" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:23.823773" elapsed="0.315918"/>
</kw>
<msg time="2026-04-19T02:23:24.139802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:23.823394" elapsed="0.316509"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:23.821181" elapsed="0.319040"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:24.141743" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:24.165239" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:24.165735" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:24.166117" 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-19T02:23:24.141338" elapsed="0.024992"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:24.168599" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:24.171751" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:24.170745" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:24.173099" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:24.172467" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:24.172344" elapsed="0.001049"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:24.174187" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:23:24.173710" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:24.173604" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:24.174705" elapsed="0.000080"/>
</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-19T02:23:24.182666" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T02:23:24.183321" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:24.183694" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:24.177278" elapsed="0.006956"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:23.810809" elapsed="0.373651"/>
</kw>
<msg time="2026-04-19T02:23:24.184774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:23.809762" elapsed="0.375078"/>
</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-19T02:23:23.808917" elapsed="0.376004"/>
</kw>
<msg time="2026-04-19T02:23:24.184961" 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-19T02:23:23.808133" elapsed="0.376872"/>
</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-19T02:23:24.188125" 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-19T02:23:24.188618" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:24.188916" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:24.185330" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T02:23:24.189181" level="INFO">${output} = 1</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-19T02:23:23.806768" elapsed="0.382438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:24.189665" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:24.189411" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:24.189760" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:23:24.189920" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:23.804597" elapsed="0.385348"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:24.189991" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:24.190152" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:23.802301" elapsed="0.387876"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:24.190724" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:24.190331" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:23.801227" elapsed="0.389683">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:26.194663" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:26.193832" elapsed="0.000902"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:26.196907" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:26.196258" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:26.198877" 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-19T02:23:26.199299" 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-19T02:23:26.198524" elapsed="0.000839"/>
</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-19T02:23:26.205288" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:26.204792" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:26.204718" elapsed="0.000716"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:26.207210" 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-19T02:23:26.207463" 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-19T02:23:26.206440" elapsed="0.001124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:26.209162" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:26.208570" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:26.210988" level="INFO">${conn_id} = 488</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:26.210265" elapsed="0.000918"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:26.213523" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:26.213603" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:26.213228" 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-19T02:23:26.213852" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:26.215226" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:26.521136" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:26.214823" elapsed="0.306471"/>
</kw>
<msg time="2026-04-19T02:23:26.521376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:26.214443" elapsed="0.307017"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:26.212423" elapsed="0.309305"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:26.523223" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:26.545840" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:26.546384" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:26.546721" 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-19T02:23:26.522806" elapsed="0.024131"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:26.549215" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:26.552488" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:26.551454" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:26.553798" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:26.553101" elapsed="0.000801"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:26.552944" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:26.554350" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T02:23:26.554131" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:26.554080" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:26.554597" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:26.559461" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:23:26.560198" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:26.560581" 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-19T02:23:26.555949" elapsed="0.004845"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:26.202723" elapsed="0.358296"/>
</kw>
<msg time="2026-04-19T02:23:26.561374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:26.201727" elapsed="0.359710"/>
</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-19T02:23:26.200932" elapsed="0.360588"/>
</kw>
<msg time="2026-04-19T02:23:26.561561" 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-19T02:23:26.199749" elapsed="0.361859"/>
</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-19T02:23:26.564686" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:23:26.565183" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:26.565490" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:26.561900" elapsed="0.003739"/>
</kw>
<msg time="2026-04-19T02:23:26.565731" level="INFO">${output} = 1</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-19T02:23:26.197526" elapsed="0.368230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:26.566224" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:26.565955" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:26.566311" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:26.566464" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:26.195248" elapsed="0.371241"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:26.566535" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:26.566682" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:26.192948" elapsed="0.373758"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:26.567274" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:26.566862" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:26.191753" elapsed="0.375704">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:28.571322" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:28.570377" elapsed="0.001019"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:28.573749" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:28.572912" elapsed="0.000900"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:28.575744" 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-19T02:23:28.575901" 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-19T02:23:28.575338" elapsed="0.000591"/>
</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-19T02:23:28.579981" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:28.579470" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:28.579409" elapsed="0.000829"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:28.581995" 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-19T02:23:28.582277" 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-19T02:23:28.581276" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:28.584018" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:28.583417" elapsed="0.000739"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:28.585909" level="INFO">${conn_id} = 491</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:28.585177" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:28.588475" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:28.588554" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:28.588182" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:28.588797" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:28.590117" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:28.893945" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:28.589757" elapsed="0.304359"/>
</kw>
<msg time="2026-04-19T02:23:28.894204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:28.589391" elapsed="0.304905"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:28.587352" elapsed="0.307228"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:28.896194" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:28.918519" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:28.919026" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:28.919508" 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-19T02:23:28.895742" elapsed="0.024011"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:28.922295" elapsed="0.001047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:28.925941" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:28.924813" elapsed="0.001408"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:28.927250" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:28.926640" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:28.926505" elapsed="0.001107"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:28.928703" elapsed="0.000167"/>
</return>
<status status="PASS" start="2026-04-19T02:23:28.927990" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:28.927872" elapsed="0.001137"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:28.929113" 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-19T02:23:28.934114" 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-19T02:23:28.934702" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:28.935115" 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-19T02:23:28.930493" elapsed="0.004841"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:28.577929" elapsed="0.357668"/>
</kw>
<msg time="2026-04-19T02:23:28.935996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:28.577220" elapsed="0.358898"/>
</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-19T02:23:28.576649" elapsed="0.359559"/>
</kw>
<msg time="2026-04-19T02:23:28.936252" 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-19T02:23:28.576110" elapsed="0.360189"/>
</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-19T02:23:28.939443" 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-19T02:23:28.939956" elapsed="0.000282"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:28.940396" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:28.936646" elapsed="0.003920"/>
</kw>
<msg time="2026-04-19T02:23:28.940676" level="INFO">${output} = 1</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-19T02:23:28.574345" elapsed="0.366363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:28.941191" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:28.940892" elapsed="0.000346"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:28.941283" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:28.941440" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:28.571917" elapsed="0.369549"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:28.941514" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:28.941677" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:28.569497" elapsed="0.372214"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:28.942318" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:28.941879" elapsed="0.000515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:28.568345" elapsed="0.374165">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:30.946063" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:30.945261" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:30.948192" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:30.947550" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:30.950146" 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-19T02:23:30.950395" 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-19T02:23:30.949755" elapsed="0.000700"/>
</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-19T02:23:30.956379" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:30.955898" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:30.955841" elapsed="0.000676"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:30.958271" 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-19T02:23:30.958522" 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-19T02:23:30.957552" elapsed="0.001074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:30.960204" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:30.959609" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:30.962119" level="INFO">${conn_id} = 494</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:30.961392" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:30.964588" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:30.964666" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:30.964307" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:30.964904" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:30.966227" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:31.271764" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:30.965880" elapsed="0.305968"/>
</kw>
<msg time="2026-04-19T02:23:31.271910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:30.965516" elapsed="0.306468"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:30.963439" elapsed="0.308788"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:31.273556" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:31.296630" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:31.297232" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:31.297577" 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-19T02:23:31.273233" elapsed="0.024557"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:31.300051" elapsed="0.000869"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:31.303171" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:31.302218" elapsed="0.001181"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:31.304256" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:31.303737" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:31.303617" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:31.305333" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:23:31.304862" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:31.304757" elapsed="0.000922"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:31.305854" elapsed="0.000081"/>
</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-19T02:23:31.311280" 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-19T02:23:31.311818" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:31.312187" 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-19T02:23:31.307819" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:30.954512" elapsed="0.358106"/>
</kw>
<msg time="2026-04-19T02:23:31.312926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:30.953291" elapsed="0.359693"/>
</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-19T02:23:30.952009" elapsed="0.361077"/>
</kw>
<msg time="2026-04-19T02:23:31.313129" 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-19T02:23:30.950833" elapsed="0.362343"/>
</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-19T02:23:31.316325" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:23:31.316802" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:31.317120" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:31.313533" elapsed="0.003736"/>
</kw>
<msg time="2026-04-19T02:23:31.317360" level="INFO">${output} = 1</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-19T02:23:30.948762" elapsed="0.368623"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:31.317808" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:31.317561" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:31.317897" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:31.318067" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:30.946600" elapsed="0.371494"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:31.318152" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:23:31.318301" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:30.944425" elapsed="0.373901"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:31.318984" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:31.318586" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:30.943370" elapsed="0.375816">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:33.322827" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:33.322105" elapsed="0.000791"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:33.325101" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:33.324423" elapsed="0.000744"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:33.327116" 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-19T02:23:33.327363" 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-19T02:23:33.326736" elapsed="0.000691"/>
</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-19T02:23:33.333666" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:33.332921" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:33.332864" elapsed="0.000942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:33.335272" 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-19T02:23:33.335519" 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-19T02:23:33.334809" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:33.337182" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:33.336604" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:33.339006" level="INFO">${conn_id} = 497</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:33.338306" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:33.341523" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:33.341600" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:33.341238" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:33.341835" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:33.343202" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:33.656583" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:33.342862" elapsed="0.313964"/>
</kw>
<msg time="2026-04-19T02:23:33.656980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:33.342500" elapsed="0.314661"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:33.340333" elapsed="0.317377"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:33.660834" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:33.684321" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:33.684910" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:33.685294" 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-19T02:23:33.660071" elapsed="0.025434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:33.687809" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:33.691026" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:33.690007" elapsed="0.001362"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:33.692235" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:33.691715" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:33.691591" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:33.693291" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:23:33.692826" elapsed="0.000687"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:33.692723" elapsed="0.000913"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:33.693810" elapsed="0.000080"/>
</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-19T02:23:33.699415" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:23:33.699976" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:33.700357" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:33.695940" elapsed="0.004625"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:33.331536" elapsed="0.369345"/>
</kw>
<msg time="2026-04-19T02:23:33.701213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:33.330567" elapsed="0.370710"/>
</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-19T02:23:33.329199" elapsed="0.372162"/>
</kw>
<msg time="2026-04-19T02:23:33.701402" 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-19T02:23:33.327804" elapsed="0.373644"/>
</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-19T02:23:33.704528" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:23:33.705003" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:33.705318" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:33.701738" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T02:23:33.705630" level="INFO">${output} = 1</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-19T02:23:33.325689" elapsed="0.379967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:33.706151" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:33.705867" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:33.706239" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:23:33.706396" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:33.323406" elapsed="0.383015"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:33.706469" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:23:33.706633" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:33.321191" elapsed="0.385468"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:33.707303" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:33.706818" elapsed="0.000565">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:33.320081" elapsed="0.387420">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:35.711203" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:23:35.710436" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:35.713307" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:35.712676" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:35.714859" 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-19T02:23:35.715003" 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-19T02:23:35.714629" elapsed="0.000430"/>
</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-19T02:23:35.720614" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:35.719946" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:35.719564" elapsed="0.001241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:35.722627" 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-19T02:23:35.722869" 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-19T02:23:35.722190" elapsed="0.000778"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:35.724545" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:35.723936" elapsed="0.000716"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:35.726392" level="INFO">${conn_id} = 500</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:35.725665" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:35.728878" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:35.728957" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:35.728580" 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-19T02:23:35.729211" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:35.730548" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:36.047064" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:35.730215" elapsed="0.317130"/>
</kw>
<msg time="2026-04-19T02:23:36.047442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:35.729826" elapsed="0.317707"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:35.727696" elapsed="0.320151"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.049462" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:23:36.072724" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:36.073378" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:23:36.073723" 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-19T02:23:36.049018" elapsed="0.024921"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:36.076345" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.079688" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:36.078657" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:36.080856" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:36.080318" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:36.080195" elapsed="0.001024"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:36.082014" elapsed="0.000430"/>
</return>
<status status="PASS" start="2026-04-19T02:23:36.081537" elapsed="0.001031"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:36.081431" elapsed="0.001265"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:36.082872" elapsed="0.000085"/>
</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-19T02:23:36.087797" 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-19T02:23:36.088372" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:36.088732" 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-19T02:23:36.084320" elapsed="0.004617"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:35.717736" elapsed="0.371439"/>
</kw>
<msg time="2026-04-19T02:23:36.089480" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:35.716759" elapsed="0.372777"/>
</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-19T02:23:35.715998" elapsed="0.373618"/>
</kw>
<msg time="2026-04-19T02:23:36.089658" 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-19T02:23:35.715286" elapsed="0.374418"/>
</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-19T02:23:36.092867" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:23:36.093359" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:36.093651" 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-19T02:23:36.089993" elapsed="0.003805"/>
</kw>
<msg time="2026-04-19T02:23:36.093889" level="INFO">${output} = 1</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-19T02:23:35.713990" elapsed="0.379924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.094382" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:36.094132" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:36.094470" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:23:36.094621" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:35.711733" elapsed="0.382913"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:23:36.094692" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:23:36.094835" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:23:35.709457" elapsed="0.385403"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.095481" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:23:36.095080" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:23:35.708361" elapsed="0.387309">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T02:23:36.095758" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T02:17:34.483497" elapsed="361.612355">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:17:34.483355" elapsed="361.612568">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T02:17:28.387958" elapsed="367.708029">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:36.096235" elapsed="0.000025"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:23:36.096303" elapsed="0.000016"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T02:17:26.022574" elapsed="370.073826">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:17:26.021818" elapsed="370.074749">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s13-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T02:23:36.101127" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:36.100719" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.101622" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:36.101316" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:36.101693" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:36.101846" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:36.100336" elapsed="0.001535"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.104190" 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-19T02:23:36.104289" 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-19T02:23:36.104041" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:36.106328" level="INFO">${ip_address} = 10.30.171.9</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-19T02:23:36.105985" elapsed="0.000369"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:36.106403" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:36.106555" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:36.105667" elapsed="0.000913"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.110052" level="INFO">${odl_connection} = 503</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:36.109327" elapsed="0.000858"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.112806" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:36.112883" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:36.112519" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.113112" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.114488" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:36.828092" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:17:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:36.114008" elapsed="0.714219"/>
</kw>
<msg time="2026-04-19T02:23:36.828309" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.113650" elapsed="0.714746"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:36.111995" elapsed="0.716510"/>
</kw>
<msg time="2026-04-19T02:23:36.828558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.111606" elapsed="0.717002"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:36.110722" elapsed="0.718059"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:36.828879" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:36.108215" elapsed="0.720991"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.832389" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:36.845169" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:36.845435" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:36.845535" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:36.845629" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:36.832185" elapsed="0.013497"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.847746" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:36.847111" elapsed="0.000739"/>
</kw>
<msg time="2026-04-19T02:23:36.848094" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:36.848200" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:36.846252" elapsed="0.002000"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.849758" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:36.848746" elapsed="0.001071"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.852396" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:36.851952" elapsed="0.000503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.852999" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:36.852669" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.853623" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:36.853290" elapsed="0.000393"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:36.850926" elapsed="0.002832"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:36.850149" elapsed="0.003659"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:36.850095" elapsed="0.003749"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:36.854161" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:36.853998" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:36.853971" elapsed="0.000285"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:36.854530" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T02:23:36.854400" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:36.854376" elapsed="0.000271"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:36.854920" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:36.831242" elapsed="0.024062"/>
</kw>
<msg time="2026-04-19T02:23:36.855509" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:36.855608" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:36.829492" elapsed="0.026234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:36.856169" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:36.856892" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T02:23:36.856642" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:36.856615" elapsed="0.000518"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:36.857339" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:36.107298" elapsed="0.750291"/>
</kw>
<msg time="2026-04-19T02:23:36.857671" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.106737" elapsed="0.751003"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:36.105143" elapsed="0.752713"/>
</kw>
<msg time="2026-04-19T02:23:36.857913" 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-19T02:23:36.104469" elapsed="0.753506"/>
</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-19T02:23:36.861801" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:36.862306" elapsed="0.000306"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:36.862758" 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-19T02:23:36.858410" elapsed="0.004522"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:36.103412" elapsed="0.759587"/>
</kw>
<msg time="2026-04-19T02:23:36.863118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.102951" elapsed="0.760230"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:36.102263" elapsed="0.761034"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:23:36.102104" elapsed="0.761249"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.866164" 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-19T02:23:36.866280" 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-19T02:23:36.865976" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:36.869112" level="INFO">${ip_address} = 10.30.171.128</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-19T02:23:36.868575" elapsed="0.000583"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:36.869238" elapsed="0.000049"/>
</return>
<msg time="2026-04-19T02:23:36.869475" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:36.868025" elapsed="0.001485"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.874487" level="INFO">${odl_connection} = 505</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:36.873489" elapsed="0.001144"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:36.878401" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:36.878511" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:36.877984" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.878765" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:36.880417" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:37.570753" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:17:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:36.880091" elapsed="0.690811"/>
</kw>
<msg time="2026-04-19T02:23:37.570990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.879559" elapsed="0.691535"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:36.877300" elapsed="0.693911"/>
</kw>
<msg time="2026-04-19T02:23:37.571264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.876733" elapsed="0.694582"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:36.875499" elapsed="0.696003"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:37.571600" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:36.871845" elapsed="0.700066"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.575131" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:37.587543" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:37.587797" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:37.587893" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:37.588062" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:37.574916" elapsed="0.013204"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.590201" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:37.589533" elapsed="0.000772"/>
</kw>
<msg time="2026-04-19T02:23:37.590515" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:37.590612" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:37.588631" elapsed="0.002031"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.592262" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:37.591187" elapsed="0.001135"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.594512" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:37.594160" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.595140" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:37.594782" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.595734" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:37.595408" elapsed="0.000386"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:37.593466" elapsed="0.002402"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:37.592628" elapsed="0.003288"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.592574" elapsed="0.003396"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:37.596300" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:37.596150" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.596121" elapsed="0.000275"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:37.596671" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T02:23:37.596539" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.596514" elapsed="0.000354"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:37.597192" elapsed="0.000036"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:37.573974" elapsed="0.023581"/>
</kw>
<msg time="2026-04-19T02:23:37.597768" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:37.597870" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:37.572245" elapsed="0.025679"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:37.598322" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:37.599070" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T02:23:37.598790" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.598762" elapsed="0.000531"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:37.599498" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:36.870515" elapsed="0.729239"/>
</kw>
<msg time="2026-04-19T02:23:37.599838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.869734" elapsed="0.730175"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:36.867403" elapsed="0.732708"/>
</kw>
<msg time="2026-04-19T02:23:37.600176" 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-19T02:23:36.866490" elapsed="0.733753"/>
</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-19T02:23:37.603636" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:23:37.604198" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:37.604522" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:37.600666" elapsed="0.004006"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:36.865237" elapsed="0.739494"/>
</kw>
<msg time="2026-04-19T02:23:37.604787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:36.864673" elapsed="0.740163"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:36.863812" elapsed="0.741112"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:23:36.863649" elapsed="0.741322"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.607231" 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-19T02:23:37.607332" 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-19T02:23:37.607094" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:37.609458" level="INFO">${ip_address} = 10.30.171.206</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-19T02:23:37.609143" elapsed="0.000343"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:37.609574" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:23:37.609733" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:37.608799" elapsed="0.000960"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.613267" level="INFO">${odl_connection} = 507</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:37.612556" elapsed="0.000808"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.615961" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:37.616084" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:37.615696" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.616268" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.617448" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:37.915063" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:37.617130" elapsed="0.298096"/>
</kw>
<msg time="2026-04-19T02:23:37.915314" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.616758" elapsed="0.298645"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:37.615204" elapsed="0.300314"/>
</kw>
<msg time="2026-04-19T02:23:37.915571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.614792" elapsed="0.300830"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:37.613902" elapsed="0.301909"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:37.915913" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:37.611425" elapsed="0.304832"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.919453" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:37.931998" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:37.932162" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:37.932213" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:37.932256" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:37.919251" elapsed="0.013030"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.933285" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:37.932915" elapsed="0.000420"/>
</kw>
<msg time="2026-04-19T02:23:37.933432" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:37.933478" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:37.932551" elapsed="0.000951"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.934908" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:37.933787" elapsed="0.001187"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.937971" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:37.937345" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.939138" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:37.938505" elapsed="0.000744"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.940248" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:37.939624" elapsed="0.000787"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:37.936240" elapsed="0.004323"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:37.935338" elapsed="0.005434"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.935280" elapsed="0.005556"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:37.941255" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:37.941131" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.941084" elapsed="0.000242"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:37.941522" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-19T02:23:37.941429" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.941411" elapsed="0.000205"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:37.941813" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:37.918285" elapsed="0.023796"/>
</kw>
<msg time="2026-04-19T02:23:37.942235" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:37.942306" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:37.916575" elapsed="0.025769"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:37.942606" elapsed="0.000271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:37.943202" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:23:37.943004" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:37.942984" elapsed="0.000373"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:37.943505" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:37.610491" elapsed="0.333197"/>
</kw>
<msg time="2026-04-19T02:23:37.943750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.609920" elapsed="0.333885"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:37.607994" elapsed="0.335900"/>
</kw>
<msg time="2026-04-19T02:23:37.943936" 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-19T02:23:37.607512" elapsed="0.336470"/>
</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-19T02:23:37.947131" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:37.947616" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:37.947923" 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-19T02:23:37.944307" elapsed="0.003779"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:37.606458" elapsed="0.341685"/>
</kw>
<msg time="2026-04-19T02:23:37.948199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.605939" elapsed="0.342309"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:37.605244" elapsed="0.343087"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:23:37.605084" elapsed="0.343325"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:36.101928" elapsed="1.846522"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:23:36.097903" elapsed="1.850608"/>
</kw>
<kw name="Check_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-19T02:23:37.952542" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:37.952015" elapsed="0.000558"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.953077" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:37.952744" elapsed="0.000361"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:37.953152" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:37.953311" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:37.951623" elapsed="0.001713"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.955673" 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-19T02:23:37.955777" 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-19T02:23:37.955526" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:37.957692" level="INFO">${ip_address} = 10.30.171.9</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-19T02:23:37.957370" elapsed="0.000350"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:37.957772" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:37.957927" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:37.957021" elapsed="0.000932"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.961560" level="INFO">${odl_connection} = 509</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:37.960828" elapsed="0.000833"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:37.964539" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:37.964618" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:37.964219" 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-19T02:23:37.964805" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:37.966006" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:38.279786" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:37.965688" elapsed="0.314247"/>
</kw>
<msg time="2026-04-19T02:23:38.280021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.965326" elapsed="0.314802"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:37.963686" elapsed="0.316561"/>
</kw>
<msg time="2026-04-19T02:23:38.280300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.963128" elapsed="0.317221"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:37.962225" elapsed="0.318311"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:38.280636" elapsed="0.000060"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:37.959645" elapsed="0.321329"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.284336" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:38.296679" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:38.296954" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:38.297088" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:38.297183" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:38.284137" elapsed="0.013096"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.299225" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:38.298554" elapsed="0.000774"/>
</kw>
<msg time="2026-04-19T02:23:38.299536" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:38.299632" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:38.297748" elapsed="0.001936"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.301213" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:38.300206" elapsed="0.001044"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.302858" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:38.302510" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.303505" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:38.303170" elapsed="0.000391"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.304117" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:38.303769" elapsed="0.000407"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:38.301916" elapsed="0.002333"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:38.301439" elapsed="0.002859"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.301405" elapsed="0.002929"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:38.304626" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:38.304484" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.304457" elapsed="0.000261"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:38.305021" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:23:38.304891" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.304865" elapsed="0.000294"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:38.305430" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:38.283210" elapsed="0.022558"/>
</kw>
<msg time="2026-04-19T02:23:38.305973" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:38.306093" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:38.281299" elapsed="0.024847"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:38.306506" elapsed="0.000605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:38.307543" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T02:23:38.307288" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.307260" elapsed="0.000500"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:38.307966" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:37.958688" elapsed="0.349557"/>
</kw>
<msg time="2026-04-19T02:23:38.308328" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.958135" elapsed="0.350262"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:37.956486" elapsed="0.352028"/>
</kw>
<msg time="2026-04-19T02:23:38.308571" 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-19T02:23:37.955961" elapsed="0.352673"/>
</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-19T02:23:38.311858" 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-19T02:23:38.312392" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:38.312742" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:38.309100" elapsed="0.003820"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:37.954878" elapsed="0.358101"/>
</kw>
<msg time="2026-04-19T02:23:38.313049" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:37.954420" elapsed="0.358680"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:37.953689" elapsed="0.359497"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:23:37.953525" elapsed="0.359709"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.315423" 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-19T02:23:38.315523" 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-19T02:23:38.315286" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:38.317427" level="INFO">${ip_address} = 10.30.171.128</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-19T02:23:38.317113" elapsed="0.000340"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:38.317502" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:38.317670" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:38.316723" elapsed="0.000972"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.321159" level="INFO">${odl_connection} = 511</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:38.320433" elapsed="0.000823"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.324068" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:38.324147" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:38.323789" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.324332" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.325554" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:38.634500" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:38.325233" elapsed="0.309454"/>
</kw>
<msg time="2026-04-19T02:23:38.634786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.324842" elapsed="0.310052"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:38.323294" elapsed="0.311752"/>
</kw>
<msg time="2026-04-19T02:23:38.635107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.322875" elapsed="0.312286"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:38.321790" elapsed="0.313670"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:38.635577" elapsed="0.000074"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:38.319318" elapsed="0.316612"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.639411" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:38.651790" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:38.652174" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:38.652296" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:38.652394" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:38.639197" elapsed="0.013251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.654625" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:38.653950" elapsed="0.000776"/>
</kw>
<msg time="2026-04-19T02:23:38.654934" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:38.655059" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:38.653013" elapsed="0.002102"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.656613" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:38.655606" elapsed="0.001065"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.659607" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:38.658998" elapsed="0.000702"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.661226" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:38.660072" elapsed="0.001255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.662244" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:38.661673" elapsed="0.000617"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:38.657893" elapsed="0.004453"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:38.656972" elapsed="0.005410"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.656918" elapsed="0.005492"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:38.662628" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:38.662521" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.662501" elapsed="0.000194"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:38.662889" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:23:38.662796" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.662778" elapsed="0.000196"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:38.663208" elapsed="0.000024"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:38.638199" elapsed="0.025251"/>
</kw>
<msg time="2026-04-19T02:23:38.663597" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:38.663678" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:38.636283" elapsed="0.027434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:38.663975" elapsed="0.000238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:38.664515" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:23:38.664334" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:38.664315" elapsed="0.000357"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:38.664818" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:38.318404" elapsed="0.346593"/>
</kw>
<msg time="2026-04-19T02:23:38.665075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.317851" elapsed="0.347276"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:38.316204" elapsed="0.349022"/>
</kw>
<msg time="2026-04-19T02:23:38.665309" 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-19T02:23:38.315702" elapsed="0.349655"/>
</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-19T02:23:38.668450" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:23:38.668925" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:38.669285" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:38.665665" elapsed="0.003772"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:38.314640" elapsed="0.354856"/>
</kw>
<msg time="2026-04-19T02:23:38.669552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.314197" elapsed="0.355405"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:38.313488" elapsed="0.356203"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:23:38.313331" elapsed="0.356408"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.672064" 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-19T02:23:38.672167" 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-19T02:23:38.671904" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:38.674066" level="INFO">${ip_address} = 10.30.171.206</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-19T02:23:38.673730" elapsed="0.000364"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:38.674143" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:38.674294" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:38.673406" elapsed="0.000912"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.677900" level="INFO">${odl_connection} = 513</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:38.677113" elapsed="0.000887"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:38.680872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:38.680949" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:38.680604" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.681220" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:38.682425" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:39.001384" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:38.682098" elapsed="0.319444"/>
</kw>
<msg time="2026-04-19T02:23:39.001751" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.681721" elapsed="0.320124"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:38.680104" elapsed="0.321859"/>
</kw>
<msg time="2026-04-19T02:23:39.002016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.679692" elapsed="0.322390"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:38.678588" elapsed="0.323681"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:39.002369" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:38.675958" elapsed="0.326718"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.005879" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:39.018163" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:39.018405" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:39.018503" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:39.018592" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:39.005678" elapsed="0.012964"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.020695" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:39.019971" elapsed="0.000835"/>
</kw>
<msg time="2026-04-19T02:23:39.021020" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:39.021158" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:39.019205" elapsed="0.002004"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.022774" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:39.021720" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.025513" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.024908" elapsed="0.000743"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.026643" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.025997" elapsed="0.000687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.027095" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.026838" elapsed="0.000302"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:39.023931" elapsed="0.003263"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:39.023173" elapsed="0.004057"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.023118" elapsed="0.004140"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:39.027471" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:39.027367" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.027348" elapsed="0.000190"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:39.027729" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:23:39.027638" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.027620" elapsed="0.000193"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:39.028009" elapsed="0.000049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:39.004725" elapsed="0.023558"/>
</kw>
<msg time="2026-04-19T02:23:39.028430" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:39.028499" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:39.002974" elapsed="0.025562"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:39.028790" elapsed="0.000228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:39.029334" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:23:39.029157" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.029138" elapsed="0.000347"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:39.029642" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:38.675049" elapsed="0.354777"/>
</kw>
<msg time="2026-04-19T02:23:39.029922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.674473" elapsed="0.355500"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:38.672803" elapsed="0.357272"/>
</kw>
<msg time="2026-04-19T02:23:39.030118" 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-19T02:23:38.672346" elapsed="0.357817"/>
</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-19T02:23:39.033245" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:23:39.033750" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:39.034076" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:39.030460" elapsed="0.003766"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:38.671285" elapsed="0.363000"/>
</kw>
<msg time="2026-04-19T02:23:39.034340" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:38.670770" elapsed="0.363619"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:38.670006" elapsed="0.364466"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:23:38.669846" elapsed="0.364673"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:37.953390" elapsed="1.081166"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:23:37.948757" elapsed="1.085861"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.034777" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T02:23:39.038999" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:39.038623" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.039510" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:39.039207" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:39.039579" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:23:39.039730" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:39.038232" elapsed="0.001523"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.042145" 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-19T02:23:39.042250" 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-19T02:23:39.041986" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:39.044292" level="INFO">${ip_address} = 10.30.171.9</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-19T02:23:39.043811" elapsed="0.000542"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:39.044618" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:23:39.044778" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:39.043413" elapsed="0.001390"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.050805" level="INFO">${odl_connection} = 515</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:39.050392" elapsed="0.000441"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.052599" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:39.052674" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:39.052335" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.052854" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.054137" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:39.405137" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:39.053795" elapsed="0.351493"/>
</kw>
<msg time="2026-04-19T02:23:39.405373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.053417" elapsed="0.352046"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:39.051824" elapsed="0.353751"/>
</kw>
<msg time="2026-04-19T02:23:39.405627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.051434" elapsed="0.354244"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:39.051053" elapsed="0.354704"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:39.405861" elapsed="0.000049"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:39.049644" elapsed="0.356584"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.409117" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:39.421741" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:39.422071" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:39.422189" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:39.422296" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:39.408898" elapsed="0.013458"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.424260" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:39.423600" elapsed="0.000773"/>
</kw>
<msg time="2026-04-19T02:23:39.424587" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:39.424686" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:39.422770" elapsed="0.001966"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.426201" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:39.425149" elapsed="0.001116"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.428237" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.427854" elapsed="0.000442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.428880" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.428534" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.429540" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.429193" elapsed="0.000408"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:39.427270" elapsed="0.002405"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:39.426469" elapsed="0.003340"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.426413" elapsed="0.003436"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:39.430127" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:39.429932" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.429907" elapsed="0.000346"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:39.430475" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:23:39.430342" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.430319" elapsed="0.000274"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:39.430800" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:39.408339" elapsed="0.022628"/>
</kw>
<msg time="2026-04-19T02:23:39.431330" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:39.431462" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:39.407416" elapsed="0.024107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:39.432918" elapsed="0.000608"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:39.433977" elapsed="0.000174"/>
</return>
<status status="PASS" start="2026-04-19T02:23:39.433717" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.433635" elapsed="0.000647"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:39.435573" elapsed="0.000039"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:39.047671" elapsed="0.388119"/>
</kw>
<msg time="2026-04-19T02:23:39.436211" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.044961" elapsed="0.391307"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:39.042879" elapsed="0.393479"/>
</kw>
<msg time="2026-04-19T02:23:39.436400" 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-19T02:23:39.042429" elapsed="0.394017"/>
</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-19T02:23:39.439692" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:23:39.440211" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:39.440552" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:39.436748" elapsed="0.003956"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:39.041342" elapsed="0.399420"/>
</kw>
<msg time="2026-04-19T02:23:39.440817" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.040873" elapsed="0.399992"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:39.040121" elapsed="0.400830"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:23:39.039947" elapsed="0.401052"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.443447" 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-19T02:23:39.443549" 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-19T02:23:39.443296" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:39.445694" level="INFO">${ip_address} = 10.30.171.128</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-19T02:23:39.445243" elapsed="0.000513"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:39.445988" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:23:39.446182" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:39.444801" elapsed="0.001408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.450262" level="INFO">${odl_connection} = 517</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:39.449822" elapsed="0.000467"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.452055" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:39.452135" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:39.451773" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.452322" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.453526" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:39.772881" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:39.453200" elapsed="0.319863"/>
</kw>
<msg time="2026-04-19T02:23:39.773154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.452810" elapsed="0.320456"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:39.451288" elapsed="0.322109"/>
</kw>
<msg time="2026-04-19T02:23:39.773451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.450876" elapsed="0.322628"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:39.450494" elapsed="0.323093"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:39.773692" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:39.449072" elapsed="0.324933"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.776982" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:39.789182" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:39.789442" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:39.789542" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:39.789635" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:39.776764" elapsed="0.012922"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.792130" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:39.791436" elapsed="0.000799"/>
</kw>
<msg time="2026-04-19T02:23:39.792451" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:39.792552" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:39.790130" elapsed="0.002474"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.793991" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:39.793000" elapsed="0.001081"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.796358" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.795872" elapsed="0.000546"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.796969" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.796633" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.797594" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:39.797262" elapsed="0.000393"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:39.795235" elapsed="0.002493"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:39.794264" elapsed="0.003513"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.794217" elapsed="0.003595"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:39.798052" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:39.797892" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.797868" elapsed="0.000282"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:39.798354" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:23:39.798227" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.798201" elapsed="0.000296"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:39.798701" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:39.776182" elapsed="0.022685"/>
</kw>
<msg time="2026-04-19T02:23:39.799231" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:39.799343" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:39.775230" elapsed="0.024169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:39.800762" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:39.801763" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T02:23:39.801505" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:39.801424" elapsed="0.000539"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:39.803331" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:39.446902" elapsed="0.356637"/>
</kw>
<msg time="2026-04-19T02:23:39.803917" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.446372" elapsed="0.357600"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:39.444273" elapsed="0.359809"/>
</kw>
<msg time="2026-04-19T02:23:39.804126" 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-19T02:23:39.443775" elapsed="0.360397"/>
</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-19T02:23:39.807350" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:23:39.807826" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:39.808149" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:39.804471" elapsed="0.003834"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:39.442627" elapsed="0.365737"/>
</kw>
<msg time="2026-04-19T02:23:39.808421" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.442167" elapsed="0.366304"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:39.441426" elapsed="0.367132"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:23:39.441262" elapsed="0.367382"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.810978" 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-19T02:23:39.811094" 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-19T02:23:39.810841" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:39.813141" level="INFO">${ip_address} = 10.30.171.206</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-19T02:23:39.812673" elapsed="0.000528"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:39.813419" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:23:39.813589" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:39.812278" elapsed="0.001337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.817675" level="INFO">${odl_connection} = 519</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:39.817288" elapsed="0.000414"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:39.819496" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:39.819573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:39.819228" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.819840" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:39.821130" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:40.135165" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:39.820787" elapsed="0.314528"/>
</kw>
<msg time="2026-04-19T02:23:40.135400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.820408" elapsed="0.315079"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:39.818726" elapsed="0.316873"/>
</kw>
<msg time="2026-04-19T02:23:40.135652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.818303" elapsed="0.317400"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:39.817903" elapsed="0.317880"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:40.135886" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:39.816346" elapsed="0.319853"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.138921" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:40.151443" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:40.151698" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:40.151795" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:40.151884" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:40.138711" elapsed="0.013223"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.154252" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:40.153167" elapsed="0.001188"/>
</kw>
<msg time="2026-04-19T02:23:40.154569" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:40.154669" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:40.152371" elapsed="0.002479"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.156273" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:40.155271" elapsed="0.001062"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.158871" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.158261" elapsed="0.000707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.159538" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.159295" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.159968" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.159732" elapsed="0.000279"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:40.157321" elapsed="0.002761"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:40.156516" elapsed="0.003603"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.156469" elapsed="0.003677"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:40.160305" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:40.160203" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.160186" elapsed="0.000187"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:40.160514" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T02:23:40.160425" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.160409" elapsed="0.000190"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:40.160744" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:40.138176" elapsed="0.022686"/>
</kw>
<msg time="2026-04-19T02:23:40.161132" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:40.161216" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:40.137305" elapsed="0.023956"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:40.162272" elapsed="0.000403"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:40.163010" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:23:40.162823" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.162749" elapsed="0.000427"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:40.164182" elapsed="0.000037"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:39.814396" elapsed="0.349997"/>
</kw>
<msg time="2026-04-19T02:23:40.164782" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.813774" elapsed="0.351064"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:39.811740" elapsed="0.353185"/>
</kw>
<msg time="2026-04-19T02:23:40.164967" 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-19T02:23:39.811279" elapsed="0.353732"/>
</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-19T02:23:40.168081" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:23:40.168558" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:40.168863" 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-19T02:23:40.165327" elapsed="0.003683"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:39.810193" elapsed="0.358892"/>
</kw>
<msg time="2026-04-19T02:23:40.169140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.809619" elapsed="0.359612"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:39.808901" elapsed="0.360421"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:23:39.808743" elapsed="0.360626"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:39.039811" elapsed="1.129594"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:23:39.035757" elapsed="1.133706"/>
</kw>
<msg time="2026-04-19T02:23:40.169500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:39.035269" elapsed="1.134277"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:40.169705" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T02:23:36.097482" elapsed="4.072310"/>
</kw>
<kw name="Check_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-19T02:23:40.173321" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:40.172918" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.173832" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:40.173508" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:40.173903" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:23:40.174191" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:40.172542" elapsed="0.001679"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.176525" 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-19T02:23:40.176625" 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-19T02:23:40.176389" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:40.178657" level="INFO">${ip_address} = 10.30.171.9</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-19T02:23:40.178138" elapsed="0.000546"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:40.178734" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:40.178898" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:40.177802" elapsed="0.001121"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.181530" level="INFO">${odl_connection} = 521</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:40.180781" elapsed="0.000789"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.184757" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:40.184835" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:40.184481" 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-19T02:23:40.185018" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.186268" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:40.541906" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:40.185931" elapsed="0.356225"/>
</kw>
<msg time="2026-04-19T02:23:40.542242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.185573" elapsed="0.356754"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:40.183979" elapsed="0.358458"/>
</kw>
<msg time="2026-04-19T02:23:40.542527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.183257" elapsed="0.359343"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:40.181910" elapsed="0.360819"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:40.542829" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:40.180369" elapsed="0.362633"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.546730" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:40.559566" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:40.559942" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:23:40.560188" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:40.560489" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:40.546388" elapsed="0.014317"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.565083" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:40.564407" elapsed="0.000788"/>
</kw>
<msg time="2026-04-19T02:23:40.565672" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:40.566004" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:40.563142" elapsed="0.003203"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.569207" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:40.568431" elapsed="0.000875"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.571225" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.570940" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.571767" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.571524" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.572211" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.571958" elapsed="0.000297"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:40.570487" elapsed="0.001864"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:40.569475" elapsed="0.002920"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.569417" elapsed="0.003038"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:40.572820" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:40.572609" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.572559" elapsed="0.000390"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:40.573333" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:23:40.573129" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.573079" elapsed="0.000419"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:40.574575" elapsed="0.000056"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:40.544231" elapsed="0.030617"/>
</kw>
<msg time="2026-04-19T02:23:40.575103" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:40.575148" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:40.543317" elapsed="0.031877"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:40.575356" elapsed="0.000237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:40.575785" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:23:40.575674" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.575655" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:40.576011" elapsed="0.000040"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:40.179640" elapsed="0.396511"/>
</kw>
<msg time="2026-04-19T02:23:40.576246" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.179097" elapsed="0.397199"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:40.177284" elapsed="0.399231"/>
</kw>
<msg time="2026-04-19T02:23:40.576594" 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-19T02:23:40.176807" elapsed="0.399833"/>
</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-19T02:23:40.579785" 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-19T02:23:40.580276" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:40.580578" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:40.576935" elapsed="0.003789"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:40.175749" elapsed="0.405162"/>
</kw>
<msg time="2026-04-19T02:23:40.581004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.175301" elapsed="0.405776"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:40.174568" elapsed="0.406724"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:23:40.174413" elapsed="0.406970"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.583735" 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-19T02:23:40.583834" 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-19T02:23:40.583600" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:40.585598" level="INFO">${ip_address} = 10.30.171.128</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-19T02:23:40.585330" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:40.585671" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:40.585820" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:40.584997" elapsed="0.000847"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.588800" level="INFO">${odl_connection} = 523</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:40.588073" elapsed="0.000766"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.591965" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:40.592061" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:40.591694" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.592245" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.593409" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:40.913516" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:40.593094" elapsed="0.320520"/>
</kw>
<msg time="2026-04-19T02:23:40.913683" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.592727" elapsed="0.321025"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:40.591177" elapsed="0.322671"/>
</kw>
<msg time="2026-04-19T02:23:40.913924" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.590414" elapsed="0.323581"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:40.589117" elapsed="0.325029"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:40.914238" elapsed="0.000039"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:40.587643" elapsed="0.326750"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.917802" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:40.930684" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:40.931428" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:23:40.931815" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:40.932260" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:40.917259" elapsed="0.015242"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.936589" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:40.936166" elapsed="0.000551"/>
</kw>
<msg time="2026-04-19T02:23:40.937016" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:40.937293" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:40.934840" elapsed="0.002583"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.939823" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:40.938789" elapsed="0.001170"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.942746" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.942257" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.943453" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.943117" elapsed="0.000462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.944174" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:40.943797" elapsed="0.000438"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:40.941608" elapsed="0.002729"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:40.940226" elapsed="0.004155"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.940149" elapsed="0.004289"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:40.944797" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:40.944589" elapsed="0.000278"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.944541" elapsed="0.000380"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:40.945390" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T02:23:40.945190" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.945021" elapsed="0.000525"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:40.946504" elapsed="0.000055"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:40.915377" elapsed="0.031395"/>
</kw>
<msg time="2026-04-19T02:23:40.947007" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:40.947067" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:40.914588" elapsed="0.032504"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:40.947253" elapsed="0.000221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:40.947664" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:23:40.947549" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:40.947521" elapsed="0.000225"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:40.947888" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:40.586896" elapsed="0.361108"/>
</kw>
<msg time="2026-04-19T02:23:40.948129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.585997" elapsed="0.362182"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:40.584486" elapsed="0.363910"/>
</kw>
<msg time="2026-04-19T02:23:40.948477" 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-19T02:23:40.584014" elapsed="0.364507"/>
</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-19T02:23:40.951595" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:23:40.952096" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:40.952396" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:40.948809" elapsed="0.003733"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:40.582939" elapsed="0.369791"/>
</kw>
<msg time="2026-04-19T02:23:40.952823" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.582490" elapsed="0.370456"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:40.581642" elapsed="0.371693"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:23:40.581484" elapsed="0.371939"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.955641" 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-19T02:23:40.955741" 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-19T02:23:40.955490" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:40.957501" level="INFO">${ip_address} = 10.30.171.206</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-19T02:23:40.957234" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:40.957575" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:40.957724" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:40.956902" elapsed="0.000846"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.960535" level="INFO">${odl_connection} = 525</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:40.959790" elapsed="0.000786"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:40.963640" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:40.963721" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:40.963360" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.963900" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:40.965171" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:41.280549" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:40.964828" elapsed="0.315842"/>
</kw>
<msg time="2026-04-19T02:23:41.280742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.964401" elapsed="0.316420"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:40.962848" elapsed="0.318078"/>
</kw>
<msg time="2026-04-19T02:23:41.281006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.962133" elapsed="0.318976"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:40.960837" elapsed="0.320401"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:41.281372" elapsed="0.000049"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:40.959356" elapsed="0.322192"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.284775" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:23:41.298003" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:41.298680" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:23:41.299082" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:41.299439" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:41.284436" elapsed="0.015231"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.304291" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:41.303527" elapsed="0.000829"/>
</kw>
<msg time="2026-04-19T02:23:41.304655" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:41.304930" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:41.302229" elapsed="0.002857"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.307533" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:41.306503" elapsed="0.001167"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.310301" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:41.309921" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.310985" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:41.310651" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.311644" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:41.311272" elapsed="0.000434"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:41.309297" elapsed="0.002542"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:41.307913" elapsed="0.004019"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.307820" elapsed="0.004198"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:41.312572" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:41.312321" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.312229" elapsed="0.000468"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:41.313087" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:23:41.312847" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.312799" elapsed="0.000447"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:41.314281" elapsed="0.000056"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:41.282548" elapsed="0.032007"/>
</kw>
<msg time="2026-04-19T02:23:41.314795" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:41.314840" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:41.281747" elapsed="0.033117"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:41.315024" elapsed="0.000236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:41.315435" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:23:41.315325" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.315308" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:41.315658" elapsed="0.000020"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:40.958634" elapsed="0.357140"/>
</kw>
<msg time="2026-04-19T02:23:41.315870" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.957903" elapsed="0.358039"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:40.956390" elapsed="0.359850"/>
</kw>
<msg time="2026-04-19T02:23:41.316321" 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-19T02:23:40.955920" elapsed="0.360447"/>
</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-19T02:23:41.319437" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:23:41.319935" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:41.320335" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:41.316659" elapsed="0.003821"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:40.954835" elapsed="0.365834"/>
</kw>
<msg time="2026-04-19T02:23:41.320763" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:40.954395" elapsed="0.366415"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:40.953682" elapsed="0.367341"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:23:40.953523" elapsed="0.367563"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:40.174278" elapsed="1.146843"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:23:40.170139" elapsed="1.151077"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.331046" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:41.328789" elapsed="0.002287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T02:23:41.332818" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:41.332440" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.333326" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:41.333006" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:41.333397" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:23:41.333560" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:41.332065" elapsed="0.001519"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.337702" 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-19T02:23:41.337821" 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-19T02:23:41.335710" elapsed="0.002138"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:41.339875" level="INFO">${ip_address} = 10.30.171.9</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-19T02:23:41.339371" elapsed="0.000546"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:41.339971" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:23:41.340148" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:41.339018" elapsed="0.001155"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.344308" level="INFO">${odl_connection} = 527</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:41.343660" elapsed="0.000694"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.346533" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:41.346611" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:41.346262" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.346793" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.348127" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:41.701919" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:41.347766" elapsed="0.354425"/>
</kw>
<msg time="2026-04-19T02:23:41.702279" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.347409" elapsed="0.354962"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:41.345761" elapsed="0.356725"/>
</kw>
<msg time="2026-04-19T02:23:41.702625" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.345371" elapsed="0.357310"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:41.344797" elapsed="0.358042"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:41.702990" elapsed="0.000115"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:41.342356" elapsed="0.360951"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.705874" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:23:41.718743" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:41.719000" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:23:41.719143" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:41.719237" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:41.705667" elapsed="0.013620"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.721187" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:41.720541" elapsed="0.000747"/>
</kw>
<msg time="2026-04-19T02:23:41.721498" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:41.721595" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:41.719695" elapsed="0.001949"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.722998" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:41.722018" elapsed="0.001071"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.725721" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:41.725144" elapsed="0.000683"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.726747" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:41.726202" elapsed="0.000637"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.727747" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:41.727211" elapsed="0.000632"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:41.724179" elapsed="0.003782"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:41.723273" elapsed="0.004911"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.723225" elapsed="0.005122"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:41.728907" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:41.728671" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.728486" elapsed="0.000616"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:41.729360" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T02:23:41.729225" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.729189" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:41.729592" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:41.705064" elapsed="0.024687"/>
</kw>
<msg time="2026-04-19T02:23:41.729894" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:41.730003" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:41.703727" elapsed="0.026358"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:41.730337" elapsed="0.000490"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:41.731202" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T02:23:41.730960" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.730940" elapsed="0.000459"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:41.731588" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:41.340864" elapsed="0.390971"/>
</kw>
<msg time="2026-04-19T02:23:41.731895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.340336" elapsed="0.391609"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:41.338500" elapsed="0.393591"/>
</kw>
<msg time="2026-04-19T02:23:41.732135" 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-19T02:23:41.338006" elapsed="0.394176"/>
</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-19T02:23:41.735357" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:23:41.735830" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:41.736154" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:41.732513" elapsed="0.003799"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:41.335092" elapsed="0.401279"/>
</kw>
<msg time="2026-04-19T02:23:41.736427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.334636" elapsed="0.401838"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:41.333927" elapsed="0.402631"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:23:41.333772" elapsed="0.402834"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.739166" 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-19T02:23:41.739324" 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-19T02:23:41.738863" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:41.742136" level="INFO">${ip_address} = 10.30.171.128</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-19T02:23:41.741663" elapsed="0.000500"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:41.742212" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:41.742369" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:41.741335" elapsed="0.001058"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.746256" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:41.745645" elapsed="0.000656"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:41.748466" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:41.748543" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:41.748172" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.748728" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:41.749920" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:42.066024" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:41.749601" elapsed="0.316759"/>
</kw>
<msg time="2026-04-19T02:23:42.066501" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.749245" elapsed="0.317401"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:41.747674" elapsed="0.319169"/>
</kw>
<msg time="2026-04-19T02:23:42.066952" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.747280" elapsed="0.319808"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:41.746748" elapsed="0.320639"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:42.067690" elapsed="0.000169"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:41.744616" elapsed="0.323663"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.073220" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:23:42.085805" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:42.086102" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:23:42.086239" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:42.086335" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:42.072735" elapsed="0.013650"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.088321" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:42.087711" elapsed="0.000710"/>
</kw>
<msg time="2026-04-19T02:23:42.088669" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:42.088769" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:42.086930" elapsed="0.001889"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.089858" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:42.089215" elapsed="0.000681"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.091559" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:42.091182" elapsed="0.000443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.092216" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:42.091847" elapsed="0.000428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.092856" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:42.092495" elapsed="0.000424"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:42.090571" elapsed="0.002425"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:42.090019" elapsed="0.003050"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.089986" elapsed="0.003122"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:42.093342" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:42.093191" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.093166" elapsed="0.000271"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:42.093640" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T02:23:42.093511" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.093489" elapsed="0.000271"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:42.093975" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:42.071449" elapsed="0.022784"/>
</kw>
<msg time="2026-04-19T02:23:42.094438" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:42.094598" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:42.068999" elapsed="0.025684"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:42.095078" elapsed="0.000684"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:42.096311" elapsed="0.000102"/>
</return>
<status status="PASS" start="2026-04-19T02:23:42.095956" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.095927" elapsed="0.000655"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:42.096897" elapsed="0.000067"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:41.743096" elapsed="0.354182"/>
</kw>
<msg time="2026-04-19T02:23:42.097422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.742551" elapsed="0.354955"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:41.740596" elapsed="0.357043"/>
</kw>
<msg time="2026-04-19T02:23:42.097716" 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-19T02:23:41.739580" elapsed="0.358208"/>
</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-19T02:23:42.100949" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T02:23:42.101508" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:42.101811" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:42.098126" elapsed="0.003834"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:41.738021" elapsed="0.363996"/>
</kw>
<msg time="2026-04-19T02:23:42.102096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:41.737579" elapsed="0.364567"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:41.736859" elapsed="0.365375"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:23:41.736701" elapsed="0.365579"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.104476" 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-19T02:23:42.104577" 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-19T02:23:42.104342" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:42.106971" level="INFO">${ip_address} = 10.30.171.206</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-19T02:23:42.106523" elapsed="0.000476"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:42.107069" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:42.107224" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:42.106196" elapsed="0.001053"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.111044" level="INFO">${odl_connection} = 531</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:42.110438" elapsed="0.000654"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.113247" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:42.113324" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:42.112968" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.113504" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.114720" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:42.461274" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:42.114362" elapsed="0.347059"/>
</kw>
<msg time="2026-04-19T02:23:42.461508" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.113989" elapsed="0.347609"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:42.112455" elapsed="0.349256"/>
</kw>
<msg time="2026-04-19T02:23:42.461766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.112059" elapsed="0.349757"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:42.111533" elapsed="0.350440"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:42.462150" elapsed="0.000100"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:42.109448" elapsed="0.353002"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.464882" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:23:42.477394" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:42.477661" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:23:42.477762" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:42.477852" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:42.464677" elapsed="0.013225"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.479739" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:42.479132" elapsed="0.000707"/>
</kw>
<msg time="2026-04-19T02:23:42.480076" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:42.480180" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:42.478338" elapsed="0.001892"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.481625" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:42.480605" elapsed="0.001080"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.484224" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:42.483620" elapsed="0.000710"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.485301" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:42.484670" elapsed="0.000693"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.485910" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:42.485575" elapsed="0.000396"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:42.482664" elapsed="0.003408"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:42.481868" elapsed="0.004257"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.481819" elapsed="0.004343"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:42.486386" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:42.486244" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.486219" elapsed="0.000259"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:42.486674" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T02:23:42.486550" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.486529" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:42.486995" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:42.464079" elapsed="0.023164"/>
</kw>
<msg time="2026-04-19T02:23:42.487437" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:42.487592" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:42.462825" elapsed="0.024851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:42.488130" elapsed="0.000673"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:42.489373" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T02:23:42.489025" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:42.488993" elapsed="0.000655"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:42.489926" elapsed="0.000068"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:42.107945" elapsed="0.382352"/>
</kw>
<msg time="2026-04-19T02:23:42.490382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.107406" elapsed="0.383048"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:42.105639" elapsed="0.384940"/>
</kw>
<msg time="2026-04-19T02:23:42.490639" 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-19T02:23:42.104783" elapsed="0.385922"/>
</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-19T02:23:42.494933" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:23:42.495440" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:42.495755" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:42.491143" elapsed="0.004761"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:42.103714" elapsed="0.392250"/>
</kw>
<msg time="2026-04-19T02:23:42.496022" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.103264" elapsed="0.392825"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:42.102536" elapsed="0.393642"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:23:42.102378" elapsed="0.393848"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:41.333640" elapsed="1.162622"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:23:41.331428" elapsed="1.164894"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:41.331154" elapsed="1.165206"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:41.331135" elapsed="1.165251"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.497797" 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-19T02:23:42.497896" 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-19T02:23:42.497661" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T02:23:42.499018" elapsed="0.000222"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.500474" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:42.500084" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.501002" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:42.500662" elapsed="0.000417"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:42.501129" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:23:42.501290" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:42.499450" elapsed="0.001865"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:42.502354" level="INFO">${ip_address} = 10.30.171.9</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-19T02:23:42.502008" elapsed="0.000373"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:42.502430" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:42.502579" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:42.501685" elapsed="0.000919"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.504169" level="INFO">${odl_connection} = 533</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:42.503782" elapsed="0.000414"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:42.506704" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:42.506968" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:42.506109" elapsed="0.000979"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.507382" elapsed="0.000608"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.509328" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:42.828006" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:42.508986" elapsed="0.319192"/>
</kw>
<msg time="2026-04-19T02:23:42.828331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.508310" elapsed="0.320138"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:42.505156" elapsed="0.323462"/>
</kw>
<msg time="2026-04-19T02:23:42.828712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:42.504746" elapsed="0.324019"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:42.504373" elapsed="0.324474"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:42.828905" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:42.503426" elapsed="0.325693"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.831234" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:23:42.844277" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:42.830812" elapsed="0.013585"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:23:42.830659" elapsed="0.013778"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.845089" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:23:42.952508" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:42.844680" elapsed="0.108286"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:23:42.844533" elapsed="0.108608"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:42.954891" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:23:43.004149" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:42.953900" elapsed="0.050535"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:23:42.953473" elapsed="0.051208"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.006403" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:23:43.052480" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.005435" elapsed="0.047355"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:23:43.004947" elapsed="0.047950"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.054881" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:23:43.100573" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.053642" elapsed="0.047241"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:23:43.053207" elapsed="0.047788"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.102830" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:23:43.148482" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.101802" elapsed="0.046928"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:23:43.101311" elapsed="0.047507"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.150358" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:23:43.196394" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.149390" elapsed="0.047267"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:23:43.149019" elapsed="0.047735"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.198328" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:23:43.244294" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.197351" elapsed="0.047224"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:23:43.196965" elapsed="0.047696"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:23:42.830505" elapsed="0.414224"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:23:42.830157" elapsed="0.414719"/>
</kw>
<msg time="2026-04-19T02:23:43.245157" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:43.245262" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:42.829405" elapsed="0.415909"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:43.245805" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:43.246857" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:23:43.246549" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:43.246498" elapsed="0.000608"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:43.247450" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:42.502862" elapsed="0.744865"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T02:23:42.501515" elapsed="0.746309"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:43.249987" level="INFO">${ip_address} = 10.30.171.128</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-19T02:23:43.249320" elapsed="0.000764"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:43.250198" elapsed="0.000066"/>
</return>
<msg time="2026-04-19T02:23:43.250538" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:43.248514" elapsed="0.002079"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.254295" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:43.253352" elapsed="0.001003"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:43.257613" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:43.257882" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:43.256753" elapsed="0.001233"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:43.258300" elapsed="0.000612"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.260215" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:43.571349" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:43.259874" elapsed="0.311698"/>
</kw>
<msg time="2026-04-19T02:23:43.571702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:43.259234" elapsed="0.312573"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:43.255589" elapsed="0.316374"/>
</kw>
<msg time="2026-04-19T02:23:43.572076" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:43.255132" elapsed="0.316997"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:43.254545" elapsed="0.317661"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:43.572259" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:43.252500" elapsed="0.319939"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.574425" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:23:43.587157" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.574012" elapsed="0.013387"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:23:43.573828" elapsed="0.013654"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.588885" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:23:43.637368" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.587993" elapsed="0.049616"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:23:43.587680" elapsed="0.050012"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.639166" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:23:43.689541" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.638272" elapsed="0.051576"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:23:43.637886" elapsed="0.052119"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.691651" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:23:43.737630" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.690706" elapsed="0.047206"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:23:43.690320" elapsed="0.047749"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.739663" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:23:43.785895" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.738685" elapsed="0.047537"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:23:43.738312" elapsed="0.047994"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.787719" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:23:43.833740" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.786826" elapsed="0.047386"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:23:43.786505" elapsed="0.047827"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.836112" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:23:43.881606" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.835135" elapsed="0.046781"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:23:43.834659" elapsed="0.047361"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.883777" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:23:43.929306" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:43.882753" elapsed="0.046810"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:23:43.882347" elapsed="0.047302"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:23:43.573659" elapsed="0.356061"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:23:43.573338" elapsed="0.356535"/>
</kw>
<msg time="2026-04-19T02:23:43.930180" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:43.930288" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:43.572669" elapsed="0.357674"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:43.930773" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:43.931807" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:23:43.931502" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:43.931449" elapsed="0.000726"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:43.932527" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:43.251220" elapsed="0.681585"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T02:23:43.248059" elapsed="0.684843"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:43.935098" level="INFO">${ip_address} = 10.30.171.206</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-19T02:23:43.934419" elapsed="0.000742"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:43.935271" elapsed="0.000066"/>
</return>
<msg time="2026-04-19T02:23:43.935612" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:43.933586" elapsed="0.002081"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.939142" level="INFO">${odl_connection} = 535</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:43.938724" elapsed="0.000446"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:43.941674" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:43.941929" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:43.941141" elapsed="0.000901"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:43.942345" elapsed="0.000600"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:43.944247" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:44.257804" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:43.943905" elapsed="0.314057"/>
</kw>
<msg time="2026-04-19T02:23:44.258128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:43.943260" elapsed="0.314983"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:43.940205" elapsed="0.318203"/>
</kw>
<msg time="2026-04-19T02:23:44.258514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:43.939738" elapsed="0.318829"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:43.939352" elapsed="0.319292"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:44.258699" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:43.938318" elapsed="0.320776"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.261091" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:23:44.274027" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.260675" elapsed="0.013476"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:23:44.260527" elapsed="0.013661"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.275064" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:23:44.325156" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.274418" elapsed="0.050990"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:23:44.274277" elapsed="0.051213"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.327018" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:23:44.377954" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.326002" elapsed="0.052239"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:23:44.325690" elapsed="0.052637"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.379994" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:23:44.425481" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.379021" elapsed="0.046713"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:23:44.378695" elapsed="0.047126"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.427348" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:23:44.473778" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.426418" elapsed="0.047676"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:23:44.426076" elapsed="0.048115"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.475731" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:23:44.525454" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.474800" elapsed="0.050905"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:23:44.474417" elapsed="0.051377"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.527320" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:23:44.578200" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.526385" elapsed="0.052057"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:23:44.526003" elapsed="0.052522"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.579958" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:23:44.633507" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.579105" elapsed="0.054689"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:23:44.578744" elapsed="0.055139"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:23:44.260377" elapsed="0.373576"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:23:44.260016" elapsed="0.374133"/>
</kw>
<msg time="2026-04-19T02:23:44.634423" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:44.634528" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:44.259345" elapsed="0.375236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:44.634990" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:44.636074" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:23:44.635736" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:44.635685" elapsed="0.000638"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:44.636668" elapsed="0.000049"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:43.936297" elapsed="0.700651"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T02:23:43.933149" elapsed="0.703932"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:42.501372" elapsed="2.135782"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T02:23:42.498595" elapsed="2.138681"/>
</kw>
<msg time="2026-04-19T02:23:44.637371" 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-19T02:23:42.498092" elapsed="2.139390"/>
</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-19T02:23:44.642616" elapsed="0.000550"/>
</kw>
<kw name="Open 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-19T02:23:44.643410" elapsed="0.000398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:44.644025" elapsed="0.000193"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:44.638212" elapsed="0.006087"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T02:23:42.497177" elapsed="2.147207"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T02:23:42.496559" elapsed="2.147918"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T02:23:44.647392" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:44.646779" elapsed="0.000655"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:44.647917" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:44.647604" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:44.647990" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:44.648166" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:44.646163" elapsed="0.002035"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.650563" 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-19T02:23:44.650668" 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-19T02:23:44.650412" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:44.652728" level="INFO">${ip_address} = 10.30.171.9</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-19T02:23:44.652244" elapsed="0.000519"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:44.652817" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:23:44.652980" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:44.651897" elapsed="0.001109"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.657292" level="INFO">${odl_connection} = 537</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:44.656662" elapsed="0.000676"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:44.659570" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:44.659658" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:44.659282" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:44.659841" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.661058" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:44.973765" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:44.660716" elapsed="0.313200"/>
</kw>
<msg time="2026-04-19T02:23:44.973999" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:44.660356" elapsed="0.313753"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:44.658759" elapsed="0.315474"/>
</kw>
<msg time="2026-04-19T02:23:44.974290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:44.658340" elapsed="0.316001"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:44.657800" elapsed="0.316718"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:44.974670" elapsed="0.000091"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:44.655624" elapsed="0.319338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:44.979656" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:23:44.992154" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:44.992433" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:23:44.992537" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:44.992628" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:44.979445" elapsed="0.013233"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:44.994597" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:44.993909" elapsed="0.000794"/>
</kw>
<msg time="2026-04-19T02:23:44.994914" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:44.995090" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:44.993111" elapsed="0.002038"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:44.996167" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:44.995531" elapsed="0.000673"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:44.997742" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:44.997390" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:44.998395" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:44.998018" elapsed="0.000436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:44.999028" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:44.998669" elapsed="0.000446"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:44.996807" elapsed="0.002392"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:44.996323" elapsed="0.002938"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:44.996290" elapsed="0.003011"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:44.999536" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:44.999385" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:44.999360" elapsed="0.000269"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:44.999829" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T02:23:44.999702" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:44.999681" elapsed="0.000267"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:45.000178" elapsed="0.000041"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:44.976739" elapsed="0.023686"/>
</kw>
<msg time="2026-04-19T02:23:45.000622" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:45.000776" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:44.975404" elapsed="0.025456"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:45.001263" elapsed="0.000668"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:45.002534" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-19T02:23:45.002150" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.002116" elapsed="0.000686"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:45.003118" elapsed="0.000076"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:44.654046" elapsed="0.349430"/>
</kw>
<msg time="2026-04-19T02:23:45.003535" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:44.653196" elapsed="0.350389"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:44.651362" elapsed="0.352307"/>
</kw>
<msg time="2026-04-19T02:23:45.003709" 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-19T02:23:44.650869" elapsed="0.352884"/>
</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-19T02:23:45.006818" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T02:23:45.007373" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:45.007683" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:45.004068" elapsed="0.003765"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:44.649747" elapsed="0.358142"/>
</kw>
<msg time="2026-04-19T02:23:45.007944" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:44.649282" elapsed="0.358710"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:44.648554" elapsed="0.359537"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:23:44.648396" elapsed="0.359742"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.010354" 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-19T02:23:45.010454" 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-19T02:23:45.010218" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:45.012426" level="INFO">${ip_address} = 10.30.171.128</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-19T02:23:45.011954" elapsed="0.000499"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:45.012503" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:45.012654" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:45.011634" elapsed="0.001045"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.016758" level="INFO">${odl_connection} = 539</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:45.016153" elapsed="0.000651"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.019204" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:45.019289" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:45.018845" elapsed="0.000468"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.019473" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.020687" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:45.325036" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:45.020363" elapsed="0.304844"/>
</kw>
<msg time="2026-04-19T02:23:45.325293" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.019968" elapsed="0.305414"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:45.018354" elapsed="0.307143"/>
</kw>
<msg time="2026-04-19T02:23:45.325643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.017911" elapsed="0.307785"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:45.017273" elapsed="0.308587"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:45.326012" elapsed="0.000156"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:45.015144" elapsed="0.311223"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.328780" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:23:45.342362" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:45.342653" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:23:45.342765" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:45.342864" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:45.328575" elapsed="0.014347"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.345031" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:45.344304" elapsed="0.000878"/>
</kw>
<msg time="2026-04-19T02:23:45.345417" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:45.345525" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:45.343412" elapsed="0.002168"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.347103" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:45.345994" elapsed="0.001177"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.349700" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:45.349308" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.350348" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:45.349981" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.350948" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:45.350617" elapsed="0.000392"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:45.348237" elapsed="0.002875"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:45.347369" elapsed="0.003798"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.347318" elapsed="0.003885"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:45.351430" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:45.351285" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.351261" elapsed="0.000264"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:45.351724" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T02:23:45.351597" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.351576" elapsed="0.000411"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:45.352222" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:45.327951" elapsed="0.024504"/>
</kw>
<msg time="2026-04-19T02:23:45.352657" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:45.352816" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:45.326733" elapsed="0.026311"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:45.353459" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:45.354714" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-19T02:23:45.354386" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.354358" elapsed="0.000629"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:45.355281" elapsed="0.000068"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:45.013585" elapsed="0.342064"/>
</kw>
<msg time="2026-04-19T02:23:45.355735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.012836" elapsed="0.342969"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:45.011116" elapsed="0.344877"/>
</kw>
<msg time="2026-04-19T02:23:45.356059" 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-19T02:23:45.010634" elapsed="0.345514"/>
</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-19T02:23:45.360012" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:23:45.360517" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:45.360833" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:45.356616" elapsed="0.004369"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:45.009540" elapsed="0.351511"/>
</kw>
<msg time="2026-04-19T02:23:45.361124" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.009096" elapsed="0.352078"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:45.008388" elapsed="0.352875"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:23:45.008232" elapsed="0.353082"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.363633" 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-19T02:23:45.363736" 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-19T02:23:45.363494" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:45.365767" level="INFO">${ip_address} = 10.30.171.206</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-19T02:23:45.365266" elapsed="0.000529"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:23:45.365847" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:45.366001" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:45.364919" elapsed="0.001107"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.370284" level="INFO">${odl_connection} = 541</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:45.369601" elapsed="0.000732"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.372525" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:45.372603" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:45.372256" 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-19T02:23:45.372786" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.373989" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:45.698135" 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 Sun Apr 19 02:22:45 UTC 2026

  System load:  0.19               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:45.373666" elapsed="0.324734"/>
</kw>
<msg time="2026-04-19T02:23:45.698484" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.373303" elapsed="0.325268"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:45.371745" elapsed="0.326940"/>
</kw>
<msg time="2026-04-19T02:23:45.698739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.371343" elapsed="0.327447"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:23:45.370795" elapsed="0.328159"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:23:45.699137" elapsed="0.000090"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:23:45.368544" elapsed="0.330881"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.701978" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:23:45.715215" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:45.715505" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:23:45.715624" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:23:45.715723" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:23:45.701771" elapsed="0.014005"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.718377" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:23:45.717677" elapsed="0.000816"/>
</kw>
<msg time="2026-04-19T02:23:45.718725" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:23:45.718832" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:45.716269" elapsed="0.002618"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.720393" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:45.719331" elapsed="0.001125"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.722870" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:45.722519" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.723509" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:45.723170" elapsed="0.000399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.724145" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:45.723780" elapsed="0.000427"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:23:45.721533" elapsed="0.002750"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:45.720653" elapsed="0.003681"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.720603" elapsed="0.003767"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:23:45.724593" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:45.724450" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.724425" elapsed="0.000263"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:45.724886" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T02:23:45.724760" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.724738" elapsed="0.000270"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:45.725235" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:23:45.701167" elapsed="0.024313"/>
</kw>
<msg time="2026-04-19T02:23:45.725677" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:23:45.725851" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:23:45.699817" elapsed="0.026116"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:45.726313" elapsed="0.000708"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:23:45.727573" elapsed="0.000100"/>
</return>
<status status="PASS" start="2026-04-19T02:23:45.727254" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.727226" elapsed="0.000613"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:45.728127" elapsed="0.000068"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:23:45.366756" elapsed="0.361716"/>
</kw>
<msg time="2026-04-19T02:23:45.728639" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.366216" elapsed="0.362500"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:23:45.364400" elapsed="0.364438"/>
</kw>
<msg time="2026-04-19T02:23:45.728898" 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-19T02:23:45.363919" elapsed="0.365042"/>
</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-19T02:23:45.732579" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:23:45.733121" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:45.733443" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:45.729411" elapsed="0.004182"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:23:45.362807" elapsed="0.370842"/>
</kw>
<msg time="2026-04-19T02:23:45.733705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.362342" elapsed="0.371413"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:23:45.361601" elapsed="0.372239"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:23:45.361413" elapsed="0.372475"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:44.648261" elapsed="1.085662"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:23:44.645269" elapsed="1.088714"/>
</kw>
<status status="PASS" start="2026-04-19T02:23:44.644592" elapsed="1.089429"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:44.644565" elapsed="1.089486"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T02:23:41.324634" elapsed="4.409483"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T02:23:36.096887" elapsed="9.637368"/>
</test>
<test id="s1-s13-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.747855" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:45.747416" elapsed="0.000467"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.748439" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:45.748062" elapsed="0.000403"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T02:23:45.748927" level="INFO">${epoch} = 1776565425.748836</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T02:23:45.748631" elapsed="0.000324"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.749537" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:45.749139" elapsed="0.000424"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.750117" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:23:45.749729" elapsed="0.000416"/>
</kw>
<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-19T02:23:45.751772" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:45.751394" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.752295" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:45.751969" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:45.752369" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:23:45.752537" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:45.751007" elapsed="0.001555"/>
</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-19T02:23:45.753628" level="INFO">${member_ip} = 10.30.171.9</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-19T02:23:45.753358" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.754456" 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-19T02:23:45.754555" 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-19T02:23:45.754296" 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-19T02:23:45.757623" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:45.757341" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:45.757320" elapsed="0.000386"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.757986" 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-19T02:23:45.758106" 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-19T02:23:45.757856" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.758756" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:45.758288" elapsed="0.000516"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.759425" level="INFO">${conn_id} = 543</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:45.758963" elapsed="0.000488"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:45.760658" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:45.760784" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:45.760128" elapsed="0.000681"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.760995" elapsed="0.000690"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:45.764128" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:46.115449" 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 Sun Apr 19 02:23:36 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:23:45.763232" elapsed="0.352431"/>
</kw>
<msg time="2026-04-19T02:23:46.115793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.761913" elapsed="0.354048"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:45.759675" elapsed="0.356560"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.116727" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log'.</msg>
<msg time="2026-04-19T02:23:46.139872" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:46.139989" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:46.140035" 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-19T02:23:46.116473" elapsed="0.023602"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:46.140242" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.141032" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:46.140716" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:46.141338" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:46.141186" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:46.141160" elapsed="0.000253"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:46.141577" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:23:46.141472" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:46.141456" elapsed="0.000205"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:46.141695" elapsed="0.000014"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:46.155035" elapsed="0.000772"/>
</kw>
<kw name="Open 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-19T02:23:46.155977" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:46.156313" 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-19T02:23:46.142021" elapsed="0.014444"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:45.756770" elapsed="0.399789"/>
</kw>
<msg time="2026-04-19T02:23:46.156615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:45.756157" elapsed="0.400513"/>
</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-19T02:23:45.755592" elapsed="0.401161"/>
</kw>
<msg time="2026-04-19T02:23:46.156795" 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-19T02:23:45.754739" elapsed="0.402101"/>
</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-19T02:23:46.160115" 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-19T02:23:46.160594" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:46.160889" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:46.157186" elapsed="0.003857"/>
</kw>
<msg time="2026-04-19T02:23:46.161152" 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-19T02:23:45.753868" elapsed="0.407309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.161638" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:46.161388" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:46.161724" 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-19T02:23:45.752936" elapsed="0.408914"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:23:45.752757" elapsed="0.409131"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:46.162893" level="INFO">${member_ip} = 10.30.171.128</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-19T02:23:46.162622" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.163746" 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-19T02:23:46.163909" 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-19T02:23:46.163610" elapsed="0.000326"/>
</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-19T02:23:46.166971" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:46.166517" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:46.166498" elapsed="0.000556"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.167345" 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-19T02:23:46.167446" 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-19T02:23:46.167217" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.168103" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:46.167626" elapsed="0.000527"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.168719" level="INFO">${conn_id} = 546</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:46.168310" elapsed="0.000435"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.170023" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:46.170183" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:46.169404" elapsed="0.000804"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:46.170393" elapsed="0.000853"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.173304" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:46.482229" 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 Sun Apr 19 02:23:37 UTC 2026

  System load:  0.17               Processes:             119
  Usage of /:   10.9% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:23:46.172735" elapsed="0.309662"/>
</kw>
<msg time="2026-04-19T02:23:46.482510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:46.171479" elapsed="0.311183"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:46.168959" elapsed="0.313852"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.483272" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log'.</msg>
<msg time="2026-04-19T02:23:46.506387" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:46.506629" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:46.506725" 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-19T02:23:46.483011" elapsed="0.023764"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:46.507181" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.508734" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:46.508103" elapsed="0.000726"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:46.509302" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:46.508988" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:46.508942" elapsed="0.000511"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:46.509800" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:23:46.509569" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:46.509536" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:46.510202" 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-19T02:23:46.527040" elapsed="0.000727"/>
</kw>
<kw name="Open 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-19T02:23:46.527934" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:46.528257" 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-19T02:23:46.510886" elapsed="0.017520"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:46.165956" elapsed="0.362547"/>
</kw>
<msg time="2026-04-19T02:23:46.528555" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:46.165179" elapsed="0.363428"/>
</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-19T02:23:46.164629" elapsed="0.364058"/>
</kw>
<msg time="2026-04-19T02:23:46.528729" 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-19T02:23:46.164119" elapsed="0.364656"/>
</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-19T02:23:46.531965" 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-19T02:23:46.532457" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:46.532749" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:46.529091" elapsed="0.003805"/>
</kw>
<msg time="2026-04-19T02:23:46.533014" 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-19T02:23:46.163201" elapsed="0.369840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.533480" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:46.533233" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:46.533565" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:23:46.162212" elapsed="0.371473"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:23:46.161987" elapsed="0.371735"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:23:46.534705" level="INFO">${member_ip} = 10.30.171.206</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-19T02:23:46.534429" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.535553" 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-19T02:23:46.535652" 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-19T02:23:46.535420" elapsed="0.000260"/>
</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-19T02:23:46.538563" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:46.538294" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:46.538275" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.538922" 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-19T02:23:46.539022" 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-19T02:23:46.538793" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.539693" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:46.539227" elapsed="0.000552"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.540375" level="INFO">${conn_id} = 549</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:23:46.539940" elapsed="0.000462"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:23:46.541620" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:23:46.541745" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:23:46.541054" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:46.541956" elapsed="0.000691"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:23:46.544717" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:23:47.128292" 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 Sun Apr 19 02:23:46 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:23:46.544165" elapsed="0.584328"/>
</kw>
<msg time="2026-04-19T02:23:47.128609" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:46.542874" elapsed="0.585891"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:23:46.540618" elapsed="0.588304"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:23:47.129378" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776565425.748836.log'.</msg>
<msg time="2026-04-19T02:23:47.152712" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:23:47.152954" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:23:47.153092" 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-19T02:23:47.129148" elapsed="0.024000"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:47.153542" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:47.155126" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:47.154440" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:47.155678" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:47.155397" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:47.155348" elapsed="0.000481"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:23:47.156223" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:23:47.155945" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T02:23:47.155912" elapsed="0.000495"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:23:47.156480" 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-19T02:23:47.172705" elapsed="0.000733"/>
</kw>
<kw name="Open 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-19T02:23:47.173603" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:47.173907" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:47.157191" elapsed="0.016870"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:23:46.537732" elapsed="0.636463"/>
</kw>
<msg time="2026-04-19T02:23:47.174249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:23:46.537156" elapsed="0.637144"/>
</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-19T02:23:46.536584" elapsed="0.637794"/>
</kw>
<msg time="2026-04-19T02:23:47.174471" 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-19T02:23:46.535834" elapsed="0.638685"/>
</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-19T02:23:47.177495" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T02:23:47.177964" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:23:47.178301" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:23:47.174815" elapsed="0.003644"/>
</kw>
<msg time="2026-04-19T02:23:47.178555" 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-19T02:23:46.534946" elapsed="0.643633"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:47.179000" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:47.178755" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:23:47.179178" 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-19T02:23:46.533990" elapsed="0.645312"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:23:46.533812" elapsed="0.645528"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:23:45.752620" elapsed="1.426752"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:23:45.750462" elapsed="1.428970"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:47.191563" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:47.191174" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:47.192060" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:47.191752" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:47.192148" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:23:47.192305" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:47.190744" elapsed="0.001586"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:47.193836" 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-19T02:23:47.193540" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:23:47.193909" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:23:47.194059" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:47.193188" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:47.202132" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:47.201856" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:47.202572" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:47.202330" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:23:47.208463" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:23:47.204863" elapsed="0.005535">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T02:23:47.202680" elapsed="0.007806">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.210677" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:47.210521" elapsed="0.000268"/>
</branch>
<status status="FAIL" start="2026-04-19T02:23:47.202662" elapsed="0.008151">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.211368" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:23:47.211507" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:47.211470" elapsed="0.000084"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:47.211452" elapsed="0.000123"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.211736" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:23:47.211808" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:23:47.197089" elapsed="0.014828">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:23:47.211989" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:23:47.194311" elapsed="0.017796">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.212330" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:23:47.212458" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:47.212422" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:47.212405" elapsed="0.000116"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.212720" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.212938" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:23:47.213005" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:23:47.192794" elapsed="0.020330">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:23:47.213244" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:23:47.213205" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:47.213188" elapsed="0.000120"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.213450" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:23:47.192566" elapsed="0.020954">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:23:47.192385" elapsed="0.021194">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:23:47.190346" elapsed="0.023327">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T02:23:47.190017" elapsed="0.023716">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T02:23:47.189998" elapsed="0.023796">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:23:47.214104" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:47.213866" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:47.213849" elapsed="0.000335"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:23:47.214448" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:47.214239" elapsed="0.000266"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:47.214223" elapsed="0.000306"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:23:47.189603" elapsed="0.025005">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:23:57.233135" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:23:57.232607" elapsed="0.000561"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:23:57.233652" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:23:57.233340" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:23:57.233729" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:23:57.233912" level="INFO">${index_list} = [1, 2, 3]</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-19T02:23:57.232202" elapsed="0.001737"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:23:57.235473" 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-19T02:23:57.235172" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:23:57.235548" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:23:57.235696" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:23:57.234807" elapsed="0.000915"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:57.244972" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:57.244711" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:23:57.245451" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:23:57.245204" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:23:57.308354" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:23:57.308520" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:23:57.308817" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:23:57.247697" elapsed="0.061942">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:23:57.245564" elapsed="0.064402">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.310431" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:57.310077" elapsed="0.000499"/>
</branch>
<status status="FAIL" start="2026-04-19T02:23:57.245545" elapsed="0.065085">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.311796" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:23:57.312137" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:57.312019" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:57.311980" elapsed="0.000300"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.312603" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:23:57.312761" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:23:57.238463" elapsed="0.074531">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:23:57.313204" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:23:57.235931" elapsed="0.077491">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.313934" elapsed="0.000056"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:23:57.314255" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:23:57.314175" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:57.314137" elapsed="0.000258"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.314830" elapsed="0.000053"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.315355" elapsed="0.000054"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:23:57.315509" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:23:57.234430" elapsed="0.081300">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:23:57.315987" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:23:57.315905" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:57.315868" elapsed="0.000288"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.316476" elapsed="0.000047"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:23:57.234201" elapsed="0.082432">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:23:57.233997" elapsed="0.082762">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:23:57.231774" elapsed="0.085193">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:23:57.231435" elapsed="0.085700">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:23:57.231411" elapsed="0.085796">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:23:57.317785" elapsed="0.000105"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:57.317354" elapsed="0.000611"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:57.317317" elapsed="0.000701"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:23:57.318710" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:23:57.318234" elapsed="0.000604"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:23:57.318133" elapsed="0.000738"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:23:57.230916" elapsed="0.088034">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:24:07.335391" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:24:07.334926" elapsed="0.000496"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:24:07.335905" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:24:07.335595" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:24:07.335981" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:24:07.336166" level="INFO">${index_list} = [1, 2, 3]</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-19T02:24:07.334518" elapsed="0.001673"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:07.337968" 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-19T02:24:07.337664" elapsed="0.000332"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:24:07.338060" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:24:07.338222" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:24:07.337305" elapsed="0.000943"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:07.345758" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:07.345499" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:07.346234" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:07.345961" elapsed="0.000318"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:24:07.363580" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:24:07.363653" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:24:07.363781" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:24:07.348479" elapsed="0.015711">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:24:07.346345" elapsed="0.017934">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.364596" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:07.364313" elapsed="0.000355"/>
</branch>
<status status="FAIL" start="2026-04-19T02:24:07.346327" elapsed="0.018365">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.365290" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:24:07.365562" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:07.365391" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:24:07.365373" elapsed="0.000253"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.365774" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:24:07.365843" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:24:07.340972" elapsed="0.024979">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:24:07.366022" elapsed="0.000033"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:24:07.338462" elapsed="0.027676">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.366458" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:24:07.366647" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:07.366592" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:24:07.366568" elapsed="0.000165"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.366939" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.367190" elapsed="0.000042"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:24:07.367335" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:24:07.336662" elapsed="0.030901">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:24:07.367821" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:24:07.367740" elapsed="0.000168"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:24:07.367702" elapsed="0.000255"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.368313" elapsed="0.000047"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:24:07.336433" elapsed="0.032039">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:24:07.336249" elapsed="0.032353">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:24:07.334087" elapsed="0.034727">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:24:07.333712" elapsed="0.035232">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:24:07.333687" elapsed="0.035325">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:24:07.369629" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:07.369190" elapsed="0.000561"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:24:07.369152" elapsed="0.000651"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:24:07.370448" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:07.369922" elapsed="0.000654"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:24:07.369888" elapsed="0.000739"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:24:07.333205" elapsed="0.037603">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.389829" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:24:17.389369" elapsed="0.000493"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.390399" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:24:17.390076" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:24:17.390475" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:24:17.390654" level="INFO">${index_list} = [1, 2, 3]</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-19T02:24:17.388937" elapsed="0.001743"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.392607" 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-19T02:24:17.392303" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:24:17.392681" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:24:17.392832" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:24:17.391767" elapsed="0.001243"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.400869" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.400498" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.401339" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.401091" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:24:17.652462" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:24:17.652679" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:24:17 GMT', 'Expires': 'Sun, 19 Apr 2026 01:24:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565457,"status":200} 
 </msg>
<msg time="2026-04-19T02:24:17.652984" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:24:17.403610" elapsed="0.249505"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.401450" elapsed="0.251786"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:17.653742" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:17.653304" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.401432" elapsed="0.252514"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.661575" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565457,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.656979" elapsed="0.004740"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.656367" elapsed="0.005505"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.656321" elapsed="0.005591"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.666322" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.662393" elapsed="0.004062"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.661993" elapsed="0.004623"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.661969" elapsed="0.004687"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.667440" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.666857" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:17.667896" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:17.667614" elapsed="0.000483"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.668905" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:17.668298" elapsed="0.000692"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.668126" elapsed="0.001045"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.667591" elapsed="0.001607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.669908" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.669367" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:17.670332" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:17.670024" elapsed="0.000484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.671308" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:17.670712" elapsed="0.000679"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.670536" elapsed="0.001008"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.669991" elapsed="0.001577"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:24:17.671732" elapsed="0.000703"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:24:17.673477" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.672608" elapsed="0.000898"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:24:17.673665" elapsed="0.003237"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:24:17.655281" elapsed="0.021693"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:24:17.677197" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:17.677076" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.677054" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:24:17.680322" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565457,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:24:17.677422" elapsed="0.002931"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:24:17.680408" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:24:17.680583" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565457,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:24:17.395827" elapsed="0.284784"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:24:17.680671" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:24:17.680827" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565457,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:24:17.393239" elapsed="0.287616"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.681750" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565457,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.681493" elapsed="0.000308"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.682920" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565457, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.682507" elapsed="0.000444"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:24:17.683001" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:24:17.683180" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565457, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:24:17.682143" elapsed="0.001099"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:17.683634" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:17.683404" elapsed="0.000257"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:17.684026" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:17.683815" elapsed="0.000252"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:24:17.684115" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:24:17.684266" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:24:17.681124" elapsed="0.003166"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:24:17.684466" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:17.684358" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.684341" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.692042" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.691777" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.692489" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.692245" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:24:17.701274" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:24:17.701351" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:24:17 GMT', 'Expires': 'Sun, 19 Apr 2026 01:24:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565457,"status":200} 
 </msg>
<msg time="2026-04-19T02:24:17.701464" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:24:17.694890" elapsed="0.006601"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.692599" elapsed="0.008936"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:17.701715" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:17.701561" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.692581" elapsed="0.009221"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.705674" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565457,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.703003" elapsed="0.002766"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.702761" elapsed="0.003305"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.702742" elapsed="0.003354"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.709271" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.706397" elapsed="0.002963"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.706154" elapsed="0.003312"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.706137" elapsed="0.003355"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.710208" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.709657" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:17.710565" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:17.710306" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.711545" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:17.710928" elapsed="0.000696"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.710763" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.710287" elapsed="0.001505"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.712483" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.711957" elapsed="0.000553"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:17.712837" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:17.712580" elapsed="0.000427"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.713769" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:17.713213" elapsed="0.000633"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.713048" elapsed="0.000943"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.712562" elapsed="0.001452"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:24:17.714273" elapsed="0.000647"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:24:17.715873" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.715101" elapsed="0.000798"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:24:17.716071" elapsed="0.003042"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:24:17.702337" elapsed="0.016842"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:24:17.719360" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:17.719250" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.719231" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:24:17.722625" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:24:17.719574" elapsed="0.003082"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:24:17.722714" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:24:17.722886" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:24:17.687294" elapsed="0.035619"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:24:17.722970" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:24:17.723136" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:24:17.684733" elapsed="0.038431"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.724021" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565457,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.723758" elapsed="0.000328"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.725061" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565457, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:17.724643" elapsed="0.000448"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:24:17.725141" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:24:17.725304" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565457, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:24:17.724296" elapsed="0.001035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:17.725718" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:17.725486" elapsed="0.000302"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:17.726280" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:17.725947" elapsed="0.000359"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:24:17.726354" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:24:17.726503" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:24:17.723393" elapsed="0.003135"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:24:17.726570" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:24:17.726717" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:24:17.391389" elapsed="0.335353"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:24:17.726925" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T02:24:17.726813" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.726795" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:17.727172" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:24:17.391155" elapsed="0.336073"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.728858" level="INFO">${session} = ClusterManagement__session_2</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-19T02:24:17.728560" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:24:17.728931" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:24:17.729094" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:24:17.728218" elapsed="0.000902"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.736675" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.736427" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:17.737141" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:17.736875" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:24:18.082701" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:24:18.082911" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:24:18 GMT', 'Expires': 'Sun, 19 Apr 2026 01:24:18 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565458,"status":200} 
 </msg>
<msg time="2026-04-19T02:24:18.083276" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:24:17.739406" elapsed="0.343935"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:17.737251" elapsed="0.346209"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:18.083955" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:18.083531" elapsed="0.000622"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:17.737233" elapsed="0.346973"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.091133" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565458,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.086974" elapsed="0.004310"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.086602" elapsed="0.004839"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.086570" elapsed="0.004910"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.095832" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.091912" elapsed="0.004050"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.091562" elapsed="0.004652"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.091538" elapsed="0.004720"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.097359" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.096536" elapsed="0.000864"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:18.097872" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:18.097502" elapsed="0.000637"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.099149" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:18.098460" elapsed="0.000767"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.098177" elapsed="0.001201"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.097475" elapsed="0.001933"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.100113" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.099576" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:18.100482" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:18.100211" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.101449" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:18.100849" elapsed="0.000682"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.100685" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.100193" elapsed="0.001511"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:24:18.101868" elapsed="0.000717"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:24:18.103617" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.102756" elapsed="0.000888"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:24:18.103805" elapsed="0.003068"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:24:18.085480" elapsed="0.021464"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:24:18.107222" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:18.107017" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.106997" elapsed="0.000297"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:24:18.110229" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565458,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:24:18.107443" elapsed="0.002828"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:24:18.110325" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:24:18.110495" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565458,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:24:17.731892" elapsed="0.378630"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:24:18.110589" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:24:18.110743" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565458,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:24:17.729331" elapsed="0.381439"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.111756" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565458,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.111489" elapsed="0.000317"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.112793" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565458, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.112378" elapsed="0.000478"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:24:18.112910" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:24:18.113093" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565458, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:24:18.112019" elapsed="0.001102"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:18.113509" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:18.113280" elapsed="0.000257"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:18.114115" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:18.113702" elapsed="0.000439"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:24:18.114189" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:24:18.114365" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:24:18.110996" elapsed="0.003395"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:24:18.114577" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:18.114460" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.114442" elapsed="0.000228"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.122442" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.122161" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.122910" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.122653" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:24:18.134218" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:24:18.134348" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:24:18 GMT', 'Expires': 'Sun, 19 Apr 2026 01:24:18 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565458,"status":200} 
 </msg>
<msg time="2026-04-19T02:24:18.134508" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:24:18.125354" elapsed="0.009190"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.123021" elapsed="0.011589"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:18.134862" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:18.134646" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.123003" elapsed="0.011990"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.140588" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565458,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.136784" elapsed="0.003942"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.136399" elapsed="0.004477"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.136372" elapsed="0.004546"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.145267" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.141390" elapsed="0.004008"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.141012" elapsed="0.004537"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.140981" elapsed="0.004607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.146676" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.145830" elapsed="0.000880"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:18.147156" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:18.146786" elapsed="0.000550"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.148140" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:18.147535" elapsed="0.000688"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.147363" elapsed="0.001010"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.146767" elapsed="0.001631"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.149114" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.148561" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:18.149487" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:24:18.149222" elapsed="0.000438"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.150478" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:24:18.149852" elapsed="0.000707"/>
</kw>
<status status="PASS" start="2026-04-19T02:24:18.149687" elapsed="0.001020"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.149203" elapsed="0.001528"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:24:18.150889" elapsed="0.000700"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:24:18.152753" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.151789" elapsed="0.000992"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:24:18.152942" elapsed="0.003239"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:24:18.135768" elapsed="0.020488"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:24:18.156443" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:24:18.156330" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.156310" elapsed="0.000202"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:24:18.159494" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:24:18.156665" elapsed="0.002859"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:24:18.159576" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:24:18.159744" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:24:18.117616" elapsed="0.042155"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:24:18.159828" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:24:18.159975" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:24:18.114886" elapsed="0.045115"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.160880" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565458,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.160626" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.161995" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565458, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:24:18.161595" elapsed="0.000429"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:24:18.162091" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:24:18.162253" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565458, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:24:18.161244" elapsed="0.001096"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:18.162746" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:18.162510" elapsed="0.000264"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:24:18.163163" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:24:18.162932" elapsed="0.000256"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:24:18.163236" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:24:18.163397" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:24:18.160259" elapsed="0.003163"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:24:18.163466" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:24:18.163615" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:24:17.727818" elapsed="0.435821"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:24:18.163822" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:24:18.163710" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:24:18.163693" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:24:18.164072" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:24:17.727582" elapsed="0.436548"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.165626" level="INFO">${session} = ClusterManagement__session_3</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-19T02:24:18.165315" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:24:18.165699" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:24:18.165847" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:24:18.164906" elapsed="0.000965"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.173665" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.173402" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:24:18.174131" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:24:18.173864" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:26:23.280198" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:24:18.176410" elapsed="125.107760">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:24:18.174242" elapsed="125.110160">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.284996" elapsed="0.000109"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:23.284494" elapsed="0.000713"/>
</branch>
<status status="FAIL" start="2026-04-19T02:24:18.174222" elapsed="125.111038">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.286592" elapsed="0.000067"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:26:23.286939" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:23.286851" elapsed="0.000214"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:26:23.286806" elapsed="0.000310"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.287441" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:26:23.287593" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:24:18.168876" elapsed="125.118963">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:26:23.287994" elapsed="0.000063"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:24:18.166101" elapsed="125.122144">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.288876" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:26:23.289215" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:23.289118" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:26:23.289078" elapsed="0.000334"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.289927" elapsed="0.000057"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.290520" elapsed="0.000065"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:26:23.290691" elapsed="0.000036"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:24:18.164518" elapsed="125.126402">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:26:23.291233" elapsed="0.000035"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:26:23.291148" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:26:23.291108" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.291726" elapsed="0.000049"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:24:18.164281" elapsed="125.127611">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:24:17.390742" elapsed="125.901280">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:24:17.388510" elapsed="125.903768">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:24:17.388152" elapsed="125.904254">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T02:24:17.388126" elapsed="125.904347">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:26:23.293177" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:23.292621" elapsed="0.000684"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:26:23.292584" elapsed="0.000774"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:26:23.294018" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:23.293477" elapsed="0.000682"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:26:23.293443" elapsed="0.000750"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:24:17.387591" elapsed="125.906718">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.314423" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:26:33.313951" elapsed="0.000504"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.314936" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:26:33.314627" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:26:33.315011" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T02:26:33.315195" level="INFO">${index_list} = [1, 2, 3]</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-19T02:26:33.313536" elapsed="0.001684"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.316746" 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-19T02:26:33.316449" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:26:33.316820" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:26:33.316966" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:26:33.316104" elapsed="0.000887"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.325952" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.325692" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.326418" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.326172" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:26:33.336871" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:26:33.336949" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:26:33 GMT', 'Expires': 'Sun, 19 Apr 2026 01:26:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565593,"status":200} 
 </msg>
<msg time="2026-04-19T02:26:33.337096" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:26:33.328676" elapsed="0.008447"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.326531" elapsed="0.010636"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.337349" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.337193" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.326513" elapsed="0.010924"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.341313" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565593,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.338650" elapsed="0.002764"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.338399" elapsed="0.003125"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.338381" elapsed="0.003170"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.344561" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.341851" elapsed="0.002804"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.341608" elapsed="0.003157"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.341591" elapsed="0.003201"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.345529" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.344970" elapsed="0.000587"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.345890" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.345629" elapsed="0.000476"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.346874" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.346306" elapsed="0.000647"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.346133" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.345610" elapsed="0.001533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.347840" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.347307" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.348210" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.347937" elapsed="0.000445"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.349143" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.348570" elapsed="0.000653"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.348408" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.347920" elapsed="0.001478"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:26:33.349551" elapsed="0.000704"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:26:33.351245" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.350422" elapsed="0.000893"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.351475" elapsed="0.003096"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:26:33.337932" elapsed="0.016705"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:26:33.354817" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:33.354708" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.354689" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:26:33.357794" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:26:33.355044" elapsed="0.002779"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:26:33.357876" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:26:33.358154" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:26:33.319816" elapsed="0.038368"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:26:33.358245" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:26:33.358397" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:26:33.317294" elapsed="0.041130"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.359264" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.358996" elapsed="0.000318"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.360305" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.359891" elapsed="0.000443"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:26:33.360386" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:26:33.360545" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:26:33.359523" elapsed="0.001049"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.360959" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.360734" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.361368" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.361157" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:26:33.361443" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:26:33.361591" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:26:33.358638" elapsed="0.002978"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:26:33.361792" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:33.361684" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.361667" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.369732" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.369481" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.370197" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.369937" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:26:33.378336" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:26:33.378413" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:26:33 GMT', 'Expires': 'Sun, 19 Apr 2026 01:26:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565593,"status":200} 
 </msg>
<msg time="2026-04-19T02:26:33.378529" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:26:33.372500" elapsed="0.006055"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.370350" elapsed="0.008249"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.378781" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.378625" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.370329" elapsed="0.008537"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.382801" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565593,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.380098" elapsed="0.002800"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.379836" elapsed="0.003169"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.379816" elapsed="0.003237"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.387023" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.383354" elapsed="0.003830"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.383112" elapsed="0.004236"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.383095" elapsed="0.004293"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.388460" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.387663" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.389152" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.388600" elapsed="0.000826"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.390601" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.389704" elapsed="0.001011"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.389464" elapsed="0.001461"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.388573" elapsed="0.002388"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.392059" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.391209" elapsed="0.000892"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.392505" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.392202" elapsed="0.000476"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.393478" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.392866" elapsed="0.000692"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.392704" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.392175" elapsed="0.001549"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:26:33.393883" elapsed="0.000690"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:26:33.395558" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.394739" elapsed="0.000845"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.395768" elapsed="0.003244"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:26:33.379388" elapsed="0.019744"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:26:33.399317" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:33.399206" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.399186" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:26:33.404719" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:26:33.399534" elapsed="0.005215"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:26:33.404803" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:26:33.404970" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:26:33.364813" elapsed="0.040184"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:26:33.405072" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:26:33.405224" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:26:33.362099" elapsed="0.043152"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.406182" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.405829" elapsed="0.000406"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.407231" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.406805" elapsed="0.000454"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:26:33.407310" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:26:33.407481" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:26:33.406454" elapsed="0.001054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.407935" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.407704" elapsed="0.000260"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.408354" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.408139" elapsed="0.000242"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:26:33.408431" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:26:33.408623" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:26:33.405474" elapsed="0.003177"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:26:33.408701" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:26:33.408854" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:26:33.315711" elapsed="0.093169"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:26:33.409078" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-19T02:26:33.408949" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.408932" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.409316" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:26:33.315461" elapsed="0.093911"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.410882" level="INFO">${session} = ClusterManagement__session_2</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-19T02:26:33.410582" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:26:33.410991" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:26:33.411174" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:26:33.410193" elapsed="0.001007"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.420217" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.419943" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.420681" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.420423" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:26:33.431171" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:26:33.431249" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:26:33 GMT', 'Expires': 'Sun, 19 Apr 2026 01:26:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565593,"status":200} 
 </msg>
<msg time="2026-04-19T02:26:33.431379" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:26:33.422931" elapsed="0.008475"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.420793" elapsed="0.010656"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.431661" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.431475" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.420775" elapsed="0.010974"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.440058" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565593,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.433864" elapsed="0.006420"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.433305" elapsed="0.007139"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.433261" elapsed="0.007212"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.443561" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.440791" elapsed="0.002894"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.440535" elapsed="0.003262"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.440515" elapsed="0.003310"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.444547" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.443994" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.444928" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.444661" elapsed="0.000460"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.445903" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.445317" elapsed="0.000669"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.445150" elapsed="0.001019"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.444641" elapsed="0.001554"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.446906" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.446357" elapsed="0.000577"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.447286" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.447007" elapsed="0.000456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.448285" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.447682" elapsed="0.000684"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.447490" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.446987" elapsed="0.001557"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:26:33.448706" elapsed="0.000733"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:26:33.450431" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.449608" elapsed="0.000855"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.450638" elapsed="0.003641"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:26:33.432296" elapsed="0.022050"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:26:33.454531" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:33.454418" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.454398" elapsed="0.000202"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:26:33.457611" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:26:33.454748" elapsed="0.002893"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:26:33.457695" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:26:33.457856" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:26:33.414990" elapsed="0.042894"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:26:33.457941" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:26:33.458107" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:26:33.411485" elapsed="0.046650"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.458969" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.458708" elapsed="0.000313"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.460072" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.459651" elapsed="0.000451"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:26:33.460152" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:26:33.460314" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:26:33.459290" elapsed="0.001051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.460731" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.460494" elapsed="0.000266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.461147" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.460915" elapsed="0.000258"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:26:33.461221" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:26:33.461374" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:26:33.458355" elapsed="0.003044"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:26:33.461575" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:33.461466" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.461448" elapsed="0.000192"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.469179" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.468914" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.469665" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.469420" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:26:33.478173" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:26:33.478278" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:26:33 GMT', 'Expires': 'Sun, 19 Apr 2026 01:26:33 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565593,"status":200} 
 </msg>
<msg time="2026-04-19T02:26:33.478438" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:26:33.472074" elapsed="0.006400"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.469776" elapsed="0.008757"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.478783" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.478570" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.469757" elapsed="0.009145"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.484315" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565593,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.480566" elapsed="0.003887"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.480230" elapsed="0.004369"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.480204" elapsed="0.004433"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.488746" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.485071" elapsed="0.003771"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.484717" elapsed="0.004236"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.484694" elapsed="0.004287"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.489700" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.489160" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.490101" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.489799" elapsed="0.000478"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.491062" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.490469" elapsed="0.000677"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.490304" elapsed="0.000991"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.489780" elapsed="0.001540"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.492018" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.491483" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.492401" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:26:33.492136" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.493382" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:26:33.492776" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-04-19T02:26:33.492606" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.492116" elapsed="0.001521"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:26:33.493795" elapsed="0.000774"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:26:33.495567" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.494743" elapsed="0.000852"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.495810" elapsed="0.003073"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:26:33.479621" elapsed="0.019329"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:26:33.499150" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:26:33.499022" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.499003" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:26:33.502281" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:26:33.499367" elapsed="0.002944"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:26:33.502367" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:26:33.502529" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:26:33.464420" elapsed="0.038136"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:26:33.502614" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:26:33.502762" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:26:33.461843" elapsed="0.040945"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.503655" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565593,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.503376" elapsed="0.000333"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.504672" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:26:33.504277" elapsed="0.000424"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:26:33.504750" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:26:33.504910" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565593, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:26:33.503920" elapsed="0.001016"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.505331" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.505106" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:26:33.505725" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:26:33.505514" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:26:33.505798" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:26:33.505948" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:26:33.503002" elapsed="0.002971"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:26:33.506016" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:26:33.506179" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:26:33.409750" elapsed="0.096454"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:26:33.506428" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:26:33.506310" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T02:26:33.506289" elapsed="0.000221"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:26:33.506658" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:26:33.409521" elapsed="0.097192"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.508451" level="INFO">${session} = ClusterManagement__session_3</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-19T02:26:33.508126" elapsed="0.000359"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:26:33.508534" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:26:33.508684" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:26:33.507761" elapsed="0.000948"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.516248" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.515975" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:26:33.516702" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:26:33.516453" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:28:38.599301" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:26:33.518959" elapsed="125.084594">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:26:33.516815" elapsed="125.086975">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.604550" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:38.603884" elapsed="0.000844"/>
</branch>
<status status="FAIL" start="2026-04-19T02:26:33.516795" elapsed="125.087974">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.605618" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:28:38.605842" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:38.605784" elapsed="0.000119"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:28:38.605753" elapsed="0.000179"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.606167" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:28:38.606277" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:26:33.511442" elapsed="125.094994">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:28:38.606538" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:26:33.508924" elapsed="125.097754">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.606993" elapsed="0.000039"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:28:38.607198" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:38.607148" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:28:38.607123" elapsed="0.000162"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.607562" elapsed="0.000033"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.607867" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:28:38.607964" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:26:33.507322" elapsed="125.100853">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:28:38.608362" elapsed="0.000025"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:28:38.608304" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:28:38.608278" elapsed="0.000172"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.608652" elapsed="0.000030"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:26:33.506857" elapsed="125.101895">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:26:33.315277" elapsed="125.293644">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:26:33.313110" elapsed="125.295974">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:26:33.312733" elapsed="125.296437">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T02:26:33.312707" elapsed="125.296506">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:28:38.609590" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:38.609307" elapsed="0.000358"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:28:38.609283" elapsed="0.000415"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:28:38.610091" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:38.609775" elapsed="0.000399"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:28:38.609752" elapsed="0.000456"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:26:33.312214" elapsed="125.298106">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.628143" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:28:48.627665" elapsed="0.000510"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.628659" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:28:48.628349" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:28:48.628733" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:28:48.628899" level="INFO">${index_list} = [1, 2, 3]</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-19T02:28:48.627259" elapsed="0.001665"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.630455" 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-19T02:28:48.630153" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:28:48.630528" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:28:48.630674" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:28:48.629783" elapsed="0.000916"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.638333" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.638073" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.638782" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.638537" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:28:48.649240" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:28:48.649353" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:28:48 GMT', 'Expires': 'Sun, 19 Apr 2026 01:28:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565728,"status":200} 
 </msg>
<msg time="2026-04-19T02:28:48.649509" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:28:48.641065" elapsed="0.008481"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.638895" elapsed="0.010712"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.649857" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.649642" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.638877" elapsed="0.011193"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.655490" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565728,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.651730" elapsed="0.003895"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.651391" elapsed="0.004383"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.651364" elapsed="0.004448"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.660179" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.656289" elapsed="0.004026"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.655892" elapsed="0.004576"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.655868" elapsed="0.004639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.661450" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.660755" elapsed="0.000723"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.661813" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.661549" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.662850" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.662272" elapsed="0.000659"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.662019" elapsed="0.001086"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.661530" elapsed="0.001600"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.663819" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.663294" elapsed="0.000552"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.664214" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.663916" elapsed="0.000480"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.665190" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.664589" elapsed="0.000685"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.664423" elapsed="0.001001"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.663898" elapsed="0.001550"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:28:48.665603" elapsed="0.000862"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:28:48.667679" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.666801" elapsed="0.000906"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.667866" elapsed="0.003060"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:28:48.650769" elapsed="0.020221"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:28:48.671192" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:48.671078" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.671057" elapsed="0.000202"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:28:48.674246" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:28:48.671406" elapsed="0.002869"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:28:48.674327" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:28:48.674484" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:28:48.633456" elapsed="0.041055"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:28:48.674600" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:28:48.674750" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:28:48.630910" elapsed="0.043866"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.675601" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.675350" elapsed="0.000300"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.676683" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.676283" elapsed="0.000429"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:28:48.676762" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:28:48.676921" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:28:48.675858" elapsed="0.001089"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.677344" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.677120" elapsed="0.000253"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.677892" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.677526" elapsed="0.000392"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:28:48.677966" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:28:48.678133" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:28:48.674982" elapsed="0.003176"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:28:48.678332" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:48.678225" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.678207" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.685874" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.685626" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.686336" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.686091" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:28:48.694000" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:28:48.694148" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:28:48 GMT', 'Expires': 'Sun, 19 Apr 2026 01:28:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565728,"status":200} 
 </msg>
<msg time="2026-04-19T02:28:48.694304" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:28:48.688582" elapsed="0.005759"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.686445" elapsed="0.007954"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.694644" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.694435" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.686427" elapsed="0.008333"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.700219" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776565728,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.696471" elapsed="0.003913"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.696065" elapsed="0.004469"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.696018" elapsed="0.004555"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.703750" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.700990" elapsed="0.002848"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.700654" elapsed="0.003290"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.700629" elapsed="0.003342"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.704693" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.704150" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.705064" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.704791" elapsed="0.000450"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.705990" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.705431" elapsed="0.000684"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.705266" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.704772" elapsed="0.001514"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.706955" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.706448" elapsed="0.000534"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.707355" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.707073" elapsed="0.000463"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.708350" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.707746" elapsed="0.000720"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.707563" elapsed="0.001055"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.707052" elapsed="0.001591"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:28:48.708799" elapsed="0.000707"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:28:48.710502" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.709675" elapsed="0.000854"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.710687" elapsed="0.003153"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:28:48.695458" elapsed="0.018447"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:28:48.714210" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:48.713974" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.713955" elapsed="0.000322"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:28:48.717164" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:28:48.714422" elapsed="0.002771"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:28:48.717246" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:28:48.717402" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:28:48.681168" elapsed="0.036260"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:28:48.717484" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:28:48.717629" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:28:48.678595" elapsed="0.039059"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.718625" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.718374" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.719627" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.719235" elapsed="0.000420"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:28:48.719703" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:28:48.719861" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:28:48.718880" elapsed="0.001007"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.720280" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.720058" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.720697" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.720460" elapsed="0.000262"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:28:48.720770" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:28:48.720917" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:28:48.717896" elapsed="0.003046"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:28:48.720984" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:28:48.721146" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:28:48.629407" elapsed="0.091763"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:28:48.721345" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:28:48.721237" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.721221" elapsed="0.000205"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.721573" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:28:48.629182" elapsed="0.092446"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.723084" level="INFO">${session} = ClusterManagement__session_2</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-19T02:28:48.722769" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:28:48.723157" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:28:48.723304" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:28:48.722425" elapsed="0.000904"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.730963" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.730715" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.731426" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.731182" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:28:48.740925" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:28:48.741002" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:28:48 GMT', 'Expires': 'Sun, 19 Apr 2026 01:28:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565728,"status":200} 
 </msg>
<msg time="2026-04-19T02:28:48.741255" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:28:48.733689" elapsed="0.007608"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.731537" elapsed="0.009821"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.741611" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.741395" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.731519" elapsed="0.010211"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.747246" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565728,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.743453" elapsed="0.003929"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.743109" elapsed="0.004427"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.743032" elapsed="0.004543"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.751171" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.747997" elapsed="0.003270"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.747656" elapsed="0.003719"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.747632" elapsed="0.003772"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.752114" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.751568" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.752474" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.752214" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.753488" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.752879" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.752677" elapsed="0.001039"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.752195" elapsed="0.001545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.754444" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.753903" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.754801" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.754542" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.755767" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.755196" elapsed="0.000652"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.755003" elapsed="0.000994"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.754524" elapsed="0.001498"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:28:48.756194" elapsed="0.000702"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:28:48.757901" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.757082" elapsed="0.000847"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.758103" elapsed="0.004283"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:28:48.742462" elapsed="0.019991"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:28:48.762630" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:48.762523" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.762504" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:28:48.765698" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:28:48.762842" elapsed="0.002886"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:28:48.765782" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:28:48.765944" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:28:48.726262" elapsed="0.039742"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:28:48.766083" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:28:48.766237" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:28:48.723538" elapsed="0.042725"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.767384" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.767035" elapsed="0.000399"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.768422" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.768000" elapsed="0.000451"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:28:48.768502" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:28:48.768675" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:28:48.767656" elapsed="0.001046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.769145" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.768858" elapsed="0.000316"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.769551" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.769335" elapsed="0.000247"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:28:48.769634" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:28:48.769787" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:28:48.766678" elapsed="0.003134"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:28:48.769995" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:48.769880" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.769862" elapsed="0.000217"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.777871" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.777592" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.778347" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.778098" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:28:48.786932" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:28:48.787010" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:28:48 GMT', 'Expires': 'Sun, 19 Apr 2026 01:28:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565728,"status":200} 
 </msg>
<msg time="2026-04-19T02:28:48.787147" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:28:48.780782" elapsed="0.006392"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.778462" elapsed="0.008755"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.787398" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.787244" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.778443" elapsed="0.009087"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.791438" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776565728,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.788720" elapsed="0.002814"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.788477" elapsed="0.003163"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.788458" elapsed="0.003210"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.794682" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.791966" elapsed="0.002807"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.791725" elapsed="0.003154"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.791708" elapsed="0.003198"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.795659" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.795123" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.796018" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.795758" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.796964" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.796399" elapsed="0.000659"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.796232" elapsed="0.000990"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.795739" elapsed="0.001508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.797920" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.797410" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.798290" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:28:48.798017" elapsed="0.000443"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.799235" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:28:48.798650" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-19T02:28:48.798486" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.797999" elapsed="0.001480"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:28:48.799636" elapsed="0.000672"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:28:48.801336" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.800474" elapsed="0.000889"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.801520" elapsed="0.003035"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:28:48.788032" elapsed="0.016589"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:28:48.804800" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:28:48.804691" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.804673" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:28:48.807882" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:28:48.805013" elapsed="0.002898"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:28:48.807965" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:28:48.808142" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:28:48.772888" elapsed="0.035281"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:28:48.808227" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:28:48.808411" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:28:48.770287" elapsed="0.038150"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.809295" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776565728,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.809003" elapsed="0.000342"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.810311" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:28:48.809895" elapsed="0.000445"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:28:48.810390" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:28:48.810550" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776565728, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:28:48.809556" elapsed="0.001020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.810955" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.810732" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:28:48.811435" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:28:48.811222" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:28:48.811508" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:28:48.811656" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:28:48.808652" elapsed="0.003028"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:28:48.811728" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:28:48.811872" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:28:48.721992" elapsed="0.089904"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:28:48.812091" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:28:48.811963" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-19T02:28:48.811946" elapsed="0.000227"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:28:48.812321" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:28:48.721765" elapsed="0.090611"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.813987" level="INFO">${session} = ClusterManagement__session_3</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-19T02:28:48.813690" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:28:48.814078" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:28:48.814228" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:28:48.813346" elapsed="0.000906"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.821871" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.821624" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:28:48.822329" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:28:48.822086" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:30:53.897453" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:28:48.824568" elapsed="125.076992">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:28:48.822439" elapsed="125.079344">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.902575" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:53.901873" elapsed="0.001004"/>
</branch>
<status status="FAIL" start="2026-04-19T02:28:48.822421" elapsed="125.080523">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.904471" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:30:53.904682" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:53.904626" elapsed="0.000116"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:30:53.904599" elapsed="0.000174"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.904982" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:30:53.905118" elapsed="0.000024"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:28:48.817055" elapsed="125.088227">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:30:53.905387" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:28:48.814497" elapsed="125.091029">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.905842" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:30:53.906033" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:53.905977" elapsed="0.000142"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:30:53.905952" elapsed="0.000204"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.906440" elapsed="0.000037"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.906758" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:30:53.906856" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:28:48.812929" elapsed="125.094072">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:30:53.907219" elapsed="0.000023"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:30:53.907149" elapsed="0.000129"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:30:53.907117" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.907534" elapsed="0.000031"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:28:48.812519" elapsed="125.095118">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:28:48.628981" elapsed="125.278742">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:28:48.626818" elapsed="125.281047">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:28:48.626476" elapsed="125.281472">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T02:28:48.626451" elapsed="125.281540">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:30:53.908413" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:53.908109" elapsed="0.000387"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:30:53.908084" elapsed="0.000445"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:30:53.908895" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:53.908602" elapsed="0.000373"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:30:53.908581" elapsed="0.000426"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:28:48.625946" elapsed="125.283207">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T02:30:53.909326" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T02:23:47.179633" elapsed="426.729882">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:30:53.914315" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:30:53.913840" elapsed="0.000508"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:30:53.914831" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:30:53.914517" elapsed="0.000341"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:30:53.914903" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:30:53.915079" level="INFO">${index_list} = [1, 2, 3]</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-19T02:30:53.913408" elapsed="0.001698"/>
</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-19T02:30:53.916382" level="INFO">${member_ip} = 10.30.171.9</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-19T02:30:53.916099" elapsed="0.000325"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:53.917325" 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-19T02:30:53.917444" 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-19T02:30:53.917151" elapsed="0.000328"/>
</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-19T02:30:53.920376" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:53.920086" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:53.920065" elapsed="0.000393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:53.920762" 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-19T02:30:53.920865" 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-19T02:30:53.920626" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:53.921562" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:53.921064" elapsed="0.000548"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:53.922223" level="INFO">${conn_id} = 552</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:53.921771" elapsed="0.000478"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:30:53.923375" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:30:53.923486" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:30:53.922952" elapsed="0.000560"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:53.923691" elapsed="0.000553"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:30:53.925773" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:30:54.506892" 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 Sun Apr 19 02:30:54 UTC 2026

  System load:  0.16               Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:23:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:30:53.925137" elapsed="0.582011"/>
</kw>
<msg time="2026-04-19T02:30:54.507462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:53.924417" elapsed="0.583189"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:30:53.922471" elapsed="0.585253"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:30:54.508289" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:30:54.522141" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:30:54.522389" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:30:54.522492" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:30:54.507985" elapsed="0.014558"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:54.522916" elapsed="0.000533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:54.524577" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:54.523870" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:54.525223" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:54.524855" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:54.524803" 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-19T02:30:54.525740" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:30:54.525502" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:54.525467" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:54.526001" elapsed="0.000067"/>
</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-19T02:30:54.531154" elapsed="0.000560"/>
</kw>
<kw name="Open 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-19T02:30:54.531882" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:54.532215" 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-19T02:30:54.526747" elapsed="0.005618"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:30:53.919449" elapsed="0.613008"/>
</kw>
<msg time="2026-04-19T02:30:54.532511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:53.918836" elapsed="0.613738"/>
</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-19T02:30:53.918218" elapsed="0.614435"/>
</kw>
<msg time="2026-04-19T02:30:54.532695" 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-19T02:30:53.917646" elapsed="0.615105"/>
</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-19T02:30:54.535715" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:54.536206" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:54.536498" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:54.533058" elapsed="0.003586"/>
</kw>
<msg time="2026-04-19T02:30:54.536739" 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-19T02:30:53.916657" elapsed="0.620107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:54.537238" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:54.536947" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:30:54.537323" 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-19T02:30:53.915580" elapsed="0.621867"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:30:53.915297" elapsed="0.622188"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:54.538503" level="INFO">${member_ip} = 10.30.171.128</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-19T02:30:54.538224" elapsed="0.000307"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:54.539417" 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-19T02:30:54.539517" 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-19T02:30:54.539280" elapsed="0.000263"/>
</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-19T02:30:54.542447" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:54.542175" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:54.542156" elapsed="0.000372"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:54.542842" 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-19T02:30:54.542946" 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-19T02:30:54.542701" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:54.543635" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:54.543149" elapsed="0.000536"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:54.544295" level="INFO">${conn_id} = 555</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:54.543844" elapsed="0.000477"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:30:54.545492" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:30:54.545589" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:30:54.545017" 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-19T02:30:54.545775" elapsed="0.000562"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:30:54.547747" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:30:55.130051" 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 Sun Apr 19 02:30:54 UTC 2026

  System load:  0.03               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:23:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:30:54.547099" elapsed="0.583164"/>
</kw>
<msg time="2026-04-19T02:30:55.130410" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:54.546511" elapsed="0.584036"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:30:54.544540" elapsed="0.586123"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.131214" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:30:55.143564" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:30:55.143680" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:30:55.143724" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:30:55.130910" elapsed="0.012837"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:55.143914" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.144710" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:55.144386" elapsed="0.000369"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:55.144992" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:55.144841" elapsed="0.000231"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.144814" elapsed="0.000284"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:30:55.145263" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:30:55.145155" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.145139" elapsed="0.000271"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:55.145448" 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-19T02:30:55.148743" 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-19T02:30:55.149514" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:55.149820" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:55.145781" elapsed="0.004188"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:30:54.541602" elapsed="0.608484"/>
</kw>
<msg time="2026-04-19T02:30:55.150143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:54.541007" elapsed="0.609199"/>
</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-19T02:30:54.540436" elapsed="0.609848"/>
</kw>
<msg time="2026-04-19T02:30:55.150326" 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-19T02:30:54.539700" elapsed="0.610683"/>
</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-19T02:30:55.153488" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T02:30:55.153957" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:55.154269" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:55.150705" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T02:30:55.154526" 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-19T02:30:54.538800" elapsed="0.615752"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.155120" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:55.154735" elapsed="0.000427"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:30:55.155205" 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-19T02:30:54.537766" elapsed="0.617561"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:30:54.537580" elapsed="0.617784"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:55.156362" level="INFO">${member_ip} = 10.30.171.206</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-19T02:30:55.156090" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.157190" 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-19T02:30:55.157288" 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-19T02:30:55.157053" elapsed="0.000261"/>
</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-19T02:30:55.159958" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:55.159691" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.159673" elapsed="0.000399"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.160356" 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-19T02:30:55.160456" 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-19T02:30:55.160228" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.161118" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:55.160636" elapsed="0.000564"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.161778" level="INFO">${conn_id} = 558</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:55.161360" elapsed="0.000445"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.162904" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:30:55.162998" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:30:55.162495" elapsed="0.000527"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:55.163200" elapsed="0.000691"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.165299" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:30:55.764951" 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 Sun Apr 19 02:30:55 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:23:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:30:55.164640" elapsed="0.600539"/>
</kw>
<msg time="2026-04-19T02:30:55.765298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:55.164081" elapsed="0.601355"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:30:55.162019" elapsed="0.603528"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.766110" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:30:55.778428" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:30:55.778595" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:30:55.778655" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:30:55.765803" elapsed="0.012884"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:55.778941" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.780016" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:55.779572" elapsed="0.000541"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:55.780426" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:55.780228" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.780194" elapsed="0.000331"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:30:55.780750" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T02:30:55.780602" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.780580" elapsed="0.000293"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:55.780920" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:55.785282" elapsed="0.000797"/>
</kw>
<kw name="Open 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-19T02:30:55.786311" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:55.786735" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:55.781400" elapsed="0.005543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:30:55.159141" elapsed="0.627957"/>
</kw>
<msg time="2026-04-19T02:30:55.787174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:55.158567" elapsed="0.628696"/>
</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-19T02:30:55.157970" elapsed="0.629398"/>
</kw>
<msg time="2026-04-19T02:30:55.787423" 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-19T02:30:55.157470" elapsed="0.630136"/>
</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-19T02:30:55.791797" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:55.792486" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:55.792790" 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-19T02:30:55.788012" elapsed="0.004924"/>
</kw>
<msg time="2026-04-19T02:30:55.793025" 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-19T02:30:55.156601" elapsed="0.636465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.793501" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:55.793247" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:30:55.793585" 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-19T02:30:55.155639" elapsed="0.638068"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:30:55.155458" elapsed="0.638286"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:30:53.915163" elapsed="1.878616"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:30:53.909957" elapsed="1.883882"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T02:23:45.739452" elapsed="430.054474">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:55.794119" elapsed="0.000023"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T02:30:55.794363" elapsed="0.000024"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:55.794736" elapsed="0.000023"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:55.794957" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:55.795249" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:55.795063" elapsed="0.000244"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:30:55.795033" elapsed="0.000299"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T02:30:55.794555" elapsed="0.000801"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:30:55.794442" elapsed="0.000938"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:30:55.795547" elapsed="0.000022"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:23:45.734668" elapsed="430.061058">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T02:30:55.796520" elapsed="0.000262"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T02:16:30.062791" elapsed="865.734027"/>
</suite>
<suite id="s1-s14" name="Chasing The Leader" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/chasing_the_leader.robot">
<kw name="Setup_Keyword" 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-19T02:30:55.878162" 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-19T02:30:55.873782" elapsed="0.004437"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T02:30:55.873551" elapsed="0.004740"/>
</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-19T02:30:55.883282" 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-19T02:30:55.879483" elapsed="0.003829"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T02:30:55.883524" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:55.883400" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.883376" elapsed="0.000216"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.884131" 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-19T02:30:55.883747" elapsed="0.000445"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.884681" level="INFO">${cluster_size} = 3</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-19T02:30:55.884356" elapsed="0.000352"/>
</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-19T02:30:55.885243" elapsed="0.000295"/>
</kw>
<msg time="2026-04-19T02:30:55.885637" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:30:55.885687" level="INFO">${possibly_int_of_members} = 3</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-19T02:30:55.884875" elapsed="0.000837"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.886280" level="INFO">${int_of_members} = 3</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-19T02:30:55.885882" elapsed="0.000426"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.887320" 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-19T02:30:55.887023" elapsed="0.000325"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.887915" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:30:55.887497" elapsed="0.000446"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.888455" 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-19T02:30:55.888118" elapsed="0.000365"/>
</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-19T02:30:55.891697" elapsed="0.000216"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.892441" level="INFO">${member_ip} = 10.30.171.9</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-19T02:30:55.892088" elapsed="0.000380"/>
</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-19T02:30:55.892626" elapsed="0.000241"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.893674" 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-19T02:30:55.893372" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:30:55.893748" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:30:55.893906" 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-19T02:30:55.893078" elapsed="0.000853"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:30:55.894702" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706034b50&gt;, timeout=125, 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-19T02:30:55.894108" elapsed="0.000732"/>
</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-19T02:30:55.895002" elapsed="0.000213"/>
</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-19T02:30:55.891124" elapsed="0.004152"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:30:55.890744" elapsed="0.004575"/>
</iter>
<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-19T02:30:55.896156" elapsed="0.000228"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.896873" level="INFO">${member_ip} = 10.30.171.128</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-19T02:30:55.896540" elapsed="0.000360"/>
</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-19T02:30:55.897065" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.898175" level="INFO">${session} = ClusterManagement__session_2</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-19T02:30:55.897781" elapsed="0.000422"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:30:55.898250" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:30:55.898402" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T02:30:55.897482" elapsed="0.000945"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:30:55.898993" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f769b990&gt;, timeout=125, 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-19T02:30:55.898586" elapsed="0.000532"/>
</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-19T02:30:55.899280" elapsed="0.000195"/>
</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-19T02:30:55.895583" elapsed="0.003953"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:30:55.895405" elapsed="0.004176"/>
</iter>
<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-19T02:30:55.900451" elapsed="0.000195"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.901156" level="INFO">${member_ip} = 10.30.171.206</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-19T02:30:55.900801" elapsed="0.000382"/>
</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-19T02:30:55.901334" elapsed="0.000233"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.902387" level="INFO">${session} = ClusterManagement__session_3</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-19T02:30:55.902077" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:30:55.902461" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:30:55.902615" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T02:30:55.901759" elapsed="0.000882"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:30:55.903228" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78270603d650&gt;, timeout=125, 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-19T02:30:55.902793" elapsed="0.000542"/>
</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-19T02:30:55.903495" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-19T02:30:55.899848" elapsed="0.003901"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:30:55.899667" elapsed="0.004126"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T02:30:55.888540" elapsed="0.015284"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.904453" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T02:30:55.903994" elapsed="0.000504"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.905088" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T02:30:55.904659" elapsed="0.000472"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.905679" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T02:30:55.905290" elapsed="0.000433"/>
</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-19T02:30:55.886566" elapsed="0.019214"/>
</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-19T02:30:55.879132" elapsed="0.026705"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:30:55.906022" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:55.905901" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.905883" elapsed="0.000225"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.910715" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:30:55.910322" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.911233" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:30:55.910902" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:30:55.911305" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:30:55.911463" level="INFO">${index_list} = [1, 2, 3]</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-19T02:30:55.909966" elapsed="0.001523"/>
</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-19T02:30:55.912531" level="INFO">${member_ip} = 10.30.171.9</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-19T02:30:55.912227" elapsed="0.000335"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.913383" 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-19T02:30:55.913487" 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-19T02:30:55.913217" elapsed="0.000297"/>
</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-19T02:30:55.916937" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:55.916358" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:55.916338" elapsed="0.000740"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.917701" 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-19T02:30:55.917926" 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-19T02:30:55.917272" elapsed="0.000705"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.918912" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:55.918258" elapsed="0.000759"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.920188" 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-19T02:30:55.919301" elapsed="0.000939"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:30:55.921947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:30:55.922141" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:30:55.921600" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:55.922519" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:30:55.993935" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:30:56.306019" 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 Sun Apr 19 02:30:54 UTC 2026

  System load:  0.16               Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:30:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:30:55.923762" elapsed="0.382429"/>
</kw>
<msg time="2026-04-19T02:30:56.306277" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:55.923328" elapsed="0.383131"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:30:55.920693" elapsed="0.385934"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.307656" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:30:56.320744" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:30:56.321176" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:30:56.321407" 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-19T02:30:56.307132" elapsed="0.014387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:56.322259" elapsed="0.001161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.325534" 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-19T02:30:56.324686" elapsed="0.001001"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:56.326348" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:56.325933" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:56.325893" elapsed="0.000685"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:30:56.327068" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T02:30:56.326716" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:56.326690" elapsed="0.000644"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:56.327417" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:56.332163" elapsed="0.000626"/>
</kw>
<kw name="Open 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-19T02:30:56.333088" elapsed="0.000304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:56.333660" elapsed="0.000230"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:56.328171" elapsed="0.005789"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:30:55.915410" elapsed="0.418863"/>
</kw>
<msg time="2026-04-19T02:30:56.334331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:55.914765" elapsed="0.419621"/>
</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-19T02:30:55.914219" elapsed="0.420250"/>
</kw>
<msg time="2026-04-19T02:30:56.334511" 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-19T02:30:55.913670" elapsed="0.420888"/>
</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-19T02:30:56.337474" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:30:56.337965" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:56.338314" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:56.334849" elapsed="0.003621"/>
</kw>
<msg time="2026-04-19T02:30:56.338564" 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-19T02:30:55.912779" elapsed="0.425812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.339025" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:56.338768" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:30:56.339132" 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-19T02:30:55.911850" elapsed="0.427415"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:30:55.911675" elapsed="0.427639"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:56.340326" level="INFO">${member_ip} = 10.30.171.128</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-19T02:30:56.340018" elapsed="0.000336"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.341099" 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-19T02:30:56.341248" 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-19T02:30:56.340936" elapsed="0.000341"/>
</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-19T02:30:56.344725" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:56.344165" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:56.344145" elapsed="0.000707"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.345504" 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-19T02:30:56.345735" 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-19T02:30:56.345066" elapsed="0.000721"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.346741" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:56.346064" elapsed="0.000782"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.348090" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:56.347129" elapsed="0.001013"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.349877" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:30:56.350072" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:30:56.349492" elapsed="0.000624"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:56.350449" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.352166" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:30:56.671874" 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 Sun Apr 19 02:30:54 UTC 2026

  System load:  0.03               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:30:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:30:56.351758" elapsed="0.320294"/>
</kw>
<msg time="2026-04-19T02:30:56.672143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:56.351282" elapsed="0.321023"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:30:56.348589" elapsed="0.323871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.673366" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:30:56.685909" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:30:56.686331" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:30:56.686551" 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-19T02:30:56.672839" elapsed="0.013818"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:56.687346" elapsed="0.001098"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.690803" 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-19T02:30:56.689667" elapsed="0.001288"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:56.691606" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:56.691234" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:56.691195" elapsed="0.000652"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:30:56.692314" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T02:30:56.691963" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:56.691939" elapsed="0.000719"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:56.692745" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:56.697638" elapsed="0.000753"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:56.698720" elapsed="0.000295"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:56.699385" elapsed="0.000221"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:56.693470" elapsed="0.006204"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:30:56.343196" elapsed="0.356651"/>
</kw>
<msg time="2026-04-19T02:30:56.699905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:56.342564" elapsed="0.357396"/>
</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-19T02:30:56.341963" elapsed="0.358094"/>
</kw>
<msg time="2026-04-19T02:30:56.700100" 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-19T02:30:56.341445" elapsed="0.358700"/>
</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-19T02:30:56.702876" 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-19T02:30:56.703428" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:56.703721" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:56.700431" elapsed="0.003436"/>
</kw>
<msg time="2026-04-19T02:30:56.703957" 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-19T02:30:56.340573" elapsed="0.363409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.704443" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:56.704194" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:30:56.704526" 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-19T02:30:56.339633" elapsed="0.365014"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:30:56.339411" elapsed="0.365276"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:56.705625" level="INFO">${member_ip} = 10.30.171.206</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-19T02:30:56.705351" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.706416" 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-19T02:30:56.706518" 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-19T02:30:56.706273" elapsed="0.000271"/>
</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-19T02:30:56.710106" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:56.709533" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:56.709514" elapsed="0.000717"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.710850" 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-19T02:30:56.711122" 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-19T02:30:56.710425" elapsed="0.000749"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.712129" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:56.711466" elapsed="0.000766"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.713378" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:30:56.712493" elapsed="0.000938"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:30:56.715167" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:30:56.715340" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:30:56.714787" 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-19T02:30:56.715717" elapsed="0.000549"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:30:56.717374" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:30:57.038697" 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 Sun Apr 19 02:30:55 UTC 2026

  System load:  0.0                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:30:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:30:56.717050" elapsed="0.321788"/>
</kw>
<msg time="2026-04-19T02:30:57.038926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:56.716603" elapsed="0.322522"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:30:56.713861" elapsed="0.325425"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:30:57.040190" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:30:57.052808" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:30:57.052983" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:30:57.053111" 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-19T02:30:57.039663" elapsed="0.013498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:57.053471" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:57.055173" 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-19T02:30:57.054585" elapsed="0.000694"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:57.055718" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:57.055453" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:57.055425" elapsed="0.000460"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:30:57.056214" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:30:57.055967" elapsed="0.000387"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:57.055950" elapsed="0.000442"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:30:57.056474" 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-19T02:30:57.059968" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T02:30:57.060747" elapsed="0.000305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:57.061317" 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-19T02:30:57.056960" elapsed="0.004654"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:30:56.708606" elapsed="0.353184"/>
</kw>
<msg time="2026-04-19T02:30:57.061900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:30:56.707767" elapsed="0.354187"/>
</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-19T02:30:56.707283" elapsed="0.354845"/>
</kw>
<msg time="2026-04-19T02:30:57.062174" 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-19T02:30:56.706697" elapsed="0.355524"/>
</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-19T02:30:57.064982" 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-19T02:30:57.065485" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:57.065774" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:30:57.062508" elapsed="0.003411"/>
</kw>
<msg time="2026-04-19T02:30:57.066008" 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-19T02:30:56.705864" elapsed="0.360184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:57.066466" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:57.066221" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:30:57.066550" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:30:56.704970" elapsed="0.361701"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:30:56.704787" elapsed="0.361922"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:30:55.911546" elapsed="1.155198"/>
</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-19T02:30:55.906325" elapsed="1.160484"/>
</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-19T02:30:57.066971" elapsed="0.000231"/>
</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-19T02:30:57.080309" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:57.080199" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:57.080180" elapsed="0.000196"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:57.080686" 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-19T02:30:57.080788" 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-19T02:30:57.080524" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:57.081248" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:57.080963" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:57.081677" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:57.081437" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:57.082471" 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-19T02:30:57.082241" elapsed="0.000353">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T02:30:57.082700" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:30:57.082745" 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-19T02:30:57.081872" elapsed="0.000895"/>
</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-19T02:30:57.083079" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:57.082842" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:57.082824" elapsed="0.000355"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:57.083916" level="INFO">${ip_address} = 10.30.171.9</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-19T02:30:57.083652" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:30:57.083989" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:30:57.084154" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:30:57.083379" 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-19T02:30:57.084370" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:57.085091" level="INFO">index=10
host=10.30.171.9
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-19T02:30:57.085192" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T02:30:57.084968" 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-19T02:30:57.085366" elapsed="0.002372"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:30:57.088179" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:30:57.823907" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:30:57.087902" elapsed="0.736202"/>
</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-19T02:30:57.827620" 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-19T02:30:57.828179" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:57.828496" 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-19T02:30:57.825316" elapsed="0.003332"/>
</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-19T02:30:57.824552" elapsed="0.004142"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:30:57.079908" elapsed="0.748838"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:30:57.067905" elapsed="0.760888"/>
</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-19T02:30:57.067541" elapsed="0.761304"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:30:57.067405" elapsed="0.761481"/>
</iter>
<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-19T02:30:57.841894" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:57.841775" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:57.841752" elapsed="0.000216"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:57.842281" 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-19T02:30:57.842388" 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-19T02:30:57.842137" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:57.842828" 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-19T02:30:57.842565" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:57.843276" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:57.843019" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:57.844075" level="FAIL">Dictionary does not contain key '2'.</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-19T02:30:57.843826" elapsed="0.000364">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T02:30:57.844296" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:30:57.844413" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T02:30:57.843472" elapsed="0.000967"/>
</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-19T02:30:57.844743" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:57.844517" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:57.844498" elapsed="0.000344"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:57.845824" level="INFO">${ip_address} = 10.30.171.128</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-19T02:30:57.845556" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:30:57.845899" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:30:57.846074" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:30:57.845058" elapsed="0.001041"/>
</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-19T02:30:57.846252" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:57.846953" level="INFO">index=12
host=10.30.171.128
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-19T02:30:57.847069" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T02:30:57.846846" elapsed="0.000251"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:30:57.847241" elapsed="0.002193"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:30:57.849852" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:30:58.636032" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:30:57.849595" elapsed="0.786617"/>
</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-19T02:30:58.639775" 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-19T02:30:58.640350" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:30:58.640668" elapsed="0.000114"/>
</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-19T02:30:58.637392" elapsed="0.003443"/>
</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-19T02:30:58.636635" elapsed="0.004248"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:30:57.841485" elapsed="0.799452"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:30:57.829547" elapsed="0.811439"/>
</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-19T02:30:57.829147" elapsed="0.811913"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:30:57.828988" elapsed="0.812115"/>
</iter>
<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-19T02:30:58.654785" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:30:58.654662" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:58.654638" elapsed="0.000223"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:58.655278" 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-19T02:30:58.655398" 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-19T02:30:58.655110" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:58.655862" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:58.655581" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:30:58.656494" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:30:58.656156" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:58.657493" level="FAIL">Dictionary does not contain key '3'.</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-19T02:30:58.657220" elapsed="0.000390">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T02:30:58.657720" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:30:58.657766" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T02:30:58.656773" elapsed="0.001016"/>
</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-19T02:30:58.658170" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:30:58.657864" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-19T02:30:58.657846" elapsed="0.000428"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:30:58.659079" level="INFO">${ip_address} = 10.30.171.206</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-19T02:30:58.658772" elapsed="0.000334"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:30:58.659156" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:30:58.659313" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:30:58.658476" elapsed="0.000861"/>
</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-19T02:30:58.659488" elapsed="0.000435"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:30:58.660247" level="INFO">index=14
host=10.30.171.206
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-19T02:30:58.660349" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T02:30:58.660132" 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-19T02:30:58.660525" elapsed="0.002294"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:30:58.663264" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:31:08.693661" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:30:58.662982" elapsed="10.031610">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:31:08.698399" 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-19T02:31:08.698938" elapsed="0.000192"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:31:08.699278" 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-19T02:31:08.696110" elapsed="0.003322"/>
</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-19T02:31:08.695138" elapsed="0.004342"/>
</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-19T02:30:58.654355" elapsed="10.045209">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:31:08.699663" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:30:58.641732" elapsed="10.058025">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:30:58.641353" elapsed="10.058547"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:30:58.641210" elapsed="10.058735"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T02:30:57.067258" elapsed="11.632722"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T02:30:55.878659" elapsed="12.821399"/>
</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-19T02:31:08.702783" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:08.702664" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.702641" elapsed="0.000214"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:08.707544" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:08.707437" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.707419" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:31:08.708574" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:31:08.708187" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:31:08.709073" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:31:08.708756" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:31:08.709144" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:31:08.709299" level="INFO">${index_list} = [1, 2, 3]</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-19T02:31:08.707836" elapsed="0.001488"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:08.714609" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:08.714502" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.714484" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:08.715953" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:08.715819" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.715801" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:31:08.716533" 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-19T02:31:08.716184" elapsed="0.000376"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:08.716952" 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-19T02:31:08.716715" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:31:08.801550" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:31:08.717682" elapsed="0.084069"/>
</kw>
<msg time="2026-04-19T02:31:08.801933" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:31:08.802002" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:08.717150" elapsed="0.084935"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:31:08.932919" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "c "h "a "s "i "n "g "_ "t "h "e "_ "l "e "a "d "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:31:08.802935" elapsed="0.130176"/>
</kw>
<msg time="2026-04-19T02:31:08.933246" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:31:08.933292" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:08.802344" elapsed="0.130983"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:08.933701" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:08.933422" elapsed="0.000514"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.933394" elapsed="0.000573"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:31:08.934871" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "c "h "a "s "i "n "g "_ "t "h "e "_ "l "e "a "d "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:31:08.934234" elapsed="0.000728"/>
</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-19T02:31:08.935290" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:08.935047" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.935014" elapsed="0.000465"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:31:08.935517" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:31:08.937645" elapsed="0.000842"/>
</kw>
<kw name="Open 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-19T02:31:08.938887" elapsed="0.000338"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:31:08.939583" elapsed="0.000264"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:31:08.936780" elapsed="0.003162"/>
</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-19T02:31:08.935818" elapsed="0.004292"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:31:08.715523" elapsed="0.224690"/>
</kw>
<msg time="2026-04-19T02:31:08.940305" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:08.940351" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:08.714854" elapsed="0.225532"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:31:08.940571" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:31:08.940463" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.940444" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:08.941076" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:08.941416" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:31:08.941489" elapsed="0.000018"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:31:08.714212" elapsed="0.227387"/>
</kw>
<msg time="2026-04-19T02:31:08.941694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:08.941738" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:08.709688" elapsed="0.232085"/>
</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-19T02:31:08.942279" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:08.941849" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.941831" elapsed="0.000527"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:31:08.709549" elapsed="0.232833"/>
</iter>
<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-19T02:31:08.947638" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:08.947530" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.947512" 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-19T02:31:08.948896" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:08.948768" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:08.948750" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:31:08.949463" level="INFO">${karaf_connection_index} = 12</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-19T02:31:08.949127" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:08.949872" 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-19T02:31:08.949642" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:31:09.041806" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:31:08.950748" elapsed="0.091378"/>
</kw>
<msg time="2026-04-19T02:31:09.042364" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:31:09.042437" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:08.950217" elapsed="0.092273"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:31:09.196925" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "c "h "a "s "i "n "g "_ "t "h "e "_ "l "e "a "d "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:31:09.043787" elapsed="0.153415"/>
</kw>
<msg time="2026-04-19T02:31:09.197400" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:31:09.197448" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:09.042827" elapsed="0.154658"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:09.197975" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:09.197604" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:09.197568" elapsed="0.000642"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:31:09.198834" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "c "l "u "s "t "[78Ce "[A[78Cr
 "_ "s "i "n "g "l "e "t "o "n "/ "c "h "a "s "i "n "g "_ "t "h "e "_ "l "e "a "d "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:31:09.198362" elapsed="0.000564"/>
</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-19T02:31:09.199469" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:09.199011" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:09.198991" elapsed="0.000672"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:31:09.199704" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:31:09.202284" elapsed="0.000507"/>
</kw>
<kw name="Open 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-19T02:31:09.203388" elapsed="0.000337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:31:09.204121" elapsed="0.000267"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:31:09.201099" elapsed="0.003389"/>
</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-19T02:31:09.200047" elapsed="0.004594"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:31:08.948480" elapsed="0.256265"/>
</kw>
<msg time="2026-04-19T02:31:09.204854" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:09.204899" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:08.947854" elapsed="0.257081"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:31:09.205141" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:31:09.205012" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:09.204994" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:09.205640" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:09.206000" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:31:09.206105" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:31:08.947238" elapsed="0.259045"/>
</kw>
<msg time="2026-04-19T02:31:09.206380" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:09.206424" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:08.942662" elapsed="0.263798"/>
</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-19T02:31:09.206788" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:09.206536" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:09.206519" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:31:08.942510" elapsed="0.264381"/>
</iter>
<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-19T02:31:09.212445" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:09.212333" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:09.212314" elapsed="0.000201"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:09.213764" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:09.213626" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:09.213607" elapsed="0.000235"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:31:09.214371" level="INFO">${karaf_connection_index} = 14</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-19T02:31:09.213989" elapsed="0.000418"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:09.214819" 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-19T02:31:09.214568" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:31:19.216567" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:31:09.215584" elapsed="10.002008">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:31:19.217824" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:31:19.217875" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:31:09.215050" elapsed="10.002848"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:31:29.219710" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:31:19.218819" elapsed="10.001904">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:31:29.220972" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:31:29.221025" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:31:19.218194" elapsed="10.002990"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:31:29.222632" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/chasing_the_leader.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-19T02:31:29.221720" elapsed="0.001024">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/chasing_the_leader.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:31:29.221323" elapsed="0.001577">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/chasing_the_leader.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:31:29.221282" elapsed="0.001979">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/chasing_the_leader.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-19T02:31:29.223442" 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-19T02:31:29.223699" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:29.223547" elapsed="0.000318"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:31:29.223523" elapsed="0.000369"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:31:29.223931" 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-19T02:31:29.226438" elapsed="0.000532"/>
</kw>
<kw name="Open 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-19T02:31:29.227384" elapsed="0.000358"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:31:29.228368" elapsed="0.000302"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:31:29.225518" elapsed="0.003251"/>
</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-19T02:31:29.224398" elapsed="0.004524"/>
</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-19T02:31:09.213326" elapsed="20.015686">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/chasing_the_leader.robot"</status>
</kw>
<msg time="2026-04-19T02:31:29.229135" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:31:29.229182" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/cluster_singleton/chasing_the_leader.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-19T02:31:09.212668" elapsed="20.016539"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:31:29.229396" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:29.229285" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:29.229267" elapsed="0.000195"/>
</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-19T02:31:29.230278" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:29.230137" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:29.230120" elapsed="0.000229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:29.230660" 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-19T02:31:29.230770" 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-19T02:31:29.230501" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:31:29.231266" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:31:29.230948" elapsed="0.000366"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:31:29.231719" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:31:29.231464" elapsed="0.000300"/>
</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-19T02:31:29.232373" elapsed="0.000312"/>
</kw>
<msg time="2026-04-19T02:31:29.232784" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:29.232830" level="INFO">${old_connection_index} = 14</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-19T02:31:29.231922" elapsed="0.000930"/>
</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-19T02:31:29.234080" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:31:39.236231" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:31:29.235524" elapsed="10.001332">No match found for '
' in 10 seconds
Output:
.</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-19T02:31:29.234603" elapsed="10.002386"/>
</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-19T02:31:39.238346" elapsed="0.000314"/>
</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-19T02:31:39.237390" elapsed="0.001349"/>
</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-19T02:31:29.233180" elapsed="10.005650"/>
</kw>
<status status="PASS" start="2026-04-19T02:31:29.232928" elapsed="10.005957"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:29.232910" elapsed="10.006012"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:31:39.240078" level="INFO">${ip_address} = 10.30.171.206</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-19T02:31:39.239550" elapsed="0.000557"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:31:39.240161" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:31:39.240325" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:31:39.239219" elapsed="0.001131"/>
</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-19T02:31:39.240544" elapsed="0.000439"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:39.241292" level="INFO">index=19
host=10.30.171.206
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-19T02:31:39.241464" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T02:31:39.241174" elapsed="0.000318"/>
</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-19T02:31:39.241640" elapsed="0.003936"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:31:39.246016" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:31:49.310692" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:31:39.245741" elapsed="10.065752">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:31:49.315243" elapsed="0.000715"/>
</kw>
<kw name="Open 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-19T02:31:49.316241" elapsed="0.000500"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:31:49.316967" elapsed="0.000221"/>
</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-19T02:31:49.312660" elapsed="0.004617"/>
</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-19T02:31:49.311961" elapsed="0.005367"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:31:29.229869" elapsed="20.087553">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:31:49.317817" elapsed="0.000031"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.317904" elapsed="0.000023"/>
</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-19T02:31:09.211978" elapsed="40.106043">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:31:49.318168" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:31:49.318213" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:31:09.207310" elapsed="40.110926"/>
</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-19T02:31:49.318585" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:49.318324" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.318303" elapsed="0.000361"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:31:09.207164" elapsed="40.111536"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:31:08.709378" elapsed="40.609356"/>
</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-19T02:31:08.707146" elapsed="40.611645"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T02:31:08.700659" elapsed="40.618189"/>
</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-19T02:31:08.700217" elapsed="40.618673"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T02:30:55.873188" elapsed="53.445755"/>
</kw>
<kw name="Cluster_Singleton_Init" owner="CsCommon">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.319651" level="INFO">${cs_exp_candidates} = []</msg>
<var>${cs_exp_candidates}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:31:49.319390" elapsed="0.000289"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.320202" level="INFO">${cs_exp_candidates} = []</msg>
<arg>${cs_exp_candidates}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T02:31:49.319838" elapsed="0.000407"/>
</kw>
<kw name="List_All_Indices" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.323643" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:31:49.323254" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.324150" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:31:49.323826" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:31:49.324223" elapsed="0.000032"/>
</return>
<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-19T02:31:49.321044" elapsed="0.003375"/>
</kw>
<msg time="2026-04-19T02:31:49.324458" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>List_Indices_Or_All</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:31:49.320652" elapsed="0.003852"/>
</kw>
<msg time="2026-04-19T02:31:49.324602" level="INFO">${cs_all_indices} = [1, 2, 3]</msg>
<var>${cs_all_indices}</var>
<doc>Create a new list of all indices.</doc>
<status status="PASS" start="2026-04-19T02:31:49.320438" elapsed="0.004189"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.325122" level="INFO">${cs_all_indices} = [1, 2, 3]</msg>
<arg>${cs_all_indices}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-19T02:31:49.324782" elapsed="0.000383"/>
</kw>
<doc>Resouce initial keyword. Creates {cs_exp_candidates} and {cs_all_indices} suite variables which are
used in other keywords.</doc>
<status status="PASS" start="2026-04-19T02:31:49.319170" elapsed="0.006049"/>
</kw>
<status status="PASS" start="2026-04-19T02:30:55.872776" elapsed="53.452493"/>
</kw>
<test id="s1-s14-t1" name="Register_Candidates" line="38">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:31:49.328944" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:31:49.328480" elapsed="0.000745"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.330230" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.330120" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.330101" elapsed="0.000197"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.335214" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.335102" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.335083" elapsed="0.000201"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.336299" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:31:49.335892" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.336787" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:31:49.336484" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:31:49.336858" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:31:49.337014" level="INFO">${index_list} = [1, 2, 3]</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-19T02:31:49.335512" elapsed="0.001542"/>
</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-19T02:31:49.342582" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.342473" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.342445" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.343814" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.343707" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.343689" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:31:49.344367" 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-19T02:31:49.344022" elapsed="0.000374"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:49.344777" 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-19T02:31:49.344555" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:31:49.405138" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:31:49.345309" elapsed="0.059929"/>
</kw>
<msg time="2026-04-19T02:31:49.405409" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:31:49.405454" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:31:49.344958" elapsed="0.060531"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:31:49.446406" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:31:49.406045" elapsed="0.040467"/>
</kw>
<msg time="2026-04-19T02:31:49.446690" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:31:49.446812" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:49.405673" elapsed="0.041181"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.447193" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:49.446933" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.446914" elapsed="0.000359"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.447727" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:31:49.447416" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.448107" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:49.447860" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.447843" elapsed="0.000344"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:31:49.448221" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:31:49.449749" elapsed="0.000908"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:31:49.450955" elapsed="0.000543"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:31:49.451781" elapsed="0.000436"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:31:49.449073" elapsed="0.003254"/>
</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-19T02:31:49.448503" elapsed="0.003888"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:31:49.343407" elapsed="0.109083"/>
</kw>
<msg time="2026-04-19T02:31:49.452581" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:49.452624" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "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-19T02:31:49.342799" elapsed="0.109860"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:31:49.452842" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:31:49.452735" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.452717" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.453334" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.453662" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.453732" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:31:49.342125" elapsed="0.111737"/>
</kw>
<msg time="2026-04-19T02:31:49.453957" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:49.454001" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:49.337442" elapsed="0.116609"/>
</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-19T02:31:49.454377" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:49.454129" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.454111" elapsed="0.000342"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:31:49.337302" elapsed="0.117173"/>
</iter>
<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-19T02:31:49.459871" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.459762" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.459743" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.461147" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.461014" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.460995" elapsed="0.000256"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:31:49.461718" level="INFO">${karaf_connection_index} = 12</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-19T02:31:49.461401" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:49.462174" 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-19T02:31:49.461927" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:31:49.524472" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:31:49.462700" elapsed="0.061915"/>
</kw>
<msg time="2026-04-19T02:31:49.524815" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:31:49.524867" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:31:49.462361" elapsed="0.062542"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:31:49.567461" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:31:49.525522" elapsed="0.042064"/>
</kw>
<msg time="2026-04-19T02:31:49.567765" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:31:49.567811" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:49.525127" elapsed="0.042720"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.568250" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:49.567948" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.567917" elapsed="0.000418"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:31:49.568810" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:31:49.568479" elapsed="0.000400"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.569179" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:49.568947" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.568928" elapsed="0.000329"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:31:49.569295" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:31:49.570889" elapsed="0.000909"/>
</kw>
<kw name="Open 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-19T02:31:49.572125" elapsed="0.000529"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:31:49.572943" elapsed="0.000429"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:31:49.570208" elapsed="0.003276"/>
</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-19T02:31:49.569612" elapsed="0.003937"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:31:49.460707" elapsed="0.112944"/>
</kw>
<msg time="2026-04-19T02:31:49.573744" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:49.573791" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "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-19T02:31:49.460126" elapsed="0.113701"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:31:49.574059" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:31:49.573933" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.573914" elapsed="0.000233"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.574584" elapsed="0.000030"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:31:49.574944" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.575092" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:31:49.459418" elapsed="0.115787"/>
</kw>
<msg time="2026-04-19T02:31:49.575298" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:31:49.575342" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "R "e "g "i "s "t "e "r "_ "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:49.454735" elapsed="0.120643"/>
</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-19T02:31:49.575705" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:31:49.575454" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.575437" elapsed="0.000345"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:31:49.454599" elapsed="0.121208"/>
</iter>
<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-19T02:31:49.581326" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.581215" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.581194" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:31:49.582564" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:31:49.582457" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:31:49.582439" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:31:49.583120" level="INFO">${karaf_connection_index} = 19</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-19T02:31:49.582774" elapsed="0.000375"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:31:49.583529" 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-19T02:31:49.583306" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:31:59.584659" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:31:49.584058" elapsed="10.001577">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:31:59.585909" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:31:59.585960" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:31:49.583712" elapsed="10.002275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:32:09.587362" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:31:59.586724" elapsed="10.001604">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:32:09.588651" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:32:09.588701" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:31:59.586272" elapsed="10.002454"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:32:09.590012" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Register_Candidates"</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-19T02:32:09.589229" elapsed="0.000865">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Register_Candidates"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:32:09.588855" elapsed="0.001309">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Register_Candidates"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:32:09.588819" elapsed="0.001381">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Register_Candidates"</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-19T02:32:09.590365" elapsed="0.000021"/>
</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-19T02:32:09.590593" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:09.590454" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:32:09.590436" elapsed="0.000232"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:32:09.590711" elapsed="0.000016"/>
</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-19T02:32:09.592340" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:32:09.593559" elapsed="0.000544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:32:09.594385" elapsed="0.000538"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:32:09.591615" elapsed="0.003435"/>
</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-19T02:32:09.591013" elapsed="0.004106"/>
</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-19T02:31:49.582155" elapsed="20.013052">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Register_Candidates"</status>
</kw>
<msg time="2026-04-19T02:32:09.595313" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:32:09.595358" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Register_Candidates"</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-19T02:31:49.581545" elapsed="20.013838"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:32:09.595573" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:32:09.595463" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:09.595444" elapsed="0.000196"/>
</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-19T02:32:09.596488" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:32:09.596353" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:09.596336" elapsed="0.000221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:32:09.597104" 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-19T02:32:09.597214" 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-19T02:32:09.596706" elapsed="0.000536"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:09.597658" level="INFO">{1: 10, 2: 12, 3: 19}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:09.597393" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:09.598129" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:09.597852" 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-19T02:32:09.598706" elapsed="0.000275"/>
</kw>
<msg time="2026-04-19T02:32:09.599096" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:32:09.599143" level="INFO">${old_connection_index} = 19</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-19T02:32:09.598328" elapsed="0.000838"/>
</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-19T02:32:09.600003" elapsed="0.000223"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:32:19.602197" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:32:09.600935" elapsed="10.002429">No match found for '
' in 10 seconds
Output:
.</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-19T02:32:09.600424" elapsed="10.003084"/>
</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-19T02:32:19.604480" elapsed="0.000481"/>
</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-19T02:32:19.603826" elapsed="0.001242"/>
</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-19T02:32:09.599463" elapsed="10.005657"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:09.599243" elapsed="10.005930"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:09.599225" elapsed="10.005983"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:32:19.606300" level="INFO">${ip_address} = 10.30.171.206</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-19T02:32:19.605894" elapsed="0.000435"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:32:19.606384" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:32:19.606548" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:32:19.605456" elapsed="0.001117"/>
</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-19T02:32:19.606731" elapsed="0.000443"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:32:19.607461" level="INFO">index=24
host=10.30.171.206
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-19T02:32:19.607562" level="INFO">${karaf_connection_object} = index=24
host=10.30.171.206
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-19T02:32:19.607344" elapsed="0.000325"/>
</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-19T02:32:19.607844" elapsed="0.002467"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:32:19.610740" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:32:29.676332" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:32:19.610477" elapsed="10.066818">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:32:29.692249" 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-19T02:32:29.692974" elapsed="0.000600"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:32:29.693723" elapsed="0.000105"/>
</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-19T02:32:29.678880" elapsed="0.015001"/>
</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-19T02:32:29.677826" elapsed="0.016104"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:32:09.596054" elapsed="20.097965">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:32:29.694412" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:32:29.694492" elapsed="0.000022"/>
</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-19T02:31:49.580852" elapsed="40.113760">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:32:29.694735" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:32:29.694779" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:31:49.576090" elapsed="40.118712"/>
</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-19T02:32:29.695168" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:29.694890" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:29.694868" elapsed="0.000379"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:31:49.575938" elapsed="40.119340"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:31:49.337112" elapsed="40.358201"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:31:49.334699" elapsed="40.360677"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:31:49.329810" elapsed="40.365626"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:31:49.329372" elapsed="40.366110"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:31:49.326376" elapsed="40.369161"/>
</kw>
<kw name="Register_Flapping_Singleton_On_Nodes" owner="CsCommon">
<for flavor="IN">
<iter>
<kw name="Register_Flapping_Singleton" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.697718" 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-19T02:32:29.697410" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:32:29.697789" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:32:29.697939" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:32:29.696731" elapsed="0.001232"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.732244" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:29.731853" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:29.733403" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:29.732863" elapsed="0.000611">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:29.733570" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:29.732433" elapsed="0.001163"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.734172" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:29.733761" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:32:29.734503" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:32:29.734663" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:32:29.734360" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.735185" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.734850" elapsed="0.000381"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.736485" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.735972" elapsed="0.000559"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.737321" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:32:29.736695" elapsed="0.000654"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.737715" elapsed="0.000073"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.738279" elapsed="0.000087"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.738585" elapsed="0.000071"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:32:29.737563" elapsed="0.001192"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:32:29.737397" elapsed="0.001389"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:32:29.738831" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:32:29.738992" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:32:29.735643" elapsed="0.003373"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:29.735300" elapsed="0.003765"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.739237" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:29.739092" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:29.735281" elapsed="0.004031"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.739905" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:29.739452" elapsed="0.000480"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:32:29.739981" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:32:29.731243" elapsed="0.008878"/>
</kw>
<msg time="2026-04-19T02:32:29.740176" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:29.719200" elapsed="0.021025"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.752344" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.764326" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.776159" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.776352" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.776522" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.776876" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:29.776736" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:32:29.776721" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.777105" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.777271" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.777431" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:32:29.776694" elapsed="0.000788"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:32:29.776596" elapsed="0.000912"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.777648" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:32:29.777722" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T02:32:29.777835" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:32:29.714833" elapsed="0.063027"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.801561" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:29.801186" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:29.802394" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:29.802092" elapsed="0.000367">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:29.802551" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:29.801748" elapsed="0.000856"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.803186" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:29.802772" elapsed="0.000441"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:32:29.803505" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:32:29.803673" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:32:29.803370" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.804121" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.803857" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:32:29.804515" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:29.804229" elapsed="0.000345"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.805027" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:29.804739" elapsed="0.000330"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:29.804598" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:29.804211" elapsed="0.000915"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.805694" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:29.805275" elapsed="0.000445"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:32:29.805774" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:32:29.800561" elapsed="0.005337"/>
</kw>
<msg time="2026-04-19T02:32:29.805949" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:29.788409" elapsed="0.017587"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.818128" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.829926" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.841779" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.842123" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.842295" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.842647" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:29.842509" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:32:29.842494" elapsed="0.000229"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.842859" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.843020" elapsed="0.000034"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.843198" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:32:29.842467" elapsed="0.000783"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:32:29.842368" elapsed="0.000925"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.843474" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:32:29.843550" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:32:29.843658" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:32:29.787555" elapsed="0.056128"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:29.844983" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:29.844735" elapsed="0.000329">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:29.845159" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:29.844354" elapsed="0.000829"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:29.845493" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:29.845252" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.846023" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:29.845734" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:29.845572" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:29.845234" elapsed="0.000889"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.848380" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:29.846268" elapsed="0.002138"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:32:29.848458" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:32:29.848610" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:32:29.844014" elapsed="0.004621"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.850158" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.849891" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.850589" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.850353" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.851015" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.850775" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.851491" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.851222" elapsed="0.000312"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:32:29.852342" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:32:29.852142" elapsed="0.000226"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:32:29.852688" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:32:29.852517" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:32:29.852856" elapsed="0.000251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:29.853604" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:29.853305" elapsed="0.000354"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:32:29.853712" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:32:29.853901" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:32:29.851729" elapsed="0.002203"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:32:30.292878" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:32:30.293118" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node061eeryctc14efsi89drgp9ed0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 02:32:30 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T02:32:30.293380" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:32:29.856761" elapsed="0.436678"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:29.854018" elapsed="0.439530"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.293965" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.293611" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:29.853997" elapsed="0.440211"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.300719" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.296659" elapsed="0.004107"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.296157" elapsed="0.004647"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.296114" elapsed="0.004715"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.303373" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.301118" elapsed="0.002301"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.300884" elapsed="0.002570"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.300868" elapsed="0.002611"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.304042" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.303643" elapsed="0.000440"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.304386" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.304153" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.305003" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.304622" elapsed="0.000427"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.304467" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.304135" elapsed="0.000975"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.305629" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.305268" elapsed="0.000388"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.305956" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.305726" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.306518" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.306221" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.306041" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.305708" elapsed="0.000893"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:30.306749" elapsed="0.000422"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:32:30.307629" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.307337" elapsed="0.000318"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:32:30.307806" elapsed="0.002272"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:32:30.295083" elapsed="0.015060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T02:32:30.310324" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T02:32:30.310215" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.310197" elapsed="0.000218"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.310560" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:32:30.310626" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:32:30.312799" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T02:32:29.848958" elapsed="0.463867"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:32:30.312933" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:32:30.313107" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T02:32:29.704137" elapsed="0.608996"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.313481" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.313239" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.313222" elapsed="0.000351"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:32:30.313606" elapsed="0.000025"/>
</return>
<arg>${REGISTER_FLAPPING_SINGLETON_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T02:32:29.698224" elapsed="0.615502"/>
</kw>
<arg>${index}</arg>
<doc>Activate flapping application on given node by invoking register-flapping-singleton rpc.</doc>
<status status="PASS" start="2026-04-19T02:32:29.696365" elapsed="0.617420"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:32:29.696182" elapsed="0.617635"/>
</iter>
<iter>
<kw name="Register_Flapping_Singleton" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.315226" level="INFO">${session} = ClusterManagement__session_2</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-19T02:32:30.314874" elapsed="0.000379"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:32:30.315300" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:32:30.315444" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:32:30.314528" elapsed="0.000941"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.349774" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.349402" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:30.350645" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:30.350311" elapsed="0.000402">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:30.350806" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:30.349961" elapsed="0.000869"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.351411" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:30.350991" elapsed="0.000447"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:32:30.351752" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:32:30.351895" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:32:30.351610" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.352333" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.352089" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.353558" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.353062" elapsed="0.000541"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.354214" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:32:30.353759" elapsed="0.000481"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.354573" elapsed="0.000074"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.355172" elapsed="0.000090"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.355485" elapsed="0.000079"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:32:30.354423" elapsed="0.001273"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:32:30.354289" elapsed="0.001440"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:32:30.355774" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:32:30.355936" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:32:30.352727" elapsed="0.003234"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.352442" elapsed="0.003552"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.356191" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.356018" elapsed="0.000230"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.352424" elapsed="0.003845"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.356844" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.356409" elapsed="0.000463"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:32:30.356922" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:32:30.348776" elapsed="0.008286"/>
</kw>
<msg time="2026-04-19T02:32:30.357117" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:30.336477" elapsed="0.020688"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.370723" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.382690" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.394574" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.394768" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.394941" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.395315" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.395175" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:32:30.395159" elapsed="0.000234"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.395528" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.395689" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.395886" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:32:30.395131" elapsed="0.000809"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:32:30.395015" elapsed="0.000950"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.396121" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:32:30.396199" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:32:30.396337" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:32:30.332399" elapsed="0.063964"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.420318" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.419916" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:30.421212" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:30.420875" elapsed="0.000402">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:30.421371" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:30.420508" elapsed="0.000887"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.421942" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:30.421556" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:32:30.422282" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:32:30.422407" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:32:30.422143" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.422825" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.422583" elapsed="0.000282"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:32:30.423236" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.422932" elapsed="0.000363"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.423748" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.423460" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.423319" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.422914" elapsed="0.000920"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.424409" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.423975" elapsed="0.000460"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:32:30.424484" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:32:30.419294" elapsed="0.005313"/>
</kw>
<msg time="2026-04-19T02:32:30.424675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:30.406945" elapsed="0.017778"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.436782" elapsed="0.000085"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.448691" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.460509" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.460702" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.460873" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.461366" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.461197" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:32:30.461182" elapsed="0.000263"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.461581" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.461743" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.461903" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:32:30.461152" elapsed="0.000803"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:32:30.460947" elapsed="0.001034"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.462265" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:32:30.462342" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:32:30.462450" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:32:30.406095" elapsed="0.056379"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:30.463704" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:30.463471" elapsed="0.000295">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:30.463858" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:30.463135" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.464208" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.463950" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.464734" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.464444" elapsed="0.000348"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.464287" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.463932" elapsed="0.000917"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.467132" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:30.464997" elapsed="0.002162"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:32:30.467210" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:32:30.467362" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:32:30.462798" elapsed="0.004589"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.468900" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.468655" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.469369" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.469109" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.469805" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.469563" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.470250" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.469993" elapsed="0.000300"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:32:30.471099" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:32:30.470889" elapsed="0.000237"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:32:30.471447" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:32:30.471274" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:32:30.471616" elapsed="0.000203"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.472235" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.471971" elapsed="0.000307"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:32:30.472322" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:32:30.472475" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:32:30.470488" elapsed="0.002012"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:32:30.940699" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:32:30.940828" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton 
 status=204, reason=No Content 
 headers={'Set-Cookie': 'JSESSIONID=node01vttq6l5p8tvoj0si80ycssq0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 02:32:30 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT'} 
 body=None 
 </msg>
<msg time="2026-04-19T02:32:30.941138" level="INFO">${response} = &lt;Response [204]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:32:30.474913" elapsed="0.466290"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.472570" elapsed="0.468746"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.941755" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.941381" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.472552" elapsed="0.469408"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.949444" level="INFO"/>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.944589" elapsed="0.004901"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.943877" elapsed="0.005649"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.943834" elapsed="0.005717"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.952163" level="INFO">204</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:30.949829" elapsed="0.002382"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.949607" elapsed="0.002639"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.949590" elapsed="0.002681"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.952842" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.952438" elapsed="0.000432"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.953196" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.952939" elapsed="0.000369"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.953801" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.953496" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.953333" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.952921" elapsed="0.000969"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.954424" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.954059" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.954764" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.954522" elapsed="0.000310"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.955365" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.955041" elapsed="0.000352"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:30.954866" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.954504" elapsed="0.000947"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:30.955603" elapsed="0.000358"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:32:30.956435" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:30.956142" elapsed="0.000321"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:32:30.956615" elapsed="0.002297"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:32:30.942813" elapsed="0.016165"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T02:32:30.959177" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-19T02:32:30.959065" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.959034" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.959415" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:32:30.959482" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:32:30.961673" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T02:32:30.467705" elapsed="0.493994"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:32:30.961770" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:32:30.961921" level="INFO">${response_text} = </msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T02:32:30.321748" elapsed="0.640198"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:30.962302" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:30.962067" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:30.962037" elapsed="0.000357"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:32:30.962426" elapsed="0.000025"/>
</return>
<arg>${REGISTER_FLAPPING_SINGLETON_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T02:32:30.315713" elapsed="0.646833"/>
</kw>
<arg>${index}</arg>
<doc>Activate flapping application on given node by invoking register-flapping-singleton rpc.</doc>
<status status="PASS" start="2026-04-19T02:32:30.314102" elapsed="0.648504"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:32:30.313906" elapsed="0.648732"/>
</iter>
<iter>
<kw name="Register_Flapping_Singleton" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.963934" level="INFO">${session} = ClusterManagement__session_3</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-19T02:32:30.963636" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:32:30.964061" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:32:30.964212" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:32:30.963297" elapsed="0.000940"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:30.998873" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:30.998496" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:30.999756" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:30.999411" elapsed="0.000417">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:30.999922" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:30.999078" elapsed="0.000869"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.000512" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:31.000130" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:32:31.000834" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:32:31.000972" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:32:31.000697" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.001454" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.001182" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.002714" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.002213" elapsed="0.000546"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.003380" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:32:31.002915" elapsed="0.000491"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.003807" elapsed="0.000078"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.004363" elapsed="0.000091"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.004675" elapsed="0.000073"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:32:31.003626" elapsed="0.001225"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:32:31.003456" elapsed="0.001429"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:32:31.004931" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:32:31.005121" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:32:31.001860" elapsed="0.003287"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:31.001564" elapsed="0.003615"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.005345" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:31.005203" elapsed="0.000222"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:31.001546" elapsed="0.003902"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.006069" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:31.005596" elapsed="0.000503"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:32:31.006148" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:32:30.997857" elapsed="0.008414"/>
</kw>
<msg time="2026-04-19T02:32:31.006357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:30.985653" elapsed="0.020755"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.019072" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.030967" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.042846" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.043057" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.043236" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.043598" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:31.043458" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:32:31.043443" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.043815" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.043980" elapsed="0.000026"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.044179" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:32:31.043414" elapsed="0.000820"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:32:31.043312" elapsed="0.000947"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.044404" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:32:31.044481" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:32:31.044593" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:32:30.981504" elapsed="0.063116"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.068419" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:31.068027" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:31.069313" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:31.068936" elapsed="0.000446">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:31.069516" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:31.068607" elapsed="0.000934"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.070114" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:31.069702" elapsed="0.000440"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:32:31.070463" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:32:31.070595" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:32:31.070300" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.071019" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.070775" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:32:31.071435" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:31.071147" elapsed="0.000345"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.071945" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:31.071656" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:31.071517" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:31.071128" elapsed="0.000899"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.072608" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:32:31.072186" elapsed="0.000449"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:32:31.072684" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:32:31.067418" elapsed="0.005390"/>
</kw>
<msg time="2026-04-19T02:32:31.072860" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:32:31.055371" elapsed="0.017536"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.084933" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.104511" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.116330" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.116526" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.116698" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.117106" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:31.116950" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:32:31.116935" elapsed="0.000251"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.117322" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.117484" elapsed="0.000019"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.117644" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:32:31.116907" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:32:31.116806" elapsed="0.000916"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.117880" elapsed="0.000025"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:32:31.117961" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:32:31.118089" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:32:31.054493" elapsed="0.063622"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:32:31.119407" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:32:31.119156" elapsed="0.000315">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:32:31.119563" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:32:31.118773" elapsed="0.000813"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:32:31.119898" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:32:31.119656" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.120451" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:32:31.120156" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T02:32:31.119976" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T02:32:31.119638" elapsed="0.000893"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.122766" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:32:31.120676" elapsed="0.002116"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:32:31.122844" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:32:31.122997" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/register_flapping_singleton/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:32:31.118447" elapsed="0.004574"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.124628" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:register-flapping-singleton</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.124323" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.125090" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.124827" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.125521" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.125279" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.125943" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.125707" elapsed="0.000279"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:32:31.126793" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:32:31.126600" elapsed="0.000219"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:32:31.127159" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:32:31.126967" elapsed="0.000255"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:32:31.127397" elapsed="0.000206"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:32:31.128004" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:32:31.127755" elapsed="0.000310"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:32:31.128110" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:32:31.128267" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:32:31.126200" elapsed="0.002092"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:34:36.201018" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:32:31.130993" elapsed="125.074259">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:32:31.128362" elapsed="125.077108">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.206007" elapsed="0.000111"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.205554" elapsed="0.000669"/>
</branch>
<status status="FAIL" start="2026-04-19T02:32:31.128344" elapsed="125.077936">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.207308" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.207664" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.207571" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:34:36.207527" elapsed="0.000280"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.208154" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.208310" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:32:31.123381" elapsed="125.085169">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.208733" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T02:32:30.970568" elapsed="125.238380">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.209637" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.209239" elapsed="0.000547"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:34:36.209201" elapsed="0.000637"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.209911" elapsed="0.000031"/>
</return>
<arg>${REGISTER_FLAPPING_SINGLETON_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T02:32:30.964482" elapsed="125.245677">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<arg>${index}</arg>
<doc>Activate flapping application on given node by invoking register-flapping-singleton rpc.</doc>
<status status="FAIL" start="2026-04-19T02:32:30.962905" elapsed="125.247535">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:32:30.962726" elapsed="125.247870">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:32:29.696014" elapsed="126.514712">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${cs_all_indices}</arg>
<doc>Register a candidate application on each node which starts the test.</doc>
<status status="FAIL" start="2026-04-19T02:32:29.695782" elapsed="126.515145">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.212426" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.212012" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.211994" elapsed="0.000518"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:34:36.212670" elapsed="0.000386"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.217865" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:34:36.217432" elapsed="0.000462"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:34:36.218133" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.217969" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.217951" elapsed="0.000245"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.218661" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:34:36.218338" elapsed="0.000351"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:34:36.219121" level="INFO">${reference} = controller_clustering_ask_txt_Chasing_The_Leader_Register_Candidates</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:34:36.218843" elapsed="0.000306"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:34:36.219478" level="INFO">${reference} = controller_clustering_ask_txt_chasing_the_leader_register_candidates</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:34:36.219303" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.219997" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_register_candidates"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:34:36.219653" elapsed="0.000404"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.220622" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_register_candidates&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:34:36.220249" elapsed="0.000402"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.221287" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_register_candidates"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_register_candidates&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:34:36.220810" elapsed="0.000533"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.221974" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_register_candidates"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_register_candidates&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:34:36.221495" elapsed="0.000528"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:34:36.217129" elapsed="0.004973"/>
</kw>
<status status="PASS" start="2026-04-19T02:34:36.211801" elapsed="0.010353"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:34:36.211411" elapsed="0.010785"/>
</kw>
<doc>Register a candidate application on each node which starts the test.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:31:49.325331" elapsed="166.896905">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_register_candidates"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_register_candidates&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<test id="s1-s14-t2" name="Do_Nothing" line="42">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:34:36.225735" elapsed="0.000211"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:34:36.225472" elapsed="0.000529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.227346" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.227206" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.227180" elapsed="0.000253"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.232380" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.232271" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.232253" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.233452" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:34:36.233064" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.233939" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:34:36.233634" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:34:36.234009" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T02:34:36.234189" level="INFO">${index_list} = [1, 2, 3]</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-19T02:34:36.232671" elapsed="0.001542"/>
</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-19T02:34:36.239670" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.239562" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.239543" 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-19T02:34:36.240922" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.240816" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.240798" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:34:36.241490" 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-19T02:34:36.241166" elapsed="0.000351"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:34:36.241906" 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-19T02:34:36.241674" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:34:36.309155" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:34:36.242457" elapsed="0.066989"/>
</kw>
<msg time="2026-04-19T02:34:36.309752" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:34:36.309805" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:34:36.242105" elapsed="0.067739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:34:36.342861" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:34:36.310725" elapsed="0.032419"/>
</kw>
<msg time="2026-04-19T02:34:36.343419" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:34:36.343467" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:34:36.310185" elapsed="0.033320"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.344070" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.343643" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.343599" elapsed="0.000575"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.344764" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:34:36.344325" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.345156" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.344916" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.344897" elapsed="0.000339"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:34:36.345278" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:34:36.347148" elapsed="0.000927"/>
</kw>
<kw name="Open 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-19T02:34:36.348389" elapsed="0.000565"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:34:36.349277" elapsed="0.000430"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:34:36.346383" elapsed="0.003435"/>
</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-19T02:34:36.345638" elapsed="0.004249"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:34:36.240516" elapsed="0.109473"/>
</kw>
<msg time="2026-04-19T02:34:36.350106" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:34:36.350152" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:34:36.239886" elapsed="0.110305"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:34:36.350405" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T02:34:36.350270" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.350252" elapsed="0.000241"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.350917" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.351277" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.351353" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:34:36.239218" elapsed="0.112249"/>
</kw>
<msg time="2026-04-19T02:34:36.351568" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:34:36.351614" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:34:36.234619" elapsed="0.117033"/>
</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-19T02:34:36.351983" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.351733" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.351715" elapsed="0.000386"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:34:36.234478" elapsed="0.117650"/>
</iter>
<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-19T02:34:36.357874" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.357764" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.357744" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.359343" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.359232" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.359213" elapsed="0.000198"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:34:36.359900" level="INFO">${karaf_connection_index} = 12</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-19T02:34:36.359560" elapsed="0.000368"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:34:36.360360" 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-19T02:34:36.360123" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:34:36.420572" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:34:36.360881" elapsed="0.059954"/>
</kw>
<msg time="2026-04-19T02:34:36.421156" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:34:36.421206" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:34:36.360543" elapsed="0.060701"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:34:36.459551" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:34:36.422113" elapsed="0.037774"/>
</kw>
<msg time="2026-04-19T02:34:36.460227" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:34:36.460278" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:34:36.421550" elapsed="0.038765"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.460814" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.460450" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.460411" elapsed="0.000493"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:34:36.461487" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:34:36.461071" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.461834" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.461620" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.461601" elapsed="0.000309"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:34:36.461952" elapsed="0.000048"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:34:36.463683" elapsed="0.000897"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:34:36.464880" elapsed="0.000568"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:34:36.465734" elapsed="0.000461"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:34:36.462953" elapsed="0.003374"/>
</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-19T02:34:36.462341" elapsed="0.004056"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:34:36.358863" elapsed="0.107637"/>
</kw>
<msg time="2026-04-19T02:34:36.466593" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:34:36.466638" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:34:36.358219" elapsed="0.108456"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:34:36.466866" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:34:36.466758" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.466738" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.467405" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:34:36.467750" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.467822" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:34:36.357390" elapsed="0.110542"/>
</kw>
<msg time="2026-04-19T02:34:36.468044" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:34:36.468102" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "D "o "_ "N "o "t "h "i "n "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:34:36.352415" elapsed="0.115734"/>
</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-19T02:34:36.468501" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:36.468247" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.468225" elapsed="0.000352"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:34:36.352272" elapsed="0.116330"/>
</iter>
<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-19T02:34:36.474476" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.474369" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.474348" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:34:36.475733" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:36.475590" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:36.475572" elapsed="0.000230"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:34:36.476297" level="INFO">${karaf_connection_index} = 24</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-19T02:34:36.475948" elapsed="0.000376"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:34:36.476701" 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-19T02:34:36.476480" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:34:46.478134" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:34:36.477232" elapsed="10.001972">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:34:46.479499" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:34:46.479551" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:34:36.476882" elapsed="10.002693"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:34:56.481022" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:34:46.480341" elapsed="10.001625">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:34:56.482296" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:34:56.482346" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:34:46.479867" elapsed="10.002504"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:34:56.483668" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Do_Nothing"</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-19T02:34:56.482866" elapsed="0.000866">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Do_Nothing"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:34:56.482505" elapsed="0.001297">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Do_Nothing"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:34:56.482471" elapsed="0.001367">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Do_Nothing"</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-19T02:34:56.484013" elapsed="0.000038"/>
</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-19T02:34:56.484265" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:34:56.484119" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:34:56.484100" elapsed="0.000243"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:34:56.484386" elapsed="0.000016"/>
</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-19T02:34:56.485989" elapsed="0.000882"/>
</kw>
<kw name="Open 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-19T02:34:56.487211" elapsed="0.000525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:34:56.488020" elapsed="0.000426"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:34:56.485296" elapsed="0.003261"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T02:34:56.484685" elapsed="0.003938"/>
</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-19T02:34:36.475289" elapsed="20.013446">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Do_Nothing"</status>
</kw>
<msg time="2026-04-19T02:34:56.488851" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:34:56.488897" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Do_Nothing"</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-19T02:34:36.474691" elapsed="20.014230"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:34:56.489126" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:56.488998" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:56.488980" elapsed="0.000212"/>
</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-19T02:34:56.490191" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:34:56.490081" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:56.490061" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:34:56.490770" 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-19T02:34:56.490961" 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-19T02:34:56.490416" elapsed="0.000572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:34:56.491501" level="INFO">{1: 10, 2: 12, 3: 24}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:34:56.491225" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:34:56.491941" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:34:56.491696" 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-19T02:34:56.492524" elapsed="0.000301"/>
</kw>
<msg time="2026-04-19T02:34:56.492923" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:34:56.492971" level="INFO">${old_connection_index} = 24</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-19T02:34:56.492154" elapsed="0.000840"/>
</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-19T02:34:56.493818" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:35:06.496123" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:34:56.494706" elapsed="10.002648">No match found for '
' in 10 seconds
Output:
.</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-19T02:34:56.494204" elapsed="10.003303"/>
</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-19T02:35:06.498482" elapsed="0.000613"/>
</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-19T02:35:06.497839" elapsed="0.001349"/>
</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-19T02:34:56.493305" elapsed="10.005932"/>
</kw>
<status status="PASS" start="2026-04-19T02:34:56.493085" elapsed="10.006215"/>
</branch>
<status status="PASS" start="2026-04-19T02:34:56.493067" elapsed="10.006266"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:35:06.500326" level="INFO">${ip_address} = 10.30.171.206</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-19T02:35:06.499979" elapsed="0.000374"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:35:06.500408" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:35:06.500569" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:35:06.499575" elapsed="0.001019"/>
</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-19T02:35:06.500750" elapsed="0.000571"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:35:06.501620" level="INFO">index=29
host=10.30.171.206
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-19T02:35:06.501722" level="INFO">${karaf_connection_object} = index=29
host=10.30.171.206
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-19T02:35:06.501494" elapsed="0.000255"/>
</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-19T02:35:06.501895" elapsed="0.002461"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:35:06.504783" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:35:16.531972" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:35:06.504521" elapsed="10.028376">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:35:16.548898" elapsed="0.000554"/>
</kw>
<kw name="Open 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-19T02:35:16.549621" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:35:16.549941" elapsed="0.000160"/>
</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-19T02:35:16.535733" elapsed="0.014425"/>
</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-19T02:35:16.533450" elapsed="0.016759"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:34:56.489744" elapsed="20.060645">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:35:16.550755" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:35:16.550834" elapsed="0.000020"/>
</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-19T02:34:36.473970" elapsed="40.076976">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:35:16.551403" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:35:16.551452" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:34:36.468883" elapsed="40.082595"/>
</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-19T02:35:16.551823" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:35:16.551566" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:35:16.551544" elapsed="0.000358"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:34:36.468743" elapsed="40.083190"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:34:36.234267" elapsed="40.317699"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:34:36.231887" elapsed="40.320136"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:34:36.226816" elapsed="40.325279"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:34:36.226165" elapsed="40.325976"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:34:36.223382" elapsed="40.328811"/>
</kw>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-19T02:36:16.553093" level="INFO">Slept 1 minute.</msg>
<arg>${TEST_DURATION}</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-19T02:35:16.552353" elapsed="60.001157"/>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.557090" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:16.556138" elapsed="0.001095"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.556088" elapsed="0.001202"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:16.557640" elapsed="0.000815"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:16.566246" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:16.565790" elapsed="0.000484"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-19T02:36:16.566496" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-19T02:36:16.566349" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.566330" elapsed="0.000267"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.566744" elapsed="0.000022"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.566913" elapsed="0.000021"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.567099" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.567264" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.567426" elapsed="0.000019"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.567588" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.567750" elapsed="0.000020"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:36:16.565479" elapsed="0.002461"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:16.555571" elapsed="0.012421"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:36:16.554554" elapsed="0.013496"/>
</kw>
<doc>Do nothing for the time of the test duration, because there is no api to monitor the statistics
during the test execution. Statistics are available only at the end, when unregister-flapping-singleton rpc is
called.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T02:34:36.222616" elapsed="100.345474"/>
</test>
<test id="s1-s14-t3" name="Unregister_Candidates_And_Validate_Criteria" line="48">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-19T02:36:16.571528" elapsed="0.000221"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-19T02:36:16.571264" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.572802" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.572691" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.572673" elapsed="0.000198"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.578247" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.578139" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.578120" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:16.579338" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:36:16.578935" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:36:16.579830" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:36:16.579524" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:36:16.579902" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:16.580074" level="INFO">${index_list} = [1, 2, 3]</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-19T02:36:16.578541" elapsed="0.001560"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.585400" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.585293" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.585274" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.586727" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.586618" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.586599" elapsed="0.000195"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:36:16.587275" 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-19T02:36:16.586936" elapsed="0.000366"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:36:16.587688" 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-19T02:36:16.587459" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:36:16.635540" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:36:16.588219" elapsed="0.047467"/>
</kw>
<msg time="2026-04-19T02:36:16.636077" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:36:16.636126" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:36:16.587870" elapsed="0.048293"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:36:16.686946" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "_ "A "n "d "_ "V "a "l "i "d "a "t "e "_ "C "r "i "t "e "r "i "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:36:16.636708" elapsed="0.050539"/>
</kw>
<msg time="2026-04-19T02:36:16.687513" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:36:16.687567" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:36:16.636349" elapsed="0.051399"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.688294" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:16.687891" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.687850" elapsed="0.000537"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:16.688976" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "_ "A "n "d "_ "V "a "l "i "d "a "t "e "_ "C "r "i "t "e "r "i "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:16.688536" elapsed="0.000540"/>
</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-19T02:36:16.689362" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:16.689145" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.689126" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:36:16.689481" elapsed="0.000049"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:16.691215" elapsed="0.000912"/>
</kw>
<kw name="Open 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-19T02:36:16.692427" elapsed="0.000552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:36:16.693293" elapsed="0.000416"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:36:16.690463" elapsed="0.003358"/>
</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-19T02:36:16.689838" elapsed="0.004049"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:36:16.586289" elapsed="0.107703"/>
</kw>
<msg time="2026-04-19T02:36:16.694108" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:36:16.694155" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:36:16.585614" elapsed="0.108579"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:36:16.694383" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:36:16.694272" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.694254" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.694916" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.695564" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.695639" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:36:16.584943" elapsed="0.110806"/>
</kw>
<msg time="2026-04-19T02:36:16.695847" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:36:16.695890" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:36:16.580487" elapsed="0.115442"/>
</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-19T02:36:16.696287" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:16.696007" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.695989" elapsed="0.000375"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:36:16.580346" elapsed="0.116043"/>
</iter>
<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-19T02:36:16.701998" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.701890" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.701863" elapsed="0.000218"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.703244" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.703136" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.703118" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:36:16.703812" level="INFO">${karaf_connection_index} = 12</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-19T02:36:16.703451" elapsed="0.000389"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:36:16.704241" 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-19T02:36:16.703999" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:36:16.750794" level="INFO">log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "c "l "u "s "t "e "[78Cr "[A[78Ci</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:36:16.704759" elapsed="0.046137"/>
</kw>
<msg time="2026-04-19T02:36:16.751088" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:36:16.751154" level="INFO">${message_write} = log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "...</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-19T02:36:16.704425" elapsed="0.046767"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:36:16.798910" level="INFO">"n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "_ "A "n "d "_ "V "a "l "i "d "a "t "e "_ "C "r "i "t "e "r "i "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:36:16.751708" elapsed="0.047397"/>
</kw>
<msg time="2026-04-19T02:36:16.799319" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:36:16.799366" level="INFO">${message_wait} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:36:16.751361" elapsed="0.048044"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.799792" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:16.799513" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.799479" elapsed="0.000398"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:16.800401" level="INFO"> "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "r "_ "C "a "n "d "i "d "a "t "e "s "_ "A "n "d "_ "V "a "l "i "d "a "t "e "_ "C "r "i "t "e "r "i "a "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:16.800024" elapsed="0.000459"/>
</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-19T02:36:16.800769" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:16.800552" elapsed="0.000271"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.800531" elapsed="0.000314"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:36:16.800881" elapsed="0.000035"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:16.802483" elapsed="0.000898"/>
</kw>
<kw name="Open 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-19T02:36:16.803685" elapsed="0.000556"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:36:16.804528" elapsed="0.000422"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:36:16.801767" elapsed="0.003319"/>
</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-19T02:36:16.801209" elapsed="0.003944"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:36:16.702804" elapsed="0.102451"/>
</kw>
<msg time="2026-04-19T02:36:16.805351" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:36:16.805398" level="INFO">${message} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:36:16.702230" elapsed="0.103206"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:36:16.805627" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:36:16.805515" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.805497" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.806135" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:16.806501" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.806634" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:36:16.701532" elapsed="0.105219"/>
</kw>
<msg time="2026-04-19T02:36:16.806852" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:36:16.806896" level="INFO">${output} =  "n "g "- "a "s "k ". "t "x "t ". "C "h "a "s "i "n "g "[C "T "h "e "[C "L "e "a "d "e "r ". "U "n "r "e "g "i "s "t "e "...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:36:16.696670" elapsed="0.110264"/>
</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-19T02:36:16.807281" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:16.807012" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.806994" elapsed="0.000364"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:36:16.696530" elapsed="0.110853"/>
</iter>
<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-19T02:36:16.813165" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.813057" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.813023" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:36:16.814370" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:16.814264" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:16.814246" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:36:16.814900" level="INFO">${karaf_connection_index} = 29</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-19T02:36:16.814590" elapsed="0.000336"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:36:16.815319" 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-19T02:36:16.815096" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:36:26.816681" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:36:16.815837" elapsed="10.002183">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:36:26.818361" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:36:26.818412" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:36:16.815503" elapsed="10.002937"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:36:36.819949" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:36:26.819230" elapsed="10.001678">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:36:36.821251" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:36:36.821302" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:36:26.818749" elapsed="10.002582"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:36:36.822641" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Unregister_Candidates_And_Validate_Criteria"</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-19T02:36:36.821840" elapsed="0.000866">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Unregister_Candidates_And_Validate_Criteria"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:36:36.821466" elapsed="0.001310">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Unregister_Candidates_And_Validate_Criteria"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:36:36.821427" elapsed="0.001383">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Unregister_Candidates_And_Validate_Criteria"</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-19T02:36:36.822975" 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-19T02:36:36.823223" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:36.823082" elapsed="0.000194"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:36:36.823065" elapsed="0.000233"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:36:36.823335" elapsed="0.000016"/>
</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-19T02:36:36.824963" elapsed="0.000894"/>
</kw>
<kw name="Open 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-19T02:36:36.826204" elapsed="0.000535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:36:36.827024" elapsed="0.000536"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:36:36.824244" elapsed="0.003431"/>
</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-19T02:36:36.823639" elapsed="0.004103"/>
</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-19T02:36:16.813945" elapsed="20.013882">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Unregister_Candidates_And_Validate_Criteria"</status>
</kw>
<msg time="2026-04-19T02:36:36.827934" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:36:36.827980" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-clustering-ask.txt.Chasing The Leader.Unregister_Candidates_And_Validate_Criteria"</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-19T02:36:16.813380" elapsed="20.014626"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:36:36.828212" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:36.828102" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:36.828083" elapsed="0.000199"/>
</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-19T02:36:36.829129" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:36:36.829007" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:36.828990" elapsed="0.000206"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:36:36.829683" 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-19T02:36:36.829798" 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-19T02:36:36.829347" elapsed="0.000479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:36.830312" level="INFO">{1: 10, 2: 12, 3: 29}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:36.829978" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:36.830753" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:36.830510" elapsed="0.000287"/>
</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-19T02:36:36.831335" elapsed="0.000275"/>
</kw>
<msg time="2026-04-19T02:36:36.831709" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:36:36.831756" level="INFO">${old_connection_index} = 29</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-19T02:36:36.830953" elapsed="0.000826"/>
</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-19T02:36:36.832599" elapsed="0.000202"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:36:46.834760" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:36:36.833522" elapsed="10.002439">No match found for '
' in 10 seconds
Output:
.</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-19T02:36:36.832980" elapsed="10.003245"/>
</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-19T02:36:46.837182" elapsed="0.000483"/>
</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-19T02:36:46.836554" elapsed="0.001203"/>
</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-19T02:36:36.832090" elapsed="10.005716"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:36.831856" elapsed="10.006011"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:36.831838" elapsed="10.006064"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:36:46.838936" level="INFO">${ip_address} = 10.30.171.206</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-19T02:36:46.838608" elapsed="0.000355"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:36:46.839016" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T02:36:46.839194" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:36:46.838223" elapsed="0.000996"/>
</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-19T02:36:46.839375" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:36:46.840112" level="INFO">index=34
host=10.30.171.206
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-19T02:36:46.840223" level="INFO">${karaf_connection_object} = index=34
host=10.30.171.206
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-19T02:36:46.839972" elapsed="0.000367"/>
</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-19T02:36:46.840493" elapsed="0.002288"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:36:46.843340" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:36:56.950226" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:36:46.842946" elapsed="10.108050">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:36:56.965613" elapsed="0.000833"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:36:56.966615" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:36:56.966934" elapsed="0.000122"/>
</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-19T02:36:56.952510" elapsed="0.014603"/>
</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-19T02:36:56.951500" elapsed="0.015661"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:36:36.828690" elapsed="20.138563">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:36:56.967635" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:36:56.967714" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T02:36:16.812689" elapsed="40.155142">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:36:56.967946" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:36:56.967997" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:36:16.807656" elapsed="40.160365"/>
</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-19T02:36:56.968469" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:56.968208" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:56.968185" elapsed="0.000364"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:36:16.807516" elapsed="40.161060"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:36:16.580156" elapsed="40.388454"/>
</for>
<arg>Starting test ${SUITE_NAME}.${TEST_NAME}</arg>
<arg>${member_index_list}</arg>
<doc>Make sure this resource is initialized. Send a message into the controller's karaf log file on every node listed (or all).
By default, failure while processing a node is silently ignored, unless ${tolerate_failure} is False.</doc>
<status status="PASS" start="2026-04-19T02:36:16.577647" elapsed="40.391025"/>
</kw>
<arg>member_index_list=${member_index_list}</arg>
<doc>Log test case name to karaf log, useful in test case setup.</doc>
<status status="PASS" start="2026-04-19T02:36:16.572399" elapsed="40.396333"/>
</kw>
<arg>KarafKeywords.Log_Testcase_Start_To_Controller_Karaf</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:36:16.571953" elapsed="40.396826"/>
</kw>
<doc>Test case setup which explicitly ignores previous failure and logs test case name to Karaf log.
Needed if the recommended default is to be overriden.</doc>
<status status="PASS" start="2026-04-19T02:36:16.568909" elapsed="40.399926"/>
</kw>
<kw name="Unregister_Flapping_Singleton_On_Nodes_And_Validate_Results" owner="CsCommon">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:56.971741" level="INFO">${movements_count} = 0</msg>
<var>${movements_count}</var>
<arg>${0}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:56.969610" elapsed="0.002159"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Unregister_Flapping_Singleton" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:56.973271" 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-19T02:36:56.972950" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:36:56.973346" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:36:56.973496" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:36:56.972602" elapsed="0.000919"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.007951" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.007577" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.008852" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.008490" elapsed="0.000430">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.009014" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.008155" elapsed="0.000904"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.009611" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.009224" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.009938" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:36:57.010117" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:36:57.009797" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.010543" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.010298" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.011792" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.011278" elapsed="0.000560"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.012445" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.011995" elapsed="0.000476"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.012803" elapsed="0.000072"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.013338" elapsed="0.000088"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.013645" elapsed="0.000072"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.012651" elapsed="0.001167"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.012518" elapsed="0.001332"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:36:57.013895" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:36:57.014092" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:36:57.010944" elapsed="0.003175"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.010654" elapsed="0.003497"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.014322" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.014176" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.010635" elapsed="0.003765"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.014979" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.014541" elapsed="0.000465"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.015073" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:36:57.006855" elapsed="0.008342"/>
</kw>
<msg time="2026-04-19T02:36:57.015250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:56.994890" elapsed="0.020409"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.027335" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.039163" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.051101" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.051307" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.051479" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.051838" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.051699" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:36:57.051684" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.052066" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.052233" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.052395" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.051656" elapsed="0.000793"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.051552" elapsed="0.000922"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.052615" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.052690" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T02:36:57.052799" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:36:56.990799" elapsed="0.062026"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.076549" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.076176" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.077371" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.077072" elapsed="0.000363">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.077528" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.076732" elapsed="0.000820"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.078156" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.077708" elapsed="0.000476"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.078479" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:36:57.078618" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:36:57.078343" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.079056" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.078796" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:36:57.079466" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.079167" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.079991" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.079687" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.079548" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.079149" elapsed="0.000956"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.080660" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.080247" elapsed="0.000440"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.080736" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:36:57.075553" elapsed="0.005304"/>
</kw>
<msg time="2026-04-19T02:36:57.080908" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:57.063354" elapsed="0.017601"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.093084" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.104847" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.116568" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.116756" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.116925" elapsed="0.000020"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.117300" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.117162" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:36:57.117146" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.117512" elapsed="0.000053"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.117714" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.117877" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.117118" elapsed="0.000812"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.116997" elapsed="0.000958"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.118112" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.118189" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:36:57.118297" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:36:57.062491" elapsed="0.055831"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.119590" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.119345" elapsed="0.000308">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.119745" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.118970" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.120094" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.119837" elapsed="0.000315"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.120631" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.120341" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.120176" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.119820" elapsed="0.000892"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.122946" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.120856" elapsed="0.002116"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:36:57.123023" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:36:57.123189" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:36:57.118650" elapsed="0.004563"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.124738" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.124483" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.125189" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.124934" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.125617" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.125376" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.126057" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.125804" elapsed="0.000297"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:36:57.126894" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:36:57.126696" elapsed="0.000223"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:36:57.127274" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:36:57.127084" elapsed="0.000217"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.127449" elapsed="0.000212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.128072" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.127813" elapsed="0.000302"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:36:57.128194" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:36:57.128354" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:36:57.126299" elapsed="0.002080"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:36:57.201514" level="INFO">POST Request : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node061eeryctc14efsi89drgp9ed0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:36:57.201990" level="INFO">POST Response : url=http://10.30.171.9:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '112'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;317&lt;/flap-count&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T02:36:57.202287" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:36:57.130630" elapsed="0.071715"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.128448" elapsed="0.074005"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.202855" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.202514" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.128430" elapsed="0.074653"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.210680" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;317&lt;/flap-count&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.205503" elapsed="0.005283"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.204983" elapsed="0.005878"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.204943" elapsed="0.005974"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.214024" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.211608" elapsed="0.002476"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.211069" elapsed="0.003048"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.211002" elapsed="0.003139"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.214697" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.214309" elapsed="0.000414"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.215025" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.214792" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.215587" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.215290" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.215122" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.214774" elapsed="0.000895"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.216203" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.215825" elapsed="0.000404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.216521" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.216297" elapsed="0.000281"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.217060" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.216754" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.216602" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.216279" elapsed="0.000863"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:57.217290" elapsed="0.000347"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:36:57.218102" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.217796" elapsed="0.000332"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.218279" elapsed="0.002249"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:36:57.203943" elapsed="0.016649"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T02:36:57.220822" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T02:36:57.220712" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.220693" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.221073" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.221142" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:36:57.223378" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;317&lt;/flap-count&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T02:36:57.123551" elapsed="0.099856"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.223479" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:36:57.223632" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;317&lt;/flap-count&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T02:36:56.980013" elapsed="0.243647"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.223996" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.223764" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.223747" elapsed="0.000357"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.224137" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:36:57.224288" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;317&lt;/flap-count&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${UNREGISTER_FLAPPING_SINGLETON_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T02:36:56.973768" elapsed="0.250547"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T02:36:57.224807" level="INFO">${xml} = &lt;Element 'output' at 0x7827061822a0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T02:36:57.224473" elapsed="0.000361"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T02:36:57.225296" level="INFO">${count} = 317</msg>
<var>${count}</var>
<arg>${xml}</arg>
<arg>xpath=flap-count</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T02:36:57.224990" elapsed="0.000332"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:36:57.225370" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:36:57.225519" level="INFO">${count} = 317</msg>
<var>${count}</var>
<arg>${index}</arg>
<doc>Deactivate flapping singleton application by invoking unregister-flapping-singleton rpc.
Return the successful re-registrations count.</doc>
<status status="PASS" start="2026-04-19T02:36:56.972230" elapsed="0.253313"/>
</kw>
<if>
<branch type="IF" condition="${count} &lt; 0">
<kw name="Fail" owner="BuiltIn">
<arg>No failure should have occured during the ${test_duration} timeout.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.225821" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.225611" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.225594" elapsed="0.000304"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.226417" level="INFO">${movements_count} = 317</msg>
<var>${movements_count}</var>
<arg>${movements_count}+${count}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.226060" elapsed="0.000383"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:36:56.972008" elapsed="0.254471"/>
</iter>
<iter>
<kw name="Unregister_Flapping_Singleton" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.227859" level="INFO">${session} = ClusterManagement__session_2</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-19T02:36:57.227564" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:36:57.227932" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:36:57.228096" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:36:57.227219" elapsed="0.000902"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.262320" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.261929" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.263261" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.262877" elapsed="0.000458">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.263428" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.262545" elapsed="0.000907"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.263994" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.263613" elapsed="0.000408"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.264333" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:36:57.264485" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:36:57.264196" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.264907" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.264664" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.266169" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.265642" elapsed="0.000573"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.266815" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.266370" elapsed="0.000471"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.267201" elapsed="0.000076"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.267731" elapsed="0.000090"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.268063" elapsed="0.000074"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.267024" elapsed="0.001215"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.266890" elapsed="0.001381"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:36:57.268315" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:57.268473" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:36:57.265323" elapsed="0.003175"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.265018" elapsed="0.003512"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.268696" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.268555" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.264999" elapsed="0.003772"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.269369" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.268912" elapsed="0.000484"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.269479" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:36:57.261322" elapsed="0.008373"/>
</kw>
<msg time="2026-04-19T02:36:57.269750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:57.249256" elapsed="0.020543"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.281838" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.293797" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.305659" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.305848" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.306065" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.306422" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.306284" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:36:57.306269" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.306635" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.306797" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.306958" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.306242" elapsed="0.000768"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.306142" elapsed="0.000907"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.307205" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.307284" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:36:57.307392" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:36:57.245187" elapsed="0.062230"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.331118" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.330688" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.331976" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.331661" elapsed="0.000417">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.332173" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.331331" elapsed="0.000866"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.332741" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.332358" elapsed="0.000410"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.333079" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:36:57.333265" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:36:57.332927" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.333691" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.333447" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:36:57.334102" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.333796" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.334625" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.334335" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.334194" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.333778" elapsed="0.000929"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.335295" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.334847" elapsed="0.000475"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.335371" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:36:57.330081" elapsed="0.005413"/>
</kw>
<msg time="2026-04-19T02:36:57.335545" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:57.318024" elapsed="0.017567"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.349092" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.361050" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.372773" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.372979" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.373166" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.373536" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.373393" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:36:57.373377" elapsed="0.000239"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.373753" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.373917" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.374092" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.373346" elapsed="0.000801"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.373244" elapsed="0.000930"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.374368" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.374445" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T02:36:57.374562" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:36:57.317145" elapsed="0.057443"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.375904" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.375639" elapsed="0.000339">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.376087" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.375278" elapsed="0.000834"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.376432" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.376183" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.376969" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.376677" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.376512" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.376165" elapsed="0.000905"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.379380" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.377218" elapsed="0.002189"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:36:57.379460" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:57.379614" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:36:57.374916" elapsed="0.004723"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.381277" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.380943" elapsed="0.000381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.381713" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.381476" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.382171" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.381902" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.382613" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.382371" elapsed="0.000286"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:36:57.383651" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:36:57.383453" elapsed="0.000225"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:36:57.384000" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:36:57.383828" elapsed="0.000198"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.384190" elapsed="0.000211"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.384798" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.384553" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:36:57.384884" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:57.385053" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:36:57.382854" elapsed="0.002225"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:36:57.469129" level="INFO">POST Request : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton 
 path_url=/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/xml', 'Connection': 'keep-alive', 'Content-Type': 'application/xml', 'Cookie': 'JSESSIONID=node01vttq6l5p8tvoj0si80ycssq0.node0', 'Content-Length': '0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:36:57.469610" level="INFO">POST Response : url=http://10.30.171.128:8181/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton 
 status=200, reason=OK 
 headers={'Content-Type': 'application/xml', 'Content-Length': '112'} 
 body=&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;315&lt;/flap-count&gt;&lt;/output&gt; 
 </msg>
<msg time="2026-04-19T02:36:57.469850" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:36:57.387323" elapsed="0.082586"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.385152" elapsed="0.084860"/>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.470450" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.470106" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.385134" elapsed="0.085517"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.478210" level="INFO">&lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;315&lt;/flap-count&gt;&lt;/output&gt;</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.472982" elapsed="0.005339"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.472494" elapsed="0.005907"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.472454" elapsed="0.006003"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.481819" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.479142" elapsed="0.002723"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.478581" elapsed="0.003318"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.478544" elapsed="0.003380"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.482482" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.482100" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.482813" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.482580" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.483384" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.483068" elapsed="0.000357"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.482895" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.482562" elapsed="0.000921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.484003" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.483637" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.484349" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.484120" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.484879" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.484585" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.484430" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.484103" elapsed="0.000860"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:57.485124" elapsed="0.000349"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:36:57.485914" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.485633" elapsed="0.000308"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.486108" elapsed="0.002370"/>
</kw>
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:36:57.471482" elapsed="0.017060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="PASS" start="2026-04-19T02:36:57.488723" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:36:57.488614" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.488595" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.488953" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.489022" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:57.491297" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;315&lt;/flap-count&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="PASS" start="2026-04-19T02:36:57.379982" elapsed="0.111344"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.491444" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:57.491600" level="INFO">${response_text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;315&lt;/flap-count&gt;&lt;/output&gt;</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T02:36:57.234454" elapsed="0.257174"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.491968" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.491734" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.491717" elapsed="0.000362"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.492112" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:36:57.492262" level="INFO">${text} = &lt;output xmlns="tag:opendaylight.org,2017:controller:yang:lowlevel:control"&gt;&lt;flap-count&gt;315&lt;/flap-count&gt;&lt;/output&gt;</msg>
<var>${text}</var>
<arg>${UNREGISTER_FLAPPING_SINGLETON_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="PASS" start="2026-04-19T02:36:57.228369" elapsed="0.263920"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-19T02:36:57.492776" level="INFO">${xml} = &lt;Element 'output' at 0x7826f741e2a0&gt;</msg>
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-19T02:36:57.492447" elapsed="0.000357"/>
</kw>
<kw name="Get Element Text" owner="XML">
<msg time="2026-04-19T02:36:57.493267" level="INFO">${count} = 315</msg>
<var>${count}</var>
<arg>${xml}</arg>
<arg>xpath=flap-count</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="PASS" start="2026-04-19T02:36:57.492959" elapsed="0.000335"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:36:57.493344" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:36:57.493490" level="INFO">${count} = 315</msg>
<var>${count}</var>
<arg>${index}</arg>
<doc>Deactivate flapping singleton application by invoking unregister-flapping-singleton rpc.
Return the successful re-registrations count.</doc>
<status status="PASS" start="2026-04-19T02:36:57.226823" elapsed="0.266692"/>
</kw>
<if>
<branch type="IF" condition="${count} &lt; 0">
<kw name="Fail" owner="BuiltIn">
<arg>No failure should have occured during the ${test_duration} timeout.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.493794" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.493584" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.493567" elapsed="0.000305"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.494385" level="INFO">${movements_count} = 632</msg>
<var>${movements_count}</var>
<arg>${movements_count}+${count}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.494009" elapsed="0.000402"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:36:57.226616" elapsed="0.267832"/>
</iter>
<iter>
<kw name="Unregister_Flapping_Singleton" owner="MdsalLowlevel">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.495834" level="INFO">${session} = ClusterManagement__session_3</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-19T02:36:57.495535" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:36:57.495909" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:36:57.496073" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:36:57.495191" elapsed="0.000908"/>
</kw>
<kw name="Post_As_Xml_Templated" owner="TemplatedRequests">
<kw name="Post_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.530466" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.530089" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.531343" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.530985" elapsed="0.000427">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.531507" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.530655" elapsed="0.000877"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.532109" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.531694" elapsed="0.000477"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.532475" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:36:57.532617" level="INFO">${template} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:36:57.532335" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.533061" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.532798" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.534311" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.533788" elapsed="0.000569"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.534959" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.534516" elapsed="0.000469"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.535367" elapsed="0.000073"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.535895" elapsed="0.000087"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.536220" elapsed="0.000074"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.535215" elapsed="0.001180"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.535050" elapsed="0.001377"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T02:36:57.536471" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:57.536633" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T02:36:57.533465" elapsed="0.003193"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.533176" elapsed="0.003515"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.536859" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.536715" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.533158" elapsed="0.003778"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.537538" level="INFO">${final_text} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.537106" elapsed="0.000460"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.537615" elapsed="0.000028"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:36:57.529457" elapsed="0.008280"/>
</kw>
<msg time="2026-04-19T02:36:57.537790" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:57.517317" elapsed="0.020522"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.549976" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.561921" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.573716" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.573960" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.574148" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.574518" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.574376" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:36:57.574360" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.574736" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.574902" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.575092" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.574328" elapsed="0.000819"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.574226" elapsed="0.000947"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.575316" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.575392" elapsed="0.000016"/>
</return>
<msg time="2026-04-19T02:36:57.575508" level="INFO">${uri} = /rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:36:57.513237" elapsed="0.062297"/>
</kw>
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.599593" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.599215" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.600468" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.600129" elapsed="0.000410">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/post_data.xml' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.600633" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.599779" elapsed="0.000878"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.601222" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.600816" elapsed="0.000433"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.601545" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/post_data.xml&lt;/a&gt;'.</msg>
<msg time="2026-04-19T02:36:57.601728" level="INFO">${template} = </msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T02:36:57.601407" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.602173" level="INFO"/>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.601910" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="NOT RUN" start="2026-04-19T02:36:57.602569" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.602282" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.603123" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.602790" elapsed="0.000393"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.602651" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.602264" elapsed="0.000977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.603811" level="INFO">${final_text} = </msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:36:57.603384" elapsed="0.000453"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T02:36:57.603887" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="PASS" start="2026-04-19T02:36:57.598574" elapsed="0.005436"/>
</kw>
<msg time="2026-04-19T02:36:57.604079" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:36:57.586182" elapsed="0.017946"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.616124" elapsed="0.000027"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.627949" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.639749" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.639942" elapsed="0.000022"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.640128" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.640487" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.640345" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:36:57.640331" elapsed="0.000235"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.640703" elapsed="0.000021"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.640867" elapsed="0.000021"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.641043" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T02:36:57.640303" elapsed="0.000795"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.640204" elapsed="0.000920"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.641265" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T02:36:57.641341" elapsed="0.000015"/>
</return>
<msg time="2026-04-19T02:36:57.641451" level="INFO">${data} = </msg>
<var>${data}</var>
<arg>folder=${folder}</arg>
<arg>name_prefix=post_</arg>
<arg>base_name=${base_name}</arg>
<arg>extension=${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>endline=${endline}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from 1, by one  times.
Template variable ${j} is calculated as ${i} incremented by offset 0 ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T02:36:57.585305" elapsed="0.056176"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T02:36:57.642890" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.642655" elapsed="0.000298">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T02:36:57.643084" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T02:36:57.642307" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T02:36:57.643422" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:36:57.643181" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.643963" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:36:57.643669" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-19T02:36:57.643502" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T02:36:57.643162" elapsed="0.000898"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.646298" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:36:57.644209" elapsed="0.002116"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T02:36:57.646376" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:36:57.646529" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/mdsal/lowlevelrpc/unregister_flapping_singleton/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T02:36:57.641909" elapsed="0.004645"/>
</kw>
<kw name="Post_To_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.648097" level="INFO">/rests/operations/odl-mdsal-lowlevel-control:unregister-flapping-singleton</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.647837" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.648529" level="INFO"/>
<arg>${data}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.648292" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.648954" level="INFO">{'Content-Type': 'application/xml'}</msg>
<arg>${content_type}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.648715" elapsed="0.000282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.649395" level="INFO">{'Accept': 'application/xml'}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.649157" elapsed="0.000280"/>
</kw>
<kw name="Join_Two_Headers" owner="TemplatedRequests">
<kw name="Copy Dictionary" owner="Collections">
<msg time="2026-04-19T02:36:57.650237" level="INFO">${accumulator} = {'Content-Type': 'application/xml'}</msg>
<var>${accumulator}</var>
<arg>${first}</arg>
<doc>Returns a copy of the given dictionary.</doc>
<status status="PASS" start="2026-04-19T02:36:57.650025" elapsed="0.000237"/>
</kw>
<kw name="Get Dictionary Items" owner="Collections">
<msg time="2026-04-19T02:36:57.650581" level="INFO">${items_to_add} = ['Accept', 'application/xml']</msg>
<var>${items_to_add}</var>
<arg>${second}</arg>
<doc>Returns items of the given ``dictionary`` as a list.</doc>
<status status="PASS" start="2026-04-19T02:36:57.650410" elapsed="0.000196"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${accumulator}</arg>
<arg>@{items_to_add}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:36:57.650750" elapsed="0.000205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:36:57.651375" level="INFO">{'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<arg>${accumulator}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:36:57.651130" elapsed="0.000288"/>
</kw>
<return>
<value>${accumulator}</value>
<status status="PASS" start="2026-04-19T02:36:57.651460" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:36:57.651612" level="INFO">${headers} = {'Content-Type': 'application/xml', 'Accept': 'application/xml'}</msg>
<var>${headers}</var>
<arg>first=${content_type}</arg>
<arg>second=${accept}</arg>
<doc>Take two dicts, join them, return result. Second argument values take precedence.</doc>
<status status="PASS" start="2026-04-19T02:36:57.649629" elapsed="0.002007"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="POST On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:39:02.723246" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.653862" elapsed="125.073506">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:36:57.651704" elapsed="125.075885">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="POST On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>${uri}</arg>
<arg>data=${data}</arg>
<arg>headers=${headers}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a POST request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.728206" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:02.727675" elapsed="0.000828"/>
</branch>
<status status="FAIL" start="2026-04-19T02:36:57.651686" elapsed="125.076879">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.729687" elapsed="0.000077"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:39:02.730066" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:02.729943" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:39:02.729901" elapsed="0.000314"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.730545" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:39:02.730700" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>data=${data}</arg>
<arg>content_type=${content_type}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>POST data to given URI, check status code and return response text.
${content_type} and ${accept} are mandatory Python objects with headers to use.
If ${normalize_json}, normalize text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.646875" elapsed="125.084070">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:39:02.731160" elapsed="0.000035"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>extension=xml</arg>
<arg>accept=${ACCEPT_XML}</arg>
<arg>content_type=${HEADERS_XML}</arg>
<arg>mapping=${mapping}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=False</arg>
<arg>endline=${\n}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>additional_allowed_status_codes=${additional_allowed_status_codes}</arg>
<arg>explicit_status_codes=${explicit_status_codes}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve URI and data from folder, call Post_To_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.502553" elapsed="125.228923">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Xml_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=response</arg>
<arg>mapping=${mapping}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected XML data, should be equal to provided ${response}.
Endline set to empty, as this Resource does not support indented XML comparison.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.732332" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:02.731740" elapsed="0.000683"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:39:02.731702" elapsed="0.000745"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:39:02.732479" elapsed="0.000015"/>
</return>
<var>${text}</var>
<arg>${UNREGISTER_FLAPPING_SINGLETON_DIR}</arg>
<arg>session=${session}</arg>
<doc>Add arguments sensible for XML data, return Post_Templated response text.
Optionally, verification against response.xml (no iteration) is called.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.496349" elapsed="125.236231">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Parse Xml" owner="XML">
<var>${xml}</var>
<arg>${text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.732754" elapsed="0.000021"/>
</kw>
<kw name="Get Element Text" owner="XML">
<var>${count}</var>
<arg>${xml}</arg>
<arg>xpath=flap-count</arg>
<doc>Returns all text of the element, possibly whitespace normalized.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.732920" elapsed="0.000020"/>
</kw>
<return>
<value>${count}</value>
<status status="NOT RUN" start="2026-04-19T02:39:02.732984" elapsed="0.000015"/>
</return>
<var>${count}</var>
<arg>${index}</arg>
<doc>Deactivate flapping singleton application by invoking unregister-flapping-singleton rpc.
Return the successful re-registrations count.</doc>
<status status="FAIL" start="2026-04-19T02:36:57.494788" elapsed="125.238308">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="${count} &lt; 0">
<kw name="Fail" owner="BuiltIn">
<arg>No failure should have occured during the ${test_duration} timeout.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.733325" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:02.733177" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:39:02.733160" elapsed="0.000238"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${movements_count}</var>
<arg>${movements_count}+${count}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.733533" elapsed="0.000020"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:36:57.494582" elapsed="125.239023">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:36:56.971827" elapsed="125.761837">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<kw name="Convert Time" owner="DateTime">
<var>${seconds}</var>
<arg>${test_duration}</arg>
<doc>Converts between supported `time formats`.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.733821" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${rate}</var>
<arg>${movements_count}/${seconds}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.733983" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${rate} &lt; ${rate_limit_to_pass}">
<kw name="Fail" owner="BuiltIn">
<arg>Acceptance rate ${rate_limit_to_pass} not reached, actual rate is ${rate}.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.734220" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:02.734084" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:39:02.734066" elapsed="0.000226"/>
</if>
<arg>${cs_all_indices}</arg>
<arg>${ACCEPTED_PER_SEC_RATE}</arg>
<arg>${TEST_DURATION}</arg>
<doc>Unregister the testing service and check recevied statistics.</doc>
<status status="FAIL" start="2026-04-19T02:36:56.969188" elapsed="125.765181">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Teardown_Test_Show_Bugs_If_Test_Failed" owner="SetupUtils" type="TEARDOWN">
<kw name="SetupUtils__Report_Bugs_Causing_Failure" owner="SetupUtils">
<if>
<branch type="IF" condition="'${SetupUtils__Known_Bug_ID}' != ''">
<kw name="Report Failure Due To Bug" owner="Utils">
<arg>${SetupUtils__Known_Bug_ID}</arg>
<doc>Report that a test failed due to a known Bugzilla bug whose
number is provided as an argument.
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:02.735773" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:02.735356" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:02.735339" elapsed="0.000523"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>'${SetupUtils__Known_Bug_ID}' != ''</arg>
<arg>Set_Known_Bug_Id</arg>
<arg>${EMPTY}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:02.736010" elapsed="0.000392"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.741572" level="INFO">${test_skipped} = False</msg>
<var>${test_skipped}</var>
<arg>len(re.findall('SKIPPED', """${TEST_MESSAGE}""")) &gt; 0</arg>
<arg>modules=re</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:39:02.741126" elapsed="0.000475"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-19T02:39:02.741819" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:02.741675" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:02.741657" elapsed="0.000223"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.742346" level="INFO">${newline} = 
</msg>
<var>${newline}</var>
<arg>chr(10)</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:39:02.742022" elapsed="0.000351"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-19T02:39:02.742914" level="INFO">${reference} = controller_clustering_ask_txt_Chasing_The_Leader_Unregister_Candidates_And_Validate_Criteria</msg>
<var>${reference}</var>
<arg>${SUITE_NAME}_${TEST_NAME}</arg>
<arg>[ /\.-]</arg>
<arg>_</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="PASS" start="2026-04-19T02:39:02.742651" elapsed="0.000289"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-19T02:39:02.743290" level="INFO">${reference} = controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-19T02:39:02.743110" elapsed="0.000206"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.743818" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria"
reference somewhere inside)</msg>
<var>${msg}</var>
<arg>... click for list of related bugs or create a new one if needed (with the${newline}"${reference}"${newline}reference somewhere inside)</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:39:02.743465" elapsed="0.000380"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.744325" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria&amp;order=bug_status"</msg>
<var>${bugs}</var>
<arg>"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=${reference}&amp;order=bug_status"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:39:02.743995" elapsed="0.000358"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.744940" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${msg}${newline}${bugs}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-19T02:39:02.744503" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.745451" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria&amp;order=bug_status"</msg>
<arg>${msg}${newline}${bugs}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:02.745158" elapsed="0.000340"/>
</kw>
<doc>Report that a test failed and point to linked Bugzilla bug(s).
Linked bugs must contain the ${reference} inside comments (workaround
becasue of currently missing suitable field for external references and
not correctly working the CONTENT MATCHES filter).
Not FAILED (incl. SKIPPED) test are not reported.
This keyword must be used in the [Teardown] setting of the affected test
or as the first line of the test if FastFail module is not being
used. It reports the URL of the bug on console and also puts it
into the Robot log file.</doc>
<status status="PASS" start="2026-04-19T02:39:02.740806" elapsed="0.004746"/>
</kw>
<status status="PASS" start="2026-04-19T02:39:02.735147" elapsed="0.010455"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-19T02:39:02.734735" elapsed="0.010909"/>
</kw>
<doc>Unregister the testing service and check recevied statistics.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:36:16.568328" elapsed="166.177355">... click for list of related bugs or create a new one if needed (with the
"controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_clustering_ask_txt_chasing_the_leader_unregister_candidates_and_validate_criteria&amp;order=bug_status"

ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T02:39:02.746583" elapsed="0.000486"/>
</kw>
<doc>Cluster Singleton testing: Chasing the Leader

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

This test aims to establish the service operates correctly when faced with
rapid application transitions without having a stabilized application.</doc>
<status status="FAIL" start="2026-04-19T02:30:55.797831" elapsed="486.949313"/>
</suite>
<suite id="s1-s15" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.861212" 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-19T02:39:02.856765" elapsed="0.004503"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T02:39:02.856528" elapsed="0.004810"/>
</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-19T02:39:02.866606" 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-19T02:39:02.862486" elapsed="0.004147"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T02:39:02.866834" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:02.866720" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:02.866696" elapsed="0.000206"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.867447" 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-19T02:39:02.867106" elapsed="0.000384"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.867960" level="INFO">${cluster_size} = 3</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-19T02:39:02.867651" elapsed="0.000335"/>
</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-19T02:39:02.868550" elapsed="0.000281"/>
</kw>
<msg time="2026-04-19T02:39:02.868929" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:39:02.868975" level="INFO">${possibly_int_of_members} = 3</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-19T02:39:02.868210" elapsed="0.000788"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.869547" level="INFO">${int_of_members} = 3</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-19T02:39:02.869182" elapsed="0.000391"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.870550" 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-19T02:39:02.870290" elapsed="0.000287"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.870991" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:39:02.870722" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.871482" 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-19T02:39:02.871192" elapsed="0.000316"/>
</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-19T02:39:02.874703" elapsed="0.000251"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.875453" level="INFO">${member_ip} = 10.30.171.9</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-19T02:39:02.875128" elapsed="0.000351"/>
</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-19T02:39:02.875631" elapsed="0.000231"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.876654" 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-19T02:39:02.876361" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:39:02.876726" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:39:02.876883" 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-19T02:39:02.876069" elapsed="0.000839"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:39:02.877508" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7f19510&gt;, timeout=125, 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-19T02:39:02.877079" elapsed="0.000560"/>
</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-19T02:39:02.877801" elapsed="0.000203"/>
</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-19T02:39:02.874145" elapsed="0.003949"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:39:02.873940" elapsed="0.004208"/>
</iter>
<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-19T02:39:02.879368" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.880121" level="INFO">${member_ip} = 10.30.171.128</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-19T02:39:02.879775" elapsed="0.000373"/>
</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-19T02:39:02.880299" elapsed="0.000220"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.881309" level="INFO">${session} = ClusterManagement__session_2</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-19T02:39:02.880998" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:39:02.881381" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:39:02.881531" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T02:39:02.880708" elapsed="0.000848"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:39:02.882123" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7f18f10&gt;, timeout=125, 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-19T02:39:02.881707" elapsed="0.000518"/>
</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-19T02:39:02.882384" elapsed="0.000186"/>
</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-19T02:39:02.878662" elapsed="0.003967"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:39:02.878249" elapsed="0.004423"/>
</iter>
<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-19T02:39:02.883510" elapsed="0.000185"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.884187" level="INFO">${member_ip} = 10.30.171.206</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-19T02:39:02.883850" elapsed="0.000365"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:39:02.884365" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.885371" level="INFO">${session} = ClusterManagement__session_3</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-19T02:39:02.885075" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:39:02.885443" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:39:02.885591" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T02:39:02.884770" elapsed="0.000845"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:39:02.886184" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7f890d0&gt;, timeout=125, 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-19T02:39:02.885768" elapsed="0.000517"/>
</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-19T02:39:02.886445" elapsed="0.000187"/>
</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-19T02:39:02.882946" elapsed="0.003745"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:39:02.882757" elapsed="0.003977"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T02:39:02.871565" elapsed="0.015199"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.887387" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T02:39:02.886990" elapsed="0.000440"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.887973" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T02:39:02.887595" elapsed="0.000420"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.888554" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T02:39:02.888190" elapsed="0.000406"/>
</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-19T02:39:02.869825" elapsed="0.018827"/>
</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-19T02:39:02.862139" elapsed="0.026603"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:39:02.888924" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:02.888810" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:02.888792" elapsed="0.000197"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.892595" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:39:02.892216" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.893103" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:39:02.892783" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:39:02.893175" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:39:02.893328" level="INFO">${index_list} = [1, 2, 3]</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-19T02:39:02.891872" elapsed="0.001480"/>
</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-19T02:39:02.894344" level="INFO">${member_ip} = 10.30.171.9</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-19T02:39:02.894080" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:02.895143" 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-19T02:39:02.895244" 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-19T02:39:02.894960" elapsed="0.000311"/>
</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-19T02:39:02.897920" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:02.897604" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:02.897586" elapsed="0.000541"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:02.898407" 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-19T02:39:02.898526" 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-19T02:39:02.898279" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.899637" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:02.898705" elapsed="0.000980"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:02.900489" 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-19T02:39:02.899843" elapsed="0.000672"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:39:02.901786" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:39:02.901984" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:39:02.901255" 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-19T02:39:02.902337" elapsed="0.000628"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:39:02.905688" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:39:03.473893" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:30:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:39:02.905293" elapsed="0.568936"/>
</kw>
<msg time="2026-04-19T02:39:03.474334" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:02.903317" elapsed="0.571196"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:39:02.900728" elapsed="0.574030"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:39:03.475357" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:39:03.488200" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:39:03.488552" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:39:03.488655" 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-19T02:39:03.475008" elapsed="0.013702"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:03.489143" elapsed="0.000464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:03.491212" 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-19T02:39:03.490026" elapsed="0.001299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:03.491947" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:03.491535" elapsed="0.000595"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:03.491481" elapsed="0.000725"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:39:03.492761" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:39:03.492378" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:03.492329" elapsed="0.000692"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:03.493161" 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-19T02:39:03.498997" elapsed="0.001027"/>
</kw>
<kw name="Open 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-19T02:39:03.500364" elapsed="0.000555"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:03.501202" elapsed="0.000415"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:03.494143" elapsed="0.007607"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:39:02.897127" elapsed="0.604791"/>
</kw>
<msg time="2026-04-19T02:39:03.502013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:02.896428" elapsed="0.605711"/>
</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-19T02:39:02.895931" elapsed="0.606330"/>
</kw>
<msg time="2026-04-19T02:39:03.502321" 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-19T02:39:02.895430" elapsed="0.606967"/>
</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-19T02:39:03.506776" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T02:39:03.507540" elapsed="0.000209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:03.507995" elapsed="0.000208"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:03.502891" elapsed="0.005407"/>
</kw>
<msg time="2026-04-19T02:39:03.508429" 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-19T02:39:02.894588" elapsed="0.613874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:03.508914" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:03.508659" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:39:03.509003" elapsed="0.000046"/>
</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-19T02:39:02.893712" elapsed="0.615441"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:39:02.893537" elapsed="0.615716"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:03.510288" level="INFO">${member_ip} = 10.30.171.128</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-19T02:39:03.509912" elapsed="0.000413"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:03.511194" 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-19T02:39:03.511305" 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-19T02:39:03.511003" elapsed="0.000340"/>
</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-19T02:39:03.514361" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:03.514019" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:03.513998" elapsed="0.000558"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:03.514843" 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-19T02:39:03.514967" 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-19T02:39:03.514710" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:03.516105" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:03.515167" elapsed="0.000987"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:03.516955" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:39:03.516316" elapsed="0.000667"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:39:03.518315" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:39:03.518513" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:39:03.517744" elapsed="0.000818"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:03.518837" elapsed="0.000659"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:39:03.520964" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:39:04.111123" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.02               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:30:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:39:03.520572" elapsed="0.590916"/>
</kw>
<msg time="2026-04-19T02:39:04.111692" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:03.519816" elapsed="0.592251"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:39:03.517222" elapsed="0.595390"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.113745" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:39:04.126207" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:39:04.126584" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:39:04.126684" 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-19T02:39:04.113118" elapsed="0.013621"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.127160" elapsed="0.000455"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.129209" 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-19T02:39:04.128083" elapsed="0.001344"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:04.129962" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:04.129612" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:04.129559" elapsed="0.000601"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:39:04.130602" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T02:39:04.130296" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:04.130254" elapsed="0.000544"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:04.130877" 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-19T02:39:04.136408" elapsed="0.001028"/>
</kw>
<kw name="Open 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-19T02:39:04.137756" elapsed="0.000580"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.138604" elapsed="0.000265"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:04.131606" elapsed="0.007376"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:39:03.513522" elapsed="0.625621"/>
</kw>
<msg time="2026-04-19T02:39:04.139220" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:03.512830" elapsed="0.626463"/>
</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-19T02:39:03.512047" elapsed="0.627357"/>
</kw>
<msg time="2026-04-19T02:39:04.139461" 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-19T02:39:03.511505" elapsed="0.628019"/>
</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-19T02:39:04.143631" elapsed="0.000523"/>
</kw>
<kw name="Open 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-19T02:39:04.144405" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.144714" 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-19T02:39:04.139935" elapsed="0.004926"/>
</kw>
<msg time="2026-04-19T02:39:04.144953" 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-19T02:39:03.510606" elapsed="0.634372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.145433" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:04.145180" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:39:04.145519" 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-19T02:39:03.509547" elapsed="0.636099"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:39:03.509357" elapsed="0.636328"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:04.146619" level="INFO">${member_ip} = 10.30.171.206</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-19T02:39:04.146347" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.147372" 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-19T02:39:04.147501" 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-19T02:39:04.147235" elapsed="0.000293"/>
</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-19T02:39:04.150212" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:04.149889" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:04.149870" elapsed="0.000529"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.150724" 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-19T02:39:04.150850" 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-19T02:39:04.150546" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.152200" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:04.151048" elapsed="0.001214"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.153215" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:39:04.152474" elapsed="0.000768"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.154543" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:39:04.154745" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:39:04.153980" elapsed="0.000814"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:04.155092" elapsed="0.000775"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.157417" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:39:04.785570" 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 Sun Apr 19 02:39:04 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:30:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:39:04.157003" elapsed="0.628915"/>
</kw>
<msg time="2026-04-19T02:39:04.786181" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:04.156251" elapsed="0.630279"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:39:04.153461" elapsed="0.633615"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.788249" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:39:04.801498" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:39:04.801845" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:39:04.801998" 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-19T02:39:04.787553" elapsed="0.014557"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.802526" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.804633" 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-19T02:39:04.803497" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:04.805320" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:04.804948" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:04.804897" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:39:04.805907" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T02:39:04.805620" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:04.805584" elapsed="0.000551"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:04.806212" 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-19T02:39:04.813375" elapsed="0.000812"/>
</kw>
<kw name="Open 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-19T02:39:04.814422" elapsed="0.000433"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.815085" elapsed="0.000197"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:04.806987" elapsed="0.008379"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:39:04.149406" elapsed="0.666056"/>
</kw>
<msg time="2026-04-19T02:39:04.815583" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:04.148755" elapsed="0.666882"/>
</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-19T02:39:04.148267" elapsed="0.667460"/>
</kw>
<msg time="2026-04-19T02:39:04.815770" 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-19T02:39:04.147683" elapsed="0.668134"/>
</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-19T02:39:04.818775" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:39:04.819275" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.819612" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:04.816133" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T02:39:04.819883" 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-19T02:39:04.146862" elapsed="0.673047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.820430" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:04.820170" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:39:04.820516" 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-19T02:39:04.145964" elapsed="0.674694"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:39:04.145781" elapsed="0.674915"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:39:02.893405" elapsed="1.927329"/>
</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-19T02:39:02.889249" elapsed="1.931551"/>
</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-19T02:39:04.820961" 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-19T02:39:04.835656" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:04.835540" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:04.835521" elapsed="0.000206"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.836045" 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-19T02:39:04.836155" 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-19T02:39:04.835883" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.836628" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:04.836339" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:04.837101" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:04.836827" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:04.837968" 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-19T02:39:04.837670" elapsed="0.000457">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T02:39:04.838253" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:39:04.838300" 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-19T02:39:04.837307" elapsed="0.001016"/>
</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-19T02:39:04.838642" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:04.838403" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:04.838383" elapsed="0.000385"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:04.839672" level="INFO">${ip_address} = 10.30.171.9</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-19T02:39:04.839393" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:39:04.839750" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:39:04.839906" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:39:04.839001" elapsed="0.000931"/>
</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-19T02:39:04.840106" elapsed="0.000443"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.840835" level="INFO">index=10
host=10.30.171.9
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-19T02:39:04.840939" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.840722" 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-19T02:39:04.841134" elapsed="0.002416"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:39:04.843987" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:39:05.120481" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:39:04.843719" elapsed="0.276905"/>
</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-19T02:39:05.124530" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:39:05.125015" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:05.125347" 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-19T02:39:05.121743" elapsed="0.003758"/>
</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-19T02:39:05.121052" elapsed="0.004495"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:39:04.835252" elapsed="0.290348"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:39:04.821932" elapsed="0.303717"/>
</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-19T02:39:04.821548" elapsed="0.304153"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:39:04.821407" elapsed="0.304335"/>
</iter>
<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-19T02:39:05.139666" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:05.139549" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:05.139527" elapsed="0.000212"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:05.140042" 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-19T02:39:05.140152" 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-19T02:39:05.139893" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:05.140624" 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-19T02:39:05.140344" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:05.141077" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:05.140819" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:05.141941" level="FAIL">Dictionary does not contain key '2'.</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-19T02:39:05.141712" elapsed="0.000353">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T02:39:05.142174" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:39:05.142219" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T02:39:05.141347" elapsed="0.000895"/>
</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-19T02:39:05.142538" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:05.142317" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:05.142299" elapsed="0.000337"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:05.143401" level="INFO">${ip_address} = 10.30.171.128</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-19T02:39:05.143124" elapsed="0.000303"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:39:05.143475" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:39:05.143626" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:39:05.142836" elapsed="0.000815"/>
</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-19T02:39:05.143803" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:05.144502" level="INFO">index=12
host=10.30.171.128
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-19T02:39:05.144601" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T02:39:05.144395" elapsed="0.000232"/>
</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-19T02:39:05.144774" elapsed="0.002530"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:39:05.147725" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:39:05.409611" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:39:05.147467" elapsed="0.262258"/>
</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-19T02:39:05.413194" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:39:05.413680" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:05.413988" elapsed="0.000126"/>
</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-19T02:39:05.410733" elapsed="0.003435"/>
</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-19T02:39:05.410106" elapsed="0.004110"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:39:05.139218" elapsed="0.275052"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:39:05.126382" elapsed="0.287937"/>
</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-19T02:39:05.125987" elapsed="0.288386"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:39:05.125847" elapsed="0.288630"/>
</iter>
<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-19T02:39:05.428396" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:05.428276" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:05.428256" elapsed="0.000211"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:05.428777" 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-19T02:39:05.428882" 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-19T02:39:05.428639" elapsed="0.000269"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:05.429344" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:05.429081" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:05.429781" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:05.429540" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:05.430603" level="FAIL">Dictionary does not contain key '3'.</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-19T02:39:05.430376" elapsed="0.000331">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T02:39:05.430814" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:39:05.430859" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T02:39:05.429995" elapsed="0.000888"/>
</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-19T02:39:05.431197" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:05.430958" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:05.430939" elapsed="0.000355"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:05.432228" level="INFO">${ip_address} = 10.30.171.206</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-19T02:39:05.431946" elapsed="0.000309"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:39:05.432304" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:39:05.432459" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:39:05.431492" elapsed="0.000991"/>
</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-19T02:39:05.432637" elapsed="0.000416"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:05.433329" level="INFO">index=14
host=10.30.171.206
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-19T02:39:05.433427" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T02:39:05.433222" elapsed="0.000231"/>
</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-19T02:39:05.433601" elapsed="0.002375"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:39:05.436412" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:39:15.466651" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:05.436153" elapsed="10.031405">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:15.471456" 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-19T02:39:15.471956" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:15.472292" 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-19T02:39:15.468838" elapsed="0.003611"/>
</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-19T02:39:15.468137" elapsed="0.004359"/>
</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-19T02:39:05.427971" elapsed="10.044610">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:39:15.472793" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:05.415116" elapsed="10.057774">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:05.414728" elapsed="10.058230"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:39:05.414582" elapsed="10.058422"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T02:39:04.821254" elapsed="10.651801"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T02:39:02.861665" elapsed="12.611453"/>
</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-19T02:39:15.475864" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.475732" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.475710" elapsed="0.000225"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:39:15.480898" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.480791" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.480772" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:39:15.481944" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:39:15.481554" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:15.482470" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:39:15.482161" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:39:15.482542" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:39:15.482700" level="INFO">${index_list} = [1, 2, 3]</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-19T02:39:15.481206" elapsed="0.001519"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:39:15.488233" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.488117" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.488099" elapsed="0.000202"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:39:15.489343" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.489236" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.489219" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:15.489851" 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-19T02:39:15.489554" elapsed="0.000324"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:15.490271" 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-19T02:39:15.490064" elapsed="0.000233"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:39:15.533664" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:39:15.490794" elapsed="0.043012"/>
</kw>
<msg time="2026-04-19T02:39:15.533936" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:39:15.533983" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.490456" elapsed="0.043564"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:39:15.602727" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:39:15.534551" elapsed="0.068395"/>
</kw>
<msg time="2026-04-19T02:39:15.603079" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:39:15.603126" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.534211" elapsed="0.069007"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:15.603541" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:15.603303" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.603282" elapsed="0.000356"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:15.604113" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:15.603788" elapsed="0.000422"/>
</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-19T02:39:15.604687" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:15.604278" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.604260" elapsed="0.000508"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:39:15.604805" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:15.606132" elapsed="0.000610"/>
</kw>
<kw name="Open 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-19T02:39:15.607079" elapsed="0.000539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:15.607918" elapsed="0.000249"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:15.605686" elapsed="0.002632"/>
</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-19T02:39:15.605140" elapsed="0.003226"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:39:15.488969" elapsed="0.119497"/>
</kw>
<msg time="2026-04-19T02:39:15.608559" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:39:15.608605" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.488452" elapsed="0.120192"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:39:15.608831" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:39:15.608721" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.608702" elapsed="0.000224"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:15.609346" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:15.609682" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:39:15.609755" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:39:15.487808" elapsed="0.122056"/>
</kw>
<msg time="2026-04-19T02:39:15.609970" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:39:15.610054" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.483111" elapsed="0.126992"/>
</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-19T02:39:15.610442" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:15.610185" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.610166" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:39:15.482953" elapsed="0.127592"/>
</iter>
<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-19T02:39:15.616229" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.615967" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.615946" elapsed="0.000355"/>
</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-19T02:39:15.617398" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.617284" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.617264" elapsed="0.000243"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:15.617949" level="INFO">${karaf_connection_index} = 12</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-19T02:39:15.617668" elapsed="0.000309"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:15.618414" 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-19T02:39:15.618168" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:39:15.666399" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:39:15.618987" elapsed="0.047862"/>
</kw>
<msg time="2026-04-19T02:39:15.667189" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:39:15.667306" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.618612" elapsed="0.048785"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:39:15.744330" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:39:15.668815" elapsed="0.075793"/>
</kw>
<msg time="2026-04-19T02:39:15.744746" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:39:15.744794" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.667919" elapsed="0.076913"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:15.745262" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:15.744940" elapsed="0.000380"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.744908" elapsed="0.000437"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:15.745825" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:15.745491" elapsed="0.000429"/>
</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-19T02:39:15.746229" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:15.745988" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.745969" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:39:15.746344" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:15.747938" elapsed="0.000636"/>
</kw>
<kw name="Open 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-19T02:39:15.748903" elapsed="0.000536"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:15.749723" elapsed="0.000211"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:15.747239" elapsed="0.002866"/>
</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-19T02:39:15.746657" elapsed="0.003497"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:39:15.617000" elapsed="0.133252"/>
</kw>
<msg time="2026-04-19T02:39:15.750344" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:39:15.750388" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.616458" elapsed="0.133968"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:39:15.750610" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:39:15.750503" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.750484" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:15.751114" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:39:15.751564" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:39:15.751639" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:39:15.615653" elapsed="0.136094"/>
</kw>
<msg time="2026-04-19T02:39:15.751841" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:39:15.751885" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:39:15.610815" elapsed="0.141107"/>
</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-19T02:39:15.752265" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:15.751998" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.751980" elapsed="0.000362"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:39:15.610672" elapsed="0.141694"/>
</iter>
<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-19T02:39:15.757781" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.757673" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.757655" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:39:15.759006" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:15.758900" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:15.758882" elapsed="0.000208"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:15.759513" level="INFO">${karaf_connection_index} = 14</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-19T02:39:15.759236" elapsed="0.000305"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:15.759895" 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-19T02:39:15.759701" elapsed="0.000220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:39:25.761185" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:39:15.760434" elapsed="10.001495">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:39:25.762153" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:39:25.762204" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:39:15.760098" elapsed="10.002131"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:39:35.763482" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:39:25.762963" elapsed="10.001031">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:39:35.764190" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:39:35.764237" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:39:25.762514" elapsed="10.001749"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:39:35.765388" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:39:35.764719" elapsed="0.000733">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:39:35.764378" elapsed="0.001180">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:39:35.764345" elapsed="0.001251">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:39:35.765763" elapsed="0.000021"/>
</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-19T02:39:35.766274" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:35.765847" elapsed="0.000482"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:39:35.765831" elapsed="0.000522"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:39:35.766389" elapsed="0.000016"/>
</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-19T02:39:35.767809" elapsed="0.000652"/>
</kw>
<kw name="Open 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-19T02:39:35.768784" elapsed="0.000533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:35.769625" elapsed="0.000219"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:35.767362" elapsed="0.002627"/>
</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-19T02:39:35.766693" elapsed="0.003369"/>
</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-19T02:39:15.758649" elapsed="20.011501">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T02:39:35.770254" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:39:35.770299" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T02:39:15.758001" elapsed="20.012323"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:39:35.770510" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:35.770402" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:35.770384" elapsed="0.000192"/>
</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-19T02:39:35.771338" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:35.771234" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:35.771216" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:35.771704" 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-19T02:39:35.771808" 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-19T02:39:35.771556" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:35.772273" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:35.771989" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:35.772711" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:35.772469" 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-19T02:39:35.773291" elapsed="0.000231"/>
</kw>
<msg time="2026-04-19T02:39:35.773644" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:39:35.773692" level="INFO">${old_connection_index} = 14</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-19T02:39:35.772912" elapsed="0.000803"/>
</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-19T02:39:35.774558" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:39:45.776756" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:39:35.775530" elapsed="10.002839">No match found for '
' in 10 seconds
Output:
.</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-19T02:39:35.774973" elapsed="10.003596"/>
</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-19T02:39:45.779509" elapsed="0.000438"/>
</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-19T02:39:45.778857" elapsed="0.001259"/>
</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-19T02:39:35.774012" elapsed="10.006186"/>
</kw>
<status status="PASS" start="2026-04-19T02:39:35.773790" elapsed="10.006461"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:35.773772" elapsed="10.006513"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:45.781183" level="INFO">${ip_address} = 10.30.171.206</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-19T02:39:45.780874" elapsed="0.000336"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:39:45.781264" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:39:45.781427" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:39:45.780538" elapsed="0.000913"/>
</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-19T02:39:45.781703" elapsed="0.000477"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:45.782474" level="INFO">index=19
host=10.30.171.206
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-19T02:39:45.782576" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T02:39:45.782356" elapsed="0.000247"/>
</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-19T02:39:45.782755" elapsed="0.004630"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:39:45.787825" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:39:55.849277" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:45.787554" elapsed="10.062680">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:55.854151" 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-19T02:39:55.854955" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:55.855308" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:55.851484" elapsed="0.003980"/>
</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-19T02:39:55.850771" elapsed="0.004739"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:39:35.770970" elapsed="20.084626">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:55.855969" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:39:55.856062" elapsed="0.000023"/>
</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-19T02:39:15.757376" elapsed="40.098803">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:39:55.856297" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:39:55.856341" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:39:15.752635" elapsed="40.103728"/>
</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-19T02:39:55.856711" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:55.856449" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:55.856428" elapsed="0.000362"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:39:15.752493" elapsed="40.104328"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:39:15.482779" elapsed="40.374076"/>
</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-19T02:39:15.480491" elapsed="40.376422"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T02:39:15.473736" elapsed="40.383234"/>
</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-19T02:39:15.473285" elapsed="40.383729"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T02:39:02.856082" elapsed="53.001003"/>
</kw>
<test id="s1-s15-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:39:55.863148" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:39:55.862697" elapsed="0.000479"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:55.863647" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:39:55.863339" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:39:55.863718" elapsed="0.000156"/>
</return>
<msg time="2026-04-19T02:39:55.864015" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T02:39:55.862311" elapsed="0.001749"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:39:55.865026" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:39:55.864650" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:55.865528" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:39:55.865228" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:39:55.865598" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:39:55.865750" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T02:39:55.864273" elapsed="0.001502"/>
</kw>
<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-19T02:39:55.867271" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:39:55.866881" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:55.867753" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:39:55.867455" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:39:55.867823" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:39:55.867974" level="INFO">${index_list} = [1, 2, 3]</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-19T02:39:55.866512" elapsed="0.001486"/>
</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-19T02:39:55.869072" level="INFO">${member_ip} = 10.30.171.9</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-19T02:39:55.868783" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:55.869902" 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-19T02:39:55.870004" 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-19T02:39:55.869724" elapsed="0.000320"/>
</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-19T02:39:55.872812" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:55.872534" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:55.872363" elapsed="0.000530"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:55.873192" 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-19T02:39:55.873293" 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-19T02:39:55.873060" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:55.873973" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:55.873474" elapsed="0.000549"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:55.874625" 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-19T02:39:55.874203" elapsed="0.000448"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:39:55.875914" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:39:55.876064" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:39:55.875323" elapsed="0.000768"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:55.876286" elapsed="0.000736"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:39:55.879497" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:39:56.171074" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:39:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:39:55.878847" elapsed="0.292456"/>
</kw>
<msg time="2026-04-19T02:39:56.171440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:55.877327" elapsed="0.294301"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:39:55.874871" elapsed="0.296944"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:39:56.172384" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:39:56.519611" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:39:56.519974" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:39:56.520126" 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-19T02:39:56.172088" elapsed="0.348095"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:56.520656" elapsed="0.000544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:56.522422" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:56.521633" elapsed="0.000889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:56.523130" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:56.522698" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:56.522647" elapsed="0.000711"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:39:56.523796" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T02:39:56.523533" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:56.523482" elapsed="0.000515"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:56.524110" 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-19T02:39:56.543434" 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-19T02:39:56.544506" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:56.544830" 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-19T02:39:56.524812" elapsed="0.020183"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:39:55.871833" elapsed="0.673283"/>
</kw>
<msg time="2026-04-19T02:39:56.545174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:55.871256" elapsed="0.673976"/>
</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-19T02:39:55.870710" elapsed="0.674602"/>
</kw>
<msg time="2026-04-19T02:39:56.545354" 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-19T02:39:55.870203" elapsed="0.675197"/>
</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-19T02:39:56.548706" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:39:56.549214" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:56.549509" 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-19T02:39:56.545693" elapsed="0.003962"/>
</kw>
<msg time="2026-04-19T02:39:56.549748" 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-19T02:39:55.869313" elapsed="0.680520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:56.550303" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:56.550020" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:39:56.550391" 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-19T02:39:55.868382" elapsed="0.682135"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:39:55.868204" elapsed="0.682350"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:56.551763" level="INFO">${member_ip} = 10.30.171.128</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-19T02:39:56.551487" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:56.552848" 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-19T02:39:56.552949" 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-19T02:39:56.552707" elapsed="0.000276"/>
</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-19T02:39:56.555954" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:56.555669" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:56.555648" elapsed="0.000406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:56.556340" 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-19T02:39:56.556441" 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-19T02:39:56.556208" elapsed="0.000259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:56.557170" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:56.556619" elapsed="0.000598"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:56.557801" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:39:56.557378" elapsed="0.000449"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:39:56.559134" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:39:56.559271" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:39:56.558521" elapsed="0.000775"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:56.559487" elapsed="0.000926"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:39:56.563022" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:39:56.876919" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.02               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:39:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:39:56.562420" elapsed="0.314716"/>
</kw>
<msg time="2026-04-19T02:39:56.877288" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:56.560656" elapsed="0.316814"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:39:56.558067" elapsed="0.319579"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:39:56.878135" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:39:57.276881" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:39:57.277425" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:39:57.277526" 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-19T02:39:56.877865" elapsed="0.399714"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:57.278070" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:57.279797" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:57.279068" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:57.280425" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:57.280117" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:57.280017" 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-19T02:39:57.280941" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T02:39:57.280707" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:57.280673" elapsed="0.000511"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:57.281259" 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-19T02:39:57.301543" elapsed="0.000887"/>
</kw>
<kw name="Open 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-19T02:39:57.302657" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:57.302989" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:57.281970" elapsed="0.021197"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:39:56.555126" elapsed="0.748137"/>
</kw>
<msg time="2026-04-19T02:39:57.303319" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:56.554499" elapsed="0.748878"/>
</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-19T02:39:56.553690" elapsed="0.749777"/>
</kw>
<msg time="2026-04-19T02:39:57.303510" 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-19T02:39:56.553172" elapsed="0.750385"/>
</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-19T02:39:57.306890" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:39:57.307394" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:57.307711" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:57.303857" elapsed="0.004006"/>
</kw>
<msg time="2026-04-19T02:39:57.307958" 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-19T02:39:56.552008" elapsed="0.755976"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:57.308445" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:57.308190" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:39:57.308538" elapsed="0.000037"/>
</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-19T02:39:56.550855" elapsed="0.757821"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:39:56.550651" elapsed="0.758064"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:57.309734" level="INFO">${member_ip} = 10.30.171.206</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-19T02:39:57.309449" elapsed="0.000311"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:57.310867" 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-19T02:39:57.310970" 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-19T02:39:57.310723" elapsed="0.000273"/>
</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-19T02:39:57.314000" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:57.313725" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:57.313705" elapsed="0.000401"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:57.314387" 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-19T02:39:57.314489" 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-19T02:39:57.314257" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:57.315216" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:57.314705" elapsed="0.000559"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:57.315863" 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-19T02:39:57.315424" elapsed="0.000467"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:39:57.317188" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:39:57.317343" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:39:57.316572" elapsed="0.000797"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:57.317564" elapsed="0.000876"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:39:57.320883" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:39:57.638789" 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 Sun Apr 19 02:39:04 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:39:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:39:57.320260" elapsed="0.318858"/>
</kw>
<msg time="2026-04-19T02:39:57.639287" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:57.318724" elapsed="0.320791"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:39:57.316128" elapsed="0.323629"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:39:57.640322" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:39:58.017512" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T02:39:58.017861" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:39:58.017964" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:39:57.640022" elapsed="0.377997"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:58.018592" elapsed="0.000609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.020432" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:58.019643" 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-19T02:39:58.021079" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:58.020723" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:58.020669" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:39:58.021638" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:39:58.021392" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:58.021356" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:58.021919" 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-19T02:39:58.042475" elapsed="0.000832"/>
</kw>
<kw name="Open 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-19T02:39:58.043482" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:58.043874" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:58.022701" elapsed="0.021346"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:39:57.313183" elapsed="0.730960"/>
</kw>
<msg time="2026-04-19T02:39:58.044200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:57.312500" elapsed="0.731759"/>
</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-19T02:39:57.311938" elapsed="0.732400"/>
</kw>
<msg time="2026-04-19T02:39:58.044378" 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-19T02:39:57.311170" elapsed="0.733253"/>
</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-19T02:39:58.047773" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:39:58.048304" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:58.048593" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:58.044724" elapsed="0.004017"/>
</kw>
<msg time="2026-04-19T02:39:58.048831" 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-19T02:39:57.309979" elapsed="0.738877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.049317" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:58.049066" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:39:58.049402" 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-19T02:39:57.309005" elapsed="0.740522"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:39:57.308817" elapsed="0.740746"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:39:55.868068" elapsed="2.181530"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:39:55.865992" elapsed="2.183665"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.050144" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:39:58.049815" elapsed="0.000355"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:39:58.050324" elapsed="0.000222"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:39:58.050728" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:58.050621" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:58.050602" elapsed="0.000191"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.052821" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:39:58.052529" elapsed="0.000319"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:39:58.053965" level="INFO">${member_ip} = 10.30.171.9</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-19T02:39:58.053694" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:58.054767" 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-19T02:39:58.054867" 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-19T02:39:58.054634" elapsed="0.000259"/>
</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-19T02:39:58.058941" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:39:58.058488" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:58.058430" elapsed="0.000769"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:58.060837" 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-19T02:39:58.061117" 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-19T02:39:58.060350" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.062904" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:58.062350" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:39:58.065244" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:39:58.064474" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.068402" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:39:58.068479" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:39:58.067984" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:58.068720" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:39:58.070149" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:39:58.379878" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:39:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:39:58.069811" elapsed="0.310183"/>
</kw>
<msg time="2026-04-19T02:39:58.380091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:58.069295" elapsed="0.310875"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:39:58.067164" elapsed="0.313294"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:39:58.382143" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:39:58.404637" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:39:58.405235" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:39:58.405620" 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-19T02:39:58.381722" elapsed="0.024140"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:58.408394" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.410551" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:58.409884" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:58.411411" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:39:58.410959" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:58.410871" elapsed="0.000741"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:39:58.412157" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:39:58.411836" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T02:39:58.411760" elapsed="0.000637"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:39:58.412520" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:58.420010" 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-19T02:39:58.420676" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:58.421049" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:58.414669" elapsed="0.006603"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:39:58.056793" elapsed="0.364730"/>
</kw>
<msg time="2026-04-19T02:39:58.421940" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:39:58.056130" elapsed="0.365868"/>
</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-19T02:39:58.055582" elapsed="0.366528"/>
</kw>
<msg time="2026-04-19T02:39:58.422156" 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-19T02:39:58.055078" elapsed="0.367125"/>
</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-19T02:39:58.425234" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:39:58.425708" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:39:58.425998" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:39:58.422495" elapsed="0.003680"/>
</kw>
<msg time="2026-04-19T02:39:58.426268" level="INFO">${output} = 1</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-19T02:39:58.054226" elapsed="0.372068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.426718" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:39:58.426472" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:39:58.426804" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:39:58.426954" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:39:58.053286" elapsed="0.373693"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:39:58.427146" elapsed="0.000059"/>
</return>
<msg time="2026-04-19T02:39:58.427330" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:39:58.052188" elapsed="0.375166"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:39:58.427901" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:39:58.427511" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:39:58.051753" elapsed="0.376349">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:00.431892" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:00.431133" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:00.434018" level="INFO">${member_ip} = 10.30.171.9</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-19T02:40:00.433419" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:00.435933" 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-19T02:40:00.436197" 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-19T02:40:00.435596" elapsed="0.000687"/>
</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-19T02:40:00.443864" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:00.443283" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:00.442975" elapsed="0.001047"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:00.445764" 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-19T02:40:00.446069" 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-19T02:40:00.445257" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:00.447915" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:00.447347" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:00.450305" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:00.449320" elapsed="0.001099"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:00.452968" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:00.453079" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:00.452686" 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-19T02:40:00.453325" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:00.454871" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:00.787862" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:39:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:40:00.454547" elapsed="0.333450"/>
</kw>
<msg time="2026-04-19T02:40:00.788094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:00.453890" elapsed="0.334287"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:00.451813" elapsed="0.336697"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:00.790206" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:00.812762" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:00.813018" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:00.813220" 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-19T02:40:00.789774" elapsed="0.023559"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:00.814504" elapsed="0.000447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:00.816097" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:00.815615" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:00.816701" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:00.816405" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:00.816339" elapsed="0.000511"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:00.817265" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T02:40:00.817015" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:00.816960" elapsed="0.000477"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:00.817529" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:00.822675" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:40:00.823245" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:00.823608" 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-19T02:40:00.819096" elapsed="0.004731"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:00.440829" elapsed="0.383265"/>
</kw>
<msg time="2026-04-19T02:40:00.824602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:00.439125" elapsed="0.385534"/>
</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-19T02:40:00.437797" elapsed="0.386946"/>
</kw>
<msg time="2026-04-19T02:40:00.824785" 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-19T02:40:00.436643" elapsed="0.388188"/>
</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-19T02:40:00.828141" 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-19T02:40:00.828652" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:00.828948" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:00.825229" elapsed="0.003892"/>
</kw>
<msg time="2026-04-19T02:40:00.829212" level="INFO">${output} = 1</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-19T02:40:00.434588" elapsed="0.394650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:00.829661" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:00.829415" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:00.829748" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:00.829900" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:00.432476" elapsed="0.397449"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:00.829971" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:40:00.830171" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:00.430273" elapsed="0.399924"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:00.830745" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:00.830352" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:00.429222" elapsed="0.401715">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:02.834546" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:02.833772" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:02.836654" level="INFO">${member_ip} = 10.30.171.9</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-19T02:40:02.836015" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:02.838550" 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-19T02:40:02.838778" 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-19T02:40:02.838219" elapsed="0.000619"/>
</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-19T02:40:02.844796" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:02.844320" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:02.844009" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:02.846383" 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-19T02:40:02.846624" 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-19T02:40:02.845925" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:02.848249" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:02.847686" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:02.850107" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:02.849379" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:02.852449" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:02.852527" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:02.852162" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:02.852764" elapsed="0.000428"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:02.854217" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:03.178384" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.01               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:40:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:40:02.853869" elapsed="0.324662"/>
</kw>
<msg time="2026-04-19T02:40:03.178618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:02.853498" elapsed="0.325207"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:02.851384" elapsed="0.327604"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.180500" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:03.202860" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:03.203444" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T02:40:03.203781" 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-19T02:40:03.180097" elapsed="0.023896"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:03.206458" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.210443" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:03.208929" elapsed="0.001666"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:03.211214" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:03.210826" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:03.210744" elapsed="0.000660"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:03.211885" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:40:03.211602" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:03.211536" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:03.212242" elapsed="0.000051"/>
</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-19T02:40:03.222697" 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-19T02:40:03.223285" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:03.223662" 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-19T02:40:03.214087" elapsed="0.009788"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:02.842715" elapsed="0.381406"/>
</kw>
<msg time="2026-04-19T02:40:03.224442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:02.841658" elapsed="0.382846"/>
</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-19T02:40:02.840387" elapsed="0.384200"/>
</kw>
<msg time="2026-04-19T02:40:03.224629" 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-19T02:40:02.839220" elapsed="0.385455"/>
</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-19T02:40:03.227688" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:40:03.228203" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:03.228507" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:03.224971" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T02:40:03.228809" level="INFO">${output} = 0</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-19T02:40:02.837230" elapsed="0.391606"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.229293" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:03.229022" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:03.229381" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:03.229534" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:02.835099" elapsed="0.394460"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:03.229605" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:03.229767" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:02.832897" elapsed="0.396895"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T02:40:03.229948" elapsed="0.000373"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T02:40:02.831848" elapsed="0.398535"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:39:58.051196" elapsed="5.179231"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:39:58.051006" elapsed="5.179458"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.232369" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:03.232050" elapsed="0.000346"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:03.233308" level="INFO">${member_ip} = 10.30.171.128</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-19T02:40:03.233017" elapsed="0.000318"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.234136" 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-19T02:40:03.234239" 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-19T02:40:03.233981" elapsed="0.000285"/>
</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-19T02:40:03.238053" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:03.237578" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:03.237525" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.239858" 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-19T02:40:03.240144" 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-19T02:40:03.239236" elapsed="0.001016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.242296" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:03.241706" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.244348" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:03.243618" elapsed="0.000980"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.247082" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:03.247166" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:03.246745" 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-19T02:40:03.247406" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.248719" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:03.602719" 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 Sun Apr 19 02:39:03 UTC 2026

  System load:  0.02               Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:39:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:40:03.248389" elapsed="0.354554"/>
</kw>
<msg time="2026-04-19T02:40:03.603023" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:03.247987" elapsed="0.355167"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:03.245934" elapsed="0.357502"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.604909" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:03.627442" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:03.627948" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T02:40:03.628409" 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-19T02:40:03.604523" elapsed="0.024114"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:03.631161" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.634398" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:03.633339" 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-19T02:40:03.635576" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:03.635061" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:03.634903" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:03.636678" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:40:03.636226" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:03.636114" elapsed="0.001157"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:03.637460" elapsed="0.000086"/>
</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-19T02:40:03.645115" 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-19T02:40:03.645686" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:03.646095" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:03.640504" elapsed="0.005806"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:03.236203" elapsed="0.410331"/>
</kw>
<msg time="2026-04-19T02:40:03.646844" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:03.235502" elapsed="0.411404"/>
</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-19T02:40:03.234925" elapsed="0.412063"/>
</kw>
<msg time="2026-04-19T02:40:03.647043" 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-19T02:40:03.234423" elapsed="0.412667"/>
</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-19T02:40:03.650269" 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-19T02:40:03.650759" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:03.651069" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:03.647386" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T02:40:03.651313" level="INFO">${output} = 0</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-19T02:40:03.233551" elapsed="0.417788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.651792" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:03.651540" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:03.651883" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:40:03.652051" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:03.232608" elapsed="0.419470"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:03.652127" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:03.652274" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:03.231689" elapsed="0.420613"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T02:40:03.652526" elapsed="0.000360"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T02:40:03.231296" elapsed="0.421655"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:40:03.230717" elapsed="0.422282"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:40:03.230559" elapsed="0.422519"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.654946" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:03.654611" elapsed="0.000362"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:03.655864" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:03.655595" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.656801" 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-19T02:40:03.656904" 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-19T02:40:03.656628" elapsed="0.000303"/>
</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-19T02:40:03.660918" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:03.660483" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:03.660429" elapsed="0.000649"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.663078" 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-19T02:40:03.663330" 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-19T02:40:03.662309" elapsed="0.001158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.665222" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:03.664492" elapsed="0.000847"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.667238" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:03.666415" elapsed="0.000924"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:03.670263" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:03.670356" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:03.669839" 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-19T02:40:03.670618" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.672059" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:03.990191" 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 Sun Apr 19 02:39:04 UTC 2026

  System load:  0.01               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:39:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:03.671681" elapsed="0.318664"/>
</kw>
<msg time="2026-04-19T02:40:03.990431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:03.671297" elapsed="0.319229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:03.668882" elapsed="0.321930"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:03.992411" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:04.015339" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:04.015834" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:04.016215" 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-19T02:40:03.992000" elapsed="0.024427"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:04.018643" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:04.021781" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:04.020776" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:04.022943" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:04.022435" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:04.022310" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:04.024063" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:40:04.023589" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:04.023483" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:04.024587" elapsed="0.000084"/>
</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-19T02:40:04.030452" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:40:04.031000" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:04.031371" 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-19T02:40:04.026948" elapsed="0.004628"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:03.659082" elapsed="0.372714"/>
</kw>
<msg time="2026-04-19T02:40:04.032161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:03.658294" elapsed="0.373928"/>
</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-19T02:40:03.657688" elapsed="0.374622"/>
</kw>
<msg time="2026-04-19T02:40:04.032354" 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-19T02:40:03.657165" elapsed="0.375236"/>
</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-19T02:40:04.035558" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:40:04.036048" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:04.036345" 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-19T02:40:04.032700" elapsed="0.003791"/>
</kw>
<msg time="2026-04-19T02:40:04.036583" level="INFO">${output} = 1</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-19T02:40:03.656123" elapsed="0.380486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:04.037119" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:04.036786" elapsed="0.000380"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:04.037211" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:04.037365" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:03.655190" elapsed="0.382200"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:04.037437" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:04.037583" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:03.654267" elapsed="0.383340"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:04.038197" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:04.037766" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:03.653842" elapsed="0.384551">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:06.042380" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:06.041505" elapsed="0.000953"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:06.044653" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:06.044005" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:06.046570" 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-19T02:40:06.046802" 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-19T02:40:06.046225" elapsed="0.000636"/>
</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-19T02:40:06.052502" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:06.051888" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:06.051810" elapsed="0.000831"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:06.054368" 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-19T02:40:06.054621" 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-19T02:40:06.053646" elapsed="0.001076"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:06.056286" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:06.055731" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:06.058059" 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-19T02:40:06.057353" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:06.060671" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:06.060753" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:06.060286" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:06.060998" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:06.062356" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:06.679307" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:06.062007" elapsed="0.617579"/>
</kw>
<msg time="2026-04-19T02:40:06.679754" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:06.061626" elapsed="0.618279"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:06.059454" elapsed="0.621038"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:06.683597" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:06.696732" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:06.697279" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:06.697616" 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-19T02:40:06.682768" elapsed="0.015057"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:06.700183" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:06.703683" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:06.702601" elapsed="0.001460"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:06.704650" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:06.704404" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:06.704294" elapsed="0.000487"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:06.705150" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:40:06.704928" elapsed="0.000324"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:06.704880" elapsed="0.000431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:06.705390" 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-19T02:40:06.710377" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T02:40:06.711241" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:06.711774" 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-19T02:40:06.706742" elapsed="0.005340"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:06.049825" elapsed="0.662575"/>
</kw>
<msg time="2026-04-19T02:40:06.712795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:06.048838" elapsed="0.664035"/>
</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-19T02:40:06.048071" elapsed="0.664914"/>
</kw>
<msg time="2026-04-19T02:40:06.713064" 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-19T02:40:06.047304" elapsed="0.665825"/>
</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-19T02:40:06.717439" elapsed="0.000395"/>
</kw>
<kw name="Open 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-19T02:40:06.718067" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:06.718456" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:06.713529" elapsed="0.005126"/>
</kw>
<msg time="2026-04-19T02:40:06.718774" level="INFO">${output} = 1</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-19T02:40:06.045237" elapsed="0.673569"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:06.719484" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:06.719142" elapsed="0.000435"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:06.719643" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:40:06.719855" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:06.042949" elapsed="0.676940"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:06.719953" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:40:06.720145" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:06.040580" elapsed="0.679592"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:06.720737" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:06.720333" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:06.039286" elapsed="0.681646">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:08.724382" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:08.723620" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:08.726562" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:08.725898" elapsed="0.000725"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:08.728713" 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-19T02:40:08.728960" 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-19T02:40:08.728321" elapsed="0.000699"/>
</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-19T02:40:08.734773" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:08.734139" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:08.733745" elapsed="0.001221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:08.736964" 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-19T02:40:08.737335" 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-19T02:40:08.736332" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:08.738978" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:08.738438" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:08.740802" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:08.740078" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:08.743692" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:08.743772" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:08.743392" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:08.744008" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:08.745375" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:09.065754" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:08.745022" elapsed="0.320899"/>
</kw>
<msg time="2026-04-19T02:40:09.066013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:08.744651" elapsed="0.321474"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:08.742160" elapsed="0.324264"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:09.067973" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:09.090694" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:09.091244" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:09.091579" 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-19T02:40:09.067547" elapsed="0.024245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:09.094076" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:09.097420" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:09.096339" elapsed="0.001241"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:09.098181" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:09.097809" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:09.097726" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:09.098850" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:40:09.098570" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:09.098502" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:09.099205" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:09.105997" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:40:09.106566" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:09.106925" 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-19T02:40:09.101284" elapsed="0.005865"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:08.731885" elapsed="0.375488"/>
</kw>
<msg time="2026-04-19T02:40:09.107684" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:08.730923" elapsed="0.376818"/>
</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-19T02:40:08.730174" elapsed="0.377652"/>
</kw>
<msg time="2026-04-19T02:40:09.107868" 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-19T02:40:08.729416" elapsed="0.378499"/>
</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-19T02:40:09.111148" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:40:09.111659" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:09.111952" elapsed="0.000173"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:09.108298" elapsed="0.003880"/>
</kw>
<msg time="2026-04-19T02:40:09.112270" level="INFO">${output} = 1</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-19T02:40:08.727164" elapsed="0.385131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:09.112718" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:09.112470" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:09.112830" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:09.112982" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:08.724954" elapsed="0.388053"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:09.113070" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:40:09.113220" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:08.722780" elapsed="0.390464"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:09.113794" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:09.113399" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:08.721729" elapsed="0.392253">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:11.117364" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:11.116606" elapsed="0.000828"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:11.119628" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:11.118989" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:11.121471" 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-19T02:40:11.121703" 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-19T02:40:11.121141" elapsed="0.000622"/>
</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-19T02:40:11.128601" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:11.128059" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:11.127760" elapsed="0.000981"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:11.130182" 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-19T02:40:11.130424" 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-19T02:40:11.129717" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:11.132044" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:11.131495" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:11.133834" 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-19T02:40:11.133122" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:11.136252" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:11.136329" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:11.135906" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:11.136563" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:11.137842" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:11.455289" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:11.137496" elapsed="0.317922"/>
</kw>
<msg time="2026-04-19T02:40:11.455500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:11.137136" elapsed="0.318459"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:11.135161" elapsed="0.320696"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:11.457335" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:11.480105" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:11.480598" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:11.480938" 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-19T02:40:11.456932" elapsed="0.024253"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:11.483405" elapsed="0.001131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:11.486785" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:11.485786" elapsed="0.001226"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:11.487891" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:11.487397" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:11.487275" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:11.488984" elapsed="0.000337"/>
</return>
<status status="PASS" start="2026-04-19T02:40:11.488537" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:11.488430" elapsed="0.001127"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:11.489731" elapsed="0.000247"/>
</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-19T02:40:11.495047" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:40:11.495676" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:11.496057" 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-19T02:40:11.491626" elapsed="0.004645"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:11.126141" elapsed="0.370428"/>
</kw>
<msg time="2026-04-19T02:40:11.496884" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:11.124570" elapsed="0.372377"/>
</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-19T02:40:11.123348" elapsed="0.373742"/>
</kw>
<msg time="2026-04-19T02:40:11.497137" 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-19T02:40:11.122175" elapsed="0.375008"/>
</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-19T02:40:11.500181" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:40:11.500654" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:11.500948" elapsed="0.000204"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:11.497477" elapsed="0.003729"/>
</kw>
<msg time="2026-04-19T02:40:11.501298" level="INFO">${output} = 1</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-19T02:40:11.120205" elapsed="0.381118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:11.501764" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:11.501516" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:11.501850" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:11.501999" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:11.118015" elapsed="0.384054"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:11.502118" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:40:11.502265" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:11.115769" elapsed="0.386520"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:11.502842" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:11.502446" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:11.114726" elapsed="0.388320">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:13.506560" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:13.505781" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:13.508339" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:13.507931" elapsed="0.000448"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:13.509531" 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-19T02:40:13.509675" 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-19T02:40:13.509308" elapsed="0.000405"/>
</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-19T02:40:13.515522" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:13.514802" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:13.514420" elapsed="0.001291"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:13.517366" 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-19T02:40:13.517618" 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-19T02:40:13.516700" elapsed="0.001085"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:13.519518" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:13.518914" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:13.521354" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:13.520612" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:13.523807" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:13.523887" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:13.523517" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:13.524141" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:13.525448" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:13.834790" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:13.525112" elapsed="0.309831"/>
</kw>
<msg time="2026-04-19T02:40:13.835047" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:13.524711" elapsed="0.310429"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:13.522659" elapsed="0.312795"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:13.836977" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:13.859840" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:13.860394" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:13.860726" 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-19T02:40:13.836586" elapsed="0.024348"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:13.863195" elapsed="0.000864"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:13.865476" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:13.864841" 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-19T02:40:13.866230" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:13.865853" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:13.865772" elapsed="0.000641"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:13.866895" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:40:13.866616" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:13.866546" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:13.867271" elapsed="0.000055"/>
</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-19T02:40:13.876175" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:40:13.876750" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:13.877136" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:13.869204" elapsed="0.008145"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:13.512502" elapsed="0.365070"/>
</kw>
<msg time="2026-04-19T02:40:13.877884" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:13.511539" elapsed="0.366403"/>
</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-19T02:40:13.510704" elapsed="0.367396"/>
</kw>
<msg time="2026-04-19T02:40:13.878142" 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-19T02:40:13.509935" elapsed="0.368254"/>
</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-19T02:40:13.881355" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:40:13.881833" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:13.882144" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:13.878484" elapsed="0.003810"/>
</kw>
<msg time="2026-04-19T02:40:13.882383" level="INFO">${output} = 1</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-19T02:40:13.508682" elapsed="0.373726"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:13.882856" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:13.882605" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:13.882943" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:13.883110" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:13.507188" elapsed="0.375946"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:13.883180" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:13.883346" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:13.504906" elapsed="0.378464"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:13.883910" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:13.883524" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:13.503839" elapsed="0.380269">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:15.887639" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:15.886861" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:15.890474" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:15.889602" elapsed="0.000962"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:15.892790" 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-19T02:40:15.892907" 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-19T02:40:15.892466" elapsed="0.000468"/>
</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-19T02:40:15.896919" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:15.896449" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:15.896392" elapsed="0.000686"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:15.898754" 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-19T02:40:15.899002" 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-19T02:40:15.898072" elapsed="0.001050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:15.901064" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:15.900268" elapsed="0.000940"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:15.902958" 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-19T02:40:15.902221" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:15.905699" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:15.905781" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:15.905340" elapsed="0.000466"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:15.906020" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:15.907386" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:16.272729" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:15.907057" elapsed="0.365824"/>
</kw>
<msg time="2026-04-19T02:40:16.272968" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:15.906655" elapsed="0.366423"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:15.904547" elapsed="0.368820"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:16.274868" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:16.297687" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:16.298239" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:16.298571" 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-19T02:40:16.274475" elapsed="0.024308"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:16.301103" elapsed="0.000830"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:16.303385" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:16.302739" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:16.304132" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:16.303756" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:16.303674" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:16.304818" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:40:16.304533" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:16.304455" elapsed="0.000606"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:16.305176" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:16.311109" 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-19T02:40:16.311654" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:16.312018" elapsed="0.000233"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:16.307020" elapsed="0.005340"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:15.895047" elapsed="0.417563"/>
</kw>
<msg time="2026-04-19T02:40:16.312920" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:15.894185" elapsed="0.418792"/>
</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-19T02:40:15.893629" elapsed="0.419445"/>
</kw>
<msg time="2026-04-19T02:40:16.313117" 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-19T02:40:15.893110" elapsed="0.420054"/>
</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-19T02:40:16.316328" 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-19T02:40:16.316892" elapsed="0.000307"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:16.317353" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:16.313454" elapsed="0.004051"/>
</kw>
<msg time="2026-04-19T02:40:16.317597" level="INFO">${output} = 1</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-19T02:40:15.891307" elapsed="0.426316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:16.318064" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:16.317802" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:16.318154" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:16.318313" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:15.888273" elapsed="0.430065"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:16.318385" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:40:16.318528" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:15.885967" elapsed="0.432586"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:16.319133" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:16.318709" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:15.884909" elapsed="0.434412">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:18.322857" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:18.322119" elapsed="0.000811"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:18.324975" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:18.324369" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:18.326891" 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-19T02:40:18.327151" 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-19T02:40:18.326563" elapsed="0.000649"/>
</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-19T02:40:18.332688" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:18.332213" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:18.332157" elapsed="0.000668"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:18.334526" 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-19T02:40:18.334776" 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-19T02:40:18.333830" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:18.336435" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:18.335864" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:18.338268" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:18.337544" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:18.340791" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:18.340869" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:18.340507" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:18.341136" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:18.342421" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:18.663728" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:18.342093" elapsed="0.321772"/>
</kw>
<msg time="2026-04-19T02:40:18.663948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:18.341716" elapsed="0.322340"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:18.339730" elapsed="0.324595"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:18.665834" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:18.688868" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:18.689461" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:18.689860" 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-19T02:40:18.665404" elapsed="0.024720"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:18.692326" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:18.695295" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:18.694532" elapsed="0.000909"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:18.695987" elapsed="0.000132"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:18.695666" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:18.695585" 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-19T02:40:18.696752" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:40:18.696469" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:18.696402" elapsed="0.000569"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:18.697105" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:18.703634" 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-19T02:40:18.704216" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:18.704571" 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-19T02:40:18.699022" elapsed="0.005756"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:18.330802" elapsed="0.374198"/>
</kw>
<msg time="2026-04-19T02:40:18.705327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:18.330095" elapsed="0.375289"/>
</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-19T02:40:18.328778" elapsed="0.376688"/>
</kw>
<msg time="2026-04-19T02:40:18.705506" 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-19T02:40:18.327573" elapsed="0.377978"/>
</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-19T02:40:18.708657" 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-19T02:40:18.709151" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:18.709505" 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-19T02:40:18.705879" elapsed="0.003781"/>
</kw>
<msg time="2026-04-19T02:40:18.709757" level="INFO">${output} = 1</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-19T02:40:18.325561" elapsed="0.384244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:18.710351" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:18.710091" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:18.710441" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:18.710596" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:18.323421" elapsed="0.387201"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:18.710669" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:40:18.710819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:18.321233" elapsed="0.389612"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:18.711429" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:18.711006" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:18.320166" elapsed="0.391456">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:20.715424" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:20.714590" elapsed="0.000905"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:20.717528" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:20.716892" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:20.719425" 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-19T02:40:20.719653" 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-19T02:40:20.719081" elapsed="0.000631"/>
</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-19T02:40:20.723676" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:20.723211" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:20.723156" elapsed="0.000658"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:20.725528" 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-19T02:40:20.725773" 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-19T02:40:20.724786" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:20.727624" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:20.727087" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:20.729597" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:20.728886" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:20.732055" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:20.732284" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:20.731752" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:20.732518" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:20.733813" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:21.048197" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:20.733447" elapsed="0.314995"/>
</kw>
<msg time="2026-04-19T02:40:21.048528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:20.733086" elapsed="0.315531"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:20.730902" elapsed="0.317991"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:21.050411" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:21.073186" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:21.073681" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:21.074010" 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-19T02:40:21.050000" elapsed="0.024263"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:21.076499" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:21.079709" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:21.078633" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:21.080509" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:21.080168" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:21.080084" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:21.081322" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:40:21.080910" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:21.080839" elapsed="0.000714"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:21.081666" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:21.088399" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:40:21.088945" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:21.089345" 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-19T02:40:21.083621" elapsed="0.005931"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:20.721815" elapsed="0.367961"/>
</kw>
<msg time="2026-04-19T02:40:21.090099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:20.721129" elapsed="0.369028"/>
</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-19T02:40:20.720581" elapsed="0.369659"/>
</kw>
<msg time="2026-04-19T02:40:21.090280" 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-19T02:40:20.720061" elapsed="0.370266"/>
</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-19T02:40:21.093468" 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-19T02:40:21.093945" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:21.094259" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:21.090616" elapsed="0.003790"/>
</kw>
<msg time="2026-04-19T02:40:21.094508" level="INFO">${output} = 1</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-19T02:40:20.718101" elapsed="0.376434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:21.094973" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:21.094715" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:21.095111" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:40:21.095293" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:20.715956" elapsed="0.379364"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:21.095369" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:40:21.095518" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:20.713741" elapsed="0.381802"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:21.096182" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:21.095752" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:20.712664" elapsed="0.383710">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:23.099817" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:23.099083" elapsed="0.000804"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:23.101982" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:23.101380" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:23.103733" 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-19T02:40:23.103876" 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-19T02:40:23.103513" elapsed="0.000400"/>
</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-19T02:40:23.109714" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:23.108754" elapsed="0.001080"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:23.108679" elapsed="0.001238"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:23.111931" 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-19T02:40:23.112346" 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-19T02:40:23.111318" elapsed="0.001167"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:23.114238" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:23.113682" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:23.116262" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:23.115338" elapsed="0.001023"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:23.118638" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:23.118716" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:23.118355" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:23.118953" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:23.120383" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:23.431966" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:23.119888" elapsed="0.312182"/>
</kw>
<msg time="2026-04-19T02:40:23.432136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:23.119526" elapsed="0.312683"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:23.117561" elapsed="0.314891"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:23.433788" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:23.456887" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:23.457426" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:23.457760" 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-19T02:40:23.433461" elapsed="0.024512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:23.460207" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:23.463356" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:23.462372" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:23.464453" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:23.463922" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:23.463801" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:23.465530" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T02:40:23.465087" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:23.464951" elapsed="0.000961"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:23.466119" elapsed="0.000087"/>
</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-19T02:40:23.472534" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:40:23.473085" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:23.473435" 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-19T02:40:23.469204" elapsed="0.004435"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:23.106616" elapsed="0.367243"/>
</kw>
<msg time="2026-04-19T02:40:23.474183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:23.105656" elapsed="0.368584"/>
</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-19T02:40:23.104885" elapsed="0.369437"/>
</kw>
<msg time="2026-04-19T02:40:23.474362" 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-19T02:40:23.104168" elapsed="0.370239"/>
</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-19T02:40:23.477429" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T02:40:23.477901" elapsed="0.000550"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:23.478838" elapsed="0.000266"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:23.474692" elapsed="0.004531"/>
</kw>
<msg time="2026-04-19T02:40:23.479426" level="INFO">${output} = 1</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-19T02:40:23.102557" elapsed="0.376926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:23.480563" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:23.479870" elapsed="0.000796"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:23.480762" elapsed="0.000065"/>
</return>
<msg time="2026-04-19T02:40:23.481284" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:23.100388" elapsed="0.380955"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:23.481445" elapsed="0.000057"/>
</return>
<msg time="2026-04-19T02:40:23.481766" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:23.098236" elapsed="0.383583"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:23.483067" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:23.482196" elapsed="0.001022">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:23.097192" elapsed="0.386261">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:25.488318" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:25.487283" elapsed="0.001127"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:25.490928" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:25.490405" elapsed="0.000573"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:25.492571" 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-19T02:40:25.492771" 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-19T02:40:25.492281" elapsed="0.000545"/>
</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-19T02:40:25.498409" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:25.497572" elapsed="0.000916"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:25.497489" elapsed="0.001058"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:25.499963" 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-19T02:40:25.500222" 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-19T02:40:25.499529" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:25.501855" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:25.501300" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:25.503641" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:25.502938" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:25.506101" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:25.506182" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:25.505804" 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-19T02:40:25.506415" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:25.507670" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:25.822845" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:25.507347" elapsed="0.315627"/>
</kw>
<msg time="2026-04-19T02:40:25.823068" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:25.506967" elapsed="0.316186"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:25.504930" elapsed="0.318487"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:25.824880" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:25.847082" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:25.847582" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:25.847912" 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-19T02:40:25.824496" elapsed="0.023668"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:25.850310" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:25.852296" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:25.851670" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:25.853089" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:25.852667" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:25.852586" elapsed="0.000698"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:25.853802" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:40:25.853489" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:25.853422" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:25.854165" elapsed="0.000055"/>
</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-19T02:40:25.859992" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T02:40:25.860680" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:25.861076" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:25.856005" elapsed="0.005289"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:25.495595" elapsed="0.365920"/>
</kw>
<msg time="2026-04-19T02:40:25.861843" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:25.494655" elapsed="0.367246"/>
</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-19T02:40:25.493883" elapsed="0.368099"/>
</kw>
<msg time="2026-04-19T02:40:25.862022" 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-19T02:40:25.493115" elapsed="0.368971"/>
</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-19T02:40:25.865133" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:40:25.865612" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:25.865939" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:25.862376" elapsed="0.003732"/>
</kw>
<msg time="2026-04-19T02:40:25.866200" level="INFO">${output} = 1</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-19T02:40:25.491440" elapsed="0.374786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:25.866655" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:25.866405" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:25.866743" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:25.866896" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:25.489257" elapsed="0.377665"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:25.866970" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:25.867176" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:25.486004" elapsed="0.381197"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:25.867746" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:25.867358" elapsed="0.000460">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:25.484498" elapsed="0.383428">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:27.871561" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:27.870748" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:27.873702" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:27.873101" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:27.875546" 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-19T02:40:27.875979" 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-19T02:40:27.875207" elapsed="0.000864"/>
</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-19T02:40:27.880970" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:27.880492" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:27.879996" elapsed="0.001143"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:27.882784" 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-19T02:40:27.883020" 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-19T02:40:27.882343" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:27.884693" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:27.884116" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:27.886553" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:27.885840" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:27.889358" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:27.889445" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:27.888994" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:27.889715" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:27.891352" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:28.212397" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:27.890812" elapsed="0.321705"/>
</kw>
<msg time="2026-04-19T02:40:28.212593" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:27.890393" elapsed="0.322282"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:27.888113" elapsed="0.324816"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:28.214390" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:28.236972" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:28.237691" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:28.238058" 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-19T02:40:28.214007" elapsed="0.024270"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:28.240500" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:28.243730" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:28.242727" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:28.244974" elapsed="0.000092"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:28.244482" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:28.244217" elapsed="0.001122"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:28.246150" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:40:28.245670" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:28.245563" elapsed="0.000771"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:28.246413" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:28.252901" 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-19T02:40:28.253540" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:28.253894" 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-19T02:40:28.247885" elapsed="0.006231"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:27.878659" elapsed="0.375681"/>
</kw>
<msg time="2026-04-19T02:40:28.254649" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:27.877955" elapsed="0.376750"/>
</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-19T02:40:27.877422" elapsed="0.377363"/>
</kw>
<msg time="2026-04-19T02:40:28.254826" 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-19T02:40:27.876554" elapsed="0.378317"/>
</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-19T02:40:28.257932" 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-19T02:40:28.258426" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:28.258723" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:28.255252" elapsed="0.003620"/>
</kw>
<msg time="2026-04-19T02:40:28.258961" level="INFO">${output} = 1</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-19T02:40:27.874262" elapsed="0.384724"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:28.259483" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:28.259234" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:28.259570" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:28.259722" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:27.872146" elapsed="0.387602"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:28.259794" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:40:28.259936" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:27.869909" elapsed="0.390052"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:28.260519" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:28.260132" elapsed="0.000458">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:27.868829" elapsed="0.391867">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:30.264270" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:30.263458" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:30.266397" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:30.265760" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:30.268611" 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-19T02:40:30.268756" 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-19T02:40:30.268355" elapsed="0.000437"/>
</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-19T02:40:30.274330" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:30.273650" elapsed="0.000904"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:30.273567" elapsed="0.001079"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:30.276855" 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-19T02:40:30.277149" 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-19T02:40:30.276139" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:30.278802" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:30.278248" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:30.280718" 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-19T02:40:30.279948" elapsed="0.000873"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:30.283266" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:30.283348" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:30.282886" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:30.283588" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:30.284845" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:30.604073" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:30.284519" elapsed="0.319685"/>
</kw>
<msg time="2026-04-19T02:40:30.604283" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:30.284159" elapsed="0.320207"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:30.282103" elapsed="0.322519"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:30.606088" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:30.629178" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:30.629689" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:30.630023" 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-19T02:40:30.605693" elapsed="0.024586"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:30.632648" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:30.635948" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:30.634948" elapsed="0.001307"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:30.637127" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:30.636602" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:30.636481" elapsed="0.000820"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:30.637643" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T02:40:30.637443" elapsed="0.000299"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:30.637396" elapsed="0.000404"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:30.637877" 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-19T02:40:30.642613" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:40:30.643239" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:30.643597" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:30.639255" elapsed="0.004551"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:30.271554" elapsed="0.372509"/>
</kw>
<msg time="2026-04-19T02:40:30.644471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:30.270516" elapsed="0.374014"/>
</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-19T02:40:30.269760" elapsed="0.374853"/>
</kw>
<msg time="2026-04-19T02:40:30.644654" 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-19T02:40:30.269016" elapsed="0.375685"/>
</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-19T02:40:30.647788" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:40:30.648289" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:30.648585" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:30.644996" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T02:40:30.648830" level="INFO">${output} = 1</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-19T02:40:30.266948" elapsed="0.381908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:30.649302" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:30.649054" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:30.649389" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:30.649649" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:30.264812" elapsed="0.384864"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:30.649725" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:40:30.649872" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:30.262574" elapsed="0.387323"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:30.650464" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:30.650072" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:30.261513" elapsed="0.389134">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:32.654133" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:32.653348" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:32.656339" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:32.655702" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:32.658202" 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-19T02:40:32.658465" 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-19T02:40:32.657848" elapsed="0.000679"/>
</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-19T02:40:32.664968" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:32.664345" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:32.664269" elapsed="0.000949"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:32.667227" 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-19T02:40:32.667474" 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-19T02:40:32.666541" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:32.669101" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:32.668541" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:32.670956" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:32.670263" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:32.673393" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:32.673471" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:32.673079" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:32.673707" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:32.674965" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:32.980271" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:32.674640" elapsed="0.305778"/>
</kw>
<msg time="2026-04-19T02:40:32.980500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:32.674280" elapsed="0.306304"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:32.672312" elapsed="0.308550"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:32.982396" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:33.005529" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:33.006281" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:33.006643" 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-19T02:40:32.981970" elapsed="0.024898"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:33.009356" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:33.011931" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:33.011268" elapsed="0.000839"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:33.012687" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:33.012349" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:33.012265" elapsed="0.000616"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:33.013411" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:40:33.013115" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:33.013022" elapsed="0.000628"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:33.013767" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:33.020073" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:40:33.020623" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:33.020982" 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-19T02:40:33.015840" elapsed="0.005368"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:32.662403" elapsed="0.359029"/>
</kw>
<msg time="2026-04-19T02:40:33.021739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:32.661437" elapsed="0.360363"/>
</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-19T02:40:32.660153" elapsed="0.361731"/>
</kw>
<msg time="2026-04-19T02:40:33.021926" 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-19T02:40:32.658877" elapsed="0.363117"/>
</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-19T02:40:33.025217" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:40:33.025696" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:33.026019" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:33.022378" elapsed="0.003812"/>
</kw>
<msg time="2026-04-19T02:40:33.026283" level="INFO">${output} = 1</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-19T02:40:32.656880" elapsed="0.369430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:33.026747" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:33.026495" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:33.026835" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:33.026987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:32.654685" elapsed="0.372328"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:33.027122" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:40:33.027272" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:32.652453" elapsed="0.374847"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:33.027863" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:33.027462" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:32.651416" elapsed="0.376646">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:35.031678" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:35.030873" elapsed="0.000876"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:35.033920" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:35.033289" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:35.035882" 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-19T02:40:35.036152" 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-19T02:40:35.035543" elapsed="0.000673"/>
</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-19T02:40:35.041994" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:35.041527" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:35.041471" elapsed="0.000681"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:35.043842" 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-19T02:40:35.044108" 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-19T02:40:35.043161" elapsed="0.001049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:35.045741" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:35.045196" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:35.047604" 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-19T02:40:35.046892" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:35.049978" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:35.050161" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:35.049695" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:35.050400" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:35.051745" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:35.364430" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:35.051419" elapsed="0.313148"/>
</kw>
<msg time="2026-04-19T02:40:35.364648" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:35.051052" elapsed="0.313678"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:35.048916" elapsed="0.316078"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:35.366607" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:35.389205" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:35.389709" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:35.390082" 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-19T02:40:35.366182" elapsed="0.024117"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:35.392660" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:35.395967" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:35.394909" elapsed="0.001421"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:35.396902" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:35.396578" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:35.396498" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:35.397590" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:40:35.397312" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:35.397243" elapsed="0.000567"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:35.397920" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:35.404802" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:40:35.405370" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:35.405730" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:35.399801" elapsed="0.006139"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:35.040140" elapsed="0.366043"/>
</kw>
<msg time="2026-04-19T02:40:35.406500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:35.039397" elapsed="0.367164"/>
</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-19T02:40:35.037845" elapsed="0.368800"/>
</kw>
<msg time="2026-04-19T02:40:35.406686" 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-19T02:40:35.036596" elapsed="0.370137"/>
</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-19T02:40:35.409761" 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-19T02:40:35.410256" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:35.410555" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:35.407052" elapsed="0.003651"/>
</kw>
<msg time="2026-04-19T02:40:35.410859" level="INFO">${output} = 1</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-19T02:40:35.034554" elapsed="0.376331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:35.411366" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:35.411092" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:35.411455" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:35.411608" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:35.032259" elapsed="0.379374"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:35.411680" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:35.411826" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:35.029955" elapsed="0.381896"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:35.412484" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:35.412007" elapsed="0.000550">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:35.028829" elapsed="0.383837">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:37.416306" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:37.415536" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:37.418417" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:37.417780" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:37.420307" 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-19T02:40:37.420498" 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-19T02:40:37.419948" elapsed="0.000587"/>
</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-19T02:40:37.425782" elapsed="0.000382"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:37.425159" elapsed="0.001069"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:37.425071" elapsed="0.001239"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:37.428327" 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-19T02:40:37.428650" 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-19T02:40:37.427696" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:37.430298" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:37.429744" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:37.432119" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:37.431410" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:37.434506" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:37.434583" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:37.434226" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:37.434814" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:37.436138" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:37.734814" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:37.435767" elapsed="0.299293"/>
</kw>
<msg time="2026-04-19T02:40:37.735146" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:37.435406" elapsed="0.299824"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:37.433452" elapsed="0.302048"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:37.736986" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:37.759582" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:37.760171" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:37.760516" 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-19T02:40:37.736601" elapsed="0.024124"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:37.762969" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:37.765551" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:37.764910" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:37.766321" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:37.765918" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:37.765840" elapsed="0.000666"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:37.766990" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T02:40:37.766707" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:37.766639" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:37.767347" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:37.773557" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:40:37.774229" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:37.774594" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:37.769264" elapsed="0.005538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:37.423222" elapsed="0.351800"/>
</kw>
<msg time="2026-04-19T02:40:37.775336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:37.422269" elapsed="0.353124"/>
</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-19T02:40:37.421501" elapsed="0.353976"/>
</kw>
<msg time="2026-04-19T02:40:37.775523" 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-19T02:40:37.420756" elapsed="0.354813"/>
</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-19T02:40:37.778587" 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-19T02:40:37.779081" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:37.779380" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:37.775863" elapsed="0.003666"/>
</kw>
<msg time="2026-04-19T02:40:37.779620" level="INFO">${output} = 1</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-19T02:40:37.418961" elapsed="0.360685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:37.780119" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:37.779822" elapsed="0.000346"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:37.780214" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:37.780373" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:37.416831" elapsed="0.363569"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:37.780449" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:37.780626" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:37.414664" elapsed="0.365988"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:37.781292" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:37.780863" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:37.413437" elapsed="0.368039">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:39.785079" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:39.784313" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:39.787201" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:39.786567" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:39.789129" 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-19T02:40:39.789359" 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-19T02:40:39.788762" elapsed="0.000656"/>
</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-19T02:40:39.797786" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:39.796836" elapsed="0.001063"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:39.796759" elapsed="0.001223"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:39.800061" 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-19T02:40:39.800404" 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-19T02:40:39.799392" elapsed="0.001156"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:39.802100" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:39.801539" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:39.803938" 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-19T02:40:39.803195" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:39.806340" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:39.806419" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:39.806050" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:39.806657" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:39.807937" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:40.106352" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:39.807611" elapsed="0.298900"/>
</kw>
<msg time="2026-04-19T02:40:40.106600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:39.807223" elapsed="0.299467"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:39.805268" elapsed="0.301783"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:40.108621" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:40.131075" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:40.131574" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:40.131900" 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-19T02:40:40.108218" elapsed="0.023959"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:40.134365" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:40.137211" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:40.136565" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:40.137905" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:40.137581" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:40.137499" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:40.138588" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:40:40.138310" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:40.138245" elapsed="0.000563"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:40.138919" elapsed="0.000055"/>
</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-19T02:40:40.145414" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:40.145963" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:40.146342" 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-19T02:40:40.140830" elapsed="0.005718"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:39.793819" elapsed="0.352948"/>
</kw>
<msg time="2026-04-19T02:40:40.147084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:39.792199" elapsed="0.354944"/>
</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-19T02:40:39.790933" elapsed="0.356290"/>
</kw>
<msg time="2026-04-19T02:40:40.147263" 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-19T02:40:39.789770" elapsed="0.357538"/>
</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-19T02:40:40.150517" 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-19T02:40:40.151051" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:40.151355" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:40.147595" elapsed="0.003911"/>
</kw>
<msg time="2026-04-19T02:40:40.151597" level="INFO">${output} = 1</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-19T02:40:39.787797" elapsed="0.363826"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:40.152175" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:40.151821" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:40.152275" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:40:40.152435" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:39.785614" elapsed="0.366845"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:40.152507" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:40:40.152651" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:39.783426" elapsed="0.369250"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:40.153249" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:40.152833" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:39.782353" elapsed="0.371080">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:42.156905" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:42.156167" elapsed="0.000808"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:42.159215" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:42.158571" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:42.161102" 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-19T02:40:42.161333" 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-19T02:40:42.160742" elapsed="0.000650"/>
</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-19T02:40:42.167793" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:42.167119" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:42.166751" elapsed="0.001237"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:42.169964" 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-19T02:40:42.170330" 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-19T02:40:42.169356" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:42.172432" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:42.171876" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:42.174305" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:42.173534" elapsed="0.000871"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:42.176703" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:42.176780" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:42.176423" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:42.177014" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:42.178414" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:42.523168" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:42.177944" elapsed="0.345355"/>
</kw>
<msg time="2026-04-19T02:40:42.523375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:42.177586" elapsed="0.345870"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:42.175627" elapsed="0.348099"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:42.525237" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:42.547780" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:42.548377" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:42.548733" 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-19T02:40:42.524825" elapsed="0.024139"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:42.551253" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:42.554453" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:42.553445" elapsed="0.001238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:42.555650" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:42.555051" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:42.554905" elapsed="0.001206"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:42.556827" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:40:42.556467" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:42.556357" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:42.557084" 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-19T02:40:42.563456" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:40:42.564013" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:42.564382" 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-19T02:40:42.558479" elapsed="0.006109"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:42.164892" elapsed="0.399924"/>
</kw>
<msg time="2026-04-19T02:40:42.565136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:42.163962" elapsed="0.401230"/>
</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-19T02:40:42.162911" elapsed="0.402362"/>
</kw>
<msg time="2026-04-19T02:40:42.565312" 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-19T02:40:42.161744" elapsed="0.403613"/>
</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-19T02:40:42.568430" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:40:42.568902" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:42.569216" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:42.565645" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T02:40:42.569455" level="INFO">${output} = 1</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-19T02:40:42.159778" elapsed="0.409702"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:42.569906" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:42.569659" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:42.569994" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:42.570184" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:42.157608" elapsed="0.412602"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:42.570257" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:40:42.570398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:42.155296" elapsed="0.415127"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:42.570961" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:42.570578" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:42.154262" elapsed="0.416894">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:44.574635" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:44.573868" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:44.576765" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:44.576160" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:44.578604" 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-19T02:40:44.579059" 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-19T02:40:44.578279" elapsed="0.000847"/>
</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-19T02:40:44.583343" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:44.582849" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:44.582793" elapsed="0.000687"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:44.585205" 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-19T02:40:44.585456" 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-19T02:40:44.584534" elapsed="0.001023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:44.587185" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:44.586539" elapsed="0.000756"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:44.588968" 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-19T02:40:44.588269" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:44.591414" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:44.591491" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:44.591130" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:44.591727" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:44.593073" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:44.913897" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:44.592730" elapsed="0.321313"/>
</kw>
<msg time="2026-04-19T02:40:44.914127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:44.592361" elapsed="0.321852"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:44.590301" elapsed="0.324176"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:44.915971" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:44.938433" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:44.938934" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:44.939321" 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-19T02:40:44.915582" elapsed="0.023996"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:44.941789" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:44.944948" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:44.943943" elapsed="0.001270"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:44.946082" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:44.945560" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:44.945439" elapsed="0.000935"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:44.947185" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:40:44.946698" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:44.946588" elapsed="0.001031"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:44.947800" 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-19T02:40:44.952649" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:44.953281" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:44.953640" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:44.949194" elapsed="0.004657"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:44.581466" elapsed="0.372628"/>
</kw>
<msg time="2026-04-19T02:40:44.954404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:44.580770" elapsed="0.373689"/>
</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-19T02:40:44.580232" elapsed="0.374308"/>
</kw>
<msg time="2026-04-19T02:40:44.954581" 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-19T02:40:44.579483" elapsed="0.375144"/>
</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-19T02:40:44.957689" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:40:44.958182" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:44.958481" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:44.954921" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T02:40:44.958722" level="INFO">${output} = 1</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-19T02:40:44.577334" elapsed="0.381417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:44.959199" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:44.958932" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:44.959287" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:44.959454" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:44.575216" elapsed="0.384264"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:44.959528" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:44.959673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:44.573026" elapsed="0.386672"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:44.960341" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:44.959855" elapsed="0.000558">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:44.571941" elapsed="0.388580">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:46.963978" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:46.963249" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:46.966103" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:46.965446" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:46.967556" 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-19T02:40:46.967708" 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-19T02:40:46.967310" elapsed="0.000436"/>
</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-19T02:40:46.973333" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:46.972648" elapsed="0.000908"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:46.972566" elapsed="0.001079"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:46.975722" 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-19T02:40:46.975969" 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-19T02:40:46.975018" elapsed="0.001083"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:46.977624" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:46.977079" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:46.979445" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:46.978731" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:46.981902" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:46.981979" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:46.981614" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:46.982261" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:46.983535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:47.305071" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:46.983207" elapsed="0.322007"/>
</kw>
<msg time="2026-04-19T02:40:47.305298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:46.982828" elapsed="0.322558"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:46.980836" elapsed="0.324829"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:47.307228" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:47.329856" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:47.330110" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:47.330259" 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-19T02:40:47.306808" elapsed="0.023544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:47.331394" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:47.332866" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:47.332397" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:47.333404" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:47.333166" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:47.333107" elapsed="0.000430"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:47.333884" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T02:40:47.333681" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:47.333631" elapsed="0.000493"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:47.334206" 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-19T02:40:47.338955" 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-19T02:40:47.339516" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:47.339903" 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-19T02:40:47.335550" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:46.970608" elapsed="0.369746"/>
</kw>
<msg time="2026-04-19T02:40:47.340744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:46.969583" elapsed="0.371232"/>
</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-19T02:40:46.968768" elapsed="0.372151"/>
</kw>
<msg time="2026-04-19T02:40:47.340964" 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-19T02:40:46.967986" elapsed="0.373025"/>
</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-19T02:40:47.344045" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:40:47.344526" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:47.344824" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:47.341323" elapsed="0.003651"/>
</kw>
<msg time="2026-04-19T02:40:47.345082" level="INFO">${output} = 1</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-19T02:40:46.966647" elapsed="0.378462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:47.345536" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:47.345286" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:47.345625" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:40:47.345886" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:46.964521" elapsed="0.381393"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:47.345965" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:40:47.346215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:46.962425" elapsed="0.383816"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:47.346821" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:47.346401" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:46.961375" elapsed="0.385626">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:49.350605" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:49.349832" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:49.352710" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:49.352099" elapsed="0.000672"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:49.354584" 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-19T02:40:49.354813" 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-19T02:40:49.354258" elapsed="0.000614"/>
</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-19T02:40:49.360558" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:49.359909" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:49.359834" elapsed="0.000918"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:49.363083" 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-19T02:40:49.363425" 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-19T02:40:49.362132" elapsed="0.001432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:49.365722" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:49.364904" elapsed="0.000962"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:49.367671" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:49.366891" elapsed="0.000878"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:49.370042" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:49.370122" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:49.369748" 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-19T02:40:49.370358" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:49.371793" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:49.679020" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:49.371467" elapsed="0.307700"/>
</kw>
<msg time="2026-04-19T02:40:49.679260" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:49.370917" elapsed="0.308447"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:49.368977" elapsed="0.310715"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:49.681689" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:49.704128" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:49.704610" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:49.704941" 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-19T02:40:49.681177" elapsed="0.024101"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:49.707538" elapsed="0.000859"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:49.710607" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:49.709634" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:49.711667" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:49.711194" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:49.711073" elapsed="0.000879"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:49.712728" elapsed="0.000109"/>
</return>
<status status="PASS" start="2026-04-19T02:40:49.712297" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:49.712193" elapsed="0.000904"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:49.713272" elapsed="0.000080"/>
</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-19T02:40:49.718365" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:40:49.718920" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:49.719348" 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-19T02:40:49.714993" elapsed="0.004561"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:49.357994" elapsed="0.361775"/>
</kw>
<msg time="2026-04-19T02:40:49.720084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:49.357070" elapsed="0.363071"/>
</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-19T02:40:49.356286" elapsed="0.363936"/>
</kw>
<msg time="2026-04-19T02:40:49.720262" 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-19T02:40:49.355254" elapsed="0.365054"/>
</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-19T02:40:49.723430" 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-19T02:40:49.723906" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:49.724218" 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-19T02:40:49.720650" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T02:40:49.724456" level="INFO">${output} = 1</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-19T02:40:49.353312" elapsed="0.371169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:49.724910" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:49.724659" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:49.724996" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:40:49.725166" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:49.351156" elapsed="0.374035"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:49.725238" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:49.725396" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:49.348981" elapsed="0.376441"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:49.725964" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:49.725577" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:49.347837" elapsed="0.378328">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:51.729715" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:51.728938" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:51.731962" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:51.731284" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:51.733380" 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-19T02:40:51.733525" 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-19T02:40:51.733151" elapsed="0.000413"/>
</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-19T02:40:51.739182" elapsed="0.000376"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:51.738513" elapsed="0.001153"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:51.738434" elapsed="0.001323"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:51.741335" 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-19T02:40:51.741591" 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-19T02:40:51.740859" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:51.743303" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:51.742723" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:51.745259" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:51.744459" elapsed="0.000900"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:51.747759" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:51.747845" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:51.747428" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:51.748123" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:51.749677" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:52.064347" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:51.749314" elapsed="0.315192"/>
</kw>
<msg time="2026-04-19T02:40:52.064591" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:51.748781" elapsed="0.315902"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:51.746598" elapsed="0.318373"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:52.066588" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:52.090075" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:52.090654" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:52.091011" 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-19T02:40:52.066111" elapsed="0.025174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:52.093681" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:52.096914" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:52.095881" elapsed="0.001213"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:52.097674" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:52.097327" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:52.097247" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:52.098371" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:40:52.098088" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:52.097998" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:52.098705" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:52.105354" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:52.105906" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:52.106289" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:52.100625" elapsed="0.005874"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:51.736515" elapsed="0.370208"/>
</kw>
<msg time="2026-04-19T02:40:52.107110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:51.735319" elapsed="0.371855"/>
</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-19T02:40:51.734542" elapsed="0.372714"/>
</kw>
<msg time="2026-04-19T02:40:52.107298" 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-19T02:40:51.733788" elapsed="0.373555"/>
</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-19T02:40:52.110472" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:40:52.110947" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:52.111341" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:52.107635" elapsed="0.003854"/>
</kw>
<msg time="2026-04-19T02:40:52.111645" level="INFO">${output} = 1</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-19T02:40:51.732538" elapsed="0.379133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:52.112161" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:52.111849" elapsed="0.000361"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:52.112257" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:40:52.112413" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:51.730278" elapsed="0.382161"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:52.112488" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:40:52.112665" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:51.728114" elapsed="0.384581"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:52.113286" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:52.112859" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:51.726941" elapsed="0.386536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:54.117290" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:54.116490" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:54.119572" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:54.118807" elapsed="0.000826"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:54.120920" 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-19T02:40:54.121084" 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-19T02:40:54.120687" elapsed="0.000435"/>
</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-19T02:40:54.125778" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:54.125050" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:54.124974" elapsed="0.000945"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:54.127382" 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-19T02:40:54.127626" 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-19T02:40:54.126923" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:54.129277" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:54.128699" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:54.131100" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:54.130376" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:54.133654" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:54.133747" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:54.133290" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:54.133997" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:54.135382" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:54.435619" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:54.134998" elapsed="0.300822"/>
</kw>
<msg time="2026-04-19T02:40:54.435899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:54.134624" elapsed="0.301363"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:54.132383" elapsed="0.303875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:54.437717" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:54.460233" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:54.460759" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:54.461166" 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-19T02:40:54.437339" elapsed="0.024044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:54.463659" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:54.466854" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:54.465826" elapsed="0.001384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:54.468103" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:54.467562" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:54.467439" elapsed="0.000965"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:54.469225" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:40:54.468725" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:54.468617" elapsed="0.000967"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:54.469760" elapsed="0.000085"/>
</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-19T02:40:54.475345" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:40:54.475892" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:54.476265" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:54.471965" elapsed="0.004506"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:54.123662" elapsed="0.353028"/>
</kw>
<msg time="2026-04-19T02:40:54.476992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:54.122913" elapsed="0.354157"/>
</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-19T02:40:54.122140" elapsed="0.355012"/>
</kw>
<msg time="2026-04-19T02:40:54.477193" 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-19T02:40:54.121348" elapsed="0.355891"/>
</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-19T02:40:54.480324" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:40:54.480798" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:54.481126" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:54.477528" elapsed="0.003746"/>
</kw>
<msg time="2026-04-19T02:40:54.481364" level="INFO">${output} = 1</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-19T02:40:54.120105" elapsed="0.361284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:54.481809" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:54.481564" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:54.481896" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:40:54.482072" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:54.117826" elapsed="0.364272"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:54.482145" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:54.482291" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:54.115624" elapsed="0.366691"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:54.482948" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:54.482547" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:54.114516" elapsed="0.368698">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:56.486937" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:56.486173" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:56.489236" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:56.488519" elapsed="0.000782"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:56.491259" 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-19T02:40:56.491493" 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-19T02:40:56.490887" elapsed="0.000667"/>
</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-19T02:40:56.496635" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:56.496146" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:56.495849" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:56.498324" 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-19T02:40:56.498567" 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-19T02:40:56.497860" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:56.500354" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:56.499634" elapsed="0.000846"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:56.502192" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:56.501469" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:56.504659" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:56.504739" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:56.504354" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:56.504991" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:56.506361" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:56.820513" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:56.505995" elapsed="0.314685"/>
</kw>
<msg time="2026-04-19T02:40:56.820766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:56.505628" elapsed="0.315228"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:56.503517" elapsed="0.317650"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:56.822656" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:56.845648" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:56.845882" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:56.846054" 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-19T02:40:56.822260" elapsed="0.023894"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:56.847160" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:56.848622" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:56.848176" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:56.849197" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:56.848928" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:56.848868" elapsed="0.000463"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:56.849684" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:40:56.849479" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:56.849428" elapsed="0.000418"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:56.849925" 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-19T02:40:56.858040" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T02:40:56.858603" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:56.858960" 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-19T02:40:56.851372" elapsed="0.007813"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:56.494477" elapsed="0.364932"/>
</kw>
<msg time="2026-04-19T02:40:56.859730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:56.493724" elapsed="0.366064"/>
</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-19T02:40:56.493179" elapsed="0.366689"/>
</kw>
<msg time="2026-04-19T02:40:56.859908" 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-19T02:40:56.491908" elapsed="0.368045"/>
</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-19T02:40:56.863142" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:56.863623" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:56.863916" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:56.860379" elapsed="0.003704"/>
</kw>
<msg time="2026-04-19T02:40:56.864173" level="INFO">${output} = 1</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-19T02:40:56.489862" elapsed="0.374336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:56.864636" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:56.864385" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:56.864754" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:40:56.864907" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:56.487509" elapsed="0.377423"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:56.864978" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:56.865210" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:56.485273" elapsed="0.379961"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:56.865781" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:56.865389" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:56.484125" elapsed="0.381840">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:40:58.868153" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:40:58.867752" elapsed="0.000436"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:40:58.869210" level="INFO">${member_ip} = 10.30.171.206</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-19T02:40:58.868910" elapsed="0.000328"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:58.870200" 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-19T02:40:58.870309" 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-19T02:40:58.870004" elapsed="0.000332"/>
</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-19T02:40:58.876389" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:40:58.875590" elapsed="0.000918"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:58.875507" elapsed="0.001086"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:58.924421" 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-19T02:40:58.924897" 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-19T02:40:58.877981" elapsed="0.047019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:58.926711" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:58.926070" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:40:58.928516" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:40:58.927796" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:40:58.930975" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:40:58.931070" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:40:58.930685" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:58.931312" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:40:58.932608" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:40:59.254855" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:40:58.932282" elapsed="0.322734"/>
</kw>
<msg time="2026-04-19T02:40:59.255120" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:58.931897" elapsed="0.323319"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:40:58.929813" elapsed="0.325700"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:40:59.257076" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:40:59.280498" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:40:59.281179" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:40:59.281517" 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-19T02:40:59.256628" elapsed="0.025102"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:59.283768" elapsed="0.000692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:59.285971" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:59.285255" elapsed="0.000905"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:59.286875" elapsed="0.000049"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:40:59.286402" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:59.286318" elapsed="0.000791"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:40:59.287801" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T02:40:59.287319" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-19T02:40:59.287249" elapsed="0.000955"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:40:59.288372" elapsed="0.000059"/>
</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-19T02:40:59.294277" 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-19T02:40:59.294869" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:59.295280" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:40:59.290419" elapsed="0.005081"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:40:58.873464" elapsed="0.422267"/>
</kw>
<msg time="2026-04-19T02:40:59.296084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:40:58.872335" elapsed="0.423812"/>
</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-19T02:40:58.871296" elapsed="0.424937"/>
</kw>
<msg time="2026-04-19T02:40:59.296275" 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-19T02:40:58.870558" elapsed="0.425765"/>
</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-19T02:40:59.299363" 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-19T02:40:59.299850" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:40:59.300257" 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-19T02:40:59.296617" elapsed="0.003793"/>
</kw>
<msg time="2026-04-19T02:40:59.300506" level="INFO">${output} = 1</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-19T02:40:58.869502" elapsed="0.431031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:40:59.300966" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:40:59.300713" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:40:59.301071" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:40:59.301227" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:40:58.868496" elapsed="0.432757"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:40:59.301303" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:40:59.301451" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:40:58.867351" elapsed="0.434125"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:40:59.302056" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:40:59.301636" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:40:58.866729" elapsed="0.435521">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:01.306536" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:01.305657" elapsed="0.000951"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:01.308783" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:01.308101" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:01.310191" 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-19T02:41:01.310457" 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-19T02:41:01.309923" elapsed="0.000572"/>
</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-19T02:41:01.316374" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:01.315711" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:01.315630" elapsed="0.000967"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:01.318421" 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-19T02:41:01.318662" 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-19T02:41:01.317959" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:01.320537" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:01.319965" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:01.322413" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:01.321641" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:01.324857" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:01.324937" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:01.324568" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:01.325195" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:01.326602" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:01.657444" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:40:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:01.326274" elapsed="0.331336"/>
</kw>
<msg time="2026-04-19T02:41:01.657697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:01.325756" elapsed="0.332040"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:01.323761" elapsed="0.334336"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:01.659679" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:01.682639" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:01.683194" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:01.683532" 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-19T02:41:01.659261" elapsed="0.024481"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:01.686074" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:01.689468" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:01.688315" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:01.690194" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:01.689845" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:01.689763" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:01.690866" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:41:01.690581" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:01.690515" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:01.691225" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:01.697949" 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-19T02:41:01.698615" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:01.698975" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:01.693329" elapsed="0.005872"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:01.313358" elapsed="0.386067"/>
</kw>
<msg time="2026-04-19T02:41:01.699730" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:01.312352" elapsed="0.387436"/>
</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-19T02:41:01.311552" elapsed="0.388320"/>
</kw>
<msg time="2026-04-19T02:41:01.699913" 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-19T02:41:01.310723" elapsed="0.389237"/>
</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-19T02:41:01.703177" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:41:01.703672" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:01.703968" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:01.700283" elapsed="0.003862"/>
</kw>
<msg time="2026-04-19T02:41:01.704237" level="INFO">${output} = 1</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-19T02:41:01.309333" elapsed="0.394929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:01.704693" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:01.704438" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:01.704782" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:01.704974" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:01.307115" elapsed="0.397884"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:01.705127" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:01.705301" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:01.304335" elapsed="0.400997"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:01.705902" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:01.705503" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:01.303257" elapsed="0.402865">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:03.709702" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:03.708909" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:03.711823" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:03.711221" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:03.713694" 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-19T02:41:03.713919" 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-19T02:41:03.713335" elapsed="0.000642"/>
</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-19T02:41:03.720396" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:03.719741" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:03.719466" elapsed="0.001197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:03.722903" 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-19T02:41:03.723384" 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-19T02:41:03.722018" elapsed="0.001476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:03.725011" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:03.724467" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:03.726860" 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-19T02:41:03.726132" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:03.729309" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:03.729387" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:03.729014" 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-19T02:41:03.729624" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:03.730921" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:04.042608" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:03.730596" elapsed="0.312206"/>
</kw>
<msg time="2026-04-19T02:41:04.042911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:03.730209" elapsed="0.312812"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:03.728262" elapsed="0.315138"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:04.044883" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:04.067451" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:04.067959" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:04.068339" 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-19T02:41:04.044497" elapsed="0.024052"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:04.070825" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:04.073963" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:04.073018" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:04.075238" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:04.074564" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:04.074444" elapsed="0.001090"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:04.076316" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:41:04.075846" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:04.075741" elapsed="0.000916"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:04.076830" 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-19T02:41:04.083231" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:04.083781" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:04.084152" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:04.079604" elapsed="0.004757"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:03.717233" elapsed="0.367347"/>
</kw>
<msg time="2026-04-19T02:41:04.085006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:03.716264" elapsed="0.368902"/>
</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-19T02:41:03.715487" elapsed="0.369763"/>
</kw>
<msg time="2026-04-19T02:41:04.085291" 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-19T02:41:03.714358" elapsed="0.370979"/>
</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-19T02:41:04.088326" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:41:04.088806" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:04.089137" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:04.085630" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T02:41:04.089378" level="INFO">${output} = 1</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-19T02:41:03.712395" elapsed="0.377008"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:04.089827" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:04.089581" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:04.089913" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:04.090079" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:03.710258" elapsed="0.379847"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:04.090152" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:04.090299" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:03.708064" elapsed="0.382265"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:04.090958" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:04.090530" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:03.706934" elapsed="0.384230">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:06.094847" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:06.094093" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:06.097172" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:06.096502" elapsed="0.000732"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:06.098478" 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-19T02:41:06.098631" 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-19T02:41:06.098245" elapsed="0.000426"/>
</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-19T02:41:06.104984" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:06.104290" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:06.104186" elapsed="0.001043"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:06.107442" 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-19T02:41:06.107814" 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-19T02:41:06.106710" elapsed="0.001249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:06.110057" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:06.109448" elapsed="0.000721"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:06.112096" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:06.111369" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:06.114533" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:06.114611" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:06.114241" 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-19T02:41:06.114850" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:06.116346" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:06.438686" 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 Sun Apr 19 02:40:06 UTC 2026

  System load:  0.05               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:06.115969" elapsed="0.322848"/>
</kw>
<msg time="2026-04-19T02:41:06.438896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:06.115600" elapsed="0.323380"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:06.113435" elapsed="0.325834"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:06.440764" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:06.464128" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:06.464681" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:06.465017" 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-19T02:41:06.440345" elapsed="0.024927"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:06.467488" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:06.470754" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:06.469745" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:06.471858" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:06.471362" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:06.471240" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:06.473052" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:41:06.472557" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:06.472395" elapsed="0.001078"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:06.473557" 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-19T02:41:06.478411" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:41:06.478951" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:06.479322" 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-19T02:41:06.474953" elapsed="0.004578"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:06.101827" elapsed="0.377927"/>
</kw>
<msg time="2026-04-19T02:41:06.480073" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:06.100793" elapsed="0.379338"/>
</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-19T02:41:06.099759" elapsed="0.380455"/>
</kw>
<msg time="2026-04-19T02:41:06.480256" 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-19T02:41:06.098908" elapsed="0.381394"/>
</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-19T02:41:06.483401" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:41:06.483878" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:06.484191" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:06.480675" elapsed="0.003663"/>
</kw>
<msg time="2026-04-19T02:41:06.484428" level="INFO">${output} = 1</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-19T02:41:06.097607" elapsed="0.386846"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:06.484900" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:06.484652" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:06.484988" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:06.485233" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:06.095423" elapsed="0.389836"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:06.485307" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:06.485453" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:06.093180" elapsed="0.392298"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:06.486042" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:06.485635" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:06.091954" elapsed="0.394277">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:08.489703" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:08.488942" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:08.491352" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:08.490949" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:08.492508" 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-19T02:41:08.492658" 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-19T02:41:08.492290" elapsed="0.000405"/>
</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-19T02:41:08.498272" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:08.497582" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:08.497216" elapsed="0.001251"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:08.499908" 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-19T02:41:08.500172" 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-19T02:41:08.499475" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:08.501771" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:08.501231" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:08.503583" 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-19T02:41:08.502879" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:08.505991" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:08.506121" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:08.505685" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:08.506354" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:08.507672" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:09.091480" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:08.507348" elapsed="0.584302"/>
</kw>
<msg time="2026-04-19T02:41:09.091741" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:08.506970" elapsed="0.584864"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:08.504892" elapsed="0.587265"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:09.093701" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:09.116640" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:09.117361" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:09.117701" 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-19T02:41:09.093292" elapsed="0.024805"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:09.120480" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:09.123710" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:09.122840" elapsed="0.001012"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:09.124448" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:09.124103" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:09.123997" elapsed="0.000640"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:09.125141" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:41:09.124838" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:09.124772" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:09.125475" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:09.131947" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:41:09.132506" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:09.132864" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:09.127388" elapsed="0.005700"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:08.495399" elapsed="0.637912"/>
</kw>
<msg time="2026-04-19T02:41:09.133614" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:08.494448" elapsed="0.639242"/>
</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-19T02:41:08.493649" elapsed="0.640136"/>
</kw>
<msg time="2026-04-19T02:41:09.133828" 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-19T02:41:08.492913" elapsed="0.640963"/>
</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-19T02:41:09.136946" 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-19T02:41:09.137445" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:09.137753" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:09.134259" elapsed="0.003646"/>
</kw>
<msg time="2026-04-19T02:41:09.138157" level="INFO">${output} = 1</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-19T02:41:08.491694" elapsed="0.646491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:09.138662" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:09.138370" elapsed="0.000338"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:09.138760" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:41:09.138915" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:08.490307" elapsed="0.648632"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:09.138987" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:41:09.139150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:08.488130" elapsed="0.651045"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:09.139746" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:09.139334" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:08.487067" elapsed="0.652872">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:11.143722" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:11.142924" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:11.145497" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:11.145112" elapsed="0.000424"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:11.146659" 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-19T02:41:11.146801" 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-19T02:41:11.146440" elapsed="0.000399"/>
</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-19T02:41:11.152442" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:11.151745" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:11.151385" elapsed="0.001294"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:11.155971" 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-19T02:41:11.156584" 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-19T02:41:11.154846" elapsed="0.001896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:11.158273" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:11.157717" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:11.160136" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:11.159402" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:11.162465" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:11.162543" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:11.162183" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:11.162776" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:11.164138" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:11.487063" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:11.163789" elapsed="0.323526"/>
</kw>
<msg time="2026-04-19T02:41:11.487402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:11.163434" elapsed="0.324059"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:11.161417" elapsed="0.326347"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:11.489309" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:11.512249" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:11.512573" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:11.512784" 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-19T02:41:11.488894" elapsed="0.024023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:11.514336" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:11.516344" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:11.515707" 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-19T02:41:11.517066" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:11.516718" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:11.516636" 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-19T02:41:11.517741" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:41:11.517459" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:11.517392" elapsed="0.000577"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:11.518136" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:11.523901" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T02:41:11.524471" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:11.524827" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:11.519982" elapsed="0.005069"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:11.149551" elapsed="0.375726"/>
</kw>
<msg time="2026-04-19T02:41:11.525585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:11.148609" elapsed="0.377033"/>
</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-19T02:41:11.147796" elapsed="0.377926"/>
</kw>
<msg time="2026-04-19T02:41:11.525762" 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-19T02:41:11.147079" elapsed="0.378728"/>
</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-19T02:41:11.528803" 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-19T02:41:11.529295" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:11.529590" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:11.526110" elapsed="0.003631"/>
</kw>
<msg time="2026-04-19T02:41:11.529830" level="INFO">${output} = 1</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-19T02:41:11.145842" elapsed="0.384013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:11.530299" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:11.530050" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:11.530387" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:11.530538" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:11.144466" elapsed="0.386096"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:11.530609" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:11.530753" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:11.142073" elapsed="0.388704"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:11.531394" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:11.530981" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:11.140754" elapsed="0.390828">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:13.535426" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:13.534665" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:13.537641" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:13.536945" elapsed="0.000738"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:13.538890" 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-19T02:41:13.539067" 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-19T02:41:13.538649" elapsed="0.000460"/>
</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-19T02:41:13.546967" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:13.546452" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:13.544220" elapsed="0.002923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:13.548662" 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-19T02:41:13.548921" 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-19T02:41:13.548186" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:13.550766" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:13.550199" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:13.552679" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:13.551948" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:13.555344" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:13.555428" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:13.554873" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:13.555698" elapsed="0.000379"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:13.557006" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:13.877936" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:13.556678" elapsed="0.321516"/>
</kw>
<msg time="2026-04-19T02:41:13.878305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:13.556304" elapsed="0.322123"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:13.554025" elapsed="0.324717"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:13.880344" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:13.903530" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:13.903938" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:13.904186" 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-19T02:41:13.879895" elapsed="0.024432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:13.905883" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:13.907813" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:13.907316" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:13.908387" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:13.908119" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:13.908055" elapsed="0.000471"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:13.908894" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T02:41:13.908684" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:13.908632" elapsed="0.000472"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:13.909187" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:13.915180" 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-19T02:41:13.915757" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:13.916141" 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-19T02:41:13.910566" elapsed="0.005793"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:13.542015" elapsed="0.374576"/>
</kw>
<msg time="2026-04-19T02:41:13.916910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:13.540955" elapsed="0.376019"/>
</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-19T02:41:13.540151" elapsed="0.377058"/>
</kw>
<msg time="2026-04-19T02:41:13.917253" 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-19T02:41:13.539348" elapsed="0.377956"/>
</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-19T02:41:13.920390" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:41:13.920873" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:13.921235" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:13.917704" elapsed="0.003683"/>
</kw>
<msg time="2026-04-19T02:41:13.921481" level="INFO">${output} = 1</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-19T02:41:13.538008" elapsed="0.383499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:13.922011" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:13.921742" elapsed="0.000332"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:13.922119" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:41:13.922278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:13.535982" elapsed="0.386322"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:13.922351" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:13.922497" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:13.533599" elapsed="0.388925"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:13.923108" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:13.922683" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:13.532453" elapsed="0.390995">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:15.927920" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:15.926901" elapsed="0.001105"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:15.930846" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:15.930085" elapsed="0.000836"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:15.932540" 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-19T02:41:15.932669" 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-19T02:41:15.932327" elapsed="0.000376"/>
</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-19T02:41:15.937553" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:15.936944" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:15.936870" elapsed="0.000852"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:15.939849" 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-19T02:41:15.940181" 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-19T02:41:15.938989" elapsed="0.001320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:15.942244" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:15.941553" elapsed="0.000829"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:15.944625" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:15.943651" elapsed="0.001097"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:15.947666" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:15.947761" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:15.947291" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:15.948276" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:15.949851" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:16.323881" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:15.949447" elapsed="0.374621"/>
</kw>
<msg time="2026-04-19T02:41:16.324175" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:15.948968" elapsed="0.375321"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:15.946282" elapsed="0.378319"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:16.326195" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:16.348664" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:16.349268" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:16.349625" 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-19T02:41:16.325733" elapsed="0.024107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:16.352198" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:16.355403" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:16.354378" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:16.356707" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:16.355998" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:16.355871" elapsed="0.001137"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:16.357884" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:41:16.357421" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:16.357301" elapsed="0.001089"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:16.358564" elapsed="0.000082"/>
</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-19T02:41:16.364110" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:41:16.364675" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:16.365078" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:16.360620" elapsed="0.004676"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:15.935220" elapsed="0.430304"/>
</kw>
<msg time="2026-04-19T02:41:16.365839" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:15.934307" elapsed="0.431596"/>
</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-19T02:41:15.933602" elapsed="0.432386"/>
</kw>
<msg time="2026-04-19T02:41:16.366076" 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-19T02:41:15.932912" elapsed="0.433215"/>
</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-19T02:41:16.369166" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:16.369658" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:16.369964" elapsed="0.000220"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:16.366428" elapsed="0.003880"/>
</kw>
<msg time="2026-04-19T02:41:16.370426" level="INFO">${output} = 1</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-19T02:41:15.931662" elapsed="0.438791"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:16.370919" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:16.370658" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:16.371011" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T02:41:16.371190" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:15.928841" elapsed="0.442374"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:16.371289" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:41:16.371450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:15.925805" elapsed="0.445670"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:16.372055" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:16.371633" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:15.924497" elapsed="0.447769">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:18.375733" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:18.374978" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:18.377476" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:18.377096" elapsed="0.000418"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:18.378632" 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-19T02:41:18.378903" 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-19T02:41:18.378417" elapsed="0.000524"/>
</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-19T02:41:18.384347" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:18.383600" elapsed="0.000859"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:18.383522" elapsed="0.001062"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:18.386323" 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-19T02:41:18.386573" 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-19T02:41:18.385643" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:18.388238" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:18.387680" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:18.390061" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:18.389349" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:18.392455" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:18.392555" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:18.392174" 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-19T02:41:18.392793" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:18.394065" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:18.705448" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:18.393725" elapsed="0.311918"/>
</kw>
<msg time="2026-04-19T02:41:18.705763" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:18.393362" elapsed="0.312566"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:18.391417" elapsed="0.315119"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:18.709730" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:18.732293" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:18.732810" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:18.733193" 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-19T02:41:18.708926" elapsed="0.024478"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:18.735619" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:18.738832" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:18.737810" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:18.739984" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:18.739462" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:18.739339" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:18.741184" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:41:18.740643" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:18.740534" elapsed="0.001003"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:18.741710" elapsed="0.000081"/>
</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-19T02:41:18.746851" 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-19T02:41:18.747498" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:18.747860" 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-19T02:41:18.743383" elapsed="0.004701"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:18.381654" elapsed="0.366656"/>
</kw>
<msg time="2026-04-19T02:41:18.748619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:18.380683" elapsed="0.367992"/>
</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-19T02:41:18.379905" elapsed="0.368886"/>
</kw>
<msg time="2026-04-19T02:41:18.748840" 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-19T02:41:18.379187" elapsed="0.369703"/>
</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-19T02:41:18.751949" 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-19T02:41:18.752442" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:18.752760" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:18.749200" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T02:41:18.753006" level="INFO">${output} = 1</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-19T02:41:18.377815" elapsed="0.375230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:18.753479" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:18.753227" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:18.753566" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:18.753717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:18.376282" elapsed="0.377460"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:18.753788" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:18.753930" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:18.374171" elapsed="0.379783"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:18.754605" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:18.754204" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:18.373128" elapsed="0.381668">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:20.758232" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:20.757459" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:20.760303" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:20.759677" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:20.762160" 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-19T02:41:20.762386" 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-19T02:41:20.761775" elapsed="0.000669"/>
</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-19T02:41:20.768200" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:20.767515" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:20.767433" elapsed="0.001059"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:20.770944" 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-19T02:41:20.771214" 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-19T02:41:20.769997" elapsed="0.001319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:20.772832" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:20.772292" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:20.774676" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:20.773948" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:20.777079" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:20.777157" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:20.776773" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:20.777399" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:20.778689" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:21.095836" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:20.778365" elapsed="0.317622"/>
</kw>
<msg time="2026-04-19T02:41:21.096096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:20.777983" elapsed="0.318205"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:20.775993" elapsed="0.320490"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:21.098052" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:21.120758" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:21.121314" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:21.121645" 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-19T02:41:21.097604" elapsed="0.024290"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:21.124397" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:21.127697" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:21.126678" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:21.128946" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:21.128422" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:21.128298" elapsed="0.000978"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:21.130107" elapsed="0.000182"/>
</return>
<status status="PASS" start="2026-04-19T02:41:21.129611" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:21.129489" elapsed="0.001041"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:21.130726" elapsed="0.000088"/>
</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-19T02:41:21.135715" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T02:41:21.136313" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:21.136677" 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-19T02:41:21.132311" elapsed="0.004573"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:20.765420" elapsed="0.371710"/>
</kw>
<msg time="2026-04-19T02:41:21.137540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:20.764391" elapsed="0.373209"/>
</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-19T02:41:20.763586" elapsed="0.374100"/>
</kw>
<msg time="2026-04-19T02:41:21.137727" 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-19T02:41:20.762790" elapsed="0.374983"/>
</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-19T02:41:21.140933" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:21.141439" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:21.141753" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:21.138091" elapsed="0.003815"/>
</kw>
<msg time="2026-04-19T02:41:21.142001" level="INFO">${output} = 1</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-19T02:41:20.760838" elapsed="0.381188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:21.142496" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:21.142241" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:21.142669" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:41:21.142829" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:20.758745" elapsed="0.384111"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:21.142904" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:41:21.143072" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:20.756575" elapsed="0.386523"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:21.143673" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:21.143260" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:20.755548" elapsed="0.388329">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:23.147646" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:23.146809" elapsed="0.000908"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:23.149752" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:23.149153" elapsed="0.000658"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:23.151617" 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-19T02:41:23.151844" 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-19T02:41:23.151261" elapsed="0.000642"/>
</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-19T02:41:23.156670" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:23.156197" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:23.155877" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:23.158246" 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-19T02:41:23.158494" 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-19T02:41:23.157794" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:23.160191" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:23.159569" elapsed="0.000729"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:23.162025" 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-19T02:41:23.161332" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:23.164542" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:23.164620" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:23.164260" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:23.164853" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:23.166154" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:23.491638" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:23.165788" elapsed="0.326017"/>
</kw>
<msg time="2026-04-19T02:41:23.491900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:23.165427" elapsed="0.326576"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:23.163329" elapsed="0.329003"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:23.493872" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:23.516937" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:23.517492" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:23.517831" 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-19T02:41:23.493454" elapsed="0.024625"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:23.520337" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:23.523540" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:23.522560" elapsed="0.001233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:23.524689" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:23.524179" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:23.524023" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:23.525793" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:41:23.525339" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:23.525229" elapsed="0.001135"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:23.526541" elapsed="0.000084"/>
</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-19T02:41:23.532274" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:41:23.532820" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:23.533199" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:23.528738" elapsed="0.004672"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:23.154553" elapsed="0.379083"/>
</kw>
<msg time="2026-04-19T02:41:23.533947" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:23.153836" elapsed="0.380171"/>
</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-19T02:41:23.153263" elapsed="0.380891"/>
</kw>
<msg time="2026-04-19T02:41:23.534196" 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-19T02:41:23.152284" elapsed="0.381958"/>
</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-19T02:41:23.537300" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:41:23.537775" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:23.538172" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:23.534611" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T02:41:23.538415" level="INFO">${output} = 1</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-19T02:41:23.150327" elapsed="0.388113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:23.538868" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:23.538620" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:23.538956" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:41:23.539123" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:23.148210" elapsed="0.390939"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:23.539197" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:23.539343" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:23.145842" elapsed="0.393525"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:23.539941" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:23.539533" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:23.144720" elapsed="0.395424">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:25.542611" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:25.542126" elapsed="0.000532"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:25.543924" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:25.543545" elapsed="0.000417"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:25.545148" 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-19T02:41:25.545293" 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-19T02:41:25.544906" elapsed="0.000425"/>
</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-19T02:41:25.550932" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:25.550286" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:25.549873" elapsed="0.001289"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:25.553249" 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-19T02:41:25.553495" 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-19T02:41:25.552566" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:25.555152" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:25.554588" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:25.556970" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:25.556250" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:25.559417" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:25.559494" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:25.559135" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:25.559729" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:25.561250" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:25.875437" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:25.560731" elapsed="0.314860"/>
</kw>
<msg time="2026-04-19T02:41:25.875677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:25.560370" elapsed="0.315397"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:25.558357" elapsed="0.317715"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:25.877566" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:25.900414" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:25.900914" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:25.901314" 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-19T02:41:25.877181" elapsed="0.024350"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:25.903760" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:25.906924" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:25.905943" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:25.908061" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:25.907537" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:25.907415" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:25.909216" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:41:25.908695" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:25.908588" elapsed="0.000981"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:25.909745" elapsed="0.000081"/>
</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-19T02:41:25.914709" elapsed="0.000399"/>
</kw>
<kw name="Open 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-19T02:41:25.915321" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:25.915675" 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-19T02:41:25.911449" elapsed="0.004434"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:25.547997" elapsed="0.368126"/>
</kw>
<msg time="2026-04-19T02:41:25.916433" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:25.547062" elapsed="0.369428"/>
</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-19T02:41:25.546301" elapsed="0.370271"/>
</kw>
<msg time="2026-04-19T02:41:25.916613" 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-19T02:41:25.545561" elapsed="0.371098"/>
</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-19T02:41:25.919776" 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-19T02:41:25.920271" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:25.920565" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:25.916950" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T02:41:25.920864" level="INFO">${output} = 1</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-19T02:41:25.544287" elapsed="0.376603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:25.921350" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:25.921099" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:25.921439" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:25.921592" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:25.542949" elapsed="0.378668"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:25.921665" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:41:25.921809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:25.541585" elapsed="0.380249"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:25.922399" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:25.921992" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:25.540827" elapsed="0.381752">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:27.926369" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:27.925511" elapsed="0.000940"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:27.928717" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:27.928090" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:27.930711" 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-19T02:41:27.930994" 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-19T02:41:27.930367" elapsed="0.000741"/>
</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-19T02:41:27.936836" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:27.936346" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:27.934452" elapsed="0.002524"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:27.938473" 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-19T02:41:27.938722" 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-19T02:41:27.937978" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:27.940364" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:27.939804" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:27.942249" 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-19T02:41:27.941459" elapsed="0.000889"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:27.944777" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:27.944859" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:27.944459" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:27.945130" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:27.946567" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:28.271846" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:27.946226" elapsed="0.325981"/>
</kw>
<msg time="2026-04-19T02:41:28.272508" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:27.945692" elapsed="0.326965"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:27.943593" elapsed="0.329628"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:28.276320" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:28.299365" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:28.299867" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:28.300274" 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-19T02:41:28.275537" elapsed="0.024948"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:28.302791" elapsed="0.000768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:28.305153" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:28.304447" 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-19T02:41:28.305909" elapsed="0.000050"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:28.305550" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:28.305465" 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-19T02:41:28.306696" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T02:41:28.306366" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:28.306293" elapsed="0.000643"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:28.307114" elapsed="0.000062"/>
</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-19T02:41:28.313398" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:41:28.313980" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:28.314369" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:28.309298" elapsed="0.005306"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:27.933109" elapsed="0.381741"/>
</kw>
<msg time="2026-04-19T02:41:28.315192" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:27.932400" elapsed="0.382853"/>
</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-19T02:41:27.931850" elapsed="0.383488"/>
</kw>
<msg time="2026-04-19T02:41:28.315380" 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-19T02:41:27.931331" elapsed="0.384096"/>
</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-19T02:41:28.318558" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:41:28.319056" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:28.319356" 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-19T02:41:28.315723" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T02:41:28.319593" level="INFO">${output} = 1</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-19T02:41:27.929336" elapsed="0.390283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:28.320063" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:28.319799" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:28.320154" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:28.320304" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:27.927061" elapsed="0.393268"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:28.320375" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:41:28.320517" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:27.924620" elapsed="0.395921"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:28.321178" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:28.320744" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:27.923444" elapsed="0.397917">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:30.325188" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:30.324395" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:30.327307" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:30.326660" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:30.328884" 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-19T02:41:30.329061" 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-19T02:41:30.328653" elapsed="0.000447"/>
</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-19T02:41:30.334389" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:30.333737" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:30.333660" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:30.336832" 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-19T02:41:30.337106" 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-19T02:41:30.336027" elapsed="0.001177"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:30.338712" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:30.338176" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:30.340521" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:30.339813" elapsed="0.000807"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:30.342912" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:30.342990" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:30.342629" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:30.343244" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:30.344533" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:30.715101" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:30.344207" elapsed="0.371057"/>
</kw>
<msg time="2026-04-19T02:41:30.715353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:30.343828" elapsed="0.371614"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:30.341852" elapsed="0.373881"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:30.717285" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:30.740163" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:30.740465" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:30.740618" 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-19T02:41:30.716867" elapsed="0.023848"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:30.741775" elapsed="0.000572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:30.743414" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:30.742930" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:30.743957" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:30.743692" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:30.743631" elapsed="0.000478"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:30.744463" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:41:30.744256" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:30.744207" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:30.744714" 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-19T02:41:30.752334" 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-19T02:41:30.752907" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:30.753311" 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-19T02:41:30.746120" elapsed="0.007404"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:30.331781" elapsed="0.421970"/>
</kw>
<msg time="2026-04-19T02:41:30.754118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:30.330811" elapsed="0.423374"/>
</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-19T02:41:30.330056" elapsed="0.424214"/>
</kw>
<msg time="2026-04-19T02:41:30.754312" 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-19T02:41:30.329322" elapsed="0.425037"/>
</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-19T02:41:30.757704" 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-19T02:41:30.758292" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:30.758623" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:30.754673" elapsed="0.004106"/>
</kw>
<msg time="2026-04-19T02:41:30.758876" level="INFO">${output} = 1</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-19T02:41:30.327925" elapsed="0.430978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:30.759433" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:30.759166" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:30.759528" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:41:30.759703" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:30.325713" elapsed="0.434017"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:30.759814" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:41:30.759963" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:30.323494" elapsed="0.436493"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:30.760570" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:30.760161" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:30.322385" elapsed="0.438403">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:32.764293" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:32.763521" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:32.766146" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:32.765742" elapsed="0.000442"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:32.767356" 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-19T02:41:32.767502" 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-19T02:41:32.767128" elapsed="0.000419"/>
</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-19T02:41:32.772958" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:32.772288" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:32.772209" elapsed="0.000974"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:32.774910" 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-19T02:41:32.775221" 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-19T02:41:32.774234" elapsed="0.001093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:32.776888" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:32.776318" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:32.778707" 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-19T02:41:32.777993" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:32.781341" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:32.781422" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:32.781052" 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-19T02:41:32.781663" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:32.782951" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:33.099486" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:32.782621" elapsed="0.317019"/>
</kw>
<msg time="2026-04-19T02:41:33.099724" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:32.782248" elapsed="0.317569"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:32.780187" elapsed="0.319943"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:33.101795" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:33.124839" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:33.125414" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:33.125749" 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-19T02:41:33.101335" elapsed="0.024624"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:33.128299" elapsed="0.000977"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:33.130757" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:33.130132" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:33.131579" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:33.131159" elapsed="0.000536"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:33.131069" 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-19T02:41:33.132308" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-19T02:41:33.131986" elapsed="0.000483"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:33.131915" elapsed="0.000639"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:33.132669" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:33.139654" 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-19T02:41:33.140452" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:33.140945" elapsed="0.000196"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:33.134801" elapsed="0.006496"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:32.770290" elapsed="0.371281"/>
</kw>
<msg time="2026-04-19T02:41:33.141883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:32.769309" elapsed="0.372636"/>
</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-19T02:41:32.768512" elapsed="0.373612"/>
</kw>
<msg time="2026-04-19T02:41:33.142170" 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-19T02:41:32.767771" elapsed="0.374447"/>
</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-19T02:41:33.145307" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:41:33.145794" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:33.146161" 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-19T02:41:33.142509" elapsed="0.003806"/>
</kw>
<msg time="2026-04-19T02:41:33.146412" level="INFO">${output} = 1</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-19T02:41:32.766490" elapsed="0.379948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:33.146897" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:33.146640" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:33.146986" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:41:33.147166" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:32.765067" elapsed="0.382125"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:33.147241" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:33.147386" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:32.762679" elapsed="0.384732"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:33.147959" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:33.147568" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:32.761633" elapsed="0.386526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:35.151695" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:35.150931" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:35.153791" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:35.153187" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:35.155662" 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-19T02:41:35.156027" 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-19T02:41:35.155336" elapsed="0.000786"/>
</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-19T02:41:35.161263" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:35.160780" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:35.160723" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:35.163096" 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-19T02:41:35.163347" 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-19T02:41:35.162414" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:35.164979" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:35.164435" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:35.166853" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:35.166144" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:35.169324" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:35.169403" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:35.168937" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:35.169639" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:35.170922" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:35.494173" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:35.170596" elapsed="0.323729"/>
</kw>
<msg time="2026-04-19T02:41:35.494406" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:35.170234" elapsed="0.324258"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:35.168181" elapsed="0.326587"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:35.496276" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:35.519521" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:35.520100" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:35.520464" 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-19T02:41:35.495866" elapsed="0.024825"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:35.523450" elapsed="0.000932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:35.526774" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:35.525687" elapsed="0.001325"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:35.527741" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:35.527404" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:35.527279" elapsed="0.000646"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:35.528434" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:41:35.528153" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:35.528081" elapsed="0.000574"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:35.528769" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:35.535575" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:41:35.536209" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:35.536583" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:35.530811" elapsed="0.005982"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:35.159394" elapsed="0.377626"/>
</kw>
<msg time="2026-04-19T02:41:35.537468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:35.158699" elapsed="0.378829"/>
</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-19T02:41:35.157665" elapsed="0.379946"/>
</kw>
<msg time="2026-04-19T02:41:35.537653" 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-19T02:41:35.156485" elapsed="0.381214"/>
</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-19T02:41:35.540677" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:41:35.541169" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:35.541471" 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-19T02:41:35.537991" elapsed="0.003628"/>
</kw>
<msg time="2026-04-19T02:41:35.541710" level="INFO">${output} = 1</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-19T02:41:35.154383" elapsed="0.387352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:35.542232" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:35.541913" elapsed="0.000389"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:35.542361" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:41:35.542521" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:35.152244" elapsed="0.390303"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:35.542595" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:41:35.542743" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:35.150104" elapsed="0.392664"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:35.543381" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:35.542928" elapsed="0.000528">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:35.148997" elapsed="0.394569">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:37.546976" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:37.546240" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:37.549182" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:37.548539" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:37.550988" 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-19T02:41:37.551247" 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-19T02:41:37.550663" elapsed="0.000645"/>
</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-19T02:41:37.556342" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:37.555851" elapsed="0.000634"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:37.555559" elapsed="0.000987"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:37.557954" 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-19T02:41:37.558213" 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-19T02:41:37.557521" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:37.559829" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:37.559282" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:37.561714" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:37.560919" elapsed="0.000892"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:37.564123" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:37.564201" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:37.563826" 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-19T02:41:37.564439" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:37.565883" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:37.891166" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:37.565556" elapsed="0.325697"/>
</kw>
<msg time="2026-04-19T02:41:37.891316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:37.564997" elapsed="0.326391"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:37.563041" elapsed="0.328596"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:37.892977" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:37.915795" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:37.916322" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:37.916652" 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-19T02:41:37.892646" elapsed="0.024215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:37.919095" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:37.921612" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:37.920977" 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-19T02:41:37.922334" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:37.921990" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:37.921909" 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-19T02:41:37.923049" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:41:37.922738" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:37.922668" elapsed="0.000615"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:37.923398" elapsed="0.000055"/>
</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-19T02:41:37.929801" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:41:37.930353" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:37.930701" 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-19T02:41:37.925541" elapsed="0.005364"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:37.554240" elapsed="0.376904"/>
</kw>
<msg time="2026-04-19T02:41:37.931490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:37.553531" elapsed="0.378036"/>
</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-19T02:41:37.552866" elapsed="0.378792"/>
</kw>
<msg time="2026-04-19T02:41:37.931699" 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-19T02:41:37.551710" elapsed="0.380035"/>
</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-19T02:41:37.934790" 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-19T02:41:37.935284" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:37.935605" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:37.932050" elapsed="0.003705"/>
</kw>
<msg time="2026-04-19T02:41:37.935844" level="INFO">${output} = 1</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-19T02:41:37.549722" elapsed="0.386148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:37.936315" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:37.936064" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:37.936403" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:37.936555" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:37.547578" elapsed="0.389003"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:37.936628" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:37.936771" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:37.545407" elapsed="0.391389"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:37.937375" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:37.936951" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:37.544375" elapsed="0.393179">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:39.941081" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:39.940277" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:39.943199" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:39.942563" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:39.945070" 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-19T02:41:39.945303" 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-19T02:41:39.944712" elapsed="0.000651"/>
</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-19T02:41:39.951813" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:39.951339" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:39.951027" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:39.953414" 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-19T02:41:39.953653" 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-19T02:41:39.952962" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:39.955266" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:39.954715" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:39.957269" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:39.956507" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:39.959673" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:39.959751" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:39.959385" 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-19T02:41:39.959991" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:39.961412" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:40.280668" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:39.961083" elapsed="0.319844"/>
</kw>
<msg time="2026-04-19T02:41:40.281108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:39.960697" elapsed="0.320562"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:39.958592" elapsed="0.323112"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:40.283161" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:40.306087" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:40.306594" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:40.306927" 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-19T02:41:40.282765" elapsed="0.024408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:40.309471" elapsed="0.000625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:40.311583" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:40.310932" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:40.312383" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:40.311973" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:40.311888" elapsed="0.000692"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:40.313148" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:41:40.312818" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:40.312729" elapsed="0.000659"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:40.313506" elapsed="0.000056"/>
</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-19T02:41:40.319840" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:40.320501" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:40.320876" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:40.315518" elapsed="0.005585"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:39.949715" elapsed="0.371618"/>
</kw>
<msg time="2026-04-19T02:41:40.321662" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:39.948127" elapsed="0.373595"/>
</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-19T02:41:39.946870" elapsed="0.374934"/>
</kw>
<msg time="2026-04-19T02:41:40.321845" 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-19T02:41:39.945714" elapsed="0.376187"/>
</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-19T02:41:40.325121" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:41:40.325610" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:40.325929" elapsed="0.000122"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:40.322275" elapsed="0.003832"/>
</kw>
<msg time="2026-04-19T02:41:40.326201" level="INFO">${output} = 1</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-19T02:41:39.943741" elapsed="0.382485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:40.326662" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:40.326409" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:40.326752" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:41:40.326928" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:39.941615" elapsed="0.385347"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:40.327013" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T02:41:40.327181" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:39.939431" elapsed="0.387775"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:40.327765" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:40.327362" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:39.938343" elapsed="0.389624">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:42.331460" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:42.330697" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:42.333584" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:42.332922" elapsed="0.000727"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:42.335478" 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-19T02:41:42.335703" 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-19T02:41:42.335148" elapsed="0.000615"/>
</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-19T02:41:42.343151" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:42.342604" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:42.340711" elapsed="0.002581"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:42.344743" 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-19T02:41:42.344989" 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-19T02:41:42.344268" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:42.346649" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:42.346110" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:42.348497" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:42.347785" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:42.350849" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:42.350925" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:42.350562" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:42.351187" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:42.352500" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:42.674277" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:42.352178" elapsed="0.322300"/>
</kw>
<msg time="2026-04-19T02:41:42.674566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:42.351802" elapsed="0.322864"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:42.349778" elapsed="0.325203"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:42.676525" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:42.699627" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:42.700288" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:42.700623" 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-19T02:41:42.676125" elapsed="0.024719"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:42.703290" elapsed="0.000997"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:42.706656" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:42.705569" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:42.707747" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:42.707252" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:42.707129" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:42.708813" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:41:42.708378" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:42.708271" elapsed="0.000955"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:42.709400" elapsed="0.000082"/>
</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-19T02:41:42.715122" 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-19T02:41:42.715693" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:42.716085" 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-19T02:41:42.711625" elapsed="0.004675"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:42.339408" elapsed="0.377117"/>
</kw>
<msg time="2026-04-19T02:41:42.716848" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:42.338575" elapsed="0.378338"/>
</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-19T02:41:42.337304" elapsed="0.379691"/>
</kw>
<msg time="2026-04-19T02:41:42.717062" 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-19T02:41:42.336143" elapsed="0.380968"/>
</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-19T02:41:42.720213" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:41:42.720697" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:42.720995" elapsed="0.000127"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:42.717409" elapsed="0.003765"/>
</kw>
<msg time="2026-04-19T02:41:42.721339" level="INFO">${output} = 1</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-19T02:41:42.334200" elapsed="0.387165"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:42.721829" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:42.721572" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:42.721920" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:41:42.722214" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:42.331982" elapsed="0.390260"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:42.722291" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:41:42.722437" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:42.329852" elapsed="0.392609"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:42.723020" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:42.722620" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:42.328746" elapsed="0.394480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:44.726743" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:44.725979" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:44.728898" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:44.728284" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:44.730784" 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-19T02:41:44.731013" 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-19T02:41:44.730458" elapsed="0.000698"/>
</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-19T02:41:44.736807" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:44.736169" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:44.736090" elapsed="0.000909"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:44.739399" 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-19T02:41:44.739748" 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-19T02:41:44.738410" elapsed="0.001463"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:44.741465" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:44.740895" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:44.743316" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:44.742568" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:44.745855" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:44.745932" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:44.745567" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:44.746184" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:44.747493" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:45.095923" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:44.747145" elapsed="0.349013"/>
</kw>
<msg time="2026-04-19T02:41:45.096237" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:44.746739" elapsed="0.349580"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:44.744788" elapsed="0.351799"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:45.098064" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:45.120731" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:45.121262" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:45.121594" 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-19T02:41:45.097665" elapsed="0.024138"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:45.124086" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:45.127366" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:45.126367" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:45.128498" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:45.127940" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:45.127822" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:45.129575" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:41:45.129131" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:45.128995" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:45.130264" elapsed="0.000087"/>
</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-19T02:41:45.135882" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:41:45.136444" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:45.136803" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:45.132500" elapsed="0.004512"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:44.734183" elapsed="0.403064"/>
</kw>
<msg time="2026-04-19T02:41:45.137550" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:44.733214" elapsed="0.404395"/>
</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-19T02:41:44.732379" elapsed="0.405313"/>
</kw>
<msg time="2026-04-19T02:41:45.137733" 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-19T02:41:44.731521" elapsed="0.406257"/>
</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-19T02:41:45.140839" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:41:45.141331" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:45.141627" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:45.138139" elapsed="0.003636"/>
</kw>
<msg time="2026-04-19T02:41:45.141866" level="INFO">${output} = 1</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-19T02:41:44.729480" elapsed="0.412411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:45.142423" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:45.142174" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:45.142512" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:41:45.142665" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:44.727337" elapsed="0.415354"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:45.142737" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:45.142882" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:44.725170" elapsed="0.417736"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:45.143595" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:45.143168" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:44.724129" elapsed="0.419646">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:47.147344" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:47.146545" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:47.149268" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:47.148860" elapsed="0.000445"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:47.150422" 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-19T02:41:47.150566" 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-19T02:41:47.150201" elapsed="0.000402"/>
</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-19T02:41:47.155991" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:47.155366" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:47.155290" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:47.158226" 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-19T02:41:47.158483" 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-19T02:41:47.157506" elapsed="0.001079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:47.160173" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:47.159602" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:47.161996" 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-19T02:41:47.161292" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:47.164485" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:47.164564" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:47.164164" 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-19T02:41:47.164804" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:47.166084" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:47.526661" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:47.165742" elapsed="0.361063"/>
</kw>
<msg time="2026-04-19T02:41:47.526891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:47.165380" elapsed="0.361602"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:47.163391" elapsed="0.363898"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:47.528850" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:47.552196" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:47.552759" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:47.553136" 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-19T02:41:47.528406" elapsed="0.024943"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:47.555673" elapsed="0.001012"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:47.559171" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:47.558003" elapsed="0.001417"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:47.560352" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:47.559782" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:47.559650" elapsed="0.001068"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:47.561244" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:41:47.561011" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:47.560951" elapsed="0.000465"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:47.561496" 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-19T02:41:47.566416" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:41:47.567136" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:47.567498" 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-19T02:41:47.562871" elapsed="0.004833"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:47.153430" elapsed="0.414506"/>
</kw>
<msg time="2026-04-19T02:41:47.568261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:47.152459" elapsed="0.415862"/>
</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-19T02:41:47.151562" elapsed="0.416845"/>
</kw>
<msg time="2026-04-19T02:41:47.568447" 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-19T02:41:47.150826" elapsed="0.417668"/>
</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-19T02:41:47.571651" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:41:47.572149" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:47.572456" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:47.568817" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T02:41:47.572732" level="INFO">${output} = 1</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-19T02:41:47.149607" elapsed="0.423152"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:47.573222" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:47.572951" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:47.573311" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:41:47.573468" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:47.147870" elapsed="0.425623"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:47.573541" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:47.573686" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:47.145686" elapsed="0.428025"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:47.574308" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:47.573871" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:47.144633" elapsed="0.429874">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:49.578220" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:49.577411" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:49.580519" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:49.579869" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:49.582413" 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-19T02:41:49.582644" 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-19T02:41:49.582077" elapsed="0.000628"/>
</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-19T02:41:49.590718" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:49.590087" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:49.589991" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:49.593234" 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-19T02:41:49.593571" 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-19T02:41:49.592276" elapsed="0.001469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:49.595352" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:49.594799" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:49.597182" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:49.596431" elapsed="0.000849"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:49.599538" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:49.599616" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:49.599257" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:49.599852" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:49.601299" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:49.933345" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:49.600788" elapsed="0.332687"/>
</kw>
<msg time="2026-04-19T02:41:49.933554" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:49.600423" elapsed="0.333218"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:49.598482" elapsed="0.335457"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:49.935435" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:49.958590" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:49.959433" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:49.959785" 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-19T02:41:49.935023" elapsed="0.024982"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:49.962494" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:49.964732" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:49.964126" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:49.965559" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:49.965122" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:49.965018" 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-19T02:41:49.966318" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:41:49.966006" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:49.965937" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:49.966659" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:49.973444" elapsed="0.000498"/>
</kw>
<kw name="Open 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-19T02:41:49.974259" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:49.974759" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:49.968602" elapsed="0.006514"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:49.587069" elapsed="0.388273"/>
</kw>
<msg time="2026-04-19T02:41:49.975654" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:49.585517" elapsed="0.390197"/>
</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-19T02:41:49.584275" elapsed="0.391525"/>
</kw>
<msg time="2026-04-19T02:41:49.975842" 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-19T02:41:49.583093" elapsed="0.392796"/>
</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-19T02:41:49.979011" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:49.979513" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:49.979812" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:49.976197" elapsed="0.003765"/>
</kw>
<msg time="2026-04-19T02:41:49.980071" level="INFO">${output} = 1</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-19T02:41:49.581096" elapsed="0.399002"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:49.980541" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:49.980290" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:49.980630" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:41:49.980786" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:49.578914" elapsed="0.401897"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:49.980858" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:49.981002" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:49.576559" elapsed="0.404467"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:49.981589" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:49.981198" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:49.575467" elapsed="0.406309">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:51.985373" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:51.984597" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:51.987563" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:51.986864" elapsed="0.000762"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:51.988887" 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-19T02:41:51.989158" 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-19T02:41:51.988668" elapsed="0.000530"/>
</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-19T02:41:51.994808" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:51.994167" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:51.993778" elapsed="0.001279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:51.996872" 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-19T02:41:51.997141" 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-19T02:41:51.996438" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:51.998746" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:51.998207" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:52.000581" 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-19T02:41:51.999851" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:52.003009" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:52.003105" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:52.002694" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:52.003343" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:52.004611" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:52.337547" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:52.004286" elapsed="0.333370"/>
</kw>
<msg time="2026-04-19T02:41:52.337727" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:52.003898" elapsed="0.333911"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:52.001921" elapsed="0.336155"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:52.339473" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:52.361704" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:52.362244" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:52.362579" 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-19T02:41:52.339117" elapsed="0.023673"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:52.365068" elapsed="0.000872"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:52.368231" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:52.367257" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:52.369343" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:52.368813" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:52.368690" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:52.370446" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:41:52.369959" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:52.369849" elapsed="0.000953"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:52.370982" elapsed="0.000282"/>
</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-19T02:41:52.376356" 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-19T02:41:52.376964" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:52.377345" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:52.372994" elapsed="0.004564"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:51.991933" elapsed="0.385851"/>
</kw>
<msg time="2026-04-19T02:41:52.378111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:51.990960" elapsed="0.387210"/>
</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-19T02:41:51.990174" elapsed="0.388079"/>
</kw>
<msg time="2026-04-19T02:41:52.378296" 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-19T02:41:51.989426" elapsed="0.388916"/>
</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-19T02:41:52.381368" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:41:52.381849" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:52.382159" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:52.378634" elapsed="0.003677"/>
</kw>
<msg time="2026-04-19T02:41:52.382403" level="INFO">${output} = 1</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-19T02:41:51.988085" elapsed="0.394344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:52.382859" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:52.382608" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:52.382949" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:52.383235" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:51.985910" elapsed="0.397352"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:52.383311" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:41:52.383459" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:51.983743" elapsed="0.399741"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:52.384052" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:52.383643" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:51.982616" elapsed="0.401618">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:54.387688" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:54.386921" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:54.390506" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:54.389561" elapsed="0.001034"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:54.392565" 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-19T02:41:54.392793" 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-19T02:41:54.392231" elapsed="0.000622"/>
</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-19T02:41:54.400087" elapsed="0.000086"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:54.399424" elapsed="0.000899"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:54.399047" elapsed="0.001362"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:54.402058" 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-19T02:41:54.402303" 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-19T02:41:54.401590" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:54.403916" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:54.403371" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:54.405718" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:54.405010" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:54.408322" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:54.408401" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:54.408002" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:54.408638" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:54.409899" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:54.717754" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:54.409575" elapsed="0.308336"/>
</kw>
<msg time="2026-04-19T02:41:54.717998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:54.409212" elapsed="0.308900"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:54.407254" elapsed="0.311144"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:54.719921" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:54.732180" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:54.732790" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:54.733172" 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-19T02:41:54.719512" elapsed="0.013892"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:54.735671" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:54.738333" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:54.737683" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:54.739052" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:54.738703" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:54.738622" elapsed="0.000621"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:54.739725" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:41:54.739444" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:54.739377" elapsed="0.000569"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:54.740078" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:54.746696" 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-19T02:41:54.747468" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:54.747954" 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-19T02:41:54.741917" elapsed="0.006349"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:54.397204" elapsed="0.351421"/>
</kw>
<msg time="2026-04-19T02:41:54.749163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:54.395693" elapsed="0.353536"/>
</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-19T02:41:54.394463" elapsed="0.354849"/>
</kw>
<msg time="2026-04-19T02:41:54.749353" 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-19T02:41:54.393245" elapsed="0.356154"/>
</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-19T02:41:54.752460" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:41:54.752934" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:54.753243" 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-19T02:41:54.749690" elapsed="0.003700"/>
</kw>
<msg time="2026-04-19T02:41:54.753481" level="INFO">${output} = 1</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-19T02:41:54.391236" elapsed="0.362270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:54.753935" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:54.753686" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:54.754079" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:41:54.754255" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:54.388301" elapsed="0.365981"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:54.754329" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:41:54.754474" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:54.386102" elapsed="0.368398"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:54.755075" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:54.754657" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:54.385002" elapsed="0.370268">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:56.759542" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:56.758641" elapsed="0.000974"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:56.761270" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:56.760823" elapsed="0.000492"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:56.762635" 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-19T02:41:56.762792" 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-19T02:41:56.762390" elapsed="0.000442"/>
</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-19T02:41:56.771309" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:56.770616" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:56.767846" elapsed="0.003630"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:56.773219" 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-19T02:41:56.773534" 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-19T02:41:56.772660" elapsed="0.000979"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:56.775439" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:56.774650" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:56.777530" 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-19T02:41:56.776668" elapsed="0.000965"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:56.780250" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:56.780343" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:56.779880" elapsed="0.000488"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:56.780593" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:56.781974" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:57.104346" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:56.781618" elapsed="0.322900"/>
</kw>
<msg time="2026-04-19T02:41:57.104607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:56.781204" elapsed="0.323502"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:56.778906" elapsed="0.326092"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:57.106565" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:57.129777" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:57.130374" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:57.130703" 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-19T02:41:57.106160" elapsed="0.024754"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:57.133171" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:57.136347" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:57.135362" elapsed="0.001213"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:57.137457" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:57.136924" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:57.136797" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:57.138349" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:41:57.138144" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:57.138019" elapsed="0.000500"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:57.138602" 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-19T02:41:57.143687" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:41:57.144249" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:57.144606" 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-19T02:41:57.140005" elapsed="0.004809"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:56.765812" elapsed="0.379239"/>
</kw>
<msg time="2026-04-19T02:41:57.145447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:56.764736" elapsed="0.380773"/>
</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-19T02:41:56.763909" elapsed="0.381724"/>
</kw>
<msg time="2026-04-19T02:41:57.145682" 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-19T02:41:56.763094" elapsed="0.382636"/>
</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-19T02:41:57.148842" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:41:57.149331" elapsed="0.000143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:57.149635" 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-19T02:41:57.146110" elapsed="0.003672"/>
</kw>
<msg time="2026-04-19T02:41:57.149873" level="INFO">${output} = 1</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-19T02:41:56.761731" elapsed="0.388168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:57.150345" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:57.150100" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:57.150432" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:41:57.150582" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:56.760140" elapsed="0.390467"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:57.150653" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:41:57.150796" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:56.757565" elapsed="0.393256"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:57.151469" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:57.150977" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:56.756221" elapsed="0.395434">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:41:59.155256" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:41:59.154409" elapsed="0.000919"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:41:59.157372" level="INFO">${member_ip} = 10.30.171.206</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-19T02:41:59.156727" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:59.159258" 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-19T02:41:59.159486" 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-19T02:41:59.158886" elapsed="0.000658"/>
</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-19T02:41:59.165458" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:41:59.164967" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:59.164908" elapsed="0.000692"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:59.167299" 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-19T02:41:59.167546" 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-19T02:41:59.166574" elapsed="0.001073"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:59.169191" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:59.168616" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:41:59.170966" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:41:59.170267" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:41:59.173460" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:41:59.173537" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:41:59.173170" 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-19T02:41:59.173769" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:41:59.175137" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:41:59.542127" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:41:59.174796" elapsed="0.367514"/>
</kw>
<msg time="2026-04-19T02:41:59.542412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:59.174405" elapsed="0.368118"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:41:59.172274" elapsed="0.370627"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:41:59.544813" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:41:59.568086" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:41:59.568423" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:41:59.568646" 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-19T02:41:59.544346" elapsed="0.024441"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:59.570298" elapsed="0.000625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:59.572444" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:59.571780" 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-19T02:41:59.573208" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:41:59.572838" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:59.572754" elapsed="0.000650"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:41:59.573917" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:41:59.573618" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:41:59.573547" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:41:59.574297" elapsed="0.000056"/>
</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-19T02:41:59.579741" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:41:59.580311" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:59.580670" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:59.576332" elapsed="0.004548"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:41:59.163601" elapsed="0.417610"/>
</kw>
<msg time="2026-04-19T02:41:59.581520" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:41:59.162322" elapsed="0.419256"/>
</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-19T02:41:59.161103" elapsed="0.420557"/>
</kw>
<msg time="2026-04-19T02:41:59.581702" 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-19T02:41:59.159895" elapsed="0.421854"/>
</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-19T02:41:59.584736" elapsed="0.000417"/>
</kw>
<kw name="Open 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-19T02:41:59.585328" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:41:59.585626" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:41:59.582058" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T02:41:59.585930" level="INFO">${output} = 1</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-19T02:41:59.157919" elapsed="0.428037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:41:59.586407" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:41:59.586152" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:41:59.586496" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:41:59.586650" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:41:59.155785" elapsed="0.430890"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:41:59.586724" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:41:59.586896" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:41:59.153566" elapsed="0.433357"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:41:59.587498" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:41:59.587097" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:41:59.152490" elapsed="0.435192">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:01.592218" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:01.591261" elapsed="0.001039"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:01.593848" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:01.593444" elapsed="0.000432"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:01.594719" 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-19T02:42:01.594822" 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-19T02:42:01.594549" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:42:01.598798" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:01.598323" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:01.598263" elapsed="0.000674"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:01.600705" 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-19T02:42:01.600980" 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-19T02:42:01.599965" elapsed="0.001175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:01.602731" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:01.602174" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:01.604659" 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-19T02:42:01.603864" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:01.607325" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:01.607406" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:01.606884" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:01.607649" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:01.609396" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:01.978023" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:41:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:01.608998" elapsed="0.369283"/>
</kw>
<msg time="2026-04-19T02:42:01.978365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:01.608628" elapsed="0.369828"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:01.606057" elapsed="0.372672"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:01.980259" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:02.003875" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:02.004530" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:02.004876" 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-19T02:42:01.979829" elapsed="0.025312"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:02.007518" elapsed="0.001121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:02.010414" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:02.009759" 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-19T02:42:02.011210" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:02.010847" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:02.010762" elapsed="0.000648"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:02.011936" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:42:02.011640" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:02.011566" elapsed="0.000654"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:02.012340" elapsed="0.000057"/>
</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-19T02:42:02.018378" 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-19T02:42:02.018959" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:02.019348" 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-19T02:42:02.014271" elapsed="0.005290"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:01.596827" elapsed="0.422958"/>
</kw>
<msg time="2026-04-19T02:42:02.020112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:01.596136" elapsed="0.424052"/>
</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-19T02:42:01.595546" elapsed="0.424729"/>
</kw>
<msg time="2026-04-19T02:42:02.020317" 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-19T02:42:01.595010" elapsed="0.425355"/>
</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-19T02:42:02.023470" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:42:02.023956" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:02.024477" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:02.020660" elapsed="0.003994"/>
</kw>
<msg time="2026-04-19T02:42:02.024749" level="INFO">${output} = 1</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-19T02:42:01.594131" elapsed="0.430645"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:02.025351" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:02.024958" elapsed="0.000440"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:02.025443" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:42:02.025600" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:01.592770" elapsed="0.432856"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:02.025674" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:02.025822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:01.590400" elapsed="0.435448"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:02.026503" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:02.026095" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:01.588630" elapsed="0.438067">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:04.030232" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:04.029464" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:04.032339" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:04.031704" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:04.033989" 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-19T02:42:04.034156" 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-19T02:42:04.033747" elapsed="0.000447"/>
</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-19T02:42:04.039503" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:04.038854" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:04.038778" elapsed="0.000914"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:04.041888" 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-19T02:42:04.042159" 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-19T02:42:04.041112" elapsed="0.001145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:04.043769" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:04.043231" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:04.045573" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:04.044855" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:04.047970" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:04.048065" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:04.047687" 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-19T02:42:04.048301" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:04.049607" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:04.367386" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:04.049277" elapsed="0.318266"/>
</kw>
<msg time="2026-04-19T02:42:04.367634" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:04.048873" elapsed="0.318863"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:04.046912" elapsed="0.321138"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:04.369577" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:04.392193" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:04.392723" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:04.393094" 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-19T02:42:04.369179" elapsed="0.024133"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:04.395523" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:04.398759" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:04.397728" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:04.399901" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:04.399385" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:04.399257" elapsed="0.000978"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:04.401099" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:42:04.400612" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:04.400457" elapsed="0.001015"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:04.401611" 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-19T02:42:04.406469" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:42:04.407043" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:04.407403" 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-19T02:42:04.402998" elapsed="0.004610"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:04.036863" elapsed="0.370966"/>
</kw>
<msg time="2026-04-19T02:42:04.408147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:04.035894" elapsed="0.372310"/>
</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-19T02:42:04.035147" elapsed="0.373140"/>
</kw>
<msg time="2026-04-19T02:42:04.408328" 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-19T02:42:04.034416" elapsed="0.373958"/>
</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-19T02:42:04.411417" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:42:04.411891" elapsed="0.000216"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:04.412259" 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-19T02:42:04.408675" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T02:42:04.412513" level="INFO">${output} = 1</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-19T02:42:04.032925" elapsed="0.379614"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:04.412979" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:04.412717" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:04.413084" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:42:04.413248" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:04.030755" elapsed="0.382519"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:04.413321" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:04.413468" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:04.028606" elapsed="0.384887"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:04.414134" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:04.413651" elapsed="0.000566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:04.027512" elapsed="0.386818">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:06.417857" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:06.417125" elapsed="0.000801"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:06.420180" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:06.419540" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:06.422087" 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-19T02:42:06.422317" 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-19T02:42:06.421711" elapsed="0.000666"/>
</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-19T02:42:06.430413" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:06.429927" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:06.429639" elapsed="0.000914"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:06.431992" 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-19T02:42:06.432256" 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-19T02:42:06.431525" elapsed="0.000830"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:06.433872" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:06.433331" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:06.435665" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:06.434953" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:06.438089" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:06.438168" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:06.437767" 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-19T02:42:06.438403" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:06.439911" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:06.758629" 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 Sun Apr 19 02:41:08 UTC 2026

  System load:  0.1                Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:06.439357" elapsed="0.319406"/>
</kw>
<msg time="2026-04-19T02:42:06.758842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:06.438964" elapsed="0.319962"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:06.437000" elapsed="0.322220"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:06.760674" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:06.783491" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:06.783973" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:06.784352" 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-19T02:42:06.760290" elapsed="0.024273"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:06.786817" elapsed="0.000856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:06.789900" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:06.788919" elapsed="0.001293"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:06.791227" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:06.790552" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:06.790434" elapsed="0.001091"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:06.792325" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:42:06.791841" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:06.791735" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:06.792891" elapsed="0.000092"/>
</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-19T02:42:06.797960" 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-19T02:42:06.798609" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:06.798967" 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-19T02:42:06.794698" elapsed="0.004498"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:06.426693" elapsed="0.372728"/>
</kw>
<msg time="2026-04-19T02:42:06.799735" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:06.425210" elapsed="0.374582"/>
</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-19T02:42:06.423906" elapsed="0.375969"/>
</kw>
<msg time="2026-04-19T02:42:06.799916" 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-19T02:42:06.422736" elapsed="0.377226"/>
</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-19T02:42:06.803048" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:42:06.803529" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:06.803824" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:06.800269" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T02:42:06.804090" level="INFO">${output} = 1</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-19T02:42:06.420732" elapsed="0.383385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:06.804549" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:06.804296" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:06.804638" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:06.804791" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:06.418584" elapsed="0.386233"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:06.804889" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:42:06.805062" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:06.416217" elapsed="0.388872"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:06.805641" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:06.805247" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:06.415168" elapsed="0.390652">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:08.809912" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:08.809095" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:08.812211" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:08.811528" elapsed="0.000748"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:08.814001" 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-19T02:42:08.814274" 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-19T02:42:08.813785" elapsed="0.000529"/>
</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-19T02:42:08.819894" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:08.819250" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:08.818857" elapsed="0.001254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:08.822162" 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-19T02:42:08.822507" 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-19T02:42:08.821506" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:08.824977" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:08.824075" elapsed="0.001079"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:08.827374" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:08.826385" elapsed="0.001086"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:08.829764" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:08.829857" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:08.829469" 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-19T02:42:08.830153" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:08.831535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:09.433293" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:08.831212" elapsed="0.602272"/>
</kw>
<msg time="2026-04-19T02:42:09.433566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:08.830711" elapsed="0.602946"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:08.828674" elapsed="0.605269"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:09.435417" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:09.457916" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:09.458461" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:09.458796" 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-19T02:42:09.435010" elapsed="0.024001"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:09.461258" elapsed="0.000840"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:09.463526" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:09.462895" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:09.464260" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:09.463894" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:09.463814" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:09.464930" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:42:09.464651" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:09.464578" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:09.465284" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:09.471992" elapsed="0.000482"/>
</kw>
<kw name="Open 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-19T02:42:09.472844" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:09.473364" elapsed="0.000171"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:09.467243" elapsed="0.006443"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:08.816966" elapsed="0.657055"/>
</kw>
<msg time="2026-04-19T02:42:09.474344" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:08.816050" elapsed="0.658351"/>
</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-19T02:42:08.815285" elapsed="0.659200"/>
</kw>
<msg time="2026-04-19T02:42:09.474528" 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-19T02:42:08.814539" elapsed="0.660036"/>
</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-19T02:42:09.477617" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:42:09.478112" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:09.478414" 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-19T02:42:09.474865" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T02:42:09.478658" level="INFO">${output} = 1</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-19T02:42:08.812792" elapsed="0.665891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:09.479137" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:09.478861" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:09.479225" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:09.479379" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:08.810505" elapsed="0.668899"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:09.479451" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:09.479597" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:08.808078" elapsed="0.671544"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:09.480190" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:09.479779" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:08.806649" elapsed="0.673729">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:11.484085" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:11.483322" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:11.486192" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:11.485543" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:11.487993" 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-19T02:42:11.488253" 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-19T02:42:11.487670" elapsed="0.000643"/>
</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-19T02:42:11.495501" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:11.494948" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:11.492977" elapsed="0.002747"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:11.497192" 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-19T02:42:11.497436" 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-19T02:42:11.496719" elapsed="0.000817"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:11.499085" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:11.498527" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:11.500891" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:11.500183" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:11.503342" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:11.503421" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:11.503052" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:11.503658" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:11.504931" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:11.827349" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:11.504602" elapsed="0.322877"/>
</kw>
<msg time="2026-04-19T02:42:11.827558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:11.504236" elapsed="0.323411"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:11.502278" elapsed="0.325634"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:11.829371" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:11.852821" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:11.853364" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:11.853705" 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-19T02:42:11.828976" elapsed="0.024942"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:11.856202" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:11.859408" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:11.858431" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:11.860532" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:11.860000" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:11.859878" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:11.861626" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:42:11.861180" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:11.861067" elapsed="0.000910"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:11.862437" elapsed="0.000087"/>
</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-19T02:42:11.867288" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:11.867831" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:11.868203" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:11.863915" elapsed="0.004501"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:11.491643" elapsed="0.377024"/>
</kw>
<msg time="2026-04-19T02:42:11.869061" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:11.490946" elapsed="0.378173"/>
</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-19T02:42:11.489825" elapsed="0.379376"/>
</kw>
<msg time="2026-04-19T02:42:11.869242" 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-19T02:42:11.488664" elapsed="0.380624"/>
</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-19T02:42:11.872325" 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-19T02:42:11.872802" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:11.873114" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:11.869582" elapsed="0.003683"/>
</kw>
<msg time="2026-04-19T02:42:11.873355" level="INFO">${output} = 1</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-19T02:42:11.486730" elapsed="0.386651"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:11.873810" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:11.873558" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:11.873898" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:11.874188" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:11.484608" elapsed="0.389606"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:11.874263" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:11.874410" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:11.482457" elapsed="0.391979"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:11.874986" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:11.874593" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:11.481374" elapsed="0.393818">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:13.879094" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:13.878183" elapsed="0.000981"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:13.881498" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:13.880742" elapsed="0.000827"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:13.883644" 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-19T02:42:13.883833" 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-19T02:42:13.883266" elapsed="0.000627"/>
</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-19T02:42:13.890049" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:13.889293" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:13.889210" elapsed="0.001062"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:13.892566" 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-19T02:42:13.892855" 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-19T02:42:13.891803" elapsed="0.001157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:13.894620" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:13.893987" elapsed="0.000750"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:13.896727" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:13.895854" elapsed="0.000989"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:13.899374" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:13.899454" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:13.899017" 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-19T02:42:13.899706" elapsed="0.000614"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:13.901367" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:14.215835" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:13.900978" elapsed="0.315065"/>
</kw>
<msg time="2026-04-19T02:42:14.216145" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:13.900553" elapsed="0.315694"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:13.898132" elapsed="0.318428"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:14.218115" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:14.241129" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:14.241632" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:14.241969" 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-19T02:42:14.217683" elapsed="0.024545"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:14.244682" elapsed="0.001265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:14.248470" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:14.247438" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:14.249587" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:14.249079" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:14.248923" elapsed="0.000977"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:14.250789" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:42:14.250287" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:14.250174" elapsed="0.001141"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:14.251493" elapsed="0.000082"/>
</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-19T02:42:14.256502" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:14.257066" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:14.257429" 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-19T02:42:14.253005" elapsed="0.004632"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:13.887006" elapsed="0.370858"/>
</kw>
<msg time="2026-04-19T02:42:14.258205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:13.885881" elapsed="0.372382"/>
</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-19T02:42:13.885000" elapsed="0.373348"/>
</kw>
<msg time="2026-04-19T02:42:14.258389" 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-19T02:42:13.884174" elapsed="0.374261"/>
</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-19T02:42:14.261723" 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-19T02:42:14.262220" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:14.262518" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:14.258841" elapsed="0.003825"/>
</kw>
<msg time="2026-04-19T02:42:14.262788" level="INFO">${output} = 1</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-19T02:42:13.882143" elapsed="0.380671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:14.263262" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:14.262997" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:14.263350" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:42:14.263501" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:13.879683" elapsed="0.383842"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:14.263572" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:14.263720" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:13.877224" elapsed="0.386520"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:14.264325" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:14.263910" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:13.876003" elapsed="0.388518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:16.268269" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:16.267453" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:16.270540" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:16.269852" elapsed="0.000753"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:16.272617" 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-19T02:42:16.272864" 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-19T02:42:16.272221" elapsed="0.000706"/>
</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-19T02:42:16.278545" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:16.278076" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:16.278001" elapsed="0.000685"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:16.280425" 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-19T02:42:16.280671" 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-19T02:42:16.279704" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:16.282466" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:16.281764" elapsed="0.000812"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:16.284266" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:16.283555" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:16.286691" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:16.286770" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:16.286409" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:16.287005" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:16.288440" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:16.610738" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:16.288088" elapsed="0.322753"/>
</kw>
<msg time="2026-04-19T02:42:16.610910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:16.287698" elapsed="0.323289"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:16.285635" elapsed="0.325608"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:16.612660" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:16.635717" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:16.636452" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:16.636790" 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-19T02:42:16.612311" elapsed="0.024696"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:16.639314" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:16.641499" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:16.640874" elapsed="0.000769"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:16.642229" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:16.641864" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:16.641787" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:16.642898" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:42:16.642613" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:16.642545" elapsed="0.000598"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:16.643253" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:16.649931" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T02:42:16.650623" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:16.650984" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:16.645166" elapsed="0.006045"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:16.276657" elapsed="0.374777"/>
</kw>
<msg time="2026-04-19T02:42:16.651759" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:16.275934" elapsed="0.375884"/>
</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-19T02:42:16.274600" elapsed="0.377303"/>
</kw>
<msg time="2026-04-19T02:42:16.651945" 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-19T02:42:16.273348" elapsed="0.378644"/>
</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-19T02:42:16.655017" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:16.655529" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:16.655850" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:16.652327" elapsed="0.003673"/>
</kw>
<msg time="2026-04-19T02:42:16.656179" level="INFO">${output} = 1</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-19T02:42:16.271160" elapsed="0.385046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:16.656642" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:16.656391" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:16.656731" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:16.656889" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:16.268833" elapsed="0.388082"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:16.656962" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:16.657140" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:16.266521" elapsed="0.390645"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:16.657718" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:16.657326" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:16.265383" elapsed="0.392516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:18.661600" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:18.660774" elapsed="0.000896"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:18.663712" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:18.663109" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:18.665581" 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-19T02:42:18.665806" 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-19T02:42:18.665253" elapsed="0.000612"/>
</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-19T02:42:18.671649" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:18.671192" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:18.671131" elapsed="0.000653"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:18.673491" 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-19T02:42:18.673745" 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-19T02:42:18.672795" elapsed="0.001049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:18.675375" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:18.674811" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:18.677190" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:18.676467" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:18.679606" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:18.679684" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:18.679326" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:18.679919" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:18.681405" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:19.010236" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:18.680874" elapsed="0.329611"/>
</kw>
<msg time="2026-04-19T02:42:19.010567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:18.680511" elapsed="0.330141"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:18.678481" elapsed="0.332444"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:19.012453" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:19.035628" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:19.035979" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:19.036215" 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-19T02:42:19.012012" elapsed="0.024354"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:19.037802" elapsed="0.000621"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:19.039912" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:19.039254" elapsed="0.000831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:19.040654" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:19.040325" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:19.040233" elapsed="0.000606"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:19.041353" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:42:19.041067" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:19.040974" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:19.041695" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:19.048508" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T02:42:19.049289" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:19.049780" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:19.043674" elapsed="0.006516"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:18.669796" elapsed="0.380703"/>
</kw>
<msg time="2026-04-19T02:42:19.050919" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:18.668851" elapsed="0.382157"/>
</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-19T02:42:18.667413" elapsed="0.383732"/>
</kw>
<msg time="2026-04-19T02:42:19.051203" 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-19T02:42:18.666248" elapsed="0.385018"/>
</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-19T02:42:19.055595" elapsed="0.000454"/>
</kw>
<kw name="Open 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-19T02:42:19.056281" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:19.056727" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:19.051671" elapsed="0.005284"/>
</kw>
<msg time="2026-04-19T02:42:19.057078" level="INFO">${output} = 1</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-19T02:42:18.664304" elapsed="0.392800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:19.057532" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:19.057284" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:19.057620" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:19.057772" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:18.662162" elapsed="0.395636"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:19.057845" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:42:19.057989" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:18.659751" elapsed="0.398263"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:19.058681" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:19.058273" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:18.658674" elapsed="0.400200">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:21.062876" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:21.061961" elapsed="0.001023"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:21.065581" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:21.064741" elapsed="0.000908"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:21.067958" 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-19T02:42:21.068297" 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-19T02:42:21.067584" elapsed="0.000783"/>
</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-19T02:42:21.076044" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:21.075557" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:21.075255" elapsed="0.000935"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:21.077627" 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-19T02:42:21.077869" 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-19T02:42:21.077185" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:21.079492" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:21.078939" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:21.081368" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:21.080568" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:21.083704" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:21.083782" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:21.083416" 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-19T02:42:21.084076" elapsed="0.000526"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:21.086009" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:21.409979" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:21.085555" elapsed="0.324595"/>
</kw>
<msg time="2026-04-19T02:42:21.410236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:21.084828" elapsed="0.325498"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:21.082646" elapsed="0.327970"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:21.412133" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:21.435283" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:21.435778" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:21.436154" 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-19T02:42:21.411709" elapsed="0.024657"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:21.438576" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:21.441748" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:21.440704" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:21.442872" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:21.442364" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:21.442240" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:21.444182" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:42:21.443640" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:21.443518" elapsed="0.001042"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:21.444799" elapsed="0.000096"/>
</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-19T02:42:21.450418" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:42:21.450967" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:21.451391" 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-19T02:42:21.446978" elapsed="0.004620"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:21.073800" elapsed="0.378020"/>
</kw>
<msg time="2026-04-19T02:42:21.452138" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:21.071868" elapsed="0.380327"/>
</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-19T02:42:21.070331" elapsed="0.381946"/>
</kw>
<msg time="2026-04-19T02:42:21.452318" 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-19T02:42:21.068789" elapsed="0.383575"/>
</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-19T02:42:21.455432" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:42:21.455907" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:21.456217" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:21.452653" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T02:42:21.456456" level="INFO">${output} = 1</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-19T02:42:21.066407" elapsed="0.390074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:21.456910" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:21.456660" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:21.457003" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:42:21.457175" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:21.063588" elapsed="0.393613"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:21.457896" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:42:21.458065" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:21.060928" elapsed="0.397163"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:21.458648" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:21.458252" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:21.059696" elapsed="0.399132">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:23.462404" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:23.461603" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:23.464651" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:23.464015" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:23.466514" 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-19T02:42:23.466737" 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-19T02:42:23.466174" elapsed="0.000621"/>
</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-19T02:42:23.473191" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:23.472701" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:23.472415" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:23.474753" 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-19T02:42:23.474992" 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-19T02:42:23.474322" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:23.476630" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:23.476094" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:23.478430" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:23.477707" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:23.481079" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:23.481159" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:23.480779" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:23.481393" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:23.482675" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:23.804732" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:23.482350" elapsed="0.322550"/>
</kw>
<msg time="2026-04-19T02:42:23.804999" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:23.481946" elapsed="0.323185"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:23.479716" elapsed="0.325726"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:23.807070" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:23.829932" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:23.830548" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:23.830895" 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-19T02:42:23.806627" elapsed="0.024533"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:23.833520" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:23.836877" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:23.835827" elapsed="0.001341"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:23.838335" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:23.837559" elapsed="0.000964"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:23.837428" elapsed="0.001227"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:23.839314" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T02:42:23.838995" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:23.838883" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:23.839565" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:23.844693" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T02:42:23.845301" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:23.845684" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:23.840975" elapsed="0.004925"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:23.471108" elapsed="0.375107"/>
</kw>
<msg time="2026-04-19T02:42:23.846568" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:23.469558" elapsed="0.377072"/>
</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-19T02:42:23.468352" elapsed="0.378363"/>
</kw>
<msg time="2026-04-19T02:42:23.846757" 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-19T02:42:23.467177" elapsed="0.379628"/>
</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-19T02:42:23.849935" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:23.850464" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:23.850762" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:23.847155" elapsed="0.003758"/>
</kw>
<msg time="2026-04-19T02:42:23.851021" level="INFO">${output} = 1</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-19T02:42:23.465220" elapsed="0.385847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:23.851518" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:23.851258" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:23.851607" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:42:23.851769" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:23.463106" elapsed="0.388690"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:23.851846" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:42:23.851996" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:23.460761" elapsed="0.391260"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:23.852768" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:23.852211" elapsed="0.000638">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:23.459693" elapsed="0.393274">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:25.856640" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:25.855801" elapsed="0.000913"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:25.858958" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:25.858297" elapsed="0.000801"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:25.860781" 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-19T02:42:25.861068" 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-19T02:42:25.860530" elapsed="0.000580"/>
</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-19T02:42:25.869236" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:25.868529" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:25.865824" elapsed="0.003604"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:25.871483" 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-19T02:42:25.871894" 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-19T02:42:25.870777" elapsed="0.001297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:25.873750" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:25.873213" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:25.875545" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:25.874822" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:25.877946" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:25.878038" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:25.877656" 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-19T02:42:25.878275" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:25.879576" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:26.204584" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:25.879254" elapsed="0.325570"/>
</kw>
<msg time="2026-04-19T02:42:26.204989" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:25.878851" elapsed="0.326319"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:25.876838" elapsed="0.328927"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:26.208906" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:26.232363" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:26.232867" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:26.233252" 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-19T02:42:26.208145" elapsed="0.025318"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:26.235682" elapsed="0.001011"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:26.238992" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:26.237987" elapsed="0.001352"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:26.240219" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:26.239699" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:26.239571" elapsed="0.000837"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:26.240897" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:42:26.240613" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:26.240546" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:26.241260" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:26.248480" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T02:42:26.249251" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:26.249678" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:26.243208" elapsed="0.006735"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:25.863877" elapsed="0.386431"/>
</kw>
<msg time="2026-04-19T02:42:26.250683" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:25.862857" elapsed="0.387895"/>
</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-19T02:42:25.862098" elapsed="0.388759"/>
</kw>
<msg time="2026-04-19T02:42:26.250908" 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-19T02:42:25.861340" elapsed="0.389626"/>
</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-19T02:42:26.254547" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:42:26.255044" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:26.255377" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:26.251447" elapsed="0.004082"/>
</kw>
<msg time="2026-04-19T02:42:26.255623" level="INFO">${output} = 1</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-19T02:42:25.859610" elapsed="0.396039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:26.256143" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:26.255872" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:26.256232" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:42:26.256391" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:25.857221" elapsed="0.399195"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:26.256463" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:26.256605" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:25.854886" elapsed="0.401744"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:26.257206" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:26.256789" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:25.853784" elapsed="0.403616">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:28.260925" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:28.260178" elapsed="0.000819"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:28.263090" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:28.262449" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:28.265110" 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-19T02:42:28.265317" 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-19T02:42:28.264659" elapsed="0.000722"/>
</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-19T02:42:28.271351" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:28.270636" elapsed="0.000931"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:28.270554" elapsed="0.001103"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:28.273980" 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-19T02:42:28.274249" 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-19T02:42:28.273161" elapsed="0.001191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:28.275948" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:28.275344" elapsed="0.000840"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:28.277984" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:28.277264" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:28.280421" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:28.280500" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:28.280119" 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-19T02:42:28.280738" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:28.282139" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:28.608067" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:28.281795" elapsed="0.326455"/>
</kw>
<msg time="2026-04-19T02:42:28.608342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:28.281436" elapsed="0.326998"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:28.279329" elapsed="0.329391"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:28.610235" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:28.633175" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:28.633795" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:28.634275" 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-19T02:42:28.609821" elapsed="0.024721"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:28.637396" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:28.641164" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:28.639912" elapsed="0.001455"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:28.641806" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:28.641543" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:28.641481" elapsed="0.000469"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:28.642341" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T02:42:28.642120" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:28.642067" elapsed="0.000449"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:28.642598" 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-19T02:42:28.647650" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:42:28.648256" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:28.648631" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:28.644073" elapsed="0.004776"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:28.268434" elapsed="0.380666"/>
</kw>
<msg time="2026-04-19T02:42:28.649500" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:28.267168" elapsed="0.382396"/>
</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-19T02:42:28.266388" elapsed="0.383266"/>
</kw>
<msg time="2026-04-19T02:42:28.649699" 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-19T02:42:28.265625" elapsed="0.384124"/>
</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-19T02:42:28.652876" 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-19T02:42:28.653394" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:28.653698" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:28.650072" elapsed="0.003780"/>
</kw>
<msg time="2026-04-19T02:42:28.653948" level="INFO">${output} = 1</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-19T02:42:28.263648" elapsed="0.390326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:28.654446" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:28.654186" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:28.654536" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:42:28.654695" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:28.261491" elapsed="0.393230"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:28.654770" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:42:28.654923" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:28.259309" elapsed="0.395640"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:28.655602" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:28.655194" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:28.258253" elapsed="0.397543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:30.659592" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:30.658723" elapsed="0.000942"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:30.661874" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:30.661215" elapsed="0.000720"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:30.663970" 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-19T02:42:30.664246" 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-19T02:42:30.663619" elapsed="0.000687"/>
</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-19T02:42:30.671915" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:30.671432" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:30.671370" elapsed="0.000714"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:30.673869" 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-19T02:42:30.674151" 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-19T02:42:30.673128" elapsed="0.001130"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:30.675889" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:30.675319" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:30.677859" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:30.677128" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:30.680410" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:30.680491" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:30.680120" 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-19T02:42:30.680738" elapsed="0.000571"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:30.682260" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:30.998544" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:30.681914" elapsed="0.316778"/>
</kw>
<msg time="2026-04-19T02:42:30.998778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:30.681539" elapsed="0.317329"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:30.679304" elapsed="0.319870"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:31.000646" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:31.023557" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:31.024095" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:31.024434" 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-19T02:42:31.000251" elapsed="0.024393"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:31.026898" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:31.030022" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:31.029072" elapsed="0.001209"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:31.031148" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:31.030625" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:31.030502" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:31.032230" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:42:31.031750" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:31.031645" elapsed="0.000935"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:31.032752" elapsed="0.000085"/>
</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-19T02:42:31.038468" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:42:31.039022" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:31.039401" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:31.034994" elapsed="0.004617"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:30.669375" elapsed="0.370459"/>
</kw>
<msg time="2026-04-19T02:42:31.040158" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:30.667465" elapsed="0.372754"/>
</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-19T02:42:30.666011" elapsed="0.374294"/>
</kw>
<msg time="2026-04-19T02:42:31.040346" 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-19T02:42:30.664711" elapsed="0.375681"/>
</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-19T02:42:31.043488" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:42:31.043962" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:31.044273" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:31.040750" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T02:42:31.044510" level="INFO">${output} = 1</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-19T02:42:30.662492" elapsed="0.382043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:31.044961" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:31.044714" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:31.045141" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:42:31.045322" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:30.660178" elapsed="0.385170"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:31.045396" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:42:31.045543" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:30.657788" elapsed="0.387780"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:31.046137" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:31.045726" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:30.656656" elapsed="0.389667">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:33.049864" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:33.049100" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:33.051991" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:33.051383" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:33.053860" 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-19T02:42:33.054119" 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-19T02:42:33.053517" elapsed="0.000703"/>
</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-19T02:42:33.058807" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:33.058264" elapsed="0.000625"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:33.058205" elapsed="0.000745"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:33.060681" 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-19T02:42:33.060926" 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-19T02:42:33.059950" elapsed="0.001093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:33.062619" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:33.062019" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:33.064437" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:33.063721" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:33.067288" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:33.067366" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:33.066978" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:33.067601" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:33.068931" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:33.389710" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:33.068604" elapsed="0.321187"/>
</kw>
<msg time="2026-04-19T02:42:33.389852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:33.068241" elapsed="0.321685"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:33.066226" elapsed="0.323946"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:33.391521" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:33.414750" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:33.415287" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:33.415620" 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-19T02:42:33.391198" elapsed="0.024635"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:33.418074" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:33.421178" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:33.420245" elapsed="0.001165"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:33.422251" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:33.421746" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:33.421630" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:33.423419" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T02:42:33.422921" elapsed="0.000619"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:33.422812" elapsed="0.000786"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:33.423676" 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-19T02:42:33.428397" elapsed="0.000513"/>
</kw>
<kw name="Open 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-19T02:42:33.429139" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:33.429488" 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-19T02:42:33.425023" elapsed="0.004670"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:33.056853" elapsed="0.373059"/>
</kw>
<msg time="2026-04-19T02:42:33.430234" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:33.056151" elapsed="0.374140"/>
</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-19T02:42:33.055594" elapsed="0.374807"/>
</kw>
<msg time="2026-04-19T02:42:33.430448" 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-19T02:42:33.054584" elapsed="0.375914"/>
</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-19T02:42:33.433501" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:42:33.433973" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:33.434285" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:33.430788" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T02:42:33.434586" level="INFO">${output} = 1</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-19T02:42:33.052569" elapsed="0.382043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:33.435050" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:33.434786" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:33.435140" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:33.435291" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:33.050442" elapsed="0.384874"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:33.435363" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:33.435506" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:33.048258" elapsed="0.387272"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:33.436174" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:33.435683" elapsed="0.000569">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:33.047173" elapsed="0.389191">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:35.439891" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:35.439129" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:35.442058" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:35.441432" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:35.443948" 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-19T02:42:35.444211" 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-19T02:42:35.443617" elapsed="0.000654"/>
</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-19T02:42:35.451094" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:35.450602" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:35.450306" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:35.452682" 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-19T02:42:35.452925" 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-19T02:42:35.452236" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:35.454575" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:35.454017" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:35.456425" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:35.455697" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:35.458862" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:35.458940" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:35.458569" 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-19T02:42:35.459193" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:35.460461" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:35.775452" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:35.460137" elapsed="0.315543"/>
</kw>
<msg time="2026-04-19T02:42:35.775757" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:35.459765" elapsed="0.316081"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:35.457800" elapsed="0.318326"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:35.777558" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:35.800343" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:35.800848" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:35.801234" 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-19T02:42:35.777182" elapsed="0.024268"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:35.803711" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:35.806884" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:35.805877" 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-19T02:42:35.808085" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:35.807548" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:35.807379" elapsed="0.001004"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:35.808901" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:42:35.808618" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:35.808549" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:35.809263" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:35.815926" 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-19T02:42:35.816715" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:35.817227" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:35.811209" elapsed="0.006311"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:35.448612" elapsed="0.369217"/>
</kw>
<msg time="2026-04-19T02:42:35.818352" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:35.447016" elapsed="0.371418"/>
</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-19T02:42:35.445796" elapsed="0.372753"/>
</kw>
<msg time="2026-04-19T02:42:35.818606" 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-19T02:42:35.444624" elapsed="0.374045"/>
</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-19T02:42:35.822409" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:35.822896" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:35.823269" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:35.819098" elapsed="0.004322"/>
</kw>
<msg time="2026-04-19T02:42:35.823526" level="INFO">${output} = 1</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-19T02:42:35.442621" elapsed="0.380931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:35.823982" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:35.823732" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:35.824092" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:35.824246" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:35.440461" elapsed="0.383809"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:35.824317" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:35.824462" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:35.438279" elapsed="0.386208"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:35.825114" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:35.824701" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:35.437209" elapsed="0.388094">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:37.828791" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:37.827992" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:37.830899" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:37.830298" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:37.832798" 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-19T02:42:37.833056" 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-19T02:42:37.832464" elapsed="0.000656"/>
</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-19T02:42:37.838851" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:37.838203" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:37.837806" elapsed="0.001262"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:37.841110" 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-19T02:42:37.841450" 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-19T02:42:37.840457" elapsed="0.001139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:37.843730" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:37.842958" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:37.846147" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:37.845384" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:37.848676" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:37.848753" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:37.848381" 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-19T02:42:37.848988" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:37.850259" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:38.163629" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:37.849922" elapsed="0.313817"/>
</kw>
<msg time="2026-04-19T02:42:38.163810" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:37.849561" elapsed="0.314336"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:37.847603" elapsed="0.316571"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:38.165643" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:38.188261" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:38.188855" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:38.189258" 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-19T02:42:38.165252" elapsed="0.024225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:38.191776" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:38.194566" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:38.193916" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:38.195350" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:38.194944" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:38.194864" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:38.196016" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T02:42:38.195737" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:38.195669" elapsed="0.000590"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:38.196367" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:38.202986" elapsed="0.000636"/>
</kw>
<kw name="Open 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-19T02:42:38.203914" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:38.204426" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:38.198257" elapsed="0.006480"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:37.835938" elapsed="0.369128"/>
</kw>
<msg time="2026-04-19T02:42:38.205492" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:37.834980" elapsed="0.370591"/>
</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-19T02:42:37.834234" elapsed="0.371450"/>
</kw>
<msg time="2026-04-19T02:42:38.205740" 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-19T02:42:37.833478" elapsed="0.372325"/>
</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-19T02:42:38.209962" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:42:38.210471" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:38.210763" 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-19T02:42:38.206252" elapsed="0.004658"/>
</kw>
<msg time="2026-04-19T02:42:38.211000" level="INFO">${output} = 1</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-19T02:42:37.831477" elapsed="0.379588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:38.211493" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:38.211247" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:38.211579" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:42:38.211736" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:37.829349" elapsed="0.382412"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:38.211807" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:38.211951" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:37.827183" elapsed="0.384792"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:38.212584" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:38.212190" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:37.826131" elapsed="0.386674">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:40.215252" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:40.214748" elapsed="0.000550"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:40.216677" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:40.216292" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:40.217846" 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-19T02:42:40.217987" 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-19T02:42:40.217629" elapsed="0.000413"/>
</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-19T02:42:40.225000" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:40.224521" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:40.222567" elapsed="0.002588"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:40.226595" 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-19T02:42:40.226837" 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-19T02:42:40.226158" elapsed="0.000777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:40.228491" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:40.227937" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:40.230307" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:40.229590" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:40.232670" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:40.232749" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:40.232386" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:40.232987" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:40.234429" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:40.543254" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:40.234102" elapsed="0.309273"/>
</kw>
<msg time="2026-04-19T02:42:40.543450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:40.233560" elapsed="0.309973"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:40.231607" elapsed="0.312192"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:40.545254" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:40.568199" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:40.568697" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:40.569065" 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-19T02:42:40.544861" elapsed="0.024424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:40.571542" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:40.574705" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:40.573682" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:40.575936" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:40.575313" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:40.575192" elapsed="0.001073"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:40.577073" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:42:40.576594" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:40.576485" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:40.577600" elapsed="0.000082"/>
</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-19T02:42:40.583176" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:42:40.583737" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:40.584113" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:40.579668" elapsed="0.004653"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:40.220691" elapsed="0.363873"/>
</kw>
<msg time="2026-04-19T02:42:40.584877" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:40.219750" elapsed="0.365190"/>
</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-19T02:42:40.218987" elapsed="0.366035"/>
</kw>
<msg time="2026-04-19T02:42:40.585080" 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-19T02:42:40.218270" elapsed="0.366857"/>
</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-19T02:42:40.588263" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:42:40.588749" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:40.589062" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:40.585425" elapsed="0.003788"/>
</kw>
<msg time="2026-04-19T02:42:40.589306" level="INFO">${output} = 1</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-19T02:42:40.217018" elapsed="0.372314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:40.590050" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:40.589529" elapsed="0.000594"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:40.590182" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:42:40.590382" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:40.215693" elapsed="0.374715"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:40.590460" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:42:40.590612" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:40.214222" elapsed="0.376416"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:40.591276" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:40.590820" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:40.213458" elapsed="0.378016">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:42.595008" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:42.594223" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:42.597155" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:42.596515" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:42.599076" 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-19T02:42:42.599509" 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-19T02:42:42.598640" elapsed="0.000932"/>
</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-19T02:42:42.603530" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:42.603058" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:42.602984" elapsed="0.000685"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:42.605374" 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-19T02:42:42.605623" 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-19T02:42:42.604669" elapsed="0.001054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:42.607335" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:42.606716" elapsed="0.000730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:42.609148" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:42.608428" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:42.611626" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:42.611705" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:42.611344" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:42.611941" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:42.613222" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:42.933262" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:42.612877" elapsed="0.320578"/>
</kw>
<msg time="2026-04-19T02:42:42.933560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:42.612514" elapsed="0.321149"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:42.610457" elapsed="0.323523"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:42.935572" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:42.958673" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:42.958927" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:42.959105" 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-19T02:42:42.935144" elapsed="0.024060"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:42.960222" elapsed="0.000428"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:42.961708" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:42.961246" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:42.962256" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:42.961986" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:42.961923" elapsed="0.000468"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:42.962743" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:42:42.962539" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:42.962490" elapsed="0.000436"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:42.963010" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:42.967799" elapsed="0.000457"/>
</kw>
<kw name="Open 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-19T02:42:42.968562" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:42.968927" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:42.964360" elapsed="0.004795"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:42.601624" elapsed="0.367753"/>
</kw>
<msg time="2026-04-19T02:42:42.969690" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:42.600930" elapsed="0.368817"/>
</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-19T02:42:42.600396" elapsed="0.369436"/>
</kw>
<msg time="2026-04-19T02:42:42.969873" 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-19T02:42:42.599864" elapsed="0.370056"/>
</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-19T02:42:42.973069" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:42:42.973549" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:42.973846" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:42.970230" elapsed="0.003765"/>
</kw>
<msg time="2026-04-19T02:42:42.974106" level="INFO">${output} = 1</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-19T02:42:42.597692" elapsed="0.376441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:42.974562" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:42.974312" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:42.974649" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:42.974809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:42.595577" elapsed="0.379257"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:42.974882" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:42:42.975059" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:42.593381" elapsed="0.381704"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:42.975647" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:42.975245" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:42.592285" elapsed="0.383556">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:44.979362" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:44.978591" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:44.981282" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:44.980875" elapsed="0.000445"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:44.982477" 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-19T02:42:44.982622" 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-19T02:42:44.982235" elapsed="0.000425"/>
</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-19T02:42:44.988158" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:44.987463" elapsed="0.000921"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:44.987383" elapsed="0.001091"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:44.990873" 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-19T02:42:44.991273" 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-19T02:42:44.989896" elapsed="0.001529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:44.993426" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:44.992860" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:44.995303" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:44.994509" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:44.997650" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:44.997728" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:44.997364" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:44.997964" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:44.999351" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:45.323949" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:44.998905" elapsed="0.325197"/>
</kw>
<msg time="2026-04-19T02:42:45.324178" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:44.998537" elapsed="0.325721"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:44.996593" elapsed="0.327916"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:45.325938" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:45.349183" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:45.349685" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:45.350018" 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-19T02:42:45.325565" elapsed="0.024710"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:45.352635" elapsed="0.000669"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:45.354706" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:45.354109" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:45.355533" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:45.355151" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:45.355002" elapsed="0.000721"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:45.356315" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:42:45.355926" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:45.355859" elapsed="0.000679"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:45.356647" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:45.362797" 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-19T02:42:45.363382" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:45.363742" 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-19T02:42:45.358650" elapsed="0.005310"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:44.985446" elapsed="0.378885"/>
</kw>
<msg time="2026-04-19T02:42:45.364704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:44.984486" elapsed="0.380276"/>
</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-19T02:42:44.983632" elapsed="0.381214"/>
</kw>
<msg time="2026-04-19T02:42:45.364889" 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-19T02:42:44.982887" elapsed="0.382049"/>
</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-19T02:42:45.368182" 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-19T02:42:45.368675" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:45.368978" elapsed="0.000144"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:45.365262" elapsed="0.003929"/>
</kw>
<msg time="2026-04-19T02:42:45.369288" level="INFO">${output} = 1</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-19T02:42:44.981624" elapsed="0.387690"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:45.369750" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:45.369496" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:45.369839" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:45.369993" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:44.979940" elapsed="0.390078"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:45.370084" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:42:45.370232" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:44.977753" elapsed="0.392505"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:45.370811" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:45.370415" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:44.976712" elapsed="0.394288">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:47.374882" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:47.374055" elapsed="0.000930"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:47.377214" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:47.376506" elapsed="0.000771"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:47.379167" 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-19T02:42:47.379404" 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-19T02:42:47.378764" elapsed="0.000698"/>
</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-19T02:42:47.387480" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:47.386794" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:47.386715" elapsed="0.000963"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:47.390264" 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-19T02:42:47.390532" 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-19T02:42:47.389260" elapsed="0.001377"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:47.392215" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:47.391642" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:47.394320" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:47.393466" elapsed="0.000958"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:47.396817" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:47.396899" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:47.396526" 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-19T02:42:47.397194" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:47.398664" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:47.704931" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:47.398317" elapsed="0.306736"/>
</kw>
<msg time="2026-04-19T02:42:47.705127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:47.397785" elapsed="0.307424"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:47.395704" elapsed="0.309771"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:47.706885" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:47.729957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:47.730497" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:47.730855" 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-19T02:42:47.706529" elapsed="0.024596"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:47.733362" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:47.736512" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:47.735554" elapsed="0.001187"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:47.737651" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:47.737120" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:47.736963" elapsed="0.000989"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:47.738811" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:42:47.738346" elapsed="0.000836"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:47.738213" elapsed="0.001108"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:47.739497" 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-19T02:42:47.745675" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:42:47.746239" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:47.746589" 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-19T02:42:47.742268" elapsed="0.004527"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:47.383921" elapsed="0.363101"/>
</kw>
<msg time="2026-04-19T02:42:47.747372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:47.382390" elapsed="0.365039"/>
</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-19T02:42:47.381073" elapsed="0.366439"/>
</kw>
<msg time="2026-04-19T02:42:47.747552" 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-19T02:42:47.379821" elapsed="0.367777"/>
</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-19T02:42:47.750637" 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-19T02:42:47.751230" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:47.751534" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:47.747946" elapsed="0.003737"/>
</kw>
<msg time="2026-04-19T02:42:47.751774" level="INFO">${output} = 1</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-19T02:42:47.377771" elapsed="0.374029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:47.752244" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:47.751976" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:47.752332" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:47.752484" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:47.375521" elapsed="0.376988"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:47.752556" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:47.752702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:47.373142" elapsed="0.379585"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:47.753325" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:47.752883" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:47.371904" elapsed="0.381611">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:49.756978" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:49.756248" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:49.759172" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:49.758529" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:49.761125" 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-19T02:42:49.761361" 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-19T02:42:49.760750" elapsed="0.000671"/>
</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-19T02:42:49.766501" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:49.765979" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:49.765683" elapsed="0.000959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:49.768102" 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-19T02:42:49.768382" 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-19T02:42:49.767638" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:49.770079" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:49.769521" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:49.771950" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:49.771239" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:49.774422" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:49.774503" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:49.774116" 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-19T02:42:49.774741" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:49.776101" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:50.119662" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:49.775759" elapsed="0.344077"/>
</kw>
<msg time="2026-04-19T02:42:50.119928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:49.775398" elapsed="0.344651"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:49.773345" elapsed="0.347041"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:50.121910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:50.144487" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:50.144979" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:50.145359" 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-19T02:42:50.121507" elapsed="0.024064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:50.147876" elapsed="0.000993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:50.151254" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:50.150209" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:50.152395" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:50.151843" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:50.151719" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:50.153497" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:42:50.153017" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:50.152908" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:50.154186" elapsed="0.000090"/>
</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-19T02:42:50.161702" elapsed="0.000417"/>
</kw>
<kw name="Open 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-19T02:42:50.162335" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:50.162839" 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-19T02:42:50.157303" elapsed="0.005838"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:49.764363" elapsed="0.399083"/>
</kw>
<msg time="2026-04-19T02:42:50.163868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:49.763576" elapsed="0.400359"/>
</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-19T02:42:49.763005" elapsed="0.401016"/>
</kw>
<msg time="2026-04-19T02:42:50.164080" 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-19T02:42:49.761774" elapsed="0.402354"/>
</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-19T02:42:50.167234" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:42:50.167714" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:50.168012" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:50.164425" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T02:42:50.168392" level="INFO">${output} = 1</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-19T02:42:49.759718" elapsed="0.408700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:50.168876" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:50.168626" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:50.168963" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:50.169131" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:49.757540" elapsed="0.411617"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:50.169205" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:50.169351" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:49.755409" elapsed="0.413966"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:50.169958" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:50.169542" elapsed="0.000539">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:49.754373" elapsed="0.415823">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:52.173710" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:52.172941" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:52.175870" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:52.175214" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:52.177118" 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-19T02:42:52.177263" 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-19T02:42:52.176866" elapsed="0.000434"/>
</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-19T02:42:52.182831" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:52.182192" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:52.181797" elapsed="0.001225"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:52.184797" 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-19T02:42:52.185059" 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-19T02:42:52.184357" elapsed="0.000804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:52.186710" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:52.186149" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:52.188518" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:52.187807" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:52.190963" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:52.191055" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:52.190664" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:52.191291" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:52.192597" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:52.512116" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:52.192271" elapsed="0.320087"/>
</kw>
<msg time="2026-04-19T02:42:52.512442" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:52.191885" elapsed="0.320644"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:52.189884" elapsed="0.322920"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:52.514288" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:52.536934" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:52.537482" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:52.537818" 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-19T02:42:52.513871" elapsed="0.024197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:52.540353" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:52.543547" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:52.542514" elapsed="0.001291"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:52.544696" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:52.544193" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:52.544064" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:52.545802" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:42:52.545353" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:52.545242" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:52.546373" elapsed="0.000084"/>
</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-19T02:42:52.552194" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:42:52.552734" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:52.553112" 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-19T02:42:52.548775" elapsed="0.004545"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:52.179965" elapsed="0.373579"/>
</kw>
<msg time="2026-04-19T02:42:52.553851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:52.179005" elapsed="0.374903"/>
</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-19T02:42:52.178264" elapsed="0.375725"/>
</kw>
<msg time="2026-04-19T02:42:52.554044" 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-19T02:42:52.177523" elapsed="0.376569"/>
</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-19T02:42:52.557207" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:52.557678" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:52.557975" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:52.554434" elapsed="0.003707"/>
</kw>
<msg time="2026-04-19T02:42:52.558232" level="INFO">${output} = 1</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-19T02:42:52.176290" elapsed="0.381968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:52.558696" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:52.558447" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:52.558786" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:42:52.558938" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:52.174269" elapsed="0.384695"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:52.559011" elapsed="0.000113"/>
</return>
<msg time="2026-04-19T02:42:52.559249" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:52.172127" elapsed="0.387148"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:52.559900" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:52.559479" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:52.171018" elapsed="0.389078">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:54.564475" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:54.563653" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:54.566103" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:54.565693" elapsed="0.000450"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:54.567331" 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-19T02:42:54.567479" 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-19T02:42:54.567087" elapsed="0.000428"/>
</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-19T02:42:54.575804" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:54.575110" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:54.572365" elapsed="0.003637"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:54.577837" 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-19T02:42:54.578104" 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-19T02:42:54.577370" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:54.579825" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:54.579277" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:54.581628" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:54.580914" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:54.584017" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:54.584113" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:54.583714" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:54.584351" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:54.585648" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:54.906540" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:54.585308" elapsed="0.321370"/>
</kw>
<msg time="2026-04-19T02:42:54.906760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:54.584930" elapsed="0.321916"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:54.582927" elapsed="0.324224"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:54.908768" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:54.931737" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:54.932293" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:54.932640" 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-19T02:42:54.908232" elapsed="0.024639"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:54.935246" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:54.938634" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:54.937561" elapsed="0.001360"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:54.939861" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:54.939335" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:54.939206" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:54.941153" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T02:42:54.940539" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:54.940428" elapsed="0.000904"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:54.941413" 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-19T02:42:54.946265" elapsed="0.000424"/>
</kw>
<kw name="Open 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-19T02:42:54.946903" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:54.947287" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:54.942834" elapsed="0.004663"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:54.570299" elapsed="0.377423"/>
</kw>
<msg time="2026-04-19T02:42:54.948053" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:54.569290" elapsed="0.378847"/>
</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-19T02:42:54.568483" elapsed="0.379747"/>
</kw>
<msg time="2026-04-19T02:42:54.948274" 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-19T02:42:54.567738" elapsed="0.380585"/>
</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-19T02:42:54.951453" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:42:54.951942" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:54.952267" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:54.948617" elapsed="0.003801"/>
</kw>
<msg time="2026-04-19T02:42:54.952511" level="INFO">${output} = 1</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-19T02:42:54.566452" elapsed="0.386086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:54.952996" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:54.952718" elapsed="0.000393"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:54.953163" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:42:54.953326" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:54.565108" elapsed="0.388245"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:54.953401" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:54.953547" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:54.562760" elapsed="0.390812"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:54.954196" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:54.953732" elapsed="0.000561">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:54.561625" elapsed="0.392783">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:56.957855" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:56.957115" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:56.960194" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:56.959551" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:56.962169" 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-19T02:42:56.962422" 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-19T02:42:56.961706" elapsed="0.000781"/>
</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-19T02:42:56.966385" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:56.965855" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:56.965796" elapsed="0.000731"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:56.968230" 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-19T02:42:56.968480" 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-19T02:42:56.967534" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:56.970198" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:56.969585" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:56.971983" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:56.971286" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:56.974461" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:56.974539" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:56.974174" 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-19T02:42:56.974777" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:56.976075" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:57.293432" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:56.975731" elapsed="0.317843"/>
</kw>
<msg time="2026-04-19T02:42:57.293657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:56.975363" elapsed="0.318391"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:56.973287" elapsed="0.320775"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:57.295629" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:57.319107" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:57.319781" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:57.320166" 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-19T02:42:57.295238" elapsed="0.025148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:57.322825" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:57.325200" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:57.324514" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:57.326022" elapsed="0.000107"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:57.325583" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:57.325498" elapsed="0.000813"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:57.326832" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T02:42:57.326528" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:57.326455" elapsed="0.000859"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:57.327435" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:57.333446" 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-19T02:42:57.334018" elapsed="0.000286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:57.334519" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:57.329384" elapsed="0.005361"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:56.964454" elapsed="0.370552"/>
</kw>
<msg time="2026-04-19T02:42:57.335450" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:56.963761" elapsed="0.371759"/>
</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-19T02:42:56.963223" elapsed="0.372384"/>
</kw>
<msg time="2026-04-19T02:42:57.335649" 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-19T02:42:56.962660" elapsed="0.373036"/>
</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-19T02:42:57.338738" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T02:42:57.339284" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:57.339607" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:57.335992" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T02:42:57.339858" level="INFO">${output} = 1</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-19T02:42:56.960740" elapsed="0.379145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:57.340348" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:57.340091" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:57.340447" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:42:57.340607" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:56.958593" elapsed="0.382040"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:57.340683" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:42:57.340835" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:56.956272" elapsed="0.384589"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:57.341457" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:57.341023" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:56.955222" elapsed="0.386428">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:42:59.345249" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:42:59.344459" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:42:59.347388" level="INFO">${member_ip} = 10.30.171.206</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-19T02:42:59.346725" elapsed="0.000724"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:59.349240" 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-19T02:42:59.349626" 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-19T02:42:59.348879" elapsed="0.000810"/>
</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-19T02:42:59.357527" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:42:59.356873" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:59.356796" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:59.360119" 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-19T02:42:59.360461" 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-19T02:42:59.359131" elapsed="0.001433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:59.362121" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:59.361553" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:42:59.363984" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:42:59.363279" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:42:59.366396" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:42:59.366476" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:42:59.366110" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:59.366716" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:42:59.368136" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:42:59.686160" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:42:59.367795" elapsed="0.318492"/>
</kw>
<msg time="2026-04-19T02:42:59.686369" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:59.367430" elapsed="0.319023"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:42:59.365324" elapsed="0.321397"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:42:59.688255" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:42:59.711284" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:42:59.711824" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:42:59.712243" 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-19T02:42:59.687844" elapsed="0.024619"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:59.714701" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:59.718136" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:59.717133" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:59.719570" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:42:59.718748" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:59.718622" elapsed="0.001256"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:42:59.720597" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:42:59.720264" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T02:42:59.720145" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:42:59.720835" 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-19T02:42:59.725773" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:42:59.726462" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:59.726823" 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-19T02:42:59.722186" elapsed="0.004874"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:42:59.354078" elapsed="0.373209"/>
</kw>
<msg time="2026-04-19T02:42:59.727611" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:42:59.352540" elapsed="0.375133"/>
</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-19T02:42:59.351292" elapsed="0.376465"/>
</kw>
<msg time="2026-04-19T02:42:59.727799" 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-19T02:42:59.350082" elapsed="0.377765"/>
</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-19T02:42:59.730801" elapsed="0.000435"/>
</kw>
<kw name="Open 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-19T02:42:59.731439" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:42:59.731742" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:42:59.728156" elapsed="0.003735"/>
</kw>
<msg time="2026-04-19T02:42:59.731982" level="INFO">${output} = 1</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-19T02:42:59.347929" elapsed="0.384079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:42:59.732452" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:42:59.732203" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:42:59.732539" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:42:59.732691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:42:59.345783" elapsed="0.386932"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:42:59.732763" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:42:59.732908" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:42:59.343586" elapsed="0.389347"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:42:59.733497" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:42:59.733104" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:42:59.342466" elapsed="0.391217">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:01.737219" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:01.736450" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:01.739396" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:01.738758" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:01.741315" 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-19T02:43:01.741466" 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-19T02:43:01.740953" elapsed="0.000550"/>
</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-19T02:43:01.746756" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:01.746131" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:01.746053" elapsed="0.001023"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:01.749392" 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-19T02:43:01.749738" 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-19T02:43:01.748456" elapsed="0.001421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:01.751992" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:01.751232" elapsed="0.000955"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:01.754316" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:01.753602" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:01.756758" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:01.756837" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:01.756472" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:01.757204" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:01.758477" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:02.060092" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:42:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:01.758148" elapsed="0.302093"/>
</kw>
<msg time="2026-04-19T02:43:02.060326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:01.757767" elapsed="0.302651"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:01.755614" elapsed="0.305124"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:02.062268" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:02.085297" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:02.085874" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:02.086251" 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-19T02:43:02.061846" elapsed="0.024617"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:02.088776" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:02.091176" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:02.090484" 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-19T02:43:02.091911" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:02.091568" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:02.091484" elapsed="0.000649"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:02.092676" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:43:02.092344" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:02.092274" elapsed="0.000640"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:02.093050" elapsed="0.000056"/>
</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-19T02:43:02.099347" 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-19T02:43:02.099926" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:02.100314" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:02.094986" elapsed="0.005539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:01.744188" elapsed="0.356573"/>
</kw>
<msg time="2026-04-19T02:43:02.101213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:01.743223" elapsed="0.358059"/>
</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-19T02:43:01.742460" elapsed="0.358909"/>
</kw>
<msg time="2026-04-19T02:43:02.101409" 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-19T02:43:01.741725" elapsed="0.359730"/>
</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-19T02:43:02.104534" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:43:02.105058" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:02.105357" 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-19T02:43:02.101749" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T02:43:02.105600" level="INFO">${output} = 1</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-19T02:43:01.739941" elapsed="0.365685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:02.106100" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:02.105831" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:02.106188" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:43:02.106345" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:01.737745" elapsed="0.368626"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:02.106418" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:02.106564" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:01.735582" elapsed="0.371008"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:02.107192" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:02.106747" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:01.734514" elapsed="0.372873">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:04.110946" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:04.110185" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:04.113137" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:04.112491" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:04.115131" 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-19T02:43:04.115377" 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-19T02:43:04.114733" elapsed="0.000707"/>
</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-19T02:43:04.122452" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:04.121725" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:04.121267" elapsed="0.001391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:04.124270" 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-19T02:43:04.124518" 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-19T02:43:04.123786" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:04.126170" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:04.125610" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:04.128132" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:04.127337" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:04.130521" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:04.130599" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:04.130237" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:04.130836" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:04.132259" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:04.456556" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:04.131775" elapsed="0.324936"/>
</kw>
<msg time="2026-04-19T02:43:04.456796" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:04.131413" elapsed="0.325482"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:04.129435" elapsed="0.327773"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:04.458735" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:04.482004" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:04.482557" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:04.482886" 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-19T02:43:04.458332" elapsed="0.024808"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:04.485327" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:04.487822" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:04.487144" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:04.488559" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:04.488226" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:04.488144" 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-19T02:43:04.489252" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:43:04.488947" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:04.488879" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:04.489593" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:04.495869" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:43:04.496434" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:04.496793" 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-19T02:43:04.491533" elapsed="0.005469"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:04.119423" elapsed="0.377819"/>
</kw>
<msg time="2026-04-19T02:43:04.497546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:04.118452" elapsed="0.379152"/>
</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-19T02:43:04.117111" elapsed="0.380577"/>
</kw>
<msg time="2026-04-19T02:43:04.497728" 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-19T02:43:04.115816" elapsed="0.381970"/>
</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-19T02:43:04.501217" elapsed="0.000436"/>
</kw>
<kw name="Open 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-19T02:43:04.501911" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:04.502260" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:04.498161" elapsed="0.004251"/>
</kw>
<msg time="2026-04-19T02:43:04.502504" level="INFO">${output} = 1</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-19T02:43:04.113719" elapsed="0.388811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:04.503007" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:04.502745" elapsed="0.000360"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:04.503152" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:43:04.503313" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:04.111523" elapsed="0.391815"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:04.503387" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:43:04.503563" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:04.109313" elapsed="0.394277"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:04.504203" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:04.503754" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:04.108267" elapsed="0.396123">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:06.508073" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:06.507300" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:06.510197" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:06.509558" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:06.511868" 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-19T02:43:06.512010" 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-19T02:43:06.511650" elapsed="0.000419"/>
</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-19T02:43:06.517628" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:06.516957" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:06.516582" elapsed="0.001241"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:06.519744" 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-19T02:43:06.519986" 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-19T02:43:06.519225" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:06.521649" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:06.521102" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:06.523487" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:06.522763" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:06.525914" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:06.525993" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:06.525604" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:06.526245" elapsed="0.000402"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:06.527606" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:06.830058" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:06.527276" elapsed="0.302944"/>
</kw>
<msg time="2026-04-19T02:43:06.830306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:06.526894" elapsed="0.303504"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:06.524833" elapsed="0.305846"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:06.832210" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:06.854933" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:06.855488" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:06.855813" 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-19T02:43:06.831798" elapsed="0.024224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:06.858242" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:06.861398" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:06.860395" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:06.862660" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:06.861987" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:06.861864" elapsed="0.001080"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:06.863689" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:43:06.863448" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:06.863336" elapsed="0.000511"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:06.863925" 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-19T02:43:06.868757" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T02:43:06.869333" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:06.869692" 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-19T02:43:06.865282" elapsed="0.004614"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:06.514726" elapsed="0.355510"/>
</kw>
<msg time="2026-04-19T02:43:06.870541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:06.513771" elapsed="0.356827"/>
</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-19T02:43:06.513002" elapsed="0.357678"/>
</kw>
<msg time="2026-04-19T02:43:06.870720" 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-19T02:43:06.512294" elapsed="0.358472"/>
</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-19T02:43:06.873932" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:43:06.874449" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:06.874742" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:06.871079" elapsed="0.003810"/>
</kw>
<msg time="2026-04-19T02:43:06.875101" level="INFO">${output} = 1</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-19T02:43:06.510749" elapsed="0.364381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:06.875559" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:06.875310" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:06.875648" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:43:06.875802" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:06.508608" elapsed="0.367220"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:06.875876" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:43:06.876040" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:06.506399" elapsed="0.369668"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:06.876624" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:06.876227" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:06.505263" elapsed="0.371543">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:08.880544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:08.879609" elapsed="0.000993"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:08.881865" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:08.881487" elapsed="0.000416"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:08.883011" 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-19T02:43:08.883176" 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-19T02:43:08.882795" elapsed="0.000418"/>
</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-19T02:43:08.891509" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:08.890756" elapsed="0.000865"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:08.887933" elapsed="0.003750"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:08.893345" 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-19T02:43:08.893601" 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-19T02:43:08.892871" elapsed="0.000831"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:08.895409" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:08.894830" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:08.897254" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:08.896537" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:08.899636" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:08.899713" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:08.899353" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:08.899948" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:08.901423" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:09.222750" 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 Sun Apr 19 02:42:09 UTC 2026

  System load:  0.23               Processes:             128
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:08.901096" elapsed="0.321881"/>
</kw>
<msg time="2026-04-19T02:43:09.223075" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:08.900717" elapsed="0.322448"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:08.898561" elapsed="0.324871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:09.224923" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:09.247743" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:09.248363" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:09.248712" 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-19T02:43:09.224539" elapsed="0.024387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:09.251186" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:09.254590" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:09.253394" elapsed="0.001436"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:09.255729" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:09.255219" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:09.255092" elapsed="0.000930"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:09.256858" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:43:09.256404" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:09.256293" elapsed="0.001072"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:09.257541" 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-19T02:43:09.264176" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:43:09.264738" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:09.265128" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:09.260543" elapsed="0.004795"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:08.885957" elapsed="0.379603"/>
</kw>
<msg time="2026-04-19T02:43:09.265869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:08.884958" elapsed="0.380969"/>
</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-19T02:43:08.884188" elapsed="0.381822"/>
</kw>
<msg time="2026-04-19T02:43:09.266067" 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-19T02:43:08.883438" elapsed="0.382677"/>
</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-19T02:43:09.269188" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:43:09.269670" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:09.269963" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:09.266405" elapsed="0.003724"/>
</kw>
<msg time="2026-04-19T02:43:09.270221" level="INFO">${output} = 1</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-19T02:43:08.882223" elapsed="0.388023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:09.270670" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:09.270423" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:09.270760" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:09.270911" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:08.880894" elapsed="0.390042"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:09.270983" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:09.271147" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:08.878714" elapsed="0.392457"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:09.271767" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:09.271374" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:08.877617" elapsed="0.394336">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:11.275444" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:11.274678" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:11.277601" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:11.276908" elapsed="0.000749"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:11.278800" 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-19T02:43:11.278945" 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-19T02:43:11.278576" elapsed="0.000406"/>
</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-19T02:43:11.284283" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:11.283626" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:11.283550" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:11.286509" 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-19T02:43:11.286760" 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-19T02:43:11.285803" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:11.288442" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:11.287844" elapsed="0.000709"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:11.290308" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:11.289588" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:11.292707" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:11.292784" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:11.292416" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:11.293017" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:11.294309" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:11.925091" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:11.293968" elapsed="0.631262"/>
</kw>
<msg time="2026-04-19T02:43:11.925312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:11.293605" elapsed="0.631793"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:11.291652" elapsed="0.634036"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:11.927199" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:11.950196" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:11.950428" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:11.950581" 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-19T02:43:11.926774" elapsed="0.023903"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:11.951694" elapsed="0.000435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:11.953153" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:11.952697" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:11.953697" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:11.953424" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:11.953365" elapsed="0.000471"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:11.954211" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:43:11.953984" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:11.953934" elapsed="0.000439"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:11.954454" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:11.959168" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:43:11.959713" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:11.960177" 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-19T02:43:11.955784" elapsed="0.004606"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:11.281698" elapsed="0.678918"/>
</kw>
<msg time="2026-04-19T02:43:11.960922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:11.280719" elapsed="0.680262"/>
</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-19T02:43:11.279942" elapsed="0.681140"/>
</kw>
<msg time="2026-04-19T02:43:11.961124" 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-19T02:43:11.279226" elapsed="0.681946"/>
</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-19T02:43:11.964277" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:43:11.964763" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:11.965074" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:11.961467" elapsed="0.003757"/>
</kw>
<msg time="2026-04-19T02:43:11.965316" level="INFO">${output} = 1</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-19T02:43:11.277970" elapsed="0.687372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:11.965798" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:11.965524" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:11.965887" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:11.966056" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:11.275966" elapsed="0.690117"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:11.966132" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:43:11.966280" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:11.273829" elapsed="0.692476"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:11.966856" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:11.966463" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:11.272740" elapsed="0.694313">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:13.970846" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:13.970061" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:13.973246" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:13.972590" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:13.975270" 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-19T02:43:13.975510" 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-19T02:43:13.974871" elapsed="0.000700"/>
</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-19T02:43:13.979681" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:13.979209" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:13.979153" elapsed="0.000668"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:13.981630" 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-19T02:43:13.981884" 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-19T02:43:13.980872" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:13.983566" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:13.982980" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:13.985399" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:13.984677" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:13.987909" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:13.987990" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:13.987589" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:13.988267" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:13.989559" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:14.359103" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:13.989228" elapsed="0.370068"/>
</kw>
<msg time="2026-04-19T02:43:14.359387" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:13.988839" elapsed="0.370658"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:13.986697" elapsed="0.373109"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:14.361541" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:14.383893" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:14.384429" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:14.384756" 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-19T02:43:14.360942" elapsed="0.024020"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:14.387215" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:14.390385" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:14.389392" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:14.391768" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:14.391013" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:14.390841" elapsed="0.001078"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:14.392298" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T02:43:14.392085" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:14.392019" elapsed="0.000441"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:14.392541" 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-19T02:43:14.397494" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:43:14.398063" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:14.398427" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:14.393939" elapsed="0.004697"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:13.977763" elapsed="0.421100"/>
</kw>
<msg time="2026-04-19T02:43:14.399202" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:13.977058" elapsed="0.422203"/>
</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-19T02:43:13.976474" elapsed="0.422872"/>
</kw>
<msg time="2026-04-19T02:43:14.399387" 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-19T02:43:13.975889" elapsed="0.423546"/>
</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-19T02:43:14.402473" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:43:14.402977" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:14.403295" 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-19T02:43:14.399725" elapsed="0.003717"/>
</kw>
<msg time="2026-04-19T02:43:14.403536" level="INFO">${output} = 1</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-19T02:43:13.973808" elapsed="0.429753"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:14.403987" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:14.403739" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:14.404090" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:14.404245" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:13.971596" elapsed="0.432674"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:14.404319" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:43:14.404464" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:13.969212" elapsed="0.435277"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:14.405135" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:14.404647" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:13.967961" elapsed="0.437370">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:16.408882" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:16.408123" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:16.410983" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:16.410380" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:16.412858" 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-19T02:43:16.413264" 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-19T02:43:16.412526" elapsed="0.000800"/>
</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-19T02:43:16.419185" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:16.418702" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:16.418647" elapsed="0.000677"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:16.421018" 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-19T02:43:16.421283" 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-19T02:43:16.420321" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:16.422911" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:16.422366" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:16.424783" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:16.424082" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:16.427277" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:16.427358" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:16.426892" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:16.427594" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:16.428875" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:16.754803" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:16.428550" elapsed="0.326388"/>
</kw>
<msg time="2026-04-19T02:43:16.755020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:16.428185" elapsed="0.326954"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:16.426117" elapsed="0.329300"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:16.756907" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:16.779861" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:16.780455" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:16.780789" 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-19T02:43:16.756525" elapsed="0.024473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:16.783275" elapsed="0.000976"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:16.786478" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:16.785509" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:16.787698" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:16.787194" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:16.786929" elapsed="0.001058"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:16.788854" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:43:16.788398" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:16.788288" elapsed="0.000916"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:16.789288" 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-19T02:43:16.794120" 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-19T02:43:16.794747" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:16.795122" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:16.790683" elapsed="0.004652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:16.417317" elapsed="0.378242"/>
</kw>
<msg time="2026-04-19T02:43:16.795869" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:16.416313" elapsed="0.379614"/>
</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-19T02:43:16.414940" elapsed="0.381071"/>
</kw>
<msg time="2026-04-19T02:43:16.796070" 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-19T02:43:16.413688" elapsed="0.382430"/>
</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-19T02:43:16.799160" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:43:16.799636" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:16.799929" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:16.796421" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T02:43:16.800188" level="INFO">${output} = 1</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-19T02:43:16.411559" elapsed="0.388676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:16.800667" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:16.800416" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:16.800755" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:16.800908" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:16.409442" elapsed="0.391492"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:16.800981" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:43:16.801145" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:16.407252" elapsed="0.393918"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:16.801727" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:16.801328" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:16.406165" elapsed="0.395748">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:18.805499" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:18.804712" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:18.807654" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:18.807017" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:18.809549" 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-19T02:43:18.809780" 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-19T02:43:18.809161" elapsed="0.000677"/>
</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-19T02:43:18.815559" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:18.814894" elapsed="0.000858"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:18.814488" elapsed="0.001349"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:18.817880" 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-19T02:43:18.818237" 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-19T02:43:18.817232" elapsed="0.001104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:18.819853" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:18.819311" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:18.821900" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:18.820958" elapsed="0.001048"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:18.824374" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:18.824453" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:18.824074" 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-19T02:43:18.824687" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:18.825986" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:19.140226" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:18.825649" elapsed="0.314697"/>
</kw>
<msg time="2026-04-19T02:43:19.140425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:18.825259" elapsed="0.315251"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:18.823293" elapsed="0.317467"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:19.142232" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:19.165257" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:19.165835" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:19.166232" 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-19T02:43:19.141832" elapsed="0.024614"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:19.168694" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:19.171858" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:19.170865" elapsed="0.001354"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:19.173142" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:19.172599" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:19.172474" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:19.174110" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:43:19.173828" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:19.173715" elapsed="0.000556"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:19.174351" 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-19T02:43:19.179107" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:19.179649" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:19.180003" elapsed="0.000202"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:19.175691" elapsed="0.004621"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:18.812604" elapsed="0.367931"/>
</kw>
<msg time="2026-04-19T02:43:19.180907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:18.811640" elapsed="0.369327"/>
</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-19T02:43:18.810873" elapsed="0.370193"/>
</kw>
<msg time="2026-04-19T02:43:19.181109" 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-19T02:43:18.810161" elapsed="0.370995"/>
</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-19T02:43:19.184218" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:43:19.184695" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:19.184995" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:19.181447" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T02:43:19.185253" level="INFO">${output} = 1</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-19T02:43:18.808226" elapsed="0.377052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:19.185724" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:19.185475" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:19.185811" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:19.186053" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:18.806110" elapsed="0.379970"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:19.186129" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:43:19.186275" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:18.803868" elapsed="0.382431"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:19.186850" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:19.186457" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:18.802752" elapsed="0.384319">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:21.190915" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:21.190133" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:21.193078" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:21.192444" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:21.194940" 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-19T02:43:21.195124" 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-19T02:43:21.194613" elapsed="0.000549"/>
</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-19T02:43:21.200880" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:21.200245" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:21.199845" elapsed="0.001250"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:21.203092" 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-19T02:43:21.203432" 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-19T02:43:21.202439" elapsed="0.001131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:21.205683" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:21.204918" elapsed="0.000915"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:21.208024" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:21.207315" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:21.210406" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:21.210484" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:21.210122" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:21.210733" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:21.212152" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:21.527935" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:21.211804" elapsed="0.316257"/>
</kw>
<msg time="2026-04-19T02:43:21.528132" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:21.211443" elapsed="0.316769"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:21.209332" elapsed="0.319127"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:21.529857" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:21.552715" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:21.553250" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:21.553577" 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-19T02:43:21.529499" elapsed="0.024290"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:21.556077" elapsed="0.000857"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:21.559418" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:21.558186" elapsed="0.001382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:21.560127" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:21.559785" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:21.559709" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:21.560794" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:43:21.560516" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:21.560449" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:21.561166" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:21.567547" 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-19T02:43:21.568106" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:21.568468" 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-19T02:43:21.562985" 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-19T02:43:21.197977" elapsed="0.370923"/>
</kw>
<msg time="2026-04-19T02:43:21.569224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:21.197024" elapsed="0.372257"/>
</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-19T02:43:21.196275" elapsed="0.373087"/>
</kw>
<msg time="2026-04-19T02:43:21.569404" 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-19T02:43:21.195382" elapsed="0.374068"/>
</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-19T02:43:21.572617" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:43:21.573105" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:21.573400" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:21.569821" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T02:43:21.573638" level="INFO">${output} = 1</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-19T02:43:21.193622" elapsed="0.380041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:21.574104" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:21.573841" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:21.574192" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:21.574344" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:21.191488" elapsed="0.382880"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:21.574415" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:21.574559" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:21.189281" elapsed="0.385302"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:21.575283" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:21.574852" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:21.188206" elapsed="0.387271">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:23.578992" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:23.578251" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:23.581210" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:23.580572" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:23.583072" 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-19T02:43:23.583306" 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-19T02:43:23.582687" elapsed="0.000678"/>
</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-19T02:43:23.591665" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:23.590924" elapsed="0.000905"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:23.588297" elapsed="0.003621"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:23.593456" 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-19T02:43:23.593709" 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-19T02:43:23.592990" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:23.595433" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:23.594808" elapsed="0.000738"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:23.597370" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:23.596629" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:23.599846" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:23.599926" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:23.599515" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:23.600306" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:23.601691" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:23.930805" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:23.601362" elapsed="0.329595"/>
</kw>
<msg time="2026-04-19T02:43:23.931062" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:23.600970" elapsed="0.330187"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:23.598702" elapsed="0.332739"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:23.932938" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:23.955529" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:23.956194" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:23.956593" 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-19T02:43:23.932541" elapsed="0.024270"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:23.959127" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:23.962396" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:23.961317" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:23.963505" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:23.962974" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:23.962851" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:23.964640" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:43:23.964193" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:23.964079" elapsed="0.000911"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:23.965236" 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-19T02:43:23.970119" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:43:23.970670" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:23.971040" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:23.966727" elapsed="0.004524"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:23.586426" elapsed="0.385048"/>
</kw>
<msg time="2026-04-19T02:43:23.971784" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:23.585476" elapsed="0.386368"/>
</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-19T02:43:23.584697" elapsed="0.387229"/>
</kw>
<msg time="2026-04-19T02:43:23.971979" 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-19T02:43:23.583717" elapsed="0.388321"/>
</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-19T02:43:23.975156" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:43:23.975646" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:23.975942" elapsed="0.000137"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:23.972335" elapsed="0.003801"/>
</kw>
<msg time="2026-04-19T02:43:23.976291" level="INFO">${output} = 1</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-19T02:43:23.581748" elapsed="0.394569"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:23.976743" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:23.976495" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:23.976831" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:43:23.976982" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:23.579599" elapsed="0.397408"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:23.977081" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:43:23.977228" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:23.577414" elapsed="0.399838"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:23.977798" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:23.977408" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:23.576330" elapsed="0.401651">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:25.981703" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:25.980859" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:25.983299" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:25.982861" elapsed="0.000477"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:25.984514" 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-19T02:43:25.984665" 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-19T02:43:25.984275" elapsed="0.000429"/>
</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-19T02:43:25.990260" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:25.989495" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:25.989398" elapsed="0.001055"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:25.992842" 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-19T02:43:25.993284" 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-19T02:43:25.991871" elapsed="0.001552"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:25.995204" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:25.994604" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:25.996993" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:25.996291" elapsed="0.000892"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:25.999560" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:25.999638" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:25.999271" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:25.999930" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:26.001366" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:26.329468" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:26.001001" elapsed="0.328706"/>
</kw>
<msg time="2026-04-19T02:43:26.329791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:26.000624" elapsed="0.329255"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:25.998367" elapsed="0.331839"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:26.331707" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:26.354493" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:26.355088" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:26.355436" 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-19T02:43:26.331311" elapsed="0.024341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:26.358011" elapsed="0.000932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:26.361458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:26.360323" elapsed="0.001374"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:26.362387" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:26.362081" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:26.361925" elapsed="0.000596"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:26.362864" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T02:43:26.362663" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:26.362615" elapsed="0.000428"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:26.363126" 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-19T02:43:26.367910" elapsed="0.000381"/>
</kw>
<kw name="Open 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-19T02:43:26.368512" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:26.368884" 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-19T02:43:26.364455" elapsed="0.004790"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:25.987508" elapsed="0.381981"/>
</kw>
<msg time="2026-04-19T02:43:26.369852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:25.986529" elapsed="0.383390"/>
</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-19T02:43:25.985718" elapsed="0.384289"/>
</kw>
<msg time="2026-04-19T02:43:26.370068" 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-19T02:43:25.984943" elapsed="0.385176"/>
</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-19T02:43:26.373198" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:26.373711" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:26.374016" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:26.370418" elapsed="0.003771"/>
</kw>
<msg time="2026-04-19T02:43:26.374291" level="INFO">${output} = 1</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-19T02:43:25.983644" elapsed="0.390677"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:26.374778" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:26.374519" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:26.374875" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:43:26.375055" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:25.982277" elapsed="0.392805"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:26.375132" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:43:26.375286" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:25.980013" elapsed="0.395300"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:26.375940" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:26.375536" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:25.978913" elapsed="0.397248">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:28.380440" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:28.379470" elapsed="0.001046"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:28.382942" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:28.382177" elapsed="0.000834"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:28.384307" 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-19T02:43:28.384462" 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-19T02:43:28.384026" elapsed="0.000475"/>
</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-19T02:43:28.390161" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:28.389475" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:28.389396" elapsed="0.001013"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:28.392422" 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-19T02:43:28.392678" 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-19T02:43:28.391655" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:28.394403" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:28.393809" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:28.396277" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:28.395524" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:28.398872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:28.398953" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:28.398579" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:28.399218" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:28.400570" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:28.758358" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:28.400227" elapsed="0.358327"/>
</kw>
<msg time="2026-04-19T02:43:28.758647" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:28.399793" elapsed="0.358953"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:28.397733" elapsed="0.361396"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:28.760741" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:28.784625" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:28.785332" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:28.785670" 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-19T02:43:28.760261" elapsed="0.025625"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:28.788274" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:28.791559" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:28.790542" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:28.792648" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:28.792157" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:28.792006" elapsed="0.000927"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:28.793722" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T02:43:28.793281" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:28.793174" elapsed="0.000961"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:28.794312" 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-19T02:43:28.799722" 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-19T02:43:28.800295" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:28.800657" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:28.796302" elapsed="0.004565"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:28.387388" elapsed="0.413722"/>
</kw>
<msg time="2026-04-19T02:43:28.801421" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:28.386329" elapsed="0.415153"/>
</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-19T02:43:28.385516" elapsed="0.416049"/>
</kw>
<msg time="2026-04-19T02:43:28.801606" 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-19T02:43:28.384727" elapsed="0.416925"/>
</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-19T02:43:28.804756" 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-19T02:43:28.805255" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:28.805550" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:28.801943" elapsed="0.003755"/>
</kw>
<msg time="2026-04-19T02:43:28.805787" level="INFO">${output} = 1</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-19T02:43:28.383432" elapsed="0.422380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:28.806265" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:28.805989" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:28.806352" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:43:28.806516" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:28.381103" elapsed="0.425439"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:28.806589" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:28.806733" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:28.378424" elapsed="0.428334"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:28.807391" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:28.806913" elapsed="0.000553">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:28.376982" elapsed="0.430596">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:30.811143" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:30.810374" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:30.813451" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:30.812805" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:30.815312" 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-19T02:43:30.815589" 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-19T02:43:30.814949" elapsed="0.000705"/>
</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-19T02:43:30.821280" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:30.820623" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:30.820545" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:30.823819" 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-19T02:43:30.824216" 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-19T02:43:30.822836" elapsed="0.001516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:30.825980" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:30.825431" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:30.827813" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:30.827099" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:30.830392" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:30.830472" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:30.830102" 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-19T02:43:30.830709" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:30.832054" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:31.150445" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:30.831698" elapsed="0.318966"/>
</kw>
<msg time="2026-04-19T02:43:31.150767" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:30.831306" elapsed="0.319572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:30.829309" elapsed="0.321910"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:31.152795" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:31.176155" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:31.176809" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:31.177179" 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-19T02:43:31.152378" elapsed="0.025016"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:31.179773" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:31.182268" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:31.181553" 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-19T02:43:31.183186" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:31.182668" elapsed="0.000637"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:31.182583" elapsed="0.000805"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:31.183924" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T02:43:31.183605" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:31.183533" elapsed="0.000657"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:31.184315" elapsed="0.000064"/>
</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-19T02:43:31.190429" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:43:31.190975" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:31.191357" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:31.186298" elapsed="0.005271"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:30.818641" elapsed="0.373168"/>
</kw>
<msg time="2026-04-19T02:43:31.192243" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:30.817685" elapsed="0.374621"/>
</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-19T02:43:30.816907" elapsed="0.375486"/>
</kw>
<msg time="2026-04-19T02:43:31.192439" 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-19T02:43:30.816009" elapsed="0.376478"/>
</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-19T02:43:31.195549" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:43:31.196075" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:31.196376" 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-19T02:43:31.192785" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T02:43:31.196615" level="INFO">${output} = 1</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-19T02:43:30.813999" elapsed="0.382641"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:31.197077" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:31.196815" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:31.197164" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:31.197322" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:30.811850" elapsed="0.385498"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:31.197395" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:31.197541" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:30.809532" elapsed="0.388034"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:31.198153" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:31.197726" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:30.808447" elapsed="0.389909">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:33.201870" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:33.201140" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:33.203967" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:33.203367" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:33.205735" 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-19T02:43:33.205984" 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-19T02:43:33.205507" elapsed="0.000516"/>
</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-19T02:43:33.211653" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:33.210984" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:33.210608" elapsed="0.001238"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:33.213775" 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-19T02:43:33.214022" 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-19T02:43:33.213275" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:33.215667" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:33.215124" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:33.217496" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:33.216771" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:33.219927" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:33.220006" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:33.219637" 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-19T02:43:33.220256" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:33.221518" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:33.543284" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:33.221192" elapsed="0.322177"/>
</kw>
<msg time="2026-04-19T02:43:33.543429" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:33.220815" elapsed="0.322686"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:33.218851" elapsed="0.324871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:33.545072" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:33.568201" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:33.568692" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:33.569083" 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-19T02:43:33.544721" elapsed="0.024579"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:33.571508" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:33.574188" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:33.573577" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:33.574844" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:33.574545" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:33.574469" elapsed="0.000580"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:33.575550" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T02:43:33.575262" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:33.575195" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:33.575876" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:33.582484" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:33.583095" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:33.583448" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:33.577751" elapsed="0.005905"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:33.208737" elapsed="0.375139"/>
</kw>
<msg time="2026-04-19T02:43:33.584218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:33.207776" elapsed="0.376500"/>
</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-19T02:43:33.207000" elapsed="0.377358"/>
</kw>
<msg time="2026-04-19T02:43:33.584399" 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-19T02:43:33.206270" elapsed="0.378174"/>
</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-19T02:43:33.587499" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:43:33.587974" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:33.588285" 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-19T02:43:33.584732" elapsed="0.003701"/>
</kw>
<msg time="2026-04-19T02:43:33.588528" level="INFO">${output} = 1</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-19T02:43:33.204536" elapsed="0.384017"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:33.588977" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:33.588729" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:33.589106" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:33.589259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:33.202425" elapsed="0.386859"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:33.589331" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:43:33.589474" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:33.200278" elapsed="0.389220"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:33.590168" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:33.589680" elapsed="0.000584">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:33.199224" elapsed="0.391155">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:35.593879" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:35.593147" elapsed="0.000802"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:35.596096" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:35.595457" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:35.597916" 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-19T02:43:35.598237" 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-19T02:43:35.597594" elapsed="0.000707"/>
</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-19T02:43:35.603969" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:35.603325" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:35.602924" elapsed="0.001340"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:35.606342" 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-19T02:43:35.606690" 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-19T02:43:35.605652" elapsed="0.001180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:35.608964" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:35.608206" elapsed="0.000934"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:35.611293" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:35.610588" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:35.613675" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:35.613754" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:35.613393" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:35.613991" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:35.615367" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:35.940161" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:35.615042" elapsed="0.325262"/>
</kw>
<msg time="2026-04-19T02:43:35.940390" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:35.614662" elapsed="0.325828"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:35.612610" elapsed="0.328153"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:35.942262" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:35.965199" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:35.965695" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:35.966060" 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-19T02:43:35.941828" elapsed="0.024471"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:35.968554" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:35.971317" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:35.970665" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:35.972165" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:35.971737" elapsed="0.000538"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:35.971628" elapsed="0.000725"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:35.972844" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:43:35.972563" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:35.972491" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:35.973196" elapsed="0.000051"/>
</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-19T02:43:35.979510" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:43:35.980179" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:35.980536" 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-19T02:43:35.975064" elapsed="0.005722"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:35.601074" elapsed="0.379967"/>
</kw>
<msg time="2026-04-19T02:43:35.981433" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:35.600086" elapsed="0.381406"/>
</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-19T02:43:35.599322" elapsed="0.382258"/>
</kw>
<msg time="2026-04-19T02:43:35.981621" 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-19T02:43:35.598590" elapsed="0.383076"/>
</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-19T02:43:35.984653" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:35.985139" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:35.985433" 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-19T02:43:35.981956" elapsed="0.003623"/>
</kw>
<msg time="2026-04-19T02:43:35.985668" level="INFO">${output} = 1</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-19T02:43:35.596644" elapsed="0.389049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:35.986128" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:35.985867" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:35.986215" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:35.986391" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:35.594479" elapsed="0.391937"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:35.986462" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:35.986604" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:35.592291" elapsed="0.394337"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:35.987212" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:35.986788" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:35.591224" elapsed="0.396182">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:37.991016" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:37.990218" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:37.992654" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:37.992264" elapsed="0.000429"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:37.993869" 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-19T02:43:37.994017" 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-19T02:43:37.993639" elapsed="0.000437"/>
</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-19T02:43:38.002065" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:38.001353" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:37.998761" elapsed="0.003506"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:38.004209" 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-19T02:43:38.004452" 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-19T02:43:38.003744" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:38.006090" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:38.005527" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:38.007991" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:38.007266" elapsed="0.000843"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:38.010385" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:38.010463" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:38.010091" 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-19T02:43:38.010696" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:38.012072" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:38.332207" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:38.011730" elapsed="0.320633"/>
</kw>
<msg time="2026-04-19T02:43:38.332448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:38.011356" elapsed="0.321183"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:38.009312" elapsed="0.323514"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:38.334338" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:38.357176" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:38.357671" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:38.358004" 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-19T02:43:38.333928" elapsed="0.024332"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:38.360491" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:38.363679" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:38.362645" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:38.364806" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:38.364293" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:38.364171" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:38.365914" elapsed="0.000144"/>
</return>
<status status="PASS" start="2026-04-19T02:43:38.365464" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:38.365355" elapsed="0.000947"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:38.366479" 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-19T02:43:38.372554" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:43:38.373117" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:38.373477" 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-19T02:43:38.369162" elapsed="0.004523"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:37.996891" elapsed="0.377019"/>
</kw>
<msg time="2026-04-19T02:43:38.374238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:37.995917" elapsed="0.378378"/>
</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-19T02:43:37.995111" elapsed="0.379266"/>
</kw>
<msg time="2026-04-19T02:43:38.374418" 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-19T02:43:37.994300" elapsed="0.380164"/>
</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-19T02:43:38.377544" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:43:38.378020" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:38.378334" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:38.374812" elapsed="0.003671"/>
</kw>
<msg time="2026-04-19T02:43:38.378574" level="INFO">${output} = 1</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-19T02:43:37.993019" elapsed="0.385580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:38.379108" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:38.378777" elapsed="0.000380"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:38.379201" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:43:38.379354" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:37.991643" elapsed="0.387736"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:38.379427" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:43:38.379592" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:37.989375" elapsed="0.390242"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:38.380191" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:38.379776" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:37.988269" elapsed="0.392103">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:40.383893" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:40.383152" elapsed="0.000811"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:40.386064" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:40.385410" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:40.387884" 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-19T02:43:40.388144" 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-19T02:43:40.387562" elapsed="0.000643"/>
</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-19T02:43:40.394467" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:40.393775" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:40.393700" elapsed="0.000959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:40.396940" 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-19T02:43:40.397312" 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-19T02:43:40.396008" elapsed="0.001446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:40.399384" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:40.398828" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:40.401239" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:40.400468" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:40.403589" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:40.403667" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:40.403309" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:40.403905" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:40.405455" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:40.727960" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:40.404908" elapsed="0.323191"/>
</kw>
<msg time="2026-04-19T02:43:40.728207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:40.404546" elapsed="0.323759"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:40.402530" elapsed="0.326057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:40.730092" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:40.753354" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:40.754006" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:40.754538" 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-19T02:43:40.729695" elapsed="0.025135"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:40.757788" elapsed="0.000608"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:40.759806" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:40.759205" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:40.760558" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:40.760236" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:40.760157" 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-19T02:43:40.761274" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:43:40.760940" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:40.760874" elapsed="0.000624"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:40.761608" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:40.767651" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:43:40.768322" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:40.768681" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:40.763453" elapsed="0.005436"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:40.391860" elapsed="0.377294"/>
</kw>
<msg time="2026-04-19T02:43:40.769465" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:40.390902" elapsed="0.378626"/>
</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-19T02:43:40.389720" elapsed="0.379894"/>
</kw>
<msg time="2026-04-19T02:43:40.769666" 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-19T02:43:40.388559" elapsed="0.381157"/>
</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-19T02:43:40.772752" 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-19T02:43:40.773272" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:40.773570" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:40.770012" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T02:43:40.773875" level="INFO">${output} = 1</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-19T02:43:40.386614" elapsed="0.387288"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:40.774350" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:40.774100" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:40.774438" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:43:40.774590" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:40.384456" elapsed="0.390160"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:40.774665" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:40.774813" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:40.382303" elapsed="0.392535"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:40.775420" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:40.774996" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:40.381218" elapsed="0.394386">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:42.778050" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:42.777545" elapsed="0.000554"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:42.779366" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:42.778959" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:42.780720" 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-19T02:43:42.780882" 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-19T02:43:42.780444" elapsed="0.000479"/>
</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-19T02:43:42.786983" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:42.786339" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:42.786249" elapsed="0.000953"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:42.789537" 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-19T02:43:42.789799" 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-19T02:43:42.788724" elapsed="0.001180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:42.791488" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:42.790907" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:42.793380" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:42.792615" elapsed="0.000886"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:42.795884" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:42.795964" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:42.795556" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:42.796257" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:42.797612" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:43.114995" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:42.797258" elapsed="0.317990"/>
</kw>
<msg time="2026-04-19T02:43:43.115330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:42.796840" elapsed="0.318576"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:42.794759" elapsed="0.320926"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:43.117178" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:43.139991" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:43.140556" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:43.140933" 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-19T02:43:43.116772" elapsed="0.024437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:43.143636" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:43.146949" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:43.145818" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:43.147675" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:43.147349" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:43.147269" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:43.148370" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:43:43.148087" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:43.147996" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:43.148700" elapsed="0.000062"/>
</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-19T02:43:43.155335" 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-19T02:43:43.155879" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:43.156255" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:43.150759" 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-19T02:43:42.784251" elapsed="0.372435"/>
</kw>
<msg time="2026-04-19T02:43:43.156993" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:42.783003" elapsed="0.374065"/>
</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-19T02:43:42.782106" elapsed="0.375046"/>
</kw>
<msg time="2026-04-19T02:43:43.157193" 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-19T02:43:42.781217" elapsed="0.376023"/>
</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-19T02:43:43.160404" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:43:43.160880" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:43.161197" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:43.157531" elapsed="0.003815"/>
</kw>
<msg time="2026-04-19T02:43:43.161435" level="INFO">${output} = 1</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-19T02:43:42.779705" elapsed="0.381755"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:43.161884" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:43.161638" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:43.161973" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:43.162184" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:42.778388" elapsed="0.383822"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:43.162257" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:43:43.162432" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:42.776990" elapsed="0.385468"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:43.163084" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:43.162667" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:42.776240" elapsed="0.387033">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:45.167096" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:45.166270" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:45.169444" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:45.168727" elapsed="0.000840"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:45.170858" 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-19T02:43:45.171010" 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-19T02:43:45.170622" elapsed="0.000450"/>
</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-19T02:43:45.176785" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:45.176126" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:45.176018" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:45.179160" 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-19T02:43:45.179427" 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-19T02:43:45.178367" elapsed="0.001166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:45.181158" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:45.180558" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:45.183180" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:45.182373" elapsed="0.000907"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:45.185618" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:45.185704" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:45.185295" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:45.185948" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:45.187470" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:45.500928" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:45.186929" elapsed="0.314169"/>
</kw>
<msg time="2026-04-19T02:43:45.501185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:45.186554" elapsed="0.314721"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:45.184494" elapsed="0.317061"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:45.503048" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:45.525745" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:45.525976" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:45.526151" 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-19T02:43:45.502623" elapsed="0.023624"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:45.527263" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:45.528741" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:45.528295" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:45.529271" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:45.529012" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:45.528953" elapsed="0.000453"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:45.529758" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:43:45.529554" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:45.529505" elapsed="0.000418"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:45.530007" elapsed="0.000056"/>
</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-19T02:43:45.534704" elapsed="0.000455"/>
</kw>
<kw name="Open 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-19T02:43:45.535399" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:45.535756" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:45.531376" elapsed="0.004591"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:45.174060" elapsed="0.362146"/>
</kw>
<msg time="2026-04-19T02:43:45.536511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:45.172972" elapsed="0.363596"/>
</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-19T02:43:45.172193" elapsed="0.364459"/>
</kw>
<msg time="2026-04-19T02:43:45.536693" 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-19T02:43:45.171410" elapsed="0.365330"/>
</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-19T02:43:45.539871" 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-19T02:43:45.540366" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:45.540662" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:45.537048" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T02:43:45.540902" level="INFO">${output} = 1</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-19T02:43:45.169999" elapsed="0.370929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:45.541378" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:45.541128" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:45.541467" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:45.541622" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:45.167640" elapsed="0.374009"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:45.541696" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:45.541842" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:45.165332" elapsed="0.376535"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:45.542434" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:45.542024" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:45.164163" elapsed="0.378452">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:47.546489" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:47.545686" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:47.548795" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:47.548188" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:47.550659" 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-19T02:43:47.550884" 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-19T02:43:47.550320" elapsed="0.000622"/>
</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-19T02:43:47.555798" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:47.555272" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:47.554936" elapsed="0.001005"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:47.557399" 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-19T02:43:47.557694" 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-19T02:43:47.556941" elapsed="0.000856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:47.559432" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:47.558848" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:47.561268" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:47.560548" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:47.563733" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:47.563811" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:47.563429" 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-19T02:43:47.564059" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:47.565323" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:47.890925" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:47.564979" elapsed="0.326125"/>
</kw>
<msg time="2026-04-19T02:43:47.891195" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:47.564617" elapsed="0.326673"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:47.562585" elapsed="0.329000"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:47.893119" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:47.915804" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:47.916376" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:47.916707" 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-19T02:43:47.892674" elapsed="0.024251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:47.919258" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:47.922809" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:47.921630" elapsed="0.001466"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:47.924165" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:47.923470" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:47.923331" elapsed="0.001168"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:47.925457" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T02:43:47.924839" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:47.924728" elapsed="0.001105"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:47.925955" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:47.930809" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T02:43:47.931370" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:47.931726" 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-19T02:43:47.927391" elapsed="0.004548"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:47.553599" elapsed="0.378584"/>
</kw>
<msg time="2026-04-19T02:43:47.932496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:47.552819" elapsed="0.379738"/>
</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-19T02:43:47.552288" elapsed="0.380368"/>
</kw>
<msg time="2026-04-19T02:43:47.932716" 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-19T02:43:47.551328" elapsed="0.381446"/>
</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-19T02:43:47.935800" 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-19T02:43:47.936295" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:47.936588" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:47.933164" elapsed="0.003572"/>
</kw>
<msg time="2026-04-19T02:43:47.936827" level="INFO">${output} = 1</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-19T02:43:47.549380" elapsed="0.387473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:47.937399" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:47.937144" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:47.937487" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:47.937641" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:47.547219" elapsed="0.390447"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:47.937714" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:47.937860" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:47.544744" elapsed="0.393141"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:47.938458" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:47.938064" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:47.543521" elapsed="0.395118">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:49.942199" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:49.941433" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:49.944311" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:49.943677" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:49.946142" 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-19T02:43:49.946509" 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-19T02:43:49.945787" elapsed="0.000784"/>
</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-19T02:43:49.951486" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:49.950982" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:49.950710" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:49.953057" 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-19T02:43:49.953301" 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-19T02:43:49.952601" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:49.954904" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:49.954367" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:49.956755" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:49.956061" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:49.959207" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:49.959286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:49.958809" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:49.959531" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:49.960780" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:50.271574" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:49.960459" elapsed="0.311286"/>
</kw>
<msg time="2026-04-19T02:43:50.271836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:49.960099" elapsed="0.311829"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:49.958054" elapsed="0.314190"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:50.273763" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:50.296762" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:50.297324" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:50.297694" 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-19T02:43:50.273366" elapsed="0.024549"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:50.300173" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:50.303544" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:50.302525" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:50.304689" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:50.304151" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:50.303993" elapsed="0.000986"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:50.305784" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:43:50.305340" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:50.305232" elapsed="0.001057"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:50.306470" elapsed="0.000084"/>
</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-19T02:43:50.312698" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T02:43:50.313360" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:50.313730" 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-19T02:43:50.309213" elapsed="0.004745"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:49.949368" elapsed="0.364885"/>
</kw>
<msg time="2026-04-19T02:43:50.314564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:49.948672" elapsed="0.365949"/>
</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-19T02:43:49.948132" elapsed="0.366574"/>
</kw>
<msg time="2026-04-19T02:43:50.314749" 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-19T02:43:49.946926" elapsed="0.367871"/>
</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-19T02:43:50.318183" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:43:50.318666" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:50.319053" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:50.315174" elapsed="0.004031"/>
</kw>
<msg time="2026-04-19T02:43:50.319295" level="INFO">${output} = 1</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-19T02:43:49.944847" elapsed="0.374473"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:50.319744" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:50.319497" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:50.319830" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:50.319980" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:49.942721" elapsed="0.377284"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:50.320069" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:43:50.320214" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:49.940594" elapsed="0.379645"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:50.320818" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:50.320396" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:49.939552" elapsed="0.381452">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:52.324491" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:52.323718" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:52.326753" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:52.326148" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:52.328738" 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-19T02:43:52.328962" 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-19T02:43:52.328408" elapsed="0.000612"/>
</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-19T02:43:52.337262" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:52.336568" elapsed="0.000915"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:52.334055" elapsed="0.003516"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:52.339178" 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-19T02:43:52.339426" 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-19T02:43:52.338710" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:52.341142" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:52.340510" elapsed="0.000743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:52.342977" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:52.342253" elapsed="0.000931"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:52.345477" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:52.345555" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:52.345168" 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-19T02:43:52.345789" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:52.347145" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:52.673079" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:52.346712" elapsed="0.326519"/>
</kw>
<msg time="2026-04-19T02:43:52.673517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:52.346357" elapsed="0.327249"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:52.344385" elapsed="0.329504"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:52.675651" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:52.698438" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:52.698674" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:52.698826" 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-19T02:43:52.675221" elapsed="0.023702"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:52.699932" elapsed="0.000451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:52.701429" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:52.700953" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:52.701967" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:52.701715" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:52.701654" elapsed="0.000467"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:52.702488" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T02:43:52.702284" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:52.702233" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:52.702730" 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-19T02:43:52.757088" elapsed="0.000441"/>
</kw>
<kw name="Open 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-19T02:43:52.757765" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:52.758175" 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-19T02:43:52.704106" elapsed="0.054324"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:52.332193" elapsed="0.426499"/>
</kw>
<msg time="2026-04-19T02:43:52.759328" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:52.331238" elapsed="0.428164"/>
</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-19T02:43:52.330485" elapsed="0.429001"/>
</kw>
<msg time="2026-04-19T02:43:52.759527" 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-19T02:43:52.329563" elapsed="0.430010"/>
</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-19T02:43:52.762724" 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-19T02:43:52.763235" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:52.763534" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:52.759892" elapsed="0.003792"/>
</kw>
<msg time="2026-04-19T02:43:52.763778" level="INFO">${output} = 1</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-19T02:43:52.327469" elapsed="0.436334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:52.764274" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:52.763994" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:52.764367" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:43:52.764529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:52.325008" elapsed="0.439546"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:52.764600" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:52.764743" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:52.322880" elapsed="0.441888"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:52.765368" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:52.764922" elapsed="0.000521">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:52.321839" elapsed="0.443713">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:54.769270" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:54.768464" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:54.771566" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:54.770884" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:54.773544" 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-19T02:43:54.773789" 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-19T02:43:54.773193" elapsed="0.000659"/>
</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-19T02:43:54.779985" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:54.779357" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:54.779280" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:54.782167" 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-19T02:43:54.782538" 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-19T02:43:54.781546" elapsed="0.001129"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:54.784319" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:54.783771" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:54.786245" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:54.785450" elapsed="0.000894"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:54.788580" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:54.788657" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:54.788295" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:54.788889" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:54.790184" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:55.104113" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:54.789818" elapsed="0.314573"/>
</kw>
<msg time="2026-04-19T02:43:55.104553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:54.789462" elapsed="0.315268"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:54.787524" elapsed="0.317821"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:55.108579" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:55.131902" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:55.132452" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:55.132784" 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-19T02:43:55.107748" elapsed="0.025250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:55.135306" elapsed="0.000566"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:55.137328" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:55.136678" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:55.138047" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:55.137701" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:55.137622" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:55.138730" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:43:55.138448" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:55.138378" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:55.139109" elapsed="0.000055"/>
</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-19T02:43:55.145161" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:43:55.145710" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:55.146089" 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-19T02:43:55.140950" elapsed="0.005357"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:54.777415" elapsed="0.369118"/>
</kw>
<msg time="2026-04-19T02:43:55.146861" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:54.776138" elapsed="0.370783"/>
</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-19T02:43:54.775373" elapsed="0.371632"/>
</kw>
<msg time="2026-04-19T02:43:55.147061" 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-19T02:43:54.774304" elapsed="0.372805"/>
</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-19T02:43:55.150277" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:43:55.150758" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:55.151097" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:55.147486" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T02:43:55.151343" level="INFO">${output} = 1</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-19T02:43:54.772178" elapsed="0.379191"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:55.151801" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:55.151549" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:55.151889" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:55.152059" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:54.769830" elapsed="0.382256"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:55.152134" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:43:55.152280" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:54.767548" elapsed="0.384818"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:55.152933" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:55.152538" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:54.766442" elapsed="0.386715">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:57.156642" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:57.155845" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:57.158808" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:57.158197" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:57.160688" 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-19T02:43:57.160916" 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-19T02:43:57.160359" elapsed="0.000617"/>
</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-19T02:43:57.171174" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:57.170100" elapsed="0.001276"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:57.169931" elapsed="0.001577"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:57.174965" 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-19T02:43:57.175462" 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-19T02:43:57.173738" elapsed="0.001850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:57.177239" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:57.176648" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:57.179211" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:57.178418" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:57.181651" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:57.181731" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:57.181351" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:57.181988" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:57.183489" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:57.507544" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:57.183147" elapsed="0.324567"/>
</kw>
<msg time="2026-04-19T02:43:57.507806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:57.182676" elapsed="0.325227"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:57.180545" elapsed="0.327678"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:57.509727" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:57.532714" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:57.533254" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:57.533586" 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-19T02:43:57.509327" elapsed="0.024472"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:57.536259" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:57.539558" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:57.538530" elapsed="0.001269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:57.540728" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:57.540202" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:57.540069" elapsed="0.001003"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:57.541894" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:43:57.541424" elapsed="0.000903"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:57.541309" elapsed="0.001300"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:57.542935" elapsed="0.000306"/>
</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-19T02:43:57.548311" 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-19T02:43:57.549018" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:57.549475" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:57.544606" elapsed="0.005090"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:57.166247" elapsed="0.383681"/>
</kw>
<msg time="2026-04-19T02:43:57.550273" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:57.164253" elapsed="0.386084"/>
</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-19T02:43:57.162559" elapsed="0.387862"/>
</kw>
<msg time="2026-04-19T02:43:57.550514" 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-19T02:43:57.161364" elapsed="0.389223"/>
</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-19T02:43:57.553581" 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-19T02:43:57.554073" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:57.554373" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:57.550888" elapsed="0.003650"/>
</kw>
<msg time="2026-04-19T02:43:57.554717" level="INFO">${output} = 1</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-19T02:43:57.159387" elapsed="0.395357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:57.555302" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:57.554945" elapsed="0.000402"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:57.555393" elapsed="0.000049"/>
</return>
<msg time="2026-04-19T02:43:57.555600" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:57.157224" elapsed="0.398402"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:57.555675" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:43:57.555825" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:57.155003" elapsed="0.400847"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:57.556428" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:57.556007" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:57.153963" elapsed="0.402665">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:43:59.560161" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:43:59.559399" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:43:59.562480" level="INFO">${member_ip} = 10.30.171.206</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-19T02:43:59.561802" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:59.564385" 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-19T02:43:59.564617" 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-19T02:43:59.563992" elapsed="0.000684"/>
</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-19T02:43:59.569345" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:43:59.568836" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:59.568781" elapsed="0.000703"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:59.570921" 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-19T02:43:59.571185" 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-19T02:43:59.570480" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:59.572815" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:59.572265" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:43:59.574645" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:43:59.573931" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:43:59.577111" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:43:59.577189" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:43:59.576801" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:59.577425" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:43:59.578689" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:43:59.877478" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:43:59.578361" elapsed="0.299373"/>
</kw>
<msg time="2026-04-19T02:43:59.877818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:59.577981" elapsed="0.299923"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:43:59.575957" elapsed="0.302243"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:43:59.879666" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:43:59.903018" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:43:59.903563" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:43:59.903896" 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-19T02:43:59.879276" elapsed="0.024874"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:59.906418" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:59.909696" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:59.908559" elapsed="0.001378"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:59.910841" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:43:59.910330" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:59.910207" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:43:59.911942" elapsed="0.000146"/>
</return>
<status status="PASS" start="2026-04-19T02:43:59.911492" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:43:59.911382" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:43:59.912506" elapsed="0.000085"/>
</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-19T02:43:59.918502" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:43:59.919070" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:59.919435" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:59.915044" elapsed="0.004599"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:43:59.567197" elapsed="0.352669"/>
</kw>
<msg time="2026-04-19T02:43:59.920192" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:43:59.566486" elapsed="0.353764"/>
</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-19T02:43:59.565926" elapsed="0.354410"/>
</kw>
<msg time="2026-04-19T02:43:59.920382" 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-19T02:43:59.565151" elapsed="0.355278"/>
</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-19T02:43:59.923508" 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-19T02:43:59.923986" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:43:59.924301" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:43:59.920724" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T02:43:59.924544" level="INFO">${output} = 1</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-19T02:43:59.563064" elapsed="0.361505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:43:59.924999" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:43:59.924749" elapsed="0.000387"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:43:59.925181" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:43:59.925335" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:43:59.560687" elapsed="0.364674"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:43:59.925408" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T02:43:59.925581" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:43:59.558560" elapsed="0.367047"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:43:59.926249" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:43:59.925819" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:43:59.557515" elapsed="0.368923">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:01.929911" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:01.929181" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:01.932156" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:01.931468" elapsed="0.000749"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:01.933399" 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-19T02:44:01.933543" 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-19T02:44:01.933180" elapsed="0.000400"/>
</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-19T02:44:01.939450" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:01.938794" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:01.938718" elapsed="0.000965"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:01.941461" 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-19T02:44:01.941707" 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-19T02:44:01.940999" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:01.943361" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:01.942802" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:01.945242" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:01.944477" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:01.947655" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:01.947736" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:01.947328" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:01.947975" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:01.949284" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:02.261790" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:43:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:01.948914" elapsed="0.313024"/>
</kw>
<msg time="2026-04-19T02:44:02.262021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:01.948553" elapsed="0.313573"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:01.946550" elapsed="0.315856"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:02.263888" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:02.286979" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:02.287229" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:02.287379" 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-19T02:44:02.263491" elapsed="0.023989"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:02.288476" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:02.289925" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:02.289483" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:02.290457" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:02.290212" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:02.290152" elapsed="0.000437"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:02.290932" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:44:02.290732" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:02.290684" elapsed="0.000426"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:02.291189" 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-19T02:44:02.295955" 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-19T02:44:02.296530" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:02.296888" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:02.292530" elapsed="0.004597"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:01.936501" elapsed="0.360851"/>
</kw>
<msg time="2026-04-19T02:44:02.297658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:01.935307" elapsed="0.362409"/>
</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-19T02:44:01.934539" elapsed="0.363261"/>
</kw>
<msg time="2026-04-19T02:44:02.297841" 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-19T02:44:01.933807" elapsed="0.364080"/>
</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-19T02:44:02.301016" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:44:02.301522" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:02.301816" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:02.298335" elapsed="0.003631"/>
</kw>
<msg time="2026-04-19T02:44:02.302111" level="INFO">${output} = 1</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-19T02:44:01.932586" elapsed="0.369553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:02.302574" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:02.302321" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:02.302663" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:02.302819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:01.930467" elapsed="0.372379"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:02.302894" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:02.303058" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:01.928334" elapsed="0.374751"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:02.303644" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:02.303244" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:01.927265" elapsed="0.376559">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:04.307358" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:04.306585" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:04.309661" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:04.309013" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:04.311258" 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-19T02:44:04.311403" 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-19T02:44:04.311005" elapsed="0.000435"/>
</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-19T02:44:04.317356" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:04.316545" elapsed="0.000925"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:04.316156" elapsed="0.001398"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:04.319466" 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-19T02:44:04.319720" 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-19T02:44:04.318980" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:04.321424" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:04.320848" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:04.323355" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:04.322582" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:04.325881" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:04.325960" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:04.325582" 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-19T02:44:04.326224" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:04.327594" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:04.694844" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:04.327239" elapsed="0.367755"/>
</kw>
<msg time="2026-04-19T02:44:04.695093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:04.326784" elapsed="0.368397"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:04.324789" elapsed="0.370679"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:04.696973" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:04.719950" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:04.720522" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:04.720865" 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-19T02:44:04.696580" elapsed="0.024541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:04.723471" elapsed="0.000932"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:04.726742" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:04.725707" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:04.727988" elapsed="0.000104"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:04.727368" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:04.727242" elapsed="0.001114"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:04.729320" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T02:44:04.728708" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:04.728595" elapsed="0.001095"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:04.729874" elapsed="0.000089"/>
</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-19T02:44:04.735176" 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-19T02:44:04.735734" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:04.736116" 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-19T02:44:04.731621" elapsed="0.004722"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:04.314270" elapsed="0.422300"/>
</kw>
<msg time="2026-04-19T02:44:04.736896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:04.313278" elapsed="0.423680"/>
</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-19T02:44:04.312425" elapsed="0.424675"/>
</kw>
<msg time="2026-04-19T02:44:04.737145" 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-19T02:44:04.311663" elapsed="0.425530"/>
</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-19T02:44:04.740233" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:44:04.740722" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:04.741023" elapsed="0.000212"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:04.737490" elapsed="0.003799"/>
</kw>
<msg time="2026-04-19T02:44:04.741382" level="INFO">${output} = 1</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-19T02:44:04.310299" elapsed="0.431108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:04.741849" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:04.741597" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:04.741939" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:04.742119" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:04.308084" elapsed="0.434068"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:04.742203" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:44:04.742353" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:04.305704" elapsed="0.436673"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:04.742989" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:04.742564" elapsed="0.000535">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:04.304648" elapsed="0.438567">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:06.746760" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:06.746002" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:06.748789" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:06.748308" elapsed="0.000520"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:06.749961" 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-19T02:44:06.750235" 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-19T02:44:06.749740" elapsed="0.000534"/>
</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-19T02:44:06.756351" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:06.755467" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:06.755088" elapsed="0.001456"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:06.757961" 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-19T02:44:06.758224" 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-19T02:44:06.757523" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:06.759853" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:06.759297" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:06.761645" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:06.760935" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:06.764151" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:06.764233" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:06.763843" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:06.764480" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:06.765783" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:07.073089" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:06.765447" elapsed="0.307878"/>
</kw>
<msg time="2026-04-19T02:44:07.073476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:06.765072" elapsed="0.308555"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:06.762982" elapsed="0.311221"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:07.077203" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:07.089765" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:07.090297" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:07.090629" 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-19T02:44:07.076614" elapsed="0.014225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:07.093122" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:07.096473" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:07.095423" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:07.097376" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:07.096959" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:07.096853" elapsed="0.000720"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:07.098108" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:44:07.097788" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:07.097716" elapsed="0.000629"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:07.098462" elapsed="0.000055"/>
</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-19T02:44:07.106879" 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-19T02:44:07.107572" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:07.107932" elapsed="0.000126"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:07.100513" elapsed="0.007652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:06.752974" elapsed="0.355408"/>
</kw>
<msg time="2026-04-19T02:44:07.108703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:06.752021" elapsed="0.356742"/>
</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-19T02:44:06.751251" elapsed="0.357609"/>
</kw>
<msg time="2026-04-19T02:44:07.108915" 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-19T02:44:06.750501" elapsed="0.358474"/>
</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-19T02:44:07.112044" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:44:07.112526" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:07.112820" 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-19T02:44:07.109290" elapsed="0.003677"/>
</kw>
<msg time="2026-04-19T02:44:07.113072" level="INFO">${output} = 1</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-19T02:44:06.749156" elapsed="0.363943"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:07.113531" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:07.113280" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:07.113618" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:07.113770" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:06.747320" elapsed="0.366475"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:07.113841" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:07.113983" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:06.745183" elapsed="0.368824"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:07.114571" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:07.114179" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:06.744104" elapsed="0.370651">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:09.118421" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:09.117604" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:09.120688" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:09.120002" elapsed="0.000751"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:09.122653" 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-19T02:44:09.122883" 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-19T02:44:09.122324" elapsed="0.000619"/>
</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-19T02:44:09.129140" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:09.128652" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:09.128595" elapsed="0.000780"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:09.131273" 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-19T02:44:09.131522" 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-19T02:44:09.130402" elapsed="0.001221"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:09.133176" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:09.132617" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:09.135090" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:09.134300" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:09.137549" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:09.137634" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:09.137243" 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-19T02:44:09.137879" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:09.139152" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:09.436525" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:09.138811" elapsed="0.297870"/>
</kw>
<msg time="2026-04-19T02:44:09.436770" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:09.138447" elapsed="0.298416"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:09.136472" elapsed="0.300705"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:09.438699" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:09.461617" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:09.462215" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:09.462544" 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-19T02:44:09.438296" elapsed="0.024459"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:09.464972" elapsed="0.001099"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:09.467720" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:09.467104" elapsed="0.000757"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:09.468444" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:09.468115" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:09.468006" elapsed="0.000627"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:09.469139" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:44:09.468833" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:09.468765" elapsed="0.000601"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:09.469477" elapsed="0.000055"/>
</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-19T02:44:09.475785" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:44:09.476351" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:09.476709" 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-19T02:44:09.471446" elapsed="0.005470"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:09.127266" elapsed="0.349892"/>
</kw>
<msg time="2026-04-19T02:44:09.477571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:09.126089" elapsed="0.351548"/>
</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-19T02:44:09.124767" elapsed="0.352970"/>
</kw>
<msg time="2026-04-19T02:44:09.477782" 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-19T02:44:09.123389" elapsed="0.354443"/>
</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-19T02:44:09.480912" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:09.481410" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:09.481767" elapsed="0.000109"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:09.478145" elapsed="0.003785"/>
</kw>
<msg time="2026-04-19T02:44:09.482023" level="INFO">${output} = 1</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-19T02:44:09.121312" elapsed="0.360753"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:09.482496" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:09.482247" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:09.482584" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:09.482738" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:09.118984" elapsed="0.363779"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:09.482811" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:44:09.482956" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:09.116687" elapsed="0.366294"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:09.483564" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:09.483167" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:09.115588" elapsed="0.368162">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:11.487441" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:11.486673" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:11.489711" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:11.488978" elapsed="0.000773"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:11.490888" 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-19T02:44:11.491052" 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-19T02:44:11.490666" elapsed="0.000426"/>
</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-19T02:44:11.496364" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:11.495712" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:11.495636" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:11.498877" 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-19T02:44:11.499258" 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-19T02:44:11.497920" elapsed="0.001476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:11.501549" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:11.500743" elapsed="0.000962"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:11.503609" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:11.502825" elapsed="0.000886"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:11.506015" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:11.506111" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:11.505728" 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-19T02:44:11.506350" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:11.507853" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:11.827383" 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 Sun Apr 19 02:43:11 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:11.507525" elapsed="0.320009"/>
</kw>
<msg time="2026-04-19T02:44:11.827620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:11.506908" elapsed="0.320804"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:11.504919" elapsed="0.323071"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:11.829504" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:11.852525" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:11.853021" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:11.853410" 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-19T02:44:11.829111" elapsed="0.024513"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:11.855866" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:11.859066" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:11.858088" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:11.860196" elapsed="0.000083"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:11.859652" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:11.859528" elapsed="0.000983"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:11.861313" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:44:11.860832" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:11.860723" elapsed="0.000938"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:11.861841" elapsed="0.000085"/>
</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-19T02:44:11.868323" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:44:11.868867" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:11.869240" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:11.864849" elapsed="0.004664"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:11.493782" elapsed="0.375959"/>
</kw>
<msg time="2026-04-19T02:44:11.870115" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:11.492805" elapsed="0.377370"/>
</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-19T02:44:11.492055" elapsed="0.378204"/>
</kw>
<msg time="2026-04-19T02:44:11.870300" 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-19T02:44:11.491316" elapsed="0.379032"/>
</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-19T02:44:11.873399" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:11.873885" elapsed="0.000256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:11.874296" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:11.870708" elapsed="0.003741"/>
</kw>
<msg time="2026-04-19T02:44:11.874543" level="INFO">${output} = 1</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-19T02:44:11.490077" elapsed="0.384492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:11.875014" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:11.874762" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:11.875121" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:44:11.875278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:11.487972" elapsed="0.387333"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:11.875353" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:11.875501" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:11.485822" elapsed="0.389705"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:11.876094" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:11.875686" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:11.484718" elapsed="0.391585">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:13.879846" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:13.879080" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:13.882364" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:13.881645" elapsed="0.000786"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:13.884224" 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-19T02:44:13.884367" 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-19T02:44:13.883963" elapsed="0.000440"/>
</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-19T02:44:13.890013" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:13.889372" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:13.889295" elapsed="0.001133"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:13.892960" 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-19T02:44:13.893353" 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-19T02:44:13.891926" elapsed="0.001577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:13.895830" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:13.895016" elapsed="0.000922"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:13.897670" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:13.896964" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:13.900164" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:13.900247" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:13.899747" elapsed="0.000525"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:13.900483" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:13.901823" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:14.472731" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:13.901496" elapsed="0.571383"/>
</kw>
<msg time="2026-04-19T02:44:14.472961" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:13.901128" elapsed="0.571935"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:13.898970" elapsed="0.574369"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:14.474807" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:14.497467" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:14.497970" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:14.498358" 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-19T02:44:14.474423" elapsed="0.024148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:14.500821" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:14.503986" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:14.502981" elapsed="0.001359"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:14.505232" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:14.504694" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:14.504569" elapsed="0.001017"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:14.506364" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:44:14.506023" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:14.505911" elapsed="0.000683"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:14.506705" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:14.513443" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:14.514239" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:14.514736" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:14.508761" elapsed="0.006266"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:13.887181" elapsed="0.628197"/>
</kw>
<msg time="2026-04-19T02:44:14.515795" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:13.886154" elapsed="0.629721"/>
</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-19T02:44:13.885384" elapsed="0.630606"/>
</kw>
<msg time="2026-04-19T02:44:14.516103" 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-19T02:44:13.884624" elapsed="0.631546"/>
</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-19T02:44:14.519692" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:44:14.520230" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:14.520528" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:14.516581" elapsed="0.004097"/>
</kw>
<msg time="2026-04-19T02:44:14.520836" level="INFO">${output} = 1</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-19T02:44:13.883004" elapsed="0.637858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:14.521315" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:14.521063" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:14.521415" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:44:14.521571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:13.880518" elapsed="0.641078"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:14.521645" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:14.521794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:13.878204" elapsed="0.643615"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:14.522393" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:14.521977" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:13.877144" elapsed="0.645431">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:16.526101" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:16.525328" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:16.528218" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:16.527583" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:16.530088" 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-19T02:44:16.530319" 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-19T02:44:16.529728" elapsed="0.000650"/>
</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-19T02:44:16.536466" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:16.535723" elapsed="0.000823"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:16.535668" elapsed="0.000938"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:16.538081" 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-19T02:44:16.538332" 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-19T02:44:16.537600" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:16.539944" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:16.539406" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:16.541760" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:16.541060" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:16.544110" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:16.544188" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:16.543815" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:16.544425" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:16.545743" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:16.860116" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:16.545418" elapsed="0.314919"/>
</kw>
<msg time="2026-04-19T02:44:16.860414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:16.544989" elapsed="0.315511"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:16.543059" elapsed="0.317697"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:16.862221" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:16.885352" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:16.885847" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:16.886247" 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-19T02:44:16.861827" elapsed="0.024673"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:16.888749" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:16.891972" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:16.890932" elapsed="0.001379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:16.893106" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:16.892679" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:16.892555" elapsed="0.000743"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:16.893809" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:44:16.893522" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:16.893453" elapsed="0.000608"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:16.894180" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:16.901056" 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-19T02:44:16.901841" elapsed="0.000251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:16.902369" elapsed="0.000156"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:16.896131" elapsed="0.006550"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:16.534351" elapsed="0.368656"/>
</kw>
<msg time="2026-04-19T02:44:16.903581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:16.533167" elapsed="0.370498"/>
</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-19T02:44:16.531897" elapsed="0.371887"/>
</kw>
<msg time="2026-04-19T02:44:16.903843" 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-19T02:44:16.530731" elapsed="0.373177"/>
</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-19T02:44:16.907290" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:44:16.907791" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:16.908109" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:16.904373" elapsed="0.003901"/>
</kw>
<msg time="2026-04-19T02:44:16.908368" level="INFO">${output} = 1</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-19T02:44:16.528761" elapsed="0.379633"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:16.908841" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:16.908584" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:16.908933" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:16.909109" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:16.526629" elapsed="0.382508"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:16.909185" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:44:16.909334" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:16.524452" elapsed="0.384908"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:16.909987" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:16.909573" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:16.523412" elapsed="0.386782">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:18.913668" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:18.912899" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:18.916141" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:18.915505" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:18.917639" 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-19T02:44:18.917780" 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-19T02:44:18.917413" elapsed="0.000404"/>
</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-19T02:44:18.923468" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:18.922791" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:18.922403" elapsed="0.001262"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:18.925709" 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-19T02:44:18.926091" 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-19T02:44:18.925089" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:18.928364" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:18.927591" elapsed="0.000958"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:18.930416" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:18.929650" elapsed="0.000864"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:18.932796" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:18.932872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:18.932509" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:18.933132" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:18.934551" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:19.263452" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:18.934209" elapsed="0.329387"/>
</kw>
<msg time="2026-04-19T02:44:19.263681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:18.933694" elapsed="0.330074"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:18.931717" elapsed="0.332381"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:19.265573" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:19.288111" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:19.288609" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:19.288938" 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-19T02:44:19.265186" elapsed="0.024002"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:19.291451" elapsed="0.000941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:19.294648" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:19.293662" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:19.295808" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:19.295263" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:19.295137" elapsed="0.001009"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:19.296641" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:44:19.296356" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:19.296287" elapsed="0.000582"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:19.296982" elapsed="0.000149"/>
</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-19T02:44:19.303785" elapsed="0.000482"/>
</kw>
<kw name="Open 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-19T02:44:19.304566" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:19.305154" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:19.299056" elapsed="0.006393"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:18.920524" elapsed="0.385238"/>
</kw>
<msg time="2026-04-19T02:44:19.306216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:18.919533" elapsed="0.386765"/>
</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-19T02:44:18.918768" elapsed="0.387643"/>
</kw>
<msg time="2026-04-19T02:44:19.306467" 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-19T02:44:18.918057" elapsed="0.388474"/>
</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-19T02:44:19.309979" 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-19T02:44:19.310472" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:19.310766" 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-19T02:44:19.306934" elapsed="0.003978"/>
</kw>
<msg time="2026-04-19T02:44:19.311008" level="INFO">${output} = 1</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-19T02:44:18.916730" elapsed="0.394318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:19.311477" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:19.311230" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:19.311564" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:44:19.311716" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:18.914230" elapsed="0.397521"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:19.311800" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:44:19.311944" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:18.912027" elapsed="0.399942"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:19.312566" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:19.312144" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:18.910973" elapsed="0.401779">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:21.316240" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:21.315477" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:21.318558" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:21.317920" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:21.320399" 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-19T02:44:21.320676" 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-19T02:44:21.320073" elapsed="0.000667"/>
</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-19T02:44:21.326438" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:21.325777" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:21.325409" elapsed="0.001223"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:21.328630" 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-19T02:44:21.328965" 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-19T02:44:21.327981" elapsed="0.001166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:21.331252" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:21.330484" elapsed="0.000917"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:21.333629" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:21.332777" elapsed="0.000949"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:21.336003" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:21.336096" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:21.335720" 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-19T02:44:21.336331" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:21.337735" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:21.663060" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:21.337412" elapsed="0.325798"/>
</kw>
<msg time="2026-04-19T02:44:21.663295" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:21.336893" elapsed="0.326506"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:21.334908" elapsed="0.328786"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:21.665227" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:21.687989" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:21.688396" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:21.688617" 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-19T02:44:21.664815" elapsed="0.023944"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:21.690364" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:21.693731" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:21.692673" elapsed="0.001299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:21.695211" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:21.694482" elapsed="0.000910"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:21.694342" elapsed="0.001205"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:21.696480" elapsed="0.000135"/>
</return>
<status status="PASS" start="2026-04-19T02:44:21.695909" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:21.695788" elapsed="0.001084"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:21.697077" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:21.703967" 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-19T02:44:21.704575" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:21.704955" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:21.698570" elapsed="0.006623"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:21.323548" elapsed="0.381879"/>
</kw>
<msg time="2026-04-19T02:44:21.705772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:21.322579" elapsed="0.383256"/>
</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-19T02:44:21.321805" elapsed="0.384114"/>
</kw>
<msg time="2026-04-19T02:44:21.705960" 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-19T02:44:21.321088" elapsed="0.384919"/>
</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-19T02:44:21.709163" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:21.709655" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:21.709961" elapsed="0.000161"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:21.706418" elapsed="0.003757"/>
</kw>
<msg time="2026-04-19T02:44:21.710269" level="INFO">${output} = 1</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-19T02:44:21.319131" elapsed="0.391164"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:21.710740" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:21.710480" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:21.710831" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:21.710985" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:21.316961" elapsed="0.394049"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:21.711076" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:44:21.711223" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:21.314633" elapsed="0.396614"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:21.711810" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:21.711404" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:21.313559" elapsed="0.398461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:23.715570" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:23.714792" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:23.717702" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:23.717067" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:23.719567" 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-19T02:44:23.719940" 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-19T02:44:23.719229" elapsed="0.000772"/>
</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-19T02:44:23.725160" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:23.724679" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:23.724622" elapsed="0.000676"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:23.727005" 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-19T02:44:23.727285" 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-19T02:44:23.726327" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:23.728915" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:23.728373" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:23.730756" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:23.730045" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:23.733229" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:23.733317" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:23.732914" 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-19T02:44:23.733558" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:23.735002" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:24.039868" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:23.734672" elapsed="0.305331"/>
</kw>
<msg time="2026-04-19T02:44:24.040105" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:23.734306" elapsed="0.305885"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:23.732145" elapsed="0.308313"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:24.041954" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:24.064951" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:24.065487" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:24.065818" 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-19T02:44:24.041567" elapsed="0.024459"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:24.068246" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:24.071424" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:24.070410" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:24.072533" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:24.071998" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:24.071876" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:24.073446" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T02:44:24.073240" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:24.073137" elapsed="0.000465"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:24.073681" 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-19T02:44:24.078423" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:44:24.079114" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:24.079668" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:24.074986" elapsed="0.004890"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:23.723290" elapsed="0.356822"/>
</kw>
<msg time="2026-04-19T02:44:24.080600" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:23.722581" elapsed="0.358076"/>
</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-19T02:44:23.721600" elapsed="0.359140"/>
</kw>
<msg time="2026-04-19T02:44:24.080781" 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-19T02:44:23.720399" elapsed="0.360429"/>
</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-19T02:44:24.083917" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:44:24.084417" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:24.084712" 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-19T02:44:24.081151" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T02:44:24.084975" level="INFO">${output} = 1</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-19T02:44:23.718275" elapsed="0.366726"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:24.085446" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:24.085198" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:24.085532" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:24.085684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:23.716123" elapsed="0.369586"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:24.085756" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:24.085901" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:23.713940" elapsed="0.371985"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:24.086536" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:24.086134" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:23.712871" elapsed="0.373849">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:26.090776" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:26.089911" elapsed="0.000942"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:26.092315" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:26.091900" elapsed="0.000453"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:26.093487" 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-19T02:44:26.093629" 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-19T02:44:26.093267" elapsed="0.000400"/>
</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-19T02:44:26.099230" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:26.098526" elapsed="0.000919"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:26.098448" elapsed="0.001084"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:26.101917" 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-19T02:44:26.102320" 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-19T02:44:26.100910" elapsed="0.001549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:26.104303" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:26.103730" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:26.106196" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:26.105414" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:26.108597" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:26.108677" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:26.108305" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:26.108919" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:26.110422" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:26.434620" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:26.109910" elapsed="0.324842"/>
</kw>
<msg time="2026-04-19T02:44:26.434832" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:26.109532" elapsed="0.325385"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:26.107506" elapsed="0.327716"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:26.436695" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:26.459424" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:26.459926" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:26.460342" 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-19T02:44:26.436315" elapsed="0.024246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:26.462859" elapsed="0.000696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:26.464990" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:26.464386" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:26.465730" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:26.465407" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:26.465328" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:26.466463" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:44:26.466142" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:26.466070" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:26.466798" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:26.473572" elapsed="0.000499"/>
</kw>
<kw name="Open 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-19T02:44:26.474408" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:26.474913" 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-19T02:44:26.468686" elapsed="0.006562"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:26.096489" elapsed="0.379018"/>
</kw>
<msg time="2026-04-19T02:44:26.475897" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:26.095434" elapsed="0.380525"/>
</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-19T02:44:26.094649" elapsed="0.381421"/>
</kw>
<msg time="2026-04-19T02:44:26.476117" 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-19T02:44:26.093887" elapsed="0.382279"/>
</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-19T02:44:26.479284" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:44:26.479775" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:26.480106" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:26.476466" elapsed="0.003817"/>
</kw>
<msg time="2026-04-19T02:44:26.480389" level="INFO">${output} = 1</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-19T02:44:26.092659" elapsed="0.387759"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:26.480929" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:26.480642" elapsed="0.000339"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:26.481069" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:44:26.481248" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:26.091296" elapsed="0.389980"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:26.481326" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:44:26.481475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:26.089092" elapsed="0.392408"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:26.482094" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:26.481662" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:26.087791" elapsed="0.394526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:28.485724" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:28.484974" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:28.487797" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:28.487203" elapsed="0.000653"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:28.489670" 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-19T02:44:28.489897" 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-19T02:44:28.489348" elapsed="0.000612"/>
</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-19T02:44:28.496699" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:28.496010" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:28.495931" elapsed="0.000962"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:28.499351" 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-19T02:44:28.499727" 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-19T02:44:28.498266" elapsed="0.001601"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:28.502022" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:28.501234" elapsed="0.000964"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:28.504677" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:28.503649" elapsed="0.001166"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:28.507241" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:28.507324" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:28.506937" 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-19T02:44:28.507561" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:28.508900" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:28.826609" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:28.508574" elapsed="0.318190"/>
</kw>
<msg time="2026-04-19T02:44:28.826850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:28.508182" elapsed="0.318757"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:28.506183" elapsed="0.321063"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:28.828750" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:28.851188" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:28.851685" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:28.852086" 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-19T02:44:28.828358" elapsed="0.023960"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:28.854542" elapsed="0.000990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:28.857946" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:28.856879" elapsed="0.001348"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:28.859191" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:28.858614" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:28.858473" elapsed="0.001016"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:28.860378" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:44:28.859809" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:28.859701" elapsed="0.000865"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:28.860647" 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-19T02:44:28.865536" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:44:28.866104" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:28.866461" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:28.862059" elapsed="0.004614"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:28.493982" elapsed="0.372914"/>
</kw>
<msg time="2026-04-19T02:44:28.867219" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:28.492790" elapsed="0.374488"/>
</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-19T02:44:28.491508" elapsed="0.375857"/>
</kw>
<msg time="2026-04-19T02:44:28.867408" 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-19T02:44:28.490342" elapsed="0.377116"/>
</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-19T02:44:28.870754" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T02:44:28.871422" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:28.871783" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:28.867830" elapsed="0.004135"/>
</kw>
<msg time="2026-04-19T02:44:28.872124" level="INFO">${output} = 1</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-19T02:44:28.488398" elapsed="0.383758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:28.872748" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:28.872388" elapsed="0.000415"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:28.872862" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:44:28.873190" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:28.486270" elapsed="0.386955"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:28.873289" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:44:28.873475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:28.484147" elapsed="0.389361"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:28.874208" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:28.873709" elapsed="0.000585">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:28.483127" elapsed="0.391309">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:30.878023" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:30.877278" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:30.880414" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:30.879743" elapsed="0.000743"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:30.882451" 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-19T02:44:30.882688" 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-19T02:44:30.882070" elapsed="0.000678"/>
</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-19T02:44:30.891620" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:30.890326" elapsed="0.001386"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:30.890205" elapsed="0.001573"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:30.893280" 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-19T02:44:30.893530" 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-19T02:44:30.892801" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:30.895286" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:30.894678" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:30.897177" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:30.896437" elapsed="0.000839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:30.899625" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:30.899704" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:30.899324" 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-19T02:44:30.899952" elapsed="0.000565"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:30.901477" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:31.229125" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:30.901143" elapsed="0.328138"/>
</kw>
<msg time="2026-04-19T02:44:31.229367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:30.900748" elapsed="0.328711"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:30.898519" elapsed="0.331229"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:31.231455" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:31.254140" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:31.254705" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:31.255074" 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-19T02:44:31.230998" elapsed="0.024303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:31.257670" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:31.260880" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:31.259890" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:31.262064" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:31.261504" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:31.261380" elapsed="0.001080"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:31.262838" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:44:31.262624" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:31.262572" elapsed="0.000440"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:31.263164" 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-19T02:44:31.268214" 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-19T02:44:31.268780" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:31.269166" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:31.264522" elapsed="0.004864"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:30.887176" elapsed="0.382452"/>
</kw>
<msg time="2026-04-19T02:44:31.269955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:30.885592" elapsed="0.384427"/>
</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-19T02:44:30.884330" elapsed="0.385868"/>
</kw>
<msg time="2026-04-19T02:44:31.270243" 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-19T02:44:30.883134" elapsed="0.387160"/>
</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-19T02:44:31.273315" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:44:31.273810" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:31.274242" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:31.270594" elapsed="0.003811"/>
</kw>
<msg time="2026-04-19T02:44:31.274565" level="INFO">${output} = 1</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-19T02:44:30.880980" elapsed="0.393611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:31.275048" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:31.274777" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:31.275141" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:31.275299" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:30.878778" elapsed="0.396547"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:31.275377" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:44:31.275528" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:30.876447" elapsed="0.399107"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:31.276140" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:31.275715" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:30.875419" elapsed="0.400908">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:33.279957" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:33.279195" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:33.281922" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:33.281527" elapsed="0.000432"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:33.283124" 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-19T02:44:33.283267" 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-19T02:44:33.282869" elapsed="0.000434"/>
</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-19T02:44:33.288956" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:33.288294" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:33.287868" elapsed="0.001302"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:33.291262" 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-19T02:44:33.291616" 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-19T02:44:33.290595" elapsed="0.001168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:33.293849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:33.293236" elapsed="0.000720"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:33.295704" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:33.294928" elapsed="0.000873"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:33.298066" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:33.298145" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:33.297758" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:33.298384" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:33.299783" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:33.657605" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:33.299457" elapsed="0.358418"/>
</kw>
<msg time="2026-04-19T02:44:33.657963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:33.298949" elapsed="0.359126"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:33.296991" elapsed="0.361376"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:33.659863" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:33.682973" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:33.683616" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:33.683940" 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-19T02:44:33.659466" elapsed="0.024728"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:33.686511" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:33.689759" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:33.688761" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:33.690858" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:33.690361" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:33.690239" elapsed="0.000934"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:33.692254" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T02:44:33.691486" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:33.691380" elapsed="0.001256"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:33.692814" elapsed="0.000080"/>
</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-19T02:44:33.700357" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:44:33.700988" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:33.701381" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:33.695773" elapsed="0.005822"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:33.286074" elapsed="0.415748"/>
</kw>
<msg time="2026-04-19T02:44:33.702158" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:33.285065" elapsed="0.417162"/>
</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-19T02:44:33.284270" elapsed="0.418041"/>
</kw>
<msg time="2026-04-19T02:44:33.702352" 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-19T02:44:33.283534" elapsed="0.418864"/>
</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-19T02:44:33.705529" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:33.706014" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:33.706331" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:33.702702" elapsed="0.003778"/>
</kw>
<msg time="2026-04-19T02:44:33.706576" level="INFO">${output} = 1</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-19T02:44:33.282290" elapsed="0.424312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:33.707084" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:33.706812" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:33.707177" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:44:33.707339" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:33.280521" elapsed="0.426844"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:33.707412" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:44:33.707557" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:33.278353" elapsed="0.429228"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:33.708271" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:33.707821" elapsed="0.000528">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:33.277241" elapsed="0.431224">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:35.712130" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:35.711292" elapsed="0.000912"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:35.714234" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:35.713599" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:35.716088" 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-19T02:44:35.716320" 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-19T02:44:35.715722" elapsed="0.000656"/>
</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-19T02:44:35.722782" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:35.722296" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:35.721988" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:35.724488" 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-19T02:44:35.724736" 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-19T02:44:35.724043" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:35.726395" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:35.725817" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:35.728191" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:35.727469" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:35.730583" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:35.730661" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:35.730297" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:35.730893" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:35.732196" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:36.043211" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:35.731855" elapsed="0.311567"/>
</kw>
<msg time="2026-04-19T02:44:36.043533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:35.731461" elapsed="0.312184"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:35.729463" elapsed="0.314596"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:36.046187" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:36.069212" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:36.069761" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:36.070188" 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-19T02:44:36.045625" elapsed="0.024783"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:36.072727" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:36.076071" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:36.074973" elapsed="0.001338"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:36.077225" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:36.076670" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:36.076543" elapsed="0.000984"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:36.078395" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T02:44:36.077894" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:36.077774" elapsed="0.000992"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:36.078946" elapsed="0.000239"/>
</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-19T02:44:36.086892" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:36.087493" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:36.087871" 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-19T02:44:36.081259" elapsed="0.006843"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:35.720653" elapsed="0.367678"/>
</kw>
<msg time="2026-04-19T02:44:36.088645" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:35.719133" elapsed="0.369571"/>
</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-19T02:44:35.717900" elapsed="0.370884"/>
</kw>
<msg time="2026-04-19T02:44:36.088825" 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-19T02:44:35.716729" elapsed="0.372142"/>
</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-19T02:44:36.092062" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:44:36.092581" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:36.092884" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:36.089185" elapsed="0.003865"/>
</kw>
<msg time="2026-04-19T02:44:36.093142" level="INFO">${output} = 1</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-19T02:44:35.714769" elapsed="0.378398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:36.093594" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:36.093347" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:36.093682" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:36.093832" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:35.712663" elapsed="0.381194"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:36.093902" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:36.094060" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:35.710414" elapsed="0.383671"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:36.094635" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:36.094240" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:35.709321" elapsed="0.385495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:38.098241" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:38.097481" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:38.100214" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:38.099793" elapsed="0.000461"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:38.101445" 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-19T02:44:38.101598" 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-19T02:44:38.101208" elapsed="0.000429"/>
</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-19T02:44:38.107257" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:38.106569" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:38.106484" elapsed="0.000974"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:38.109973" 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-19T02:44:38.110396" 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-19T02:44:38.108923" elapsed="0.001679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:38.112488" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:38.111907" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:38.114457" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:38.113636" elapsed="0.000922"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:38.116857" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:38.116934" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:38.116569" 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-19T02:44:38.117201" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:38.118714" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:38.434320" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:38.118357" elapsed="0.316120"/>
</kw>
<msg time="2026-04-19T02:44:38.434563" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:38.117783" elapsed="0.316873"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:38.115775" elapsed="0.319169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:38.436482" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:38.459716" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:38.460317" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:38.460648" 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-19T02:44:38.436079" elapsed="0.024784"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:38.463230" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:38.466545" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:38.465481" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:38.467778" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:38.467156" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:38.466997" elapsed="0.001112"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:38.468878" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T02:44:38.468433" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:38.468326" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:38.469475" elapsed="0.000082"/>
</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-19T02:44:38.475365" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:44:38.475921" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:38.476306" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:38.471587" elapsed="0.004931"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:38.104467" elapsed="0.372278"/>
</kw>
<msg time="2026-04-19T02:44:38.477085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:38.103475" elapsed="0.373678"/>
</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-19T02:44:38.102664" elapsed="0.374574"/>
</kw>
<msg time="2026-04-19T02:44:38.477278" 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-19T02:44:38.101872" elapsed="0.375453"/>
</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-19T02:44:38.480465" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:44:38.480948" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:38.481279" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:38.477618" elapsed="0.003812"/>
</kw>
<msg time="2026-04-19T02:44:38.481523" level="INFO">${output} = 1</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-19T02:44:38.100575" elapsed="0.380973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:38.481975" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:38.481727" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:38.482084" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:38.482239" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:38.098953" elapsed="0.383311"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:38.482326" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:44:38.482474" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:38.096611" elapsed="0.385888"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:38.483079" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:38.482656" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:38.095598" elapsed="0.387683">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:40.486762" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:40.485966" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:40.488938" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:40.488266" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:40.490868" 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-19T02:44:40.491156" 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-19T02:44:40.490620" elapsed="0.000576"/>
</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-19T02:44:40.496461" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:40.495806" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:40.495731" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:40.498943" 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-19T02:44:40.499331" 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-19T02:44:40.498008" elapsed="0.001462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:40.501688" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:40.500884" elapsed="0.000956"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:40.503789" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:40.503094" elapsed="0.000793"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:40.506551" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:40.506631" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:40.506265" 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-19T02:44:40.506867" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:40.508293" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:40.826213" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:40.507810" elapsed="0.318547"/>
</kw>
<msg time="2026-04-19T02:44:40.826439" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:40.507449" elapsed="0.319078"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:40.505473" elapsed="0.321335"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:40.828318" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:40.850996" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:40.851536" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:40.851873" 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-19T02:44:40.827899" elapsed="0.024224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:40.854383" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:40.857580" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:40.856532" elapsed="0.001289"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:40.858708" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:40.858203" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:40.858076" elapsed="0.000920"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:40.859803" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:44:40.859358" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:40.859250" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:40.860364" elapsed="0.000084"/>
</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-19T02:44:40.868152" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:40.868769" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:40.869203" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:40.863445" elapsed="0.005972"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:40.493870" elapsed="0.375785"/>
</kw>
<msg time="2026-04-19T02:44:40.869965" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:40.492910" elapsed="0.377114"/>
</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-19T02:44:40.492158" elapsed="0.377965"/>
</kw>
<msg time="2026-04-19T02:44:40.870166" 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-19T02:44:40.491421" elapsed="0.378792"/>
</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-19T02:44:40.873604" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:40.874103" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:40.874454" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:40.870504" elapsed="0.004103"/>
</kw>
<msg time="2026-04-19T02:44:40.874699" level="INFO">${output} = 1</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-19T02:44:40.489521" elapsed="0.385204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:40.875172" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:40.874905" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:40.875260" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:40.875414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:40.487320" elapsed="0.388119"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:40.875486" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:44:40.875632" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:40.485122" elapsed="0.390534"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:40.876221" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:40.875812" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:40.484013" elapsed="0.392393">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:42.878312" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:42.877907" elapsed="0.000441"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:42.879268" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:42.878973" elapsed="0.000323"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:42.880121" 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-19T02:44:42.880226" 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-19T02:44:42.879932" elapsed="0.000322"/>
</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-19T02:44:42.884162" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:42.883679" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:42.883622" elapsed="0.000764"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:42.886284" 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-19T02:44:42.886534" 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-19T02:44:42.885391" elapsed="0.001243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:42.888350" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:42.887795" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:42.890146" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:42.889440" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:42.892544" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:42.892624" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:42.892261" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:42.892860" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:42.894154" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:43.203704" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:42.893813" elapsed="0.309969"/>
</kw>
<msg time="2026-04-19T02:44:43.203842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:42.893447" elapsed="0.310464"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:42.891493" elapsed="0.312660"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:43.205477" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:43.228084" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:43.228495" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:43.228772" 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-19T02:44:43.205159" elapsed="0.023765"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:43.229904" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:43.231279" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:43.230856" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:43.231749" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:43.231533" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:43.231479" 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-19T02:44:43.232241" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:44:43.232022" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:43.231974" elapsed="0.000426"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:43.232477" 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-19T02:44:43.237176" 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-19T02:44:43.237710" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:43.238071" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:43.233805" elapsed="0.004475"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:42.882255" elapsed="0.356247"/>
</kw>
<msg time="2026-04-19T02:44:43.238851" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:42.881513" elapsed="0.357394"/>
</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-19T02:44:42.880950" elapsed="0.358040"/>
</kw>
<msg time="2026-04-19T02:44:43.239046" 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-19T02:44:42.880416" elapsed="0.358679"/>
</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-19T02:44:43.242230" 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-19T02:44:43.242709" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:43.243011" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:43.239388" elapsed="0.003795"/>
</kw>
<msg time="2026-04-19T02:44:43.243273" level="INFO">${output} = 1</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-19T02:44:42.879513" elapsed="0.363786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:43.243735" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:43.243475" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:43.243825" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:43.243977" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:42.878561" elapsed="0.365442"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:43.244066" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:44:43.244214" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:42.877506" elapsed="0.366733"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:43.244799" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:43.244396" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:42.876920" elapsed="0.368060">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:45.248664" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:45.247808" elapsed="0.000928"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:45.250790" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:45.250176" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:45.252850" 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-19T02:44:45.253116" 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-19T02:44:45.252473" elapsed="0.000706"/>
</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-19T02:44:45.260366" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:45.258780" elapsed="0.001767"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:45.258695" elapsed="0.001987"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:45.263954" 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-19T02:44:45.264615" 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-19T02:44:45.262941" elapsed="0.001961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:45.266628" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:45.265972" elapsed="0.000765"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:45.268598" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:45.267824" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:45.271094" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:45.271172" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:45.270782" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:45.271416" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:45.272724" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:45.583601" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:45.272384" elapsed="0.311371"/>
</kw>
<msg time="2026-04-19T02:44:45.583841" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:45.271977" elapsed="0.311953"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:45.269925" elapsed="0.314403"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:45.585857" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:45.608752" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:45.609285" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:45.609614" 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-19T02:44:45.585455" elapsed="0.024366"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:45.612593" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:45.615767" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:45.614750" elapsed="0.001240"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:45.616899" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:45.616400" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:45.616251" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:45.617983" elapsed="0.000274"/>
</return>
<status status="PASS" start="2026-04-19T02:44:45.617541" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:45.617436" elapsed="0.001063"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:45.618672" 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-19T02:44:45.624702" 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-19T02:44:45.625308" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:45.625670" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:45.621271" elapsed="0.004609"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:45.256767" elapsed="0.369409"/>
</kw>
<msg time="2026-04-19T02:44:45.626485" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:45.255733" elapsed="0.370810"/>
</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-19T02:44:45.254925" elapsed="0.371701"/>
</kw>
<msg time="2026-04-19T02:44:45.626668" 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-19T02:44:45.253545" elapsed="0.373170"/>
</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-19T02:44:45.629818" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T02:44:45.630388" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:45.630685" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:45.627121" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T02:44:45.630931" level="INFO">${output} = 1</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-19T02:44:45.251474" elapsed="0.379483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:45.631401" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:45.631150" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:45.631489" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:45.631641" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:45.249233" elapsed="0.382433"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:45.631713" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:45.631859" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:45.246949" elapsed="0.384934"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:45.632476" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:45.632055" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:45.245815" elapsed="0.386848">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:47.636209" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:47.635418" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:47.638322" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:47.637684" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:47.640228" 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-19T02:44:47.640461" 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-19T02:44:47.639815" elapsed="0.000707"/>
</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-19T02:44:47.646288" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:47.645603" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:47.645214" elapsed="0.001280"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:47.648537" 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-19T02:44:47.648880" 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-19T02:44:47.647875" elapsed="0.001148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:47.651196" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:47.650418" elapsed="0.000933"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:47.653652" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:47.652852" elapsed="0.000901"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:47.656180" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:47.656269" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:47.655753" 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-19T02:44:47.656502" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:47.657840" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:47.982971" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:47.657507" elapsed="0.325653"/>
</kw>
<msg time="2026-04-19T02:44:47.983255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:47.657136" elapsed="0.326217"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:47.654965" elapsed="0.328699"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:47.985223" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:48.008094" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:48.008654" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:48.008992" 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-19T02:44:47.984801" elapsed="0.024457"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:48.011618" elapsed="0.001060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:48.014239" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:48.013611" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:48.014927" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:48.014605" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:48.014526" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:48.015717" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:44:48.015376" elapsed="0.000503"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:48.015308" elapsed="0.000662"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:48.016108" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:48.022992" elapsed="0.000485"/>
</kw>
<kw name="Open 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-19T02:44:48.023890" elapsed="0.000257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:48.024514" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:48.018069" elapsed="0.006742"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:47.643351" elapsed="0.381929"/>
</kw>
<msg time="2026-04-19T02:44:48.025774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:47.642393" elapsed="0.383465"/>
</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-19T02:44:47.641629" elapsed="0.384344"/>
</kw>
<msg time="2026-04-19T02:44:48.026050" 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-19T02:44:47.640873" elapsed="0.385245"/>
</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-19T02:44:48.030342" elapsed="0.000433"/>
</kw>
<kw name="Open 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-19T02:44:48.031003" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:48.031437" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:48.026526" elapsed="0.005117"/>
</kw>
<msg time="2026-04-19T02:44:48.031874" level="INFO">${output} = 1</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-19T02:44:47.638866" elapsed="0.393050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:48.032576" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:48.032213" elapsed="0.000425"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:48.032699" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:44:48.032914" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:47.636743" elapsed="0.396213"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:48.033111" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:44:48.033273" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:47.634559" elapsed="0.398739"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:48.033858" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:48.033461" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:47.633510" elapsed="0.400549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:50.037549" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:50.036782" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:50.039697" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:50.039020" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:50.040983" 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-19T02:44:50.041147" 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-19T02:44:50.040767" elapsed="0.000418"/>
</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-19T02:44:50.046746" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:50.046106" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:50.045716" elapsed="0.001222"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:50.048931" 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-19T02:44:50.049297" 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-19T02:44:50.048327" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:50.051573" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:50.050804" elapsed="0.000939"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:50.054152" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:50.053188" elapsed="0.001099"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:50.057020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:50.057255" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:50.056738" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:50.057488" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:50.058884" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:50.381287" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:50.058464" elapsed="0.323067"/>
</kw>
<msg time="2026-04-19T02:44:50.381615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:50.058076" elapsed="0.323633"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:50.055952" elapsed="0.326041"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:50.383551" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:50.406632" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:50.407217" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:50.407593" 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-19T02:44:50.383115" elapsed="0.024705"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:50.410217" elapsed="0.000993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:50.413616" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:50.412580" elapsed="0.001267"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:50.414752" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:50.414230" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:50.414104" elapsed="0.000976"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:50.415909" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:44:50.415404" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:50.415299" elapsed="0.000917"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:50.416325" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:50.425442" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T02:44:50.426244" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:50.426751" 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-19T02:44:50.418275" elapsed="0.008793"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:50.043883" elapsed="0.383506"/>
</kw>
<msg time="2026-04-19T02:44:50.427861" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:50.042917" elapsed="0.385028"/>
</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-19T02:44:50.042174" elapsed="0.385893"/>
</kw>
<msg time="2026-04-19T02:44:50.428110" 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-19T02:44:50.041405" elapsed="0.386752"/>
</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-19T02:44:50.431207" 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-19T02:44:50.431708" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:50.432008" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:50.428457" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T02:44:50.432270" level="INFO">${output} = 1</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-19T02:44:50.040191" elapsed="0.392104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:50.432735" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:50.432482" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:50.432823" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:50.432975" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:50.038105" elapsed="0.394895"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:50.433073" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:44:50.433220" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:50.035934" elapsed="0.397311"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:50.433903" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:50.433489" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:50.034865" elapsed="0.399289">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:52.437680" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:52.436866" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:52.439838" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:52.439181" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:52.441105" 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-19T02:44:52.441249" 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-19T02:44:52.440870" elapsed="0.000416"/>
</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-19T02:44:52.446571" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:52.445914" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:52.445834" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:52.449161" 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-19T02:44:52.449531" 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-19T02:44:52.448195" elapsed="0.001477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:52.451924" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:52.451118" elapsed="0.000991"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:52.453817" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:52.453118" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:52.456436" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:52.456517" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:52.456138" 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-19T02:44:52.456757" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:52.458052" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:52.775259" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:52.457710" elapsed="0.317704"/>
</kw>
<msg time="2026-04-19T02:44:52.775498" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:52.457348" elapsed="0.318237"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:52.455329" elapsed="0.320538"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:52.777358" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:52.800378" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:52.800884" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:52.801273" 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-19T02:44:52.776956" elapsed="0.024534"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:52.803733" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:52.806926" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:52.805908" elapsed="0.001293"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:52.808110" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:52.807578" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:52.807450" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:52.809213" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:44:52.808728" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:52.808620" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:52.809745" elapsed="0.000087"/>
</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-19T02:44:52.815893" 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-19T02:44:52.816469" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:52.816827" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:52.812484" elapsed="0.004566"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:52.443966" elapsed="0.373331"/>
</kw>
<msg time="2026-04-19T02:44:52.817607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:52.442987" elapsed="0.374677"/>
</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-19T02:44:52.442238" elapsed="0.375509"/>
</kw>
<msg time="2026-04-19T02:44:52.817788" 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-19T02:44:52.441506" elapsed="0.376328"/>
</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-19T02:44:52.820869" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:44:52.821363" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:52.821732" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:52.818194" elapsed="0.003694"/>
</kw>
<msg time="2026-04-19T02:44:52.821981" level="INFO">${output} = 1</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-19T02:44:52.440293" elapsed="0.381713"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:52.822648" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:52.822302" elapsed="0.000391"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:52.822736" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:52.822891" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:52.438242" elapsed="0.384674"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:52.822962" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:44:52.823128" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:52.436026" elapsed="0.387129"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:52.823722" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:52.823313" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:52.434942" elapsed="0.388965">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:54.827568" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:54.826619" elapsed="0.001021"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:54.829917" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:54.829299" elapsed="0.000679"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:54.831875" 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-19T02:44:54.832141" 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-19T02:44:54.831526" elapsed="0.000664"/>
</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-19T02:44:54.837846" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:54.837183" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:54.837098" elapsed="0.000969"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:54.840554" 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-19T02:44:54.840921" 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-19T02:44:54.839521" elapsed="0.001574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:54.843421" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:54.842520" elapsed="0.001093"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:54.845645" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:54.844898" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:54.848196" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:54.848277" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:54.847836" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:54.848707" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:54.850302" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:55.172885" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:54.849880" elapsed="0.323161"/>
</kw>
<msg time="2026-04-19T02:44:55.173124" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:54.849351" elapsed="0.323859"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:54.846993" elapsed="0.326508"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:55.175002" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:55.197807" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:55.198387" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:55.198730" 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-19T02:44:55.174609" elapsed="0.024335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:55.201280" elapsed="0.000885"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:55.204447" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:55.203480" elapsed="0.001196"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:55.205721" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:55.205088" elapsed="0.000813"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:55.204922" elapsed="0.001151"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:44:55.206890" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:44:55.206435" elapsed="0.000893"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:55.206321" elapsed="0.001146"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:55.207644" 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-19T02:44:55.212770" 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-19T02:44:55.213354" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:55.213748" 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-19T02:44:55.209296" elapsed="0.004685"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:54.835019" elapsed="0.379212"/>
</kw>
<msg time="2026-04-19T02:44:55.214544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:54.833970" elapsed="0.380636"/>
</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-19T02:44:54.833214" elapsed="0.381486"/>
</kw>
<msg time="2026-04-19T02:44:55.214744" 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-19T02:44:54.832416" elapsed="0.382377"/>
</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-19T02:44:55.218101" 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-19T02:44:55.218652" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:55.218994" elapsed="0.000266"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:55.215154" elapsed="0.004170"/>
</kw>
<msg time="2026-04-19T02:44:55.219423" level="INFO">${output} = 1</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-19T02:44:54.830510" elapsed="0.388939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:55.219890" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:55.219633" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:55.219980" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:44:55.220156" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:54.828334" elapsed="0.391848"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:55.220230" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:44:55.220382" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:54.825777" elapsed="0.394631"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:55.220971" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:55.220568" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:54.824696" elapsed="0.396489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:57.224846" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:57.223990" elapsed="0.000928"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:57.227404" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:57.226493" elapsed="0.000992"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:57.229147" 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-19T02:44:57.229435" 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-19T02:44:57.228849" elapsed="0.000624"/>
</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-19T02:44:57.235123" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:57.234416" elapsed="0.000848"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:57.234334" elapsed="0.001016"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:57.238014" 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-19T02:44:57.238418" 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-19T02:44:57.237012" elapsed="0.001548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:57.240885" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:57.240325" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:57.242760" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:57.242024" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:57.245290" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:57.245370" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:57.244978" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:57.245618" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:57.246901" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:44:57.567308" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:57.246569" elapsed="0.320851"/>
</kw>
<msg time="2026-04-19T02:44:57.567495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:57.246201" elapsed="0.321374"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:57.244197" elapsed="0.323631"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:44:57.569281" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:44:57.592540" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:44:57.593094" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:44:57.593441" 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-19T02:44:57.568877" elapsed="0.024777"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:57.595970" elapsed="0.000701"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:57.598078" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:57.597471" 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-19T02:44:57.598763" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:44:57.598444" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:57.598365" 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-19T02:44:57.599567" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:44:57.599265" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:57.599191" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:44:57.599901" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:57.606723" elapsed="0.000615"/>
</kw>
<kw name="Open 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-19T02:44:57.607618" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:57.607976" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:57.601764" elapsed="0.006440"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:57.232343" elapsed="0.376093"/>
</kw>
<msg time="2026-04-19T02:44:57.608745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:57.231282" elapsed="0.377521"/>
</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-19T02:44:57.230466" elapsed="0.378422"/>
</kw>
<msg time="2026-04-19T02:44:57.608931" 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-19T02:44:57.229705" elapsed="0.379273"/>
</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-19T02:44:57.612270" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:44:57.612748" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:44:57.613066" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:44:57.609299" elapsed="0.003919"/>
</kw>
<msg time="2026-04-19T02:44:57.613310" level="INFO">${output} = 1</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-19T02:44:57.228128" elapsed="0.385207"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:57.613761" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:57.613514" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:44:57.613848" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:44:57.613999" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:57.225462" elapsed="0.388562"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:44:57.614088" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:44:57.614235" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:57.223124" elapsed="0.391135"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:44:57.614811" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:44:57.614417" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:57.222010" elapsed="0.392996">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:44:59.618827" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:44:59.618009" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:44:59.620571" level="INFO">${member_ip} = 10.30.171.206</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-19T02:44:59.620159" elapsed="0.000452"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:59.621782" 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-19T02:44:59.621931" 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-19T02:44:59.621551" elapsed="0.000419"/>
</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-19T02:44:59.627940" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:44:59.626807" elapsed="0.001354"/>
</branch>
<status status="PASS" start="2026-04-19T02:44:59.626728" elapsed="0.001538"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:59.630380" 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-19T02:44:59.630737" 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-19T02:44:59.629703" elapsed="0.001180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:44:59.632928" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:44:59.632351" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:44:59.634850" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:44:59.634126" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:44:59.637349" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:44:59.637432" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:44:59.637055" 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-19T02:44:59.637676" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:44:59.639120" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:00.004066" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:44:59.638767" elapsed="0.365444"/>
</kw>
<msg time="2026-04-19T02:45:00.004297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:59.638387" elapsed="0.365999"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:44:59.636240" elapsed="0.368424"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:00.006173" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:00.029471" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:00.029971" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:00.030351" 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-19T02:45:00.005762" elapsed="0.024807"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:00.032839" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:00.036003" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:00.034991" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:00.037155" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:00.036618" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:00.036496" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:00.038256" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:45:00.037774" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:00.037667" elapsed="0.000942"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:00.038802" 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-19T02:45:00.046669" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:45:00.047297" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:00.047658" 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-19T02:45:00.041889" elapsed="0.005977"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:44:59.624790" elapsed="0.423316"/>
</kw>
<msg time="2026-04-19T02:45:00.048485" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:44:59.623790" elapsed="0.424754"/>
</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-19T02:44:59.622963" elapsed="0.425665"/>
</kw>
<msg time="2026-04-19T02:45:00.048670" 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-19T02:44:59.622221" elapsed="0.426496"/>
</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-19T02:45:00.051768" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:45:00.052261" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:00.052558" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:00.049008" elapsed="0.003699"/>
</kw>
<msg time="2026-04-19T02:45:00.052800" level="INFO">${output} = 1</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-19T02:44:59.620927" elapsed="0.431899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:00.053267" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:00.053005" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:00.053355" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:00.053509" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:44:59.619514" elapsed="0.434021"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:00.053582" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:00.053729" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:44:59.617119" elapsed="0.436636"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:00.054326" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:00.053912" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:44:59.615856" elapsed="0.438656">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:02.057925" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:02.057203" elapsed="0.000790"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:02.060013" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:02.059458" elapsed="0.000615"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:02.061257" 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-19T02:45:02.061409" 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-19T02:45:02.060999" elapsed="0.000448"/>
</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-19T02:45:02.067441" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:02.066710" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:02.066230" elapsed="0.001409"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:02.069640" 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-19T02:45:02.069981" 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-19T02:45:02.068987" elapsed="0.001186"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:02.072104" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:02.071541" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:02.073969" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:02.073270" elapsed="0.000927"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:02.076442" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:02.076519" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:02.076155" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:02.076753" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:02.078193" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:02.395192" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:44:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:02.077706" elapsed="0.317662"/>
</kw>
<msg time="2026-04-19T02:45:02.395455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:02.077339" elapsed="0.318209"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:02.075390" elapsed="0.320446"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:02.397360" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:02.420340" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:02.421258" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:02.421682" 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-19T02:45:02.396937" elapsed="0.025005"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:02.424180" elapsed="0.000745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:02.426492" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:02.425783" elapsed="0.000855"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:02.427311" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:02.426876" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:02.426789" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:02.427987" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T02:45:02.427703" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:02.427636" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:02.428372" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:02.435340" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T02:45:02.435981" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:02.436364" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:02.430278" elapsed="0.006298"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:02.064331" elapsed="0.372472"/>
</kw>
<msg time="2026-04-19T02:45:02.437130" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:02.063320" elapsed="0.373876"/>
</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-19T02:45:02.062474" elapsed="0.374806"/>
</kw>
<msg time="2026-04-19T02:45:02.437322" 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-19T02:45:02.061685" elapsed="0.375684"/>
</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-19T02:45:02.440449" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:02.440934" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:02.441248" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:02.437751" elapsed="0.003646"/>
</kw>
<msg time="2026-04-19T02:45:02.441488" level="INFO">${output} = 1</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-19T02:45:02.060394" elapsed="0.381119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:02.441941" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:02.441693" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:02.442053" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:45:02.442211" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:02.058474" elapsed="0.383762"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:02.442284" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:02.442428" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:02.056377" elapsed="0.386075"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:02.443113" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:02.442676" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:02.055329" elapsed="0.388008">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:04.446834" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:04.446104" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:04.449055" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:04.448393" elapsed="0.000727"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:04.450897" 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-19T02:45:04.451155" 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-19T02:45:04.450552" elapsed="0.000665"/>
</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-19T02:45:04.457455" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:04.456791" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:04.456420" elapsed="0.001232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:04.459650" 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-19T02:45:04.459894" 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-19T02:45:04.459051" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:04.461605" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:04.460993" elapsed="0.000721"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:04.463423" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:04.462700" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:04.465909" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:04.465986" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:04.465629" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:04.466235" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:04.467572" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:04.791063" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:04.467229" elapsed="0.323996"/>
</kw>
<msg time="2026-04-19T02:45:04.791386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:04.466852" elapsed="0.324630"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:04.464744" elapsed="0.327032"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:04.793294" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:04.816295" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:04.816807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:04.817188" 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-19T02:45:04.792867" elapsed="0.024535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:04.819755" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:04.822182" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:04.821497" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:04.822922" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:04.822575" elapsed="0.000512"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:04.822490" elapsed="0.000685"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:04.823704" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:45:04.823408" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:04.823333" elapsed="0.000609"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:04.824114" elapsed="0.000058"/>
</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-19T02:45:04.832960" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:45:04.833530" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:04.833893" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:04.826209" elapsed="0.007923"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:04.454511" elapsed="0.379844"/>
</kw>
<msg time="2026-04-19T02:45:04.834666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:04.453533" elapsed="0.381192"/>
</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-19T02:45:04.452748" elapsed="0.382056"/>
</kw>
<msg time="2026-04-19T02:45:04.834844" 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-19T02:45:04.451602" elapsed="0.383287"/>
</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-19T02:45:04.837876" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:45:04.838377" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:04.838669" 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-19T02:45:04.835202" elapsed="0.003612"/>
</kw>
<msg time="2026-04-19T02:45:04.838962" level="INFO">${output} = 1</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-19T02:45:04.449601" elapsed="0.389386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:04.839503" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:04.839221" elapsed="0.000326"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:04.839591" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:45:04.839741" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:04.447418" elapsed="0.392348"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:04.839811" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:04.839953" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:04.445267" elapsed="0.394710"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:04.840532" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:04.840146" elapsed="0.000458">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:04.444188" elapsed="0.396523">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:06.844114" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:06.843336" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:06.846204" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:06.845572" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:06.848076" 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-19T02:45:06.848303" 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-19T02:45:06.847728" elapsed="0.000633"/>
</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-19T02:45:06.854059" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:06.853371" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:06.853289" elapsed="0.000978"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:06.856777" 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-19T02:45:06.857204" 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-19T02:45:06.855751" elapsed="0.001601"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:06.859695" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:06.858812" elapsed="0.001072"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:06.861911" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:06.861208" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:06.864453" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:06.864534" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:06.864159" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:06.864775" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:06.866082" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:07.214467" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:06.865735" elapsed="0.349009"/>
</kw>
<msg time="2026-04-19T02:45:07.214835" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:06.865369" elapsed="0.349559"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:06.863360" elapsed="0.351889"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:07.216824" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:07.239905" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:07.240622" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:07.240988" 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-19T02:45:07.216397" elapsed="0.024874"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:07.243862" elapsed="0.001071"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:07.247398" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:07.246336" elapsed="0.001334"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:07.248620" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:07.248071" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:07.247910" elapsed="0.001019"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:07.249896" elapsed="0.000185"/>
</return>
<status status="PASS" start="2026-04-19T02:45:07.249418" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:07.249305" elapsed="0.001035"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:07.250526" elapsed="0.000092"/>
</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-19T02:45:07.256617" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:45:07.257246" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:07.257619" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:07.253194" elapsed="0.004635"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:06.851291" elapsed="0.406774"/>
</kw>
<msg time="2026-04-19T02:45:07.258405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:06.850267" elapsed="0.408208"/>
</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-19T02:45:06.849449" elapsed="0.409113"/>
</kw>
<msg time="2026-04-19T02:45:07.258604" 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-19T02:45:06.848665" elapsed="0.409985"/>
</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-19T02:45:07.261881" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:07.262417" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:07.262733" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:07.258984" elapsed="0.003901"/>
</kw>
<msg time="2026-04-19T02:45:07.262981" level="INFO">${output} = 1</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-19T02:45:06.846742" elapsed="0.416265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:07.263542" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:07.263254" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:07.263640" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:45:07.263807" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:06.844633" elapsed="0.419199"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:07.263880" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:45:07.264046" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:06.842505" elapsed="0.421568"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:07.264812" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:07.264390" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:06.841470" elapsed="0.423542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:09.268852" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:09.268096" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:09.270987" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:09.270366" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:09.272892" 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-19T02:45:09.273309" 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-19T02:45:09.272559" elapsed="0.000820"/>
</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-19T02:45:09.277455" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:09.276965" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:09.276906" elapsed="0.000691"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:09.279313" 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-19T02:45:09.279586" 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-19T02:45:09.278601" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:09.281431" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:09.280774" elapsed="0.000768"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:09.283375" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:09.282558" elapsed="0.000913"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:09.285773" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:09.285851" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:09.285477" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:09.286118" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:09.287618" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:09.601776" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:09.287274" elapsed="0.314655"/>
</kw>
<msg time="2026-04-19T02:45:09.602025" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:09.286723" elapsed="0.315420"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:09.284680" elapsed="0.317750"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:09.603979" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:09.627211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:09.627767" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:09.628165" 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-19T02:45:09.603551" elapsed="0.024842"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:09.630700" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:09.633917" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:09.632896" elapsed="0.001375"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:09.635172" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:09.634622" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:09.634499" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:09.636363" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:45:09.635872" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:09.635759" elapsed="0.000965"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:09.636823" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:09.641697" 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-19T02:45:09.642319" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:09.642679" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:09.638273" elapsed="0.004615"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:09.275539" elapsed="0.367590"/>
</kw>
<msg time="2026-04-19T02:45:09.643437" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:09.274835" elapsed="0.368661"/>
</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-19T02:45:09.274288" elapsed="0.369290"/>
</kw>
<msg time="2026-04-19T02:45:09.643640" 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-19T02:45:09.273728" elapsed="0.369960"/>
</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-19T02:45:09.646749" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:45:09.647248" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:09.647545" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:09.643979" elapsed="0.003760"/>
</kw>
<msg time="2026-04-19T02:45:09.647834" level="INFO">${output} = 1</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-19T02:45:09.271588" elapsed="0.376272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:09.648327" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:09.648065" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:09.648418" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:45:09.648578" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:09.269415" elapsed="0.379189"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:09.648653" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:09.648826" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:09.267156" elapsed="0.381698"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:09.649452" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:09.649017" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:09.265972" elapsed="0.383667">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:11.652201" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:11.651683" elapsed="0.000561"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:11.653574" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:11.653233" elapsed="0.000375"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:11.654625" 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-19T02:45:11.654750" 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-19T02:45:11.654424" elapsed="0.000359"/>
</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-19T02:45:11.659866" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:11.659125" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:11.659047" elapsed="0.001032"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:11.662412" 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-19T02:45:11.662756" 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-19T02:45:11.661390" elapsed="0.001508"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:11.665095" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:11.664294" elapsed="0.000955"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:11.667732" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:11.666590" elapsed="0.001312"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:11.670784" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:11.670879" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:11.670411" elapsed="0.000498"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:11.671380" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:11.672986" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:11.990809" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:11.672586" elapsed="0.318387"/>
</kw>
<msg time="2026-04-19T02:45:11.991079" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:11.672130" elapsed="0.319056"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:11.669419" elapsed="0.322092"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:11.993130" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:12.005907" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:12.006444" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:12.006776" 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-19T02:45:11.992656" elapsed="0.014333"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:12.009316" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:12.012604" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:12.011535" elapsed="0.001269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:12.013557" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:12.013074" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:12.012965" elapsed="0.000793"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:12.014313" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T02:45:12.013985" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:12.013913" elapsed="0.000673"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:12.014706" elapsed="0.000059"/>
</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-19T02:45:12.021946" elapsed="0.000516"/>
</kw>
<kw name="Open 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-19T02:45:12.022777" elapsed="0.000237"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:12.023415" 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-19T02:45:12.016818" elapsed="0.006906"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:11.657335" elapsed="0.366798"/>
</kw>
<msg time="2026-04-19T02:45:12.024581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:11.656423" elapsed="0.368245"/>
</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-19T02:45:11.655681" elapsed="0.369091"/>
</kw>
<msg time="2026-04-19T02:45:12.024813" 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-19T02:45:11.654985" elapsed="0.369874"/>
</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-19T02:45:12.027897" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:45:12.028392" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:12.028686" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:12.025167" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T02:45:12.028929" level="INFO">${output} = 1</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-19T02:45:11.653890" elapsed="0.375065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:12.029407" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:12.029156" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:12.029496" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:12.029658" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:11.652645" elapsed="0.377040"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:12.029733" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:12.029879" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:11.651178" elapsed="0.378725"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:12.030481" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:12.030082" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:11.650467" elapsed="0.380203">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:14.034280" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:14.033473" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:14.036513" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:14.035835" elapsed="0.000739"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:14.038375" 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-19T02:45:14.038742" 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-19T02:45:14.037994" elapsed="0.000810"/>
</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-19T02:45:14.044088" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:14.043352" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:14.043295" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:14.045842" 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-19T02:45:14.046104" 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-19T02:45:14.045398" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:14.047737" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:14.047195" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:14.049749" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:14.048856" elapsed="0.000994"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:14.052382" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:14.052460" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:14.052088" 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-19T02:45:14.052691" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:14.053945" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:14.370244" 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 Sun Apr 19 02:44:14 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:14.053622" elapsed="0.316759"/>
</kw>
<msg time="2026-04-19T02:45:14.370463" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:14.053264" elapsed="0.317281"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:14.051296" elapsed="0.319522"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:14.372311" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:14.395164" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:14.395666" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:14.396026" 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-19T02:45:14.371893" elapsed="0.024394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:14.398498" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:14.401411" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:14.400725" elapsed="0.000828"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:14.402122" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:14.401776" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:14.401698" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:14.402795" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:45:14.402512" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:14.402443" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:14.403150" elapsed="0.000051"/>
</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-19T02:45:14.409841" elapsed="0.000633"/>
</kw>
<kw name="Open 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-19T02:45:14.410868" elapsed="0.000464"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:14.411622" 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-19T02:45:14.405171" elapsed="0.006755"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:14.041950" elapsed="0.370373"/>
</kw>
<msg time="2026-04-19T02:45:14.412755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:14.041271" elapsed="0.371573"/>
</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-19T02:45:14.040476" elapsed="0.372480"/>
</kw>
<msg time="2026-04-19T02:45:14.413001" 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-19T02:45:14.039195" elapsed="0.373968"/>
</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-19T02:45:14.416227" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:45:14.416703" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:14.416996" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:14.413458" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T02:45:14.417266" level="INFO">${output} = 1</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-19T02:45:14.037084" elapsed="0.380208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:14.417714" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:14.417468" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:14.417801" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:45:14.417951" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:14.034870" elapsed="0.383106"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:14.418023" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:45:14.418187" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:14.032597" elapsed="0.385614"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:14.418756" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:14.418365" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:14.031460" elapsed="0.387484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:16.422361" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:16.421610" elapsed="0.000820"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:16.424501" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:16.423805" elapsed="0.000756"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:16.426406" 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-19T02:45:16.426625" 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-19T02:45:16.426083" elapsed="0.000599"/>
</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-19T02:45:16.431972" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:16.431479" elapsed="0.000659"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:16.431170" elapsed="0.001032"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:16.433680" 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-19T02:45:16.433925" 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-19T02:45:16.433215" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:16.435588" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:16.435013" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:16.437416" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:16.436693" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:16.439953" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:16.440046" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:16.439647" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:16.440324" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:16.441641" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:17.044950" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:16.441308" elapsed="0.603820"/>
</kw>
<msg time="2026-04-19T02:45:17.045214" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:16.440917" elapsed="0.604388"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:16.438733" elapsed="0.606864"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:17.047110" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:17.070426" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:17.071016" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:17.071396" 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-19T02:45:17.046698" elapsed="0.024915"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:17.073968" elapsed="0.000967"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:17.077227" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:17.076234" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:17.078330" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:17.077802" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:17.077679" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:17.079413" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:45:17.078942" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:17.078835" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:17.079946" elapsed="0.000237"/>
</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-19T02:45:17.085331" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:45:17.085895" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:17.086343" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:17.081905" elapsed="0.004654"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:16.429835" elapsed="0.656977"/>
</kw>
<msg time="2026-04-19T02:45:17.087215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:16.429150" elapsed="0.658137"/>
</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-19T02:45:16.428198" elapsed="0.659173"/>
</kw>
<msg time="2026-04-19T02:45:17.087413" 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-19T02:45:16.427025" elapsed="0.660434"/>
</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-19T02:45:17.090663" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:45:17.091320" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:17.091627" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:17.087782" elapsed="0.004005"/>
</kw>
<msg time="2026-04-19T02:45:17.091884" level="INFO">${output} = 1</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-19T02:45:16.425153" elapsed="0.666757"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:17.092434" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:17.092141" elapsed="0.000339"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:17.092527" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:45:17.092687" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:16.422875" elapsed="0.669838"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:17.092761" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:45:17.092916" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:16.420777" elapsed="0.672165"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:17.093653" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:17.093118" elapsed="0.000613">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:16.419721" elapsed="0.674132">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:19.096132" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:19.095656" elapsed="0.000520"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:19.097320" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:19.096967" elapsed="0.000386"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:19.098377" 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-19T02:45:19.098503" 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-19T02:45:19.098160" elapsed="0.000376"/>
</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-19T02:45:19.103548" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:19.102945" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:19.102576" elapsed="0.001149"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:19.105453" 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-19T02:45:19.105741" 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-19T02:45:19.104908" elapsed="0.000953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:19.107788" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:19.107143" elapsed="0.000777"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:19.110114" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:19.109245" elapsed="0.000985"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:19.113124" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:19.113220" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:19.112755" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:19.113511" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:19.115285" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:19.446462" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:19.114695" elapsed="0.331927"/>
</kw>
<msg time="2026-04-19T02:45:19.446709" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:19.114240" elapsed="0.332564"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:19.111796" elapsed="0.335335"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:19.448638" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:19.472085" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:19.472708" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:19.473077" 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-19T02:45:19.448229" elapsed="0.025068"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:19.475637" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:19.478932" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:19.477907" elapsed="0.001401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:19.480183" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:19.479655" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:19.479533" elapsed="0.000939"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:19.481154" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:45:19.480846" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:19.480736" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:19.481402" 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-19T02:45:19.488245" elapsed="0.000407"/>
</kw>
<kw name="Open 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-19T02:45:19.488892" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:19.489290" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:19.482777" elapsed="0.006732"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:19.100944" elapsed="0.388791"/>
</kw>
<msg time="2026-04-19T02:45:19.490089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:19.100072" elapsed="0.390086"/>
</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-19T02:45:19.099403" elapsed="0.390837"/>
</kw>
<msg time="2026-04-19T02:45:19.490282" 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-19T02:45:19.098740" elapsed="0.391587"/>
</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-19T02:45:19.493666" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:45:19.494218" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:19.494532" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:19.490722" elapsed="0.003963"/>
</kw>
<msg time="2026-04-19T02:45:19.494779" level="INFO">${output} = 1</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-19T02:45:19.097626" elapsed="0.397179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:19.495460" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:19.495018" elapsed="0.000486"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:19.495641" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:45:19.495812" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:19.096437" elapsed="0.399401"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:19.495884" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:45:19.496043" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:19.095180" elapsed="0.400891"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:19.496629" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:19.496230" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:19.094508" elapsed="0.402322">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:21.500453" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:21.499852" elapsed="0.000649"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:21.501831" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:21.501443" elapsed="0.000425"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:21.503052" 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-19T02:45:21.503210" 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-19T02:45:21.502801" elapsed="0.000446"/>
</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-19T02:45:21.508784" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:21.508123" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:21.508019" elapsed="0.000981"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:21.511417" 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-19T02:45:21.511772" 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-19T02:45:21.510435" elapsed="0.001484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:21.514228" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:21.513435" elapsed="0.000916"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:21.516210" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:21.515371" elapsed="0.000940"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:21.518641" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:21.518720" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:21.518344" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:21.518958" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:21.520511" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:21.839993" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:21.520001" elapsed="0.320157"/>
</kw>
<msg time="2026-04-19T02:45:21.840244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:21.519631" elapsed="0.320699"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:21.517549" elapsed="0.323062"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:21.842137" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:21.864756" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:21.865334" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:21.865672" 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-19T02:45:21.841726" elapsed="0.024162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:21.868184" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:21.870902" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:21.870288" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:21.871660" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:21.871330" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:21.871248" elapsed="0.000598"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:21.872369" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:45:21.872076" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:21.871983" elapsed="0.000615"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:21.872711" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:21.879472" elapsed="0.000471"/>
</kw>
<kw name="Open 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-19T02:45:21.880287" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:21.880794" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:21.874615" elapsed="0.006529"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:21.506092" elapsed="0.375383"/>
</kw>
<msg time="2026-04-19T02:45:21.881904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:21.505101" elapsed="0.376883"/>
</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-19T02:45:21.504227" elapsed="0.377938"/>
</kw>
<msg time="2026-04-19T02:45:21.882217" 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-19T02:45:21.503470" elapsed="0.378799"/>
</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-19T02:45:21.885441" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:21.885924" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:21.886244" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:21.882564" elapsed="0.003831"/>
</kw>
<msg time="2026-04-19T02:45:21.886545" level="INFO">${output} = 1</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-19T02:45:21.502213" elapsed="0.384359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:21.887018" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:21.886757" elapsed="0.000347"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:21.887150" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:45:21.887305" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:21.500793" elapsed="0.386537"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:21.887378" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:21.887667" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:21.498914" elapsed="0.388778"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:21.888267" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:21.887850" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:21.497733" elapsed="0.390719">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:23.892204" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:23.891369" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:23.894498" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:23.893811" elapsed="0.000753"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:23.896488" 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-19T02:45:23.896729" 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-19T02:45:23.896141" elapsed="0.000652"/>
</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-19T02:45:23.902675" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:23.902012" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:23.901936" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:23.905224" 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-19T02:45:23.905609" 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-19T02:45:23.904257" elapsed="0.001490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:23.907458" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:23.906870" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:23.909346" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:23.908555" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:23.911765" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:23.911843" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:23.911457" 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-19T02:45:23.912099" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:23.913494" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:24.237536" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:23.913017" elapsed="0.324758"/>
</kw>
<msg time="2026-04-19T02:45:24.237861" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:23.912659" elapsed="0.325294"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:23.910656" elapsed="0.327597"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:24.239737" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:24.262681" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:24.263244" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:24.263582" 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-19T02:45:24.239348" elapsed="0.024446"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:24.266127" elapsed="0.000583"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:24.268194" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:24.267526" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:24.268896" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:24.268571" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:24.268492" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:24.269630" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:45:24.269335" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:24.269269" elapsed="0.000582"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:24.269962" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:24.276721" elapsed="0.000671"/>
</kw>
<kw name="Open 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-19T02:45:24.277692" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:24.278204" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:24.271813" elapsed="0.006600"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:23.900090" elapsed="0.378546"/>
</kw>
<msg time="2026-04-19T02:45:24.278944" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:23.899117" elapsed="0.379884"/>
</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-19T02:45:23.898357" elapsed="0.380746"/>
</kw>
<msg time="2026-04-19T02:45:24.279145" 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-19T02:45:23.897204" elapsed="0.381987"/>
</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-19T02:45:24.282267" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:45:24.282745" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:24.283056" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:24.279484" elapsed="0.003723"/>
</kw>
<msg time="2026-04-19T02:45:24.283300" level="INFO">${output} = 1</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-19T02:45:23.895117" elapsed="0.388209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:24.283755" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:24.283507" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:24.283849" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:45:24.284001" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:23.892770" elapsed="0.391257"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:24.284104" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:24.284253" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:23.890456" elapsed="0.393823"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:24.284882" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:24.284485" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:23.889341" elapsed="0.395798">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:26.287682" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:26.287156" elapsed="0.000580"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:26.289057" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:26.288634" elapsed="0.000462"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:26.290306" 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-19T02:45:26.290454" 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-19T02:45:26.290065" elapsed="0.000428"/>
</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-19T02:45:26.296115" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:26.295396" elapsed="0.000841"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:26.295311" elapsed="0.001011"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:26.298611" 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-19T02:45:26.298867" 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-19T02:45:26.297756" elapsed="0.001225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:26.300584" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:26.300006" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:26.302463" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:26.301716" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:26.304933" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:26.305050" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:26.304644" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:26.305298" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:26.306595" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:26.629303" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:26.306268" elapsed="0.323179"/>
</kw>
<msg time="2026-04-19T02:45:26.629530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:26.305879" elapsed="0.323738"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:26.303843" elapsed="0.326078"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:26.631420" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:26.654540" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:26.655139" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:26.655497" 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-19T02:45:26.631010" elapsed="0.024723"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:26.658157" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:26.661537" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:26.660501" elapsed="0.001341"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:26.662786" elapsed="0.000082"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:26.662255" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:26.662123" elapsed="0.001041"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:26.664231" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T02:45:26.663509" elapsed="0.000971"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:26.663392" elapsed="0.001229"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:26.664807" elapsed="0.000095"/>
</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-19T02:45:26.670683" elapsed="0.000379"/>
</kw>
<kw name="Open 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-19T02:45:26.671286" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:26.671655" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:26.667072" elapsed="0.004799"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:26.293314" elapsed="0.378845"/>
</kw>
<msg time="2026-04-19T02:45:26.672484" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:26.292308" elapsed="0.380241"/>
</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-19T02:45:26.291485" elapsed="0.381151"/>
</kw>
<msg time="2026-04-19T02:45:26.672678" 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-19T02:45:26.290719" elapsed="0.382008"/>
</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-19T02:45:26.675973" elapsed="0.000524"/>
</kw>
<kw name="Open 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-19T02:45:26.676668" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:26.676977" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:26.673052" elapsed="0.004096"/>
</kw>
<msg time="2026-04-19T02:45:26.677259" level="INFO">${output} = 1</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-19T02:45:26.289403" elapsed="0.387884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:26.677806" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:26.677502" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:26.677901" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:45:26.678089" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:26.288051" elapsed="0.390065"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:26.678164" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:45:26.678324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:26.286557" elapsed="0.391792"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:26.678916" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:26.678509" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:26.285822" elapsed="0.393305">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:28.682782" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:28.681960" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:28.685126" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:28.684495" elapsed="0.000691"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:28.686942" 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-19T02:45:28.687195" 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-19T02:45:28.686616" elapsed="0.000638"/>
</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-19T02:45:28.693656" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:28.692899" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:28.692839" elapsed="0.000961"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:28.695324" 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-19T02:45:28.695624" 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-19T02:45:28.694833" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:28.697279" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:28.696716" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:28.699111" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:28.698391" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:28.701594" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:28.701670" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:28.701296" 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-19T02:45:28.701910" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:28.703468" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:29.026675" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:28.702929" elapsed="0.323897"/>
</kw>
<msg time="2026-04-19T02:45:29.026910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:28.702515" elapsed="0.324486"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:28.700512" elapsed="0.326793"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:29.028797" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:29.051679" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:29.051920" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:29.052093" 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-19T02:45:29.028402" elapsed="0.023794"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:29.053213" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:29.054693" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:29.054231" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:29.055307" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:29.054969" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:29.054908" elapsed="0.000541"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:29.055803" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:45:29.055598" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:29.055549" elapsed="0.000421"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:29.056070" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:29.060830" elapsed="0.000460"/>
</kw>
<kw name="Open 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-19T02:45:29.061507" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:29.061867" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:29.057431" elapsed="0.004671"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:28.691510" elapsed="0.370828"/>
</kw>
<msg time="2026-04-19T02:45:29.062649" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:28.689962" elapsed="0.372747"/>
</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-19T02:45:28.688761" elapsed="0.374032"/>
</kw>
<msg time="2026-04-19T02:45:29.062834" 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-19T02:45:28.687602" elapsed="0.375279"/>
</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-19T02:45:29.066118" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:29.066599" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:29.066893" 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-19T02:45:29.063326" elapsed="0.003756"/>
</kw>
<msg time="2026-04-19T02:45:29.067178" level="INFO">${output} = 1</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-19T02:45:28.685667" elapsed="0.381537"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:29.067646" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:29.067397" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:29.067734" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:29.067888" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:28.683553" elapsed="0.384360"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:29.067961" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:29.068126" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:28.681115" elapsed="0.387037"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:29.068700" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:29.068308" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:28.679934" elapsed="0.388953">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:31.072438" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:31.071673" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:31.074593" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:31.073909" elapsed="0.000745"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:31.076090" 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-19T02:45:31.076346" 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-19T02:45:31.075850" elapsed="0.000536"/>
</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-19T02:45:31.082138" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:31.081468" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:31.080990" elapsed="0.001404"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:31.084165" 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-19T02:45:31.084405" 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-19T02:45:31.083708" elapsed="0.000797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:31.086006" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:31.085468" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:31.087917" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:31.087183" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:31.090379" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:31.090464" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:31.090059" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:31.090702" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:31.091954" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:31.459990" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:31.091630" elapsed="0.368544"/>
</kw>
<msg time="2026-04-19T02:45:31.460262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:31.091271" elapsed="0.369080"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:31.089285" elapsed="0.371358"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:31.462211" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:31.485099" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:31.485619" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:31.485949" 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-19T02:45:31.461762" elapsed="0.024447"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:31.488461" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:31.491621" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:31.490719" elapsed="0.001067"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:31.492386" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:31.492021" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:31.491939" elapsed="0.000691"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:31.493171" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:45:31.492862" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:31.492795" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:31.493505" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:31.500136" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:45:31.500757" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:31.501176" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:31.495529" elapsed="0.005860"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:31.079175" elapsed="0.422454"/>
</kw>
<msg time="2026-04-19T02:45:31.501951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:31.078200" elapsed="0.423809"/>
</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-19T02:45:31.077393" elapsed="0.424834"/>
</kw>
<msg time="2026-04-19T02:45:31.502269" 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-19T02:45:31.076649" elapsed="0.425671"/>
</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-19T02:45:31.505329" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:45:31.505808" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:31.506152" 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-19T02:45:31.502638" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T02:45:31.506417" level="INFO">${output} = 1</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-19T02:45:31.075164" elapsed="0.431279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:31.506877" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:31.506627" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:31.506975" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:31.507150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:31.072961" elapsed="0.434214"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:31.507223" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:31.507398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:31.070750" elapsed="0.436678"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:31.508019" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:31.507594" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:31.069685" elapsed="0.438551">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:33.511789" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:33.511022" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:33.513890" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:33.513278" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:33.515751" 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-19T02:45:33.515974" 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-19T02:45:33.515424" elapsed="0.000640"/>
</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-19T02:45:33.524213" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:33.523716" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:33.523398" elapsed="0.001024"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:33.525875" 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-19T02:45:33.526138" 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-19T02:45:33.525427" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:33.527766" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:33.527224" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:33.529630" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:33.528866" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:33.532072" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:33.532162" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:33.531756" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:33.532400" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:33.533765" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:33.853250" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:33.533442" elapsed="0.319969"/>
</kw>
<msg time="2026-04-19T02:45:33.853499" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:33.532954" elapsed="0.320636"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:33.530972" elapsed="0.322906"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:33.855411" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:33.878295" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:33.878850" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:33.879245" 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-19T02:45:33.854994" elapsed="0.024466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:33.881716" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:33.884909" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:33.883912" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:33.886064" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:33.885517" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:33.885396" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:33.887216" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:45:33.886677" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:33.886571" elapsed="0.000998"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:33.887745" elapsed="0.000084"/>
</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-19T02:45:33.896548" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:45:33.897117" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:33.897496" 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-19T02:45:33.890875" elapsed="0.006834"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:33.520335" elapsed="0.377597"/>
</kw>
<msg time="2026-04-19T02:45:33.898332" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:33.518805" elapsed="0.379593"/>
</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-19T02:45:33.517572" elapsed="0.380919"/>
</kw>
<msg time="2026-04-19T02:45:33.898541" 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-19T02:45:33.516417" elapsed="0.382178"/>
</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-19T02:45:33.901650" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T02:45:33.902137" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:33.902431" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:33.898920" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T02:45:33.902667" level="INFO">${output} = 1</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-19T02:45:33.514464" elapsed="0.388228"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:33.903179" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:33.902907" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:33.903267" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:33.903416" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:33.512339" elapsed="0.391101"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:33.903486" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:33.903629" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:33.510166" elapsed="0.393487"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:33.904224" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:33.903806" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:33.509105" elapsed="0.395306">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:35.907907" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:35.907146" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:35.909988" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:35.909394" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:35.911777" 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-19T02:45:35.911920" 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-19T02:45:35.911544" elapsed="0.000412"/>
</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-19T02:45:35.917268" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:35.916616" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:35.916534" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:35.919756" 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-19T02:45:35.920136" 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-19T02:45:35.918799" elapsed="0.001475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:35.922510" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:35.921742" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:35.924719" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:35.923960" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:35.927236" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:35.927318" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:35.926776" elapsed="0.000566"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:35.927554" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:35.928972" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:36.253041" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:35.928645" elapsed="0.324546"/>
</kw>
<msg time="2026-04-19T02:45:36.253276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:35.928281" elapsed="0.325083"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:35.925995" elapsed="0.327653"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:36.255180" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:36.278201" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:36.278798" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:36.279217" 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-19T02:45:36.254747" elapsed="0.024687"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:36.281680" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:36.285204" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:36.284022" elapsed="0.001437"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:36.286458" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:36.285847" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:36.285708" elapsed="0.001090"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:36.287653" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:45:36.287239" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:36.287116" elapsed="0.000764"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:36.287992" elapsed="0.000153"/>
</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-19T02:45:36.293579" 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-19T02:45:36.294155" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:36.294523" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:36.290104" elapsed="0.004631"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:35.914624" elapsed="0.380337"/>
</kw>
<msg time="2026-04-19T02:45:36.295300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:35.913674" elapsed="0.381689"/>
</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-19T02:45:35.912911" elapsed="0.382536"/>
</kw>
<msg time="2026-04-19T02:45:36.295488" 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-19T02:45:35.912196" elapsed="0.383339"/>
</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-19T02:45:36.298651" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:36.299184" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:36.299499" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:36.295895" elapsed="0.003754"/>
</kw>
<msg time="2026-04-19T02:45:36.299743" level="INFO">${output} = 1</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-19T02:45:35.910552" elapsed="0.389217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:36.300342" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:36.299973" elapsed="0.000414"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:36.300431" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:45:36.300587" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:35.908460" elapsed="0.392152"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:36.300661" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:45:36.300807" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:35.906282" elapsed="0.394550"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:36.301397" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:36.300990" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:35.905250" elapsed="0.396330">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:38.305198" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:38.304407" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:38.307485" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:38.306772" elapsed="0.000777"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:38.309372" 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-19T02:45:38.309603" 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-19T02:45:38.309005" elapsed="0.000657"/>
</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-19T02:45:38.314652" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:38.314186" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:38.314129" elapsed="0.000662"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:38.316482" 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-19T02:45:38.316731" 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-19T02:45:38.315780" elapsed="0.001050"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:38.318373" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:38.317801" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:38.320165" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:38.319458" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:38.322647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:38.322730" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:38.322361" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:38.322962" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:38.324350" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:38.640986" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:38.324005" elapsed="0.317205"/>
</kw>
<msg time="2026-04-19T02:45:38.641326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:38.323635" elapsed="0.317813"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:38.321511" elapsed="0.320357"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:38.644004" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:38.666821" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:38.667128" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:38.667288" 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-19T02:45:38.643429" elapsed="0.023959"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:38.669443" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:38.672739" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:38.671759" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:38.673846" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:38.673366" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:38.673244" 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-19T02:45:38.674880" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:45:38.674467" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:38.674365" elapsed="0.001019"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:38.675594" elapsed="0.000091"/>
</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-19T02:45:38.683007" 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-19T02:45:38.684130" elapsed="0.000276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:38.684737" 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-19T02:45:38.677571" elapsed="0.007696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:38.312790" elapsed="0.372844"/>
</kw>
<msg time="2026-04-19T02:45:38.686124" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:38.312100" elapsed="0.374125"/>
</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-19T02:45:38.311225" elapsed="0.375131"/>
</kw>
<msg time="2026-04-19T02:45:38.686420" 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-19T02:45:38.310016" elapsed="0.376484"/>
</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-19T02:45:38.691677" 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-19T02:45:38.692245" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:38.692557" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:38.686995" elapsed="0.005718"/>
</kw>
<msg time="2026-04-19T02:45:38.692889" level="INFO">${output} = 1</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-19T02:45:38.308069" elapsed="0.384847"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:38.693415" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:38.693148" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:38.693511" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:45:38.693682" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:38.305741" elapsed="0.387968"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:38.693758" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:45:38.693912" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:38.303482" elapsed="0.390456"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:38.694577" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:38.694163" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:38.302400" elapsed="0.392365">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:40.698349" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:40.697576" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:40.700696" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:40.699873" elapsed="0.000873"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:40.702085" 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-19T02:45:40.702230" 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-19T02:45:40.701841" elapsed="0.000425"/>
</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-19T02:45:40.707687" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:40.707048" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:40.706951" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:40.710248" 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-19T02:45:40.710600" 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-19T02:45:40.709285" elapsed="0.001457"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:40.713073" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:40.712349" elapsed="0.000837"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:40.714951" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:40.714245" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:40.717363" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:40.717442" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:40.717078" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:40.717682" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:40.719146" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:41.039096" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:40.718804" elapsed="0.320557"/>
</kw>
<msg time="2026-04-19T02:45:41.039447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:40.718440" elapsed="0.321109"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:40.716287" elapsed="0.323572"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:41.041371" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:41.063969" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:41.064528" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:41.064862" 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-19T02:45:41.040958" elapsed="0.024147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:41.067288" elapsed="0.000971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:41.069877" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:41.069256" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:41.070605" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:41.070282" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:41.070203" 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-19T02:45:41.071296" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:45:41.070992" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:41.070925" elapsed="0.000591"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:41.071626" elapsed="0.000051"/>
</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-19T02:45:41.078450" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T02:45:41.079270" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:41.079803" 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-19T02:45:41.073536" elapsed="0.006598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:40.705141" elapsed="0.375308"/>
</kw>
<msg time="2026-04-19T02:45:41.080893" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:40.704180" elapsed="0.376773"/>
</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-19T02:45:40.703262" elapsed="0.377882"/>
</kw>
<msg time="2026-04-19T02:45:41.081187" 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-19T02:45:40.702489" elapsed="0.378746"/>
</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-19T02:45:41.084399" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:45:41.084884" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:41.085225" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:41.081530" elapsed="0.003845"/>
</kw>
<msg time="2026-04-19T02:45:41.085465" level="INFO">${output} = 1</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-19T02:45:40.701258" elapsed="0.384232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:41.085915" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:41.085668" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:41.086002" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:45:41.086173" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:40.698877" elapsed="0.387321"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:41.086245" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:41.086389" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:40.696729" elapsed="0.389685"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:41.087020" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:41.086622" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:40.695624" elapsed="0.391612">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:43.089442" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:43.089073" elapsed="0.000403"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:43.090390" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:43.090112" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:43.091231" 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-19T02:45:43.091335" 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-19T02:45:43.091057" elapsed="0.000304"/>
</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-19T02:45:43.095391" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:43.094658" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:43.094601" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:43.096989" 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-19T02:45:43.097249" 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-19T02:45:43.096540" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:43.098860" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:43.098317" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:43.100706" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:43.099986" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:43.103256" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:43.103337" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:43.102798" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:43.103575" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:43.104885" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:43.414363" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:43.104556" elapsed="0.309977"/>
</kw>
<msg time="2026-04-19T02:45:43.414622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:43.104190" elapsed="0.310530"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:43.102023" elapsed="0.312992"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:43.416586" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:43.429392" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:43.429883" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:43.430440" 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-19T02:45:43.416179" elapsed="0.014473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:43.432903" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:43.436084" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:43.435108" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:43.437016" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:43.436715" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:43.436587" elapsed="0.000584"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:43.437524" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:45:43.437320" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:43.437271" elapsed="0.000421"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:43.437777" 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-19T02:45:43.442610" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:45:43.443267" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:43.443632" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:43.439194" elapsed="0.004650"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:43.093305" elapsed="0.350781"/>
</kw>
<msg time="2026-04-19T02:45:43.444411" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:43.092590" elapsed="0.351887"/>
</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-19T02:45:43.092057" elapsed="0.352505"/>
</kw>
<msg time="2026-04-19T02:45:43.444603" 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-19T02:45:43.091521" elapsed="0.353129"/>
</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-19T02:45:43.448289" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:45:43.448820" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:43.449164" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:43.444957" elapsed="0.004364"/>
</kw>
<msg time="2026-04-19T02:45:43.449421" level="INFO">${output} = 1</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-19T02:45:43.090631" elapsed="0.358817"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:43.449923" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:43.449665" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:43.450015" elapsed="0.000062"/>
</return>
<msg time="2026-04-19T02:45:43.450208" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:43.089687" elapsed="0.360546"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:43.450281" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:43.450428" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:43.088673" elapsed="0.361781"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:43.451009" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:43.450611" elapsed="0.000564">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:43.087972" elapsed="0.363314">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:45.454884" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:45.454130" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:45.457118" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:45.456607" elapsed="0.000549"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:45.458293" 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-19T02:45:45.458435" 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-19T02:45:45.458054" elapsed="0.000418"/>
</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-19T02:45:45.464162" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:45.463490" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:45.463111" elapsed="0.001248"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:45.466061" 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-19T02:45:45.466308" 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-19T02:45:45.465587" elapsed="0.000823"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:45.467912" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:45.467373" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:45.469718" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:45.469003" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:45.472118" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:45.472196" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:45.471819" 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-19T02:45:45.472443" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:45.473709" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:45.778549" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:45.473387" elapsed="0.305307"/>
</kw>
<msg time="2026-04-19T02:45:45.778774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:45.472999" elapsed="0.305860"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:45.471064" elapsed="0.308101"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:45.780677" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:45.803295" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:45.803794" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:45.804174" 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-19T02:45:45.780252" elapsed="0.024136"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:45.806647" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:45.809824" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:45.808812" elapsed="0.001277"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:45.811075" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:45.810441" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:45.810317" elapsed="0.001056"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:45.812186" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:45:45.811698" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:45.811589" elapsed="0.001311"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:45.813470" elapsed="0.000112"/>
</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-19T02:45:45.824522" elapsed="0.000746"/>
</kw>
<kw name="Open 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-19T02:45:45.825492" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:45.825884" 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-19T02:45:45.816715" elapsed="0.009404"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:45.461250" elapsed="0.365099"/>
</kw>
<msg time="2026-04-19T02:45:45.826674" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:45.460194" elapsed="0.366556"/>
</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-19T02:45:45.459434" elapsed="0.367400"/>
</kw>
<msg time="2026-04-19T02:45:45.826951" 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-19T02:45:45.458693" elapsed="0.368309"/>
</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-19T02:45:45.829984" 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-19T02:45:45.830512" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:45.830808" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:45.827316" elapsed="0.003640"/>
</kw>
<msg time="2026-04-19T02:45:45.831072" level="INFO">${output} = 1</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-19T02:45:45.457460" elapsed="0.373641"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:45.831735" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:45.831479" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:45.831823" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:45:45.831980" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:45.455617" elapsed="0.376389"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:45.832069" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:45:45.832217" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:45.453277" elapsed="0.378964"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:45.832816" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:45.832398" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:45.452164" elapsed="0.380851">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:47.836398" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:47.835615" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:47.838565" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:47.837931" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:47.840447" 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-19T02:45:47.840845" 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-19T02:45:47.840077" elapsed="0.000833"/>
</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-19T02:45:47.849600" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:47.849119" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:47.848510" elapsed="0.001233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:47.851262" 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-19T02:45:47.851510" 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-19T02:45:47.850763" elapsed="0.000851"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:47.853211" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:47.852611" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:47.855092" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:47.854321" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:47.857533" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:47.857614" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:47.857243" 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-19T02:45:47.857854" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:47.859292" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:48.177236" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:47.858803" elapsed="0.318514"/>
</kw>
<msg time="2026-04-19T02:45:48.177378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:47.858437" elapsed="0.319012"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:47.856418" elapsed="0.321252"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:48.179058" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:48.201900" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:48.202437" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:48.202769" 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-19T02:45:48.178692" elapsed="0.024308"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:48.205282" elapsed="0.000545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:48.207199" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:48.206590" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:48.207857" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:48.207557" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:48.207482" elapsed="0.000616"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:48.208605" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:45:48.208320" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:48.208251" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:48.208968" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:48.217594" 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-19T02:45:48.218209" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:48.218563" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:48.210796" elapsed="0.007978"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:47.845376" elapsed="0.373625"/>
</kw>
<msg time="2026-04-19T02:45:48.219325" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:47.843797" elapsed="0.375585"/>
</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-19T02:45:47.842570" elapsed="0.376893"/>
</kw>
<msg time="2026-04-19T02:45:48.219504" 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-19T02:45:47.841308" elapsed="0.378241"/>
</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-19T02:45:48.222966" 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-19T02:45:48.223688" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:48.224072" elapsed="0.000122"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:48.219840" elapsed="0.004416"/>
</kw>
<msg time="2026-04-19T02:45:48.224365" level="INFO">${output} = 1</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-19T02:45:47.839137" elapsed="0.385258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:48.224944" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:48.224620" elapsed="0.000376"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:48.225145" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:45:48.225321" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:47.836986" elapsed="0.388360"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:48.225392" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:48.225537" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:47.834784" elapsed="0.390777"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:48.226140" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:48.225719" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:47.833770" elapsed="0.392563">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:50.230234" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:50.229437" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:50.232391" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:50.231735" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:50.233996" 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-19T02:45:50.234167" 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-19T02:45:50.233762" elapsed="0.000442"/>
</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-19T02:45:50.239587" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:50.238912" elapsed="0.000874"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:50.238833" elapsed="0.001040"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:50.242671" 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-19T02:45:50.242931" 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-19T02:45:50.241792" elapsed="0.001255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:50.244642" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:50.244073" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:50.246590" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:50.245789" elapsed="0.000900"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:50.248987" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:50.249109" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:50.248699" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:50.249356" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:50.250757" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:50.572448" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:50.250423" elapsed="0.322176"/>
</kw>
<msg time="2026-04-19T02:45:50.572685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:50.249921" elapsed="0.322857"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:50.247904" elapsed="0.325180"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:50.574614" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:50.597651" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:50.598201" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:50.598537" 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-19T02:45:50.574212" elapsed="0.024537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:50.600977" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:50.603448" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:50.602806" elapsed="0.000787"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:50.604173" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:50.603819" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:50.603737" 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-19T02:45:50.604852" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:45:50.604569" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:50.604500" elapsed="0.000602"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:50.605244" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:50.612064" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:45:50.612631" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:50.612994" elapsed="0.000131"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:50.607215" elapsed="0.006027"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:50.236893" elapsed="0.376574"/>
</kw>
<msg time="2026-04-19T02:45:50.613864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:50.235915" elapsed="0.378016"/>
</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-19T02:45:50.235168" elapsed="0.378850"/>
</kw>
<msg time="2026-04-19T02:45:50.614075" 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-19T02:45:50.234428" elapsed="0.379695"/>
</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-19T02:45:50.617196" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:45:50.617671" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:50.617966" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:50.614417" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T02:45:50.618240" level="INFO">${output} = 1</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-19T02:45:50.233161" elapsed="0.385104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:50.618694" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:50.618446" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:50.618782" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:45:50.618935" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:50.230774" elapsed="0.388187"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:50.619009" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T02:45:50.619187" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:50.228534" elapsed="0.390678"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:50.619768" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:50.619369" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:50.227377" elapsed="0.392579">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:52.623759" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:52.622936" elapsed="0.000899"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:52.626217" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:52.625529" elapsed="0.000729"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:52.627427" 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-19T02:45:52.627570" 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-19T02:45:52.627187" elapsed="0.000420"/>
</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-19T02:45:52.632901" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:52.632242" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:52.632163" elapsed="0.001011"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:52.635603" 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-19T02:45:52.635949" 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-19T02:45:52.634615" elapsed="0.001540"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:52.638329" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:52.637597" elapsed="0.000841"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:52.640247" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:52.639540" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:52.642672" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:52.642750" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:52.642384" 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-19T02:45:52.642986" elapsed="0.000471"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:52.644379" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:52.963227" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:52.644053" elapsed="0.319451"/>
</kw>
<msg time="2026-04-19T02:45:52.963666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:52.643678" elapsed="0.320158"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:52.641587" elapsed="0.322868"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:52.966888" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:52.989787" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:52.990316" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:52.990641" 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-19T02:45:52.966484" elapsed="0.024363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:52.993023" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:52.995547" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:52.994842" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:52.996327" elapsed="0.000250"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:52.995933" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:52.995851" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:52.997672" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:45:52.997106" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:52.996988" elapsed="0.000922"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:52.998026" elapsed="0.000076"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:53.005158" elapsed="0.000517"/>
</kw>
<kw name="Open 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-19T02:45:53.005976" elapsed="0.000257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:53.006438" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:53.000116" elapsed="0.006534"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:52.630325" elapsed="0.376548"/>
</kw>
<msg time="2026-04-19T02:45:53.007376" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:52.629330" elapsed="0.378109"/>
</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-19T02:45:52.628565" elapsed="0.378957"/>
</kw>
<msg time="2026-04-19T02:45:53.007563" 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-19T02:45:52.627829" elapsed="0.379780"/>
</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-19T02:45:53.010669" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:45:53.011171" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:53.011470" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:53.007970" elapsed="0.003648"/>
</kw>
<msg time="2026-04-19T02:45:53.011709" level="INFO">${output} = 1</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-19T02:45:52.626567" elapsed="0.385166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:53.012249" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:53.011918" elapsed="0.000375"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:53.012338" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:53.012490" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:52.624414" elapsed="0.388101"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:53.012562" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:53.012708" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:52.621991" elapsed="0.390742"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:53.013307" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:53.012891" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:52.620803" elapsed="0.392717">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:55.017132" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:55.016340" elapsed="0.000874"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:55.019270" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:55.018635" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:55.021136" 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-19T02:45:55.021371" 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-19T02:45:55.020738" elapsed="0.000691"/>
</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-19T02:45:55.027168" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:55.026513" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:55.026436" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:55.029704" 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-19T02:45:55.030111" 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-19T02:45:55.028740" elapsed="0.001513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:55.032411" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:55.031624" elapsed="0.000943"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:55.035956" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:55.034361" elapsed="0.001846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:55.041665" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:55.041882" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:55.041015" elapsed="0.000923"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:55.042422" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:55.043773" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:55.369616" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:55.043444" elapsed="0.326325"/>
</kw>
<msg time="2026-04-19T02:45:55.369889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:55.043075" elapsed="0.326917"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:55.039294" elapsed="0.331002"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:55.371968" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:55.395305" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:55.395823" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:55.396198" 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-19T02:45:55.371393" elapsed="0.025019"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:55.398622" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:55.401774" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:55.400776" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:55.402952" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:55.402418" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:55.402287" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:55.404154" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T02:45:55.403641" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:55.403526" elapsed="0.001114"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:55.404832" elapsed="0.000092"/>
</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-19T02:45:55.409892" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:45:55.410458" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:55.410815" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:55.406486" elapsed="0.004541"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:55.024523" elapsed="0.386791"/>
</kw>
<msg time="2026-04-19T02:45:55.411620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:55.023561" elapsed="0.388117"/>
</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-19T02:45:55.022791" elapsed="0.388971"/>
</kw>
<msg time="2026-04-19T02:45:55.411802" 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-19T02:45:55.021800" elapsed="0.390049"/>
</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-19T02:45:55.414847" elapsed="0.000416"/>
</kw>
<kw name="Open 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-19T02:45:55.415428" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:55.415724" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:55.412160" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T02:45:55.416024" level="INFO">${output} = 1</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-19T02:45:55.019802" elapsed="0.396265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:55.416501" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:55.416247" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:55.416590" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:55.416744" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:55.017676" elapsed="0.399094"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:55.416818" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:45:55.416968" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:55.015490" elapsed="0.401503"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:55.417564" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:55.417172" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:55.014409" elapsed="0.403337">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:57.421292" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:57.420515" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:57.423413" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:57.422772" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:57.425274" 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-19T02:45:57.425502" 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-19T02:45:57.424908" elapsed="0.000653"/>
</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-19T02:45:57.430182" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:57.429437" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:57.429381" elapsed="0.000940"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:57.431776" 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-19T02:45:57.432024" 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-19T02:45:57.431328" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:57.433674" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:57.433131" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:57.435563" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:57.434783" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:57.437934" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:57.438012" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:57.437653" 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-19T02:45:57.438282" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:57.439642" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:45:57.762719" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:57.439317" elapsed="0.323629"/>
</kw>
<msg time="2026-04-19T02:45:57.763020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:57.438838" elapsed="0.324285"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:57.436874" elapsed="0.326506"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:45:57.764803" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:45:57.787200" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:45:57.787704" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:45:57.788077" 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-19T02:45:57.764442" elapsed="0.023855"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:57.790549" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:57.793699" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:57.792695" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:57.794889" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:45:57.794381" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:57.794253" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:45:57.795998" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T02:45:57.795550" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:57.795443" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:45:57.796563" elapsed="0.000086"/>
</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-19T02:45:57.802959" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:45:57.803512" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:57.803862" 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-19T02:45:57.799586" elapsed="0.004546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:57.428058" elapsed="0.376300"/>
</kw>
<msg time="2026-04-19T02:45:57.804659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:57.427353" elapsed="0.377364"/>
</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-19T02:45:57.426802" elapsed="0.377997"/>
</kw>
<msg time="2026-04-19T02:45:57.804840" 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-19T02:45:57.425917" elapsed="0.378968"/>
</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-19T02:45:57.807939" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:45:57.808428" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:45:57.808721" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:45:57.805196" elapsed="0.003672"/>
</kw>
<msg time="2026-04-19T02:45:57.808959" level="INFO">${output} = 1</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-19T02:45:57.423959" elapsed="0.385025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:57.809425" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:57.809177" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:45:57.809513" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:45:57.809846" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:57.421812" elapsed="0.388060"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:45:57.809919" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:45:57.810082" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:57.419669" elapsed="0.390438"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:45:57.810750" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:45:57.810349" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:57.418593" elapsed="0.392356">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:45:59.814555" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:45:59.813734" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:45:59.816690" level="INFO">${member_ip} = 10.30.171.206</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-19T02:45:59.816082" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:59.818565" 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-19T02:45:59.818795" 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-19T02:45:59.818201" elapsed="0.000654"/>
</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-19T02:45:59.825394" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:45:59.824902" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T02:45:59.824613" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:59.826964" 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-19T02:45:59.827225" 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-19T02:45:59.826525" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:45:59.828820" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:45:59.828284" elapsed="0.000645"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:45:59.830634" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:45:59.829899" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:45:59.833062" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:45:59.833141" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:45:59.832758" 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-19T02:45:59.833376" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:45:59.834670" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:00.154832" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:45:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:45:59.834313" elapsed="0.320764"/>
</kw>
<msg time="2026-04-19T02:46:00.155229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:59.833934" elapsed="0.321445"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:45:59.831926" elapsed="0.323729"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:00.157109" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:46:00.180355" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:00.180895" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:46:00.181306" 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-19T02:46:00.156713" elapsed="0.024829"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:00.183953" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:00.187218" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:00.186181" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:00.187995" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:00.187667" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:00.187587" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:00.188691" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:46:00.188408" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:00.188339" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:00.189027" elapsed="0.000074"/>
</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-19T02:46:00.195659" 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-19T02:46:00.196220" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:00.196579" 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-19T02:46:00.190989" elapsed="0.005799"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:45:59.823193" elapsed="0.373820"/>
</kw>
<msg time="2026-04-19T02:46:00.197342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:45:59.821633" elapsed="0.375771"/>
</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-19T02:45:59.820402" elapsed="0.377085"/>
</kw>
<msg time="2026-04-19T02:46:00.197528" 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-19T02:45:59.819236" elapsed="0.378337"/>
</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-19T02:46:00.200617" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:46:00.201106" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:00.201399" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:00.197865" elapsed="0.003680"/>
</kw>
<msg time="2026-04-19T02:46:00.201636" level="INFO">${output} = 1</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-19T02:45:59.817261" elapsed="0.384400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:00.202151" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:00.201841" elapsed="0.000355"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:46:00.202239" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:00.202392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:45:59.815127" elapsed="0.387290"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:46:00.202464" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:46:00.202624" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:45:59.812866" elapsed="0.389782"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:46:00.203213" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:46:00.202804" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:45:59.811779" elapsed="0.391620">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:02.206881" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:02.206101" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:02.209149" level="INFO">${member_ip} = 10.30.171.206</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-19T02:46:02.208524" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:02.210979" 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-19T02:46:02.211235" 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-19T02:46:02.210628" elapsed="0.000666"/>
</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-19T02:46:02.218644" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:02.217932" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:02.217514" elapsed="0.001368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:02.221010" 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-19T02:46:02.221396" 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-19T02:46:02.220352" elapsed="0.001188"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:02.223797" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:02.222975" elapsed="0.000982"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:02.226548" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:02.225503" elapsed="0.001192"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:02.230467" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:02.230595" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:02.229987" elapsed="0.000644"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:02.231021" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:02.232555" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:02.540048" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:02.232206" elapsed="0.307997"/>
</kw>
<msg time="2026-04-19T02:46:02.540289" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:02.231773" elapsed="0.308613"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:02.228777" elapsed="0.311899"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:02.542225" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:46:02.565086" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:02.565711" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:46:02.566112" 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-19T02:46:02.541786" elapsed="0.024550"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:02.568769" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:02.572223" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:02.571206" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:02.573478" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:02.572813" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:02.572687" elapsed="0.001096"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:02.574626" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T02:46:02.574165" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:02.574011" elapsed="0.001164"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:02.575370" elapsed="0.000085"/>
</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-19T02:46:02.582279" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T02:46:02.582938" elapsed="0.000314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:02.583454" 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-19T02:46:02.576850" elapsed="0.006827"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:46:02.215572" elapsed="0.368335"/>
</kw>
<msg time="2026-04-19T02:46:02.584250" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:02.214001" elapsed="0.370319"/>
</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-19T02:46:02.212797" elapsed="0.371604"/>
</kw>
<msg time="2026-04-19T02:46:02.584442" 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-19T02:46:02.211643" elapsed="0.372844"/>
</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-19T02:46:02.587619" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:02.588122" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:02.588433" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:02.584798" elapsed="0.003786"/>
</kw>
<msg time="2026-04-19T02:46:02.588678" level="INFO">${output} = 1</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-19T02:46:02.209684" elapsed="0.379019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:02.589197" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:02.588919" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:46:02.589298" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:46:02.589460" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:46:02.207588" elapsed="0.381898"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:46:02.589533" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:46:02.589678" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:46:02.205273" elapsed="0.384429"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:46:02.590284" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:46:02.589860" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:46:02.204244" elapsed="0.386231">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.593970" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:04.593236" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:04.596129" level="INFO">${member_ip} = 10.30.171.206</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-19T02:46:04.595496" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.597950" 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-19T02:46:04.598359" 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-19T02:46:04.597629" elapsed="0.000792"/>
</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-19T02:46:04.602849" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:04.602386" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:04.602329" elapsed="0.000659"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.604778" 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-19T02:46:04.605025" 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-19T02:46:04.604110" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.606670" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:04.606135" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.608518" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:04.607803" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.610958" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:04.611052" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:04.610679" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.611298" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.612551" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:04.927753" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:04.612226" elapsed="0.315684"/>
</kw>
<msg time="2026-04-19T02:46:04.927998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.611850" elapsed="0.316261"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:04.609825" elapsed="0.318581"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.929969" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:46:04.952890" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:04.953480" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:46:04.953868" 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-19T02:46:04.929543" elapsed="0.024603"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:04.956622" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.960016" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:04.958951" elapsed="0.001346"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:04.961240" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:04.960672" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:04.960539" elapsed="0.001012"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:04.962536" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T02:46:04.961899" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:04.961784" elapsed="0.001130"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:04.963141" elapsed="0.000138"/>
</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-19T02:46:04.968186" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:46:04.968872" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:04.969254" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:04.964770" elapsed="0.004695"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:46:04.600984" elapsed="0.368709"/>
</kw>
<msg time="2026-04-19T02:46:04.970003" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.600310" elapsed="0.369808"/>
</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-19T02:46:04.599762" elapsed="0.370441"/>
</kw>
<msg time="2026-04-19T02:46:04.970245" 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-19T02:46:04.598777" elapsed="0.371514"/>
</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-19T02:46:04.973266" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:46:04.973741" elapsed="0.000414"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:04.974308" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:04.970584" elapsed="0.003875"/>
</kw>
<msg time="2026-04-19T02:46:04.974549" level="INFO">${output} = 1</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-19T02:46:04.596673" elapsed="0.377902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.975155" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:04.974760" elapsed="0.000471"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:46:04.975276" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:04.975430" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:46:04.594534" elapsed="0.380921"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:46:04.975502" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:46:04.975644" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:46:04.592398" elapsed="0.383270"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.976233" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:46:04.975824" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:46:04.591316" elapsed="0.385103">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T02:46:04.976507" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T02:40:03.653329" elapsed="361.323272">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:40:03.653177" elapsed="361.323507">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T02:39:58.050839" elapsed="366.925910">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:04.976981" elapsed="0.000025"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:46:04.977064" elapsed="0.000016"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T02:39:55.857790" elapsed="369.119375">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:39:55.857156" elapsed="369.120166">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s15-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T02:46:04.982072" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:04.981621" elapsed="0.000479"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.982604" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:04.982261" elapsed="0.000370"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:04.982678" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:46:04.982838" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:04.981241" elapsed="0.001623"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.985247" 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-19T02:46:04.985350" 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-19T02:46:04.985104" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:04.987459" level="INFO">${ip_address} = 10.30.171.9</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-19T02:46:04.987117" elapsed="0.000370"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:04.987538" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:46:04.987697" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:04.986773" elapsed="0.000951"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.991399" level="INFO">${odl_connection} = 495</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:04.990583" elapsed="0.000925"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:04.994414" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:04.994494" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:04.993986" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.994697" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:04.995926" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:05.696772" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:40:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:04.995599" elapsed="0.701345"/>
</kw>
<msg time="2026-04-19T02:46:05.697054" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.995226" elapsed="0.701926"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:04.993475" elapsed="0.703799"/>
</kw>
<msg time="2026-04-19T02:46:05.697327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.993015" elapsed="0.704364"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:04.992092" elapsed="0.705485"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:05.697678" elapsed="0.000060"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:04.989411" elapsed="0.708656"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:05.701479" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:05.714350" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:05.714526" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:05.714613" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:05.714702" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:05.701272" elapsed="0.013480"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:05.716813" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:05.716171" elapsed="0.000743"/>
</kw>
<msg time="2026-04-19T02:46:05.717161" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:05.717260" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:05.715341" elapsed="0.001970"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:05.718937" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:05.717870" elapsed="0.001126"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:05.721803" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:05.721246" elapsed="0.000648"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:05.722814" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:05.722262" elapsed="0.000644"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:05.723733" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:05.723325" elapsed="0.000465"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:05.720268" elapsed="0.003579"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:05.719363" elapsed="0.004519"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:05.719298" elapsed="0.004612"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:05.724149" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:05.724022" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:05.724001" elapsed="0.000246"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:05.724456" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T02:46:05.724355" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:05.724336" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:05.724746" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:05.700318" elapsed="0.024672"/>
</kw>
<msg time="2026-04-19T02:46:05.725169" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:05.725238" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:05.698456" elapsed="0.026819"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:05.725532" elapsed="0.000251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:05.726106" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:46:05.725903" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:05.725884" elapsed="0.000378"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:05.726411" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:04.988464" elapsed="0.738130"/>
</kw>
<msg time="2026-04-19T02:46:05.726659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.987887" elapsed="0.738822"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:04.986002" elapsed="0.740793"/>
</kw>
<msg time="2026-04-19T02:46:05.726836" 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-19T02:46:04.985540" elapsed="0.741342"/>
</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-19T02:46:05.730023" 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-19T02:46:05.730596" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:05.730909" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:05.727201" elapsed="0.003877"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:04.984466" elapsed="0.746672"/>
</kw>
<msg time="2026-04-19T02:46:05.731193" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:04.983977" elapsed="0.747265"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:04.983268" elapsed="0.748097"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:04.983079" elapsed="0.748333"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:05.733868" 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-19T02:46:05.733969" 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-19T02:46:05.733727" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:05.736169" level="INFO">${ip_address} = 10.30.171.128</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-19T02:46:05.735823" elapsed="0.000381"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:05.736256" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:46:05.736412" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:05.735496" elapsed="0.000941"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:05.740060" level="INFO">${odl_connection} = 497</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:05.739300" elapsed="0.000865"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:05.742843" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:05.742923" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:05.742570" 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-19T02:46:05.743126" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:05.744356" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:06.475083" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:40:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:05.744008" elapsed="0.731228"/>
</kw>
<msg time="2026-04-19T02:46:06.475320" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:05.743650" elapsed="0.731784"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:05.742075" elapsed="0.733482"/>
</kw>
<msg time="2026-04-19T02:46:06.475697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:05.741625" elapsed="0.734125"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:05.740710" elapsed="0.735227"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:06.476057" elapsed="0.000057"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:05.738068" elapsed="0.738298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.479524" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:06.492308" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:06.492563" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:06.492674" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:06.492766" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:06.479301" elapsed="0.013514"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.494814" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:06.494197" elapsed="0.000719"/>
</kw>
<msg time="2026-04-19T02:46:06.495159" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:06.495259" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:06.493388" elapsed="0.001922"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.496398" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:06.495759" elapsed="0.000676"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.498062" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:06.497690" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.498673" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:06.498334" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.499293" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:06.498936" elapsed="0.000417"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:06.497128" elapsed="0.002328"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:06.496622" elapsed="0.002888"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.496589" elapsed="0.002957"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:06.499842" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:06.499699" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.499672" elapsed="0.000262"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:06.500233" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T02:46:06.500101" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.500074" elapsed="0.000277"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:06.500620" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:06.478369" elapsed="0.022592"/>
</kw>
<msg time="2026-04-19T02:46:06.501193" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:06.501291" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:06.476656" elapsed="0.024686"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:06.501698" elapsed="0.000308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:06.502452" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T02:46:06.502200" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.502173" elapsed="0.000491"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:06.502866" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:05.737147" elapsed="0.766005"/>
</kw>
<msg time="2026-04-19T02:46:06.503235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:05.736596" elapsed="0.766709"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:05.734669" elapsed="0.768848"/>
</kw>
<msg time="2026-04-19T02:46:06.503586" 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-19T02:46:05.734204" elapsed="0.769462"/>
</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-19T02:46:06.506727" 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-19T02:46:06.507223" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:06.507556" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:06.503987" elapsed="0.003724"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:05.733108" elapsed="0.774662"/>
</kw>
<msg time="2026-04-19T02:46:06.507827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:05.732504" elapsed="0.775372"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:05.731677" elapsed="0.776285"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:05.731515" elapsed="0.776494"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.510280" 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-19T02:46:06.510380" 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-19T02:46:06.510143" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:06.512477" level="INFO">${ip_address} = 10.30.171.206</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-19T02:46:06.512162" elapsed="0.000342"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:06.512554" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:06.512706" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:06.511819" elapsed="0.000913"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.516290" level="INFO">${odl_connection} = 499</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:06.515562" elapsed="0.000828"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.519008" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:06.519103" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:06.518742" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.519285" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.520478" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:06.849730" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:06.520159" elapsed="0.329739"/>
</kw>
<msg time="2026-04-19T02:46:06.849966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.519787" elapsed="0.330265"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:06.518252" elapsed="0.331896"/>
</kw>
<msg time="2026-04-19T02:46:06.850200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.517837" elapsed="0.332414"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:06.516933" elapsed="0.333486"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:06.850509" elapsed="0.000053"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:06.514383" elapsed="0.336421"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.854027" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:06.866640" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:06.866803" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:06.866866" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:06.866924" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:06.853820" elapsed="0.013136"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.868371" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:06.867889" elapsed="0.000548"/>
</kw>
<msg time="2026-04-19T02:46:06.868570" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:06.868646" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:06.867355" elapsed="0.001341"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.870351" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:06.869247" elapsed="0.001168"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.873234" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:06.872542" elapsed="0.000824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.874400" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:06.873735" elapsed="0.000782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.875627" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:06.874912" elapsed="0.000819"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:06.871581" elapsed="0.004272"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:06.870719" elapsed="0.005211"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.870665" elapsed="0.005323"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:06.876533" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:06.876273" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.876228" elapsed="0.000466"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:06.876909" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T02:46:06.876814" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.876795" elapsed="0.000198"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:06.877207" elapsed="0.000024"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:06.852893" elapsed="0.024569"/>
</kw>
<msg time="2026-04-19T02:46:06.877615" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:06.877686" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:06.851083" elapsed="0.026641"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:06.877981" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:06.878602" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T02:46:06.878388" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:06.878367" elapsed="0.000400"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:06.878914" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:06.513445" elapsed="0.365699"/>
</kw>
<msg time="2026-04-19T02:46:06.879292" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.512891" elapsed="0.366455"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:06.511018" elapsed="0.368416"/>
</kw>
<msg time="2026-04-19T02:46:06.879515" 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-19T02:46:06.510560" elapsed="0.369008"/>
</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-19T02:46:06.882706" 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-19T02:46:06.883283" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:06.883644" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:06.879873" elapsed="0.003923"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:06.509507" elapsed="0.374346"/>
</kw>
<msg time="2026-04-19T02:46:06.883908" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.509057" elapsed="0.374900"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:06.508338" elapsed="0.375781"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:46:06.508179" elapsed="0.375990"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:04.982924" elapsed="1.901279"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:46:04.978820" elapsed="1.905445"/>
</kw>
<kw name="Check_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-19T02:46:06.887879" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:06.887489" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.888384" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:06.888081" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:06.888454" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:06.888606" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:06.887083" elapsed="0.001547"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.890865" 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-19T02:46:06.890963" 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-19T02:46:06.890731" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:06.892805" level="INFO">${ip_address} = 10.30.171.9</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-19T02:46:06.892499" elapsed="0.000333"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:06.892880" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:06.893049" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:06.892181" elapsed="0.000939"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.896575" level="INFO">${odl_connection} = 501</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:06.895878" elapsed="0.000794"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:06.899438" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:06.899538" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:06.899173" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.899719" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:06.900886" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:07.209569" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:06.900571" elapsed="0.309178"/>
</kw>
<msg time="2026-04-19T02:46:07.209883" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.900219" elapsed="0.309796"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:06.898669" elapsed="0.311562"/>
</kw>
<msg time="2026-04-19T02:46:07.210336" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.898134" elapsed="0.312306"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:06.897249" elapsed="0.313525"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:07.210959" elapsed="0.000135"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:06.894730" elapsed="0.316920"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.218188" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:07.230754" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:07.231004" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:07.231138" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:07.231231" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:07.217736" elapsed="0.013544"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.233290" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:07.232660" elapsed="0.000732"/>
</kw>
<msg time="2026-04-19T02:46:07.233598" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:07.233694" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:07.231854" elapsed="0.001890"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.235243" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:07.234263" elapsed="0.001039"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.237442" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.237096" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.238056" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.237709" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.238879" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.238322" elapsed="0.000619"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:07.236438" elapsed="0.002579"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:07.235649" elapsed="0.003439"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.235597" elapsed="0.003584"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:07.239484" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:07.239339" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.239312" elapsed="0.000299"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:07.239890" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:46:07.239758" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.239734" elapsed="0.000444"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:07.240450" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:07.215700" elapsed="0.025091"/>
</kw>
<msg time="2026-04-19T02:46:07.240996" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:07.241122" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:07.212202" elapsed="0.028973"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:07.241532" elapsed="0.000274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:07.242244" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T02:46:07.241969" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.241943" elapsed="0.000516"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:07.242663" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:06.893805" elapsed="0.349110"/>
</kw>
<msg time="2026-04-19T02:46:07.242997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.893284" elapsed="0.349804"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:06.891636" elapsed="0.351573"/>
</kw>
<msg time="2026-04-19T02:46:07.243266" 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-19T02:46:06.891158" elapsed="0.352170"/>
</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-19T02:46:07.246758" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:46:07.247247" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:07.247587" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:07.243773" elapsed="0.003967"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:06.890117" elapsed="0.357682"/>
</kw>
<msg time="2026-04-19T02:46:07.247855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:06.889667" elapsed="0.358236"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:06.888969" elapsed="0.359017"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:06.888815" elapsed="0.359231"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.250274" 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-19T02:46:07.250374" 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-19T02:46:07.250142" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:07.252270" level="INFO">${ip_address} = 10.30.171.128</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-19T02:46:07.251942" elapsed="0.000355"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:07.252347" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:07.252497" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:07.251620" elapsed="0.000902"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.255998" level="INFO">${odl_connection} = 503</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:07.255284" elapsed="0.000827"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.260627" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:07.260710" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:07.260359" 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-19T02:46:07.260895" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.262160" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:07.587260" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:07.261765" elapsed="0.325588"/>
</kw>
<msg time="2026-04-19T02:46:07.587420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.261402" elapsed="0.326091"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:07.259849" elapsed="0.327764"/>
</kw>
<msg time="2026-04-19T02:46:07.587664" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.259419" elapsed="0.328293"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:07.256639" elapsed="0.331226"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:07.587955" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:07.254161" elapsed="0.334098"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.591207" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:07.603722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:07.603834" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:07.603883" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:07.603924" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:07.591003" elapsed="0.012944"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.605014" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:07.604543" elapsed="0.000614"/>
</kw>
<msg time="2026-04-19T02:46:07.605368" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:07.605464" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:07.604204" elapsed="0.001310"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.607025" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:07.606002" elapsed="0.001117"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.609753" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.609203" elapsed="0.000738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.611278" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.610340" elapsed="0.001032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.612338" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.611761" elapsed="0.000675"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:07.608274" elapsed="0.004283"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:07.607412" elapsed="0.005232"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.607361" elapsed="0.005349"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:07.612946" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:07.612843" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.612823" elapsed="0.000188"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:07.613230" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:46:07.613136" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.613117" elapsed="0.000196"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:07.613507" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:07.590119" elapsed="0.023631"/>
</kw>
<msg time="2026-04-19T02:46:07.613896" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:07.613965" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:07.588508" elapsed="0.025493"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:07.614277" elapsed="0.000201"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:07.614773" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:46:07.614595" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.614576" elapsed="0.000349"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:07.615090" elapsed="0.000023"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:07.253232" elapsed="0.362040"/>
</kw>
<msg time="2026-04-19T02:46:07.615330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.252680" elapsed="0.362698"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:07.251075" elapsed="0.364388"/>
</kw>
<msg time="2026-04-19T02:46:07.615503" 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-19T02:46:07.250596" elapsed="0.365008"/>
</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-19T02:46:07.618650" 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-19T02:46:07.619141" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:07.619443" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:07.615906" elapsed="0.003695"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:07.249499" elapsed="0.370160"/>
</kw>
<msg time="2026-04-19T02:46:07.619711" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.248992" elapsed="0.370766"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:07.248298" elapsed="0.371541"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:07.248141" elapsed="0.371786"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.622168" 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-19T02:46:07.622268" 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-19T02:46:07.621972" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:07.624116" level="INFO">${ip_address} = 10.30.171.206</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-19T02:46:07.623789" elapsed="0.000354"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:07.624192" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:07.624343" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:07.623442" elapsed="0.000925"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.627894" level="INFO">${odl_connection} = 505</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:07.627191" elapsed="0.000803"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.630816" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:07.630893" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:07.630550" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.631092" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.632294" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:07.932793" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:07.631963" elapsed="0.300921"/>
</kw>
<msg time="2026-04-19T02:46:07.932948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.631600" elapsed="0.301413"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:07.630051" elapsed="0.303071"/>
</kw>
<msg time="2026-04-19T02:46:07.933171" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.629438" elapsed="0.303781"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:07.628547" elapsed="0.304830"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:07.933465" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:07.626056" elapsed="0.307685"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.936712" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:07.949169" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:07.949415" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:07.949511" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:07.949600" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:07.936522" elapsed="0.013127"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.951672" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:07.950981" elapsed="0.000797"/>
</kw>
<msg time="2026-04-19T02:46:07.951987" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:07.952120" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:07.950208" elapsed="0.001966"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.953739" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:07.952754" elapsed="0.001045"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.956495" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.955898" elapsed="0.000692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.957181" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.956827" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.958016" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:07.957450" elapsed="0.000652"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:07.954899" elapsed="0.003280"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:07.954131" elapsed="0.004098"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.954079" elapsed="0.004188"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:07.958566" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:07.958421" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.958394" elapsed="0.000265"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:07.958931" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T02:46:07.958801" elapsed="0.000214"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.958777" elapsed="0.000310"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:07.959365" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:07.935617" elapsed="0.024107"/>
</kw>
<msg time="2026-04-19T02:46:07.959930" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:07.960055" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:07.933988" elapsed="0.026124"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:07.960468" elapsed="0.000273"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:07.961179" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T02:46:07.960905" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:07.960878" elapsed="0.000516"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:07.961598" elapsed="0.000029"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:07.625122" elapsed="0.336725"/>
</kw>
<msg time="2026-04-19T02:46:07.961927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.624525" elapsed="0.337470"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:07.622907" elapsed="0.339237"/>
</kw>
<msg time="2026-04-19T02:46:07.962200" 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-19T02:46:07.622447" elapsed="0.339815"/>
</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-19T02:46:07.966556" 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-19T02:46:07.967239" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:07.967702" elapsed="0.000139"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:07.962667" elapsed="0.005247"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:07.621354" elapsed="0.346639"/>
</kw>
<msg time="2026-04-19T02:46:07.968143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.620893" elapsed="0.347320"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:07.620201" elapsed="0.348186"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:46:07.620041" elapsed="0.348410"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:06.888683" elapsed="1.079815"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:46:06.884500" elapsed="1.084077"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.968808" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T02:46:07.972979" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:07.972597" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.973491" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:07.973186" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:07.973564" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:07.973721" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:07.972207" elapsed="0.001540"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.976046" 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-19T02:46:07.976148" 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-19T02:46:07.975895" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:07.978168" level="INFO">${ip_address} = 10.30.171.9</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-19T02:46:07.977703" elapsed="0.000525"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:07.978450" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:46:07.978615" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:07.977310" elapsed="0.001330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.982563" level="INFO">${odl_connection} = 507</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:07.982182" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:07.984530" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:07.984607" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:07.984264" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.984787" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:07.986169" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:08.293779" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:07.985637" elapsed="0.308492"/>
</kw>
<msg time="2026-04-19T02:46:08.294275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.985284" elapsed="0.309138"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:07.983623" elapsed="0.310999"/>
</kw>
<msg time="2026-04-19T02:46:08.294731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.983207" elapsed="0.311629"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:07.982801" elapsed="0.312194"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:08.295180" elapsed="0.000084"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:07.981489" elapsed="0.314276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.301527" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:08.314554" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:08.314806" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:08.314907" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:08.314999" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:08.301108" elapsed="0.013981"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.316958" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:08.316326" elapsed="0.000767"/>
</kw>
<msg time="2026-04-19T02:46:08.317306" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:08.317403" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:08.315488" elapsed="0.001965"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.318824" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:08.317852" elapsed="0.001030"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.321186" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:08.320822" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.321784" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:08.321455" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.322398" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:08.322066" elapsed="0.000391"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:08.319955" elapsed="0.002574"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:08.319094" elapsed="0.003483"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.319016" elapsed="0.003598"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:08.322832" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:08.322695" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.322670" elapsed="0.000252"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:08.323190" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T02:46:08.322992" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.322972" elapsed="0.000337"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:08.323514" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:08.299888" elapsed="0.023809"/>
</kw>
<msg time="2026-04-19T02:46:08.324061" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:08.324178" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:08.298143" elapsed="0.026091"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:08.325598" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:08.326580" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:46:08.326326" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.326244" elapsed="0.000540"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:08.328176" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:07.979555" elapsed="0.348907"/>
</kw>
<msg time="2026-04-19T02:46:08.329067" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.978796" elapsed="0.350348"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:07.976780" elapsed="0.352488"/>
</kw>
<msg time="2026-04-19T02:46:08.329328" 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-19T02:46:07.976328" elapsed="0.353064"/>
</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-19T02:46:08.333437" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:46:08.333912" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:08.334300" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:08.329808" elapsed="0.004643"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:07.975257" elapsed="0.359252"/>
</kw>
<msg time="2026-04-19T02:46:08.334564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.974800" elapsed="0.359812"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:07.974103" elapsed="0.360595"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:07.973933" elapsed="0.360811"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.336953" 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-19T02:46:08.337069" 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-19T02:46:08.336818" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:08.339194" level="INFO">${ip_address} = 10.30.171.128</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-19T02:46:08.338727" elapsed="0.000526"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:08.339471" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:46:08.339627" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:08.338333" elapsed="0.001329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.343561" level="INFO">${odl_connection} = 509</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:08.343178" elapsed="0.000409"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.345461" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:08.345536" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:08.345198" elapsed="0.000362"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.345716" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.346896" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:08.669148" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:08.346571" elapsed="0.322767"/>
</kw>
<msg time="2026-04-19T02:46:08.669412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.346216" elapsed="0.323273"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:08.344614" elapsed="0.324977"/>
</kw>
<msg time="2026-04-19T02:46:08.669641" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.344225" elapsed="0.325465"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:08.343813" elapsed="0.325952"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:08.669843" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:08.342479" elapsed="0.327660"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.672789" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:08.685506" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:08.685750" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:08.685847" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:08.685938" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:08.672599" elapsed="0.013390"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.688339" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:08.687652" elapsed="0.000788"/>
</kw>
<msg time="2026-04-19T02:46:08.688651" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:08.688763" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:08.686448" elapsed="0.002374"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.690208" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:08.689236" elapsed="0.001031"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.692748" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:08.692193" elapsed="0.000650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.693752" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:08.693216" elapsed="0.000628"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.694740" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:08.694213" elapsed="0.000623"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:08.691242" elapsed="0.003714"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:08.690447" elapsed="0.004617"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.690401" elapsed="0.004725"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:08.695481" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:08.695256" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.695217" elapsed="0.000414"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:08.695991" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T02:46:08.695789" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.695751" elapsed="0.000460"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:08.696534" elapsed="0.000049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:08.672069" elapsed="0.024733"/>
</kw>
<msg time="2026-04-19T02:46:08.697378" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:08.697558" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:08.671213" elapsed="0.026435"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:08.699888" elapsed="0.000861"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:08.701109" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:46:08.700900" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:08.700841" elapsed="0.000415"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:08.702259" elapsed="0.000037"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:08.340365" elapsed="0.362104"/>
</kw>
<msg time="2026-04-19T02:46:08.702916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.339823" elapsed="0.363147"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:08.337708" elapsed="0.365366"/>
</kw>
<msg time="2026-04-19T02:46:08.703117" 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-19T02:46:08.337250" elapsed="0.365913"/>
</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-19T02:46:08.706246" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:46:08.706726" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:08.707050" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:08.703465" elapsed="0.003738"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:08.336198" elapsed="0.371064"/>
</kw>
<msg time="2026-04-19T02:46:08.707317" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.335732" elapsed="0.371633"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:08.334997" elapsed="0.372454"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:08.334839" elapsed="0.372659"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.709818" 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-19T02:46:08.709917" 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-19T02:46:08.709680" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:08.712132" level="INFO">${ip_address} = 10.30.171.206</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-19T02:46:08.711618" elapsed="0.000575"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:08.712418" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:46:08.712575" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:08.711224" elapsed="0.001376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.716482" level="INFO">${odl_connection} = 511</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:08.716090" elapsed="0.000419"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:08.718283" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:08.718359" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:08.718006" 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-19T02:46:08.718539" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:08.719715" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:09.028729" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:08.719385" elapsed="0.309614"/>
</kw>
<msg time="2026-04-19T02:46:09.029108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.719017" elapsed="0.310178"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:08.717525" elapsed="0.311787"/>
</kw>
<msg time="2026-04-19T02:46:09.029365" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.717125" elapsed="0.312289"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:08.716714" elapsed="0.312778"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:09.029591" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:08.715189" elapsed="0.314684"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.032617" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:09.045507" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:09.045667" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:09.045733" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:09.045823" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:09.032424" elapsed="0.013449"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.048183" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:09.047101" elapsed="0.001187"/>
</kw>
<msg time="2026-04-19T02:46:09.048499" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:09.048597" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:09.046307" elapsed="0.002340"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.050002" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:09.049022" elapsed="0.001070"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.052566" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.051984" elapsed="0.000674"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.053568" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.053000" elapsed="0.000658"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.054555" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.053996" elapsed="0.000653"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:09.051064" elapsed="0.003708"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:09.050273" elapsed="0.004579"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.050227" elapsed="0.004683"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:09.055300" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:09.055072" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.054998" elapsed="0.000450"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:09.055814" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T02:46:09.055564" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.055530" elapsed="0.000476"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:09.056363" elapsed="0.000049"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:09.031869" elapsed="0.024759"/>
</kw>
<msg time="2026-04-19T02:46:09.056953" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:09.057055" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:09.030986" elapsed="0.026112"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:09.058110" elapsed="0.000393"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:09.058823" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:46:09.058638" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.058577" elapsed="0.000394"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:09.059987" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:08.713296" elapsed="0.346913"/>
</kw>
<msg time="2026-04-19T02:46:09.060640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.712757" elapsed="0.347939"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:08.710687" elapsed="0.350102"/>
</kw>
<msg time="2026-04-19T02:46:09.060831" 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-19T02:46:08.710227" elapsed="0.350649"/>
</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-19T02:46:09.063890" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:46:09.064385" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:09.064692" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:09.061190" elapsed="0.003657"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:08.709063" elapsed="0.355841"/>
</kw>
<msg time="2026-04-19T02:46:09.064958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:08.708601" elapsed="0.356406"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:08.707765" elapsed="0.357342"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:46:08.707593" elapsed="0.357560"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:07.973801" elapsed="1.091386"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:46:07.969797" elapsed="1.095450"/>
</kw>
<msg time="2026-04-19T02:46:09.065286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:07.969305" elapsed="1.096025"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:09.065490" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T02:46:04.978394" elapsed="4.087184"/>
</kw>
<kw name="Check_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-19T02:46:09.069054" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:09.068650" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.069544" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:09.069242" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:09.069615" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:09.069769" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:09.068274" elapsed="0.001520"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.072190" 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-19T02:46:09.072289" 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-19T02:46:09.072055" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:09.074351" level="INFO">${ip_address} = 10.30.171.9</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-19T02:46:09.074068" elapsed="0.000310"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:09.074429" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:46:09.074584" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:09.073511" elapsed="0.001098"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.077227" level="INFO">${odl_connection} = 513</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:09.076481" elapsed="0.000787"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.080446" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:09.080523" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:09.080177" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.080706" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.081884" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:09.401406" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:09.081569" elapsed="0.319973"/>
</kw>
<msg time="2026-04-19T02:46:09.401629" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.081213" elapsed="0.320502"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:09.079652" elapsed="0.322179"/>
</kw>
<msg time="2026-04-19T02:46:09.401929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.078925" elapsed="0.323082"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:09.077530" elapsed="0.324628"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:09.402254" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:09.076064" elapsed="0.326367"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.405981" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:09.418317" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:09.418690" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:46:09.418913" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:09.419151" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:09.405639" elapsed="0.013648"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.422716" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:09.422086" elapsed="0.000739"/>
</kw>
<msg time="2026-04-19T02:46:09.423345" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:09.423683" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:09.420818" elapsed="0.003109"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.428244" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:09.426294" elapsed="0.002175"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.430534" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.430275" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.431043" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.430791" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.431473" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.431236" elapsed="0.000279"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:09.429800" elapsed="0.001809"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:09.428809" elapsed="0.002845"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.428709" elapsed="0.003003"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:09.432183" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:09.431883" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.431833" elapsed="0.000478"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:09.432689" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:46:09.432487" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.432438" elapsed="0.000408"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:09.433818" elapsed="0.000056"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:09.403708" elapsed="0.030403"/>
</kw>
<msg time="2026-04-19T02:46:09.434353" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:09.434400" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:09.402648" elapsed="0.031777"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:09.434589" elapsed="0.000231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:09.434997" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:46:09.434886" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.434868" elapsed="0.000230"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:09.435242" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:09.075315" elapsed="0.360045"/>
</kw>
<msg time="2026-04-19T02:46:09.435455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.074768" elapsed="0.360737"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:09.072971" elapsed="0.362754"/>
</kw>
<msg time="2026-04-19T02:46:09.435834" 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-19T02:46:09.072508" elapsed="0.363377"/>
</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-19T02:46:09.438985" elapsed="0.000407"/>
</kw>
<kw name="Open 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-19T02:46:09.439558" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:09.439927" elapsed="0.000129"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:09.436259" elapsed="0.003853"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:09.071400" elapsed="0.368903"/>
</kw>
<msg time="2026-04-19T02:46:09.440398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.070939" elapsed="0.369507"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:09.070244" elapsed="0.370413"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:09.069978" elapsed="0.370729"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.442980" 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-19T02:46:09.443206" 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-19T02:46:09.442841" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:09.445055" level="INFO">${ip_address} = 10.30.171.128</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-19T02:46:09.444774" elapsed="0.000309"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:09.445131" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:09.445280" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:09.444442" elapsed="0.000862"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.449778" level="INFO">${odl_connection} = 515</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:09.449025" elapsed="0.000794"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.452916" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:09.452993" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:09.452642" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.453196" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.454377" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:09.768505" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:09.454059" elapsed="0.314562"/>
</kw>
<msg time="2026-04-19T02:46:09.768695" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.453683" elapsed="0.315090"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:09.452156" elapsed="0.316719"/>
</kw>
<msg time="2026-04-19T02:46:09.768958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.451391" elapsed="0.317658"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:09.450103" elapsed="0.319075"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:09.769276" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:09.448612" elapsed="0.320828"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.772969" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:09.786114" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:09.786708" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:46:09.787086" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:09.787424" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:09.772386" elapsed="0.015251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.791818" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:09.791193" elapsed="0.000776"/>
</kw>
<msg time="2026-04-19T02:46:09.792486" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:09.792777" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:09.789934" elapsed="0.002975"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.795442" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:09.794334" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.798158" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.797778" elapsed="0.000599"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.798938" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.798598" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.799672" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:09.799337" elapsed="0.000397"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:09.797145" elapsed="0.002746"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:09.795805" elapsed="0.004163"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.795731" elapsed="0.004345"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:09.800602" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:09.800301" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.800230" elapsed="0.000552"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:09.801303" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:46:09.800998" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.800929" elapsed="0.000597"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:09.802906" elapsed="0.000079"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:09.770480" elapsed="0.032967"/>
</kw>
<msg time="2026-04-19T02:46:09.803784" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:09.803848" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:09.769651" elapsed="0.034260"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:09.804161" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:09.804724" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-04-19T02:46:09.804554" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:09.804529" elapsed="0.000320"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:09.804995" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:09.447887" elapsed="0.357248"/>
</kw>
<msg time="2026-04-19T02:46:09.805231" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.445458" elapsed="0.359823"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:09.443865" elapsed="0.361638"/>
</kw>
<msg time="2026-04-19T02:46:09.805583" 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-19T02:46:09.443391" elapsed="0.362237"/>
</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-19T02:46:09.808766" 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-19T02:46:09.809258" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:09.809561" 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-19T02:46:09.805923" elapsed="0.003784"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:09.442132" elapsed="0.367762"/>
</kw>
<msg time="2026-04-19T02:46:09.809986" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.441670" elapsed="0.368377"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:09.440964" elapsed="0.369299"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:09.440804" elapsed="0.369552"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.812693" 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-19T02:46:09.812792" 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-19T02:46:09.812558" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:09.814582" level="INFO">${ip_address} = 10.30.171.206</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-19T02:46:09.814310" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:09.814657" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:09.814807" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:09.813971" elapsed="0.000861"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.817799" level="INFO">${odl_connection} = 517</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:09.817061" elapsed="0.000779"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:09.820907" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:09.820984" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:09.820634" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.821185" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:09.822359" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:10.138436" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:09.822025" elapsed="0.316506"/>
</kw>
<msg time="2026-04-19T02:46:10.138598" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.821672" elapsed="0.316992"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:09.820148" elapsed="0.318609"/>
</kw>
<msg time="2026-04-19T02:46:10.138831" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.819406" elapsed="0.319495"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:09.818122" elapsed="0.320903"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:10.139136" elapsed="0.000036"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:09.816625" elapsed="0.322658"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.142630" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T02:46:10.155826" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:10.156273" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T02:46:10.156486" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:10.156693" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:10.142298" elapsed="0.014587"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.161089" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:10.160446" elapsed="0.000840"/>
</kw>
<msg time="2026-04-19T02:46:10.161776" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:10.162240" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:10.159205" elapsed="0.003250"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.166553" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:10.164746" elapsed="0.002023"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.169757" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.169502" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.170307" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.170012" elapsed="0.000364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.170770" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.170532" elapsed="0.000282"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:10.169046" elapsed="0.001865"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:10.167161" elapsed="0.003795"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.167011" elapsed="0.004004"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:10.171396" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:10.171186" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.171137" elapsed="0.000385"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:10.171882" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T02:46:10.171675" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.171625" elapsed="0.000454"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:10.173063" elapsed="0.000058"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:10.140457" elapsed="0.032886"/>
</kw>
<msg time="2026-04-19T02:46:10.173585" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:10.173630" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:10.139472" elapsed="0.034182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:10.173814" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:10.174310" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:46:10.174199" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.174182" elapsed="0.000210"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:10.174537" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:09.815831" elapsed="0.358824"/>
</kw>
<msg time="2026-04-19T02:46:10.174755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.814986" elapsed="0.359819"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:09.813450" elapsed="0.361571"/>
</kw>
<msg time="2026-04-19T02:46:10.175117" 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-19T02:46:09.812971" elapsed="0.362192"/>
</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-19T02:46:10.178264" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:46:10.178741" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:10.179056" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:10.175454" elapsed="0.003753"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:09.811807" elapsed="0.367586"/>
</kw>
<msg time="2026-04-19T02:46:10.179487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:09.811359" elapsed="0.368177"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:09.810612" elapsed="0.369138"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:46:09.810454" elapsed="0.369386"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:09.069847" elapsed="1.110030"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:46:09.065812" elapsed="1.114157"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.189830" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:10.187576" elapsed="0.002283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T02:46:10.191586" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:10.191208" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.192125" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:10.191775" elapsed="0.000377"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:10.192198" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:10.192352" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:10.190819" elapsed="0.001558"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.194624" 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-19T02:46:10.194724" 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-19T02:46:10.194491" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:10.196959" level="INFO">${ip_address} = 10.30.171.9</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-19T02:46:10.196511" elapsed="0.000476"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:10.197056" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:46:10.197211" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:10.196189" elapsed="0.001047"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.201265" level="INFO">${odl_connection} = 519</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:10.200655" elapsed="0.000656"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.203612" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:10.203690" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:10.203347" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.203873" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.205083" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:10.517285" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:10.204746" elapsed="0.312623"/>
</kw>
<msg time="2026-04-19T02:46:10.517429" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.204389" elapsed="0.313103"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:10.202734" elapsed="0.314844"/>
</kw>
<msg time="2026-04-19T02:46:10.517678" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.202338" elapsed="0.315391"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:10.201759" elapsed="0.316101"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:10.517994" elapsed="0.000097"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:10.199611" elapsed="0.318649"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.520453" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:46:10.532940" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:10.533225" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:46:10.533329" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:10.533420" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:10.520258" elapsed="0.013213"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.535293" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:10.534676" elapsed="0.000717"/>
</kw>
<msg time="2026-04-19T02:46:10.535599" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:10.535696" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:10.533881" elapsed="0.001866"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.537187" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:10.536215" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.539794" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.539235" elapsed="0.000662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.540857" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.540327" elapsed="0.000581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.541308" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.541072" elapsed="0.000279"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:10.538250" elapsed="0.003154"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:10.537422" elapsed="0.004016"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.537377" elapsed="0.004086"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:10.541619" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:10.541519" elapsed="0.000144"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.541503" elapsed="0.000181"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:10.541827" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T02:46:10.541735" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.541720" elapsed="0.000189"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:10.542067" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:10.519654" elapsed="0.022574"/>
</kw>
<msg time="2026-04-19T02:46:10.542364" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:10.542471" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:10.518572" elapsed="0.023957"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:10.542775" elapsed="0.000495"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:10.543625" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T02:46:10.543401" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.543381" elapsed="0.000428"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:10.544008" elapsed="0.000069"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:10.197916" elapsed="0.346359"/>
</kw>
<msg time="2026-04-19T02:46:10.544333" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.197394" elapsed="0.346988"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:10.195619" elapsed="0.348887"/>
</kw>
<msg time="2026-04-19T02:46:10.544547" 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-19T02:46:10.194904" elapsed="0.349689"/>
</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-19T02:46:10.547609" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:46:10.548161" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:10.548465" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:10.544889" elapsed="0.003726"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:10.193860" elapsed="0.354812"/>
</kw>
<msg time="2026-04-19T02:46:10.548726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.193418" elapsed="0.355356"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:10.192714" elapsed="0.356144"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:10.192560" elapsed="0.356344"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.551070" 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-19T02:46:10.551170" 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-19T02:46:10.550923" elapsed="0.000273"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:10.553471" level="INFO">${ip_address} = 10.30.171.128</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-19T02:46:10.553011" elapsed="0.000487"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:10.553547" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:10.553697" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:10.552692" elapsed="0.001029"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.557481" level="INFO">${odl_connection} = 521</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:10.556882" elapsed="0.000643"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.559632" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:10.559715" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:10.559373" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.559892" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.561140" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:10.877277" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:10.560805" elapsed="0.316826"/>
</kw>
<msg time="2026-04-19T02:46:10.877789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.560451" elapsed="0.317490"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:10.558862" elapsed="0.319316"/>
</kw>
<msg time="2026-04-19T02:46:10.878290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.558476" elapsed="0.319922"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:10.557961" elapsed="0.320782"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:10.879093" elapsed="0.000192"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:10.555877" elapsed="0.323803"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.884755" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:46:10.897827" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:10.898124" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:46:10.898228" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:10.898318" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:10.884324" elapsed="0.014044"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.900217" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:10.899581" elapsed="0.000738"/>
</kw>
<msg time="2026-04-19T02:46:10.900526" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:10.900624" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:10.898781" elapsed="0.001894"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.902005" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:10.901074" elapsed="0.001017"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.904538" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.903920" elapsed="0.000720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.905274" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.904897" elapsed="0.000438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.905905" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:10.905555" elapsed="0.000414"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:10.903015" elapsed="0.003052"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:10.902268" elapsed="0.003853"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.902223" elapsed="0.003935"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:10.906385" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:10.906239" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.906214" elapsed="0.000267"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:10.906685" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T02:46:10.906556" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.906533" elapsed="0.000274"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:10.907018" elapsed="0.000052"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:10.882955" elapsed="0.024323"/>
</kw>
<msg time="2026-04-19T02:46:10.907483" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:10.907646" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:10.880484" elapsed="0.027250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:10.908155" elapsed="0.000705"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:10.909406" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-19T02:46:10.909075" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.909024" elapsed="0.000656"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:10.909951" elapsed="0.000067"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:10.554422" elapsed="0.355914"/>
</kw>
<msg time="2026-04-19T02:46:10.910478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.553876" elapsed="0.356677"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:10.552157" elapsed="0.358526"/>
</kw>
<msg time="2026-04-19T02:46:10.910743" 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-19T02:46:10.551349" elapsed="0.359461"/>
</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-19T02:46:10.915356" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T02:46:10.916107" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:10.916556" elapsed="0.000142"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:10.911267" elapsed="0.005505"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:10.550306" elapsed="0.366541"/>
</kw>
<msg time="2026-04-19T02:46:10.916902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.549847" elapsed="0.367104"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:10.549164" elapsed="0.367935"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:10.548994" elapsed="0.368153"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.919315" 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-19T02:46:10.919416" 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-19T02:46:10.919179" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:10.921781" level="INFO">${ip_address} = 10.30.171.206</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-19T02:46:10.921293" elapsed="0.000520"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:10.921864" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:46:10.922019" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:10.920825" elapsed="0.001239"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.925889" level="INFO">${odl_connection} = 523</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:10.925299" elapsed="0.000636"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:10.928092" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:10.928171" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:10.927805" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.928352" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:10.929527" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:11.250632" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:10.929207" elapsed="0.321515"/>
</kw>
<msg time="2026-04-19T02:46:11.250786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.928834" elapsed="0.322018"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:10.927320" elapsed="0.323622"/>
</kw>
<msg time="2026-04-19T02:46:11.250990" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.926900" elapsed="0.324158"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:10.926401" elapsed="0.324794"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:11.251331" elapsed="0.000079"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:10.924305" elapsed="0.327275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.253835" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T02:46:11.266682" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:11.266934" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T02:46:11.267067" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:11.267166" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.253640" elapsed="0.013577"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.269133" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:11.268471" elapsed="0.000766"/>
</kw>
<msg time="2026-04-19T02:46:11.269445" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:11.269542" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:11.267610" elapsed="0.001982"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.270916" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:11.269961" elapsed="0.001023"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.273549" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:11.272941" elapsed="0.000710"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.274591" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:11.274057" elapsed="0.000624"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.275633" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:11.275088" elapsed="0.000644"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:11.271993" elapsed="0.003858"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:11.271231" elapsed="0.004698"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:11.271182" elapsed="0.004803"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:11.276451" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:11.276218" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:11.276167" elapsed="0.000432"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:11.276899" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T02:46:11.276715" elapsed="0.000248"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:11.276682" elapsed="0.000310"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:11.277155" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:11.253077" elapsed="0.024239"/>
</kw>
<msg time="2026-04-19T02:46:11.277454" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:11.277565" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:11.251896" elapsed="0.025726"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:11.277913" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:11.278772" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:46:11.278542" elapsed="0.000390"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:11.278523" elapsed="0.000450"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:11.279178" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:10.922748" elapsed="0.356681"/>
</kw>
<msg time="2026-04-19T02:46:11.279488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.922222" elapsed="0.357318"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:10.920079" elapsed="0.359546"/>
</kw>
<msg time="2026-04-19T02:46:11.279667" 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-19T02:46:10.919595" elapsed="0.360117"/>
</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-19T02:46:11.282817" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T02:46:11.283337" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:11.283642" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:11.280008" elapsed="0.003784"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:10.918551" elapsed="0.365299"/>
</kw>
<msg time="2026-04-19T02:46:11.283905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:10.918110" elapsed="0.365844"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:10.917403" elapsed="0.366657"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:46:10.917245" elapsed="0.366884"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:10.192430" elapsed="1.091735"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:46:10.190224" elapsed="1.094004"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:10.189935" elapsed="1.094332"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:10.189917" elapsed="1.094376"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.285709" 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-19T02:46:11.285812" 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-19T02:46:11.285561" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T02:46:11.288158" elapsed="0.000488"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.289687" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:11.289293" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.290225" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:11.289879" elapsed="0.000448"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:11.290377" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:46:11.290540" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:11.288878" elapsed="0.001688"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:11.291566" level="INFO">${ip_address} = 10.30.171.9</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-19T02:46:11.291294" elapsed="0.000299"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:11.291643" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:11.291795" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:11.290942" elapsed="0.000881"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.293496" level="INFO">${odl_connection} = 525</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:11.293115" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:11.296091" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:11.296368" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:11.295505" elapsed="0.000962"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:11.296763" elapsed="0.000659"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.298711" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:11.650274" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:11.298393" elapsed="0.351981"/>
</kw>
<msg time="2026-04-19T02:46:11.650483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:11.297731" elapsed="0.352845"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:11.294525" elapsed="0.356194"/>
</kw>
<msg time="2026-04-19T02:46:11.650807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:11.294111" elapsed="0.356747"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:11.293702" elapsed="0.357234"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:11.650983" elapsed="0.000034"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:11.292711" elapsed="0.358442"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.652947" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:46:11.665317" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.652561" elapsed="0.013000"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:46:11.652418" elapsed="0.013226"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.667090" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:46:11.773902" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.666197" elapsed="0.107996"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:46:11.665840" elapsed="0.108436"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.775675" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:46:11.829895" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.774781" elapsed="0.055409"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:46:11.774468" elapsed="0.055906"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.831983" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:46:11.878080" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.830980" elapsed="0.047344"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:46:11.830647" elapsed="0.047761"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.879818" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:46:11.925773" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.878916" elapsed="0.047101"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:46:11.878602" elapsed="0.047543"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.927564" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:46:11.973778" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.926653" elapsed="0.047517"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:46:11.926342" elapsed="0.047949"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:11.976107" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:46:12.021422" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:11.975107" elapsed="0.046560"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:46:11.974590" elapsed="0.047167"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.023228" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:46:12.069914" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.022322" elapsed="0.047890"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:46:12.021957" elapsed="0.048346"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:46:11.652278" elapsed="0.418098"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:46:11.651933" elapsed="0.418598"/>
</kw>
<msg time="2026-04-19T02:46:12.070776" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:12.070883" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:11.651343" elapsed="0.419594"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:12.071386" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:12.072500" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T02:46:12.072121" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:12.072063" elapsed="0.000662"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:12.073116" elapsed="0.000054"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:11.292143" elapsed="0.781267"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T02:46:11.290768" elapsed="0.782747"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:12.075775" level="INFO">${ip_address} = 10.30.171.128</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-19T02:46:12.075096" elapsed="0.000758"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:12.075995" elapsed="0.000111"/>
</return>
<msg time="2026-04-19T02:46:12.076433" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:12.074234" elapsed="0.002258"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.080541" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:12.079491" elapsed="0.001113"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:12.085544" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:12.085809" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:12.084954" elapsed="0.000956"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:12.086264" elapsed="0.000631"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.088226" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:12.405522" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:12.087866" elapsed="0.318049"/>
</kw>
<msg time="2026-04-19T02:46:12.406190" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:12.087219" elapsed="0.319172"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:12.081760" elapsed="0.324950"/>
</kw>
<msg time="2026-04-19T02:46:12.406901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:12.081310" elapsed="0.325700"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:12.080898" elapsed="0.326312"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:12.407315" elapsed="0.000082"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:12.078555" elapsed="0.329092"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.410988" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:46:12.423910" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.410407" elapsed="0.013683"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:46:12.410189" elapsed="0.013955"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.425230" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:46:12.535606" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.424510" elapsed="0.111346"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:46:12.424308" elapsed="0.111634"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.537520" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:46:12.586565" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.536568" elapsed="0.050239"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:46:12.536193" elapsed="0.050710"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.588450" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:46:12.634484" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.587532" elapsed="0.047197"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:46:12.587208" elapsed="0.047604"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.636252" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:46:12.682560" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.635370" elapsed="0.047500"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:46:12.635006" elapsed="0.047981"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.684606" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:46:12.730592" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.683614" elapsed="0.047222"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:46:12.683264" elapsed="0.047654"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.732559" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:46:12.778783" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.731479" elapsed="0.047586"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:46:12.731160" elapsed="0.047995"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.780620" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:46:12.859155" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:12.779666" elapsed="0.079710"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:46:12.779353" elapsed="0.080095"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:46:12.409940" elapsed="0.449558"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:46:12.409387" elapsed="0.450213"/>
</kw>
<msg time="2026-04-19T02:46:12.859804" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:12.859878" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:12.408162" elapsed="0.451749"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:12.860239" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:12.861185" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T02:46:12.860806" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:12.860765" elapsed="0.000750"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:12.861887" elapsed="0.000054"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:12.077162" elapsed="0.785058"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T02:46:12.073736" elapsed="0.788591"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:12.864708" level="INFO">${ip_address} = 10.30.171.206</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-19T02:46:12.863871" elapsed="0.000903"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:12.864893" elapsed="0.000067"/>
</return>
<msg time="2026-04-19T02:46:12.865299" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:12.863012" elapsed="0.002346"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.869302" level="INFO">${odl_connection} = 527</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:12.868345" elapsed="0.001020"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:12.874004" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:12.874284" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:12.873462" elapsed="0.000924"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:12.874682" elapsed="0.000633"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:12.876621" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:13.194013" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:12.876283" elapsed="0.317839"/>
</kw>
<msg time="2026-04-19T02:46:13.194222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:12.875620" elapsed="0.318693"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:12.872013" elapsed="0.322440"/>
</kw>
<msg time="2026-04-19T02:46:13.194539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:12.870742" elapsed="0.323848"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:12.869792" elapsed="0.324876"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:13.194711" elapsed="0.000033"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:12.867429" elapsed="0.327425"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.196676" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T02:46:13.209532" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.196268" elapsed="0.013507"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T02:46:13.196123" elapsed="0.013738"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.211321" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T02:46:13.257704" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.210422" elapsed="0.047528"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T02:46:13.210104" elapsed="0.047962"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.259468" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T02:46:13.305340" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.258578" elapsed="0.047010"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T02:46:13.258268" elapsed="0.047404"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.307245" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T02:46:13.353857" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.306345" elapsed="0.047797"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T02:46:13.305978" elapsed="0.048248"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.355718" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T02:46:13.401656" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.354739" elapsed="0.047177"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T02:46:13.354425" elapsed="0.047580"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.403489" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T02:46:13.457897" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.402568" elapsed="0.055645"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T02:46:13.402253" elapsed="0.056057"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.459819" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T02:46:13.505785" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.458892" elapsed="0.047185"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T02:46:13.458538" elapsed="0.047629"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.507648" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T02:46:13.557783" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.506713" elapsed="0.051371"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T02:46:13.506370" elapsed="0.051810"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T02:46:13.195965" elapsed="0.362285"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T02:46:13.195659" elapsed="0.362738"/>
</kw>
<msg time="2026-04-19T02:46:13.558663" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:13.558767" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:13.195067" elapsed="0.363757"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:13.559264" elapsed="0.000517"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:13.560298" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T02:46:13.559957" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:13.559906" elapsed="0.000670"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:13.560963" elapsed="0.000054"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:12.865989" elapsed="0.695308"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T02:46:12.862559" elapsed="0.698837"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:11.290620" elapsed="2.270848"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T02:46:11.287613" elapsed="2.273993"/>
</kw>
<msg time="2026-04-19T02:46:13.561709" 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-19T02:46:11.285994" elapsed="2.275833"/>
</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-19T02:46:13.567583" elapsed="0.000541"/>
</kw>
<kw name="Open 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-19T02:46:13.568362" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:13.568833" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:13.562746" elapsed="0.006327"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T02:46:11.285004" elapsed="2.284156"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T02:46:11.284469" elapsed="2.284784"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T02:46:13.571886" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:13.571327" elapsed="0.000598"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.572641" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:13.572175" elapsed="0.000503"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:13.572746" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:46:13.572979" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:13.570750" elapsed="0.002266"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.576741" 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-19T02:46:13.576898" 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-19T02:46:13.576543" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:13.578924" level="INFO">${ip_address} = 10.30.171.9</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-19T02:46:13.578471" elapsed="0.000486"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:13.579007" elapsed="0.000053"/>
</return>
<msg time="2026-04-19T02:46:13.579186" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:13.578146" elapsed="0.001065"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.583090" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:13.582454" elapsed="0.000689"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.585364" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:13.585444" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:13.585065" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.585631" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.587003" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:13.901845" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:13.586650" elapsed="0.315356"/>
</kw>
<msg time="2026-04-19T02:46:13.902118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.586152" elapsed="0.316064"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:13.584558" elapsed="0.317780"/>
</kw>
<msg time="2026-04-19T02:46:13.902391" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.584143" elapsed="0.318298"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:13.583602" elapsed="0.319003"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:13.902762" elapsed="0.000097"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:13.581449" elapsed="0.321636"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.905638" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:46:13.918406" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:13.918655" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:46:13.918756" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:13.918846" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:13.905431" elapsed="0.013466"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.920789" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:13.920131" elapsed="0.000760"/>
</kw>
<msg time="2026-04-19T02:46:13.921129" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:13.921228" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:13.919333" elapsed="0.001945"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.922633" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:13.921655" elapsed="0.001036"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.925086" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:13.924627" elapsed="0.000527"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.925692" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:13.925364" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.926305" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:13.925956" elapsed="0.000408"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:13.923665" elapsed="0.002771"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:13.922875" elapsed="0.003610"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:13.922827" elapsed="0.003694"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:13.926738" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:13.926598" elapsed="0.000201"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:13.926575" elapsed="0.000254"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:13.927022" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T02:46:13.926900" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:13.926879" elapsed="0.000279"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:13.927361" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:13.904800" elapsed="0.022782"/>
</kw>
<msg time="2026-04-19T02:46:13.927774" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:13.927927" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:13.903464" elapsed="0.024543"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:13.928385" elapsed="0.000699"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:13.929583" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T02:46:13.929268" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:13.929241" elapsed="0.000614"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:13.930133" elapsed="0.000066"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:13.579908" elapsed="0.350567"/>
</kw>
<msg time="2026-04-19T02:46:13.930559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.579369" elapsed="0.351257"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:13.577597" elapsed="0.353150"/>
</kw>
<msg time="2026-04-19T02:46:13.930804" 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-19T02:46:13.577127" elapsed="0.353739"/>
</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-19T02:46:13.935462" elapsed="0.000487"/>
</kw>
<kw name="Open 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-19T02:46:13.936201" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:13.936670" elapsed="0.000137"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:13.931300" elapsed="0.005593"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:13.575598" elapsed="0.361367"/>
</kw>
<msg time="2026-04-19T02:46:13.937109" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.574861" elapsed="0.362303"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:13.573513" elapsed="0.363740"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:13.573299" elapsed="0.364002"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.939473" 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-19T02:46:13.939572" 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-19T02:46:13.939338" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:13.941551" level="INFO">${ip_address} = 10.30.171.128</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-19T02:46:13.941104" elapsed="0.000473"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:13.941626" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:13.941776" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:13.940759" elapsed="0.001041"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.945629" level="INFO">${odl_connection} = 531</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:13.945025" elapsed="0.000648"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:13.947950" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:13.948133" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:13.947531" elapsed="0.000632"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.948327" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:13.949606" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:14.266281" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:13.949282" elapsed="0.317186"/>
</kw>
<msg time="2026-04-19T02:46:14.266578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.948839" elapsed="0.317853"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:13.947020" elapsed="0.319823"/>
</kw>
<msg time="2026-04-19T02:46:14.267018" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.946630" elapsed="0.320478"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:13.946129" elapsed="0.321192"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:14.267524" elapsed="0.000113"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:13.944021" elapsed="0.323870"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.270647" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:46:14.283445" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:14.283697" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:46:14.283797" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:14.283887" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:14.270445" elapsed="0.013494"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.285822" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:14.285220" elapsed="0.000703"/>
</kw>
<msg time="2026-04-19T02:46:14.286163" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:14.286265" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:14.284366" elapsed="0.001949"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.287673" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:14.286687" elapsed="0.001044"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.289712" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:14.289368" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.290336" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:14.289985" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.290953" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:14.290596" elapsed="0.000473"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:14.288742" elapsed="0.002414"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:14.287911" elapsed="0.003296"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.287866" elapsed="0.003376"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:14.291463" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:14.291319" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.291296" elapsed="0.000257"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:14.291746" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T02:46:14.291624" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.291603" elapsed="0.000257"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:14.292082" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:14.269839" elapsed="0.022468"/>
</kw>
<msg time="2026-04-19T02:46:14.292514" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:14.292671" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:14.268397" elapsed="0.024357"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:14.293129" elapsed="0.000712"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:14.294361" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T02:46:14.294026" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.293998" elapsed="0.000620"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:14.294901" elapsed="0.000077"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:13.942504" elapsed="0.352778"/>
</kw>
<msg time="2026-04-19T02:46:14.295368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.941956" elapsed="0.353482"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:13.940230" elapsed="0.355383"/>
</kw>
<msg time="2026-04-19T02:46:14.295671" 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-19T02:46:13.939753" elapsed="0.355981"/>
</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-19T02:46:14.300301" 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-19T02:46:14.300964" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:14.301288" 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-19T02:46:14.296168" elapsed="0.005267"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:13.938712" elapsed="0.362782"/>
</kw>
<msg time="2026-04-19T02:46:14.301549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:13.938267" elapsed="0.363330"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:13.937557" elapsed="0.364124"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:13.937400" elapsed="0.364328"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.304044" 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-19T02:46:14.304149" 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-19T02:46:14.303890" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:14.306236" level="INFO">${ip_address} = 10.30.171.206</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-19T02:46:14.305749" elapsed="0.000516"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:46:14.306316" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:46:14.306468" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:14.305426" elapsed="0.001068"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.310401" level="INFO">${odl_connection} = 533</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:14.309786" elapsed="0.000680"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.312881" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:14.312961" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:14.312433" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.313184" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.314416" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:14.665862" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:14.314087" elapsed="0.352034"/>
</kw>
<msg time="2026-04-19T02:46:14.666205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.313691" elapsed="0.352605"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:14.311932" elapsed="0.354526"/>
</kw>
<msg time="2026-04-19T02:46:14.666512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.311533" elapsed="0.355029"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T02:46:14.310984" elapsed="0.355736"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T02:46:14.666872" elapsed="0.000088"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T02:46:14.308775" elapsed="0.358403"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.669561" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T02:46:14.682488" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:14.682650" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T02:46:14.682714" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T02:46:14.682771" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:46:14.669360" elapsed="0.013443"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.684623" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T02:46:14.683966" elapsed="0.000764"/>
</kw>
<msg time="2026-04-19T02:46:14.684941" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T02:46:14.685074" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:14.683200" elapsed="0.001930"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.686492" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:14.685510" elapsed="0.001039"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.689066" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:14.688436" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.690064" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:14.689511" elapsed="0.000647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.691018" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:14.690491" elapsed="0.000655"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T02:46:14.687517" elapsed="0.003744"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:14.686734" elapsed="0.004606"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.686686" elapsed="0.004711"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T02:46:14.691745" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:14.691522" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.691484" elapsed="0.000407"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:14.692240" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:46:14.692008" elapsed="0.000366"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.691974" elapsed="0.000455"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:14.692799" elapsed="0.000114"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T02:46:14.668759" elapsed="0.024317"/>
</kw>
<msg time="2026-04-19T02:46:14.693217" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:46:14.693325" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:46:14.667546" elapsed="0.025836"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:14.693632" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T02:46:14.694493" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T02:46:14.694266" elapsed="0.000375"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.694247" elapsed="0.000433"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:14.695089" elapsed="0.000062"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T02:46:14.307196" elapsed="0.388157"/>
</kw>
<msg time="2026-04-19T02:46:14.695452" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.306650" elapsed="0.388855"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T02:46:14.304886" elapsed="0.390707"/>
</kw>
<msg time="2026-04-19T02:46:14.695635" 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-19T02:46:14.304331" elapsed="0.391350"/>
</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-19T02:46:14.698957" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:14.699453" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:14.699757" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:14.695978" elapsed="0.003932"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T02:46:14.303273" elapsed="0.396696"/>
</kw>
<msg time="2026-04-19T02:46:14.700026" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.302784" elapsed="0.397307"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T02:46:14.301981" elapsed="0.398202"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:46:14.301825" elapsed="0.398415"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:13.573116" elapsed="1.127160"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T02:46:13.569862" elapsed="1.130475"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:13.569360" elapsed="1.131015"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:13.569335" elapsed="1.131066"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T02:46:10.183403" elapsed="4.517047"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T02:46:04.977589" elapsed="9.722997"/>
</test>
<test id="s1-s15-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.714022" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:14.713635" elapsed="0.000429"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.714595" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:14.714233" elapsed="0.000388"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T02:46:14.715177" level="INFO">${epoch} = 1776566774.715096</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T02:46:14.714785" elapsed="0.000419"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.715775" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:14.715374" elapsed="0.000428"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.716388" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T02:46:14.715969" elapsed="0.000452"/>
</kw>
<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-19T02:46:14.718087" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:14.717688" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.718661" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:14.718302" elapsed="0.000394"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:14.718754" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:46:14.718981" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:14.717314" elapsed="0.001702"/>
</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-19T02:46:14.720299" level="INFO">${member_ip} = 10.30.171.9</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-19T02:46:14.719940" elapsed="0.000391"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.721244" 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-19T02:46:14.721354" 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-19T02:46:14.721084" elapsed="0.000297"/>
</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-19T02:46:14.724058" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:14.723748" elapsed="0.000370"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:14.723728" elapsed="0.000414"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.724642" 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-19T02:46:14.724750" 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-19T02:46:14.724294" elapsed="0.000483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.725440" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:14.724934" elapsed="0.000555"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.726095" level="INFO">${conn_id} = 535</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:14.725649" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:14.727431" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:14.727557" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:14.726779" elapsed="0.000804"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.728009" elapsed="0.000731"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:14.730879" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:15.086890" 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 Sun Apr 19 02:46:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:46:14.730313" elapsed="0.356983"/>
</kw>
<msg time="2026-04-19T02:46:15.087546" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.728979" elapsed="0.358899"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:14.726343" elapsed="0.362014"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.089229" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log'.</msg>
<msg time="2026-04-19T02:46:15.111831" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:15.112116" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:15.112217" 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-19T02:46:15.088848" elapsed="0.023421"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.112657" elapsed="0.000472"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.114216" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.113533" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.114761" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:15.114477" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.114429" elapsed="0.000486"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:15.115296" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T02:46:15.115061" elapsed="0.000369"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.114999" elapsed="0.000484"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.115558" 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-19T02:46:15.131703" elapsed="0.000531"/>
</kw>
<kw name="Open 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-19T02:46:15.132402" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.132726" 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-19T02:46:15.116268" elapsed="0.016609"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:46:14.723217" elapsed="0.409754"/>
</kw>
<msg time="2026-04-19T02:46:15.133026" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:14.722603" elapsed="0.410516"/>
</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-19T02:46:14.722076" elapsed="0.411124"/>
</kw>
<msg time="2026-04-19T02:46:15.133241" 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-19T02:46:14.721542" elapsed="0.411744"/>
</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-19T02:46:15.136267" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:46:15.136753" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.137284" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:15.133577" elapsed="0.003859"/>
</kw>
<msg time="2026-04-19T02:46:15.137527" 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-19T02:46:14.720610" elapsed="0.416943"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.137979" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.137733" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:46:15.138079" 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-19T02:46:14.719491" elapsed="0.418713"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:14.719298" elapsed="0.418943"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:15.139214" level="INFO">${member_ip} = 10.30.171.128</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-19T02:46:15.138927" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.139992" 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-19T02:46:15.140152" 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-19T02:46:15.139861" elapsed="0.000318"/>
</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-19T02:46:15.142956" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:15.142685" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.142667" elapsed="0.000385"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.143329" 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-19T02:46:15.143429" 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-19T02:46:15.143201" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.144089" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.143607" elapsed="0.000531"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.144730" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:15.144296" elapsed="0.000461"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.145945" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:15.146084" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:15.145427" elapsed="0.000683"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:15.146300" elapsed="0.000828"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.149233" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:15.459602" 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 Sun Apr 19 02:46:06 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:46:15.148619" elapsed="0.311154"/>
</kw>
<msg time="2026-04-19T02:46:15.459890" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:15.147355" elapsed="0.312709"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:15.144971" elapsed="0.315249"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.460651" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log'.</msg>
<msg time="2026-04-19T02:46:15.483206" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:15.483442" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:15.483538" 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-19T02:46:15.460419" elapsed="0.023169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.483949" elapsed="0.000474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.485520" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.484840" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.486088" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:15.485774" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.485728" elapsed="0.000516"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:15.486598" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T02:46:15.486364" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.486331" elapsed="0.000449"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.486944" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:15.504146" elapsed="0.000506"/>
</kw>
<kw name="Open 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-19T02:46:15.504830" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.505149" 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-19T02:46:15.487663" elapsed="0.017640"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:46:15.142154" elapsed="0.363241"/>
</kw>
<msg time="2026-04-19T02:46:15.505448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:15.141555" elapsed="0.363945"/>
</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-19T02:46:15.140870" elapsed="0.364849"/>
</kw>
<msg time="2026-04-19T02:46:15.505764" 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-19T02:46:15.140336" elapsed="0.365476"/>
</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-19T02:46:15.508961" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:46:15.509450" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.509741" 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-19T02:46:15.506121" elapsed="0.003766"/>
</kw>
<msg time="2026-04-19T02:46:15.509976" 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-19T02:46:15.139456" elapsed="0.370545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.510438" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.510193" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:46:15.510521" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:46:15.138519" elapsed="0.372123"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:15.138336" elapsed="0.372343"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:15.511838" level="INFO">${member_ip} = 10.30.171.206</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-19T02:46:15.511571" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.512628" 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-19T02:46:15.512739" 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-19T02:46:15.512494" elapsed="0.000272"/>
</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-19T02:46:15.517204" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:15.516915" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.516896" elapsed="0.000390"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.517560" 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-19T02:46:15.517661" 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-19T02:46:15.517432" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.518368" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.517837" elapsed="0.000619"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.519064" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:46:15.518625" elapsed="0.000467"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.520328" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:46:15.520452" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:46:15.519738" elapsed="0.000739"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:15.520663" elapsed="0.000687"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.523415" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:46:15.842148" 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 Sun Apr 19 02:45:16 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:46:15.522844" elapsed="0.319468"/>
</kw>
<msg time="2026-04-19T02:46:15.842424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:15.521576" elapsed="0.321001"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:46:15.519307" elapsed="0.323424"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:46:15.843174" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776566774.715096.log'.</msg>
<msg time="2026-04-19T02:46:15.865986" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:46:15.866275" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:46:15.866373" 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-19T02:46:15.842932" elapsed="0.023495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.866849" elapsed="0.000490"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.868445" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.867746" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.869024" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:15.868709" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.868659" elapsed="0.000569"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:46:15.869581" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T02:46:15.869346" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:15.869312" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.869846" 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-19T02:46:15.885022" elapsed="0.000758"/>
</kw>
<kw name="Open 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-19T02:46:15.885945" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.886276" 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-19T02:46:15.870568" elapsed="0.015860"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:46:15.516353" elapsed="0.370167"/>
</kw>
<msg time="2026-04-19T02:46:15.886575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:15.515754" elapsed="0.370874"/>
</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-19T02:46:15.515214" elapsed="0.371492"/>
</kw>
<msg time="2026-04-19T02:46:15.886811" 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-19T02:46:15.512920" elapsed="0.373941"/>
</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-19T02:46:15.889846" elapsed="0.000644"/>
</kw>
<kw name="Open 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-19T02:46:15.890653" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:46:15.890951" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:46:15.887170" elapsed="0.003945"/>
</kw>
<msg time="2026-04-19T02:46:15.891206" 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-19T02:46:15.512092" elapsed="0.379139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.891654" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.891409" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:46:15.891738" 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-19T02:46:15.510946" elapsed="0.380916"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:46:15.510768" elapsed="0.381131"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:46:14.719117" elapsed="1.172817"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:46:14.716742" elapsed="1.175249"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.903920" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:15.903536" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.904432" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:15.904127" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:15.904503" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:15.904656" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:15.903163" elapsed="0.001518"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.906224" 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-19T02:46:15.905906" elapsed="0.000344"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:46:15.906295" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:15.906441" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:15.905564" elapsed="0.000901"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.914266" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.914001" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:15.914709" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:15.914464" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:46:15.920388" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:46:15.916969" elapsed="0.007263">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:15.914819" elapsed="0.009610">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.924901" elapsed="0.000124"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:15.924505" elapsed="0.000657"/>
</branch>
<status status="FAIL" start="2026-04-19T02:46:15.914801" elapsed="0.010415">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.926300" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.926499" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:15.926445" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:15.926419" elapsed="0.000170"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.926794" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.926895" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:46:15.909561" elapsed="0.017542">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.927213" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:46:15.906674" elapsed="0.020681">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.927668" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.927851" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:15.927800" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:15.927776" elapsed="0.000163"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.928240" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.928555" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:46:15.928650" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:46:15.905190" elapsed="0.023629">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:46:15.928996" elapsed="0.000024"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:46:15.928939" elapsed="0.000137"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:15.928912" elapsed="0.000194"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.929311" elapsed="0.000030"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:46:15.904940" elapsed="0.024472">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:46:15.904747" elapsed="0.024749">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:46:15.902745" elapsed="0.026885">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:15.902430" elapsed="0.027287">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T02:46:15.902411" elapsed="0.027394">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:46:15.930220" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:15.929906" elapsed="0.000393"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:15.929883" elapsed="0.000448"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:46:15.930702" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:15.930407" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:15.930386" elapsed="0.000426"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:46:15.901996" elapsed="0.028928">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:25.951162" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:25.950535" elapsed="0.000670"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:25.951746" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:25.951433" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:25.951823" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:46:25.951990" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:25.949877" elapsed="0.002138"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:25.953557" 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-19T02:46:25.953253" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:46:25.953632" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:25.953780" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:25.952887" elapsed="0.000918"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:25.961425" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:25.961164" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:25.961873" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:25.961630" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:46:26.047023" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:46:26.047250" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:46:26.047558" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:46:25.964128" elapsed="0.084259">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:25.961985" elapsed="0.086840">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.049301" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:26.048903" elapsed="0.000550"/>
</branch>
<status status="FAIL" start="2026-04-19T02:46:25.961966" elapsed="0.087540">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.050771" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:26.051115" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:26.050998" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:26.050958" elapsed="0.000304"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.051588" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:46:26.051748" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:46:25.956545" elapsed="0.095444">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:26.052198" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:46:25.954015" elapsed="0.098409">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.052912" elapsed="0.000054"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:46:26.053232" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:26.053152" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:26.053113" elapsed="0.000259"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.053805" elapsed="0.000052"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.054769" elapsed="0.000065"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:46:26.054953" elapsed="0.000035"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:46:25.952499" elapsed="0.102750">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:46:26.055422" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:46:26.055368" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:26.055344" elapsed="0.000161"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.055714" elapsed="0.000029"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:46:25.952273" elapsed="0.103540">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:46:25.952088" elapsed="0.103806">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:46:25.949278" elapsed="0.106748">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:25.948791" elapsed="0.107339">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:46:25.948758" elapsed="0.107415">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:46:26.056541" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:26.056264" elapsed="0.000352"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:26.056241" elapsed="0.000407"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:46:26.057099" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:26.056777" elapsed="0.000402"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:26.056700" elapsed="0.000512"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:46:25.948111" elapsed="0.109212">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:36.076118" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:36.075633" elapsed="0.000518"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:36.076648" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:36.076333" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:36.076724" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:46:36.076895" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:36.075166" elapsed="0.001755"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:36.078481" 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-19T02:46:36.078177" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:46:36.078556" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:46:36.078706" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:36.077805" elapsed="0.000927"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:36.086457" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:36.086198" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:36.086905" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:36.086660" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:46:36.093694" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:46:36.093769" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T02:46:36.093899" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:46:36.089170" elapsed="0.005128">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:36.087016" elapsed="0.007367">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.094572" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:36.094417" elapsed="0.000221"/>
</branch>
<status status="FAIL" start="2026-04-19T02:46:36.086998" elapsed="0.007664">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.095330" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:36.095470" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:36.095432" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:36.095414" elapsed="0.000119"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.095691" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:46:36.095762" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:46:36.081574" elapsed="0.014298">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:36.095943" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:46:36.078946" elapsed="0.017111">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.096286" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:46:36.096415" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:36.096378" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:36.096361" elapsed="0.000116"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.096678" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.096898" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:46:36.096966" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:46:36.077420" elapsed="0.019661">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:46:36.097197" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:46:36.097161" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:36.097144" elapsed="0.000114"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.097400" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T02:46:36.077181" elapsed="0.020289">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:46:36.076978" elapsed="0.020550">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:46:36.074492" elapsed="0.023130">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:36.074146" elapsed="0.023533">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T02:46:36.074121" elapsed="0.023588">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:46:36.097971" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:36.097774" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:36.097757" elapsed="0.000306"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:46:36.098326" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:36.098118" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:46:36.098102" elapsed="0.000304"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:46:36.073609" elapsed="0.024874">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.118132" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:46:46.117508" elapsed="0.000657"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.118646" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:46:46.118335" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:46:46.118722" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:46:46.118890" level="INFO">${index_list} = [1, 2, 3]</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-19T02:46:46.116893" elapsed="0.002022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.120460" 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-19T02:46:46.120153" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:46:46.120535" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:46.120684" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:46.119791" elapsed="0.000919"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.128356" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.128095" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.128801" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.128558" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:46:46.390960" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:46:46.391207" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:46:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:46:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566806,"status":200} 
 </msg>
<msg time="2026-04-19T02:46:46.391500" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:46:46.131048" elapsed="0.260515"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.128912" elapsed="0.262763"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.392201" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.391742" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.128893" elapsed="0.263509"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.401512" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566806,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.395283" elapsed="0.006444"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.394681" elapsed="0.007285"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.394637" elapsed="0.007364"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.405025" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.402318" elapsed="0.002828"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.402075" elapsed="0.003182"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.402057" elapsed="0.003227"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.406017" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.405466" elapsed="0.000596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.406479" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.406213" elapsed="0.000439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.407438" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.406847" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.406679" elapsed="0.000993"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.406193" elapsed="0.001503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.408408" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.407858" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.408764" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.408507" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.409735" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.409176" elapsed="0.000638"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.408966" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.408489" elapsed="0.001496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:46.410158" elapsed="0.000657"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:46:46.411812" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.410983" elapsed="0.000857"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.411998" elapsed="0.003226"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:46:46.393638" elapsed="0.021652"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:46.415473" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:46.415360" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.415341" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:46:46.418557" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:46:46.415685" elapsed="0.002900"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:46:46.418638" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:46:46.418801" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:46:46.123453" elapsed="0.295374"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:46:46.418884" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:46:46.419045" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:46:46.120921" elapsed="0.298152"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.419893" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.419640" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.420936" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.420534" elapsed="0.000431"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:46:46.421016" elapsed="0.000107"/>
</return>
<msg time="2026-04-19T02:46:46.421260" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:46:46.420188" elapsed="0.001132"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.421708" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.421482" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.422172" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.421892" elapsed="0.000307"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:46:46.422247" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:46.422398" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:46:46.419289" elapsed="0.003134"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:46:46.422599" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:46.422491" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.422474" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.430179" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.429910" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.430626" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.430384" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:46:46.440126" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:46:46.440256" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:46:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:46:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566806,"status":200} 
 </msg>
<msg time="2026-04-19T02:46:46.440421" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:46:46.433007" elapsed="0.007450"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.430737" elapsed="0.009780"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.440762" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.440552" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.430719" elapsed="0.010160"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.446304" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566806,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.442542" elapsed="0.003893"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.442203" elapsed="0.004382"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.442176" elapsed="0.004447"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.451136" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.447060" elapsed="0.004204"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.446701" elapsed="0.004712"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.446678" elapsed="0.004773"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.452444" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.451680" elapsed="0.000801"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.452936" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.452577" elapsed="0.000704"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.454327" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.453551" elapsed="0.000854"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.453320" elapsed="0.001232"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.452552" elapsed="0.002024"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.455272" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.454737" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.455624" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.455368" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.456600" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.455988" elapsed="0.000692"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.455826" elapsed="0.001001"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.455350" elapsed="0.001501"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:46.457007" elapsed="0.000695"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:46:46.458670" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.457868" elapsed="0.000828"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.458851" elapsed="0.003086"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:46:46.441598" elapsed="0.020404"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:46.462195" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:46.462087" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.462068" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:46:46.465272" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:46:46.462407" elapsed="0.002894"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:46:46.465354" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:46:46.465514" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:46:46.425425" elapsed="0.040115"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:46:46.465597" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:46:46.465743" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:46:46.422866" elapsed="0.042903"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.466597" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.466346" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.467615" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.467221" elapsed="0.000421"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:46:46.467690" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:46.467849" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:46:46.466856" elapsed="0.001019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.468280" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.468055" elapsed="0.000286"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.468715" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.468499" elapsed="0.000242"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:46:46.468788" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:46:46.468938" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:46:46.465978" elapsed="0.002985"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:46:46.469009" elapsed="0.000073"/>
</return>
<msg time="2026-04-19T02:46:46.469218" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:46:46.119414" elapsed="0.349829"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:46:46.469421" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T02:46:46.469311" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.469294" elapsed="0.000210"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.469652" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:46:46.119183" elapsed="0.350525"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.471305" level="INFO">${session} = ClusterManagement__session_2</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-19T02:46:46.470989" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:46:46.471378" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:46.471525" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:46.470646" elapsed="0.000904"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.479060" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.478799" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.479500" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.479260" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:46:46.789592" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:46:46.789803" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:46:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:46:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566806,"status":200} 
 </msg>
<msg time="2026-04-19T02:46:46.790181" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:46:46.481743" elapsed="0.308505"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.479613" elapsed="0.310746"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.790835" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.790427" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.479595" elapsed="0.311499"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.799983" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566806,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.794107" elapsed="0.006034"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.793544" elapsed="0.006755"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.793498" elapsed="0.006839"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.804590" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.800761" elapsed="0.003958"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.800419" elapsed="0.004510"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.800395" elapsed="0.004576"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.806018" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.805262" elapsed="0.000814"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.806413" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.806149" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.807392" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.806777" elapsed="0.000694"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.806611" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.806131" elapsed="0.001511"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.808352" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.807805" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.808743" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.808454" elapsed="0.000462"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.809706" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.809121" elapsed="0.000665"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.808942" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.808434" elapsed="0.001521"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:46.810143" elapsed="0.000662"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:46:46.811811" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.810971" elapsed="0.000868"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.811996" elapsed="0.003016"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:46:46.792321" elapsed="0.022858"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:46.815361" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:46.815249" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.815231" elapsed="0.000197"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:46:46.818326" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:46:46.815574" elapsed="0.002782"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:46:46.818409" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:46:46.818570" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:46:46.474353" elapsed="0.344244"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:46:46.818655" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:46:46.818801" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:46:46.471760" elapsed="0.347067"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.819742" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.819489" elapsed="0.000304"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.820796" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.820393" elapsed="0.000466"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:46:46.820911" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:46.821090" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:46:46.820004" elapsed="0.001113"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.821534" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.821307" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.821928" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.821717" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:46:46.822001" elapsed="0.000057"/>
</return>
<msg time="2026-04-19T02:46:46.822188" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:46:46.819130" elapsed="0.003083"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:46:46.822389" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:46.822281" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.822264" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.830234" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.829962" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.830674" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.830433" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:46:46.840452" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:46:46.840557" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:46:46 GMT', 'Expires': 'Sun, 19 Apr 2026 01:46:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566806,"status":200} 
 </msg>
<msg time="2026-04-19T02:46:46.840712" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:46:46.832915" elapsed="0.007833"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.830783" elapsed="0.010026"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.841089" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.840845" elapsed="0.000351"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.830765" elapsed="0.010461"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.846701" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566806,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.842887" elapsed="0.003947"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.842548" elapsed="0.004433"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.842522" elapsed="0.004498"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.851298" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.847500" elapsed="0.003927"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.847144" elapsed="0.004434"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.847120" elapsed="0.004497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.852600" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.851846" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.853202" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.852737" elapsed="0.000718"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.854436" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.853721" elapsed="0.000796"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.853492" elapsed="0.001173"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.852712" elapsed="0.001977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.855405" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.854851" elapsed="0.000582"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.855763" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:46:46.855504" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.856711" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:46:46.856141" elapsed="0.000653"/>
</kw>
<status status="PASS" start="2026-04-19T02:46:46.855962" elapsed="0.000980"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.855486" elapsed="0.001481"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:46:46.857136" elapsed="0.000675"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:46:46.858896" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.857981" elapsed="0.000943"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.859159" elapsed="0.003151"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:46:46.841913" elapsed="0.020463"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:46:46.862554" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:46:46.862445" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.862427" elapsed="0.000193"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:46:46.865555" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:46:46.862764" elapsed="0.002820"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:46:46.865636" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:46:46.865794" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:46:46.825377" elapsed="0.040443"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:46:46.865877" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:46:46.866023" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:46:46.822655" elapsed="0.043422"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.866901" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566806,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.866648" elapsed="0.000301"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.867974" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:46:46.867579" elapsed="0.000423"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:46:46.868068" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:46:46.868227" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566806, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:46:46.867239" elapsed="0.001047"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.868667" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.868444" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:46:46.869075" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:46:46.868849" elapsed="0.000252"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:46:46.869148" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:46:46.869311" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:46:46.866291" elapsed="0.003045"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:46:46.869379" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:46:46.869521" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:46:46.470267" elapsed="0.399279"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:46:46.869722" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T02:46:46.869612" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:46:46.869595" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:46:46.869948" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:46:46.470021" elapsed="0.399982"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.871455" level="INFO">${session} = ClusterManagement__session_3</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-19T02:46:46.871153" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:46:46.871528" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:46:46.871682" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:46:46.870781" elapsed="0.000929"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.879387" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.879134" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:46:46.879828" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:46:46.879586" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:48:51.972918" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:46:46.882103" elapsed="125.095255">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:46.879938" elapsed="125.097646">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.978339" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:48:51.977685" elapsed="0.000830"/>
</branch>
<status status="FAIL" start="2026-04-19T02:46:46.879919" elapsed="125.098652">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.979640" elapsed="0.000045"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:48:51.979866" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:48:51.979809" elapsed="0.000119"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:48:51.979781" elapsed="0.000177"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.980193" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:48:51.980294" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:46:46.874638" elapsed="125.105815">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:48:51.980557" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:46:46.871924" elapsed="125.108771">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.981141" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:48:51.981325" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:48:51.981274" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:48:51.981250" elapsed="0.000163"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.981691" elapsed="0.000035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.982019" elapsed="0.000053"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:48:51.982137" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:46:46.870402" elapsed="125.111881">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:48:51.982448" elapsed="0.000021"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:48:51.982395" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:48:51.982372" elapsed="0.000162"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.982737" elapsed="0.000029"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:46:46.870173" elapsed="125.112674">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:46:46.118973" elapsed="125.863958">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:46:46.116318" elapsed="125.866769">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:46:46.115811" elapsed="125.867361">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T02:46:46.115777" elapsed="125.867438">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:48:51.983595" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:48:51.983310" elapsed="0.000361"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:48:51.983286" elapsed="0.000418"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:48:51.984093" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:48:51.983779" elapsed="0.000396"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:48:51.983757" elapsed="0.000452"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:46:46.115122" elapsed="125.869198">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.002841" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:49:02.002384" elapsed="0.000489"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.003387" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:49:02.003058" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:49:02.003461" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:49:02.003628" level="INFO">${index_list} = [1, 2, 3]</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-19T02:49:02.001940" elapsed="0.001715"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.005172" 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-19T02:49:02.004860" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:49:02.005247" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:49:02.005395" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:49:02.004516" elapsed="0.000904"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.013083" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.012807" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.013529" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.013286" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:49:02.023877" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:49:02.023956" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:49:02 GMT', 'Expires': 'Sun, 19 Apr 2026 01:49:02 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566942,"status":200} 
 </msg>
<msg time="2026-04-19T02:49:02.024095" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:49:02.015775" elapsed="0.008347"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.013641" elapsed="0.010525"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.024345" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.024193" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.013622" elapsed="0.010808"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.029879" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566942,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.026136" elapsed="0.003874"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.025774" elapsed="0.004407"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.025748" elapsed="0.004472"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.034401" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.030636" elapsed="0.003891"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.030300" elapsed="0.004377"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.030276" elapsed="0.004438"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.035804" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.034957" elapsed="0.000875"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.036176" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.035903" elapsed="0.000449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.037142" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.036543" elapsed="0.000677"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.036378" elapsed="0.000986"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.035885" elapsed="0.001503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.038072" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.037550" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.038423" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.038169" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.039378" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.038785" elapsed="0.000672"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.038624" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.038151" elapsed="0.001476"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:49:02.039780" elapsed="0.000671"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:49:02.041450" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.040623" elapsed="0.000896"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.041679" elapsed="0.003012"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:49:02.025180" elapsed="0.019576"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:49:02.044936" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:49:02.044826" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.044807" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:49:02.047930" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:49:02.045234" elapsed="0.002725"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:49:02.048012" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T02:49:02.048190" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:49:02.008238" elapsed="0.039978"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:49:02.048274" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:49:02.048422" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:49:02.005711" elapsed="0.042737"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.049381" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.049006" elapsed="0.000424"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.050390" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.049975" elapsed="0.000443"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:49:02.050469" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:49:02.050627" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:49:02.049639" elapsed="0.001014"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.051044" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.050808" elapsed="0.000265"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.051629" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.051228" elapsed="0.000428"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:49:02.051706" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:49:02.051858" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:49:02.048659" elapsed="0.003223"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:49:02.052073" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:49:02.051951" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.051933" elapsed="0.000206"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.059633" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.059374" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.060091" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.059834" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:49:02.068420" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:49:02.068525" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:49:02 GMT', 'Expires': 'Sun, 19 Apr 2026 01:49:02 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566942,"status":200} 
 </msg>
<msg time="2026-04-19T02:49:02.068682" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:49:02.062369" elapsed="0.006350"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.060255" elapsed="0.008525"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.069051" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.068818" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.060234" elapsed="0.008943"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.074597" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776566942,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.070873" elapsed="0.003858"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.070534" elapsed="0.004367"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.070507" elapsed="0.004434"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.078256" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.075527" elapsed="0.002821"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.075019" elapsed="0.003440"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.074996" elapsed="0.003490"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.079208" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.078657" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.079576" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.079314" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.080550" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.079942" elapsed="0.000687"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.079777" elapsed="0.000998"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.079287" elapsed="0.001512"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.081491" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.080961" elapsed="0.000556"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.081845" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.081590" elapsed="0.000429"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.082786" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.082224" elapsed="0.000643"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.082061" elapsed="0.000954"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.081570" elapsed="0.001482"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:49:02.083208" elapsed="0.000688"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:49:02.084900" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.084103" elapsed="0.000823"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.085099" elapsed="0.003243"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:49:02.069923" elapsed="0.018519"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:49:02.088621" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:49:02.088513" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.088494" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:49:02.091562" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:49:02.088835" elapsed="0.002756"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:49:02.091644" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:49:02.091806" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:49:02.054877" elapsed="0.036956"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:49:02.091890" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:49:02.092144" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:49:02.052341" elapsed="0.039832"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.092993" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.092742" elapsed="0.000317"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.094009" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.093610" elapsed="0.000442"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:49:02.094103" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:49:02.094266" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:49:02.093270" elapsed="0.001023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.094707" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.094467" elapsed="0.000267"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.095156" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.094889" elapsed="0.000292"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:49:02.095229" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:49:02.095389" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:49:02.092389" elapsed="0.003025"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:49:02.095457" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:49:02.095602" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:49:02.004139" elapsed="0.091487"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:49:02.095803" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:49:02.095695" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.095678" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.096046" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:49:02.003895" elapsed="0.092208"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.097521" level="INFO">${session} = ClusterManagement__session_2</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-19T02:49:02.097218" elapsed="0.000331"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:49:02.097639" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:49:02.097814" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:49:02.096858" elapsed="0.000988"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.105892" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.105636" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.106378" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.106128" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:49:02.117641" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:49:02.117756" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:49:02 GMT', 'Expires': 'Sun, 19 Apr 2026 01:49:02 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566942,"status":200} 
 </msg>
<msg time="2026-04-19T02:49:02.117927" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:49:02.108640" elapsed="0.009327"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.106494" elapsed="0.011573"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.118355" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.118112" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.106473" elapsed="0.012012"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.124701" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566942,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.120496" elapsed="0.004347"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.120124" elapsed="0.004890"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.120095" elapsed="0.004986"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.129620" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.125538" elapsed="0.004217"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.125169" elapsed="0.004743"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.125144" elapsed="0.004807"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.131101" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.130244" elapsed="0.000901"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.131643" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.131250" elapsed="0.000564"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.132603" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.132009" elapsed="0.000674"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.131842" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.131223" elapsed="0.001631"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.133567" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.133027" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.133925" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.133665" elapsed="0.000453"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.134885" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.134310" elapsed="0.000656"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.134145" elapsed="0.001011"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.133647" elapsed="0.001535"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:49:02.135400" elapsed="0.000760"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:49:02.137166" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.136329" elapsed="0.000864"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.137351" elapsed="0.003189"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:49:02.119446" elapsed="0.021163"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:49:02.140794" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:49:02.140682" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.140662" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:49:02.143895" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:49:02.141008" elapsed="0.002918"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:49:02.143982" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:49:02.144172" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:49:02.101059" elapsed="0.043142"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:49:02.144260" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:49:02.144412" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:49:02.098082" elapsed="0.046358"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.145368" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.145095" elapsed="0.000322"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.146416" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.145979" elapsed="0.000472"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:49:02.146502" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:49:02.146663" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:49:02.145629" elapsed="0.001062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.147171" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.146847" elapsed="0.000352"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.147601" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.147384" elapsed="0.000243"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:49:02.147675" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:49:02.147826" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:49:02.144684" elapsed="0.003167"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:49:02.148051" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:49:02.147922" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.147904" elapsed="0.000214"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.155797" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.155529" elapsed="0.000388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.156347" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.156097" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:49:02.164273" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:49:02.164395" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:49:02 GMT', 'Expires': 'Sun, 19 Apr 2026 01:49:02 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566942,"status":200} 
 </msg>
<msg time="2026-04-19T02:49:02.164579" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:49:02.158759" elapsed="0.005861"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.156464" elapsed="0.008223"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.164977" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.164731" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.156443" elapsed="0.008704"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.171101" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776566942,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.166981" elapsed="0.004265"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.166609" elapsed="0.004837"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.166579" elapsed="0.004909"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.174546" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.171819" elapsed="0.002823"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.171569" elapsed="0.003182"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.171549" elapsed="0.003230"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.175547" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.174962" elapsed="0.000613"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.175910" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.175646" elapsed="0.000484"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.176905" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.176324" elapsed="0.000666"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.176157" elapsed="0.001012"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.175628" elapsed="0.001567"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.177885" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.177357" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.178257" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:49:02.177982" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.179217" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:49:02.178624" elapsed="0.000674"/>
</kw>
<status status="PASS" start="2026-04-19T02:49:02.178461" elapsed="0.001015"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.177964" elapsed="0.001537"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:49:02.179661" elapsed="0.000724"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:49:02.181473" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.180613" elapsed="0.000888"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.181712" elapsed="0.003117"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:49:02.165928" elapsed="0.018968"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:49:02.185108" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:49:02.184968" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.184949" elapsed="0.000230"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:49:02.188340" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:49:02.185363" elapsed="0.003007"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:49:02.188424" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:49:02.188603" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:49:02.150902" elapsed="0.037729"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:49:02.188689" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:49:02.188839" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:49:02.148325" elapsed="0.040541"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.189728" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776566942,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.189475" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.190760" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:49:02.190353" elapsed="0.000437"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:49:02.190840" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:49:02.191002" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776566942, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:49:02.189988" elapsed="0.001059"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.191453" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.191207" elapsed="0.000274"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:49:02.191851" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:49:02.191638" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:49:02.191925" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:49:02.192145" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:49:02.189111" elapsed="0.003059"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:49:02.192216" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:49:02.192365" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:49:02.096478" elapsed="0.095912"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:49:02.192573" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:49:02.192461" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:49:02.192443" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:49:02.192804" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:49:02.096249" elapsed="0.096610"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.194546" level="INFO">${session} = ClusterManagement__session_3</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-19T02:49:02.194244" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:49:02.194621" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:49:02.194770" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:49:02.193879" elapsed="0.000915"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.202345" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.202096" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:49:02.202790" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:49:02.202546" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:51:07.304717" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:49:02.205225" elapsed="125.103493">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:49:02.202900" elapsed="125.106027">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.309463" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:07.309011" elapsed="0.000601"/>
</branch>
<status status="FAIL" start="2026-04-19T02:49:02.202882" elapsed="125.106837">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.310939" elapsed="0.000042"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:51:07.311186" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:07.311123" elapsed="0.000127"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:51:07.311094" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.311504" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:51:07.311608" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:49:02.197615" elapsed="125.114156">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:51:07.311878" elapsed="0.000023"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:49:02.195008" elapsed="125.117013">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.312372" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:51:07.312558" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:07.312505" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:51:07.312480" elapsed="0.000169"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.312937" elapsed="0.000035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.313279" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:51:07.313377" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:49:02.193453" elapsed="125.120072">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:51:07.313741" elapsed="0.000023"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:51:07.313677" elapsed="0.000124"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:51:07.313616" elapsed="0.000216"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.314064" elapsed="0.000032"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:49:02.193022" elapsed="125.121150">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:49:02.003711" elapsed="125.310624">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:49:02.001524" elapsed="125.312958">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:49:02.001179" elapsed="125.313389">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T02:49:02.001155" elapsed="125.313458">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:51:07.315008" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:07.314710" elapsed="0.000400"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:51:07.314686" elapsed="0.000459"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:51:07.315538" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:07.315226" elapsed="0.000395"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:51:07.315203" elapsed="0.000453"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:49:02.000654" elapsed="125.315119">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.338000" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:51:17.337544" elapsed="0.000505"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.338553" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:51:17.338222" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:51:17.338631" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:51:17.338798" level="INFO">${index_list} = [1, 2, 3]</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-19T02:51:17.337018" elapsed="0.001805"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.340372" 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-19T02:51:17.340061" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:51:17.340452" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:51:17.340603" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:51:17.339697" elapsed="0.000931"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.348544" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.348272" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.349022" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.348753" elapsed="0.000332"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:51:17.358856" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:51:17.358962" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:51:17 GMT', 'Expires': 'Sun, 19 Apr 2026 01:51:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567077,"status":200} 
 </msg>
<msg time="2026-04-19T02:51:17.359113" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:51:17.351311" elapsed="0.007831"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.349161" elapsed="0.010026"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.359371" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.359214" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.349139" elapsed="0.010380"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.363487" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567077,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.360744" elapsed="0.002843"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.360486" elapsed="0.003208"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.360467" elapsed="0.003263"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.367556" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.364061" elapsed="0.003627"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.363791" elapsed="0.004061"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.363773" elapsed="0.004121"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.368947" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.368162" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.369523" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.369148" elapsed="0.000620"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.370990" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.370124" elapsed="0.001005"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.369806" elapsed="0.001535"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.369120" elapsed="0.002256"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.372414" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.371608" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.372957" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.372556" elapsed="0.000741"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.374440" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.373575" elapsed="0.000977"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.373340" elapsed="0.001415"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.372530" elapsed="0.002258"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:51:17.375024" elapsed="0.000999"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:51:17.377550" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.376286" elapsed="0.001292"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.377738" elapsed="0.003059"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:51:17.360053" elapsed="0.020840"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:51:17.381252" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:17.380991" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.380965" elapsed="0.000385"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:51:17.384319" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:51:17.381581" elapsed="0.002767"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:51:17.384401" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:51:17.384562" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:51:17.343421" elapsed="0.041168"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:51:17.384685" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:51:17.384850" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:51:17.340845" elapsed="0.044035"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.385773" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.385520" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.386784" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.386387" elapsed="0.000426"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:51:17.386863" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:51:17.387022" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:51:17.386046" elapsed="0.001018"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.387445" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.387223" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.387835" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.387627" elapsed="0.000233"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:51:17.387907" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:51:17.388070" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:51:17.385165" elapsed="0.002930"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:51:17.388271" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:17.388163" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.388146" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.396152" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.395885" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.396602" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.396357" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:51:17.404673" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:51:17.404749" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:51:17 GMT', 'Expires': 'Sun, 19 Apr 2026 01:51:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567077,"status":200} 
 </msg>
<msg time="2026-04-19T02:51:17.404876" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:51:17.398887" elapsed="0.006016"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.396711" elapsed="0.008235"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.405144" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.404972" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.396693" elapsed="0.008540"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.409191" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567077,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.406460" elapsed="0.002829"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.406179" elapsed="0.003215"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.406160" elapsed="0.003269"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.412416" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.409730" elapsed="0.002776"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.409486" elapsed="0.003126"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.409469" elapsed="0.003171"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.413352" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.412804" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.413710" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.413451" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.414656" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.414090" elapsed="0.000644"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.413909" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.413433" elapsed="0.001470"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.415594" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.415081" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.415950" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.415692" elapsed="0.000470"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.416975" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.416358" elapsed="0.000720"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.416193" elapsed="0.001034"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.415673" elapsed="0.001578"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:51:17.417409" elapsed="0.000666"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:51:17.419048" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.418244" elapsed="0.000832"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.419264" elapsed="0.003175"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:51:17.405729" elapsed="0.016776"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:51:17.422681" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:17.422573" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.422555" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:51:17.425691" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:51:17.422891" elapsed="0.002828"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:51:17.425772" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:51:17.425928" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:51:17.391384" elapsed="0.034569"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:51:17.426011" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:51:17.426176" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:51:17.388536" elapsed="0.037666"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.427067" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.426800" elapsed="0.000316"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.428130" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.427664" elapsed="0.000496"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:51:17.428210" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:51:17.428368" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:51:17.427326" elapsed="0.001068"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.428770" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.428550" elapsed="0.000246"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.429204" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.428976" elapsed="0.000253"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:51:17.429301" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:51:17.429453" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:51:17.426447" elapsed="0.003031"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:51:17.429522" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:51:17.429664" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:51:17.339311" elapsed="0.090377"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:51:17.429863" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T02:51:17.429755" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.429738" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.430113" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:51:17.339082" elapsed="0.091087"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.431567" level="INFO">${session} = ClusterManagement__session_2</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-19T02:51:17.431271" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:51:17.431639" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:51:17.431784" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:51:17.430910" elapsed="0.000898"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.439680" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.439433" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.440137" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.439879" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:51:17.449855" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:51:17.449930" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:51:17 GMT', 'Expires': 'Sun, 19 Apr 2026 01:51:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567077,"status":200} 
 </msg>
<msg time="2026-04-19T02:51:17.450088" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:51:17.442399" elapsed="0.007716"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.440246" elapsed="0.009913"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.450337" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.450184" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.440227" elapsed="0.010194"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.454269" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567077,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.451585" elapsed="0.002778"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.451344" elapsed="0.003124"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.451324" elapsed="0.003171"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.457506" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.454792" elapsed="0.002820"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.454551" elapsed="0.003167"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.454534" elapsed="0.003212"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.458624" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.457911" elapsed="0.000762"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.459174" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.458780" elapsed="0.000634"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.460515" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.459680" elapsed="0.000944"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.459451" elapsed="0.001388"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.458753" elapsed="0.002121"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.461835" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.461125" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.462349" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.461971" elapsed="0.000613"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.463679" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.462853" elapsed="0.000935"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.462620" elapsed="0.001367"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.461946" elapsed="0.002073"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:51:17.464260" elapsed="0.000996"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:51:17.466346" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.465497" elapsed="0.000877"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.466532" elapsed="0.003186"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:51:17.450907" elapsed="0.018877"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:51:17.469961" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:17.469853" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.469834" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:51:17.472943" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:51:17.470190" elapsed="0.002783"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:51:17.473025" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T02:51:17.473200" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:51:17.434925" elapsed="0.038334"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:51:17.473320" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:51:17.473469" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:51:17.432015" elapsed="0.041480"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.474324" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.474071" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.475415" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.474926" elapsed="0.000518"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:51:17.475494" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:51:17.475656" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:51:17.474580" elapsed="0.001109"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.476091" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.475853" elapsed="0.000266"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.476485" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.476276" elapsed="0.000235"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:51:17.476558" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:51:17.476707" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:51:17.473704" elapsed="0.003027"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:51:17.476929" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:17.476818" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.476781" elapsed="0.000212"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.484597" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.484348" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.485074" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.484810" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:51:17.492764" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T02:51:17.492853" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 02:51:17 GMT', 'Expires': 'Sun, 19 Apr 2026 01:51:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567077,"status":200} 
 </msg>
<msg time="2026-04-19T02:51:17.492966" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T02:51:17.487441" elapsed="0.005553"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.485189" elapsed="0.007876"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.493252" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.493093" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.485171" elapsed="0.008202"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.497268" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567077,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.494553" elapsed="0.002811"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.494309" elapsed="0.003161"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.494291" elapsed="0.003207"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.500495" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.497795" elapsed="0.002793"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.497554" elapsed="0.003140"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.497538" elapsed="0.003183"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.501642" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.500917" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.502165" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.501781" elapsed="0.000625"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.503487" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.502678" elapsed="0.000919"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.502444" elapsed="0.001359"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.501755" elapsed="0.002081"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.504804" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.504084" elapsed="0.000767"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.505391" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:51:17.504949" elapsed="0.000686"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.506699" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:51:17.505904" elapsed="0.000903"/>
</kw>
<status status="PASS" start="2026-04-19T02:51:17.505672" elapsed="0.001334"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.504924" elapsed="0.002134"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:51:17.507275" elapsed="0.000923"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T02:51:17.509606" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.508432" elapsed="0.001202"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.509789" elapsed="0.003063"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T02:51:17.493868" elapsed="0.019054"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:51:17.513178" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:51:17.512991" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.512972" elapsed="0.000274"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T02:51:17.516092" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T02:51:17.513394" elapsed="0.002727"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T02:51:17.516174" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:51:17.516342" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T02:51:17.479756" elapsed="0.036613"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T02:51:17.516428" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:51:17.516616" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T02:51:17.477210" elapsed="0.039439"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.517592" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567077,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.517338" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.518602" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T02:51:17.518209" elapsed="0.000422"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T02:51:17.518680" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:51:17.518838" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567077, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T02:51:17.517853" elapsed="0.001011"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.519254" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.519017" elapsed="0.000265"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:51:17.519644" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:51:17.519436" elapsed="0.000233"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T02:51:17.519716" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:51:17.519865" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T02:51:17.516885" elapsed="0.003005"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T02:51:17.519934" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:51:17.520096" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T02:51:17.430535" elapsed="0.089587"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T02:51:17.520297" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T02:51:17.520190" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T02:51:17.520172" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:51:17.520526" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:51:17.430311" elapsed="0.090270"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.522314" level="INFO">${session} = ClusterManagement__session_3</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-19T02:51:17.521999" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:51:17.522387" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:51:17.522533" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T02:51:17.521658" elapsed="0.000899"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.530069" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.529807" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:51:17.530511" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:51:17.530269" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:53:22.550923" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T02:51:17.532798" elapsed="125.022792">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:51:17.530621" elapsed="125.025193">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.556473" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:22.555899" elapsed="0.000870"/>
</branch>
<status status="FAIL" start="2026-04-19T02:51:17.530602" elapsed="125.026229">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.558257" elapsed="0.000067"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T02:53:22.558617" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:22.558525" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:53:22.558477" elapsed="0.000290"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.559136" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T02:53:22.559301" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T02:51:17.525322" elapsed="125.034253">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T02:53:22.559742" elapsed="0.000037"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T02:51:17.522767" elapsed="125.037198">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.560551" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T02:53:22.560854" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:22.560771" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:53:22.560732" elapsed="0.000268"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.561494" elapsed="0.000113"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.562129" elapsed="0.000058"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T02:53:22.562291" elapsed="0.000036"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T02:51:17.521250" elapsed="125.041206">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T02:53:22.562580" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T02:53:22.562541" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:53:22.562522" elapsed="0.000121"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.562791" elapsed="0.000021"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:51:17.520725" elapsed="125.042138">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:51:17.338880" elapsed="125.224045">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T02:51:17.336370" elapsed="125.226656">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T02:51:17.335863" elapsed="125.227252">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T02:51:17.335830" elapsed="125.227316">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T02:53:22.563423" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:22.563215" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:53:22.563197" elapsed="0.000305"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T02:53:22.563772" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:22.563558" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:53:22.563542" elapsed="0.000312"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T02:51:17.335166" elapsed="125.228769">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T02:53:22.564068" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T02:46:15.892172" elapsed="426.672031">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:53:22.568213" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:53:22.567721" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:53:22.568748" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:53:22.568422" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:53:22.568823" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:53:22.568985" level="INFO">${index_list} = [1, 2, 3]</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-19T02:53:22.567284" elapsed="0.001727"/>
</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-19T02:53:22.570175" level="INFO">${member_ip} = 10.30.171.9</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-19T02:53:22.569878" elapsed="0.000324"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:22.571069" 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-19T02:53:22.571175" 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-19T02:53:22.570888" elapsed="0.000314"/>
</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-19T02:53:22.573940" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:22.573630" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:22.573611" elapsed="0.000415"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:22.574327" 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-19T02:53:22.574426" 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-19T02:53:22.574196" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:22.575126" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:22.574604" elapsed="0.000571"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:22.575774" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:22.575349" elapsed="0.000450"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:53:22.576919" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:53:22.577015" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:53:22.576514" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:22.577223" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:53:22.579346" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:53:23.168367" 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 Sun Apr 19 02:53:22 UTC 2026

  System load:  0.19               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:46:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:53:22.578682" elapsed="0.589895"/>
</kw>
<msg time="2026-04-19T02:53:23.168781" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:22.577964" elapsed="0.590954"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:53:22.576019" elapsed="0.593014"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.169586" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:53:23.181854" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:53:23.182010" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:53:23.182101" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:53:23.169304" elapsed="0.012832"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:23.182373" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.183403" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:23.182947" elapsed="0.000522"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:23.183815" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:23.183582" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:23.183548" elapsed="0.000372"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:53:23.184184" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T02:53:23.183997" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:23.183975" elapsed="0.000328"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:23.184350" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:23.191171" elapsed="0.001430"/>
</kw>
<kw name="Open 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-19T02:53:23.192775" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:23.193105" 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-19T02:53:23.185078" elapsed="0.008181"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:53:22.573069" elapsed="0.620283"/>
</kw>
<msg time="2026-04-19T02:53:23.193407" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:22.572495" elapsed="0.620975"/>
</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-19T02:53:22.571889" elapsed="0.621660"/>
</kw>
<msg time="2026-04-19T02:53:23.193591" 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-19T02:53:22.571363" elapsed="0.622285"/>
</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-19T02:53:23.196664" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:53:23.197159" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:23.197459" 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-19T02:53:23.193939" elapsed="0.003667"/>
</kw>
<msg time="2026-04-19T02:53:23.197700" 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-19T02:53:22.570435" elapsed="0.627291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.198172" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:23.197903" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:53:23.198256" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:53:22.569404" elapsed="0.628976"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:53:22.569222" elapsed="0.629195"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:23.199417" level="INFO">${member_ip} = 10.30.171.128</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-19T02:53:23.199144" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.200315" 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-19T02:53:23.200423" 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-19T02:53:23.200175" elapsed="0.000274"/>
</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-19T02:53:23.203339" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:23.203064" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:23.203032" elapsed="0.000388"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.203697" 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-19T02:53:23.203798" 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-19T02:53:23.203568" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.204493" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:23.203978" elapsed="0.000563"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.205136" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:23.204700" elapsed="0.000464"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.206247" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:53:23.206339" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:53:23.205839" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:23.206524" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.208431" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:53:23.799187" 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 Sun Apr 19 02:53:23 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:46:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:53:23.207772" elapsed="0.591623"/>
</kw>
<msg time="2026-04-19T02:53:23.799516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:23.207233" elapsed="0.592419"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:53:23.205380" elapsed="0.594383"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.800290" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:53:23.813009" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:53:23.813288" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:53:23.813386" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:53:23.800010" elapsed="0.013427"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:23.813805" elapsed="0.000501"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.815419" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:23.814722" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:23.815982" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:23.815691" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:23.815640" elapsed="0.000547"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:53:23.816545" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:53:23.816309" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:23.816274" elapsed="0.000615"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:23.816972" 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-19T02:53:23.821743" elapsed="0.000800"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:23.822774" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:23.823222" 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-19T02:53:23.817622" elapsed="0.005809"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:53:23.202489" elapsed="0.621071"/>
</kw>
<msg time="2026-04-19T02:53:23.823636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:23.201898" elapsed="0.621833"/>
</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-19T02:53:23.201325" elapsed="0.622515"/>
</kw>
<msg time="2026-04-19T02:53:23.823899" 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-19T02:53:23.200605" elapsed="0.623373"/>
</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-19T02:53:23.827647" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:53:23.828142" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:23.828439" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:23.824410" elapsed="0.004179"/>
</kw>
<msg time="2026-04-19T02:53:23.828679" 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-19T02:53:23.199702" elapsed="0.629003"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.829173" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:23.828887" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:53:23.829260" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:53:23.198692" elapsed="0.630690"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:53:23.198510" elapsed="0.630910"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:23.830442" level="INFO">${member_ip} = 10.30.171.206</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-19T02:53:23.830165" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.831271" 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-19T02:53:23.831371" 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-19T02:53:23.831134" elapsed="0.000264"/>
</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-19T02:53:23.834069" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:23.833782" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:23.833764" elapsed="0.000387"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.834426" 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-19T02:53:23.834527" 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-19T02:53:23.834298" elapsed="0.000255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.835198" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:23.834703" elapsed="0.000578"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.835855" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:23.835439" elapsed="0.000442"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:53:23.837137" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:53:23.837249" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:53:23.836654" elapsed="0.000621"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:23.837437" elapsed="0.002150"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:53:23.841006" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:53:24.447420" 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 Sun Apr 19 02:53:24 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:46:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:53:23.840371" elapsed="0.607259"/>
</kw>
<msg time="2026-04-19T02:53:24.447752" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:23.839777" elapsed="0.608113"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:53:23.836116" elapsed="0.611888"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.448556" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T02:53:24.461330" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T02:53:24.461577" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:53:24.461674" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:53:24.448287" elapsed="0.013440"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:24.462155" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.463763" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:24.463093" elapsed="0.000770"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:24.464432" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:24.464077" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.463987" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:53:24.464993" elapsed="0.000228"/>
</return>
<status status="PASS" start="2026-04-19T02:53:24.464737" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.464688" elapsed="0.000691"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:24.465448" 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-19T02:53:24.470136" elapsed="0.001019"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:24.471397" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:24.471829" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:24.465905" elapsed="0.006162"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:53:23.833221" elapsed="0.638990"/>
</kw>
<msg time="2026-04-19T02:53:24.472334" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:23.832634" elapsed="0.639803"/>
</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-19T02:53:23.832072" elapsed="0.640502"/>
</kw>
<msg time="2026-04-19T02:53:24.472651" 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-19T02:53:23.831553" elapsed="0.641308"/>
</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-19T02:53:24.476462" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:53:24.476948" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:24.477303" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:24.473470" elapsed="0.003988"/>
</kw>
<msg time="2026-04-19T02:53:24.477554" 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-19T02:53:23.830686" elapsed="0.646894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.478025" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:24.477775" elapsed="0.000348"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:53:24.478169" elapsed="0.000039"/>
</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-19T02:53:23.829695" elapsed="0.648621"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:53:23.829514" elapsed="0.648841"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:53:22.569085" elapsed="1.909307"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:53:22.564538" elapsed="1.913915"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T02:46:14.705761" elapsed="429.772781">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:24.478729" elapsed="0.000023"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T02:53:24.478976" elapsed="0.000025"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:24.479375" elapsed="0.000024"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:24.479599" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:24.479928" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:24.479692" elapsed="0.000307"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:53:24.479675" elapsed="0.000358"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T02:53:24.479193" elapsed="0.000884"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:53:24.479074" elapsed="0.001032"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:24.480295" elapsed="0.000025"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:46:14.700955" elapsed="429.779554">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T02:53:24.481469" elapsed="0.000371"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T02:39:02.748133" elapsed="861.733754"/>
</suite>
<suite id="s1-s16" name="Global Rpc Kill" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_kill.robot">
<kw name="Setup_Suite" 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-19T02:53:24.556371" 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-19T02:53:24.552502" elapsed="0.003925"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T02:53:24.552270" elapsed="0.004227"/>
</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-19T02:53:24.561007" 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-19T02:53:24.557653" elapsed="0.003385"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T02:53:24.561257" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:24.561136" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.561111" elapsed="0.000213"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.561828" 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-19T02:53:24.561475" elapsed="0.000395"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.562351" level="INFO">${cluster_size} = 3</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-19T02:53:24.562021" elapsed="0.000356"/>
</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-19T02:53:24.562889" elapsed="0.000300"/>
</kw>
<msg time="2026-04-19T02:53:24.563285" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:53:24.563332" level="INFO">${possibly_int_of_members} = 3</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-19T02:53:24.562531" elapsed="0.000823"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.563884" level="INFO">${int_of_members} = 3</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-19T02:53:24.563514" elapsed="0.000396"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.564872" 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-19T02:53:24.564611" elapsed="0.000288"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.565309" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:53:24.565039" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.565772" 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-19T02:53:24.565487" elapsed="0.000312"/>
</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-19T02:53:24.568607" elapsed="0.000206"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.569309" level="INFO">${member_ip} = 10.30.171.9</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-19T02:53:24.568961" elapsed="0.000374"/>
</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-19T02:53:24.569479" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.570484" 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-19T02:53:24.570191" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:53:24.570556" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:53:24.570714" 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-19T02:53:24.569891" elapsed="0.000848"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:53:24.571536" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782705fdf3d0&gt;, timeout=30, 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-19T02:53:24.570887" elapsed="0.000787"/>
</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-19T02:53:24.571829" elapsed="0.000192"/>
</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-19T02:53:24.568056" elapsed="0.004045"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:53:24.567860" elapsed="0.004286"/>
</iter>
<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-19T02:53:24.572956" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.573638" level="INFO">${member_ip} = 10.30.171.128</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-19T02:53:24.573313" elapsed="0.000352"/>
</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-19T02:53:24.573807" elapsed="0.000224"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.574850" level="INFO">${session} = ClusterManagement__session_2</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-19T02:53:24.574512" elapsed="0.000365"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:53:24.574923" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:53:24.575106" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T02:53:24.574228" elapsed="0.000903"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:53:24.575685" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7fc1990&gt;, timeout=30, 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-19T02:53:24.575277" elapsed="0.000513"/>
</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-19T02:53:24.575944" elapsed="0.000209"/>
</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-19T02:53:24.572407" elapsed="0.003806"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:53:24.572235" elapsed="0.004022"/>
</iter>
<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-19T02:53:24.577087" elapsed="0.000194"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.577755" level="INFO">${member_ip} = 10.30.171.206</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-19T02:53:24.577429" elapsed="0.000353"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:53:24.577925" elapsed="0.000241"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.578929" level="INFO">${session} = ClusterManagement__session_3</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-19T02:53:24.578634" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:53:24.579002" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:53:24.579197" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T02:53:24.578349" elapsed="0.000874"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:53:24.579770" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f706a8d0&gt;, timeout=30, 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-19T02:53:24.579367" elapsed="0.000506"/>
</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-19T02:53:24.580024" elapsed="0.000207"/>
</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-19T02:53:24.576516" elapsed="0.003775"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:53:24.576344" elapsed="0.003990"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T02:53:24.565852" elapsed="0.014513"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.580915" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T02:53:24.580515" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.581523" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T02:53:24.581125" elapsed="0.000440"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.582115" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T02:53:24.581715" elapsed="0.000444"/>
</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-19T02:53:24.564166" elapsed="0.018050"/>
</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-19T02:53:24.557318" elapsed="0.024954"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:53:24.582451" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:24.582337" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.582319" elapsed="0.000198"/>
</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-19T02:53:24.585673" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:53:24.585286" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.586177" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:53:24.585850" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:53:24.586249" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:53:24.586405" level="INFO">${index_list} = [1, 2, 3]</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-19T02:53:24.584948" elapsed="0.001482"/>
</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-19T02:53:24.587445" level="INFO">${member_ip} = 10.30.171.9</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-19T02:53:24.587136" elapsed="0.000336"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.588211" 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-19T02:53:24.588312" 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-19T02:53:24.588025" elapsed="0.000313"/>
</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-19T02:53:24.591682" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:24.591101" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.591081" elapsed="0.000722"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.592439" 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-19T02:53:24.592664" 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-19T02:53:24.591993" elapsed="0.000723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.593639" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:24.592964" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.594904" 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-19T02:53:24.593999" elapsed="0.000955"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.596651" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:53:24.596828" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:53:24.596302" elapsed="0.000569"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:24.597210" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.598920" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:53:24.913657" 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 Sun Apr 19 02:53:22 UTC 2026

  System load:  0.19               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:53:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:53:24.598458" elapsed="0.315352"/>
</kw>
<msg time="2026-04-19T02:53:24.913895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:24.597995" elapsed="0.316096"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:53:24.595424" elapsed="0.318821"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.915232" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:53:24.927985" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:53:24.928254" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:53:24.928396" 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-19T02:53:24.914703" elapsed="0.013764"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:24.928881" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.931783" 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-19T02:53:24.930458" elapsed="0.001579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:24.933066" elapsed="0.000126"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:24.932454" elapsed="0.000921"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.932398" elapsed="0.001110"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:53:24.934359" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T02:53:24.933704" elapsed="0.000997"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.933664" elapsed="0.001129"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:24.934933" 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-19T02:53:24.940012" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T02:53:24.940758" elapsed="0.000305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:24.941314" elapsed="0.000222"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:24.936088" elapsed="0.005531"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:53:24.590123" elapsed="0.351670"/>
</kw>
<msg time="2026-04-19T02:53:24.941849" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:24.589457" elapsed="0.352447"/>
</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-19T02:53:24.588965" elapsed="0.353022"/>
</kw>
<msg time="2026-04-19T02:53:24.942028" 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-19T02:53:24.588484" elapsed="0.353662"/>
</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-19T02:53:24.944636" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:53:24.945117" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:24.945404" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:24.942429" elapsed="0.003123"/>
</kw>
<msg time="2026-04-19T02:53:24.945668" 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-19T02:53:24.587678" elapsed="0.358016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.946127" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:24.945862" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:53:24.946212" 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-19T02:53:24.586774" elapsed="0.359563"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:53:24.586606" elapsed="0.359768"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:24.947284" level="INFO">${member_ip} = 10.30.171.128</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-19T02:53:24.946991" elapsed="0.000319"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.948002" 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-19T02:53:24.948173" 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-19T02:53:24.947866" elapsed="0.000334"/>
</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-19T02:53:24.951640" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:24.951110" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:24.951090" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.952388" 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-19T02:53:24.952613" 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-19T02:53:24.951949" elapsed="0.000715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.953576" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:24.952910" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.954850" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:24.953969" elapsed="0.000931"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:53:24.956592" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:53:24.956768" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:53:24.956231" elapsed="0.000579"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:24.957153" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:53:24.958737" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:53:25.262586" 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 Sun Apr 19 02:53:23 UTC 2026

  System load:  0.16               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:53:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:53:24.958412" elapsed="0.304321"/>
</kw>
<msg time="2026-04-19T02:53:25.262813" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:24.957959" elapsed="0.305013"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:53:24.955342" elapsed="0.307818"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.263996" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:53:25.276866" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:53:25.277268" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:53:25.277495" 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-19T02:53:25.263527" elapsed="0.014075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.278293" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.281837" 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-19T02:53:25.280595" elapsed="0.001518"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:25.283016" elapsed="0.000147"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:25.282470" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:25.282419" elapsed="0.001042"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:53:25.284179" elapsed="0.000138"/>
</return>
<status status="PASS" start="2026-04-19T02:53:25.283646" elapsed="0.000955"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:25.283609" elapsed="0.001054"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:25.284745" 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-19T02:53:25.289197" elapsed="0.000697"/>
</kw>
<kw name="Open 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-19T02:53:25.290418" elapsed="0.000408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.291213" elapsed="0.000400"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:25.285412" elapsed="0.006311"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:53:24.950185" elapsed="0.341792"/>
</kw>
<msg time="2026-04-19T02:53:25.292079" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:24.949539" elapsed="0.342617"/>
</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-19T02:53:24.948829" elapsed="0.343444"/>
</kw>
<msg time="2026-04-19T02:53:25.292332" 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-19T02:53:24.948346" elapsed="0.344050"/>
</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-19T02:53:25.294923" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:25.295424" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.295746" 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-19T02:53:25.292769" elapsed="0.003131"/>
</kw>
<msg time="2026-04-19T02:53:25.295992" 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-19T02:53:24.947515" elapsed="0.348504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.296466" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:25.296210" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:53:25.296553" 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-19T02:53:24.946641" elapsed="0.350040"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:53:24.946468" elapsed="0.350252"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:25.297652" level="INFO">${member_ip} = 10.30.171.206</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-19T02:53:25.297374" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.298448" 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-19T02:53:25.298556" 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-19T02:53:25.298308" elapsed="0.000275"/>
</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-19T02:53:25.301895" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:25.301344" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:25.301324" elapsed="0.000698"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.302719" 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-19T02:53:25.302959" 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-19T02:53:25.302284" elapsed="0.000728"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.304020" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:25.303329" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.305298" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:53:25.304401" elapsed="0.000948"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.307202" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:53:25.307375" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:53:25.306656" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:25.307741" elapsed="0.000687"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.309547" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:53:25.624377" 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 Sun Apr 19 02:53:24 UTC 2026

  System load:  0.0                Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:53:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:53:25.309222" elapsed="0.315310"/>
</kw>
<msg time="2026-04-19T02:53:25.624627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:25.308767" elapsed="0.316055"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:53:25.305768" elapsed="0.319216"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.625922" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:53:25.639422" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:53:25.639804" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:53:25.640081" 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-19T02:53:25.625404" elapsed="0.014797"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.640870" elapsed="0.001231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.644539" 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-19T02:53:25.643275" elapsed="0.001497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:25.645802" elapsed="0.000112"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:25.645217" elapsed="0.000953"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:25.645159" elapsed="0.001096"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:53:25.646928" elapsed="0.000175"/>
</return>
<status status="PASS" start="2026-04-19T02:53:25.646435" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:25.646397" elapsed="0.000968"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:53:25.647495" 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-19T02:53:25.652495" elapsed="0.000471"/>
</kw>
<kw name="Open 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-19T02:53:25.653303" elapsed="0.000292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.653852" elapsed="0.000272"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:25.648574" elapsed="0.005621"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:53:25.300404" elapsed="0.353968"/>
</kw>
<msg time="2026-04-19T02:53:25.654497" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:25.299777" elapsed="0.354782"/>
</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-19T02:53:25.299251" elapsed="0.355391"/>
</kw>
<msg time="2026-04-19T02:53:25.654684" 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-19T02:53:25.298729" elapsed="0.356001"/>
</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-19T02:53:25.657225" 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-19T02:53:25.657709" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.657992" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:25.655015" elapsed="0.003167"/>
</kw>
<msg time="2026-04-19T02:53:25.658275" 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-19T02:53:25.297892" elapsed="0.360408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.658769" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:25.658480" elapsed="0.000343"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:53:25.658875" 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-19T02:53:25.296995" elapsed="0.362008"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:53:25.296817" elapsed="0.362247"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:53:24.586480" elapsed="1.072623"/>
</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-19T02:53:24.582724" elapsed="1.076440"/>
</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-19T02:53:25.659315" elapsed="0.000212"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:53:25.673719" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:25.673608" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:25.673588" elapsed="0.000200"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.674088" 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-19T02:53:25.674193" 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-19T02:53:25.673934" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.674621" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:25.674364" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:25.675063" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:25.674805" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:25.675824" 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-19T02:53:25.675599" elapsed="0.000334">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T02:53:25.676055" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:53:25.676103" 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-19T02:53:25.675254" elapsed="0.000872"/>
</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-19T02:53:25.676416" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:25.676203" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:25.676184" elapsed="0.000330"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:25.677289" level="INFO">${ip_address} = 10.30.171.9</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-19T02:53:25.676963" elapsed="0.000353"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:53:25.677364" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:53:25.677511" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:53:25.676704" elapsed="0.000831"/>
</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-19T02:53:25.677754" elapsed="0.000426"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.678446" level="INFO">index=10
host=10.30.171.9
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-19T02:53:25.678546" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.678340" elapsed="0.000232"/>
</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-19T02:53:25.678710" elapsed="0.001952"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:53:25.681097" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:53:26.487483" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:53:25.680818" elapsed="0.806829"/>
</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-19T02:53:26.491183" elapsed="0.000432"/>
</kw>
<kw name="Open 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-19T02:53:26.491814" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:26.492219" elapsed="0.000135"/>
</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-19T02:53:26.488746" elapsed="0.003679"/>
</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-19T02:53:26.488066" elapsed="0.004422"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:53:25.673307" elapsed="0.819257"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:53:25.661127" elapsed="0.831505"/>
</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-19T02:53:25.660277" elapsed="0.832425"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:53:25.659954" elapsed="0.832802"/>
</iter>
<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-19T02:53:26.504868" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:26.504748" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:26.504723" elapsed="0.000220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:26.505316" 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-19T02:53:26.505455" 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-19T02:53:26.505147" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:26.505904" 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-19T02:53:26.505637" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:26.506386" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:26.506139" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:26.507222" level="FAIL">Dictionary does not contain key '2'.</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-19T02:53:26.506931" elapsed="0.000420">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T02:53:26.507487" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:53:26.507614" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T02:53:26.506578" elapsed="0.001069"/>
</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-19T02:53:26.508061" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:26.507749" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:26.507723" elapsed="0.000450"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:26.508918" level="INFO">${ip_address} = 10.30.171.128</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-19T02:53:26.508648" elapsed="0.000297"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:53:26.508995" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:53:26.509173" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:53:26.508376" elapsed="0.000823"/>
</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-19T02:53:26.509368" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:26.510096" level="INFO">index=12
host=10.30.171.128
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-19T02:53:26.510199" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T02:53:26.509954" elapsed="0.000271"/>
</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-19T02:53:26.510364" elapsed="0.001939"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:53:26.512717" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:53:27.329286" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:53:26.512458" elapsed="0.816997"/>
</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-19T02:53:27.332659" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T02:53:27.333248" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:27.333558" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:27.330566" elapsed="0.003148"/>
</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-19T02:53:27.329858" elapsed="0.003904"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:53:26.504454" elapsed="0.829363"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:53:26.493400" elapsed="0.840465"/>
</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-19T02:53:26.493006" elapsed="0.840912"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:53:26.492871" elapsed="0.841089"/>
</iter>
<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-19T02:53:27.346149" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:27.346013" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:27.345989" elapsed="0.000236"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:27.346585" 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-19T02:53:27.346691" 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-19T02:53:27.346442" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:27.347146" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:27.346863" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:27.347576" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:27.347333" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:27.348369" level="FAIL">Dictionary does not contain key '3'.</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-19T02:53:27.348135" elapsed="0.000337">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T02:53:27.348579" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:53:27.348626" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T02:53:27.347768" 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-19T02:53:27.348942" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:27.348727" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:27.348709" elapsed="0.000349"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:27.349818" level="INFO">${ip_address} = 10.30.171.206</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-19T02:53:27.349547" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:53:27.349894" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:53:27.350066" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:53:27.349251" 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-19T02:53:27.350242" elapsed="0.000404"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:27.350912" level="INFO">index=14
host=10.30.171.206
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-19T02:53:27.351014" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T02:53:27.350806" elapsed="0.000251"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:53:27.351197" elapsed="0.001948"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:53:27.353587" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:53:37.460799" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:53:27.353301" elapsed="10.108403">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:53:37.465018" 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-19T02:53:37.465587" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:37.465895" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:37.462922" elapsed="0.003154"/>
</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-19T02:53:37.462208" elapsed="0.003919"/>
</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-19T02:53:27.345721" elapsed="10.120493">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:53:37.466309" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:53:27.334579" elapsed="10.131824">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:53:27.334215" elapsed="10.132369"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:53:27.334082" elapsed="10.132547"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T02:53:25.659637" elapsed="11.807029"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T02:53:24.556864" elapsed="12.909865"/>
</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-19T02:53:37.469269" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.469150" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.469128" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:53:37.473544" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.473438" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.473420" elapsed="0.000191"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:53:37.474576" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:53:37.474165" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:53:37.475078" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:53:37.474754" elapsed="0.000351"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:53:37.475150" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:53:37.475307" level="INFO">${index_list} = [1, 2, 3]</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-19T02:53:37.473827" elapsed="0.001504"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:53:37.480240" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.480131" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.480112" 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-19T02:53:37.481513" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.481383" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.481365" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:37.482071" 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-19T02:53:37.481715" elapsed="0.000384"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:37.482494" 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-19T02:53:37.482250" elapsed="0.000270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:53:37.573562" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:53:37.483483" elapsed="0.090230"/>
</kw>
<msg time="2026-04-19T02:53:37.573858" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:53:37.573906" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.482692" elapsed="0.091270"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:53:37.686385" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "k "i "l "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:53:37.574703" elapsed="0.111857"/>
</kw>
<msg time="2026-04-19T02:53:37.686698" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:53:37.686744" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.574161" elapsed="0.112618"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:37.687151" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:37.686868" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.686843" elapsed="0.000600"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:37.687970" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "k "i "l "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:37.687582" elapsed="0.000492"/>
</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-19T02:53:37.688379" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:37.688143" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.688124" elapsed="0.000440"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:53:37.688601" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:37.690843" elapsed="0.000522"/>
</kw>
<kw name="Open 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-19T02:53:37.691730" elapsed="0.000333"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:37.692414" elapsed="0.000255"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:37.689996" elapsed="0.002770"/>
</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-19T02:53:37.688882" elapsed="0.004032"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:53:37.481089" elapsed="0.211929"/>
</kw>
<msg time="2026-04-19T02:53:37.693520" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:53:37.693566" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.480449" elapsed="0.213153"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:53:37.693791" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:53:37.693681" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.693662" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:37.694455" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:37.694785" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:53:37.694856" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:53:37.479821" elapsed="0.215143"/>
</kw>
<msg time="2026-04-19T02:53:37.695076" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:53:37.695122" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.475689" elapsed="0.219468"/>
</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-19T02:53:37.695491" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:37.695234" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.695216" elapsed="0.000352"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:53:37.475558" elapsed="0.220033"/>
</iter>
<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-19T02:53:37.700661" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.700554" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.700536" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:53:37.702130" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.701976" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.701958" elapsed="0.000240"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:37.702666" level="INFO">${karaf_connection_index} = 12</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-19T02:53:37.702334" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:37.703093" 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-19T02:53:37.702843" elapsed="0.000312"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:53:37.795824" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:53:37.703844" elapsed="0.092125"/>
</kw>
<msg time="2026-04-19T02:53:37.796266" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:53:37.796315" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.703310" elapsed="0.093041"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:53:37.925528" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "k "i "l "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:53:37.797090" elapsed="0.128674"/>
</kw>
<msg time="2026-04-19T02:53:37.925956" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:53:37.926004" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.796518" elapsed="0.129539"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:37.926500" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:37.926169" elapsed="0.000496"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.926139" elapsed="0.000555"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:37.927431" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "k "i "l "l ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:37.926834" elapsed="0.000686"/>
</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-19T02:53:37.928106" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:37.927588" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.927569" elapsed="0.000752"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:53:37.928360" elapsed="0.000038"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:53:37.930480" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T02:53:37.931703" elapsed="0.000322"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:37.932400" elapsed="0.000255"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:37.929630" elapsed="0.003121"/>
</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-19T02:53:37.928658" elapsed="0.004240"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:53:37.701687" elapsed="0.231315"/>
</kw>
<msg time="2026-04-19T02:53:37.933113" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:53:37.933158" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.700870" elapsed="0.232324"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:53:37.933379" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:53:37.933271" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.933253" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:37.933855" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:53:37.934200" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:53:37.934272" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:53:37.700244" elapsed="0.234196"/>
</kw>
<msg time="2026-04-19T02:53:37.934536" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:53:37.934580" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:53:37.695849" elapsed="0.238767"/>
</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-19T02:53:37.934937" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:37.934693" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.934675" elapsed="0.000340"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:53:37.695718" elapsed="0.239482"/>
</iter>
<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-19T02:53:37.940151" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.940026" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.940008" elapsed="0.000222"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:53:37.941413" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:37.941284" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:37.941266" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:53:37.941950" level="INFO">${karaf_connection_index} = 14</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-19T02:53:37.941615" elapsed="0.000362"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:37.942379" 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-19T02:53:37.942145" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:53:47.944176" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:53:37.943177" elapsed="10.002005">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:53:47.945418" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:53:47.945468" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:53:37.942556" elapsed="10.002936"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:53:57.947379" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:53:47.946438" elapsed="10.002183">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:53:57.948827" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:53:57.948877" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:53:47.945784" elapsed="10.003118"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:53:57.950173" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_kill.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-19T02:53:57.949355" elapsed="0.000904">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_kill.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:53:57.949013" elapsed="0.001394">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_kill.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:53:57.948983" elapsed="0.001461">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_kill.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-19T02:53:57.950617" elapsed="0.000051"/>
</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-19T02:53:57.950870" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:53:57.950735" elapsed="0.000296"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:53:57.950717" elapsed="0.000386"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:53:57.951140" 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-19T02:53:57.953364" elapsed="0.000472"/>
</kw>
<kw name="Open 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-19T02:53:57.954212" elapsed="0.000327"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:53:57.954995" elapsed="0.000424"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:53:57.952427" elapsed="0.003090"/>
</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-19T02:53:57.951432" elapsed="0.004235"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T02:53:37.940977" elapsed="20.014778">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_kill.robot"</status>
</kw>
<msg time="2026-04-19T02:53:57.955859" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:53:57.955904" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_kill.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-19T02:53:37.940372" elapsed="20.015557"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:53:57.956135" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:57.956007" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:57.955989" elapsed="0.000214"/>
</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-19T02:53:57.956970" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:53:57.956864" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:57.956846" elapsed="0.000238"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:53:57.957399" 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-19T02:53:57.957507" 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-19T02:53:57.957235" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:57.957942" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:57.957677" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:53:57.958394" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:53:57.958149" 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-19T02:53:57.958970" elapsed="0.000452"/>
</kw>
<msg time="2026-04-19T02:53:57.959526" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:53:57.959575" level="INFO">${old_connection_index} = 14</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-19T02:53:57.958585" elapsed="0.001013"/>
</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-19T02:53:57.960779" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:54:07.963118" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:53:57.962233" elapsed="10.001599">No match found for '
' in 10 seconds
Output:
.</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-19T02:53:57.961352" elapsed="10.002613"/>
</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-19T02:54:07.965303" elapsed="0.000362"/>
</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-19T02:54:07.964383" elapsed="0.001363"/>
</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-19T02:53:57.959913" elapsed="10.005924"/>
</kw>
<status status="PASS" start="2026-04-19T02:53:57.959685" elapsed="10.006206"/>
</branch>
<status status="PASS" start="2026-04-19T02:53:57.959662" elapsed="10.006262"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:07.967012" level="INFO">${ip_address} = 10.30.171.206</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-19T02:54:07.966513" elapsed="0.000554"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:54:07.967121" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:54:07.967284" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:54:07.966181" elapsed="0.001129"/>
</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-19T02:54:07.967460" elapsed="0.000429"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:07.968429" level="INFO">index=19
host=10.30.171.206
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-19T02:54:07.968634" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T02:54:07.968075" elapsed="0.000587"/>
</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-19T02:54:07.968808" elapsed="0.002285"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:54:07.971518" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:54:17.992367" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:07.971252" elapsed="10.022023">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:17.996848" elapsed="0.000743"/>
</kw>
<kw name="Open 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-19T02:54:17.997855" elapsed="0.000501"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:17.998574" elapsed="0.000197"/>
</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-19T02:54:17.994490" elapsed="0.004370"/>
</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-19T02:54:17.993782" elapsed="0.005127"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:53:57.956614" elapsed="20.042384">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:17.999378" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:54:17.999457" elapsed="0.000020"/>
</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-19T02:53:37.939730" elapsed="40.059840">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:54:17.999684" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:54:17.999730" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:53:37.935464" elapsed="40.064290"/>
</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-19T02:54:18.000117" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:17.999839" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:17.999819" elapsed="0.000379"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:53:37.935331" elapsed="40.064898"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:53:37.475385" elapsed="40.524880"/>
</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-19T02:53:37.473148" elapsed="40.527177"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T02:53:37.467378" elapsed="40.533006"/>
</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-19T02:53:37.466883" elapsed="40.533555"/>
</kw>
<arg>http_timeout=30</arg>
<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-19T02:53:24.551815" elapsed="53.448678"/>
</kw>
<kw name="Setup_Logging_For_Debug_Purposes_On_List_Or_All" owner="SetupUtils">
<for flavor="IN">
<iter>
<kw name="Run_Karaf_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-19T02:54:18.004108" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:54:18.003682" elapsed="0.000454"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:54:18.004592" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:54:18.004286" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:54:18.004664" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:54:18.004849" level="INFO">${index_list} = [1, 2, 3]</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-19T02:54:18.003368" elapsed="0.001507"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:18.005807" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:54:18.005299" elapsed="0.000536"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:18.006594" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:18.006485" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:18.006466" elapsed="0.000195"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.007927" 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-19T02:54:18.008043" 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-19T02:54:18.007780" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:18.012068" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:18.011922" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:18.011903" elapsed="0.000235"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T02:54:18.012273" elapsed="0.000975"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.014021" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:54:18.242926" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:54:18.013406" elapsed="0.229696"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.312570" level="INFO">@root&gt;log:set info org.opendaylight.controller.remote.rpc</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:54:18.243310" elapsed="0.069327"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.314302" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-19T02:54:18.314401" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:54:18.312799" elapsed="0.001630"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-19T02:54:18.314573" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:18.314915" elapsed="0.000175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:18.315745" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:18.315237" elapsed="0.000559"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:54:18.315841" elapsed="0.000044"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-19T02:54:18.011594" elapsed="0.304402"/>
</kw>
<msg time="2026-04-19T02:54:18.316099" 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-19T02:54:18.008220" elapsed="0.307940"/>
</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-19T02:54:18.318995" 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-19T02:54:18.319497" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:18.319786" 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-19T02:54:18.316708" elapsed="0.003225"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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-19T02:54:18.007346" elapsed="0.312652"/>
</kw>
<msg time="2026-04-19T02:54:18.320320" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:18.006801" elapsed="0.313575"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="PASS" start="2026-04-19T02:54:18.006093" elapsed="0.314377"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:54:18.005171" elapsed="0.315339"/>
</iter>
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:18.321020" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:54:18.320744" elapsed="0.000336"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:18.321865" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:18.321751" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:18.321731" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.323103" 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-19T02:54:18.323204" 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-19T02:54:18.322951" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:18.327260" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:18.327127" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:18.327108" elapsed="0.000219"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T02:54:18.327562" elapsed="0.000961"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.329328" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:54:18.644813" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:54:18.328677" elapsed="0.316333"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.714630" level="INFO">@root&gt;log:set info org.opendaylight.controller.remote.rpc</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:54:18.645298" elapsed="0.069395"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.716868" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-19T02:54:18.716967" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:54:18.714852" elapsed="0.002145"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-19T02:54:18.717161" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:18.717502" elapsed="0.000223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:18.718444" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:18.717875" elapsed="0.000620"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:54:18.718545" elapsed="0.000045"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-19T02:54:18.326778" elapsed="0.391921"/>
</kw>
<msg time="2026-04-19T02:54:18.718747" 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-19T02:54:18.323379" elapsed="0.395420"/>
</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-19T02:54:18.721383" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:54:18.721890" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:18.722461" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:18.719125" elapsed="0.003495"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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-19T02:54:18.322529" elapsed="0.400156"/>
</kw>
<msg time="2026-04-19T02:54:18.722738" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:18.322095" elapsed="0.400691"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="PASS" start="2026-04-19T02:54:18.321356" elapsed="0.401517"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:54:18.320613" elapsed="0.402298"/>
</iter>
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:18.723443" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T02:54:18.723165" elapsed="0.000304"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:18.724254" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:18.724140" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:18.724119" elapsed="0.000204"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.725474" 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-19T02:54:18.725584" 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-19T02:54:18.725338" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:18.729646" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:18.729490" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:18.729471" elapsed="0.000243"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T02:54:18.729851" elapsed="0.000972"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:54:18.731644" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:54:28.795406" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:18.730978" elapsed="10.065294">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:28.796574" elapsed="0.000031"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:28.796749" elapsed="0.000022"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:28.796908" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:28.797075" elapsed="0.000041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:28.797257" elapsed="0.000021"/>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-19T02:54:28.797331" elapsed="0.000024"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="FAIL" start="2026-04-19T02:54:18.729165" elapsed="10.068307">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:54:28.797534" 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="FAIL" start="2026-04-19T02:54:18.725755" elapsed="10.071832"/>
</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-19T02:54:28.800225" elapsed="0.000377"/>
</kw>
<kw name="Open 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-19T02:54:28.800757" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:28.801078" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:28.797964" elapsed="0.003283"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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="FAIL" start="2026-04-19T02:54:18.724891" elapsed="10.076433">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:54:28.801457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T02:54:18.724460" elapsed="10.077046"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="FAIL" start="2026-04-19T02:54:18.723716" elapsed="10.077893">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:54:18.723016" elapsed="10.078662">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T02:54:18.004926" elapsed="10.796814">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</for>
<arg>log:set ${log_level} ${logger}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run karaf command on each.</doc>
<status status="FAIL" start="2026-04-19T02:54:18.002880" elapsed="10.798956">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<var name="${logger}">org.opendaylight.controller.remote.rpc</var>
<status status="FAIL" start="2026-04-19T02:54:18.002675" elapsed="10.799223">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</iter>
<var>${logger}</var>
<value>@{loggers_list}</value>
<status status="FAIL" start="2026-04-19T02:54:18.002540" elapsed="10.799412">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</for>
<arg>${TEST_LOG_LEVEL}</arg>
<arg>${TEST_LOG_COMPONENTS}</arg>
<doc>Set the log level for given loggers on node nodes of the cluster</doc>
<status status="FAIL" start="2026-04-19T02:54:18.000708" elapsed="10.801351">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<doc>FIXME: Add a documentation.</doc>
<status status="FAIL" start="2026-04-19T02:53:24.551497" elapsed="64.250657">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<test id="s1-s16-t1" name="Get_Basic_Rpc_Test_Owner" line="36">
<doc>Find a service owner and successors.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.802239" elapsed="0.000530">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t2" name="Rpc_Before_Stopping_On_Owner" line="40">
<doc>Run rpc on the service owner.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.803037" elapsed="0.000404">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t3" name="Rpc_Before_Stop_On_Successors" line="44">
<doc>Run rpc on non owher cluster nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.803692" elapsed="0.000383">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t4" name="Stop_Current_Owner_Member" line="50">
<doc>Stop cluster node which is the owner.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.804326" elapsed="0.000365">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t5" name="Verify_New_Basic_Rpc_Test_Owner_Elected" line="56">
<doc>Verify new owner of the service is elected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.804951" elapsed="0.000448">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t6" name="Rpc_On_Remained_Cluster_Nodes" line="62">
<doc>Run rpc on remained cluster nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.805654" elapsed="0.000367">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t7" name="Restart_Stopped_Member" line="68">
<doc>Restart stopped node</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.806286" elapsed="0.000342">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t8" name="Verify_New_Owner_Remained_After_Rejoin" line="72">
<doc>Verify no owner change happened after rejoin.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.806833" elapsed="0.000388">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t9" name="Rpc_After_Rejoin_On_New_Owner" line="87">
<doc>Run rpc on the new service owner node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.807453" elapsed="0.000384">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t10" name="Rpc_After_Rejoin_On_Old_Owner" line="91">
<doc>Run rpc on rejoined cluster node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.808018" elapsed="0.000351">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s16-t11" name="Rpc_After_Rejoin_On_All" line="95">
<doc>Run rpc again on all nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:54:28.808533" elapsed="0.000306">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T02:54:28.809313" elapsed="0.000311"/>
</kw>
<doc>Controller functional HA testing of global singleton rpcs.

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html</doc>
<status status="FAIL" start="2026-04-19T02:53:24.482868" elapsed="64.326793">Suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</suite>
<suite id="s1-s17" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.924473" 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-19T02:54:28.920129" elapsed="0.004398"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T02:54:28.919852" elapsed="0.004745"/>
</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-19T02:54:28.930175" 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-19T02:54:28.925707" elapsed="0.004497"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T02:54:28.930489" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:28.930293" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:28.930269" elapsed="0.000297"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.931099" 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-19T02:54:28.930726" elapsed="0.000434"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.931659" level="INFO">${cluster_size} = 3</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-19T02:54:28.931329" elapsed="0.000357"/>
</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-19T02:54:28.932223" elapsed="0.000303"/>
</kw>
<msg time="2026-04-19T02:54:28.932628" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:54:28.932676" level="INFO">${possibly_int_of_members} = 3</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-19T02:54:28.931855" elapsed="0.000845"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.933276" level="INFO">${int_of_members} = 3</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-19T02:54:28.932875" elapsed="0.000428"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.934327" 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-19T02:54:28.934037" elapsed="0.000318"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.934772" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:54:28.934509" elapsed="0.000290"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.935313" 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-19T02:54:28.934963" elapsed="0.000378"/>
</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-19T02:54:28.939087" elapsed="0.000257"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.939839" level="INFO">${member_ip} = 10.30.171.9</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-19T02:54:28.939509" elapsed="0.000357"/>
</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-19T02:54:28.940023" elapsed="0.000424"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.941276" 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-19T02:54:28.940944" elapsed="0.000360"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:54:28.941351" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:54:28.941515" 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-19T02:54:28.940645" elapsed="0.000896"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:54:28.942155" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7ede510&gt;, timeout=125, 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-19T02:54:28.941703" elapsed="0.000592"/>
</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-19T02:54:28.942458" 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-19T02:54:28.938367" elapsed="0.004341"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:54:28.938168" elapsed="0.004585"/>
</iter>
<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-19T02:54:28.943871" elapsed="0.000245"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.944668" level="INFO">${member_ip} = 10.30.171.128</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-19T02:54:28.944282" elapsed="0.000414"/>
</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-19T02:54:28.944854" elapsed="0.000251"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.945902" level="INFO">${session} = ClusterManagement__session_2</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-19T02:54:28.945601" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:54:28.945974" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:54:28.946145" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T02:54:28.945301" elapsed="0.000870"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:54:28.946789" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6fb9f50&gt;, timeout=125, 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-19T02:54:28.946378" elapsed="0.000516"/>
</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-19T02:54:28.947074" elapsed="0.000193"/>
</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-19T02:54:28.943235" elapsed="0.004120"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:54:28.942841" elapsed="0.004583"/>
</iter>
<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-19T02:54:28.948273" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.948946" level="INFO">${member_ip} = 10.30.171.206</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-19T02:54:28.948621" elapsed="0.000353"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T02:54:28.949146" elapsed="0.000222"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.950171" level="INFO">${session} = ClusterManagement__session_3</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-19T02:54:28.949854" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T02:54:28.950243" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:54:28.950396" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T02:54:28.949560" elapsed="0.000862"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T02:54:28.950983" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f72cb350&gt;, timeout=125, 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-19T02:54:28.950578" elapsed="0.000529"/>
</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-19T02:54:28.951289" elapsed="0.000289"/>
</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-19T02:54:28.947697" elapsed="0.003965"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:54:28.947515" elapsed="0.004205"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T02:54:28.935398" elapsed="0.016363"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.952371" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T02:54:28.951954" elapsed="0.000462"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.953112" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T02:54:28.952608" elapsed="0.000551"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.953715" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T02:54:28.953325" elapsed="0.000433"/>
</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-19T02:54:28.933571" elapsed="0.020245"/>
</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-19T02:54:28.925358" elapsed="0.028516"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:28.954083" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:28.953942" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:28.953923" elapsed="0.000229"/>
</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-19T02:54:28.957621" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:54:28.957233" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.958141" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:54:28.957810" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:54:28.958251" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:54:28.958415" level="INFO">${index_list} = [1, 2, 3]</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-19T02:54:28.956880" elapsed="0.001561"/>
</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-19T02:54:28.959458" level="INFO">${member_ip} = 10.30.171.9</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-19T02:54:28.959192" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:28.960537" 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-19T02:54:28.960662" 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-19T02:54:28.960320" elapsed="0.000380"/>
</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-19T02:54:28.963598" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:28.963274" elapsed="0.000516"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:28.963255" elapsed="0.000563"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:28.964128" 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-19T02:54:28.964255" 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-19T02:54:28.963972" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.965394" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:28.964439" elapsed="0.001005"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:28.966268" 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-19T02:54:28.965603" elapsed="0.000692"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:54:28.967607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:54:28.967846" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:54:28.967057" elapsed="0.000837"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:28.968198" elapsed="0.000592"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:54:28.970402" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:54:29.563639" 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 Sun Apr 19 02:54:29 UTC 2026

  System load:  0.15               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:53:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:54:28.969858" elapsed="0.594002"/>
</kw>
<msg time="2026-04-19T02:54:29.563972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:28.969129" elapsed="0.595046"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:54:28.966513" elapsed="0.597913"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:54:29.565031" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:54:29.577704" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:54:29.578086" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:54:29.578192" 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-19T02:54:29.564689" elapsed="0.013666"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:29.578731" elapsed="0.000498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:29.580757" 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-19T02:54:29.579649" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:54:29.581866" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:29.581431" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:29.581299" elapsed="0.000775"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:54:29.582503" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T02:54:29.582212" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:29.582175" elapsed="0.000514"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:54:29.582765" 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-19T02:54:29.587592" elapsed="0.000756"/>
</kw>
<kw name="Open 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-19T02:54:29.588579" elapsed="0.000437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:29.589245" elapsed="0.000191"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:29.583539" elapsed="0.005979"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:54:28.962752" elapsed="0.626868"/>
</kw>
<msg time="2026-04-19T02:54:29.589675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:28.961932" elapsed="0.627799"/>
</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-19T02:54:28.961422" elapsed="0.628392"/>
</kw>
<msg time="2026-04-19T02:54:29.589854" 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-19T02:54:28.960870" elapsed="0.629029"/>
</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-19T02:54:29.592828" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:54:29.593347" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:29.593642" 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-19T02:54:29.590208" elapsed="0.003581"/>
</kw>
<msg time="2026-04-19T02:54:29.593880" 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-19T02:54:28.959822" elapsed="0.634082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:29.594347" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:29.594098" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:54:29.594431" 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-19T02:54:28.958815" elapsed="0.635740"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:54:28.958637" elapsed="0.635956"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:29.595545" level="INFO">${member_ip} = 10.30.171.128</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-19T02:54:29.595271" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:29.596310" 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-19T02:54:29.596410" 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-19T02:54:29.596175" elapsed="0.000262"/>
</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-19T02:54:29.599468" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:29.599151" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:29.599123" elapsed="0.000530"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:29.599931" 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-19T02:54:29.600071" 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-19T02:54:29.599803" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:29.601154" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:29.600253" elapsed="0.000949"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:29.602059" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:54:29.601398" elapsed="0.000691"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:54:29.603438" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:54:29.603674" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:54:29.602854" elapsed="0.000877"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:29.604017" elapsed="0.000641"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:54:29.606179" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:54:30.214734" 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 Sun Apr 19 02:54:29 UTC 2026

  System load:  0.26               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:53:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:54:29.605764" elapsed="0.609190"/>
</kw>
<msg time="2026-04-19T02:54:30.215089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:29.604981" elapsed="0.610286"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:54:29.602308" elapsed="0.613209"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.216121" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:54:30.229057" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:54:30.229278" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:54:30.229341" 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-19T02:54:30.215781" elapsed="0.013594"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.229609" elapsed="0.000359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.230974" 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-19T02:54:30.230295" 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-19T02:54:30.231434" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:30.231202" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:30.231166" elapsed="0.000370"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:54:30.231818" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-04-19T02:54:30.231612" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:30.231590" elapsed="0.000374"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:54:30.232011" elapsed="0.000025"/>
</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-19T02:54:30.236694" elapsed="0.001040"/>
</kw>
<kw name="Open 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-19T02:54:30.238167" elapsed="0.000564"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.238997" elapsed="0.000308"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:30.232484" elapsed="0.006939"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:54:29.598577" elapsed="0.640977"/>
</kw>
<msg time="2026-04-19T02:54:30.239628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:29.597683" elapsed="0.642015"/>
</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-19T02:54:29.597123" elapsed="0.642686"/>
</kw>
<msg time="2026-04-19T02:54:30.239866" 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-19T02:54:29.596594" elapsed="0.643334"/>
</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-19T02:54:30.243949" 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-19T02:54:30.244528" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.244821" 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-19T02:54:30.240365" elapsed="0.004603"/>
</kw>
<msg time="2026-04-19T02:54:30.245077" 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-19T02:54:29.595793" elapsed="0.649311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.245528" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:30.245282" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:54:30.245611" 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-19T02:54:29.594873" elapsed="0.650863"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:54:29.594690" elapsed="0.651084"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:30.246713" level="INFO">${member_ip} = 10.30.171.206</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-19T02:54:30.246441" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.247492" 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-19T02:54:30.247592" 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-19T02:54:30.247345" elapsed="0.000273"/>
</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-19T02:54:30.250299" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:30.249943" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:30.249924" elapsed="0.000563"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.250765" 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-19T02:54:30.250885" 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-19T02:54:30.250636" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.251969" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:30.251081" elapsed="0.000935"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.252819" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:54:30.252191" elapsed="0.000692"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.254232" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:54:30.254428" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:54:30.253647" elapsed="0.000828"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:30.254750" elapsed="0.000609"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.256994" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:54:30.857123" 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 Sun Apr 19 02:54:30 UTC 2026

  System load:  0.0                Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:53:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:54:30.256604" elapsed="0.600737"/>
</kw>
<msg time="2026-04-19T02:54:30.857449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:30.255677" elapsed="0.601964"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:54:30.253133" elapsed="0.604758"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.858495" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T02:54:30.871362" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T02:54:30.871699" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:54:30.871798" 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-19T02:54:30.858170" elapsed="0.013682"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.872264" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.874291" 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-19T02:54:30.873174" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:54:30.875093" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:30.874644" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:30.874578" elapsed="0.000677"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:54:30.875662" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:54:30.875375" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:30.875341" elapsed="0.000509"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:54:30.875923" 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-19T02:54:30.881403" elapsed="0.001151"/>
</kw>
<kw name="Open 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-19T02:54:30.882892" elapsed="0.000618"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.883792" elapsed="0.000301"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:30.876644" elapsed="0.007569"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:54:30.249460" elapsed="0.634894"/>
</kw>
<msg time="2026-04-19T02:54:30.884432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:30.248786" elapsed="0.635721"/>
</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-19T02:54:30.248302" elapsed="0.636323"/>
</kw>
<msg time="2026-04-19T02:54:30.884685" 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-19T02:54:30.247771" elapsed="0.637057"/>
</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-19T02:54:30.888426" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:54:30.888911" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.889238" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:30.885309" elapsed="0.004079"/>
</kw>
<msg time="2026-04-19T02:54:30.889478" 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-19T02:54:30.246958" elapsed="0.642546"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.889930" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:30.889681" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:54:30.890034" elapsed="0.000106"/>
</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-19T02:54:30.246081" elapsed="0.644158"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:54:30.245870" elapsed="0.644406"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:54:28.958505" elapsed="1.931806"/>
</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-19T02:54:28.954377" elapsed="1.935993"/>
</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-19T02:54:30.890528" elapsed="0.000215"/>
</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-19T02:54:30.905227" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:30.905113" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:30.905094" elapsed="0.000201"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.905583" 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-19T02:54:30.905686" 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-19T02:54:30.905448" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.906137" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:30.905863" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:30.906611" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:30.906365" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:30.907431" 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-19T02:54:30.907196" elapsed="0.000352">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T02:54:30.907655" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:54:30.907700" 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-19T02:54:30.906815" elapsed="0.000907"/>
</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-19T02:54:30.908022" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:30.907797" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:30.907779" elapsed="0.000359"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:30.908878" level="INFO">${ip_address} = 10.30.171.9</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-19T02:54:30.908612" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:54:30.908951" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:54:30.909117" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:54:30.908340" elapsed="0.000801"/>
</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-19T02:54:30.909296" elapsed="0.000393"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.909960" level="INFO">index=10
host=10.30.171.9
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-19T02:54:30.910131" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.909856" elapsed="0.000302"/>
</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-19T02:54:30.910360" elapsed="0.002396"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:54:30.913200" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:54:31.104284" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:54:30.912922" elapsed="0.191479"/>
</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-19T02:54:31.108152" 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-19T02:54:31.108667" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:31.108979" 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-19T02:54:31.105457" elapsed="0.003695"/>
</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-19T02:54:31.104789" elapsed="0.004410"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:54:30.904797" elapsed="0.204456"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:54:30.891481" elapsed="0.217820"/>
</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-19T02:54:30.891107" elapsed="0.218248"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:54:30.890949" elapsed="0.218447"/>
</iter>
<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-19T02:54:31.123323" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:31.123202" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:31.123180" elapsed="0.000216"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:31.123700" 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-19T02:54:31.123831" 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-19T02:54:31.123562" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:31.124303" 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-19T02:54:31.124019" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:31.124736" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:31.124498" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:31.125580" level="FAIL">Dictionary does not contain key '2'.</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-19T02:54:31.125354" elapsed="0.000332">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T02:54:31.125800" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:54:31.125846" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T02:54:31.124971" elapsed="0.000898"/>
</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-19T02:54:31.126185" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:31.125944" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:31.125926" elapsed="0.000420"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:31.127109" level="INFO">${ip_address} = 10.30.171.128</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-19T02:54:31.126825" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:54:31.127185" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:54:31.127339" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:54:31.126550" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:54:31.127519" elapsed="0.000404"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:31.128215" level="INFO">index=12
host=10.30.171.128
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-19T02:54:31.128315" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T02:54:31.128109" 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-19T02:54:31.128489" elapsed="0.002672"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:54:31.131749" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:54:31.387429" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T02:54:31.131395" elapsed="0.256195"/>
</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-19T02:54:31.391246" 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-19T02:54:31.391724" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:31.392077" elapsed="0.000109"/>
</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-19T02:54:31.388765" elapsed="0.003478"/>
</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-19T02:54:31.388077" elapsed="0.004214"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T02:54:31.122893" elapsed="0.269452"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:54:31.110013" elapsed="0.282383"/>
</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-19T02:54:31.109642" elapsed="0.282808"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:54:31.109499" elapsed="0.282995"/>
</iter>
<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-19T02:54:31.406422" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:31.406299" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:31.406278" elapsed="0.000219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:31.406793" 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-19T02:54:31.406901" 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-19T02:54:31.406654" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:31.407486" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:31.407099" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:31.407940" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:31.407690" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:31.408791" level="FAIL">Dictionary does not contain key '3'.</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-19T02:54:31.408554" elapsed="0.000350">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T02:54:31.409014" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:54:31.409085" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T02:54:31.408184" elapsed="0.000926"/>
</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-19T02:54:31.409417" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:31.409188" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:31.409170" elapsed="0.000346"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:31.410498" level="INFO">${ip_address} = 10.30.171.206</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-19T02:54:31.410219" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:54:31.410577" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:54:31.410740" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:54:31.409717" elapsed="0.001049"/>
</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-19T02:54:31.410923" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:31.411626" level="INFO">index=14
host=10.30.171.206
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-19T02:54:31.411728" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T02:54:31.411518" elapsed="0.000236"/>
</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-19T02:54:31.411904" elapsed="0.002425"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:54:31.414759" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:54:41.478426" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:31.414498" elapsed="10.064722">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:41.483047" 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-19T02:54:41.483532" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:41.483844" 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-19T02:54:41.480394" elapsed="0.003603"/>
</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-19T02:54:41.479682" elapsed="0.004377"/>
</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-19T02:54:31.405993" elapsed="10.078151">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:54:41.484236" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:31.393169" elapsed="10.091161">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:31.392741" elapsed="10.091654"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:54:31.392597" elapsed="10.091842"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T02:54:30.890798" elapsed="10.593767"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T02:54:28.924897" elapsed="12.559735"/>
</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-19T02:54:41.487396" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.487278" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.487256" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:41.492435" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.492328" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.492310" elapsed="0.000193"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:54:41.493516" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:54:41.493096" elapsed="0.000448"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:54:41.494010" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:54:41.493705" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:54:41.494109" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:54:41.494274" level="INFO">${index_list} = [1, 2, 3]</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-19T02:54:41.492747" elapsed="0.001551"/>
</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-19T02:54:41.499794" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.499686" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.499667" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:41.500911" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.500803" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.500786" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:41.501453" 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-19T02:54:41.501137" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:41.501831" 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-19T02:54:41.501638" elapsed="0.000218"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:54:41.556646" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:54:41.502371" elapsed="0.054417"/>
</kw>
<msg time="2026-04-19T02:54:41.556896" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:54:41.556943" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.502012" elapsed="0.054985"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:54:41.631879" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:54:41.557544" elapsed="0.074733"/>
</kw>
<msg time="2026-04-19T02:54:41.632490" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:54:41.632538" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.557192" elapsed="0.075385"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:41.633152" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:41.632715" elapsed="0.000502"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.632669" elapsed="0.000575"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:41.633795" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:41.633398" elapsed="0.000658"/>
</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-19T02:54:41.636594" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:41.634135" elapsed="0.002517"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.634114" elapsed="0.002562"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:54:41.636718" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:41.638223" 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-19T02:54:41.639203" elapsed="0.000537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:41.640048" elapsed="0.000220"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:41.637717" elapsed="0.002701"/>
</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-19T02:54:41.637104" elapsed="0.003366"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:54:41.500549" elapsed="0.140022"/>
</kw>
<msg time="2026-04-19T02:54:41.640664" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:54:41.640711" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.500011" elapsed="0.140737"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:54:41.640933" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T02:54:41.640825" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.640806" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:41.641464" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:41.641818" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:54:41.641917" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:54:41.499389" elapsed="0.142638"/>
</kw>
<msg time="2026-04-19T02:54:41.642141" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:54:41.642186" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.494669" elapsed="0.147554"/>
</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-19T02:54:41.642554" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:41.642300" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.642282" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:54:41.494526" elapsed="0.148138"/>
</iter>
<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-19T02:54:41.648380" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.648270" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.648250" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:41.649504" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.649397" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.649379" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:41.650017" level="INFO">${karaf_connection_index} = 12</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-19T02:54:41.649714" elapsed="0.000356"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:41.650432" 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-19T02:54:41.650234" elapsed="0.000224"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:54:41.709155" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T02:54:41.650948" elapsed="0.058389"/>
</kw>
<msg time="2026-04-19T02:54:41.709556" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T02:54:41.709605" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.650616" elapsed="0.059027"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:54:41.780829" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T02:54:41.710303" elapsed="0.070719"/>
</kw>
<msg time="2026-04-19T02:54:41.781156" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T02:54:41.781208" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.709850" elapsed="0.071395"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:41.781592" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:41.781337" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.781311" elapsed="0.000364"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:54:41.782133" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:54:41.781821" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:41.782533" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:41.782298" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.782279" elapsed="0.000331"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T02:54:41.782648" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:54:41.784020" elapsed="0.000904"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:54:41.785286" elapsed="0.000521"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:54:41.786113" elapsed="0.000232"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:54:41.783561" elapsed="0.002939"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T02:54:41.782975" elapsed="0.003574"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T02:54:41.649142" elapsed="0.137509"/>
</kw>
<msg time="2026-04-19T02:54:41.786743" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:54:41.786789" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.648602" elapsed="0.138225"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T02:54:41.787011" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T02:54:41.786904" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.786886" elapsed="0.000226"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:41.787518" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T02:54:41.787862" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:54:41.787934" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T02:54:41.647950" elapsed="0.140107"/>
</kw>
<msg time="2026-04-19T02:54:41.788154" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:54:41.788198" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T02:54:41.642946" elapsed="0.145289"/>
</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-19T02:54:41.788613" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:54:41.788357" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.788338" elapsed="0.000352"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:54:41.642801" elapsed="0.145913"/>
</iter>
<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-19T02:54:41.794604" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.794488" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.794466" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T02:54:41.795897" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:54:41.795790" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T02:54:41.795771" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:54:41.796430" level="INFO">${karaf_connection_index} = 14</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-19T02:54:41.796160" elapsed="0.000297"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:54:41.796811" 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-19T02:54:41.796615" elapsed="0.000222"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:54:51.798189" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:54:41.797370" elapsed="10.001608">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:54:51.799214" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T02:54:51.799265" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T02:54:41.796996" elapsed="10.002294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T02:55:01.800771" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:54:51.800061" elapsed="10.001345">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:55:01.801608" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T02:55:01.801659" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T02:54:51.799584" elapsed="10.002101"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T02:55:01.802822" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:55:01.802180" elapsed="0.000708">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T02:55:01.801821" elapsed="0.001139">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T02:55:01.801783" elapsed="0.001213">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T02:55:01.803186" 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-19T02:55:01.803418" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:01.803276" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-04-19T02:55:01.803258" elapsed="0.000234"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T02:55:01.803530" elapsed="0.000016"/>
</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-19T02:55:01.805431" elapsed="0.000648"/>
</kw>
<kw name="Open 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-19T02:55:01.806403" elapsed="0.000536"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:01.807259" elapsed="0.000213"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:01.804949" elapsed="0.002685"/>
</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-19T02:55:01.803850" elapsed="0.003837"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="FAIL" start="2026-04-19T02:54:41.795537" elapsed="20.012298">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T02:55:01.807940" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:55:01.807987" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T02:54:41.794828" elapsed="20.013183"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:55:01.808242" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:01.808129" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:01.808109" elapsed="0.000200"/>
</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-19T02:55:01.809084" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:01.808962" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:01.808945" elapsed="0.000206"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:01.809453" 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-19T02:55:01.809557" 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-19T02:55:01.809304" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:01.810006" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:01.809739" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:01.810464" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:01.810220" elapsed="0.000296"/>
</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-19T02:55:01.811052" elapsed="0.000227"/>
</kw>
<msg time="2026-04-19T02:55:01.811377" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T02:55:01.811422" level="INFO">${old_connection_index} = 14</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-19T02:55:01.810674" elapsed="0.000771"/>
</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-19T02:55:01.812275" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T02:55:11.814314" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T02:55:01.813304" elapsed="10.002646">No match found for '
' in 10 seconds
Output:
.</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-19T02:55:01.812721" elapsed="10.003452"/>
</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-19T02:55:11.817185" elapsed="0.000477"/>
</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-19T02:55:11.816491" elapsed="0.001310"/>
</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-19T02:55:01.811740" elapsed="10.006111"/>
</kw>
<status status="PASS" start="2026-04-19T02:55:01.811519" elapsed="10.006385"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:01.811500" elapsed="10.006440"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:11.819156" level="INFO">${ip_address} = 10.30.171.206</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-19T02:55:11.818853" elapsed="0.000331"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T02:55:11.819237" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:55:11.819399" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T02:55:11.818516" elapsed="0.000908"/>
</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-19T02:55:11.819586" elapsed="0.000669"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:11.820551" level="INFO">index=19
host=10.30.171.206
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-19T02:55:11.820656" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T02:55:11.820429" elapsed="0.000254"/>
</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-19T02:55:11.820839" elapsed="0.002825"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T02:55:11.824126" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T02:55:21.892992" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:55:11.823844" elapsed="10.070072">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:55:21.897946" elapsed="0.000659"/>
</kw>
<kw name="Open 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-19T02:55:21.898788" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:21.899148" elapsed="0.000128"/>
</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-19T02:55:21.895188" elapsed="0.004160"/>
</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-19T02:55:21.894456" elapsed="0.004955"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T02:55:01.808715" elapsed="20.090805">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:55:21.899922" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T02:55:21.900003" elapsed="0.000038"/>
</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-19T02:54:41.794103" elapsed="40.106036">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T02:55:21.900266" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T02:55:21.900311" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T02:54:41.788993" elapsed="40.111342"/>
</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-19T02:55:21.900690" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:21.900423" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:21.900402" elapsed="0.000379"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:54:41.788849" elapsed="40.111966"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:54:41.494352" elapsed="40.406501"/>
</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-19T02:54:41.492024" elapsed="40.408891"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T02:54:41.485253" elapsed="40.415722"/>
</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-19T02:54:41.484794" elapsed="40.416251"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T02:54:28.919463" elapsed="52.981642"/>
</kw>
<test id="s1-s17-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:55:21.907327" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:55:21.906905" elapsed="0.000451"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:55:21.907859" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:55:21.907525" elapsed="0.000362"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:55:21.907935" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:55:21.908125" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T02:55:21.906501" elapsed="0.001654"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T02:55:21.909244" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:55:21.908772" elapsed="0.000500"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:55:21.909770" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:55:21.909447" elapsed="0.000436"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:55:21.909935" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:55:21.910125" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T02:55:21.908377" elapsed="0.001775"/>
</kw>
<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-19T02:55:21.911671" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T02:55:21.911281" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:55:21.912198" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T02:55:21.911869" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T02:55:21.912271" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:21.912429" level="INFO">${index_list} = [1, 2, 3]</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-19T02:55:21.910881" elapsed="0.001575"/>
</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-19T02:55:21.913551" level="INFO">${member_ip} = 10.30.171.9</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-19T02:55:21.913277" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:21.914366" 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-19T02:55:21.914472" 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-19T02:55:21.914223" elapsed="0.000275"/>
</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-19T02:55:21.917640" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:21.917271" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:21.917245" elapsed="0.000495"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:21.918100" 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-19T02:55:21.918219" 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-19T02:55:21.917926" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:21.919057" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:21.918437" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:21.919897" 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-19T02:55:21.919336" elapsed="0.000598"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:21.921673" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:21.921859" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:21.920828" elapsed="0.001066"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:21.922186" elapsed="0.001024"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:21.926382" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:22.236904" 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 Sun Apr 19 02:54:29 UTC 2026

  System load:  0.15               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:54:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:55:21.925541" elapsed="0.311842"/>
</kw>
<msg time="2026-04-19T02:55:22.237602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:21.923533" elapsed="0.314286"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:21.920246" elapsed="0.317772"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:22.238571" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:55:22.584523" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:22.584799" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:55:22.584902" 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-19T02:55:22.238301" elapsed="0.346653"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:22.585421" elapsed="0.000505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:22.587133" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:22.586382" elapsed="0.000849"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:22.587727" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:22.587407" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:22.587356" elapsed="0.000527"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:22.588298" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T02:55:22.588005" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:22.587971" elapsed="0.000523"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:22.588570" 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-19T02:55:22.609657" elapsed="0.000566"/>
</kw>
<kw name="Open 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-19T02:55:22.610390" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:22.610700" elapsed="0.000096"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:22.589302" elapsed="0.021546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:21.916502" elapsed="0.694439"/>
</kw>
<msg time="2026-04-19T02:55:22.610998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:21.915873" elapsed="0.695418"/>
</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-19T02:55:21.915184" elapsed="0.696193"/>
</kw>
<msg time="2026-04-19T02:55:22.611419" 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-19T02:55:21.914653" elapsed="0.696811"/>
</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-19T02:55:22.614480" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:55:22.614954" elapsed="0.000348"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:22.615453" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:22.611758" elapsed="0.003844"/>
</kw>
<msg time="2026-04-19T02:55:22.615693" 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-19T02:55:21.913794" elapsed="0.701925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:22.616167" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:22.615902" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:22.616254" 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-19T02:55:21.912823" elapsed="0.703556"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:55:21.912645" elapsed="0.703772"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:22.617416" level="INFO">${member_ip} = 10.30.171.128</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-19T02:55:22.617121" elapsed="0.000331"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:22.618306" 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-19T02:55:22.618408" 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-19T02:55:22.618158" elapsed="0.000279"/>
</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-19T02:55:22.621272" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:22.620978" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:22.620960" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:22.621645" 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-19T02:55:22.621744" 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-19T02:55:22.621517" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:22.622419" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:22.621923" elapsed="0.000543"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:22.623066" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:22.622620" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:22.624329" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:22.624461" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:22.623739" elapsed="0.000747"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:22.624675" elapsed="0.000942"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:22.628304" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:22.981996" 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 Sun Apr 19 02:54:29 UTC 2026

  System load:  0.26               Processes:             123
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:54:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:55:22.627634" elapsed="0.354569"/>
</kw>
<msg time="2026-04-19T02:55:22.982322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:22.625857" elapsed="0.356639"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:22.623307" elapsed="0.359348"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:22.983082" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:55:23.339915" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:23.340328" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:55:23.340428" 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-19T02:55:22.982844" elapsed="0.357638"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:23.340966" elapsed="0.000630"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:23.342856" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:23.342093" elapsed="0.000862"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:23.343524" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:23.343195" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:23.343134" 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-19T02:55:23.344103" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:55:23.343820" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:23.343785" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:23.344525" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:23.364362" elapsed="0.000550"/>
</kw>
<kw name="Open 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-19T02:55:23.365093" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:23.365410" 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-19T02:55:23.345340" elapsed="0.020219"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:22.620444" elapsed="0.745209"/>
</kw>
<msg time="2026-04-19T02:55:23.365711" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:22.619679" elapsed="0.746091"/>
</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-19T02:55:22.619145" elapsed="0.746744"/>
</kw>
<msg time="2026-04-19T02:55:23.365932" 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-19T02:55:22.618595" elapsed="0.747385"/>
</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-19T02:55:23.369192" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:55:23.369667" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:23.369984" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:23.366288" elapsed="0.003860"/>
</kw>
<msg time="2026-04-19T02:55:23.370243" 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-19T02:55:22.617728" elapsed="0.752540"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:23.370697" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:23.370451" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:23.370779" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:22.616695" elapsed="0.754208"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:55:22.616512" elapsed="0.754430"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:23.372299" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:23.372009" elapsed="0.000317"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:23.373110" 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-19T02:55:23.373210" 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-19T02:55:23.372959" elapsed="0.000277"/>
</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-19T02:55:23.376243" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:23.375885" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:23.375866" elapsed="0.000459"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:23.376600" 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-19T02:55:23.376700" 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-19T02:55:23.376473" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:23.377370" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:23.376878" elapsed="0.000576"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:23.378066" 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-19T02:55:23.377614" elapsed="0.000479"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:23.379330" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:23.379462" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:23.378746" elapsed="0.000741"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:23.379676" elapsed="0.000722"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:23.382699" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:23.713131" 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 Sun Apr 19 02:54:30 UTC 2026

  System load:  0.0                Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:54:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:23.382103" elapsed="0.331280"/>
</kw>
<msg time="2026-04-19T02:55:23.713529" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:23.380633" elapsed="0.333092"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:23.378313" elapsed="0.335605"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:23.714571" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T02:55:24.102250" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T02:55:24.102633" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T02:55:24.102734" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T02:55:23.714251" elapsed="0.388541"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:24.103331" elapsed="0.000605"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.105180" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:24.104395" elapsed="0.000890"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:24.105769" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:24.105464" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:24.105409" 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-19T02:55:24.106340" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:55:24.106080" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:24.106012" elapsed="0.000526"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:24.106614" 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-19T02:55:24.124123" elapsed="0.000553"/>
</kw>
<kw name="Open 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-19T02:55:24.124841" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:24.125170" 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-19T02:55:24.107359" elapsed="0.017965"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:23.375356" elapsed="0.750060"/>
</kw>
<msg time="2026-04-19T02:55:24.125471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:23.374727" elapsed="0.750800"/>
</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-19T02:55:23.374188" elapsed="0.751416"/>
</kw>
<msg time="2026-04-19T02:55:24.125710" 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-19T02:55:23.373391" elapsed="0.752366"/>
</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-19T02:55:24.129091" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:55:24.129566" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:24.129857" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:24.126068" elapsed="0.003936"/>
</kw>
<msg time="2026-04-19T02:55:24.130113" 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-19T02:55:23.372550" elapsed="0.757588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.130582" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:24.130329" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:24.130665" 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-19T02:55:23.371596" elapsed="0.759191"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T02:55:23.371404" elapsed="0.759421"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T02:55:21.912512" elapsed="2.218348"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T02:55:21.910365" elapsed="2.220556"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.131440" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T02:55:24.131128" elapsed="0.000339"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T02:55:24.131620" elapsed="0.000225"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T02:55:24.132022" elapsed="0.000363"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:24.131917" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:24.131898" elapsed="0.000539"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.134399" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:24.134082" elapsed="0.000344"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:24.135368" level="INFO">${member_ip} = 10.30.171.9</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-19T02:55:24.135021" elapsed="0.000373"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:24.136168" 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-19T02:55:24.136266" 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-19T02:55:24.136017" elapsed="0.000275"/>
</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-19T02:55:24.140376" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:24.139881" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:24.139822" elapsed="0.000703"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:24.142213" 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-19T02:55:24.142489" 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-19T02:55:24.141677" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.144761" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:24.143971" elapsed="0.000913"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:24.146951" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:24.146210" elapsed="0.000974"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.149745" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:24.149821" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:24.149468" 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-19T02:55:24.150083" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:24.151861" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:24.502153" 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 Sun Apr 19 02:54:29 UTC 2026

  System load:  0.15               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:55:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:55:24.151373" elapsed="0.350973"/>
</kw>
<msg time="2026-04-19T02:55:24.502443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:24.150811" elapsed="0.351722"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:24.148628" elapsed="0.354239"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:24.504600" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:24.516699" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:24.517292" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:24.517667" 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-19T02:55:24.504179" elapsed="0.013734"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:24.520571" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.524000" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:24.522985" elapsed="0.001307"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:24.525284" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:24.524673" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:24.524537" elapsed="0.001064"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:24.526786" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T02:55:24.525951" elapsed="0.001069"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:24.525833" elapsed="0.001365"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:24.527390" elapsed="0.000090"/>
</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-19T02:55:24.532542" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:24.533115" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:24.533477" 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-19T02:55:24.528969" elapsed="0.004724"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:24.138173" elapsed="0.395767"/>
</kw>
<msg time="2026-04-19T02:55:24.534382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:24.137492" elapsed="0.396974"/>
</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-19T02:55:24.136946" elapsed="0.397603"/>
</kw>
<msg time="2026-04-19T02:55:24.534591" 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-19T02:55:24.136445" elapsed="0.398191"/>
</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-19T02:55:24.537589" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:55:24.538314" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:24.538640" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:24.534926" elapsed="0.003864"/>
</kw>
<msg time="2026-04-19T02:55:24.538882" level="INFO">${output} = 1</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-19T02:55:24.135608" elapsed="0.403300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.539353" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:24.539105" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:24.539440" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:55:24.539592" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:24.134622" elapsed="0.404996"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:24.539666" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:55:24.539811" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:24.133727" elapsed="0.406108"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:24.540403" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:24.539992" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:24.133335" elapsed="0.407264">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:26.544099" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:26.543312" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:26.546208" level="INFO">${member_ip} = 10.30.171.9</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-19T02:55:26.545574" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:26.548079" 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-19T02:55:26.548305" 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-19T02:55:26.547719" elapsed="0.000646"/>
</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-19T02:55:26.556589" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:26.555845" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:26.553253" elapsed="0.003499"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:26.558462" 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-19T02:55:26.558739" 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-19T02:55:26.557930" elapsed="0.000927"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:26.560721" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:26.560151" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:26.562751" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:26.561983" elapsed="0.000881"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:26.565459" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:26.565536" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:26.565176" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:26.565783" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:26.567316" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:26.874369" 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 Sun Apr 19 02:54:29 UTC 2026

  System load:  0.15               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:55:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:55:26.566977" elapsed="0.307558"/>
</kw>
<msg time="2026-04-19T02:55:26.874637" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:26.566422" elapsed="0.308313"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:26.564342" elapsed="0.310730"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:26.876803" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:26.898775" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:26.899361" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:26.899763" 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-19T02:55:26.876380" elapsed="0.023629"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:26.902628" elapsed="0.000952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:26.906068" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:26.905053" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:26.907274" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:26.906713" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:26.906577" elapsed="0.001022"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:26.908675" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T02:55:26.908219" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:26.907904" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:26.908942" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:26.914413" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:55:26.914964" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:26.915349" 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-19T02:55:26.910677" elapsed="0.004890"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:26.551161" elapsed="0.364676"/>
</kw>
<msg time="2026-04-19T02:55:26.916270" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:26.550164" elapsed="0.366164"/>
</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-19T02:55:26.549405" elapsed="0.367003"/>
</kw>
<msg time="2026-04-19T02:55:26.916449" 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-19T02:55:26.548655" elapsed="0.367840"/>
</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-19T02:55:26.919458" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:55:26.919950" elapsed="0.000321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:26.920422" 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-19T02:55:26.916783" elapsed="0.003789"/>
</kw>
<msg time="2026-04-19T02:55:26.920664" level="INFO">${output} = 1</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-19T02:55:26.546742" elapsed="0.373947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:26.921187" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:26.920922" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:26.921274" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:26.921425" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:26.544626" elapsed="0.376824"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:26.921497" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:55:26.921640" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:26.542475" elapsed="0.379190"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:26.922231" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:26.921821" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:26.541443" elapsed="0.380975">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:28.926323" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:28.925750" elapsed="0.000621"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:28.927694" level="INFO">${member_ip} = 10.30.171.9</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-19T02:55:28.927307" elapsed="0.000425"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:28.928980" 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-19T02:55:28.929175" 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-19T02:55:28.928691" elapsed="0.000522"/>
</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-19T02:55:28.934661" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:28.934136" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:28.934051" elapsed="0.000751"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:28.936632" 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-19T02:55:28.936895" 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-19T02:55:28.935820" elapsed="0.001175"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:28.938621" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:28.937987" elapsed="0.000749"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:28.940523" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:28.939708" elapsed="0.000913"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:28.943108" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:28.943191" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:28.942741" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:28.943428" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:28.944743" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:29.290974" 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 Sun Apr 19 02:54:29 UTC 2026

  System load:  0.15               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:55:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:55:28.944394" elapsed="0.346808"/>
</kw>
<msg time="2026-04-19T02:55:29.291285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:28.943997" elapsed="0.347372"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:28.941869" elapsed="0.349757"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:29.293189" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:29.315890" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:29.316442" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:29.316775" 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-19T02:55:29.292730" elapsed="0.024339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:29.319298" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:29.322518" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:29.321532" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:29.323639" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:29.323130" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:29.322974" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:29.324738" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:55:29.324293" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:29.324186" elapsed="0.001172"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:29.325537" elapsed="0.000084"/>
</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-19T02:55:29.330712" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:55:29.331275" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:29.331633" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:29.327298" elapsed="0.004546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:28.932051" elapsed="0.400049"/>
</kw>
<msg time="2026-04-19T02:55:29.332419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:28.931098" elapsed="0.401378"/>
</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-19T02:55:28.930311" elapsed="0.402248"/>
</kw>
<msg time="2026-04-19T02:55:29.332599" 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-19T02:55:28.929442" elapsed="0.403202"/>
</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-19T02:55:29.335690" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:55:29.336183" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:29.336480" 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-19T02:55:29.332958" elapsed="0.003669"/>
</kw>
<msg time="2026-04-19T02:55:29.336716" level="INFO">${output} = 1</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-19T02:55:28.928092" elapsed="0.408649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:29.337285" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:29.336930" elapsed="0.000401"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:29.337374" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:55:29.337528" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:28.926671" elapsed="0.410882"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:29.337600" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:55:29.337752" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:28.925206" elapsed="0.412570"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:29.338391" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:29.337976" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:28.924434" elapsed="0.414144">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.342299" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:31.341428" elapsed="0.000945"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:31.343901" level="INFO">${member_ip} = 10.30.171.9</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-19T02:55:31.343485" elapsed="0.000456"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.345198" 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-19T02:55:31.345344" 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-19T02:55:31.344931" elapsed="0.000449"/>
</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-19T02:55:31.350826" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:31.350182" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:31.350099" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.353435" 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-19T02:55:31.353777" 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-19T02:55:31.352470" elapsed="0.001448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.355828" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:31.355275" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.357683" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:31.356906" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.360067" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:31.360145" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:31.359762" 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-19T02:55:31.360387" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.361774" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:31.938153" 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 Sun Apr 19 02:55:31 UTC 2026

  System load:  0.24               Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:55:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T02:55:31.361446" elapsed="0.576892"/>
</kw>
<msg time="2026-04-19T02:55:31.938427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:31.360948" elapsed="0.577567"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:31.358983" elapsed="0.579822"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.940322" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:31.963365" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:31.963917" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T02:55:31.964547" 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-19T02:55:31.939904" elapsed="0.024862"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:31.967068" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.970260" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:31.969274" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:31.971103" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:31.970840" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:31.970776" elapsed="0.000463"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:31.971590" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T02:55:31.971385" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:31.971337" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:31.971838" 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-19T02:55:31.976573" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:55:31.977212" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:31.977578" 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-19T02:55:31.973244" elapsed="0.004541"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:31.348240" elapsed="0.629764"/>
</kw>
<msg time="2026-04-19T02:55:31.978343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:31.347241" elapsed="0.631170"/>
</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-19T02:55:31.346425" elapsed="0.632070"/>
</kw>
<msg time="2026-04-19T02:55:31.978537" 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-19T02:55:31.345607" elapsed="0.632976"/>
</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-19T02:55:31.981677" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:55:31.982171" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:31.982498" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:31.978879" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T02:55:31.982740" level="INFO">${output} = 0</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-19T02:55:31.344283" elapsed="0.638483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.983213" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:31.982944" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:31.983300" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:31.983454" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:31.342810" elapsed="0.640669"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:31.983527" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:55:31.983672" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:31.340562" elapsed="0.643135"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T02:55:31.983853" elapsed="0.000371"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T02:55:31.339449" elapsed="0.644839"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:55:24.132765" elapsed="7.851570"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T02:55:24.132620" elapsed="7.851752"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.986344" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:31.986005" elapsed="0.000369"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:31.987275" level="INFO">${member_ip} = 10.30.171.128</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-19T02:55:31.986987" elapsed="0.000315"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.988074" 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-19T02:55:31.988174" 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-19T02:55:31.987926" elapsed="0.000274"/>
</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-19T02:55:31.991857" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:31.991439" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:31.991387" elapsed="0.000602"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.993563" 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-19T02:55:31.993804" 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-19T02:55:31.992946" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.995435" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:31.994879" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:31.997270" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:31.996496" elapsed="0.000871"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:31.999610" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:31.999689" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:31.999328" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:31.999923" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:32.001434" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:32.624362" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.24               Processes:             121
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:55:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T02:55:32.000852" elapsed="0.623705"/>
</kw>
<msg time="2026-04-19T02:55:32.624667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:32.000492" elapsed="0.624288"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:31.998556" elapsed="0.626599"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:32.627058" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:32.650341" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:32.650974" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T02:55:32.651364" 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-19T02:55:32.626533" elapsed="0.025047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:32.654115" elapsed="0.001149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:32.657166" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:32.656513" elapsed="0.000889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:32.657965" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:32.657632" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:32.657549" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:32.658681" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T02:55:32.658379" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:32.658311" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:32.659119" elapsed="0.000059"/>
</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-19T02:55:32.665584" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T02:55:32.666356" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:32.666884" elapsed="0.000248"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:32.660970" elapsed="0.006321"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:31.990096" elapsed="0.677505"/>
</kw>
<msg time="2026-04-19T02:55:32.667970" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:31.989441" elapsed="0.678602"/>
</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-19T02:55:31.988855" elapsed="0.679273"/>
</kw>
<msg time="2026-04-19T02:55:32.668170" 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-19T02:55:31.988355" elapsed="0.679862"/>
</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-19T02:55:32.671279" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:55:32.671750" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:32.672061" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:32.668507" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T02:55:32.672303" level="INFO">${output} = 0</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-19T02:55:31.987519" elapsed="0.684809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:32.672750" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:32.672506" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:32.672836" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:32.672990" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:31.986577" elapsed="0.686439"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:32.673079" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:55:32.673227" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:31.985638" elapsed="0.687613"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T02:55:32.673409" elapsed="0.000350"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T02:55:31.985187" elapsed="0.688636"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T02:55:31.984612" elapsed="0.689259"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T02:55:31.984471" elapsed="0.689440"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:32.675790" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:32.675497" elapsed="0.000322"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:32.676705" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:32.676437" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:32.677551" 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-19T02:55:32.677651" 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-19T02:55:32.677415" elapsed="0.000262"/>
</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-19T02:55:32.681384" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:32.680938" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:32.680887" elapsed="0.000629"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:32.683119" 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-19T02:55:32.683362" 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-19T02:55:32.682476" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:32.684963" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:32.684430" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:32.686742" 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-19T02:55:32.686040" elapsed="0.000800"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:32.689304" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:32.689382" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:32.689004" 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-19T02:55:32.689616" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:32.690929" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:33.312443" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:32.690580" elapsed="0.622019"/>
</kw>
<msg time="2026-04-19T02:55:33.312692" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:32.690218" elapsed="0.622562"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:32.688251" elapsed="0.624855"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:33.314734" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:33.337785" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:33.338413" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:33.338776" 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-19T02:55:33.314320" elapsed="0.024667"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:33.341472" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:33.344594" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:33.343834" 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-19T02:55:33.345337" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:33.344968" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:33.344887" elapsed="0.000650"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:33.346138" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T02:55:33.345740" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:33.345671" elapsed="0.000820"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:33.346603" elapsed="0.000051"/>
</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-19T02:55:33.352881" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:33.353461" elapsed="0.000268"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:33.353939" 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-19T02:55:33.348514" elapsed="0.005678"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:32.679618" elapsed="0.674802"/>
</kw>
<msg time="2026-04-19T02:55:33.354759" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:32.678923" elapsed="0.675900"/>
</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-19T02:55:32.678354" elapsed="0.676554"/>
</kw>
<msg time="2026-04-19T02:55:33.354951" 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-19T02:55:32.677837" elapsed="0.677161"/>
</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-19T02:55:33.358022" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T02:55:33.358628" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:33.358935" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:33.355333" elapsed="0.003802"/>
</kw>
<msg time="2026-04-19T02:55:33.359230" level="INFO">${output} = 1</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-19T02:55:32.676992" elapsed="0.682263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:33.359699" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:33.359440" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:33.359786" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:55:33.359937" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:32.676017" elapsed="0.683945"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:33.360010" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T02:55:33.360173" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:32.675153" elapsed="0.685044"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:33.360787" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:33.360359" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:32.674707" elapsed="0.686270">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:35.364449" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:35.363665" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:35.366545" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:35.365911" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:35.368434" 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-19T02:55:35.368658" 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-19T02:55:35.368055" elapsed="0.000662"/>
</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-19T02:55:35.374488" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:35.373828" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:35.373473" elapsed="0.001207"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:35.376693" 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-19T02:55:35.377072" 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-19T02:55:35.376081" elapsed="0.001132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:35.379511" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:35.378741" elapsed="0.000930"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:35.381834" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:35.381125" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:35.384590" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:35.384672" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:35.384293" 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-19T02:55:35.384913" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:35.386235" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:35.710655" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:35.385863" elapsed="0.324934"/>
</kw>
<msg time="2026-04-19T02:55:35.710886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:35.385498" elapsed="0.325485"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:35.383448" elapsed="0.327845"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:35.712861" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:35.736563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:35.737170" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:35.737531" 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-19T02:55:35.712456" elapsed="0.025284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:35.739954" elapsed="0.001017"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:35.743473" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:35.742383" elapsed="0.001317"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:35.744652" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:35.744088" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:35.743928" elapsed="0.001031"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:35.745775" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T02:55:35.745327" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:35.745221" elapsed="0.000999"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:35.746396" elapsed="0.000164"/>
</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-19T02:55:35.752756" elapsed="0.000389"/>
</kw>
<kw name="Open 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-19T02:55:35.753356" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:35.753712" elapsed="0.000170"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:35.749316" elapsed="0.004696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:35.371597" elapsed="0.382672"/>
</kw>
<msg time="2026-04-19T02:55:35.754569" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:35.370656" elapsed="0.383969"/>
</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-19T02:55:35.369890" elapsed="0.384819"/>
</kw>
<msg time="2026-04-19T02:55:35.754751" 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-19T02:55:35.369158" elapsed="0.385639"/>
</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-19T02:55:35.757940" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:55:35.758465" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:35.758766" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:35.755233" elapsed="0.003691"/>
</kw>
<msg time="2026-04-19T02:55:35.759014" level="INFO">${output} = 1</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-19T02:55:35.367112" elapsed="0.391980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:35.759519" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:35.759271" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:35.759604" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:55:35.759755" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:35.364965" elapsed="0.394814"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:35.759826" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:55:35.759969" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:35.362824" elapsed="0.397170"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:35.760585" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:35.760167" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:35.361775" elapsed="0.398990">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:37.764383" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:37.763597" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:37.766671" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:37.765986" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:37.768600" 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-19T02:55:37.768826" 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-19T02:55:37.768263" elapsed="0.000625"/>
</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-19T02:55:37.777711" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:37.777190" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:37.775267" elapsed="0.002592"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:37.779365" 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-19T02:55:37.779684" 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-19T02:55:37.778878" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:37.781381" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:37.780777" elapsed="0.000730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:37.783249" 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-19T02:55:37.782512" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:37.785699" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:37.785776" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:37.785409" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:37.786017" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:37.787298" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:38.104416" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:37.786944" elapsed="0.317642"/>
</kw>
<msg time="2026-04-19T02:55:38.104682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:37.786589" elapsed="0.318190"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:37.784575" elapsed="0.320533"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:38.106701" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:38.129905" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:38.130491" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:38.130850" 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-19T02:55:38.106274" elapsed="0.024852"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:38.133604" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:38.135848" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:38.135215" elapsed="0.000777"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:38.136612" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:38.136276" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:38.136192" elapsed="0.000607"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:38.137302" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:55:38.136996" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:38.136930" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:38.137664" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:38.143652" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:38.144380" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:38.144745" 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-19T02:55:38.139532" elapsed="0.005417"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:37.773667" elapsed="0.371526"/>
</kw>
<msg time="2026-04-19T02:55:38.145631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:37.771747" elapsed="0.373948"/>
</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-19T02:55:37.770465" elapsed="0.375316"/>
</kw>
<msg time="2026-04-19T02:55:38.145823" 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-19T02:55:37.769273" elapsed="0.376597"/>
</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-19T02:55:38.148945" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:38.149440" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:38.149780" 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-19T02:55:38.146193" elapsed="0.003734"/>
</kw>
<msg time="2026-04-19T02:55:38.150020" level="INFO">${output} = 1</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-19T02:55:37.767253" elapsed="0.382808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:38.150487" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:38.150240" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:38.150572" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:38.150724" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:37.764924" elapsed="0.385824"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:38.150795" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:55:38.150939" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:37.762756" elapsed="0.388207"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:38.151531" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:38.151136" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:37.761677" elapsed="0.390039">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:40.155491" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:40.154728" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:40.157589" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:40.156957" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:40.159346" 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-19T02:55:40.159490" 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-19T02:55:40.159127" elapsed="0.000400"/>
</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-19T02:55:40.164785" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:40.164148" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:40.164068" elapsed="0.000909"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:40.167375" 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-19T02:55:40.167628" 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-19T02:55:40.166390" elapsed="0.001339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:40.169318" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:40.168746" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:40.171280" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:40.170483" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:40.173654" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:40.173731" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:40.173369" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:40.173968" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:40.175406" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:40.481895" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:40.174931" elapsed="0.307141"/>
</kw>
<msg time="2026-04-19T02:55:40.482162" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:40.174545" elapsed="0.307706"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:40.172587" elapsed="0.309949"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:40.484107" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:40.506856" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:40.507423" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:40.507755" 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-19T02:55:40.483680" elapsed="0.024288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:40.510199" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:40.513372" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:40.512392" elapsed="0.001212"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:40.514502" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:40.513954" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:40.513831" elapsed="0.000988"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:40.515764" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:55:40.515178" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:40.515061" elapsed="0.001161"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:40.516302" 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-19T02:55:40.521052" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:55:40.521603" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:40.521962" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:40.517613" elapsed="0.004575"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:40.162207" elapsed="0.360203"/>
</kw>
<msg time="2026-04-19T02:55:40.522711" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:40.161242" elapsed="0.361543"/>
</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-19T02:55:40.160475" elapsed="0.362395"/>
</kw>
<msg time="2026-04-19T02:55:40.522911" 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-19T02:55:40.159746" elapsed="0.363212"/>
</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-19T02:55:40.526081" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:55:40.526562" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:40.526871" elapsed="0.000211"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:40.523273" elapsed="0.003872"/>
</kw>
<msg time="2026-04-19T02:55:40.527240" level="INFO">${output} = 1</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-19T02:55:40.158162" elapsed="0.369103"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:40.527699" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:40.527447" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:40.527786" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:40.527940" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:40.156011" elapsed="0.371954"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:40.528011" elapsed="0.000131"/>
</return>
<msg time="2026-04-19T02:55:40.528268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:40.153850" elapsed="0.374442"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:40.528844" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:40.528451" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:40.152673" elapsed="0.376372">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:42.532627" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:42.531851" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:42.534765" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:42.534145" elapsed="0.000683"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:42.536666" 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-19T02:55:42.536896" 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-19T02:55:42.536323" elapsed="0.000632"/>
</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-19T02:55:42.546737" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:42.545701" elapsed="0.001234"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:42.545578" elapsed="0.001522"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:42.550199" 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-19T02:55:42.550464" 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-19T02:55:42.549313" elapsed="0.001250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:42.552123" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:42.551534" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:42.553952" 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-19T02:55:42.553255" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:42.556336" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:42.556415" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:42.556024" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:42.556653" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:42.558083" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:42.873826" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:42.557738" elapsed="0.316256"/>
</kw>
<msg time="2026-04-19T02:55:42.874111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:42.557369" elapsed="0.316848"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:42.555256" elapsed="0.319261"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:42.876080" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:42.898823" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:42.899395" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:42.899733" 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-19T02:55:42.875649" elapsed="0.024300"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:42.902320" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:42.905522" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:42.904524" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:42.906679" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:42.906150" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:42.905990" elapsed="0.000982"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:42.907802" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:55:42.907340" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:42.907227" elapsed="0.001118"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:42.908521" 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-19T02:55:42.913649" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:55:42.914213" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:42.914652" 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-19T02:55:42.910237" elapsed="0.004628"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:42.542447" elapsed="0.372664"/>
</kw>
<msg time="2026-04-19T02:55:42.915422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:42.540475" elapsed="0.375005"/>
</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-19T02:55:42.538518" elapsed="0.377044"/>
</kw>
<msg time="2026-04-19T02:55:42.915604" 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-19T02:55:42.537342" elapsed="0.378308"/>
</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-19T02:55:42.918688" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:55:42.919183" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:42.919480" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:42.915948" elapsed="0.003680"/>
</kw>
<msg time="2026-04-19T02:55:42.919719" level="INFO">${output} = 1</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-19T02:55:42.535348" elapsed="0.384480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:42.920373" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:42.920010" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:42.920461" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:42.920615" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:42.533190" elapsed="0.387450"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:42.920687" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:55:42.920830" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:42.530964" elapsed="0.389890"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:42.921420" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:42.921011" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:42.529868" elapsed="0.391744">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:44.925222" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:44.924421" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:44.927336" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:44.926703" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:44.929238" 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-19T02:55:44.929469" 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-19T02:55:44.928823" elapsed="0.000705"/>
</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-19T02:55:44.935371" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:44.934711" elapsed="0.000781"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:44.934633" elapsed="0.000985"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:44.938006" 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-19T02:55:44.938375" 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-19T02:55:44.937004" elapsed="0.001469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:44.940002" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:44.939458" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:44.941823" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:44.941118" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:44.944331" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:44.944409" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:44.944011" 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-19T02:55:44.944643" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:44.946130" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:45.280709" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:44.945779" elapsed="0.335204"/>
</kw>
<msg time="2026-04-19T02:55:45.281095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:44.945371" elapsed="0.335820"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:44.943192" elapsed="0.338316"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:45.283092" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:45.306437" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:45.306951" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:45.307338" 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-19T02:55:45.282646" elapsed="0.024906"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:45.309978" elapsed="0.000993"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:45.313601" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:45.312329" elapsed="0.001515"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:45.314773" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:45.314247" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:45.314115" elapsed="0.001002"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:45.316296" elapsed="0.000272"/>
</return>
<status status="PASS" start="2026-04-19T02:55:45.315453" elapsed="0.001228"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:45.315343" elapsed="0.001473"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:45.316996" elapsed="0.000117"/>
</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-19T02:55:45.322835" 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-19T02:55:45.323454" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:45.323834" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:45.319247" elapsed="0.004876"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:44.932641" elapsed="0.391714"/>
</kw>
<msg time="2026-04-19T02:55:45.324669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:44.931685" elapsed="0.393050"/>
</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-19T02:55:44.930919" elapsed="0.393902"/>
</kw>
<msg time="2026-04-19T02:55:45.324861" 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-19T02:55:44.929907" elapsed="0.395002"/>
</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-19T02:55:45.328064" 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-19T02:55:45.328560" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:45.328860" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:45.325230" elapsed="0.003781"/>
</kw>
<msg time="2026-04-19T02:55:45.329133" level="INFO">${output} = 1</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-19T02:55:44.927878" elapsed="0.401282"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:45.329668" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:45.329407" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:45.329760" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:55:45.329921" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:44.925747" elapsed="0.404199"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:45.329993" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:55:45.330161" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:44.923576" elapsed="0.406610"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:45.330911" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:45.330421" elapsed="0.000570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:44.922472" elapsed="0.408743">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:47.335574" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:47.334899" elapsed="0.000719"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:47.336745" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:47.336408" elapsed="0.000371"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:47.337806" 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-19T02:55:47.337930" 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-19T02:55:47.337594" elapsed="0.000368"/>
</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-19T02:55:47.342840" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:47.341934" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:47.341869" elapsed="0.001132"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:47.344658" 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-19T02:55:47.344946" 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-19T02:55:47.344150" elapsed="0.000992"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:47.346984" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:47.346301" elapsed="0.000834"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:47.349240" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:47.348300" elapsed="0.001057"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:47.352156" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:47.352251" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:47.351789" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:47.352544" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:47.354272" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:47.685268" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:47.353869" elapsed="0.331579"/>
</kw>
<msg time="2026-04-19T02:55:47.685545" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:47.353417" elapsed="0.332226"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:47.350812" elapsed="0.335134"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:47.687568" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:47.710905" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:47.711590" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:47.712009" 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-19T02:55:47.687140" elapsed="0.025191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:47.715210" elapsed="0.000712"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:47.717555" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:47.716810" elapsed="0.000895"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:47.718344" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:47.717953" elapsed="0.000510"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:47.717863" elapsed="0.000703"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:47.719113" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T02:55:47.718787" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:47.718715" elapsed="0.000658"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:47.719490" elapsed="0.000056"/>
</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-19T02:55:47.725779" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:47.726367" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:47.726761" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:47.721707" elapsed="0.005265"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:47.340370" elapsed="0.386847"/>
</kw>
<msg time="2026-04-19T02:55:47.727533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:47.339525" elapsed="0.388073"/>
</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-19T02:55:47.338847" elapsed="0.388835"/>
</kw>
<msg time="2026-04-19T02:55:47.727723" 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-19T02:55:47.338179" elapsed="0.389591"/>
</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-19T02:55:47.730877" 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-19T02:55:47.731441" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:47.731744" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:47.728080" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T02:55:47.731987" level="INFO">${output} = 1</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-19T02:55:47.337076" elapsed="0.394937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:47.732476" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:47.732215" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:47.732565" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:55:47.732721" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:47.335882" elapsed="0.396864"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:47.732794" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:55:47.732942" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:47.333718" elapsed="0.399249"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:47.733590" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:47.733168" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:47.332309" elapsed="0.401481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:49.737306" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:49.736535" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:49.739525" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:49.738901" elapsed="0.000684"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:49.741086" 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-19T02:55:49.741237" 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-19T02:55:49.740839" elapsed="0.000437"/>
</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-19T02:55:49.747298" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:49.746303" elapsed="0.001112"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:49.746223" elapsed="0.001279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:49.749241" 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-19T02:55:49.749481" 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-19T02:55:49.748789" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:49.751091" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:49.750542" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:49.752871" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:49.752177" elapsed="0.000792"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:49.755283" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:49.755362" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:49.754982" 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-19T02:55:49.755620" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:49.756870" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:50.110755" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:49.756548" elapsed="0.354368"/>
</kw>
<msg time="2026-04-19T02:55:50.111005" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:49.756190" elapsed="0.354934"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:49.754224" elapsed="0.357191"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:50.112928" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:50.136176" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:50.136654" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:50.136982" 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-19T02:55:50.112537" elapsed="0.024695"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:50.139421" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:50.141822" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:50.141198" 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-19T02:55:50.142685" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:50.142269" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:50.142185" elapsed="0.000700"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:50.143426" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:55:50.143130" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:50.143055" elapsed="0.000604"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:50.143774" elapsed="0.000070"/>
</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-19T02:55:50.150144" 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-19T02:55:50.150700" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:50.151152" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:50.145841" elapsed="0.005521"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:49.744102" elapsed="0.407479"/>
</kw>
<msg time="2026-04-19T02:55:50.151894" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:49.743100" elapsed="0.408850"/>
</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-19T02:55:49.742289" elapsed="0.409756"/>
</kw>
<msg time="2026-04-19T02:55:50.152088" 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-19T02:55:49.741510" elapsed="0.410623"/>
</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-19T02:55:50.155124" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:55:50.155596" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:50.155912" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:50.152421" elapsed="0.003656"/>
</kw>
<msg time="2026-04-19T02:55:50.156168" level="INFO">${output} = 1</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-19T02:55:49.740131" elapsed="0.416061"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:50.156611" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:50.156366" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:50.156697" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:50.156849" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:49.737963" elapsed="0.418912"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:50.156921" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:55:50.157080" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:49.735672" elapsed="0.421433"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:50.157650" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:50.157261" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:49.734630" elapsed="0.423201">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:52.161397" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:52.160470" elapsed="0.000997"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:52.163628" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:52.162996" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:52.165492" 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-19T02:55:52.165860" 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-19T02:55:52.165155" elapsed="0.000768"/>
</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-19T02:55:52.173706" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:52.173215" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:52.171272" elapsed="0.002571"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:52.175271" 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-19T02:55:52.175512" 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-19T02:55:52.174817" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:52.177147" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:52.176578" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:52.178915" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:52.178225" elapsed="0.000787"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:52.181343" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:52.181421" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:52.181060" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:52.181667" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:52.182957" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:52.498333" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:52.182630" elapsed="0.315837"/>
</kw>
<msg time="2026-04-19T02:55:52.498544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:52.182263" elapsed="0.316361"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:52.180268" elapsed="0.318616"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:52.500367" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:52.523424" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:52.523932" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:52.524323" 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-19T02:55:52.499956" elapsed="0.024574"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:52.526797" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:52.529792" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:52.528924" elapsed="0.001010"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:52.530557" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:52.530235" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:52.530156" elapsed="0.000581"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:52.531232" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:55:52.530935" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:52.530870" elapsed="0.000581"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:52.531559" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:52.537989" elapsed="0.000458"/>
</kw>
<kw name="Open 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-19T02:55:52.538749" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:52.539117" 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-19T02:55:52.533430" elapsed="0.005897"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:52.169866" elapsed="0.369680"/>
</kw>
<msg time="2026-04-19T02:55:52.539847" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:52.168709" elapsed="0.371195"/>
</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-19T02:55:52.167485" elapsed="0.372502"/>
</kw>
<msg time="2026-04-19T02:55:52.540043" 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-19T02:55:52.166309" elapsed="0.373783"/>
</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-19T02:55:52.543102" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:55:52.543586" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:52.543882" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:52.540383" elapsed="0.003665"/>
</kw>
<msg time="2026-04-19T02:55:52.544140" level="INFO">${output} = 1</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-19T02:55:52.164196" elapsed="0.379970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:52.544659" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:52.544409" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:52.544748" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:52.544901" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:52.162090" elapsed="0.382837"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:52.544973" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:55:52.545187" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:52.159631" elapsed="0.385582"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:52.545776" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:52.545383" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:52.158603" elapsed="0.387354">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:54.549432" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:54.548658" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:54.551643" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:54.551003" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:54.553496" 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-19T02:55:54.553749" 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-19T02:55:54.553174" elapsed="0.000637"/>
</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-19T02:55:54.558221" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:54.557709" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:54.557649" elapsed="0.000806"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:54.560173" 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-19T02:55:54.560425" 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-19T02:55:54.559460" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:54.562108" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:54.561522" elapsed="0.000729"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:54.563957" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:54.563250" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:54.566493" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:54.566573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:54.566199" 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-19T02:55:54.566817" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:54.568116" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:54.941242" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:54.567771" elapsed="0.373626"/>
</kw>
<msg time="2026-04-19T02:55:54.941481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:54.567405" elapsed="0.374168"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:54.565371" elapsed="0.376495"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:54.944510" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:54.967718" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:54.968383" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:54.968719" 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-19T02:55:54.942980" elapsed="0.025949"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:54.971339" elapsed="0.000779"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:54.973662" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:54.972946" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:54.974483" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:54.974118" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:54.973964" elapsed="0.000715"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:54.975206" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T02:55:54.974889" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:54.974819" elapsed="0.000626"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:54.975565" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:54.981964" elapsed="0.000719"/>
</kw>
<kw name="Open 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-19T02:55:54.982948" elapsed="0.000211"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:54.983355" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:54.977615" elapsed="0.005955"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:54.556293" elapsed="0.427508"/>
</kw>
<msg time="2026-04-19T02:55:54.984217" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:54.555563" elapsed="0.428730"/>
</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-19T02:55:54.554996" elapsed="0.429382"/>
</kw>
<msg time="2026-04-19T02:55:54.984420" 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-19T02:55:54.554252" elapsed="0.430216"/>
</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-19T02:55:54.987695" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T02:55:54.988252" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:54.988579" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:54.984797" elapsed="0.003936"/>
</kw>
<msg time="2026-04-19T02:55:54.988832" level="INFO">${output} = 1</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-19T02:55:54.552224" elapsed="0.436635"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:54.989367" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:54.989108" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:54.989461" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T02:55:54.989631" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:54.550014" elapsed="0.439643"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:54.989705" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:55:54.989851" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:54.547808" elapsed="0.442069"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:54.990599" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:54.990152" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:54.546754" elapsed="0.444037">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:56.994319" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:56.993538" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:56.996563" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:56.995883" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:56.998505" 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-19T02:55:56.998746" 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-19T02:55:56.998145" elapsed="0.000661"/>
</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-19T02:55:57.004025" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:57.003468" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:57.003380" elapsed="0.000828"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:57.006163" 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-19T02:55:57.006446" 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-19T02:55:57.005246" elapsed="0.001303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:57.008471" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:57.007683" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:57.010568" 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-19T02:55:57.009725" elapsed="0.000947"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:57.013638" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:57.013740" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:57.013270" elapsed="0.000496"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:57.014004" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:57.015673" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:57.346057" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:57.015233" elapsed="0.330979"/>
</kw>
<msg time="2026-04-19T02:55:57.346299" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:57.014644" elapsed="0.331748"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:57.012025" elapsed="0.334655"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:57.348218" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:57.371358" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:57.371890" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:57.372273" 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-19T02:55:57.347799" elapsed="0.024691"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:57.374722" elapsed="0.001012"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:57.377506" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:57.376856" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:57.378228" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:57.377880" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:57.377798" elapsed="0.000616"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:57.378902" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:55:57.378619" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:57.378550" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:57.379261" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:57.385584" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:55:57.386164" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:57.386526" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:57.381253" elapsed="0.005484"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:57.001942" elapsed="0.385018"/>
</kw>
<msg time="2026-04-19T02:55:57.387282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:57.001199" elapsed="0.386142"/>
</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-19T02:55:57.000589" elapsed="0.386835"/>
</kw>
<msg time="2026-04-19T02:55:57.387466" 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-19T02:55:56.999272" elapsed="0.388240"/>
</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-19T02:55:57.390666" 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-19T02:55:57.391167" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:57.391468" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:57.387885" elapsed="0.003757"/>
</kw>
<msg time="2026-04-19T02:55:57.391738" level="INFO">${output} = 1</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-19T02:55:56.997159" elapsed="0.394605"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:57.392215" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:57.391945" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:57.392304" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:57.392459" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:56.994862" elapsed="0.397622"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:57.392532" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:55:57.392683" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:56.992685" elapsed="0.400023"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:57.393295" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:57.392866" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:56.991621" elapsed="0.401857">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:55:59.397463" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:55:59.396482" elapsed="0.001057"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:55:59.399957" level="INFO">${member_ip} = 10.30.171.206</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-19T02:55:59.399210" elapsed="0.000810"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:59.402022" 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-19T02:55:59.402290" 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-19T02:55:59.401667" elapsed="0.000684"/>
</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-19T02:55:59.410686" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:55:59.410204" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:59.410143" elapsed="0.000701"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:59.412585" 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-19T02:55:59.412870" 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-19T02:55:59.411859" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:59.414532" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:59.413970" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:55:59.416362" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:55:59.415611" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:55:59.418713" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:55:59.418848" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:55:59.418431" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:59.419137" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:55:59.421866" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:55:59.749961" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:55:59.421157" elapsed="0.329012"/>
</kw>
<msg time="2026-04-19T02:55:59.750269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:59.419910" elapsed="0.330456"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:55:59.417656" elapsed="0.333020"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:55:59.752257" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:55:59.775502" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:55:59.776065" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:55:59.776403" 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-19T02:55:59.751806" elapsed="0.024809"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:59.778929" elapsed="0.000990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:59.782223" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:59.781244" elapsed="0.001207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:59.783351" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:55:59.782805" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:59.782674" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:55:59.784434" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:55:59.783961" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T02:55:59.783855" elapsed="0.001059"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:55:59.785256" elapsed="0.000085"/>
</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-19T02:55:59.790441" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:55:59.791004" elapsed="0.000285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:59.791486" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:55:59.786864" elapsed="0.004833"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:55:59.407334" elapsed="0.384587"/>
</kw>
<msg time="2026-04-19T02:55:59.792246" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:55:59.405754" elapsed="0.386560"/>
</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-19T02:55:59.404391" elapsed="0.388006"/>
</kw>
<msg time="2026-04-19T02:55:59.792439" 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-19T02:55:59.402733" elapsed="0.389751"/>
</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-19T02:55:59.795451" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:55:59.795930" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:55:59.796287" 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-19T02:55:59.792779" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T02:55:59.796602" level="INFO">${output} = 1</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-19T02:55:59.400608" elapsed="0.396020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:55:59.797131" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:55:59.796831" elapsed="0.000344"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:55:59.797219" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:55:59.797374" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:55:59.398085" elapsed="0.399314"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:55:59.797448" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:55:59.797595" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:55:59.395488" elapsed="0.402131"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:55:59.798213" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:55:59.797778" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:55:59.394363" elapsed="0.404047">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:01.802202" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:01.801325" elapsed="0.000950"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:01.803750" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:01.803367" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:01.804947" 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-19T02:56:01.805306" 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-19T02:56:01.804726" elapsed="0.000617"/>
</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-19T02:56:01.811138" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:01.810412" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:01.810017" elapsed="0.001325"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:01.813461" 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-19T02:56:01.813805" 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-19T02:56:01.812778" elapsed="0.001209"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:01.815846" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:01.815262" elapsed="0.000692"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:01.817679" 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-19T02:56:01.816922" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:01.820255" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:01.820335" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:01.819928" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:01.820575" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:01.821891" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:02.140534" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:55:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:01.821554" elapsed="0.319230"/>
</kw>
<msg time="2026-04-19T02:56:02.140872" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:01.821170" elapsed="0.319791"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:01.819170" elapsed="0.322097"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:02.142775" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:02.166331" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:02.166828" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:02.167202" 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-19T02:56:02.142388" elapsed="0.025026"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:02.169655" elapsed="0.000950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:02.172829" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:02.171835" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:02.173968" elapsed="0.000098"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:02.173469" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:02.173344" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:02.175138" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:56:02.174663" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:02.174555" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:02.175666" 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-19T02:56:02.182207" 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-19T02:56:02.182747" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:02.183145" 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-19T02:56:02.178773" elapsed="0.004596"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:01.808122" elapsed="0.375475"/>
</kw>
<msg time="2026-04-19T02:56:02.183913" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:01.807145" elapsed="0.376826"/>
</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-19T02:56:01.806372" elapsed="0.377771"/>
</kw>
<msg time="2026-04-19T02:56:02.184188" 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-19T02:56:01.805565" elapsed="0.378671"/>
</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-19T02:56:02.187335" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:56:02.187865" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:02.188233" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:02.184604" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T02:56:02.188473" level="INFO">${output} = 1</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-19T02:56:01.804122" elapsed="0.384376"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:02.188930" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:02.188682" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:02.189019" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T02:56:02.189197" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:01.802755" elapsed="0.386468"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:02.189270" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:02.189414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:01.800426" elapsed="0.389012"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:02.190074" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:02.189652" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:01.799278" elapsed="0.391009">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:04.194244" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:04.193335" elapsed="0.000984"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:04.196474" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:04.195789" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:04.198617" 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-19T02:56:04.198856" 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-19T02:56:04.198193" elapsed="0.000723"/>
</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-19T02:56:04.204730" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:04.203967" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:04.203903" elapsed="0.000979"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:04.206431" 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-19T02:56:04.206684" 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-19T02:56:04.205928" elapsed="0.000872"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:04.208419" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:04.207837" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:04.210340" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:04.209559" elapsed="0.000885"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:04.212874" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:04.212958" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:04.212583" 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-19T02:56:04.213218" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:04.214542" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:04.542279" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:04.214179" elapsed="0.328264"/>
</kw>
<msg time="2026-04-19T02:56:04.542536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:04.213780" elapsed="0.328859"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:04.211764" elapsed="0.331162"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:04.544584" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:04.568295" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:04.568831" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:04.569311" 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-19T02:56:04.544181" elapsed="0.025378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:04.572012" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:04.575482" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:04.574426" elapsed="0.001313"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:04.576795" elapsed="0.000082"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:04.576222" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:04.576084" elapsed="0.001086"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:04.578119" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T02:56:04.577579" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:04.577455" elapsed="0.000840"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:04.578380" 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-19T02:56:04.583459" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:04.584056" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:04.584430" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:04.579775" elapsed="0.004868"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:04.202267" elapsed="0.382608"/>
</kw>
<msg time="2026-04-19T02:56:04.585247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:04.201192" elapsed="0.384117"/>
</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-19T02:56:04.200389" elapsed="0.385004"/>
</kw>
<msg time="2026-04-19T02:56:04.585436" 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-19T02:56:04.199318" elapsed="0.386165"/>
</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-19T02:56:04.588577" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:56:04.589075" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:04.589384" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:04.585815" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T02:56:04.589641" level="INFO">${output} = 1</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-19T02:56:04.197034" elapsed="0.392636"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:04.590227" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:04.589851" elapsed="0.000424"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:04.590319" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:56:04.590473" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:04.194788" elapsed="0.395711"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:04.590546" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:04.590690" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:04.192438" elapsed="0.398277"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:04.591307" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:04.590872" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:04.191257" elapsed="0.400240">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:06.594986" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:06.594255" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:06.597539" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:06.596861" elapsed="0.000739"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:06.599394" 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-19T02:56:06.599620" 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-19T02:56:06.599020" elapsed="0.000659"/>
</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-19T02:56:06.608214" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:06.607527" elapsed="0.000799"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:06.605088" elapsed="0.003321"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:06.610282" 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-19T02:56:06.610524" 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-19T02:56:06.609788" elapsed="0.000837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:06.612211" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:06.611596" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:06.613984" 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-19T02:56:06.613291" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:06.616430" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:06.616508" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:06.616036" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:06.616738" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:06.618016" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:06.937361" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:06.617695" elapsed="0.319824"/>
</kw>
<msg time="2026-04-19T02:56:06.937604" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:06.617335" elapsed="0.320363"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:06.615278" elapsed="0.322698"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:06.939501" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:06.962820" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:06.963492" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:06.963867" 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-19T02:56:06.939108" elapsed="0.025075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:06.966471" elapsed="0.000727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:06.968893" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:06.968151" elapsed="0.000954"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:06.969852" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:06.969375" elapsed="0.000605"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:06.969281" elapsed="0.000821"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:06.970752" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T02:56:06.970365" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:06.970260" elapsed="0.000736"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:06.971127" 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-19T02:56:07.028170" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T02:56:07.028826" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:07.029221" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:06.972595" elapsed="0.056843"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:06.603228" elapsed="0.426442"/>
</kw>
<msg time="2026-04-19T02:56:07.029991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:06.602279" elapsed="0.427796"/>
</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-19T02:56:06.601269" elapsed="0.428891"/>
</kw>
<msg time="2026-04-19T02:56:07.030206" 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-19T02:56:06.600036" elapsed="0.430220"/>
</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-19T02:56:07.033347" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:56:07.033831" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:07.034152" 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-19T02:56:07.030576" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T02:56:07.034397" level="INFO">${output} = 1</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-19T02:56:06.598114" elapsed="0.436308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:07.034879" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:07.034621" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:07.034972" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:56:07.035150" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:06.595826" elapsed="0.439349"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:07.035223" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:07.035367" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:06.593415" elapsed="0.441976"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:07.035971" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:07.035571" elapsed="0.000533">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:06.592353" elapsed="0.443867">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:09.039796" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:09.039060" elapsed="0.000804"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:09.041955" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:09.041302" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:09.043150" 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-19T02:56:09.043403" 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-19T02:56:09.042910" elapsed="0.000532"/>
</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-19T02:56:09.049068" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:09.048410" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:09.048332" elapsed="0.000931"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:09.050910" 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-19T02:56:09.051171" 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-19T02:56:09.050471" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:09.052765" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:09.052236" elapsed="0.000637"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:09.054572" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:09.053859" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:09.056961" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:09.057054" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:09.056680" 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-19T02:56:09.057293" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:09.058597" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:09.377745" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:09.058275" elapsed="0.319594"/>
</kw>
<msg time="2026-04-19T02:56:09.377945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:09.057882" elapsed="0.320149"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:09.055915" elapsed="0.322392"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:09.379743" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:09.402739" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:09.403282" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:09.403615" 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-19T02:56:09.379372" elapsed="0.024451"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:09.406165" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:09.409306" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:09.408336" elapsed="0.001198"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:09.410633" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:09.409904" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:09.409782" elapsed="0.001139"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:09.411729" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:56:09.411286" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:09.411178" elapsed="0.001063"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:09.412424" elapsed="0.000084"/>
</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-19T02:56:09.418329" 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-19T02:56:09.418928" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:09.419304" 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-19T02:56:09.414798" elapsed="0.004711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:09.046473" elapsed="0.373258"/>
</kw>
<msg time="2026-04-19T02:56:09.420100" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:09.045185" elapsed="0.374975"/>
</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-19T02:56:09.044411" elapsed="0.375835"/>
</kw>
<msg time="2026-04-19T02:56:09.420287" 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-19T02:56:09.043667" elapsed="0.376666"/>
</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-19T02:56:09.423309" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:56:09.423782" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:09.424184" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:09.420623" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T02:56:09.424426" level="INFO">${output} = 1</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-19T02:56:09.042336" elapsed="0.382115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:09.424876" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:09.424628" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:09.424964" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:56:09.425135" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:09.040356" elapsed="0.384805"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:09.425208" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:09.425354" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:09.038226" elapsed="0.387153"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:09.425943" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:09.425537" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:09.037109" elapsed="0.389043">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:11.428389" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:11.428001" elapsed="0.000423"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:11.429352" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:11.429075" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:11.430202" 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-19T02:56:11.430305" 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-19T02:56:11.430008" elapsed="0.000322"/>
</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-19T02:56:11.434448" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:11.433952" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:11.433894" elapsed="0.000789"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:11.436138" 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-19T02:56:11.436383" 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-19T02:56:11.435687" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:11.438016" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:11.437480" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:11.439813" 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-19T02:56:11.439115" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:11.442266" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:11.442343" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:11.441957" 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-19T02:56:11.442579" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:11.443854" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:11.771720" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:11.443528" elapsed="0.328315"/>
</kw>
<msg time="2026-04-19T02:56:11.771919" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:11.443163" elapsed="0.328837"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:11.441207" elapsed="0.331079"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:11.773716" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:11.796863" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:11.797417" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:11.797754" 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-19T02:56:11.773351" elapsed="0.024612"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:11.800286" elapsed="0.000978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:11.803499" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:11.802522" elapsed="0.001212"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:11.804375" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:11.804132" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:11.804023" elapsed="0.000485"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:11.804856" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T02:56:11.804653" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:11.804605" elapsed="0.000416"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:11.805121" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:11.810047" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:11.810609" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:11.810965" 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-19T02:56:11.806573" elapsed="0.004725"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:11.432276" elapsed="0.379242"/>
</kw>
<msg time="2026-04-19T02:56:11.811927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:11.431560" elapsed="0.380443"/>
</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-19T02:56:11.431004" elapsed="0.381097"/>
</kw>
<msg time="2026-04-19T02:56:11.812143" 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-19T02:56:11.430490" elapsed="0.381700"/>
</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-19T02:56:11.815176" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:56:11.815655" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:11.815982" elapsed="0.000213"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:11.812482" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T02:56:11.816352" level="INFO">${output} = 1</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-19T02:56:11.429594" elapsed="0.386784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:11.816806" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:11.816556" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:11.816895" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:56:11.817064" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:11.428633" elapsed="0.388459"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:11.817139" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:11.817284" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:11.427555" elapsed="0.389754"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:11.817855" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:11.817466" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:11.426835" elapsed="0.391219">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:13.821620" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:13.820839" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:13.823576" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:13.823193" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:13.824743" 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-19T02:56:13.824887" 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-19T02:56:13.824524" elapsed="0.000400"/>
</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-19T02:56:13.830594" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:13.829889" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:13.829811" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:13.832352" 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-19T02:56:13.832596" 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-19T02:56:13.831895" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:13.834273" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:13.833692" elapsed="0.000704"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:13.836169" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:13.835451" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:13.838624" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:13.838702" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:13.838343" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:13.838940" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:13.840221" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:14.158804" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:13.839881" elapsed="0.319075"/>
</kw>
<msg time="2026-04-19T02:56:14.159065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:13.839521" elapsed="0.319639"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:13.837540" elapsed="0.322101"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:14.161186" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:14.184435" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:14.184977" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:14.185367" 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-19T02:56:14.160764" elapsed="0.024818"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:14.187843" elapsed="0.000982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:14.191267" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:14.190146" elapsed="0.001351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:14.192378" elapsed="0.000088"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:14.191846" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:14.191722" elapsed="0.000986"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:14.193506" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:56:14.193026" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:14.192921" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:14.194024" elapsed="0.000144"/>
</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-19T02:56:14.202958" 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-19T02:56:14.203655" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:14.204013" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:14.197377" elapsed="0.006889"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:13.827624" elapsed="0.376873"/>
</kw>
<msg time="2026-04-19T02:56:14.204827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:13.826668" elapsed="0.378218"/>
</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-19T02:56:13.825882" elapsed="0.379086"/>
</kw>
<msg time="2026-04-19T02:56:14.205009" 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-19T02:56:13.825167" elapsed="0.379904"/>
</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-19T02:56:14.208146" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:56:14.208650" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:14.208984" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:14.205432" elapsed="0.003729"/>
</kw>
<msg time="2026-04-19T02:56:14.209274" level="INFO">${output} = 1</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-19T02:56:13.823918" elapsed="0.385388"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:14.209732" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:14.209484" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:14.209821" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:56:14.209974" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:13.822235" elapsed="0.387764"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:14.210064" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:56:14.210212" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:13.819990" elapsed="0.390246"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:14.210785" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:14.210393" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:13.818887" elapsed="0.392082">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:16.214654" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:16.213823" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:16.216612" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:16.216213" elapsed="0.000436"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:16.217781" 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-19T02:56:16.217923" 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-19T02:56:16.217555" elapsed="0.000406"/>
</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-19T02:56:16.223701" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:16.222994" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:16.222917" elapsed="0.000979"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:16.225446" 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-19T02:56:16.225696" 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-19T02:56:16.224989" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:16.227400" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:16.226778" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:16.229201" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:16.228490" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:16.231646" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:16.231724" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:16.231352" 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-19T02:56:16.231957" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:16.233311" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:16.545976" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:16.232957" elapsed="0.313173"/>
</kw>
<msg time="2026-04-19T02:56:16.546213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:16.232598" elapsed="0.313702"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:16.230508" elapsed="0.316064"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:16.548072" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:16.571243" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:16.571740" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:16.572121" 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-19T02:56:16.547652" elapsed="0.024687"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:16.574594" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:16.577596" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:16.576743" elapsed="0.000996"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:16.578375" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:16.577965" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:16.577886" elapsed="0.000672"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:16.579060" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:56:16.578760" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:16.578692" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:16.579398" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:16.585791" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T02:56:16.586458" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:16.586814" 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-19T02:56:16.581291" 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-19T02:56:16.220637" elapsed="0.366626"/>
</kw>
<msg time="2026-04-19T02:56:16.587569" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:16.219697" elapsed="0.367929"/>
</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-19T02:56:16.218911" elapsed="0.368797"/>
</kw>
<msg time="2026-04-19T02:56:16.587748" 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-19T02:56:16.218204" elapsed="0.369590"/>
</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-19T02:56:16.590852" 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-19T02:56:16.591345" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:16.591638" 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-19T02:56:16.588101" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T02:56:16.591936" level="INFO">${output} = 1</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-19T02:56:16.216949" elapsed="0.375013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:16.592419" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:16.592161" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:16.592507" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:56:16.592658" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:16.215262" elapsed="0.377422"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:16.592730" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:16.592876" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:16.212934" elapsed="0.379967"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:16.593507" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:16.593112" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:16.211829" elapsed="0.381865">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:18.597592" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:18.596824" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:18.599000" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:18.598588" elapsed="0.000480"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:18.600359" 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-19T02:56:18.600511" 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-19T02:56:18.600101" elapsed="0.000447"/>
</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-19T02:56:18.606348" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:18.605824" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:18.605536" elapsed="0.000957"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:18.608006" 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-19T02:56:18.608343" 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-19T02:56:18.607535" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:18.610067" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:18.609484" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:18.611940" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:18.611211" elapsed="0.000925"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:18.614543" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:18.614624" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:18.614251" 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-19T02:56:18.614871" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:18.616260" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:18.982487" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:18.615841" elapsed="0.366904"/>
</kw>
<msg time="2026-04-19T02:56:18.982832" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:18.615470" elapsed="0.367451"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:18.613428" elapsed="0.369804"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:18.984799" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:19.008048" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:19.008425" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:19.008647" 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-19T02:56:18.984396" elapsed="0.024394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:19.010347" elapsed="0.000654"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:19.012532" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:19.011855" 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-19T02:56:19.013352" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:19.012961" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:19.012879" elapsed="0.000760"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:19.014438" elapsed="0.000149"/>
</return>
<status status="PASS" start="2026-04-19T02:56:19.013950" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:19.013846" elapsed="0.000998"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:19.015019" elapsed="0.000115"/>
</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-19T02:56:19.022698" elapsed="0.000399"/>
</kw>
<kw name="Open 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-19T02:56:19.023320" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:19.023696" 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-19T02:56:19.018686" elapsed="0.005224"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:18.603487" elapsed="0.420669"/>
</kw>
<msg time="2026-04-19T02:56:19.024471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:18.602459" elapsed="0.422080"/>
</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-19T02:56:18.601623" elapsed="0.422998"/>
</kw>
<msg time="2026-04-19T02:56:19.024662" 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-19T02:56:18.600789" elapsed="0.423920"/>
</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-19T02:56:19.027848" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T02:56:19.028415" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:19.028713" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:19.025006" elapsed="0.003854"/>
</kw>
<msg time="2026-04-19T02:56:19.028954" level="INFO">${output} = 1</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-19T02:56:18.599405" elapsed="0.429574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:19.029457" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:19.029203" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:19.029549" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:56:19.029709" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:18.597963" elapsed="0.431771"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:19.029780" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:19.029925" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:18.595867" elapsed="0.434082"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:19.030609" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:19.030192" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:18.594653" elapsed="0.436144">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:21.033355" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:21.032823" elapsed="0.000584"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:21.034782" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:21.034372" elapsed="0.000450"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:21.036158" 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-19T02:56:21.036314" 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-19T02:56:21.035895" elapsed="0.000458"/>
</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-19T02:56:21.042364" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:21.041673" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:21.041271" elapsed="0.001294"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:21.044685" 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-19T02:56:21.045052" 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-19T02:56:21.043941" elapsed="0.001256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:21.046878" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:21.046326" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:21.048802" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:21.047967" elapsed="0.000936"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:21.051251" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:21.051330" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:21.050935" 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-19T02:56:21.051569" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:21.053007" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:21.370822" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:21.052679" elapsed="0.318301"/>
</kw>
<msg time="2026-04-19T02:56:21.371086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:21.052272" elapsed="0.318908"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:21.050134" elapsed="0.321344"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:21.372977" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:21.396296" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:21.396816" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:21.397230" 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-19T02:56:21.372579" elapsed="0.024869"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:21.399807" elapsed="0.000972"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:21.402894" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:21.402183" 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-19T02:56:21.403700" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:21.403368" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:21.403284" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:21.404434" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:56:21.404138" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:21.404052" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:21.404777" elapsed="0.000055"/>
</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-19T02:56:21.412820" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T02:56:21.413418" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:21.413817" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:21.406723" elapsed="0.007336"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:21.039325" elapsed="0.374975"/>
</kw>
<msg time="2026-04-19T02:56:21.414658" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:21.038210" elapsed="0.376507"/>
</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-19T02:56:21.037383" elapsed="0.377415"/>
</kw>
<msg time="2026-04-19T02:56:21.414838" 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-19T02:56:21.036616" elapsed="0.378267"/>
</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-19T02:56:21.418084" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:56:21.418583" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:21.418882" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:21.415338" elapsed="0.003747"/>
</kw>
<msg time="2026-04-19T02:56:21.419181" level="INFO">${output} = 1</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-19T02:56:21.035220" elapsed="0.383986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:21.419666" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:21.419406" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:21.419753" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:56:21.419946" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:21.033752" elapsed="0.386220"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:21.420018" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T02:56:21.420181" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:21.032246" elapsed="0.387960"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:21.420785" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:21.420368" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:21.031482" elapsed="0.389490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:23.424444" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:23.423686" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:23.426754" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:23.426083" elapsed="0.000732"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:23.428201" 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-19T02:56:23.428344" 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-19T02:56:23.427959" elapsed="0.000422"/>
</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-19T02:56:23.433903" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:23.433274" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:23.433197" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:23.436260" 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-19T02:56:23.436505" 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-19T02:56:23.435566" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:23.438143" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:23.437590" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:23.439941" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:23.439252" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:23.442403" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:23.442482" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:23.442108" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:23.442720" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:23.443984" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:23.769357" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:23.443658" elapsed="0.325875"/>
</kw>
<msg time="2026-04-19T02:56:23.769622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:23.443294" elapsed="0.326439"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:23.441337" elapsed="0.328729"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:23.771656" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:23.794207" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:23.794706" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:23.795090" 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-19T02:56:23.771231" elapsed="0.024078"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:23.797511" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:23.800317" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:23.799654" 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-19T02:56:23.801222" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:23.800690" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:23.800608" elapsed="0.000808"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:23.801968" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T02:56:23.801629" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:23.801551" elapsed="0.000668"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:23.802331" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:23.808631" 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-19T02:56:23.809346" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:23.809720" 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-19T02:56:23.804259" elapsed="0.005674"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:23.431326" elapsed="0.378852"/>
</kw>
<msg time="2026-04-19T02:56:23.810488" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:23.430284" elapsed="0.380268"/>
</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-19T02:56:23.429451" elapsed="0.381185"/>
</kw>
<msg time="2026-04-19T02:56:23.810677" 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-19T02:56:23.428605" elapsed="0.382119"/>
</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-19T02:56:23.813789" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:56:23.814306" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:23.814615" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:23.811022" elapsed="0.003743"/>
</kw>
<msg time="2026-04-19T02:56:23.814863" level="INFO">${output} = 1</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-19T02:56:23.427332" elapsed="0.387556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:23.815409" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:23.815144" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:23.815501" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:56:23.815660" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:23.425132" elapsed="0.390553"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:23.815733" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:56:23.815879" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:23.422847" elapsed="0.393057"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:23.816496" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:23.816090" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:23.421743" elapsed="0.394942">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:25.820172" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:25.819406" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:25.822297" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:25.821657" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:25.824167" 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-19T02:56:25.824532" 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-19T02:56:25.823811" elapsed="0.000783"/>
</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-19T02:56:25.830147" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:25.829659" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:25.829603" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:25.831968" 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-19T02:56:25.832229" 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-19T02:56:25.831302" elapsed="0.001029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:25.833867" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:25.833327" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:25.835744" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:25.835044" elapsed="0.000800"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:25.838348" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:25.838430" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:25.837843" elapsed="0.000612"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:25.838668" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:25.839951" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:26.193696" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:25.839626" elapsed="0.354171"/>
</kw>
<msg time="2026-04-19T02:56:26.193867" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:25.839262" elapsed="0.354681"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:25.837074" elapsed="0.357127"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:26.195601" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:26.218504" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:26.218995" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:26.219552" 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-19T02:56:26.195226" elapsed="0.024535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:26.221992" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:26.225165" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:26.224169" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:26.226245" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:26.225736" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:26.225619" elapsed="0.000909"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:26.227311" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:56:26.226841" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:26.226736" elapsed="0.000978"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:26.227889" elapsed="0.000084"/>
</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-19T02:56:26.235349" elapsed="0.000530"/>
</kw>
<kw name="Open 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-19T02:56:26.236317" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:26.236752" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:26.230249" elapsed="0.006711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:25.828269" elapsed="0.408934"/>
</kw>
<msg time="2026-04-19T02:56:26.237526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:25.827460" elapsed="0.410125"/>
</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-19T02:56:25.826154" elapsed="0.411513"/>
</kw>
<msg time="2026-04-19T02:56:26.237709" 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-19T02:56:25.824948" elapsed="0.412807"/>
</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-19T02:56:26.240765" elapsed="0.000532"/>
</kw>
<kw name="Open 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-19T02:56:26.241468" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:26.241763" 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-19T02:56:26.238060" elapsed="0.003851"/>
</kw>
<msg time="2026-04-19T02:56:26.242003" level="INFO">${output} = 1</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-19T02:56:25.822860" elapsed="0.419185"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:26.242475" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:26.242227" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:26.242561" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:56:26.242712" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:25.820698" elapsed="0.422039"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:26.242784" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:26.242929" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:25.818536" elapsed="0.424418"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:26.243519" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:26.243125" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:25.817490" elapsed="0.426248">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:28.247745" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:28.246936" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:28.249869" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:28.249259" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:28.251767" 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-19T02:56:28.251992" 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-19T02:56:28.251425" elapsed="0.000656"/>
</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-19T02:56:28.261600" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:28.260511" elapsed="0.001397"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:28.260384" elapsed="0.001731"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:28.264815" 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-19T02:56:28.265080" 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-19T02:56:28.264131" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:28.266887" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:28.266166" elapsed="0.000999"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:28.269646" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:28.268596" elapsed="0.001192"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:28.273434" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:28.273548" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:28.272998" elapsed="0.000586"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:28.273898" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:28.275976" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:28.654418" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:28.275499" elapsed="0.379075"/>
</kw>
<msg time="2026-04-19T02:56:28.654670" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:28.274778" elapsed="0.379995"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:28.271675" elapsed="0.383473"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:28.656662" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:28.679727" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:28.680274" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:28.680606" 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-19T02:56:28.656253" elapsed="0.024562"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:28.683075" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:28.685341" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:28.684703" 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-19T02:56:28.686103" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:28.685715" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:28.685637" elapsed="0.000655"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:28.686785" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:56:28.686502" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:28.686434" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:28.687487" elapsed="0.000065"/>
</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-19T02:56:28.693686" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:28.694334" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:28.694696" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:28.689668" elapsed="0.005239"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:28.257153" elapsed="0.438006"/>
</kw>
<msg time="2026-04-19T02:56:28.695564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:28.255439" elapsed="0.440185"/>
</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-19T02:56:28.254056" elapsed="0.441652"/>
</kw>
<msg time="2026-04-19T02:56:28.695750" 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-19T02:56:28.252680" elapsed="0.443117"/>
</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-19T02:56:28.698854" 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-19T02:56:28.699397" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:28.699695" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:28.696108" elapsed="0.003736"/>
</kw>
<msg time="2026-04-19T02:56:28.699935" level="INFO">${output} = 1</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-19T02:56:28.250449" elapsed="0.449512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:28.700424" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:28.700165" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:28.700517" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T02:56:28.700676" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:28.248314" elapsed="0.452389"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:28.700752" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:28.700899" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:28.245945" elapsed="0.454980"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:28.701497" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:28.701101" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:28.244771" elapsed="0.456923">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:30.705125" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:30.704346" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:30.707393" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:30.706759" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:30.709217" 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-19T02:56:30.709444" 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-19T02:56:30.708855" elapsed="0.000647"/>
</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-19T02:56:30.716119" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:30.715088" elapsed="0.001149"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:30.714987" elapsed="0.001338"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:30.718500" 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-19T02:56:30.718866" 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-19T02:56:30.717793" elapsed="0.001220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:30.720643" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:30.720101" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:30.722606" 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-19T02:56:30.721873" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:30.725159" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:30.725239" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:30.724840" 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-19T02:56:30.725477" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:30.726796" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:31.042322" 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 Sun Apr 19 02:55:32 UTC 2026

  System load:  0.29               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:30.726463" elapsed="0.316005"/>
</kw>
<msg time="2026-04-19T02:56:31.042551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:30.726101" elapsed="0.316536"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:30.724008" elapsed="0.318905"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:31.044413" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:31.066946" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:31.067491" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:31.067828" 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-19T02:56:31.044001" elapsed="0.024073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:31.070319" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:31.073488" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:31.072470" elapsed="0.001248"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:31.074649" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:31.074143" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:31.073945" elapsed="0.000930"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:31.075243" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:56:31.075024" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:31.074974" elapsed="0.000431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:31.075491" 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-19T02:56:31.080267" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:56:31.080811" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:31.081315" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:31.076850" elapsed="0.004682"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:30.712991" elapsed="0.368764"/>
</kw>
<msg time="2026-04-19T02:56:31.082112" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:30.711948" elapsed="0.370223"/>
</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-19T02:56:30.710947" elapsed="0.371307"/>
</kw>
<msg time="2026-04-19T02:56:31.082295" 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-19T02:56:30.709890" elapsed="0.372451"/>
</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-19T02:56:31.085459" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T02:56:31.085942" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:31.086264" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:31.082695" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T02:56:31.086503" level="INFO">${output} = 1</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-19T02:56:30.707931" elapsed="0.378596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:31.086952" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:31.086706" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:31.087054" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:56:31.087209" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:30.705755" elapsed="0.381479"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:31.087281" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:31.087425" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:30.703516" elapsed="0.383933"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:31.087994" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:31.087605" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:30.702490" elapsed="0.385704">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:33.091787" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:33.090987" elapsed="0.000873"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:33.094117" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:33.093429" elapsed="0.000754"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:33.096173" 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-19T02:56:33.096423" 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-19T02:56:33.095752" elapsed="0.000736"/>
</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-19T02:56:33.102231" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:33.101572" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:33.101194" elapsed="0.001231"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:33.104452" 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-19T02:56:33.104792" 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-19T02:56:33.103771" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:33.106527" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:33.105903" elapsed="0.000738"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:33.108339" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:33.107612" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:33.110792" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:33.110869" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:33.110509" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:33.111117" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:33.112480" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:33.709588" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:33.112151" elapsed="0.597586"/>
</kw>
<msg time="2026-04-19T02:56:33.709821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:33.111741" elapsed="0.598172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:33.109734" elapsed="0.600497"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:33.711841" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:33.734521" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:33.735103" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:33.735458" 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-19T02:56:33.711390" elapsed="0.024284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:33.738068" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:33.741458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:33.740329" elapsed="0.001363"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:33.742618" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:33.742094" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:33.741922" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:33.743787" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:56:33.743294" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:33.743184" elapsed="0.001330"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:33.744745" elapsed="0.000096"/>
</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-19T02:56:33.750191" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T02:56:33.750756" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:33.751136" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:33.746714" elapsed="0.004640"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:33.099317" elapsed="0.652260"/>
</kw>
<msg time="2026-04-19T02:56:33.751885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:33.098343" elapsed="0.653601"/>
</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-19T02:56:33.097564" elapsed="0.654488"/>
</kw>
<msg time="2026-04-19T02:56:33.752098" 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-19T02:56:33.096834" elapsed="0.655311"/>
</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-19T02:56:33.755308" 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-19T02:56:33.755799" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:33.756127" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:33.752450" elapsed="0.003841"/>
</kw>
<msg time="2026-04-19T02:56:33.756448" level="INFO">${output} = 1</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-19T02:56:33.094707" elapsed="0.661770"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:33.756948" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:33.756665" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:33.757116" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:56:33.757286" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:33.092393" elapsed="0.664921"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:33.757363" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:56:33.757514" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:33.090125" elapsed="0.667414"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:33.758120" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:33.757700" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:33.088973" elapsed="0.669343">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:35.762074" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:35.761214" elapsed="0.000936"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:35.764281" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:35.763632" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:35.766283" 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-19T02:56:35.766542" 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-19T02:56:35.765893" elapsed="0.000711"/>
</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-19T02:56:35.773182" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:35.772673" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:35.772374" elapsed="0.000952"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:35.774813" 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-19T02:56:35.775076" 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-19T02:56:35.774347" elapsed="0.000832"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:35.776772" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:35.776172" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:35.778605" 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-19T02:56:35.777886" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:35.781114" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:35.781194" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:35.780807" 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-19T02:56:35.781432" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:35.782733" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:36.114878" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:35.782404" elapsed="0.332735"/>
</kw>
<msg time="2026-04-19T02:56:36.115225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:35.782022" elapsed="0.333290"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:35.779931" elapsed="0.335662"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:36.117082" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:36.140344" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:36.140998" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:36.141420" 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-19T02:56:36.116677" elapsed="0.024955"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:36.143965" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:36.147418" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:36.146565" 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-19T02:56:36.148180" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:36.147816" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:36.147738" elapsed="0.000630"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:36.148859" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:56:36.148576" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:36.148504" elapsed="0.000684"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:36.149301" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:36.158322" 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-19T02:56:36.159063" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:36.159423" 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-19T02:56:36.151285" elapsed="0.008344"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:35.771051" elapsed="0.388802"/>
</kw>
<msg time="2026-04-19T02:56:36.160174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:35.769492" elapsed="0.390743"/>
</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-19T02:56:35.768226" elapsed="0.392089"/>
</kw>
<msg time="2026-04-19T02:56:36.160354" 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-19T02:56:35.766965" elapsed="0.393434"/>
</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-19T02:56:36.163456" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:56:36.163934" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:36.164249" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:36.160689" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T02:56:36.164489" level="INFO">${output} = 1</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-19T02:56:35.764857" elapsed="0.399657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:36.164948" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:36.164697" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:36.165053" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:56:36.165208" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:35.762641" elapsed="0.402593"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:36.165279" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:36.165421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:35.760343" elapsed="0.405102"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:36.166177" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:36.165673" elapsed="0.000587">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:35.759204" elapsed="0.407166">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:38.169822" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:38.169089" elapsed="0.000802"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:38.172214" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:38.171555" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:38.173386" 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-19T02:56:38.173528" 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-19T02:56:38.173160" elapsed="0.000405"/>
</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-19T02:56:38.178959" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:38.178332" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:38.178256" elapsed="0.000950"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:38.181486" 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-19T02:56:38.181825" 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-19T02:56:38.180563" elapsed="0.001401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:38.184207" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:38.183364" elapsed="0.000999"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:38.186761" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:38.185783" elapsed="0.001114"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:38.189725" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:38.189804" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:38.189434" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:38.190053" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:38.191340" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:38.512286" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:38.190979" elapsed="0.321459"/>
</kw>
<msg time="2026-04-19T02:56:38.512524" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:38.190616" elapsed="0.322001"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:38.188486" elapsed="0.324411"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:38.514398" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:38.537338" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:38.537842" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:38.538230" 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-19T02:56:38.513978" elapsed="0.024469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:38.540738" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:38.543954" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:38.542913" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:38.544742" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:38.544418" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:38.544340" elapsed="0.000585"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:38.545430" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:56:38.545153" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:38.545084" elapsed="0.000566"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:38.545760" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:38.552489" elapsed="0.000561"/>
</kw>
<kw name="Open 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-19T02:56:38.553267" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:38.553620" 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-19T02:56:38.547622" elapsed="0.006204"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:38.176405" elapsed="0.377664"/>
</kw>
<msg time="2026-04-19T02:56:38.554375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:38.175430" elapsed="0.379002"/>
</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-19T02:56:38.174530" elapsed="0.379984"/>
</kw>
<msg time="2026-04-19T02:56:38.554555" 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-19T02:56:38.173788" elapsed="0.380814"/>
</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-19T02:56:38.557600" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:38.558089" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:38.558384" 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-19T02:56:38.554891" elapsed="0.003640"/>
</kw>
<msg time="2026-04-19T02:56:38.558621" level="INFO">${output} = 1</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-19T02:56:38.172556" elapsed="0.386090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:38.559095" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:38.558823" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:38.559183" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:56:38.559349" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:38.170381" elapsed="0.388993"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:38.559421" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:56:38.559564" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:38.168248" elapsed="0.391340"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:38.560217" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:38.559743" elapsed="0.000549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:38.167207" elapsed="0.393198">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:40.563908" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:40.563166" elapsed="0.000813"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:40.565806" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:40.565425" elapsed="0.000418"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:40.566971" 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-19T02:56:40.567138" 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-19T02:56:40.566747" elapsed="0.000430"/>
</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-19T02:56:40.572510" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:40.571822" elapsed="0.000801"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:40.571744" elapsed="0.000960"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:40.574555" 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-19T02:56:40.574800" 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-19T02:56:40.573866" elapsed="0.001041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:40.576497" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:40.575901" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:40.578320" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:40.577602" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:40.580781" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:40.580862" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:40.580488" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:40.581123" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:40.582407" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:40.905171" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:40.582075" elapsed="0.323283"/>
</kw>
<msg time="2026-04-19T02:56:40.905476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:40.581696" elapsed="0.323896"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:40.579647" elapsed="0.326334"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:40.908134" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:40.931183" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:40.931718" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:40.932122" 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-19T02:56:40.907574" elapsed="0.025014"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:40.935222" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:40.938602" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:40.937565" elapsed="0.001281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:40.939888" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:40.939247" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:40.939116" elapsed="0.001140"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:40.941232" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:56:40.940650" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:40.940486" elapsed="0.000906"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:40.941472" 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-19T02:56:40.946319" 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-19T02:56:40.946876" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:40.947249" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:40.942804" elapsed="0.004656"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:40.569869" elapsed="0.377816"/>
</kw>
<msg time="2026-04-19T02:56:40.947995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:40.568905" elapsed="0.379161"/>
</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-19T02:56:40.568142" elapsed="0.380008"/>
</kw>
<msg time="2026-04-19T02:56:40.948192" 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-19T02:56:40.567402" elapsed="0.380836"/>
</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-19T02:56:40.951277" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:56:40.951757" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:40.952068" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:40.948557" elapsed="0.003668"/>
</kw>
<msg time="2026-04-19T02:56:40.952316" level="INFO">${output} = 1</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-19T02:56:40.566170" elapsed="0.386172"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:40.952779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:40.952530" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:40.952867" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:56:40.953019" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:40.564669" elapsed="0.388481"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:40.953204" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:40.953352" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:40.562277" elapsed="0.391100"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:40.953929" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:40.953531" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:40.561218" elapsed="0.392912">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:42.957738" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:42.956880" elapsed="0.000934"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:42.960152" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:42.959482" elapsed="0.000738"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:42.962231" 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-19T02:56:42.962618" 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-19T02:56:42.961885" elapsed="0.000761"/>
</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-19T02:56:42.966660" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:42.966174" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:42.966109" elapsed="0.000695"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:42.968539" 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-19T02:56:42.968795" 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-19T02:56:42.967817" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:42.970523" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:42.969917" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:42.972388" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:42.971642" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:42.974997" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:42.975110" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:42.974708" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:42.975376" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:42.976668" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:43.341325" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:42.976338" elapsed="0.365135"/>
</kw>
<msg time="2026-04-19T02:56:43.341559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:42.975947" elapsed="0.365703"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:42.973768" elapsed="0.368183"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:43.343442" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:43.366414" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:43.366912" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:43.367298" 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-19T02:56:43.343050" elapsed="0.024462"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:43.369734" elapsed="0.000774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:43.371916" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:43.371313" 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-19T02:56:43.372652" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:43.372326" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:43.372249" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:43.373353" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:56:43.373065" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:43.372976" elapsed="0.000604"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:43.373693" elapsed="0.000051"/>
</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-19T02:56:43.380521" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:43.381154" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:43.381520" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:43.375581" elapsed="0.006149"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:42.964699" elapsed="0.417277"/>
</kw>
<msg time="2026-04-19T02:56:43.382301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:42.963950" elapsed="0.418413"/>
</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-19T02:56:42.963367" elapsed="0.419077"/>
</kw>
<msg time="2026-04-19T02:56:43.382485" 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-19T02:56:42.962813" elapsed="0.419718"/>
</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-19T02:56:43.385648" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:56:43.386154" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:43.386454" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:43.382822" elapsed="0.003782"/>
</kw>
<msg time="2026-04-19T02:56:43.386696" level="INFO">${output} = 1</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-19T02:56:42.960846" elapsed="0.425876"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:43.387171" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:43.386904" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:43.387258" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:56:43.387413" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:42.958344" elapsed="0.429095"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:43.387485" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:43.387631" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:42.956002" elapsed="0.431653"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:43.388245" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:43.387813" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:42.954917" elapsed="0.433513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:45.391939" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:45.391205" elapsed="0.000805"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:45.394060" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:45.393433" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:45.395685" 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-19T02:56:45.395826" 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-19T02:56:45.395468" elapsed="0.000395"/>
</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-19T02:56:45.401506" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:45.400494" elapsed="0.001200"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:45.400419" elapsed="0.001357"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:45.403779" 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-19T02:56:45.404161" 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-19T02:56:45.403172" elapsed="0.001131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:45.406404" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:45.405636" elapsed="0.000920"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:45.408515" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:45.407752" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:45.410867" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:45.410946" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:45.410578" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:45.411198" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:45.412590" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:45.728661" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:45.412263" elapsed="0.316483"/>
</kw>
<msg time="2026-04-19T02:56:45.728814" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:45.411750" elapsed="0.317135"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:45.409801" elapsed="0.319329"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:45.730453" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:45.753651" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:45.754345" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:45.754682" 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-19T02:56:45.730130" elapsed="0.024763"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:45.757258" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:45.760605" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:45.759594" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:45.761728" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:45.761220" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:45.761094" elapsed="0.000923"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:45.762816" elapsed="0.000138"/>
</return>
<status status="PASS" start="2026-04-19T02:56:45.762372" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:45.762264" elapsed="0.001218"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:45.763669" elapsed="0.000085"/>
</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-19T02:56:45.770584" elapsed="0.000714"/>
</kw>
<kw name="Open 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-19T02:56:45.771860" elapsed="0.000432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:45.772763" elapsed="0.000253"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:45.765742" elapsed="0.007563"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:45.398555" elapsed="0.375257"/>
</kw>
<msg time="2026-04-19T02:56:45.774643" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:45.397578" elapsed="0.377199"/>
</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-19T02:56:45.396814" elapsed="0.378147"/>
</kw>
<msg time="2026-04-19T02:56:45.775292" 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-19T02:56:45.396103" elapsed="0.379261"/>
</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-19T02:56:45.779582" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:45.780279" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:45.780690" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:45.775781" elapsed="0.005114"/>
</kw>
<msg time="2026-04-19T02:56:45.781021" level="INFO">${output} = 1</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-19T02:56:45.394609" elapsed="0.386468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:45.781676" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:45.781330" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:45.781798" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:56:45.782009" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:45.392496" elapsed="0.389571"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:45.782135" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T02:56:45.782339" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:45.390336" elapsed="0.392038"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:45.783264" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:45.782594" elapsed="0.000777">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:45.389289" elapsed="0.394207">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:47.786964" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:47.786227" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:47.789149" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:47.788498" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:47.791016" 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-19T02:56:47.791279" 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-19T02:56:47.790683" elapsed="0.000654"/>
</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-19T02:56:47.797323" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:47.796662" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:47.796283" elapsed="0.001235"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:47.799521" 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-19T02:56:47.799857" 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-19T02:56:47.798885" elapsed="0.001113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:47.801679" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:47.801138" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:47.803638" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:47.802840" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:47.806083" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:47.806164" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:47.805769" 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-19T02:56:47.806402" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:47.807819" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:48.138675" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:47.807494" elapsed="0.331344"/>
</kw>
<msg time="2026-04-19T02:56:48.138929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:47.806959" elapsed="0.332085"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:47.804985" elapsed="0.334370"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:48.140983" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:48.165096" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:48.165672" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:48.166127" 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-19T02:56:48.140551" elapsed="0.025807"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:48.168726" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:48.171258" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:48.170523" 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-19T02:56:48.172054" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:48.171693" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:48.171606" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:48.172803" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T02:56:48.172487" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:48.172417" elapsed="0.000636"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:48.173181" elapsed="0.000056"/>
</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-19T02:56:48.179334" elapsed="0.000545"/>
</kw>
<kw name="Open 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-19T02:56:48.180113" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:48.180496" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:48.175232" elapsed="0.005477"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:47.794427" elapsed="0.386509"/>
</kw>
<msg time="2026-04-19T02:56:48.181282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:47.793453" elapsed="0.387896"/>
</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-19T02:56:47.792679" elapsed="0.388758"/>
</kw>
<msg time="2026-04-19T02:56:48.181479" 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-19T02:56:47.791685" elapsed="0.389841"/>
</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-19T02:56:48.184952" 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-19T02:56:48.185519" elapsed="0.000313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:48.185982" elapsed="0.000149"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:48.181910" elapsed="0.004278"/>
</kw>
<msg time="2026-04-19T02:56:48.186284" level="INFO">${output} = 1</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-19T02:56:47.789693" elapsed="0.396618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:48.186797" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:48.186533" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:48.186890" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:56:48.187076" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:47.787524" elapsed="0.399579"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:48.187151" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:48.187298" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:47.785385" elapsed="0.401938"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:48.187887" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:48.187480" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:47.784338" elapsed="0.403764">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:50.191730" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:50.190953" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:50.193983" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:50.193301" elapsed="0.000773"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:50.195319" 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-19T02:56:50.195459" 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-19T02:56:50.195090" elapsed="0.000405"/>
</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-19T02:56:50.201098" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:50.200432" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:50.200054" elapsed="0.001271"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:50.203153" 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-19T02:56:50.203409" 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-19T02:56:50.202689" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:50.205058" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:50.204494" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:50.206901" 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-19T02:56:50.206188" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:50.209402" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:50.209484" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:50.209083" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:50.209718" elapsed="0.000429"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:50.211226" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:50.535023" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:50.210731" elapsed="0.324465"/>
</kw>
<msg time="2026-04-19T02:56:50.535284" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:50.210370" elapsed="0.325011"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:50.208291" elapsed="0.327380"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:50.537182" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:50.560020" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:50.560558" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:50.560888" 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-19T02:56:50.536771" elapsed="0.024364"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:50.563384" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:50.566530" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:50.565532" elapsed="0.001139"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:50.567250" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:50.566895" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:50.566817" 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-19T02:56:50.567917" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T02:56:50.567636" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:50.567569" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:50.568272" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:50.576436" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:50.576989" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:50.577371" 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-19T02:56:50.570211" elapsed="0.007383"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:50.198231" elapsed="0.379592"/>
</kw>
<msg time="2026-04-19T02:56:50.578148" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:50.197233" elapsed="0.380972"/>
</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-19T02:56:50.196452" elapsed="0.381833"/>
</kw>
<msg time="2026-04-19T02:56:50.578325" 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-19T02:56:50.195716" elapsed="0.382654"/>
</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-19T02:56:50.581336" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:50.581839" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:50.582290" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:50.578660" elapsed="0.003785"/>
</kw>
<msg time="2026-04-19T02:56:50.582598" level="INFO">${output} = 1</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-19T02:56:50.194498" elapsed="0.388126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:50.583071" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:50.582804" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:50.583160" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:56:50.583311" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:50.192304" elapsed="0.391033"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:50.583383" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:56:50.583526" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:50.190141" elapsed="0.393409"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:50.584106" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:50.583705" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:50.188943" elapsed="0.395343">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:52.587939" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:52.587131" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:52.590122" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:52.589462" elapsed="0.000724"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:52.591853" 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-19T02:56:52.591999" 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-19T02:56:52.591625" elapsed="0.000430"/>
</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-19T02:56:52.597434" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:52.596768" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:52.596689" elapsed="0.000940"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:52.599975" 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-19T02:56:52.600391" 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-19T02:56:52.599019" elapsed="0.001511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:52.602700" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:52.601894" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:52.604801" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:52.604100" elapsed="0.000798"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:52.607199" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:52.607279" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:52.606894" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:52.607521" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:52.608897" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:52.934585" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:52.608567" elapsed="0.326296"/>
</kw>
<msg time="2026-04-19T02:56:52.934952" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:52.608202" elapsed="0.326866"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:52.606116" elapsed="0.329242"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:52.936872" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:52.959802" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:52.960362" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:52.960716" 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-19T02:56:52.936468" elapsed="0.024648"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:52.963426" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:52.967224" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:52.965823" elapsed="0.001647"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:52.968492" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:52.967885" elapsed="0.000789"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:52.967743" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:52.969781" elapsed="0.000139"/>
</return>
<status status="PASS" start="2026-04-19T02:56:52.969316" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:52.969199" elapsed="0.001009"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:52.970387" 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-19T02:56:52.976306" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T02:56:52.976883" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:52.977332" 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-19T02:56:52.972460" elapsed="0.005093"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:52.594821" elapsed="0.382963"/>
</kw>
<msg time="2026-04-19T02:56:52.978128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:52.593820" elapsed="0.384371"/>
</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-19T02:56:52.593054" elapsed="0.385224"/>
</kw>
<msg time="2026-04-19T02:56:52.978320" 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-19T02:56:52.592284" elapsed="0.386084"/>
</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-19T02:56:52.981502" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:56:52.981992" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:52.982324" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:52.978671" elapsed="0.003807"/>
</kw>
<msg time="2026-04-19T02:56:52.982572" level="INFO">${output} = 1</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-19T02:56:52.590742" elapsed="0.391855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:52.983110" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:52.982827" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:52.983204" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:56:52.983364" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:52.588501" elapsed="0.394888"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:52.983438" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:56:52.983586" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:52.586227" elapsed="0.397386"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:52.984278" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:52.983844" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:52.585147" elapsed="0.399329">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:54.988273" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:54.987404" elapsed="0.000943"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:54.990518" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:54.989855" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:54.992576" 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-19T02:56:54.992823" 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-19T02:56:54.992193" elapsed="0.000709"/>
</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-19T02:56:55.000162" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:54.999436" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:54.999357" elapsed="0.001012"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:55.002220" 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-19T02:56:55.002476" 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-19T02:56:55.001480" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:55.004228" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:55.003626" elapsed="0.000720"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:55.006168" 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-19T02:56:55.005362" elapsed="0.000907"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:55.008789" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:55.008869" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:55.008495" 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-19T02:56:55.009125" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:55.010632" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:55.328638" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:55.010299" elapsed="0.318496"/>
</kw>
<msg time="2026-04-19T02:56:55.328884" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:55.009757" elapsed="0.319220"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:55.007519" elapsed="0.321769"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:55.330786" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:55.353731" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:55.353968" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:55.354145" 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-19T02:56:55.330381" elapsed="0.023859"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:55.355233" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:55.356720" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:55.356265" elapsed="0.000557"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:55.357250" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:55.356987" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:55.356930" elapsed="0.000457"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:55.357735" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:56:55.357531" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:55.357482" elapsed="0.000416"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:55.357977" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:55.362668" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:56:55.363261" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:55.363622" 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-19T02:56:55.359320" elapsed="0.004508"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:54.997214" elapsed="0.366942"/>
</kw>
<msg time="2026-04-19T02:56:55.364457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:54.995821" elapsed="0.368696"/>
</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-19T02:56:54.994538" elapsed="0.370062"/>
</kw>
<msg time="2026-04-19T02:56:55.364642" 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-19T02:56:54.993307" elapsed="0.371381"/>
</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-19T02:56:55.367802" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:56:55.368323" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:55.368621" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:55.364982" elapsed="0.003786"/>
</kw>
<msg time="2026-04-19T02:56:55.368860" level="INFO">${output} = 1</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-19T02:56:54.991149" elapsed="0.377736"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:55.369333" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:55.369083" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:55.369419" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:56:55.369572" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:54.988849" elapsed="0.380748"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:55.369644" elapsed="0.000089"/>
</return>
<msg time="2026-04-19T02:56:55.369856" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:54.986428" elapsed="0.383453"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:55.370457" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:55.370055" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:54.985327" elapsed="0.385318">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:57.374300" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:57.373506" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:57.376602" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:57.375961" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:57.378550" 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-19T02:56:57.378779" 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-19T02:56:57.378196" elapsed="0.000642"/>
</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-19T02:56:57.386698" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:57.386060" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:57.385963" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:57.389218" 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-19T02:56:57.389556" 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-19T02:56:57.388251" elapsed="0.001469"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:57.391254" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:57.390697" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:57.393122" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:56:57.392378" elapsed="0.000843"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:57.395465" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:57.395543" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:57.395175" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:57.395776" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:57.397180" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:56:57.715191" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:57.396815" elapsed="0.318526"/>
</kw>
<msg time="2026-04-19T02:56:57.715422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:57.396458" elapsed="0.319050"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:57.394407" elapsed="0.321398"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:56:57.717425" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:56:57.740162" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:56:57.740508" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:56:57.740721" 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-19T02:56:57.716950" elapsed="0.023902"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:57.742349" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:57.744424" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:57.743751" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:57.745261" elapsed="0.000080"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:56:57.744792" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:57.744713" elapsed="0.000779"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:56:57.746016" elapsed="0.000104"/>
</return>
<status status="PASS" start="2026-04-19T02:56:57.745717" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:57.745634" elapsed="0.000635"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:56:57.746378" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:57.753084" elapsed="0.000495"/>
</kw>
<kw name="Open 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-19T02:56:57.753879" elapsed="0.000283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:57.754449" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:57.748228" elapsed="0.006519"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:57.383203" elapsed="0.372014"/>
</kw>
<msg time="2026-04-19T02:56:57.755655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:57.381666" elapsed="0.374072"/>
</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-19T02:56:57.380416" elapsed="0.375513"/>
</kw>
<msg time="2026-04-19T02:56:57.755994" 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-19T02:56:57.379230" elapsed="0.376856"/>
</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-19T02:56:57.759604" 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-19T02:56:57.760170" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:56:57.760476" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:56:57.756505" elapsed="0.004121"/>
</kw>
<msg time="2026-04-19T02:56:57.760718" level="INFO">${output} = 1</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-19T02:56:57.377193" elapsed="0.383550"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:57.761201" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:57.760927" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:56:57.761288" elapsed="0.000076"/>
</return>
<msg time="2026-04-19T02:56:57.761511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:57.375015" elapsed="0.386522"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:56:57.761585" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:56:57.761736" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:57.372617" elapsed="0.389143"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:56:57.762343" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:56:57.761921" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:57.371471" elapsed="0.391056">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:56:59.765973" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:56:59.765242" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:56:59.767598" level="INFO">${member_ip} = 10.30.171.206</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-19T02:56:59.767217" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:59.768751" 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-19T02:56:59.768997" 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-19T02:56:59.768533" elapsed="0.000523"/>
</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-19T02:56:59.774707" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:56:59.773706" elapsed="0.001083"/>
</branch>
<status status="PASS" start="2026-04-19T02:56:59.773630" elapsed="0.001219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:59.776301" 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-19T02:56:59.776546" 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-19T02:56:59.775843" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:56:59.778188" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:56:59.777629" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:56:59.779995" 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-19T02:56:59.779295" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:56:59.782455" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:56:59.782533" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:56:59.782163" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:59.782769" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:56:59.784018" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:00.105574" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:56:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:56:59.783697" elapsed="0.322046"/>
</kw>
<msg time="2026-04-19T02:57:00.105838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:59.783337" elapsed="0.322601"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:56:59.781392" elapsed="0.324887"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:00.107871" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:00.131179" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:00.131760" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:00.132138" 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-19T02:57:00.107444" elapsed="0.024925"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:00.134829" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:00.137838" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:00.137015" elapsed="0.001065"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:00.138814" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:00.138402" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:00.138297" elapsed="0.000724"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:00.139597" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T02:57:00.139276" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:00.139200" elapsed="0.000656"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:00.139977" elapsed="0.000081"/>
</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-19T02:57:00.148095" 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-19T02:57:00.148886" elapsed="0.000310"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:00.149398" 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-19T02:57:00.142346" elapsed="0.007276"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:56:59.771748" elapsed="0.378104"/>
</kw>
<msg time="2026-04-19T02:57:00.150186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:56:59.770783" elapsed="0.379482"/>
</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-19T02:56:59.769999" elapsed="0.380353"/>
</kw>
<msg time="2026-04-19T02:57:00.150394" 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-19T02:56:59.769282" elapsed="0.381160"/>
</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-19T02:57:00.153917" elapsed="0.000437"/>
</kw>
<kw name="Open 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-19T02:57:00.154541" elapsed="0.000236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:00.154931" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:00.150800" elapsed="0.004310"/>
</kw>
<msg time="2026-04-19T02:57:00.155211" level="INFO">${output} = 1</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-19T02:56:59.767938" elapsed="0.387301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:00.155728" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:00.155461" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:00.155820" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T02:57:00.155999" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:56:59.766579" elapsed="0.389489"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:00.156119" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:57:00.156268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:56:59.764402" elapsed="0.391891"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:00.156865" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:00.156454" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:56:59.763352" elapsed="0.393799">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:02.160813" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:02.159984" elapsed="0.000899"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:02.162992" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:02.162363" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:02.164938" 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-19T02:57:02.165116" 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-19T02:57:02.164650" elapsed="0.000507"/>
</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-19T02:57:02.171507" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:02.170723" elapsed="0.001064"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:02.170228" elapsed="0.001653"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:02.173787" 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-19T02:57:02.174149" 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-19T02:57:02.173234" elapsed="0.001014"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:02.175938" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:02.175252" elapsed="0.000818"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:02.177827" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:02.177080" elapsed="0.000843"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:02.180581" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:02.180660" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:02.180274" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:02.180909" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:02.182297" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:02.484647" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:02.181902" elapsed="0.302912"/>
</kw>
<msg time="2026-04-19T02:57:02.484906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:02.181532" elapsed="0.303473"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:02.179370" elapsed="0.305952"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:02.486821" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:02.509815" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:02.510095" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:02.510247" 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-19T02:57:02.486422" elapsed="0.023924"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:02.511379" elapsed="0.000462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:02.512911" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:02.512451" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:02.513455" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:02.513206" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:02.513143" elapsed="0.000452"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:02.513954" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T02:57:02.513748" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:02.513693" elapsed="0.000445"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:02.514220" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:02.518906" 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-19T02:57:02.519501" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:02.519884" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:02.515569" 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-19T02:57:02.168184" elapsed="0.352231"/>
</kw>
<msg time="2026-04-19T02:57:02.520787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:02.167076" elapsed="0.353771"/>
</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-19T02:57:02.166235" elapsed="0.354695"/>
</kw>
<msg time="2026-04-19T02:57:02.520972" 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-19T02:57:02.165398" elapsed="0.355620"/>
</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-19T02:57:02.524167" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:57:02.524647" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:02.524946" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:02.521330" elapsed="0.003784"/>
</kw>
<msg time="2026-04-19T02:57:02.525206" level="INFO">${output} = 1</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-19T02:57:02.163588" elapsed="0.361643"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:02.525654" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:02.525406" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:02.525742" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:57:02.525893" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:02.161387" elapsed="0.364532"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:02.525965" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:02.526125" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:02.159133" elapsed="0.367017"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:02.526764" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:02.526305" elapsed="0.000550">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:02.157982" elapsed="0.369013">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:04.530523" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:04.529736" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:04.532816" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:04.531987" elapsed="0.000942"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:04.535358" 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-19T02:57:04.535656" 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-19T02:57:04.534891" elapsed="0.000847"/>
</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-19T02:57:04.541285" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:04.540746" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:04.540456" elapsed="0.001013"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:04.542933" 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-19T02:57:04.543213" 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-19T02:57:04.542480" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:04.544911" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:04.544337" elapsed="0.000765"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:04.546925" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:04.546205" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:04.549482" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:04.549565" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:04.549172" 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-19T02:57:04.549808" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:04.551101" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:04.856384" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:04.550758" elapsed="0.305773"/>
</kw>
<msg time="2026-04-19T02:57:04.856617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:04.550395" elapsed="0.306312"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:04.548269" elapsed="0.308718"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:04.858538" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:04.881013" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:04.881606" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:04.881959" 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-19T02:57:04.858140" elapsed="0.024073"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:04.884437" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:04.887604" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:04.886627" elapsed="0.001205"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:04.888717" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:04.888219" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:04.888089" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:04.889868" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:57:04.889415" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:04.889305" elapsed="0.000886"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:04.890303" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:04.898737" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T02:57:04.899315" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:04.899670" 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-19T02:57:04.892148" elapsed="0.007731"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:04.539021" elapsed="0.361097"/>
</kw>
<msg time="2026-04-19T02:57:04.900424" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:04.538315" elapsed="0.362165"/>
</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-19T02:57:04.537470" elapsed="0.363090"/>
</kw>
<msg time="2026-04-19T02:57:04.900600" 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-19T02:57:04.536159" elapsed="0.364486"/>
</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-19T02:57:04.903770" 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-19T02:57:04.904269" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:04.904563" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:04.900994" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T02:57:04.904799" level="INFO">${output} = 1</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-19T02:57:04.533644" elapsed="0.371180"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:04.905291" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:04.905007" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:04.905380" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:04.905531" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:04.531073" elapsed="0.374483"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:04.905602" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:57:04.905743" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:04.528892" elapsed="0.376876"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:04.906338" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:04.905921" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:04.527811" elapsed="0.378705">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:06.909935" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:06.909201" elapsed="0.000804"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:06.911721" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:06.911340" elapsed="0.000419"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:06.912876" 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-19T02:57:06.913017" 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-19T02:57:06.912660" elapsed="0.000416"/>
</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-19T02:57:06.918408" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:06.917727" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:06.917651" elapsed="0.001030"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:06.920549" 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-19T02:57:06.920801" 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-19T02:57:06.919815" elapsed="0.001087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:06.922590" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:06.921936" elapsed="0.000768"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:06.924422" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:06.923699" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:06.926918" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:06.926996" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:06.926633" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:06.927251" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:06.928570" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:07.262236" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:06.928247" elapsed="0.334136"/>
</kw>
<msg time="2026-04-19T02:57:07.262467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:06.927873" elapsed="0.334678"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:06.925788" elapsed="0.337041"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:07.264326" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:07.287608" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:07.288279" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:07.288660" 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-19T02:57:07.263917" elapsed="0.024982"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:07.291538" elapsed="0.001029"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:07.295162" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:07.294112" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:07.296342" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:07.295771" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:07.295638" elapsed="0.001005"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:07.297582" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T02:57:07.297000" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:07.296886" elapsed="0.001085"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:07.298227" elapsed="0.000055"/>
</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-19T02:57:07.305056" elapsed="0.000478"/>
</kw>
<kw name="Open 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-19T02:57:07.305833" elapsed="0.000388"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:07.306504" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:07.300138" elapsed="0.006662"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:06.915737" elapsed="0.391489"/>
</kw>
<msg time="2026-04-19T02:57:07.307906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:06.914796" elapsed="0.393198"/>
</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-19T02:57:06.914015" elapsed="0.394168"/>
</kw>
<msg time="2026-04-19T02:57:07.308453" 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-19T02:57:06.913299" elapsed="0.395236"/>
</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-19T02:57:07.312165" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:57:07.312651" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:07.312970" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:07.309097" elapsed="0.004058"/>
</kw>
<msg time="2026-04-19T02:57:07.313311" level="INFO">${output} = 1</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-19T02:57:06.912086" elapsed="0.401251"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:07.313769" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:07.313518" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:07.313856" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:07.314013" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:06.910570" elapsed="0.403526"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:07.314163" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:57:07.314328" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:06.908362" elapsed="0.405991"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:07.314918" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:07.314512" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:06.907327" elapsed="0.407803">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:09.318870" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:09.318107" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:09.320999" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:09.320399" elapsed="0.000691"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:09.322902" 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-19T02:57:09.323093" 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-19T02:57:09.322564" elapsed="0.000556"/>
</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-19T02:57:09.327089" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:09.326590" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:09.326532" elapsed="0.000699"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:09.328927" 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-19T02:57:09.329198" 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-19T02:57:09.328236" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:09.330843" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:09.330285" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:09.332672" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:09.331951" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:09.335114" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:09.335194" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:09.334795" 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-19T02:57:09.335433" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:09.336923" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:09.659857" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:09.336598" elapsed="0.323554"/>
</kw>
<msg time="2026-04-19T02:57:09.660255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:09.335988" elapsed="0.324360"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:09.333988" elapsed="0.326640"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:09.662131" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:09.684944" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:09.685606" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:09.685943" 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-19T02:57:09.661721" elapsed="0.024477"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:09.688542" elapsed="0.001004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:09.691827" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:09.690820" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:09.692939" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:09.692439" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:09.692311" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:09.694177" elapsed="0.000176"/>
</return>
<status status="PASS" start="2026-04-19T02:57:09.693588" elapsed="0.000880"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:09.693482" elapsed="0.001115"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:09.694771" elapsed="0.000081"/>
</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-19T02:57:09.699892" 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-19T02:57:09.700493" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:09.700866" 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-19T02:57:09.696296" elapsed="0.004804"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:09.325081" elapsed="0.376247"/>
</kw>
<msg time="2026-04-19T02:57:09.701701" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:09.324356" elapsed="0.377433"/>
</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-19T02:57:09.323800" elapsed="0.378085"/>
</kw>
<msg time="2026-04-19T02:57:09.701928" 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-19T02:57:09.323283" elapsed="0.378692"/>
</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-19T02:57:09.705112" 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-19T02:57:09.705624" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:09.705940" elapsed="0.000261"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:09.702377" elapsed="0.003879"/>
</kw>
<msg time="2026-04-19T02:57:09.706353" level="INFO">${output} = 1</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-19T02:57:09.321574" elapsed="0.384804"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:09.706838" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:09.706584" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:09.706928" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:57:09.707109" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:09.319426" elapsed="0.387709"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:09.707183" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:09.707328" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:09.317206" elapsed="0.390147"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:09.707982" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:09.707583" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:09.316089" elapsed="0.392094">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:11.711760" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:11.710947" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:11.713869" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:11.713265" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:11.715747" 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-19T02:57:11.715978" 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-19T02:57:11.715417" elapsed="0.000653"/>
</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-19T02:57:11.722768" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:11.722286" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:11.722230" elapsed="0.000700"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:11.724646" 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-19T02:57:11.724892" 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-19T02:57:11.723938" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:11.726554" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:11.725994" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:11.728397" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:11.727668" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:11.730832" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:11.730910" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:11.730552" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:11.731164" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:11.732473" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:12.051518" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:11.732133" elapsed="0.319493"/>
</kw>
<msg time="2026-04-19T02:57:12.051698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:11.731753" elapsed="0.320021"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:11.729763" elapsed="0.322253"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:12.053450" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:12.076258" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:12.076780" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:12.077167" 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-19T02:57:12.053097" elapsed="0.024286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:12.079604" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:12.082747" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:12.081757" elapsed="0.001220"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:12.083859" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:12.083364" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:12.083241" elapsed="0.000948"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:12.085011" elapsed="0.000134"/>
</return>
<status status="PASS" start="2026-04-19T02:57:12.084555" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:12.084401" elapsed="0.000852"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:12.085332" 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-19T02:57:12.090225" 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-19T02:57:12.090764" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:12.091140" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:12.086728" elapsed="0.004621"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:11.720446" elapsed="0.371131"/>
</kw>
<msg time="2026-04-19T02:57:12.091885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:11.718821" elapsed="0.373121"/>
</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-19T02:57:11.717594" elapsed="0.374430"/>
</kw>
<msg time="2026-04-19T02:57:12.092080" 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-19T02:57:11.716428" elapsed="0.375699"/>
</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-19T02:57:12.095181" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:57:12.095654" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:12.095946" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:12.092429" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T02:57:12.096212" level="INFO">${output} = 1</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-19T02:57:11.714441" elapsed="0.381796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:12.096691" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:12.096435" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:12.096778" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:12.096931" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:11.712324" elapsed="0.384632"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:12.097003" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:57:12.097166" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:11.710128" elapsed="0.387063"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:12.097742" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:12.097347" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:11.709011" elapsed="0.388917">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:14.101478" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:14.100704" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:14.103801" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:14.103185" elapsed="0.000676"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:14.105137" 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-19T02:57:14.105283" 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-19T02:57:14.104897" elapsed="0.000423"/>
</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-19T02:57:14.110955" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:14.109981" elapsed="0.001121"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:14.109904" elapsed="0.001284"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:14.113216" 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-19T02:57:14.113559" 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-19T02:57:14.112575" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:14.115730" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:14.115123" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:14.117933" 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-19T02:57:14.117009" elapsed="0.001035"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:14.120338" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:14.120416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:14.120056" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:14.120651" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:14.122049" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:14.443801" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:14.121708" elapsed="0.322238"/>
</kw>
<msg time="2026-04-19T02:57:14.444046" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:14.121340" elapsed="0.322796"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:14.119272" elapsed="0.325135"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:14.445898" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:14.468831" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:14.469389" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:14.469725" 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-19T02:57:14.445514" elapsed="0.024424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:14.472223" elapsed="0.000950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:14.474980" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:14.474349" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:14.475832" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:14.475409" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:14.475329" elapsed="0.000697"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:14.476532" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:57:14.476247" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:14.476181" elapsed="0.000569"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:14.476857" elapsed="0.000050"/>
</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-19T02:57:14.483245" 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-19T02:57:14.483790" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:14.484163" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:14.478775" elapsed="0.005599"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:14.108062" elapsed="0.376545"/>
</kw>
<msg time="2026-04-19T02:57:14.484916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:14.107109" elapsed="0.377878"/>
</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-19T02:57:14.106325" elapsed="0.378761"/>
</kw>
<msg time="2026-04-19T02:57:14.485128" 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-19T02:57:14.105576" elapsed="0.379598"/>
</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-19T02:57:14.488249" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:57:14.488723" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:14.489041" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:14.485467" elapsed="0.003724"/>
</kw>
<msg time="2026-04-19T02:57:14.489289" level="INFO">${output} = 1</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-19T02:57:14.104324" elapsed="0.384990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:14.489739" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:14.489492" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:14.489835" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:57:14.489995" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:14.102191" elapsed="0.387829"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:14.490125" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:57:14.490275" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:14.099855" elapsed="0.390445"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:14.490855" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:14.490458" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:14.098731" elapsed="0.392326">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:16.494958" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:16.493992" elapsed="0.001070"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:16.497158" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:16.496519" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:16.498979" 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-19T02:57:16.499385" 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-19T02:57:16.498641" elapsed="0.000807"/>
</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-19T02:57:16.504305" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:16.503812" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:16.503506" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:16.505904" 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-19T02:57:16.506168" 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-19T02:57:16.505452" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:16.507822" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:16.507256" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:16.509640" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:16.508922" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:16.512120" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:16.512198" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:16.511822" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:16.512432" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:16.513687" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:16.842554" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:16.513360" elapsed="0.329334"/>
</kw>
<msg time="2026-04-19T02:57:16.842775" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:16.512983" elapsed="0.329876"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:16.510955" elapsed="0.332206"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:16.844632" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:16.867583" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:16.868129" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:16.868468" 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-19T02:57:16.844246" elapsed="0.024438"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:16.870933" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:16.874175" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:16.873181" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:16.875304" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:16.874759" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:16.874635" elapsed="0.000962"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:16.876411" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:57:16.875924" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:16.875815" elapsed="0.001033"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:16.877186" elapsed="0.000091"/>
</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-19T02:57:16.882581" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:16.883204" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:16.883580" 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-19T02:57:16.879156" elapsed="0.004637"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:16.502116" elapsed="0.381898"/>
</kw>
<msg time="2026-04-19T02:57:16.884332" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:16.501400" elapsed="0.382991"/>
</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-19T02:57:16.500836" elapsed="0.383639"/>
</kw>
<msg time="2026-04-19T02:57:16.884516" 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-19T02:57:16.499913" elapsed="0.384650"/>
</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-19T02:57:16.887662" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:57:16.888154" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:16.888450" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:16.884854" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T02:57:16.888688" level="INFO">${output} = 1</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-19T02:57:16.497693" elapsed="0.391021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:16.889156" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:16.888893" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:16.889244" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:16.889397" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:16.495536" elapsed="0.393886"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:16.889470" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:57:16.889615" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:16.492969" elapsed="0.396671"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:16.890235" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:16.889797" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:16.491887" elapsed="0.398529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:18.894016" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:18.893288" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:18.896273" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:18.895596" elapsed="0.000739"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:18.897705" 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-19T02:57:18.897844" 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-19T02:57:18.897484" elapsed="0.000397"/>
</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-19T02:57:18.903495" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:18.902777" elapsed="0.000918"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:18.902399" elapsed="0.001380"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:18.905767" 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-19T02:57:18.906142" 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-19T02:57:18.905152" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:18.908488" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:18.907697" elapsed="0.000903"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:18.910333" 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-19T02:57:18.909567" elapsed="0.000862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:18.912689" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:18.912769" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:18.912406" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:18.913007" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:18.914433" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:19.243154" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:18.913953" elapsed="0.329344"/>
</kw>
<msg time="2026-04-19T02:57:19.243380" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:18.913591" elapsed="0.329876"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:18.911628" elapsed="0.332123"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:19.245270" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:19.267977" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:19.268520" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:19.268852" 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-19T02:57:19.244845" elapsed="0.024254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:19.271371" elapsed="0.000978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:19.274618" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:19.273612" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:19.275743" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:19.275236" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:19.275108" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:19.276834" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:57:19.276387" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:19.276280" elapsed="0.001067"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:19.277527" elapsed="0.000084"/>
</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-19T02:57:19.285297" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:57:19.285847" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:19.286219" 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-19T02:57:19.279982" elapsed="0.006447"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:18.900560" elapsed="0.386104"/>
</kw>
<msg time="2026-04-19T02:57:19.287039" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:18.899614" elapsed="0.387487"/>
</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-19T02:57:18.898833" elapsed="0.388347"/>
</kw>
<msg time="2026-04-19T02:57:19.287220" 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-19T02:57:18.898121" elapsed="0.389143"/>
</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-19T02:57:19.290315" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:19.290818" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:19.291137" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:19.287553" elapsed="0.003733"/>
</kw>
<msg time="2026-04-19T02:57:19.291375" level="INFO">${output} = 1</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-19T02:57:18.896823" elapsed="0.394576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:19.291822" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:19.291575" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:19.291924" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:57:19.292098" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:18.894565" elapsed="0.397560"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:19.292173" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:57:19.292318" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:18.892419" elapsed="0.399925"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:19.292907" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:19.292502" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:18.891297" elapsed="0.401841">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:21.296882" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:21.296065" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:21.298898" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:21.298501" elapsed="0.000436"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:21.300119" 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-19T02:57:21.300281" 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-19T02:57:21.299854" elapsed="0.000464"/>
</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-19T02:57:21.305804" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:21.305158" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:21.305077" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:21.308414" 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-19T02:57:21.308776" 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-19T02:57:21.307433" elapsed="0.001485"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:21.310997" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:21.310374" elapsed="0.000752"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:21.312977" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:21.312274" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:21.315404" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:21.315483" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:21.315114" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:21.315722" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:21.317133" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:21.634443" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:21.316786" elapsed="0.317808"/>
</kw>
<msg time="2026-04-19T02:57:21.634680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:21.316414" elapsed="0.318350"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:21.314327" elapsed="0.320741"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:21.636590" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:21.659458" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:21.660015" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:21.660423" 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-19T02:57:21.636186" elapsed="0.024461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:21.663016" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:21.666452" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:21.665340" elapsed="0.001349"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:21.667611" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:21.667080" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:21.666922" elapsed="0.000988"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:21.668773" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T02:57:21.668308" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:21.668180" elapsed="0.001042"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:21.669449" elapsed="0.000092"/>
</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-19T02:57:21.677164" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T02:57:21.677754" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:21.678161" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:21.672767" elapsed="0.005662"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:21.303155" elapsed="0.375505"/>
</kw>
<msg time="2026-04-19T02:57:21.678973" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:21.302166" elapsed="0.376882"/>
</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-19T02:57:21.301364" elapsed="0.377774"/>
</kw>
<msg time="2026-04-19T02:57:21.679181" 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-19T02:57:21.300549" elapsed="0.378680"/>
</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-19T02:57:21.682454" 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-19T02:57:21.682951" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:21.683275" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:21.679606" elapsed="0.003822"/>
</kw>
<msg time="2026-04-19T02:57:21.683536" level="INFO">${output} = 1</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-19T02:57:21.299266" elapsed="0.384297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:21.684004" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:21.683748" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:21.684111" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:57:21.684269" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:21.297464" elapsed="0.386832"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:21.684345" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:57:21.684510" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:21.295184" elapsed="0.389353"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:21.685128" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:21.684700" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:21.293967" elapsed="0.391346">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:23.688764" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:23.688004" elapsed="0.000828"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:23.690901" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:23.690249" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:23.692389" 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-19T02:57:23.692540" 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-19T02:57:23.692150" elapsed="0.000428"/>
</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-19T02:57:23.698194" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:23.697504" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:23.697424" elapsed="0.000987"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:23.700894" 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-19T02:57:23.701305" 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-19T02:57:23.699857" elapsed="0.001592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:23.703435" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:23.702860" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:23.705272" 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-19T02:57:23.704522" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:23.707699" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:23.707778" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:23.707410" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:23.708019" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:23.709567" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:24.035112" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:23.709237" elapsed="0.326046"/>
</kw>
<msg time="2026-04-19T02:57:24.035375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:23.708688" elapsed="0.326782"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:23.706603" elapsed="0.329195"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:24.037428" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:24.060641" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:24.061228" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:24.061584" 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-19T02:57:24.036988" elapsed="0.024820"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:24.064452" elapsed="0.000991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:24.067910" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:24.066862" elapsed="0.001326"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:24.069205" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:24.068623" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:24.068453" elapsed="0.001152"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:24.070629" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T02:57:24.070181" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:24.069878" elapsed="0.000919"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:24.070882" 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-19T02:57:24.076112" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T02:57:24.076739" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:24.077125" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:24.072341" elapsed="0.005029"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:23.695463" elapsed="0.382172"/>
</kw>
<msg time="2026-04-19T02:57:24.077972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:23.694428" elapsed="0.383660"/>
</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-19T02:57:23.693603" elapsed="0.384574"/>
</kw>
<msg time="2026-04-19T02:57:24.078221" 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-19T02:57:23.692812" elapsed="0.385476"/>
</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-19T02:57:24.081404" 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-19T02:57:24.081932" elapsed="0.000293"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:24.082402" elapsed="0.000127"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:24.078620" elapsed="0.003970"/>
</kw>
<msg time="2026-04-19T02:57:24.082755" level="INFO">${output} = 1</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-19T02:57:23.691500" elapsed="0.391281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:24.083237" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:24.082962" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:24.083327" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T02:57:24.083518" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:23.689310" elapsed="0.394252"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:24.083617" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:24.083772" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:23.687206" elapsed="0.396592"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:24.084403" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:24.083959" elapsed="0.000532">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:23.686172" elapsed="0.398457">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:26.088079" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:26.087316" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:26.090243" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:26.089606" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:26.092087" 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-19T02:57:26.092367" 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-19T02:57:26.091729" elapsed="0.000698"/>
</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-19T02:57:26.096384" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:26.095888" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:26.095830" elapsed="0.000690"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:26.098206" 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-19T02:57:26.098454" 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-19T02:57:26.097503" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:26.100071" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:26.099517" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:26.101879" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:26.101187" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:26.104396" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:26.104475" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:26.104089" 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-19T02:57:26.104712" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:26.105982" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:26.426732" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:26.105656" elapsed="0.321330"/>
</kw>
<msg time="2026-04-19T02:57:26.427093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:26.105296" elapsed="0.321890"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:26.103310" elapsed="0.324167"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:26.429071" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:26.452101" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:26.452615" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:26.452960" 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-19T02:57:26.428636" elapsed="0.024584"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:26.455422" elapsed="0.001049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:26.458827" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:26.457761" elapsed="0.001381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:26.460628" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:26.459632" elapsed="0.001131"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:26.459458" elapsed="0.001398"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:26.461425" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T02:57:26.461099" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:26.461009" elapsed="0.000673"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:26.461796" elapsed="0.000064"/>
</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-19T02:57:26.468642" elapsed="0.000569"/>
</kw>
<kw name="Open 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-19T02:57:26.469521" elapsed="0.000238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:26.470055" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:26.463739" elapsed="0.006619"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:26.094511" elapsed="0.376168"/>
</kw>
<msg time="2026-04-19T02:57:26.471137" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:26.093818" elapsed="0.377403"/>
</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-19T02:57:26.093282" elapsed="0.378058"/>
</kw>
<msg time="2026-04-19T02:57:26.471398" 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-19T02:57:26.092750" elapsed="0.378713"/>
</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-19T02:57:26.474893" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:57:26.475397" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:26.475702" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:26.471905" elapsed="0.003960"/>
</kw>
<msg time="2026-04-19T02:57:26.475968" level="INFO">${output} = 1</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-19T02:57:26.090789" elapsed="0.385205"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:26.476474" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:26.476221" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:26.476563" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:57:26.476720" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:26.088659" elapsed="0.388087"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:26.476794" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:57:26.476943" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:26.086470" elapsed="0.390498"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:26.477611" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:26.477201" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:26.085417" elapsed="0.392389">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:28.481640" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:28.480815" elapsed="0.000911"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:28.483914" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:28.483271" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:28.485876" 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-19T02:57:28.486153" 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-19T02:57:28.485499" elapsed="0.000715"/>
</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-19T02:57:28.494394" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:28.493395" elapsed="0.001113"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:28.493317" elapsed="0.001276"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:28.496741" 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-19T02:57:28.497108" 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-19T02:57:28.496081" elapsed="0.001170"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:28.499415" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:28.498621" elapsed="0.000945"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:28.501999" 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-19T02:57:28.501010" elapsed="0.001166"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:28.505802" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:28.505913" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:28.505372" elapsed="0.000574"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:28.506269" elapsed="0.000482"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:28.508251" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:28.828706" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:28.507637" elapsed="0.321232"/>
</kw>
<msg time="2026-04-19T02:57:28.828960" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:28.507125" elapsed="0.321946"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:28.503905" elapsed="0.325459"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:28.830891" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:28.853993" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:28.854539" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:28.854918" 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-19T02:57:28.830466" elapsed="0.024718"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:28.857415" elapsed="0.000988"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:28.860831" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:28.859774" 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-19T02:57:28.861969" elapsed="0.000095"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:28.861462" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:28.861339" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:28.863393" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:57:28.862624" elapsed="0.001003"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:28.862517" elapsed="0.001221"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:28.863850" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:28.870417" 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-19T02:57:28.871342" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:28.871839" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:28.865739" elapsed="0.006416"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:28.491141" elapsed="0.381382"/>
</kw>
<msg time="2026-04-19T02:57:28.873294" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:28.489249" elapsed="0.384177"/>
</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-19T02:57:28.487845" elapsed="0.385763"/>
</kw>
<msg time="2026-04-19T02:57:28.873700" 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-19T02:57:28.486570" elapsed="0.387233"/>
</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-19T02:57:28.878058" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:57:28.878540" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:28.878863" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:28.874633" elapsed="0.004380"/>
</kw>
<msg time="2026-04-19T02:57:28.879149" level="INFO">${output} = 1</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-19T02:57:28.484508" elapsed="0.394666"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:28.879605" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:28.879355" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:28.879692" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:57:28.879844" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:28.482237" elapsed="0.397632"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:28.879916" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:57:28.880077" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:28.479910" elapsed="0.400192"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:28.880681" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:28.880284" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:28.478718" elapsed="0.402149">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:30.884596" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:30.883795" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:30.887013" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:30.886454" elapsed="0.000639"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:30.888289" 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-19T02:57:30.888433" 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-19T02:57:30.888058" elapsed="0.000413"/>
</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-19T02:57:30.894230" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:30.893542" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:30.893164" elapsed="0.001267"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:30.896487" 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-19T02:57:30.896827" 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-19T02:57:30.895853" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:30.899249" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:30.898468" elapsed="0.000935"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:30.901773" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:30.900773" elapsed="0.001137"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:30.904440" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:30.904518" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:30.904158" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:30.904752" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:30.906153" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:31.226911" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:30.905703" elapsed="0.321370"/>
</kw>
<msg time="2026-04-19T02:57:31.227158" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:30.905343" elapsed="0.321903"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:30.903386" elapsed="0.324143"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:31.229046" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:31.252132" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:31.252666" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:31.253017" 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-19T02:57:31.228633" elapsed="0.024653"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:31.255667" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:31.259009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:31.257941" elapsed="0.001347"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:31.260430" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:31.259656" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:31.259526" elapsed="0.001228"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:31.261306" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:57:31.260982" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:31.260910" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:31.261661" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:31.268747" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:31.269520" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:31.270011" elapsed="0.000268"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:31.263716" elapsed="0.006716"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:30.891268" elapsed="0.379488"/>
</kw>
<msg time="2026-04-19T02:57:31.271105" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:30.890236" elapsed="0.380927"/>
</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-19T02:57:30.889436" elapsed="0.381809"/>
</kw>
<msg time="2026-04-19T02:57:31.271290" 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-19T02:57:30.888692" elapsed="0.382644"/>
</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-19T02:57:31.274371" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:57:31.274845" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:31.275161" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:31.271626" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T02:57:31.275403" level="INFO">${output} = 1</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-19T02:57:30.887457" elapsed="0.387972"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:31.275852" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:31.275605" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:31.275939" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:31.276108" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:30.885335" elapsed="0.390799"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:31.276181" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:31.276326" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:30.882896" elapsed="0.393454"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:31.276895" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:31.276505" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:30.881739" elapsed="0.395358">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:33.280726" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:33.279938" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:33.282861" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:33.282252" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:33.284064" 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-19T02:57:33.284328" 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-19T02:57:33.283805" elapsed="0.000561"/>
</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-19T02:57:33.289995" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:33.289336" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:33.288940" elapsed="0.001306"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:33.292270" 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-19T02:57:33.292614" 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-19T02:57:33.291627" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:33.294944" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:33.294161" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:33.296837" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:33.296142" elapsed="0.000793"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:33.299249" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:33.299327" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:33.298944" 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-19T02:57:33.299563" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:33.300984" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:33.623867" 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 Sun Apr 19 02:56:33 UTC 2026

  System load:  0.15               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:33.300662" elapsed="0.323337"/>
</kw>
<msg time="2026-04-19T02:57:33.624094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:33.300301" elapsed="0.323879"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:33.298176" elapsed="0.326289"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:33.625910" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:33.649189" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:33.649687" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:33.650118" 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-19T02:57:33.625529" elapsed="0.024808"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:33.652547" elapsed="0.000941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:33.655795" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:33.654770" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:33.656950" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:33.656454" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:33.656330" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:33.658076" elapsed="0.000167"/>
</return>
<status status="PASS" start="2026-04-19T02:57:33.657599" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:33.657491" elapsed="0.000988"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:33.658655" 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-19T02:57:33.665544" 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-19T02:57:33.666290" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:33.666649" 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-19T02:57:33.660276" elapsed="0.006581"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:33.287098" elapsed="0.380054"/>
</kw>
<msg time="2026-04-19T02:57:33.667461" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:33.286120" elapsed="0.381400"/>
</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-19T02:57:33.285338" elapsed="0.382261"/>
</kw>
<msg time="2026-04-19T02:57:33.667640" 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-19T02:57:33.284595" elapsed="0.383090"/>
</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-19T02:57:33.670693" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:57:33.671293" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:33.671590" 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-19T02:57:33.667976" elapsed="0.003761"/>
</kw>
<msg time="2026-04-19T02:57:33.671827" level="INFO">${output} = 1</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-19T02:57:33.283232" elapsed="0.388619"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:33.672299" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:33.672050" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:33.672385" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:33.672533" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:33.281282" elapsed="0.391276"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:33.672603" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:57:33.672758" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:33.279128" elapsed="0.393655"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:33.673346" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:33.672939" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:33.277962" elapsed="0.395566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:35.677062" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:35.676294" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:35.679187" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:35.678551" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:35.681004" 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-19T02:57:35.681263" 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-19T02:57:35.680680" elapsed="0.000648"/>
</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-19T02:57:35.687308" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:35.686662" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:35.686584" elapsed="0.001004"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:35.689866" 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-19T02:57:35.690247" 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-19T02:57:35.688934" elapsed="0.001465"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:35.692508" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:35.691736" elapsed="0.000923"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:35.695096" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:35.694001" elapsed="0.001194"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:35.697436" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:35.697515" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:35.697149" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:35.697752" elapsed="0.000514"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:35.699263" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:36.313063" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:35.698886" elapsed="0.614330"/>
</kw>
<msg time="2026-04-19T02:57:36.313300" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:35.698514" elapsed="0.614874"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:35.696381" elapsed="0.617289"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:36.315234" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:36.338114" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:36.338665" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:36.339017" 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-19T02:57:36.314812" elapsed="0.024458"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:36.341596" elapsed="0.001012"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:36.344944" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:36.343929" elapsed="0.001396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:36.346244" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:36.345682" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:36.345558" elapsed="0.001043"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:36.347277" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T02:57:36.346939" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:36.346825" elapsed="0.000702"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:36.347648" elapsed="0.000057"/>
</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-19T02:57:36.354903" 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-19T02:57:36.355511" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:36.355877" 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-19T02:57:36.349832" elapsed="0.006298"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:35.684667" elapsed="0.671707"/>
</kw>
<msg time="2026-04-19T02:57:36.356748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:35.683696" elapsed="0.673116"/>
</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-19T02:57:35.682923" elapsed="0.673974"/>
</kw>
<msg time="2026-04-19T02:57:36.356939" 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-19T02:57:35.681681" elapsed="0.675305"/>
</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-19T02:57:36.360164" 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-19T02:57:36.360661" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:36.360967" elapsed="0.000165"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:36.357427" elapsed="0.003767"/>
</kw>
<msg time="2026-04-19T02:57:36.361291" level="INFO">${output} = 1</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-19T02:57:35.679732" elapsed="0.681585"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:36.361771" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:36.361516" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:36.361863" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:57:36.362044" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:35.677589" elapsed="0.684484"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:36.362122" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:36.362286" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:35.675422" elapsed="0.686889"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:36.362919" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:36.362475" elapsed="0.000521">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:35.674373" elapsed="0.688757">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:38.366795" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:38.365981" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:38.369026" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:38.368417" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:38.370887" 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-19T02:57:38.371208" 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-19T02:57:38.370555" elapsed="0.000715"/>
</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-19T02:57:38.375566" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:38.375083" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:38.374959" elapsed="0.000745"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:38.377533" 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-19T02:57:38.377774" 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-19T02:57:38.376827" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:38.379447" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:38.378838" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:38.381306" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:38.380590" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:38.383778" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:38.383857" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:38.383491" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:38.384109" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:38.385380" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:38.706850" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:38.385049" elapsed="0.321958"/>
</kw>
<msg time="2026-04-19T02:57:38.707129" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:38.384671" elapsed="0.322557"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:38.382604" elapsed="0.324914"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:38.709020" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:38.732310" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:38.732814" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:38.733233" 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-19T02:57:38.708622" elapsed="0.024831"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:38.735823" elapsed="0.000939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:38.739137" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:38.738027" elapsed="0.001353"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:38.740302" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:38.739724" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:38.739604" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:38.741406" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:57:38.740922" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:38.740814" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:38.741933" 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-19T02:57:38.749548" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:38.750133" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:38.750494" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:38.745822" elapsed="0.004880"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:38.373638" elapsed="0.377342"/>
</kw>
<msg time="2026-04-19T02:57:38.751396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:38.372927" elapsed="0.378542"/>
</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-19T02:57:38.372386" elapsed="0.379174"/>
</kw>
<msg time="2026-04-19T02:57:38.751603" 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-19T02:57:38.371626" elapsed="0.380024"/>
</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-19T02:57:38.754751" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T02:57:38.755335" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:38.755641" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:38.752008" elapsed="0.003785"/>
</kw>
<msg time="2026-04-19T02:57:38.755887" level="INFO">${output} = 1</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-19T02:57:38.369605" elapsed="0.386307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:38.756368" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:38.756114" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:38.756457" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:57:38.756616" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:38.367422" elapsed="0.389220"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:38.756691" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:38.756842" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:38.365105" elapsed="0.391763"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:38.757452" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:38.757041" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:38.363944" elapsed="0.393698">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:40.761187" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:40.760416" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:40.763347" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:40.762661" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:40.765204" 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-19T02:57:40.765436" 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-19T02:57:40.764841" elapsed="0.000656"/>
</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-19T02:57:40.773390" elapsed="0.000082"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:40.772387" elapsed="0.001179"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:40.772269" elapsed="0.001421"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:40.777455" 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-19T02:57:40.778004" 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-19T02:57:40.775968" elapsed="0.002295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:40.782527" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:40.781262" elapsed="0.001511"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:40.786171" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:40.784562" elapsed="0.001828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:40.791872" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:40.792045" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:40.791017" elapsed="0.001086"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:40.792317" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:40.793641" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:41.105712" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:40.793318" elapsed="0.312506"/>
</kw>
<msg time="2026-04-19T02:57:41.105899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:40.792937" elapsed="0.313060"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:40.789302" elapsed="0.316969"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:41.107689" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:41.131136" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:41.131631" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:41.131960" 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-19T02:57:41.107320" elapsed="0.024900"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:41.134506" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:41.137703" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:41.136698" elapsed="0.001233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:41.138810" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:41.138320" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:41.138198" elapsed="0.001000"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:41.139858" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:57:41.139520" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:41.139413" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:41.140114" 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-19T02:57:41.144828" 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-19T02:57:41.145469" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:41.145824" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:41.141507" elapsed="0.004526"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:40.769228" elapsed="0.377042"/>
</kw>
<msg time="2026-04-19T02:57:41.146570" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:40.768263" elapsed="0.378364"/>
</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-19T02:57:40.767181" elapsed="0.379529"/>
</kw>
<msg time="2026-04-19T02:57:41.146751" 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-19T02:57:40.765850" elapsed="0.380947"/>
</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-19T02:57:41.149911" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:57:41.150409" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:41.150702" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:41.147110" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T02:57:41.150998" level="INFO">${output} = 1</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-19T02:57:40.763893" elapsed="0.387131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:41.151496" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:41.151234" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:41.151583" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:57:41.151736" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:40.761713" elapsed="0.390048"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:41.151809" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:57:41.151955" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:40.759570" elapsed="0.392410"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:41.152548" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:41.152151" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:40.758475" elapsed="0.394259">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:43.156399" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:43.155592" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:43.158546" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:43.157891" elapsed="0.000715"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:43.160481" 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-19T02:57:43.160709" 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-19T02:57:43.160108" elapsed="0.000659"/>
</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-19T02:57:43.166903" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:43.166132" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:43.166073" elapsed="0.000973"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:43.168576" 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-19T02:57:43.168817" 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-19T02:57:43.168131" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:43.170461" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:43.169889" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:43.172285" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:43.171547" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:43.174704" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:43.174782" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:43.174417" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:43.175016" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:43.176385" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:43.499326" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:43.175972" elapsed="0.323628"/>
</kw>
<msg time="2026-04-19T02:57:43.499685" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:43.175583" elapsed="0.324191"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:43.173574" elapsed="0.326517"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:43.501612" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:43.524953" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:43.525527" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:43.525889" 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-19T02:57:43.501215" elapsed="0.024947"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:43.528665" elapsed="0.000985"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:43.532245" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:43.531105" elapsed="0.001424"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:43.533518" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:43.532900" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:43.532767" elapsed="0.001067"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:43.534778" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T02:57:43.534303" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:43.534180" elapsed="0.001255"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:43.535626" elapsed="0.000088"/>
</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-19T02:57:43.541482" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:57:43.542023" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:43.542405" 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-19T02:57:43.537930" elapsed="0.004683"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:43.164735" elapsed="0.378102"/>
</kw>
<msg time="2026-04-19T02:57:43.543167" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:43.163631" elapsed="0.379596"/>
</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-19T02:57:43.162380" elapsed="0.380931"/>
</kw>
<msg time="2026-04-19T02:57:43.543352" 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-19T02:57:43.161189" elapsed="0.382210"/>
</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-19T02:57:43.546480" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:57:43.546954" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:43.547268" 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-19T02:57:43.543691" elapsed="0.003723"/>
</kw>
<msg time="2026-04-19T02:57:43.547506" level="INFO">${output} = 1</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-19T02:57:43.159124" elapsed="0.388408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:43.547961" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:43.547712" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:43.548068" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:57:43.548226" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:43.156936" elapsed="0.391315"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:43.548299" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:43.548446" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:43.154699" elapsed="0.393773"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:43.549111" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:43.548698" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:43.153638" elapsed="0.395658">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:45.552762" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:45.552004" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:45.554778" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:45.554357" elapsed="0.000459"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:45.555975" 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-19T02:57:45.556144" 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-19T02:57:45.555746" elapsed="0.000437"/>
</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-19T02:57:45.561995" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:45.561347" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:45.560931" elapsed="0.001319"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:45.564247" 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-19T02:57:45.564584" 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-19T02:57:45.563610" elapsed="0.001112"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:45.566910" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:45.566091" elapsed="0.000998"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:45.568933" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:45.568213" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:45.571391" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:45.571471" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:45.571098" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:45.571707" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:45.573154" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:45.891558" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:45.572803" elapsed="0.318900"/>
</kw>
<msg time="2026-04-19T02:57:45.891785" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:45.572435" elapsed="0.319437"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:45.570259" elapsed="0.321956"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:45.893692" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:45.916248" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:45.916801" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:45.917189" 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-19T02:57:45.893302" elapsed="0.024103"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:45.919640" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:45.922913" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:45.921835" elapsed="0.001355"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:45.924079" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:45.923543" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:45.923419" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:45.925421" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:57:45.924984" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:45.924837" elapsed="0.000864"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:45.925814" elapsed="0.000056"/>
</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-19T02:57:45.934294" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T02:57:45.935085" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:45.935585" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:45.927925" elapsed="0.007950"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:45.559024" elapsed="0.377188"/>
</kw>
<msg time="2026-04-19T02:57:45.936644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:45.557923" elapsed="0.378799"/>
</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-19T02:57:45.557166" elapsed="0.379668"/>
</kw>
<msg time="2026-04-19T02:57:45.936895" 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-19T02:57:45.556411" elapsed="0.380573"/>
</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-19T02:57:45.941295" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:57:45.941803" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:45.942140" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:45.937422" elapsed="0.004875"/>
</kw>
<msg time="2026-04-19T02:57:45.942388" level="INFO">${output} = 1</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-19T02:57:45.555152" elapsed="0.387262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:45.942844" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:45.942595" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:45.942932" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:45.943103" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:45.553317" elapsed="0.389813"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:45.943178" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:45.943324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:45.551158" elapsed="0.392192"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:45.943899" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:45.943507" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:45.550112" elapsed="0.393984">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:47.947677" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:47.946845" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:47.950138" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:47.949438" elapsed="0.000766"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:47.951998" 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-19T02:57:47.952256" 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-19T02:57:47.951665" elapsed="0.000650"/>
</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-19T02:57:47.959565" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:47.958898" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:47.958519" elapsed="0.001282"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:47.961930" 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-19T02:57:47.962310" 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-19T02:57:47.961329" elapsed="0.001124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:47.964647" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:47.963874" elapsed="0.000927"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:47.967321" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:47.966190" elapsed="0.001265"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:47.970679" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:47.970786" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:47.970291" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:47.971327" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:47.972990" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:48.290015" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:47.972666" elapsed="0.317520"/>
</kw>
<msg time="2026-04-19T02:57:48.290268" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:47.972182" elapsed="0.318175"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:47.969141" elapsed="0.321502"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:48.292197" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:48.315390" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:48.315888" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:48.316320" 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-19T02:57:48.291744" elapsed="0.024799"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:48.319038" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:48.322305" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:48.321273" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:48.323705" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:48.323005" elapsed="0.000872"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:48.322881" elapsed="0.001122"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:48.324992" elapsed="0.000192"/>
</return>
<status status="PASS" start="2026-04-19T02:57:48.324497" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:48.324262" elapsed="0.001188"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:48.325559" 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-19T02:57:48.333361" elapsed="0.001068"/>
</kw>
<kw name="Open 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-19T02:57:48.334908" elapsed="0.000394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:48.335738" 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-19T02:57:48.326984" elapsed="0.009249"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:47.956647" elapsed="0.380138"/>
</kw>
<msg time="2026-04-19T02:57:48.337575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:47.955162" elapsed="0.382565"/>
</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-19T02:57:47.953905" elapsed="0.384011"/>
</kw>
<msg time="2026-04-19T02:57:48.338007" 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-19T02:57:47.952694" elapsed="0.385507"/>
</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-19T02:57:48.345200" elapsed="0.000521"/>
</kw>
<kw name="Open 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-19T02:57:48.345955" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:48.346405" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:48.338859" elapsed="0.007752"/>
</kw>
<msg time="2026-04-19T02:57:48.346735" level="INFO">${output} = 1</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-19T02:57:47.950697" elapsed="0.396072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:48.347392" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:48.347022" elapsed="0.000431"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:48.347512" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T02:57:48.347721" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:47.948398" elapsed="0.399357"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:48.347817" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T02:57:48.348011" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:47.945992" elapsed="0.402074"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:48.348848" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:48.348282" elapsed="0.000663">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:47.944936" elapsed="0.404198">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:50.352796" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:50.352024" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:50.354906" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:50.354302" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:50.356334" 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-19T02:57:50.356578" 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-19T02:57:50.356110" elapsed="0.000506"/>
</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-19T02:57:50.361968" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:50.361332" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:50.361255" elapsed="0.000940"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:50.364326" 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-19T02:57:50.364578" 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-19T02:57:50.363633" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:50.366272" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:50.365669" elapsed="0.000738"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:50.368394" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:50.367625" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:50.370760" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:50.370839" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:50.370467" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:50.371099" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:50.372507" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:50.690114" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:50.372173" elapsed="0.318102"/>
</kw>
<msg time="2026-04-19T02:57:50.690392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:50.371718" elapsed="0.318769"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:50.369688" elapsed="0.321100"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:50.692335" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:50.715358" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:50.715853" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:50.716232" 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-19T02:57:50.691908" elapsed="0.024535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:50.718693" elapsed="0.000980"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:50.721120" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:50.720469" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:50.721815" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:50.721489" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:50.721409" elapsed="0.000591"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:50.722509" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:57:50.722227" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:50.722160" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:50.722867" elapsed="0.000051"/>
</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-19T02:57:50.728917" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:50.729653" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:50.730019" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:50.724708" elapsed="0.005539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:50.359395" elapsed="0.371075"/>
</kw>
<msg time="2026-04-19T02:57:50.730792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:50.358412" elapsed="0.372438"/>
</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-19T02:57:50.357635" elapsed="0.373298"/>
</kw>
<msg time="2026-04-19T02:57:50.730975" 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-19T02:57:50.356839" elapsed="0.374183"/>
</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-19T02:57:50.734118" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:57:50.734706" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:50.735057" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:50.731337" elapsed="0.003873"/>
</kw>
<msg time="2026-04-19T02:57:50.735301" level="INFO">${output} = 1</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-19T02:57:50.355504" elapsed="0.379822"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:50.735754" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:50.735508" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:50.735840" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:50.735993" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:50.353354" elapsed="0.382664"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:50.736082" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:50.736227" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:50.351193" elapsed="0.385059"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:50.736799" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:50.736408" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:50.349979" elapsed="0.387006">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:52.740645" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:52.739851" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:52.742795" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:52.742178" elapsed="0.000679"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:52.744678" 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-19T02:57:52.744820" 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-19T02:57:52.744399" elapsed="0.000459"/>
</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-19T02:57:52.750385" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:52.749720" elapsed="0.000871"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:52.749641" elapsed="0.001035"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:52.752927" 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-19T02:57:52.753196" 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-19T02:57:52.752145" elapsed="0.001157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:52.754849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:52.754299" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:52.756754" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:52.756026" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:52.759248" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:52.759327" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:52.758870" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:52.759571" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:52.760877" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:53.083255" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:52.760548" elapsed="0.322870"/>
</kw>
<msg time="2026-04-19T02:57:53.083507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:52.760184" elapsed="0.323415"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:52.758092" elapsed="0.325806"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:53.085420" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:53.108542" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:53.109139" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:53.109501" 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-19T02:57:53.085005" elapsed="0.024720"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:53.112221" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:53.115643" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:53.114577" elapsed="0.001317"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:53.116964" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:53.116430" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:53.116296" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:53.118184" elapsed="0.000178"/>
</return>
<status status="PASS" start="2026-04-19T02:57:53.117668" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:53.117550" elapsed="0.001032"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:53.118678" 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-19T02:57:53.123754" 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-19T02:57:53.124374" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:53.124735" 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-19T02:57:53.120014" elapsed="0.004926"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:52.747750" elapsed="0.377434"/>
</kw>
<msg time="2026-04-19T02:57:53.125554" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:52.746737" elapsed="0.378876"/>
</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-19T02:57:52.745830" elapsed="0.379867"/>
</kw>
<msg time="2026-04-19T02:57:53.125739" 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-19T02:57:52.745106" elapsed="0.380815"/>
</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-19T02:57:53.129021" 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-19T02:57:53.129514" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:53.129808" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:53.126233" elapsed="0.003723"/>
</kw>
<msg time="2026-04-19T02:57:53.130063" level="INFO">${output} = 1</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-19T02:57:52.743387" elapsed="0.386703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:53.130532" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:53.130265" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:53.130619" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:53.130773" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:52.741215" elapsed="0.389584"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:53.130846" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:57:53.130992" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:52.738949" elapsed="0.392068"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:53.131590" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:53.131192" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:52.737836" elapsed="0.393940">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:55.135345" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:55.134535" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:55.137461" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:55.136824" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:55.139360" 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-19T02:57:55.139598" 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-19T02:57:55.138992" elapsed="0.000665"/>
</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-19T02:57:55.145943" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:55.145474" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:55.145415" elapsed="0.000694"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:55.147800" 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-19T02:57:55.148068" 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-19T02:57:55.147107" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:55.149679" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:55.149137" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:55.151628" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:55.150844" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:55.153971" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:55.154068" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:55.153687" 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-19T02:57:55.154307" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:55.155814" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:55.478586" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:55.155373" elapsed="0.323450"/>
</kw>
<msg time="2026-04-19T02:57:55.478973" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:55.154892" elapsed="0.324261"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:55.152910" elapsed="0.326780"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:55.482222" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:55.505369" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:55.505875" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:55.506268" 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-19T02:57:55.481816" elapsed="0.024672"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:55.508798" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:55.511109" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:55.510463" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:55.511810" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:55.511482" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:55.511401" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:55.512545" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:57:55.512263" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:55.512195" elapsed="0.000614"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:55.512920" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:55.519119" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T02:57:55.519668" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:55.520025" elapsed="0.000235"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:55.514816" elapsed="0.005554"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:55.144096" elapsed="0.376493"/>
</kw>
<msg time="2026-04-19T02:57:55.520906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:55.142620" elapsed="0.378347"/>
</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-19T02:57:55.141401" elapsed="0.379663"/>
</kw>
<msg time="2026-04-19T02:57:55.521107" 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-19T02:57:55.140227" elapsed="0.380926"/>
</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-19T02:57:55.524251" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:57:55.524741" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:55.525078" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:55.521511" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T02:57:55.525322" level="INFO">${output} = 1</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-19T02:57:55.137995" elapsed="0.387353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:55.525779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:55.525529" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:55.525867" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:57:55.526020" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:55.135888" elapsed="0.390174"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:55.526111" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:55.526259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:55.133681" elapsed="0.392603"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:55.526832" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:55.526440" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:55.132588" elapsed="0.394431">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:57.530877" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:57.529976" elapsed="0.000979"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:57.533299" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:57.532594" elapsed="0.000770"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:57.535424" 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-19T02:57:57.535682" 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-19T02:57:57.535059" elapsed="0.000703"/>
</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-19T02:57:57.543953" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:57.543231" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:57.543173" elapsed="0.000937"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:57.545543" 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-19T02:57:57.545786" 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-19T02:57:57.545102" elapsed="0.000782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:57.547431" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:57.546870" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:57.549231" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:57.548506" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:57.551621" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:57.551700" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:57.551337" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:57.551934" elapsed="0.000419"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:57.553298" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:57:57.873595" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:57.552939" elapsed="0.320804"/>
</kw>
<msg time="2026-04-19T02:57:57.873827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:57.552577" elapsed="0.321338"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:57.550552" elapsed="0.323675"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:57:57.875770" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:57:57.899372" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:57:57.899932" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:57:57.900327" 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-19T02:57:57.875341" elapsed="0.025197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:57.902762" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:57.905978" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:57.904960" elapsed="0.001375"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:57.907232" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:57:57.906690" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:57.906565" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:57:57.908401" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T02:57:57.907914" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:57.907804" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:57:57.908818" 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-19T02:57:57.913812" elapsed="0.000424"/>
</kw>
<kw name="Open 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-19T02:57:57.914453" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:57.914820" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:57.910361" elapsed="0.004688"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:57.540530" elapsed="0.374767"/>
</kw>
<msg time="2026-04-19T02:57:57.915612" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:57.538906" elapsed="0.376804"/>
</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-19T02:57:57.537493" elapsed="0.378309"/>
</kw>
<msg time="2026-04-19T02:57:57.915847" 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-19T02:57:57.536187" elapsed="0.379712"/>
</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-19T02:57:57.919003" 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-19T02:57:57.919502" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:57:57.919840" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:57:57.916212" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T02:57:57.920167" level="INFO">${output} = 1</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-19T02:57:57.533934" elapsed="0.386259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:57.920638" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:57.920379" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:57:57.920734" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:57:57.920888" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:57.531500" elapsed="0.389414"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:57:57.920962" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:57:57.921140" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:57.529068" elapsed="0.392097"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:57:57.921738" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:57:57.921326" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:57.527880" elapsed="0.394052">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:57:59.925464" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:57:59.924693" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:57:59.927627" level="INFO">${member_ip} = 10.30.171.206</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-19T02:57:59.926992" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:59.929475" 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-19T02:57:59.929701" 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-19T02:57:59.929146" elapsed="0.000614"/>
</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-19T02:57:59.934950" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:57:59.934458" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T02:57:59.934161" elapsed="0.000947"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:59.936557" 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-19T02:57:59.936805" 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-19T02:57:59.936112" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:57:59.938461" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:57:59.937889" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:57:59.940354" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:57:59.939639" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:57:59.942795" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:57:59.942880" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:57:59.942495" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:59.943310" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:57:59.944573" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:00.251553" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:57:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:57:59.944249" elapsed="0.307618"/>
</kw>
<msg time="2026-04-19T02:58:00.251956" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:59.943871" elapsed="0.308198"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:57:59.941674" elapsed="0.310676"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:00.253852" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:00.276827" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:00.277402" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:00.277739" 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-19T02:58:00.253448" elapsed="0.024501"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:00.280289" elapsed="0.000763"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:00.282525" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:00.281886" 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-19T02:58:00.283417" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:00.282901" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:00.282819" elapsed="0.000821"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:00.284182" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T02:58:00.283862" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:00.283779" elapsed="0.000660"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:00.284575" elapsed="0.000057"/>
</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-19T02:58:00.290649" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T02:58:00.291321" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:00.291686" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:00.286513" elapsed="0.005407"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:57:59.932805" elapsed="0.359365"/>
</kw>
<msg time="2026-04-19T02:58:00.292483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:57:59.932123" elapsed="0.360419"/>
</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-19T02:57:59.931369" elapsed="0.361255"/>
</kw>
<msg time="2026-04-19T02:58:00.292666" 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-19T02:57:59.930147" elapsed="0.362565"/>
</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-19T02:58:00.295826" 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-19T02:58:00.296358" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:00.296654" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:00.293004" elapsed="0.003804"/>
</kw>
<msg time="2026-04-19T02:58:00.296901" level="INFO">${output} = 1</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-19T02:57:59.928206" elapsed="0.368720"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:00.297408" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:00.297146" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:00.297499" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:00.297652" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:57:59.926017" elapsed="0.371661"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:00.297725" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:00.297871" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:57:59.923842" elapsed="0.374054"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:00.298545" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:00.298137" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:57:59.922737" elapsed="0.376001">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:02.302477" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:02.301646" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:02.304805" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:02.304131" elapsed="0.000738"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:02.306726" 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-19T02:58:02.306947" 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-19T02:58:02.306400" elapsed="0.000606"/>
</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-19T02:58:02.312757" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:02.312273" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:02.311896" elapsed="0.001010"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:02.314402" 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-19T02:58:02.314650" 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-19T02:58:02.313916" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:02.316291" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:02.315726" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:02.318200" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:02.317451" elapsed="0.000849"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:02.320643" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:02.320720" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:02.320351" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:02.320959" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:02.322410" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:02.637789" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:02.322079" elapsed="0.315873"/>
</kw>
<msg time="2026-04-19T02:58:02.638063" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:02.321696" elapsed="0.316497"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:02.319530" elapsed="0.318960"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:02.640052" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:02.662811" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:02.663182" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:02.663406" 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-19T02:58:02.639612" elapsed="0.023935"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:02.665102" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:02.667247" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:02.666564" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:02.667979" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:02.667638" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:02.667554" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:02.668710" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T02:58:02.668413" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:02.668339" elapsed="0.000608"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:02.669159" elapsed="0.000058"/>
</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-19T02:58:02.677475" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T02:58:02.678061" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:02.678437" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:02.671149" elapsed="0.007499"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:02.310583" elapsed="0.368296"/>
</kw>
<msg time="2026-04-19T02:58:02.679206" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:02.309869" elapsed="0.369400"/>
</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-19T02:58:02.308558" elapsed="0.370791"/>
</kw>
<msg time="2026-04-19T02:58:02.679389" 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-19T02:58:02.307385" elapsed="0.372050"/>
</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-19T02:58:02.682569" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:58:02.683062" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:02.683360" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:02.679729" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T02:58:02.683598" level="INFO">${output} = 1</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-19T02:58:02.305438" elapsed="0.378184"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:02.684084" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:02.683819" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:02.684173" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:58:02.684327" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:02.303068" elapsed="0.381284"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:02.684396" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:58:02.684538" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:02.300691" elapsed="0.383871"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:02.685142" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:02.684714" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:02.299591" elapsed="0.385739">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:04.688856" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:04.688124" elapsed="0.000802"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:04.691327" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:04.690681" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:04.693175" 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-19T02:58:04.693404" 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-19T02:58:04.692810" elapsed="0.000652"/>
</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-19T02:58:04.698134" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:04.697651" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:04.697591" elapsed="0.000683"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:04.699969" 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-19T02:58:04.700233" 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-19T02:58:04.699293" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:04.701871" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:04.701330" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:04.703795" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:04.703087" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:04.706424" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:04.706535" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:04.705922" elapsed="0.000646"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:04.706830" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:04.708287" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:05.021771" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:04.707940" elapsed="0.313982"/>
</kw>
<msg time="2026-04-19T02:58:05.022007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:04.707557" elapsed="0.314556"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:04.705148" elapsed="0.317251"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:05.023918" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:05.046984" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:05.047573" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:05.047915" 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-19T02:58:05.023520" elapsed="0.024653"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:05.050387" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:05.053662" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:05.052680" elapsed="0.001214"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:05.054900" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:05.054281" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:05.054155" elapsed="0.001132"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:05.056077" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T02:58:05.055614" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:05.055506" elapsed="0.000734"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:05.056319" 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-19T02:58:05.061158" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T02:58:05.061702" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:05.062073" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:05.057688" elapsed="0.004596"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:04.696255" elapsed="0.366254"/>
</kw>
<msg time="2026-04-19T02:58:05.062818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:04.695544" elapsed="0.367331"/>
</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-19T02:58:04.694983" elapsed="0.367979"/>
</kw>
<msg time="2026-04-19T02:58:05.063002" 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-19T02:58:04.693813" elapsed="0.369251"/>
</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-19T02:58:05.066200" 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-19T02:58:05.066677" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:05.066975" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:05.063387" elapsed="0.003754"/>
</kw>
<msg time="2026-04-19T02:58:05.067256" level="INFO">${output} = 1</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-19T02:58:04.691869" elapsed="0.375415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:05.067747" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:05.067481" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:05.067864" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:58:05.068023" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:04.689640" elapsed="0.378472"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:05.068162" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:58:05.068312" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:04.687283" elapsed="0.381054"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:05.068891" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:05.068493" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:04.686191" elapsed="0.382906">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:07.072640" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:07.071865" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:07.074821" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:07.074165" elapsed="0.000720"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:07.076686" 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-19T02:58:07.077185" 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-19T02:58:07.076353" elapsed="0.000903"/>
</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-19T02:58:07.082142" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:07.081642" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:07.081583" elapsed="0.000706"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:07.084084" 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-19T02:58:07.084345" 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-19T02:58:07.083358" elapsed="0.001091"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:07.086085" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:07.085506" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:07.087954" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:07.087237" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:07.090465" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:07.090545" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:07.090177" 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-19T02:58:07.090798" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:07.092145" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:07.406945" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:07.091798" elapsed="0.315504"/>
</kw>
<msg time="2026-04-19T02:58:07.407470" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:07.091427" elapsed="0.316211"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:07.089385" elapsed="0.318750"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:07.409667" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:07.433081" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:07.433792" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:07.434283" 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-19T02:58:07.409266" elapsed="0.025257"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:07.437252" elapsed="0.001187"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:07.440964" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:07.439878" elapsed="0.001456"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:07.442431" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:07.441759" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:07.441617" 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-19T02:58:07.443593" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T02:58:07.443108" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:07.442945" elapsed="0.001112"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:07.444272" elapsed="0.000087"/>
</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-19T02:58:07.455180" elapsed="0.000755"/>
</kw>
<kw name="Open 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-19T02:58:07.456607" elapsed="0.000362"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:07.457539" elapsed="0.000229"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:07.447600" elapsed="0.010414"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:07.080227" elapsed="0.378351"/>
</kw>
<msg time="2026-04-19T02:58:07.459457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:07.079506" elapsed="0.380107"/>
</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-19T02:58:07.078854" elapsed="0.380950"/>
</kw>
<msg time="2026-04-19T02:58:07.459900" 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-19T02:58:07.077614" elapsed="0.382370"/>
</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-19T02:58:07.463197" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T02:58:07.463769" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:07.464186" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:07.460319" elapsed="0.004080"/>
</kw>
<msg time="2026-04-19T02:58:07.464527" level="INFO">${output} = 1</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-19T02:58:07.075406" elapsed="0.389149"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:07.465112" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:07.464781" elapsed="0.000385"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:07.465218" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T02:58:07.465406" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:07.073210" elapsed="0.392225"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:07.465489" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:58:07.465659" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:07.071017" elapsed="0.394672"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:07.466308" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:07.465866" elapsed="0.000522">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:07.069898" elapsed="0.396606">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:09.470063" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:09.469238" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:09.471890" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:09.471429" elapsed="0.000501"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:09.473142" 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-19T02:58:09.473300" 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-19T02:58:09.472889" elapsed="0.000452"/>
</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-19T02:58:09.479680" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:09.479002" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:09.478925" elapsed="0.001054"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:09.482919" 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-19T02:58:09.483306" 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-19T02:58:09.481637" elapsed="0.001782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:09.485245" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:09.484549" elapsed="0.000831"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:09.487431" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:09.486622" elapsed="0.000936"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:09.490337" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:09.490449" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:09.489800" elapsed="0.000680"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:09.490773" elapsed="0.000476"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:09.492399" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:09.813219" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:09.491986" elapsed="0.321374"/>
</kw>
<msg time="2026-04-19T02:58:09.813443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:09.491518" elapsed="0.322029"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:09.488862" elapsed="0.324997"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:09.815698" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:09.838559" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:09.839129" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:09.839479" 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-19T02:58:09.815104" elapsed="0.024590"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:09.841977" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:09.844434" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:09.843788" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:09.845205" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:09.844810" elapsed="0.000501"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:09.844730" elapsed="0.000660"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:09.845868" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:58:09.845587" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:09.845521" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:09.846228" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:09.852484" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:58:09.853077" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:09.853436" 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-19T02:58:09.848088" elapsed="0.005557"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:09.476529" elapsed="0.377344"/>
</kw>
<msg time="2026-04-19T02:58:09.854378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:09.475349" elapsed="0.379094"/>
</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-19T02:58:09.474403" elapsed="0.380127"/>
</kw>
<msg time="2026-04-19T02:58:09.854571" 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-19T02:58:09.473565" elapsed="0.381053"/>
</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-19T02:58:09.857607" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T02:58:09.858101" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:09.858422" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:09.854913" elapsed="0.003663"/>
</kw>
<msg time="2026-04-19T02:58:09.858668" level="INFO">${output} = 1</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-19T02:58:09.472292" elapsed="0.386401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:09.859147" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:09.858876" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:09.859237" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:09.859391" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:09.470596" elapsed="0.388821"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:09.859465" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:09.859612" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:09.468393" elapsed="0.391245"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:09.860215" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:09.859795" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:09.467342" elapsed="0.393055">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:11.863922" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:11.863121" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:11.866075" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:11.865440" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:11.867987" 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-19T02:58:11.868249" 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-19T02:58:11.867652" elapsed="0.000656"/>
</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-19T02:58:11.876711" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:11.875746" elapsed="0.001044"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:11.875627" elapsed="0.001224"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:11.878307" 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-19T02:58:11.878549" 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-19T02:58:11.877843" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:11.880186" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:11.879633" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:11.882138" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:11.881353" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:11.884496" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:11.884573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:11.884212" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:11.884807" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:11.886281" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:12.214737" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:11.885749" elapsed="0.329137"/>
</kw>
<msg time="2026-04-19T02:58:12.214971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:11.885389" elapsed="0.329688"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:11.883439" elapsed="0.331926"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:12.216870" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:12.239602" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:12.240156" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:12.240488" 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-19T02:58:12.216466" elapsed="0.024229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:12.242971" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:12.246420" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:12.245348" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:12.247548" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:12.247012" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:12.246876" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:12.248731" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:58:12.248223" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:12.248106" elapsed="0.001044"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:12.249237" 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-19T02:58:12.254164" 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-19T02:58:12.254732" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:12.255130" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:12.250681" elapsed="0.004670"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:11.872593" elapsed="0.382988"/>
</kw>
<msg time="2026-04-19T02:58:12.255891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:11.871068" elapsed="0.384881"/>
</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-19T02:58:11.869829" elapsed="0.386220"/>
</kw>
<msg time="2026-04-19T02:58:12.256102" 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-19T02:58:11.868659" elapsed="0.387493"/>
</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-19T02:58:12.259336" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T02:58:12.259822" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:12.260144" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:12.256527" elapsed="0.003804"/>
</kw>
<msg time="2026-04-19T02:58:12.260426" level="INFO">${output} = 1</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-19T02:58:11.866674" elapsed="0.393778"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:12.260886" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:12.260635" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:12.260974" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:58:12.261172" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:11.864494" elapsed="0.396706"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:12.261250" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:58:12.261397" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:11.862284" elapsed="0.399138"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:12.261976" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:12.261581" elapsed="0.000551">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:11.861240" elapsed="0.401019">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:14.265886" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:14.265154" elapsed="0.000801"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:14.268131" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:14.267485" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:14.269998" 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-19T02:58:14.270276" 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-19T02:58:14.269674" elapsed="0.000663"/>
</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-19T02:58:14.276013" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:14.275544" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:14.275242" elapsed="0.000939"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:14.277604" 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-19T02:58:14.277850" 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-19T02:58:14.277156" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:14.279564" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:14.278920" elapsed="0.000754"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:14.281360" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:14.280649" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:14.283777" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:14.283854" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:14.283494" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:14.284130" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:14.285473" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:14.609800" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:14.285142" elapsed="0.324813"/>
</kw>
<msg time="2026-04-19T02:58:14.610061" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:14.284760" elapsed="0.325396"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:14.282645" elapsed="0.327799"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:14.611933" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:14.634901" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:14.635566" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:14.635948" 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-19T02:58:14.611538" elapsed="0.024703"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:14.638734" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:14.642254" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:14.641157" elapsed="0.001342"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:14.643552" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:14.642886" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:14.642751" elapsed="0.001090"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:14.644639" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:58:14.644195" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:14.644084" elapsed="0.001017"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:14.645236" 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-19T02:58:14.650119" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:58:14.650666" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:14.651026" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:14.646563" elapsed="0.004714"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:14.273888" elapsed="0.377624"/>
</kw>
<msg time="2026-04-19T02:58:14.651821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:14.273176" elapsed="0.378706"/>
</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-19T02:58:14.271871" elapsed="0.380092"/>
</kw>
<msg time="2026-04-19T02:58:14.652004" 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-19T02:58:14.270693" elapsed="0.381373"/>
</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-19T02:58:14.655020" elapsed="0.000436"/>
</kw>
<kw name="Open 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-19T02:58:14.655622" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:14.655926" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:14.652360" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T02:58:14.656265" level="INFO">${output} = 1</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-19T02:58:14.268712" elapsed="0.387579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:14.656754" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:14.656476" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:14.656843" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:58:14.656999" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:14.266517" elapsed="0.390526"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:14.657098" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:58:14.657248" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:14.264285" elapsed="0.392989"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:14.657828" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:14.657433" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:14.263114" elapsed="0.394902">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:16.661659" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:16.660829" elapsed="0.000909"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:16.663794" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:16.663186" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:16.665701" 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-19T02:58:16.665943" 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-19T02:58:16.665318" elapsed="0.000699"/>
</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-19T02:58:16.674748" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:16.673974" elapsed="0.000886"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:16.673334" elapsed="0.001609"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:16.676970" 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-19T02:58:16.677336" 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-19T02:58:16.676354" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:16.679321" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:16.678711" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:16.681130" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:16.680417" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:16.683650" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:16.683728" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:16.683368" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:16.683964" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:16.685242" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:17.005675" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:16.684898" elapsed="0.321057"/>
</kw>
<msg time="2026-04-19T02:58:17.006065" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:16.684538" elapsed="0.321629"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:16.682493" elapsed="0.323965"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:17.007996" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:17.031107" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:17.031609" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:17.031962" 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-19T02:58:17.007600" elapsed="0.024644"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:17.034459" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:17.037721" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:17.036667" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:17.038937" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:17.038356" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:17.038234" elapsed="0.001030"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:17.040200" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-04-19T02:58:17.039590" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:17.039483" elapsed="0.000932"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:17.040494" 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-19T02:58:17.047236" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:58:17.047802" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:17.048268" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:17.041856" elapsed="0.006623"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:16.670360" elapsed="0.378339"/>
</kw>
<msg time="2026-04-19T02:58:17.049004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:16.668804" elapsed="0.380274"/>
</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-19T02:58:16.667590" elapsed="0.381569"/>
</kw>
<msg time="2026-04-19T02:58:17.049200" 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-19T02:58:16.666419" elapsed="0.382826"/>
</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-19T02:58:17.052290" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:58:17.052767" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:17.053077" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:17.049537" elapsed="0.003690"/>
</kw>
<msg time="2026-04-19T02:58:17.053316" level="INFO">${output} = 1</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-19T02:58:16.664373" elapsed="0.388968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:17.053801" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:17.053521" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:17.053895" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:17.054062" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:16.662236" elapsed="0.391853"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:17.054136" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:17.054282" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:16.659943" elapsed="0.394366"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:17.054905" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:17.054516" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:16.658846" elapsed="0.396257">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:19.058586" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:19.057788" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:19.060710" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:19.060099" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:19.062600" 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-19T02:58:19.062829" 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-19T02:58:19.062255" elapsed="0.000634"/>
</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-19T02:58:19.068749" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:19.068289" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:19.068234" elapsed="0.000652"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:19.070926" 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-19T02:58:19.071186" 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-19T02:58:19.070072" elapsed="0.001215"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:19.072804" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:19.072259" elapsed="0.000654"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:19.074596" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:19.073880" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:19.077007" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:19.077102" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:19.076726" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:19.077336" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:19.078628" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:19.397844" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:19.078299" elapsed="0.319760"/>
</kw>
<msg time="2026-04-19T02:58:19.398201" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:19.077888" elapsed="0.320456"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:19.075882" elapsed="0.322996"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:19.401884" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:19.424544" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:19.425073" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:19.425420" 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-19T02:58:19.401166" elapsed="0.024460"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:19.427818" elapsed="0.000870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:19.430963" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:19.429943" elapsed="0.001287"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:19.432103" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:19.431578" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:19.431454" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:19.433208" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:58:19.432724" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:19.432617" elapsed="0.000945"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:19.433734" elapsed="0.000085"/>
</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-19T02:58:19.440966" 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-19T02:58:19.441749" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:19.442354" 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-19T02:58:19.436317" elapsed="0.006331"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:19.066903" elapsed="0.376053"/>
</kw>
<msg time="2026-04-19T02:58:19.443400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:19.066085" elapsed="0.377395"/>
</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-19T02:58:19.064651" elapsed="0.378944"/>
</kw>
<msg time="2026-04-19T02:58:19.443652" 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-19T02:58:19.063278" elapsed="0.380439"/>
</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-19T02:58:19.447615" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:58:19.448108" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:19.448403" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:19.444146" elapsed="0.004405"/>
</kw>
<msg time="2026-04-19T02:58:19.448642" level="INFO">${output} = 1</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-19T02:58:19.061286" elapsed="0.387381"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:19.449112" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:19.448848" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:19.449201" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:58:19.449353" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:19.059150" elapsed="0.390228"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:19.449425" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:19.449569" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:19.056934" elapsed="0.392659"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:19.450201" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:19.449749" elapsed="0.000527">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:19.055837" elapsed="0.394553">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:21.452984" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:21.452459" elapsed="0.000594"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:21.454578" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:21.454168" elapsed="0.000449"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:21.455845" 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-19T02:58:21.456000" 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-19T02:58:21.455602" elapsed="0.000459"/>
</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-19T02:58:21.461969" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:21.461266" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:21.461187" elapsed="0.001027"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:21.464667" 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-19T02:58:21.464984" 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-19T02:58:21.463636" elapsed="0.001480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:21.466687" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:21.466116" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:21.468927" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:21.467834" elapsed="0.001262"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:21.472943" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:21.473087" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:21.472498" elapsed="0.000630"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:21.473456" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:21.475414" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:21.809210" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:21.474897" elapsed="0.334471"/>
</kw>
<msg time="2026-04-19T02:58:21.809454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:21.474336" elapsed="0.335209"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:21.470917" elapsed="0.338908"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:21.811314" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:21.834201" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:21.834736" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:21.835146" 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-19T02:58:21.810910" elapsed="0.024459"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:21.837683" elapsed="0.000995"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:21.841184" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:21.840115" elapsed="0.001314"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:21.842512" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:21.841813" elapsed="0.000881"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:21.841672" elapsed="0.001155"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:21.843837" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T02:58:21.843329" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:21.843208" elapsed="0.001093"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:21.844498" elapsed="0.000088"/>
</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-19T02:58:21.849920" 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-19T02:58:21.850513" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:21.850877" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:21.846391" elapsed="0.004760"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:21.459189" elapsed="0.392192"/>
</kw>
<msg time="2026-04-19T02:58:21.851732" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:21.458076" elapsed="0.393732"/>
</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-19T02:58:21.457163" elapsed="0.394747"/>
</kw>
<msg time="2026-04-19T02:58:21.851954" 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-19T02:58:21.456308" elapsed="0.395695"/>
</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-19T02:58:21.855231" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T02:58:21.855748" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:21.856078" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:21.852364" elapsed="0.003905"/>
</kw>
<msg time="2026-04-19T02:58:21.856367" level="INFO">${output} = 1</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-19T02:58:21.454947" elapsed="0.401446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:21.856867" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:21.856607" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:21.856957" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T02:58:21.857133" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:21.453491" elapsed="0.403668"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:21.857207" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:58:21.857355" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:21.451867" elapsed="0.405512"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:21.857942" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:21.857538" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:21.451097" elapsed="0.407051">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:23.861978" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:23.861213" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:23.864143" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:23.863495" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:23.865969" 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-19T02:58:23.866397" 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-19T02:58:23.865629" elapsed="0.000874"/>
</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-19T02:58:23.873708" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:23.873020" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:23.872941" elapsed="0.000972"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:23.875847" 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-19T02:58:23.876119" 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-19T02:58:23.875113" elapsed="0.001105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:23.877741" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:23.877182" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:23.879599" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:23.878847" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:23.882073" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:23.882155" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:23.881753" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:23.882403" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:23.883706" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:24.229055" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:23.883381" elapsed="0.345824"/>
</kw>
<msg time="2026-04-19T02:58:24.229291" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:23.882993" elapsed="0.346387"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:23.880922" elapsed="0.348746"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:24.231177" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:24.254010" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:24.254572" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:24.254906" 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-19T02:58:24.230763" elapsed="0.024398"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:24.257449" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:24.260636" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:24.259683" elapsed="0.001097"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:24.261363" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:24.261011" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:24.260926" 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-19T02:58:24.262063" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T02:58:24.261761" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:24.261683" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:24.262405" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:24.269218" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T02:58:24.270077" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:24.270584" 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-19T02:58:24.264425" elapsed="0.006450"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:23.870772" elapsed="0.400539"/>
</kw>
<msg time="2026-04-19T02:58:24.271729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:23.869257" elapsed="0.402554"/>
</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-19T02:58:23.868020" elapsed="0.403907"/>
</kw>
<msg time="2026-04-19T02:58:24.272016" 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-19T02:58:23.866858" elapsed="0.405245"/>
</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-19T02:58:24.275334" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T02:58:24.275813" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:24.276152" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:24.272516" elapsed="0.003788"/>
</kw>
<msg time="2026-04-19T02:58:24.276394" level="INFO">${output} = 1</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-19T02:58:23.864684" elapsed="0.411736"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:24.276849" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:24.276602" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:24.276936" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:24.277106" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:23.862556" elapsed="0.414575"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:24.277178" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:24.277324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:23.860382" elapsed="0.416967"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:24.277939" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:24.277518" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:23.859162" elapsed="0.419009">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:26.282234" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:26.281211" elapsed="0.001094"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:26.284453" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:26.283794" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:26.286384" 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-19T02:58:26.286611" 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-19T02:58:26.285990" elapsed="0.000680"/>
</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-19T02:58:26.293793" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:26.292760" elapsed="0.001225"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:26.292683" elapsed="0.001409"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:26.295665" 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-19T02:58:26.295910" 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-19T02:58:26.295226" elapsed="0.000784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:26.297553" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:26.296993" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:26.299372" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:26.298662" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:26.301801" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:26.301879" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:26.301499" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:26.302130" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:26.303385" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:26.630159" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:26.303058" elapsed="0.327243"/>
</kw>
<msg time="2026-04-19T02:58:26.630388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:26.302684" elapsed="0.327796"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:26.300726" elapsed="0.330027"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:26.632291" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:26.655222" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:26.655756" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:26.656165" 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-19T02:58:26.631848" elapsed="0.024537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:26.658801" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:26.661592" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:26.660959" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:26.662343" elapsed="0.000053"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:26.661960" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:26.661881" elapsed="0.000666"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:26.663090" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:58:26.662749" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:26.662681" elapsed="0.000650"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:26.663447" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:26.670850" elapsed="0.000501"/>
</kw>
<kw name="Open 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-19T02:58:26.671702" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:26.672377" elapsed="0.000170"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:26.665780" elapsed="0.006926"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:26.290851" elapsed="0.382175"/>
</kw>
<msg time="2026-04-19T02:58:26.673559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:26.289470" elapsed="0.384174"/>
</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-19T02:58:26.288226" elapsed="0.385536"/>
</kw>
<msg time="2026-04-19T02:58:26.673822" 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-19T02:58:26.287023" elapsed="0.386864"/>
</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-19T02:58:26.677754" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:58:26.678250" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:26.678549" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:26.674322" elapsed="0.004378"/>
</kw>
<msg time="2026-04-19T02:58:26.678793" level="INFO">${output} = 1</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-19T02:58:26.284997" elapsed="0.393821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:26.679272" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:26.679004" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:26.679361" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:26.679516" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:26.282764" elapsed="0.396778"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:26.679590" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:26.679739" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:26.280169" elapsed="0.399595"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:26.680618" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:26.680214" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:26.278991" elapsed="0.401818">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:28.684690" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:28.683856" elapsed="0.000904"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:28.686886" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:28.686269" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:28.688866" 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-19T02:58:28.689148" 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-19T02:58:28.688509" elapsed="0.000702"/>
</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-19T02:58:28.695284" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:28.694774" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:28.694470" elapsed="0.000958"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:28.696883" 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-19T02:58:28.697144" 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-19T02:58:28.696435" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:28.698791" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:28.698244" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:28.700685" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:28.699947" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:28.703143" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:28.703222" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:28.702833" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:28.703467" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:28.704776" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:29.025873" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:28.704448" elapsed="0.321578"/>
</kw>
<msg time="2026-04-19T02:58:29.026131" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:28.704027" elapsed="0.322194"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:28.701986" elapsed="0.324513"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:29.027987" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:29.050716" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:29.051402" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:29.051752" 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-19T02:58:29.027602" elapsed="0.024362"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:29.054220" elapsed="0.000945"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:29.057417" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:29.056434" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:29.058548" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:29.058005" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:29.057881" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:29.059672" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:58:29.059214" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:29.059100" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:29.060358" elapsed="0.000084"/>
</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-19T02:58:29.069144" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:58:29.069689" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:29.070059" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:29.063527" elapsed="0.006742"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:28.693121" elapsed="0.377369"/>
</kw>
<msg time="2026-04-19T02:58:29.070798" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:28.692069" elapsed="0.378787"/>
</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-19T02:58:28.690790" elapsed="0.380147"/>
</kw>
<msg time="2026-04-19T02:58:29.070987" 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-19T02:58:28.689569" elapsed="0.381556"/>
</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-19T02:58:29.074155" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:58:29.074626" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:29.074917" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:29.071487" elapsed="0.003617"/>
</kw>
<msg time="2026-04-19T02:58:29.075195" level="INFO">${output} = 1</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-19T02:58:28.687493" elapsed="0.387727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:29.075647" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:29.075397" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:29.075736" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:29.075888" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:28.685273" elapsed="0.390640"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:29.075960" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:58:29.076122" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:28.682966" elapsed="0.393180"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:29.076691" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:29.076300" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:28.681816" elapsed="0.395086">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:31.080414" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:31.079653" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:31.082543" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:31.081904" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:31.084381" 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-19T02:58:31.084606" 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-19T02:58:31.084024" elapsed="0.000642"/>
</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-19T02:58:31.089372" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:31.088872" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:31.088582" elapsed="0.000931"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:31.090927" 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-19T02:58:31.091182" 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-19T02:58:31.090484" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:31.092782" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:31.092245" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:31.094604" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:31.093886" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:31.097013" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:31.097127" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:31.096730" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:31.097365" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:31.098689" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:31.426199" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:31.098365" elapsed="0.327981"/>
</kw>
<msg time="2026-04-19T02:58:31.426432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:31.097986" elapsed="0.328537"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:31.095890" elapsed="0.330925"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:31.428369" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:31.451119" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:31.451621" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:31.451955" 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-19T02:58:31.427920" elapsed="0.024308"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:31.454458" elapsed="0.000935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:31.457436" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:31.456746" elapsed="0.000834"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:31.458168" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:31.457807" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:31.457727" elapsed="0.000627"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:31.458838" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:58:31.458558" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:31.458486" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:31.459192" elapsed="0.000051"/>
</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-19T02:58:31.468389" 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-19T02:58:31.469079" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:31.469436" 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-19T02:58:31.461267" elapsed="0.008372"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:31.087270" elapsed="0.382589"/>
</kw>
<msg time="2026-04-19T02:58:31.470179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:31.086562" elapsed="0.383673"/>
</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-19T02:58:31.086008" elapsed="0.384306"/>
</kw>
<msg time="2026-04-19T02:58:31.470354" 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-19T02:58:31.085014" elapsed="0.385385"/>
</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-19T02:58:31.473407" 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-19T02:58:31.473956" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:31.474271" 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-19T02:58:31.470686" elapsed="0.003732"/>
</kw>
<msg time="2026-04-19T02:58:31.474569" level="INFO">${output} = 1</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-19T02:58:31.083111" elapsed="0.391484"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:31.475026" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:31.474777" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:31.475131" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:31.475281" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:31.080936" elapsed="0.394371"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:31.475353" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:31.475497" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:31.078809" elapsed="0.396713"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:31.476110" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:31.475678" elapsed="0.000530">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:31.077746" elapsed="0.398573">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:33.478976" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:33.478491" elapsed="0.000531"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:33.480492" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:33.480107" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:33.481655" 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-19T02:58:33.481796" 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-19T02:58:33.481434" elapsed="0.000402"/>
</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-19T02:58:33.487147" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:33.486438" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:33.486361" elapsed="0.000979"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:33.489723" 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-19T02:58:33.490110" 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-19T02:58:33.488780" elapsed="0.001468"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:33.492445" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:33.491595" elapsed="0.001002"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:33.494389" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:33.493625" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:33.496727" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:33.496808" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:33.496444" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:33.497056" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:33.498451" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:33.818796" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:33.497972" elapsed="0.321104"/>
</kw>
<msg time="2026-04-19T02:58:33.819164" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:33.497611" elapsed="0.321646"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:33.495679" elapsed="0.323853"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:33.821013" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:33.843886" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:33.844138" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:33.844287" 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-19T02:58:33.820626" elapsed="0.023754"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:33.845364" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:33.846966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:33.846491" elapsed="0.000598"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:33.847496" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:33.847256" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:33.847196" elapsed="0.000431"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:33.847968" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T02:58:33.847769" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:33.847721" elapsed="0.000422"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:33.848224" 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-19T02:58:33.852949" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T02:58:33.853625" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:33.853985" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:33.849562" elapsed="0.004651"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:33.484507" elapsed="0.369925"/>
</kw>
<msg time="2026-04-19T02:58:33.854734" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:33.483555" elapsed="0.371238"/>
</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-19T02:58:33.482794" elapsed="0.372081"/>
</kw>
<msg time="2026-04-19T02:58:33.854932" 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-19T02:58:33.482079" elapsed="0.372902"/>
</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-19T02:58:33.858230" 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-19T02:58:33.858745" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:33.859085" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:33.855289" elapsed="0.003952"/>
</kw>
<msg time="2026-04-19T02:58:33.859335" level="INFO">${output} = 1</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-19T02:58:33.480831" elapsed="0.378529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:33.859800" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:33.859548" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:33.859888" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:33.860058" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:33.479480" elapsed="0.380604"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:33.860132" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:33.860278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:33.477749" elapsed="0.382553"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:33.860916" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:33.860514" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:33.476968" elapsed="0.384179">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:35.864582" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:35.863828" elapsed="0.000823"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:35.866699" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:35.866055" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:35.868681" 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-19T02:58:35.868904" 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-19T02:58:35.868358" elapsed="0.000605"/>
</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-19T02:58:35.874411" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:35.873923" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:35.873866" elapsed="0.000685"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:35.876285" 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-19T02:58:35.876537" 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-19T02:58:35.875535" elapsed="0.001100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:35.878187" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:35.877605" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:35.879958" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:35.879250" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:35.882468" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:35.882547" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:35.882179" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:35.882788" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:35.884126" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:36.202106" 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 Sun Apr 19 02:57:35 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:35.883784" elapsed="0.318489"/>
</kw>
<msg time="2026-04-19T02:58:36.202368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:35.883418" elapsed="0.319051"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:35.881272" elapsed="0.321490"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:36.204327" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:36.227243" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:36.227917" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:36.228340" 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-19T02:58:36.203904" elapsed="0.024657"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:36.231126" elapsed="0.001115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:36.234653" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:36.233586" elapsed="0.001381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:36.235940" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:36.235416" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:36.235285" elapsed="0.000992"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:36.237390" elapsed="0.000134"/>
</return>
<status status="PASS" start="2026-04-19T02:58:36.236635" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:36.236522" elapsed="0.001241"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:36.237945" elapsed="0.000112"/>
</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-19T02:58:36.244073" 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-19T02:58:36.244676" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:36.245107" 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-19T02:58:36.240419" elapsed="0.004905"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:35.872549" elapsed="0.373009"/>
</kw>
<msg time="2026-04-19T02:58:36.245876" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:35.871764" elapsed="0.374182"/>
</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-19T02:58:35.870503" elapsed="0.375544"/>
</kw>
<msg time="2026-04-19T02:58:36.246091" 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-19T02:58:35.869341" elapsed="0.376798"/>
</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-19T02:58:36.249251" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:58:36.249743" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:36.250054" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:36.246434" elapsed="0.003775"/>
</kw>
<msg time="2026-04-19T02:58:36.250304" level="INFO">${output} = 1</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-19T02:58:35.867406" elapsed="0.382924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:36.250762" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:36.250510" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:36.250884" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:58:36.251059" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:35.865125" elapsed="0.385961"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:36.251137" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:36.251285" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:35.862969" elapsed="0.388341"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:36.251874" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:36.251469" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:35.861926" elapsed="0.390162">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:38.255762" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:38.255007" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:38.257687" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:38.257303" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:38.258856" 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-19T02:58:38.259002" 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-19T02:58:38.258633" elapsed="0.000426"/>
</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-19T02:58:38.264367" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:38.263657" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:38.263579" elapsed="0.000999"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:38.266926" 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-19T02:58:38.267298" 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-19T02:58:38.265981" elapsed="0.001458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:38.269428" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:38.268808" elapsed="0.000729"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:38.271271" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:38.270506" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:38.273609" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:38.273687" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:38.273327" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:38.273921" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:38.275327" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:38.865376" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:38.274849" elapsed="0.590683"/>
</kw>
<msg time="2026-04-19T02:58:38.865619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:38.274491" elapsed="0.591221"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:38.272556" elapsed="0.593440"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:38.867525" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:38.890482" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:38.890975" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:38.891388" 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-19T02:58:38.867120" elapsed="0.024482"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:38.893847" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:38.897167" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:38.896092" elapsed="0.001315"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:38.898413" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:38.897759" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:38.897634" elapsed="0.001076"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:38.899579" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:58:38.899070" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:38.898928" elapsed="0.001011"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:38.900079" 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-19T02:58:38.904833" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T02:58:38.905448" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:38.905804" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:38.901501" elapsed="0.004510"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:38.261741" elapsed="0.644512"/>
</kw>
<msg time="2026-04-19T02:58:38.906553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:38.260787" elapsed="0.645823"/>
</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-19T02:58:38.260024" elapsed="0.646669"/>
</kw>
<msg time="2026-04-19T02:58:38.906734" 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-19T02:58:38.259287" elapsed="0.647492"/>
</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-19T02:58:38.909880" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:58:38.910384" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:38.910714" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:38.907084" elapsed="0.003804"/>
</kw>
<msg time="2026-04-19T02:58:38.911006" level="INFO">${output} = 1</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-19T02:58:38.258054" elapsed="0.653001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:38.911662" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:38.911345" elapsed="0.000374"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:38.911776" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T02:58:38.911971" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:38.256536" elapsed="0.655461"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:38.912073" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:38.912225" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:38.254191" elapsed="0.658060"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:38.912811" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:38.912410" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:38.252869" elapsed="0.660131">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:40.916694" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:40.915925" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:40.919011" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:40.918408" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:40.920996" 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-19T02:58:40.921421" 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-19T02:58:40.920632" elapsed="0.000856"/>
</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-19T02:58:40.929113" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:40.928092" elapsed="0.001135"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:40.927990" elapsed="0.001322"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:40.930926" 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-19T02:58:40.931197" 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-19T02:58:40.930491" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:40.932852" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:40.932304" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:40.934634" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:40.933925" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:40.937188" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:40.937267" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:40.936890" 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-19T02:58:40.937504" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:40.938762" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:41.269307" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:40.938437" elapsed="0.331040"/>
</kw>
<msg time="2026-04-19T02:58:41.269585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:40.938074" elapsed="0.331622"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:40.935976" elapsed="0.334121"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:41.272204" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:41.295159" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:41.295647" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:41.295978" 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-19T02:58:41.271655" elapsed="0.024571"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:41.298485" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:41.301617" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:41.300620" elapsed="0.001221"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:41.302703" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:41.302211" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:41.302088" elapsed="0.000898"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:41.303775" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T02:58:41.303335" elapsed="0.000655"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:41.303229" elapsed="0.000928"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:41.304330" elapsed="0.000081"/>
</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-19T02:58:41.311754" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:58:41.312380" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:41.312750" 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-19T02:58:41.307498" elapsed="0.005458"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:40.926091" elapsed="0.387177"/>
</kw>
<msg time="2026-04-19T02:58:41.313595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:40.924500" elapsed="0.389157"/>
</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-19T02:58:40.923173" elapsed="0.390569"/>
</kw>
<msg time="2026-04-19T02:58:41.313783" 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-19T02:58:40.921871" elapsed="0.391959"/>
</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-19T02:58:41.316796" 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-19T02:58:41.317335" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:41.317628" 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-19T02:58:41.314140" elapsed="0.003635"/>
</kw>
<msg time="2026-04-19T02:58:41.317868" level="INFO">${output} = 1</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-19T02:58:40.919627" elapsed="0.398266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:41.318337" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:41.318087" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:41.318424" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:41.318577" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:40.917315" elapsed="0.401287"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:41.318650" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:41.318796" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:40.915109" elapsed="0.403715"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:41.319399" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:41.318983" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:40.913836" elapsed="0.405750">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:43.323198" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:43.322380" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:43.325306" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:43.324668" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:43.327181" 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-19T02:58:43.327412" 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-19T02:58:43.326814" elapsed="0.000657"/>
</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-19T02:58:43.333703" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:43.333226" elapsed="0.000621"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:43.332880" elapsed="0.001029"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:43.335365" 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-19T02:58:43.335610" 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-19T02:58:43.334903" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:43.337269" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:43.336680" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:43.339088" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:43.338343" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:43.341533" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:43.341611" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:43.341250" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:43.341846" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:43.343160" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:43.662484" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:43.342802" elapsed="0.319825"/>
</kw>
<msg time="2026-04-19T02:58:43.662705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:43.342417" elapsed="0.320378"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:43.340408" elapsed="0.322708"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:43.664591" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:43.687623" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:43.688195" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:43.688527" 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-19T02:58:43.664206" elapsed="0.024535"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:43.691146" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:43.694493" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:43.693497" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:43.695647" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:43.695142" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:43.694980" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:43.696746" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T02:58:43.696298" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:43.696189" elapsed="0.001140"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:43.697514" 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-19T02:58:43.703294" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T02:58:43.703843" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:43.704223" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:43.699812" elapsed="0.004620"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:43.331556" elapsed="0.373099"/>
</kw>
<msg time="2026-04-19T02:58:43.705121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:43.330284" elapsed="0.374901"/>
</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-19T02:58:43.329008" elapsed="0.376261"/>
</kw>
<msg time="2026-04-19T02:58:43.705311" 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-19T02:58:43.327821" elapsed="0.377536"/>
</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-19T02:58:43.708308" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:58:43.708780" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:43.709177" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:43.705650" elapsed="0.003679"/>
</kw>
<msg time="2026-04-19T02:58:43.709421" level="INFO">${output} = 1</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-19T02:58:43.325845" elapsed="0.383602"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:43.709874" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:43.709626" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:43.709962" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:43.710130" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:43.323723" elapsed="0.386432"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:43.710203" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:43.710348" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:43.321545" elapsed="0.388828"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:43.710946" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:43.710550" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:43.320461" elapsed="0.390687">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:45.714679" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:45.713914" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:45.716776" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:45.716169" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:45.718631" 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-19T02:58:45.718859" 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-19T02:58:45.718303" elapsed="0.000615"/>
</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-19T02:58:45.725146" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:45.724659" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:45.724366" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:45.726738" 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-19T02:58:45.726976" 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-19T02:58:45.726300" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:45.728644" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:45.728066" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:45.730514" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:45.729805" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:45.735371" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:45.735554" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:45.734692" elapsed="0.000914"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:45.736513" elapsed="0.000775"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:45.738938" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:46.053512" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:45.738490" elapsed="0.315106"/>
</kw>
<msg time="2026-04-19T02:58:46.053657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:45.737831" elapsed="0.315897"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:45.732922" elapsed="0.321030"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:46.055308" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:46.078123" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:46.078613" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:46.078944" 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-19T02:58:46.054957" elapsed="0.024244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:46.081420" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:46.084476" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:46.083534" elapsed="0.001169"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:46.085573" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:46.085064" elapsed="0.000676"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:46.084919" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:46.086661" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T02:58:46.086217" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:46.086107" elapsed="0.000903"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:46.087405" 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-19T02:58:46.095333" 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-19T02:58:46.095872" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:46.096238" 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-19T02:58:46.090282" elapsed="0.006163"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:45.723059" elapsed="0.373625"/>
</kw>
<msg time="2026-04-19T02:58:46.096991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:45.721702" elapsed="0.375361"/>
</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-19T02:58:45.720467" elapsed="0.376676"/>
</kw>
<msg time="2026-04-19T02:58:46.097183" 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-19T02:58:45.719299" elapsed="0.377929"/>
</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-19T02:58:46.100395" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:58:46.100869" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:46.101178" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:46.097649" elapsed="0.003680"/>
</kw>
<msg time="2026-04-19T02:58:46.101441" level="INFO">${output} = 1</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-19T02:58:45.717347" elapsed="0.384121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:46.101897" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:46.101648" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:46.101986" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:46.102154" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:45.715232" elapsed="0.386948"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:46.102232" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:46.102376" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:45.712999" elapsed="0.389402"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:46.102946" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:46.102556" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:45.711908" elapsed="0.391251">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:48.106619" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:48.105858" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:48.108768" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:48.108112" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:48.110156" 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-19T02:58:48.110299" 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-19T02:58:48.109912" elapsed="0.000424"/>
</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-19T02:58:48.115691" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:48.115049" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:48.114953" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:48.163257" 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-19T02:58:48.163588" 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-19T02:58:48.117292" elapsed="0.046399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:48.165423" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:48.164775" elapsed="0.000757"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:48.167241" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:48.166508" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:48.169659" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:48.169737" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:48.169370" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:48.169978" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:48.171353" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:48.491848" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:48.171010" elapsed="0.321051"/>
</kw>
<msg time="2026-04-19T02:58:48.492165" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:48.170645" elapsed="0.321638"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:48.168572" elapsed="0.324045"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:48.494466" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:48.517686" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:48.518245" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:48.518581" 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-19T02:58:48.493972" elapsed="0.024827"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:48.521114" elapsed="0.000952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:48.524393" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:48.523349" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:48.525531" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:48.524984" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:48.524857" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:48.526640" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T02:58:48.526186" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:48.526072" elapsed="0.000922"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:48.527377" elapsed="0.000087"/>
</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-19T02:58:48.533435" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T02:58:48.533988" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:48.534419" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:48.529940" elapsed="0.004689"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:48.113102" elapsed="0.421777"/>
</kw>
<msg time="2026-04-19T02:58:48.535261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:48.112116" elapsed="0.423213"/>
</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-19T02:58:48.111349" elapsed="0.424096"/>
</kw>
<msg time="2026-04-19T02:58:48.535494" 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-19T02:58:48.110556" elapsed="0.424989"/>
</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-19T02:58:48.538582" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:58:48.539184" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:48.539488" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:48.535862" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T02:58:48.539805" level="INFO">${output} = 1</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-19T02:58:48.109333" elapsed="0.430500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:48.540326" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:48.540022" elapsed="0.000351"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:48.540416" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:58:48.540575" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:48.107172" elapsed="0.433428"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:48.540648" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:48.540797" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:48.105023" elapsed="0.435805"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:48.541412" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:48.540990" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:48.103955" elapsed="0.437649">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:50.545220" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:50.544455" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:50.547376" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:50.546718" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:50.549234" 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-19T02:58:50.549461" 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-19T02:58:50.548880" elapsed="0.000641"/>
</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-19T02:58:50.555316" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:50.554798" elapsed="0.000602"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:50.554742" elapsed="0.000716"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:50.556894" 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-19T02:58:50.557151" 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-19T02:58:50.556448" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:50.558785" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:50.558234" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:50.560667" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:50.559955" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:50.563019" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:50.563115" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:50.562736" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:50.563384" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:50.564790" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:50.903753" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:50.564326" elapsed="0.339676"/>
</kw>
<msg time="2026-04-19T02:58:50.904107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:50.563944" elapsed="0.340255"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:50.561950" elapsed="0.342523"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:50.905954" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:50.928857" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:50.929414" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:50.929756" 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-19T02:58:50.905568" elapsed="0.024403"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:50.932286" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:50.935458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:50.934445" elapsed="0.001164"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:50.936258" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:50.935840" elapsed="0.000537"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:50.935753" elapsed="0.000705"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:50.936942" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T02:58:50.936661" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:50.936593" elapsed="0.000605"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:50.937308" elapsed="0.000051"/>
</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-19T02:58:50.944166" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T02:58:50.944958" elapsed="0.000253"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:50.945501" 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-19T02:58:50.939284" elapsed="0.006532"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:50.553162" elapsed="0.393193"/>
</kw>
<msg time="2026-04-19T02:58:50.946805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:50.552449" elapsed="0.394442"/>
</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-19T02:58:50.551087" elapsed="0.395929"/>
</kw>
<msg time="2026-04-19T02:58:50.947140" 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-19T02:58:50.549877" elapsed="0.397342"/>
</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-19T02:58:50.950335" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T02:58:50.950824" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:50.951166" 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-19T02:58:50.947623" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T02:58:50.951413" level="INFO">${output} = 1</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-19T02:58:50.547921" elapsed="0.403516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:50.951872" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:50.951623" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:50.951961" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:58:50.952133" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:50.545755" elapsed="0.406404"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:50.952206" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:58:50.952352" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:50.543607" elapsed="0.408770"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:50.953002" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:50.952599" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:50.542521" elapsed="0.410687">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:52.955600" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:52.955115" elapsed="0.000530"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:52.956913" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:52.956530" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:52.958091" 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-19T02:58:52.958272" 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-19T02:58:52.957853" elapsed="0.000457"/>
</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-19T02:58:52.964352" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:52.963607" elapsed="0.000874"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:52.963505" elapsed="0.001064"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:52.966747" 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-19T02:58:52.967144" 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-19T02:58:52.966015" elapsed="0.001279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:52.969603" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:52.968733" elapsed="0.001037"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:52.971777" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:52.971063" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:52.974360" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:52.974444" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:52.973879" elapsed="0.000591"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:52.974690" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:52.975995" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:53.290510" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:52.975661" elapsed="0.315000"/>
</kw>
<msg time="2026-04-19T02:58:53.290748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:52.975283" elapsed="0.315559"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:52.973094" elapsed="0.318061"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:53.292647" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:53.315555" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:53.316111" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:53.316453" 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-19T02:58:53.292255" elapsed="0.024408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:53.318933" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:53.322245" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:53.321146" elapsed="0.001333"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:53.323369" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:53.322834" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:53.322709" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:53.324464" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T02:58:53.323984" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:53.323878" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:53.324993" elapsed="0.000141"/>
</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-19T02:58:53.330681" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:58:53.331246" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:53.331607" 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-19T02:58:53.327258" elapsed="0.004556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:52.961134" elapsed="0.370916"/>
</kw>
<msg time="2026-04-19T02:58:53.332361" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:52.960123" elapsed="0.372296"/>
</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-19T02:58:52.959315" elapsed="0.373188"/>
</kw>
<msg time="2026-04-19T02:58:53.332544" 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-19T02:58:52.958539" elapsed="0.374052"/>
</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-19T02:58:53.335648" 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-19T02:58:53.336228" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:53.336524" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:53.332880" elapsed="0.003793"/>
</kw>
<msg time="2026-04-19T02:58:53.336762" level="INFO">${output} = 1</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-19T02:58:52.957275" elapsed="0.379513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:53.337250" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:53.336966" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:53.337338" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:53.337493" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:52.955935" elapsed="0.381583"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:53.337566" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:58:53.337712" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:52.954568" elapsed="0.383169"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:53.338341" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:53.337894" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:52.953802" elapsed="0.384719">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:55.342231" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:55.341446" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:55.344749" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:55.343940" elapsed="0.000872"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:55.346660" 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-19T02:58:55.346888" 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-19T02:58:55.346318" elapsed="0.000629"/>
</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-19T02:58:55.351971" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:55.351494" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:55.351432" elapsed="0.000699"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:55.353624" 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-19T02:58:55.353871" 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-19T02:58:55.353140" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:55.355517" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:55.354966" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:55.357383" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:55.356630" elapsed="0.000873"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:55.359925" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:55.360004" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:55.359641" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:55.360346" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:55.361670" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:55.688864" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:55.361309" elapsed="0.327706"/>
</kw>
<msg time="2026-04-19T02:58:55.689116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:55.360900" elapsed="0.328310"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:55.358849" elapsed="0.330646"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:55.691063" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:55.713712" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:55.714291" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:55.714636" 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-19T02:58:55.690644" elapsed="0.024207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:55.717244" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:55.720546" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:55.719540" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:55.721958" elapsed="0.000104"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:55.721239" elapsed="0.000953"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:55.721095" elapsed="0.001232"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:55.723297" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T02:58:55.722659" elapsed="0.000882"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:55.722551" elapsed="0.001124"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:55.723857" elapsed="0.000087"/>
</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-19T02:58:55.729695" 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-19T02:58:55.730269" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:55.730645" 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-19T02:58:55.726194" elapsed="0.004667"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:55.349826" elapsed="0.381330"/>
</kw>
<msg time="2026-04-19T02:58:55.731480" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:55.349135" elapsed="0.382405"/>
</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-19T02:58:55.348572" elapsed="0.383053"/>
</kw>
<msg time="2026-04-19T02:58:55.731666" 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-19T02:58:55.347332" elapsed="0.384381"/>
</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-19T02:58:55.734750" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T02:58:55.735348" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:55.735671" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:55.732015" elapsed="0.003807"/>
</kw>
<msg time="2026-04-19T02:58:55.735915" level="INFO">${output} = 1</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-19T02:58:55.345362" elapsed="0.390579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:55.736408" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:55.736144" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:55.736501" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:58:55.736660" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:55.342983" elapsed="0.393704"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:55.736735" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:58:55.736919" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:55.340553" elapsed="0.396391"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:55.737530" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:55.737122" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:55.339423" elapsed="0.398296">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:58:57.741418" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:58:57.740644" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:58:57.743521" level="INFO">${member_ip} = 10.30.171.206</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-19T02:58:57.742888" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:57.745394" 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-19T02:58:57.745766" 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-19T02:58:57.745060" elapsed="0.000768"/>
</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-19T02:58:57.751483" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:58:57.750994" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:57.750705" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:57.753067" 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-19T02:58:57.753309" 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-19T02:58:57.752616" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:57.754910" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:57.754376" elapsed="0.000643"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:58:57.756737" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:58:57.756049" elapsed="0.000786"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:58:57.759164" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:58:57.759244" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:58:57.758796" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:57.759479" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:58:57.760769" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:58:58.084217" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:58:57.760438" elapsed="0.323921"/>
</kw>
<msg time="2026-04-19T02:58:58.084443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:57.760076" elapsed="0.324452"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:58:57.758021" elapsed="0.326802"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:58:58.086314" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:58:58.109148" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:58:58.109640" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:58:58.109968" 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-19T02:58:58.085908" elapsed="0.024312"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:58.112409" elapsed="0.000868"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:58.115524" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:58.114518" elapsed="0.001253"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:58.116662" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:58:58.116156" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:58.115993" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:58:58.117763" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T02:58:58.117312" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T02:58:58.117203" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:58:58.118329" 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-19T02:58:58.124602" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T02:58:58.125238" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:58.125600" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:58.120993" elapsed="0.004816"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:58:57.749384" elapsed="0.376669"/>
</kw>
<msg time="2026-04-19T02:58:58.126369" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:58:57.748687" elapsed="0.377739"/>
</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-19T02:58:57.747404" elapsed="0.379106"/>
</kw>
<msg time="2026-04-19T02:58:58.126552" 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-19T02:58:57.746226" elapsed="0.380373"/>
</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-19T02:58:58.129620" 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-19T02:58:58.130114" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:58:58.130428" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:58:58.126893" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T02:58:58.130670" level="INFO">${output} = 1</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-19T02:58:57.744112" elapsed="0.386584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:58:58.131213" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:58:58.130877" elapsed="0.000382"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:58:58.131303" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:58:58.131456" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:58:57.741941" elapsed="0.389540"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:58:58.131529" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:58:58.131700" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:58:57.739711" elapsed="0.392014"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:58:58.132293" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:58:58.131886" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:58:57.738576" elapsed="0.393901">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:00.136229" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:00.135372" elapsed="0.000930"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:00.138489" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:00.137813" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:00.140206" 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-19T02:59:00.140353" 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-19T02:59:00.139952" elapsed="0.000438"/>
</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-19T02:59:00.146277" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:00.145581" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:00.145155" elapsed="0.001416"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:00.148671" 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-19T02:59:00.149026" 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-19T02:59:00.148012" elapsed="0.001181"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:00.151496" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:00.150653" elapsed="0.000997"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:00.153409" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:00.152661" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:00.155880" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:00.155961" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:00.155577" 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-19T02:59:00.156222" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:00.157534" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:00.462498" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:58:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:00.157202" elapsed="0.305452"/>
</kw>
<msg time="2026-04-19T02:59:00.462746" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:00.156813" elapsed="0.306038"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:00.154782" elapsed="0.308396"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:00.464732" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:00.487823" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:00.488502" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:00.488853" 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-19T02:59:00.464332" elapsed="0.024781"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:00.491450" elapsed="0.000610"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:00.493641" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:00.492928" 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-19T02:59:00.494433" elapsed="0.000090"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:00.494023" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:00.493942" elapsed="0.000743"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:00.495211" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T02:59:00.494895" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:00.494826" elapsed="0.000680"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:00.495647" elapsed="0.000057"/>
</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-19T02:59:00.502907" elapsed="0.000506"/>
</kw>
<kw name="Open 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-19T02:59:00.503762" elapsed="0.000342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:00.504305" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:00.497667" elapsed="0.006852"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:00.143264" elapsed="0.361531"/>
</kw>
<msg time="2026-04-19T02:59:00.505339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:00.142222" elapsed="0.363180"/>
</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-19T02:59:00.141405" elapsed="0.364083"/>
</kw>
<msg time="2026-04-19T02:59:00.505529" 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-19T02:59:00.140629" elapsed="0.364947"/>
</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-19T02:59:00.508807" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T02:59:00.509321" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:00.509624" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:00.505918" elapsed="0.003908"/>
</kw>
<msg time="2026-04-19T02:59:00.509920" level="INFO">${output} = 1</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-19T02:59:00.139149" elapsed="0.370798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:00.510412" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:00.510156" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:00.510517" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:59:00.510674" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:00.136800" elapsed="0.373902"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:00.510785" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:59:00.510952" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:00.134448" elapsed="0.376530"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:00.511562" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:00.511159" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:00.133319" elapsed="0.378465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:02.515361" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:02.514593" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:02.517466" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:02.516833" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:02.519144" 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-19T02:59:02.519299" 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-19T02:59:02.518899" elapsed="0.000437"/>
</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-19T02:59:02.527466" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:02.526768" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:02.524156" elapsed="0.003509"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:02.529779" 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-19T02:59:02.530055" 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-19T02:59:02.529105" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:02.531756" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:02.531215" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:02.533637" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:02.532911" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:02.536154" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:02.536233" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:02.535833" 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-19T02:59:02.536471" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:02.537788" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:02.862629" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:02.537407" elapsed="0.325378"/>
</kw>
<msg time="2026-04-19T02:59:02.862873" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:02.537047" elapsed="0.325920"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:02.534965" elapsed="0.328313"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:02.864913" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:02.887912" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:02.888522" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:02.888858" 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-19T02:59:02.864517" elapsed="0.024593"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:02.891527" elapsed="0.001161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:02.895125" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:02.894058" elapsed="0.001310"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:02.896359" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:02.895727" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:02.895597" elapsed="0.001073"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:02.897663" elapsed="0.000106"/>
</return>
<status status="PASS" start="2026-04-19T02:59:02.897000" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:02.896890" elapsed="0.001027"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:02.898026" elapsed="0.000082"/>
</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-19T02:59:02.904644" elapsed="0.000551"/>
</kw>
<kw name="Open 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-19T02:59:02.905530" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:02.906162" 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-19T02:59:02.899865" elapsed="0.006607"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:02.522238" elapsed="0.384572"/>
</kw>
<msg time="2026-04-19T02:59:02.907167" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:02.521219" elapsed="0.386009"/>
</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-19T02:59:02.520326" elapsed="0.386987"/>
</kw>
<msg time="2026-04-19T02:59:02.907355" 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-19T02:59:02.519564" elapsed="0.387838"/>
</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-19T02:59:02.910562" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:59:02.911050" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:02.911374" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:02.907761" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T02:59:02.911615" level="INFO">${output} = 1</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-19T02:59:02.518084" elapsed="0.393556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:02.912087" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:02.911820" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:02.912175" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:02.912327" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:02.515889" elapsed="0.396463"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:02.912399" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:02.912546" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:02.513746" elapsed="0.398825"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:02.913165" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:02.912728" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:02.512665" elapsed="0.400693">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:04.917094" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:04.916279" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:04.919241" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:04.918591" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:04.921279" 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-19T02:59:04.921508" 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-19T02:59:04.920900" elapsed="0.000675"/>
</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-19T02:59:04.927830" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:04.927283" elapsed="0.000631"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:04.927226" elapsed="0.000747"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:04.929777" 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-19T02:59:04.930045" 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-19T02:59:04.929022" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:04.931686" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:04.931133" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:04.933531" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:04.932792" elapsed="0.000855"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:04.936016" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:04.936113" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:04.935726" 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-19T02:59:04.936348" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:04.937770" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:05.297435" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:04.937402" elapsed="0.360246"/>
</kw>
<msg time="2026-04-19T02:59:05.297808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:04.937013" elapsed="0.360942"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:04.934869" elapsed="0.363549"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:05.300877" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:05.323939" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:05.324505" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:05.324834" 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-19T02:59:05.300144" elapsed="0.024942"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:05.327266" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:05.330492" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:05.329482" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:05.331644" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:05.331121" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:05.330964" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:05.332795" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:59:05.332343" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:05.332225" elapsed="0.000802"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:05.333182" 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-19T02:59:05.337974" 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-19T02:59:05.338637" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:05.338997" 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-19T02:59:05.334514" elapsed="0.004711"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:04.925679" elapsed="0.413768"/>
</kw>
<msg time="2026-04-19T02:59:05.339755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:04.924749" elapsed="0.415064"/>
</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-19T02:59:04.923464" elapsed="0.416433"/>
</kw>
<msg time="2026-04-19T02:59:05.339939" 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-19T02:59:04.922087" elapsed="0.417899"/>
</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-19T02:59:05.343044" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T02:59:05.343527" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:05.343825" 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-19T02:59:05.340311" elapsed="0.003663"/>
</kw>
<msg time="2026-04-19T02:59:05.344147" level="INFO">${output} = 1</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-19T02:59:04.919880" elapsed="0.424293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:05.344630" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:05.344378" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:05.344717" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:05.344870" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:04.917631" elapsed="0.427265"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:05.344944" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:05.345202" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:04.915268" elapsed="0.429961"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:05.345797" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:05.345389" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:04.914214" elapsed="0.431769">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:07.349640" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:07.348810" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:07.351865" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:07.351159" elapsed="0.000752"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:07.353084" 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-19T02:59:07.353229" 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-19T02:59:07.352842" elapsed="0.000424"/>
</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-19T02:59:07.358918" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:07.358089" elapsed="0.000998"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:07.357963" elapsed="0.001229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:07.362238" 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-19T02:59:07.362672" 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-19T02:59:07.360943" elapsed="0.001923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:07.365314" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:07.364514" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:07.367261" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:07.366405" elapsed="0.000984"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:07.369825" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:07.369926" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:07.369507" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:07.370244" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:07.371612" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:07.710954" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:07.371272" elapsed="0.339964"/>
</kw>
<msg time="2026-04-19T02:59:07.711323" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:07.370832" elapsed="0.340580"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:07.368684" elapsed="0.343005"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:07.713198" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:07.736338" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:07.736942" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:07.737358" 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-19T02:59:07.712791" elapsed="0.024798"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:07.740304" elapsed="0.001137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:07.744115" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:07.742870" elapsed="0.001498"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:07.745273" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:07.744725" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:07.744600" elapsed="0.001045"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:07.746532" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T02:59:07.745992" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:07.745876" elapsed="0.001025"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:07.747375" elapsed="0.000091"/>
</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-19T02:59:07.752571" 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-19T02:59:07.753201" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:07.753583" 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-19T02:59:07.749060" elapsed="0.004745"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:07.355943" elapsed="0.398125"/>
</kw>
<msg time="2026-04-19T02:59:07.754398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:07.354972" elapsed="0.399495"/>
</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-19T02:59:07.354227" elapsed="0.400329"/>
</kw>
<msg time="2026-04-19T02:59:07.754598" 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-19T02:59:07.353488" elapsed="0.401158"/>
</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-19T02:59:07.757886" elapsed="0.000389"/>
</kw>
<kw name="Open 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-19T02:59:07.758463" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:07.758786" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:07.754961" elapsed="0.003982"/>
</kw>
<msg time="2026-04-19T02:59:07.759287" level="INFO">${output} = 1</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-19T02:59:07.352240" elapsed="0.407077"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:07.759800" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:07.759537" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:07.759897" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:59:07.760081" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:07.350209" elapsed="0.409900"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:07.760159" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:07.760309" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:07.347958" elapsed="0.412377"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:07.760997" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:07.760585" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:07.346884" elapsed="0.414322">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:09.764641" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:09.763880" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:09.766736" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:09.766139" elapsed="0.000657"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:09.768546" 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-19T02:59:09.768768" 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-19T02:59:09.768226" elapsed="0.000601"/>
</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-19T02:59:09.773851" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:09.773390" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:09.773331" elapsed="0.000659"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:09.775752" 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-19T02:59:09.776001" 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-19T02:59:09.775041" elapsed="0.001112"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:09.777698" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:09.777147" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:09.779575" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:09.778853" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:09.783520" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:09.783599" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:09.783226" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:09.783833" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:09.785121" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:10.095582" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:09.784770" elapsed="0.310948"/>
</kw>
<msg time="2026-04-19T02:59:10.095801" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:09.784410" elapsed="0.311477"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:09.780971" elapsed="0.315213"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:10.097786" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:10.120642" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:10.120872" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:10.121023" 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-19T02:59:10.097390" elapsed="0.023756"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:10.122179" elapsed="0.000412"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:10.123626" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:10.123186" elapsed="0.000545"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:10.124157" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:10.123898" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:10.123836" elapsed="0.000456"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:10.124642" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T02:59:10.124440" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:10.124391" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:10.124884" 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-19T02:59:10.129622" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T02:59:10.130193" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:10.130547" 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-19T02:59:10.126248" elapsed="0.004509"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:09.771986" elapsed="0.358992"/>
</kw>
<msg time="2026-04-19T02:59:10.131375" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:09.771301" elapsed="0.360132"/>
</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-19T02:59:09.770490" elapsed="0.361026"/>
</kw>
<msg time="2026-04-19T02:59:10.131556" 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-19T02:59:09.769202" elapsed="0.362400"/>
</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-19T02:59:10.134569" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T02:59:10.135157" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:10.135525" 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-19T02:59:10.131892" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T02:59:10.135761" level="INFO">${output} = 1</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-19T02:59:09.767299" elapsed="0.368487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:10.136229" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:10.135963" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:10.136315" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:59:10.136468" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:09.765187" elapsed="0.371306"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:10.136541" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:59:10.136688" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:09.763077" elapsed="0.373636"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:10.137279" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:10.136870" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:09.761972" elapsed="0.375487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:12.141091" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:12.140258" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:12.143564" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:12.142858" elapsed="0.000774"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:12.145628" 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-19T02:59:12.145873" 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-19T02:59:12.145230" elapsed="0.000703"/>
</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-19T02:59:12.154833" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:12.154182" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:12.153553" elapsed="0.001472"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:12.157424" 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-19T02:59:12.158223" 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-19T02:59:12.156431" elapsed="0.002025"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:12.162348" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:12.160904" elapsed="0.001687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:12.165206" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:12.163994" elapsed="0.001350"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:12.168615" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:12.168725" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:12.168201" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:12.169094" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:12.170893" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:12.489103" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:12.170432" elapsed="0.318761"/>
</kw>
<msg time="2026-04-19T02:59:12.489259" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:12.169903" elapsed="0.319439"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:12.167015" elapsed="0.322558"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:12.490921" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:12.513583" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:12.514140" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:12.514479" 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-19T02:59:12.490586" elapsed="0.024107"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:12.516960" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:12.520101" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:12.519159" elapsed="0.001180"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:12.521363" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:12.520691" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:12.520565" elapsed="0.001102"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:12.522478" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:59:12.521990" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:12.521882" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:12.523004" elapsed="0.000238"/>
</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-19T02:59:12.531318" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T02:59:12.531853" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:12.532218" 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-19T02:59:12.526118" elapsed="0.006306"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:12.150550" elapsed="0.382096"/>
</kw>
<msg time="2026-04-19T02:59:12.532969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:12.148833" elapsed="0.384209"/>
</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-19T02:59:12.147527" elapsed="0.385604"/>
</kw>
<msg time="2026-04-19T02:59:12.533173" 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-19T02:59:12.146341" elapsed="0.386880"/>
</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-19T02:59:12.536274" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:59:12.536758" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:12.537070" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:12.533512" elapsed="0.003706"/>
</kw>
<msg time="2026-04-19T02:59:12.537312" level="INFO">${output} = 1</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-19T02:59:12.144239" elapsed="0.393099"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:12.537763" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:12.537516" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:12.537849" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:12.538002" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:12.141828" elapsed="0.396212"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:12.538091" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:12.538237" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:12.139410" elapsed="0.398852"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:12.538812" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:12.538418" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:12.138327" elapsed="0.400673">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:14.542661" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:14.541863" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:14.544778" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:14.544174" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:14.546668" 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-19T02:59:14.547114" 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-19T02:59:14.546324" elapsed="0.000872"/>
</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-19T02:59:14.553873" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:14.553185" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:14.552748" elapsed="0.001351"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:14.556228" 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-19T02:59:14.556580" 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-19T02:59:14.555532" elapsed="0.001193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:14.558962" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:14.558166" elapsed="0.000981"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:14.561731" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:14.560695" elapsed="0.001180"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:14.565316" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:14.565397" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:14.564963" elapsed="0.000458"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:14.565636" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:14.567048" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:14.881981" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:14.566609" elapsed="0.315616"/>
</kw>
<msg time="2026-04-19T02:59:14.882342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:14.566239" elapsed="0.316225"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:14.563941" elapsed="0.318904"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:14.884897" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:14.907897" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:14.908443" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:14.908692" 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-19T02:59:14.884354" elapsed="0.024490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:14.910495" elapsed="0.000768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:14.912924" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:14.912202" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:14.913747" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:14.913362" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:14.913267" elapsed="0.000691"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:14.914552" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T02:59:14.914245" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:14.914170" elapsed="0.000636"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:14.914925" elapsed="0.000057"/>
</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-19T02:59:14.920441" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T02:59:14.921119" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:14.921497" 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-19T02:59:14.916767" elapsed="0.004962"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:14.550792" elapsed="0.371170"/>
</kw>
<msg time="2026-04-19T02:59:14.922392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:14.549792" elapsed="0.372667"/>
</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-19T02:59:14.548914" elapsed="0.373632"/>
</kw>
<msg time="2026-04-19T02:59:14.922589" 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-19T02:59:14.547585" elapsed="0.375052"/>
</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-19T02:59:14.925775" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:14.926306" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:14.926606" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:14.922956" elapsed="0.003801"/>
</kw>
<msg time="2026-04-19T02:59:14.926852" level="INFO">${output} = 1</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-19T02:59:14.545347" elapsed="0.381531"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:14.927353" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:14.927099" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:14.927441" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:59:14.927623" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:14.543219" elapsed="0.384433"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:14.927700" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:59:14.927850" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:14.541017" elapsed="0.386858"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:14.928584" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:14.928084" elapsed="0.000581">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:14.539919" elapsed="0.388862">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:16.932377" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:16.931613" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:16.934478" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:16.933844" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:16.936354" 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-19T02:59:16.936579" 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-19T02:59:16.935992" elapsed="0.000646"/>
</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-19T02:59:16.949154" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:16.948638" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:16.944851" elapsed="0.004539"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:16.950931" 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-19T02:59:16.951201" 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-19T02:59:16.950425" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:16.952818" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:16.952262" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:16.954635" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:16.953905" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:16.956974" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:16.957067" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:16.956690" 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-19T02:59:16.957307" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:16.958641" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:17.274120" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:16.958309" elapsed="0.315989"/>
</kw>
<msg time="2026-04-19T02:59:17.274392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:16.957868" elapsed="0.316648"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:16.955922" elapsed="0.318899"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:17.276481" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:17.299513" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:17.300170" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:17.300645" 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-19T02:59:17.276008" elapsed="0.024919"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:17.303425" elapsed="0.000991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:17.306726" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:17.305705" elapsed="0.001249"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:17.307858" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:17.307347" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:17.307217" elapsed="0.000977"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:17.308983" elapsed="0.000270"/>
</return>
<status status="PASS" start="2026-04-19T02:59:17.308537" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:17.308429" elapsed="0.001074"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:17.309679" 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-19T02:59:17.315486" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T02:59:17.316065" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:17.316441" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:17.311884" elapsed="0.004769"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:16.941756" elapsed="0.375124"/>
</kw>
<msg time="2026-04-19T02:59:17.317409" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:16.940140" elapsed="0.377336"/>
</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-19T02:59:16.938720" elapsed="0.378842"/>
</kw>
<msg time="2026-04-19T02:59:17.317604" 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-19T02:59:16.936989" elapsed="0.380662"/>
</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-19T02:59:17.320728" 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-19T02:59:17.321224" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:17.321519" 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-19T02:59:17.317946" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T02:59:17.321758" level="INFO">${output} = 1</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-19T02:59:16.935073" elapsed="0.386711"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:17.322235" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:17.321965" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:17.322322" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:17.322503" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:16.932898" elapsed="0.389632"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:17.322579" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:59:17.322732" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:16.930738" elapsed="0.392019"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:17.323403" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:17.322916" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:16.929660" elapsed="0.393941">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:19.327474" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:19.326612" elapsed="0.000935"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:19.329748" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:19.329008" elapsed="0.000800"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:19.331766" 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-19T02:59:19.332001" 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-19T02:59:19.331399" elapsed="0.000694"/>
</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-19T02:59:19.340501" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:19.339820" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:19.339738" elapsed="0.000979"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:19.343115" 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-19T02:59:19.343374" 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-19T02:59:19.342264" elapsed="0.001217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:19.345136" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:19.344513" elapsed="0.000736"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:19.347173" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:19.346414" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:19.349645" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:19.349740" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:19.349331" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:19.349995" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:19.351433" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:19.674022" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:19.351096" elapsed="0.323113"/>
</kw>
<msg time="2026-04-19T02:59:19.674297" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:19.350702" elapsed="0.323691"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:19.348497" elapsed="0.326192"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:19.676298" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:19.699213" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:19.699878" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:19.700308" 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-19T02:59:19.675817" elapsed="0.024787"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:19.703362" elapsed="0.001117"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:19.707377" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:19.706169" elapsed="0.001518"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:19.708795" elapsed="0.000083"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:19.708179" elapsed="0.001004"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:19.707996" elapsed="0.001409"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:19.710345" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T02:59:19.709829" elapsed="0.000623"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:19.709674" elapsed="0.000838"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:19.710592" 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-19T02:59:19.715765" elapsed="0.000398"/>
</kw>
<kw name="Open 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-19T02:59:19.716388" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:19.716761" elapsed="0.000126"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:19.712046" elapsed="0.004960"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:19.336890" elapsed="0.380447"/>
</kw>
<msg time="2026-04-19T02:59:19.717660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:19.335203" elapsed="0.382518"/>
</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-19T02:59:19.333826" elapsed="0.383999"/>
</kw>
<msg time="2026-04-19T02:59:19.717875" 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-19T02:59:19.332500" elapsed="0.385427"/>
</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-19T02:59:19.721230" 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-19T02:59:19.721771" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:19.722120" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:19.718334" elapsed="0.003968"/>
</kw>
<msg time="2026-04-19T02:59:19.722396" level="INFO">${output} = 1</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-19T02:59:19.330378" elapsed="0.392043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:19.722864" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:19.722604" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:19.722975" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:59:19.723153" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:19.328021" elapsed="0.395167"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:19.723253" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:19.723408" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:19.325703" elapsed="0.397731"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:19.724013" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:19.723593" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:19.324511" elapsed="0.399735">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:21.727736" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:21.726973" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:21.729889" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:21.729282" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:21.731777" 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-19T02:59:21.732019" 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-19T02:59:21.731433" elapsed="0.000684"/>
</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-19T02:59:21.738872" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:21.738398" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:21.738339" elapsed="0.000674"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:21.740744" 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-19T02:59:21.740991" 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-19T02:59:21.740012" elapsed="0.001105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:21.742648" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:21.742102" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:21.744510" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:21.743762" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:21.747127" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:21.747206" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:21.746829" 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-19T02:59:21.747440" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:21.748819" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:22.083012" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:21.748492" elapsed="0.334693"/>
</kw>
<msg time="2026-04-19T02:59:22.083274" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:21.748089" elapsed="0.335280"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:21.745876" elapsed="0.337785"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:22.085190" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:22.108295" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:22.108799" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:22.109185" 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-19T02:59:22.084776" elapsed="0.024624"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:22.111653" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:22.114853" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:22.113837" elapsed="0.001379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:22.116115" elapsed="0.000110"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:22.115574" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:22.115447" elapsed="0.001001"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:22.116798" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T02:59:22.116598" elapsed="0.000300"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:22.116548" elapsed="0.000407"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:22.117050" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:22.121854" 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-19T02:59:22.122429" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:22.122793" 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-19T02:59:22.118379" 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-19T02:59:21.736541" elapsed="0.386801"/>
</kw>
<msg time="2026-04-19T02:59:22.123640" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:21.734930" elapsed="0.388767"/>
</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-19T02:59:21.733684" elapsed="0.390096"/>
</kw>
<msg time="2026-04-19T02:59:22.123821" 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-19T02:59:21.732505" elapsed="0.391363"/>
</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-19T02:59:22.126890" 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-19T02:59:22.127434" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:22.127730" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:22.124192" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T02:59:22.128047" level="INFO">${output} = 1</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-19T02:59:21.730472" elapsed="0.397604"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:22.128534" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:22.128276" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:22.128622" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:22.128781" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:21.728299" elapsed="0.400508"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:22.128855" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:22.129003" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:21.726155" elapsed="0.402887"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:22.129598" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:22.129204" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:21.725116" elapsed="0.404669">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:24.133241" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:24.132493" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:24.135366" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:24.134697" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:24.136604" 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-19T02:59:24.136754" 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-19T02:59:24.136375" elapsed="0.000419"/>
</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-19T02:59:24.142524" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:24.141832" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:24.141752" elapsed="0.000977"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:24.145339" 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-19T02:59:24.145680" 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-19T02:59:24.144308" elapsed="0.001512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:24.148270" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:24.147522" elapsed="0.000891"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:24.150617" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:24.149676" elapsed="0.001042"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:24.153204" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:24.153286" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:24.152891" 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-19T02:59:24.153536" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:24.155057" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:24.473940" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:24.154673" elapsed="0.319514"/>
</kw>
<msg time="2026-04-19T02:59:24.474271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:24.154227" elapsed="0.320128"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:24.151966" elapsed="0.322661"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:24.476145" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:24.498666" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:24.499247" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:24.499588" 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-19T02:59:24.475736" elapsed="0.024064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:24.502057" elapsed="0.000863"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:24.505210" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:24.504234" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:24.506326" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:24.505788" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:24.505666" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:24.507456" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T02:59:24.506938" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:24.506830" elapsed="0.000848"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:24.507788" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:24.514598" 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-19T02:59:24.515399" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:24.515899" elapsed="0.000238"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:24.509747" elapsed="0.006543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:24.139652" elapsed="0.376952"/>
</kw>
<msg time="2026-04-19T02:59:24.517052" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:24.138639" elapsed="0.378495"/>
</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-19T02:59:24.137830" elapsed="0.379418"/>
</kw>
<msg time="2026-04-19T02:59:24.517305" 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-19T02:59:24.137048" elapsed="0.380322"/>
</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-19T02:59:24.521100" 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-19T02:59:24.521577" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:24.521874" 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-19T02:59:24.517835" elapsed="0.004186"/>
</kw>
<msg time="2026-04-19T02:59:24.522128" level="INFO">${output} = 1</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-19T02:59:24.135738" elapsed="0.386415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:24.522586" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:24.522333" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:24.522674" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:24.522825" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:24.133757" elapsed="0.389093"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:24.522896" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:24.523077" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:24.131658" elapsed="0.391445"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:24.523704" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:24.523309" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:24.130595" elapsed="0.393293">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:26.527358" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:26.526591" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:26.529475" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:26.528836" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:26.531347" 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-19T02:59:26.531575" 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-19T02:59:26.530989" elapsed="0.000645"/>
</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-19T02:59:26.537397" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:26.536881" elapsed="0.000600"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:26.536580" elapsed="0.000962"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:26.538980" 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-19T02:59:26.539258" 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-19T02:59:26.538535" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:26.540890" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:26.540338" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:26.542711" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:26.541975" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:26.545360" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:26.545440" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:26.544911" 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-19T02:59:26.545680" elapsed="0.000734"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:26.547359" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:26.866759" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:26.547011" elapsed="0.319990"/>
</kw>
<msg time="2026-04-19T02:59:26.867183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:26.546641" elapsed="0.320698"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:26.544111" elapsed="0.323762"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:26.871024" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:26.894347" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:26.894853" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:26.895228" 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-19T02:59:26.870276" elapsed="0.025164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:26.897647" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:26.900806" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:26.899810" elapsed="0.001254"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:26.901955" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:26.901413" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:26.901292" elapsed="0.000991"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:26.902849" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:59:26.902567" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:26.902494" elapsed="0.000613"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:26.903224" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:26.910060" 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-19T02:59:26.910819" elapsed="0.000245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:26.911335" 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-19T02:59:26.905198" 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-19T02:59:26.535204" elapsed="0.376734"/>
</kw>
<msg time="2026-04-19T02:59:26.912490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:26.534458" elapsed="0.378115"/>
</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-19T02:59:26.533185" elapsed="0.379504"/>
</kw>
<msg time="2026-04-19T02:59:26.912745" 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-19T02:59:26.531987" elapsed="0.380823"/>
</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-19T02:59:26.916449" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:26.916922" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:26.917233" 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-19T02:59:26.913236" elapsed="0.004144"/>
</kw>
<msg time="2026-04-19T02:59:26.917469" level="INFO">${output} = 1</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-19T02:59:26.530019" elapsed="0.387475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:26.917927" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:26.917669" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:26.918014" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T02:59:26.918188" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:26.527882" elapsed="0.390331"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:26.918259" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:26.918404" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:26.525718" elapsed="0.392711"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:26.918977" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:26.918588" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:26.524677" elapsed="0.394500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:28.922663" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:28.921896" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:28.924966" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:28.924314" elapsed="0.000742"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:28.926381" 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-19T02:59:28.926523" 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-19T02:59:28.926158" elapsed="0.000403"/>
</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-19T02:59:28.932335" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:28.931514" elapsed="0.000933"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:28.931137" elapsed="0.001393"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:28.934574" 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-19T02:59:28.934908" 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-19T02:59:28.933933" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:28.937221" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:28.936423" elapsed="0.000956"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:28.939165" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:28.938456" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:28.941530" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:28.941607" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:28.941247" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:28.941842" elapsed="0.000501"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:28.943268" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:29.256362" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:28.942926" elapsed="0.313578"/>
</kw>
<msg time="2026-04-19T02:59:29.256585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:28.942565" elapsed="0.314111"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:28.940451" elapsed="0.316523"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:29.258473" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:29.281311" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:29.281817" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:29.282202" 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-19T02:59:29.258083" elapsed="0.024338"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:29.284642" elapsed="0.000999"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:29.287074" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:29.286440" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:29.287850" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:29.287441" elapsed="0.000525"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:29.287364" elapsed="0.000705"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:29.288556" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T02:59:29.288274" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:29.288207" elapsed="0.000625"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:29.288945" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:29.295511" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T02:59:29.296296" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:29.296835" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:29.290776" elapsed="0.006375"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:28.929273" elapsed="0.368192"/>
</kw>
<msg time="2026-04-19T02:59:29.297813" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:28.928291" elapsed="0.369580"/>
</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-19T02:59:28.927523" elapsed="0.370431"/>
</kw>
<msg time="2026-04-19T02:59:29.297995" 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-19T02:59:28.926784" elapsed="0.371272"/>
</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-19T02:59:29.301228" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T02:59:29.301702" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:29.301996" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:29.298358" elapsed="0.003813"/>
</kw>
<msg time="2026-04-19T02:59:29.302263" level="INFO">${output} = 1</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-19T02:59:28.925547" elapsed="0.376743"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:29.302717" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:29.302468" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:29.302805" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:29.302957" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:28.923366" elapsed="0.379617"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:29.303062" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:59:29.303213" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:28.921022" elapsed="0.382216"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:29.303787" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:29.303395" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:28.919940" elapsed="0.384028">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:31.307483" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:31.306704" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:31.309630" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:31.308991" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:31.311471" 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-19T02:59:31.311922" 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-19T02:59:31.311130" elapsed="0.000858"/>
</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-19T02:59:31.320309" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:31.319594" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:31.316860" elapsed="0.003645"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:31.322525" 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-19T02:59:31.322862" 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-19T02:59:31.321892" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:31.325107" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:31.324515" elapsed="0.000702"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:31.326932" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:31.326235" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:31.329392" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:31.329471" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:31.329109" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:31.329709" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:31.330981" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:31.649325" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:31.330660" elapsed="0.318820"/>
</kw>
<msg time="2026-04-19T02:59:31.649575" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:31.330283" elapsed="0.319392"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:31.328325" elapsed="0.321652"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:31.651519" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:31.674107" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:31.674646" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:31.674977" 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-19T02:59:31.651114" elapsed="0.024116"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:31.677751" elapsed="0.001319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:31.681643" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:31.680583" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:31.682802" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:31.682276" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:31.682145" elapsed="0.001094"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:31.684128" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T02:59:31.683570" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:31.683463" elapsed="0.001042"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:31.684680" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:31.691569" elapsed="0.000553"/>
</kw>
<kw name="Open 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-19T02:59:31.692541" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:31.693068" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:31.686592" elapsed="0.006775"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:31.314930" elapsed="0.378750"/>
</kw>
<msg time="2026-04-19T02:59:31.694127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:31.313977" elapsed="0.380236"/>
</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-19T02:59:31.313234" elapsed="0.381097"/>
</kw>
<msg time="2026-04-19T02:59:31.694389" 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-19T02:59:31.312391" elapsed="0.382064"/>
</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-19T02:59:31.698272" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:31.698760" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:31.699094" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:31.694872" elapsed="0.004375"/>
</kw>
<msg time="2026-04-19T02:59:31.699340" level="INFO">${output} = 1</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-19T02:59:31.310196" elapsed="0.389169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:31.699831" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:31.699556" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:31.699921" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:59:31.700096" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:31.308069" elapsed="0.392054"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:31.700171" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T02:59:31.700320" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:31.305857" elapsed="0.394489"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:31.700917" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:31.700506" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:31.304772" elapsed="0.396356">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:33.705214" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:33.704371" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:33.707551" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:33.706861" elapsed="0.000750"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:33.709244" 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-19T02:59:33.709442" 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-19T02:59:33.708892" elapsed="0.000602"/>
</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-19T02:59:33.715201" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:33.714524" elapsed="0.000886"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:33.714443" elapsed="0.001053"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:33.717861" 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-19T02:59:33.718231" 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-19T02:59:33.716888" elapsed="0.001487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:33.720438" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:33.719842" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:33.722291" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:33.721579" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:33.724699" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:33.724777" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:33.724392" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:33.725017" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:33.726450" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:34.034947" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:33.726121" elapsed="0.308985"/>
</kw>
<msg time="2026-04-19T02:59:34.035189" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:33.725740" elapsed="0.309535"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:33.723611" elapsed="0.311941"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:34.037021" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:34.059771" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:34.060309" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:34.060645" 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-19T02:59:34.036636" elapsed="0.024221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:34.063165" elapsed="0.000853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:34.066283" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:34.065315" elapsed="0.001226"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:34.067426" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:34.066895" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:34.066769" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:34.068543" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T02:59:34.068083" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:34.067944" elapsed="0.000954"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:34.069168" elapsed="0.000087"/>
</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-19T02:59:34.076991" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T02:59:34.077613" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:34.077974" 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-19T02:59:34.072224" elapsed="0.005974"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:33.712439" elapsed="0.365986"/>
</kw>
<msg time="2026-04-19T02:59:34.078850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:33.711280" elapsed="0.367632"/>
</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-19T02:59:33.710480" elapsed="0.368518"/>
</kw>
<msg time="2026-04-19T02:59:34.079055" 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-19T02:59:33.709733" elapsed="0.369371"/>
</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-19T02:59:34.082160" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:59:34.082656" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:34.082954" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:34.079402" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T02:59:34.083226" level="INFO">${output} = 1</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-19T02:59:33.708113" elapsed="0.375138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:34.083677" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:34.083430" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:34.083772" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:34.083925" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:33.705756" elapsed="0.378196"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:34.084000" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:34.084165" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:33.703424" elapsed="0.380767"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:34.084737" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:34.084348" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:33.702025" elapsed="0.382894">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:36.088621" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:36.087851" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:36.090758" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:36.090148" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:36.092758" 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-19T02:59:36.092988" 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-19T02:59:36.092430" elapsed="0.000647"/>
</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-19T02:59:36.098759" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:36.098121" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:36.098023" elapsed="0.000938"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:36.101335" 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-19T02:59:36.101723" 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-19T02:59:36.100355" elapsed="0.001493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:36.103397" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:36.102837" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:36.105322" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:36.104614" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:36.107695" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:36.107774" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:36.107414" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:36.108011" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:36.109488" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:36.418548" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:36.109150" elapsed="0.309559"/>
</kw>
<msg time="2026-04-19T02:59:36.418793" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:36.108757" elapsed="0.310126"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:36.106642" elapsed="0.312564"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:36.420705" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:36.443711" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:36.444294" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:36.444627" 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-19T02:59:36.420316" elapsed="0.024525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:36.447203" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:36.450480" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:36.449459" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:36.451581" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:36.451082" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:36.450931" elapsed="0.000934"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:36.452715" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T02:59:36.452222" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:36.452113" elapsed="0.001021"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:36.453359" elapsed="0.000086"/>
</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-19T02:59:36.458564" 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-19T02:59:36.459162" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:36.459528" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:36.455018" elapsed="0.004721"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:36.096170" elapsed="0.363789"/>
</kw>
<msg time="2026-04-19T02:59:36.460281" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:36.095194" elapsed="0.365152"/>
</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-19T02:59:36.094421" elapsed="0.366009"/>
</kw>
<msg time="2026-04-19T02:59:36.460472" 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-19T02:59:36.093460" elapsed="0.367058"/>
</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-19T02:59:36.463726" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:59:36.464224" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:36.464522" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:36.460893" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T02:59:36.464766" level="INFO">${output} = 1</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-19T02:59:36.091340" elapsed="0.373451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:36.465283" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:36.465000" elapsed="0.000356"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:36.465403" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T02:59:36.465564" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:36.089175" elapsed="0.376415"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:36.465637" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:59:36.465784" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:36.086817" elapsed="0.378992"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:36.466517" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:36.465969" elapsed="0.000622">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:36.085756" elapsed="0.380946">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:38.470277" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:38.469508" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:38.472433" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:38.471755" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:38.473781" 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-19T02:59:38.473923" 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-19T02:59:38.473553" elapsed="0.000406"/>
</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-19T02:59:38.479374" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:38.478707" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:38.478628" elapsed="0.000939"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:38.481952" 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-19T02:59:38.482321" 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-19T02:59:38.480983" elapsed="0.001479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:38.484701" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:38.483892" elapsed="0.000963"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:38.486595" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:38.485877" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:38.489058" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:38.489139" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:38.488755" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:38.489377" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:38.490719" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:38.804834" 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 Sun Apr 19 02:58:38 UTC 2026

  System load:  0.13               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:38.490389" elapsed="0.314614"/>
</kw>
<msg time="2026-04-19T02:59:38.805116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:38.490008" elapsed="0.315207"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:38.487953" elapsed="0.317547"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:38.807002" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:38.830252" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:38.830751" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:38.831133" 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-19T02:59:38.806589" elapsed="0.024762"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:38.833606" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:38.836844" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:38.835775" elapsed="0.001341"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:38.837993" elapsed="0.000094"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:38.837488" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:38.837361" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:38.839127" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T02:59:38.838643" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:38.838534" elapsed="0.000952"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:38.839668" elapsed="0.000084"/>
</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-19T02:59:38.845289" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:59:38.845833" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:38.846212" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:38.841789" elapsed="0.004633"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:38.476766" elapsed="0.369877"/>
</kw>
<msg time="2026-04-19T02:59:38.846967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:38.475777" elapsed="0.371275"/>
</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-19T02:59:38.474919" elapsed="0.372219"/>
</kw>
<msg time="2026-04-19T02:59:38.847179" 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-19T02:59:38.474200" elapsed="0.373026"/>
</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-19T02:59:38.850262" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:59:38.850734" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:38.851048" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:38.847517" elapsed="0.003682"/>
</kw>
<msg time="2026-04-19T02:59:38.851368" level="INFO">${output} = 1</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-19T02:59:38.472948" elapsed="0.378446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:38.851819" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:38.851572" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:38.851906" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:38.852180" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:38.470803" elapsed="0.381405"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:38.852257" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:59:38.852407" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:38.468663" elapsed="0.383769"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:38.852983" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:38.852590" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:38.467562" elapsed="0.385634">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:40.856777" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:40.855977" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:40.859007" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:40.858267" elapsed="0.000830"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:40.860996" 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-19T02:59:40.861264" 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-19T02:59:40.860646" elapsed="0.000678"/>
</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-19T02:59:40.869725" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:40.868880" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:40.868486" elapsed="0.001447"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:40.872148" 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-19T02:59:40.872396" 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-19T02:59:40.871558" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:40.874062" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:40.873479" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:40.875954" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:40.875239" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:40.878393" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:40.878473" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:40.878101" 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-19T02:59:40.878719" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:40.880117" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:41.453358" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:40.879739" elapsed="0.573877"/>
</kw>
<msg time="2026-04-19T02:59:41.453703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:40.879362" elapsed="0.574434"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:40.877298" elapsed="0.576798"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:41.455600" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:41.478649" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:41.479324" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:41.479668" 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-19T02:59:41.455214" elapsed="0.024668"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:41.482245" elapsed="0.001010"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:41.485513" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:41.484535" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:41.486643" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:41.486131" elapsed="0.000684"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:41.485972" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:41.487872" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T02:59:41.487359" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:41.487248" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:41.488291" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:41.495063" elapsed="0.000525"/>
</kw>
<kw name="Open 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-19T02:59:41.495911" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:41.496484" 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-19T02:59:41.490237" elapsed="0.006552"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:40.865710" elapsed="0.631531"/>
</kw>
<msg time="2026-04-19T02:59:41.497672" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:40.864217" elapsed="0.633540"/>
</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-19T02:59:40.862864" elapsed="0.635009"/>
</kw>
<msg time="2026-04-19T02:59:41.497930" 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-19T02:59:40.861682" elapsed="0.636312"/>
</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-19T02:59:41.501569" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T02:59:41.502064" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:41.502362" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:41.498425" elapsed="0.004082"/>
</kw>
<msg time="2026-04-19T02:59:41.502600" level="INFO">${output} = 1</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-19T02:59:40.859614" elapsed="0.643011"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:41.503089" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:41.502808" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:41.503178" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:59:41.503334" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:40.857329" elapsed="0.646030"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:41.503406" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:59:41.503551" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:40.855105" elapsed="0.648471"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:41.504213" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:41.503788" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:40.853997" elapsed="0.650413">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:43.508113" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:43.507565" elapsed="0.000597"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:43.509470" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:43.509076" elapsed="0.000433"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:43.510656" 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-19T02:59:43.510806" 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-19T02:59:43.510432" elapsed="0.000413"/>
</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-19T02:59:43.516664" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:43.515977" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:43.515590" elapsed="0.001269"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:43.518941" 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-19T02:59:43.519246" 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-19T02:59:43.518327" elapsed="0.001015"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:43.520868" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:43.520315" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:43.522679" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:43.521961" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:43.525082" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:43.525160" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:43.524779" 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-19T02:59:43.525393" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:43.526727" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:43.838198" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:43.526399" elapsed="0.311942"/>
</kw>
<msg time="2026-04-19T02:59:43.838423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:43.525999" elapsed="0.312509"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:43.524011" elapsed="0.314789"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:43.840296" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:43.863175" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:43.863674" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:43.864008" 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-19T02:59:43.839894" elapsed="0.024391"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:43.866614" elapsed="0.000926"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:43.869928" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:43.868831" elapsed="0.001384"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:43.871139" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:43.870594" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:43.870468" elapsed="0.001040"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:43.872463" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T02:59:43.871899" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:43.871783" elapsed="0.001058"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:43.873017" elapsed="0.000255"/>
</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-19T02:59:43.878454" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:43.879005" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:43.879385" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:43.875021" elapsed="0.004587"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:43.513641" elapsed="0.366191"/>
</kw>
<msg time="2026-04-19T02:59:43.880163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:43.512606" elapsed="0.367615"/>
</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-19T02:59:43.511825" elapsed="0.368478"/>
</kw>
<msg time="2026-04-19T02:59:43.880344" 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-19T02:59:43.511090" elapsed="0.369300"/>
</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-19T02:59:43.883549" 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-19T02:59:43.884056" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:43.884356" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:43.880692" elapsed="0.003814"/>
</kw>
<msg time="2026-04-19T02:59:43.884607" level="INFO">${output} = 1</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-19T02:59:43.509809" elapsed="0.374825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:43.885170" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:43.884813" elapsed="0.000404"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:43.885262" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:59:43.885421" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:43.508456" elapsed="0.376991"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:43.885495" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:43.885653" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:43.506663" elapsed="0.379016"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:43.886285" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:43.885867" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:43.505327" elapsed="0.381144">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:45.889952" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:45.889186" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:45.891902" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:45.891520" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:45.893110" 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-19T02:59:45.893262" 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-19T02:59:45.892860" elapsed="0.000442"/>
</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-19T02:59:45.901730" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:45.901198" elapsed="0.000617"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:45.898465" elapsed="0.003411"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:45.903398" 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-19T02:59:45.903649" 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-19T02:59:45.902917" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:45.905346" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:45.904760" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:45.907279" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:45.906542" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:45.909742" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:45.909820" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:45.909451" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:45.910163" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:45.911452" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:46.264690" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:45.911120" elapsed="0.353731"/>
</kw>
<msg time="2026-04-19T02:59:46.264948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:45.910739" elapsed="0.354339"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:45.908636" elapsed="0.356747"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:46.266902" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:46.289844" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:46.290407" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:46.290744" 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-19T02:59:46.266507" elapsed="0.024451"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:46.293240" elapsed="0.000935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:46.296449" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:46.295467" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:46.297631" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:46.297122" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:46.296958" elapsed="0.000862"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:46.298355" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T02:59:46.298056" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:46.297966" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:46.298692" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:46.305410" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T02:59:46.306193" elapsed="0.000377"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:46.306844" elapsed="0.000164"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:46.300635" elapsed="0.006675"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:45.896512" elapsed="0.411232"/>
</kw>
<msg time="2026-04-19T02:59:46.308200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:45.895570" elapsed="0.412710"/>
</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-19T02:59:45.894660" elapsed="0.413734"/>
</kw>
<msg time="2026-04-19T02:59:46.308450" 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-19T02:59:45.893720" elapsed="0.414793"/>
</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-19T02:59:46.311885" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T02:59:46.312379" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:46.312688" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:46.308951" elapsed="0.003886"/>
</kw>
<msg time="2026-04-19T02:59:46.312928" level="INFO">${output} = 1</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-19T02:59:45.892268" elapsed="0.420685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:46.313431" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:46.313151" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:46.313519" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T02:59:46.313670" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:45.890781" elapsed="0.422914"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:46.313742" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:46.313885" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:45.888306" elapsed="0.425603"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:46.314483" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:46.314083" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:45.887265" elapsed="0.427400">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:48.318079" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:48.317312" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:48.320232" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:48.319610" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:48.321396" 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-19T02:59:48.321649" 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-19T02:59:48.321176" elapsed="0.000513"/>
</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-19T02:59:48.327015" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:48.326379" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:48.326302" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:48.329227" 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-19T02:59:48.329478" 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-19T02:59:48.328522" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:48.331146" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:48.330582" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:48.332990" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:48.332288" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:48.335539" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:48.335618" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:48.335223" 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-19T02:59:48.335854" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:48.337140" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:48.681347" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:48.336785" elapsed="0.344694"/>
</kw>
<msg time="2026-04-19T02:59:48.681559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:48.336425" elapsed="0.345219"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:48.334463" elapsed="0.347463"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:48.683463" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:48.705930" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:48.706475" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:48.706808" 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-19T02:59:48.683003" elapsed="0.024017"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:48.709308" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:48.712487" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:48.711475" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:48.713596" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:48.713099" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:48.712941" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:48.714823" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:59:48.714361" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:48.714246" elapsed="0.000975"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:48.715398" elapsed="0.000134"/>
</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-19T02:59:48.720669" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T02:59:48.721292" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:48.721652" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:48.717284" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:48.324415" elapsed="0.397688"/>
</kw>
<msg time="2026-04-19T02:59:48.722415" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:48.323454" elapsed="0.399019"/>
</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-19T02:59:48.322668" elapsed="0.399888"/>
</kw>
<msg time="2026-04-19T02:59:48.722597" 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-19T02:59:48.321916" elapsed="0.400728"/>
</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-19T02:59:48.725676" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T02:59:48.726170" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:48.726576" elapsed="0.000124"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:48.722937" elapsed="0.003819"/>
</kw>
<msg time="2026-04-19T02:59:48.726852" level="INFO">${output} = 1</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-19T02:59:48.320575" elapsed="0.406303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:48.727446" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:48.727187" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:48.727537" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T02:59:48.727713" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:48.318605" elapsed="0.409133"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:48.727785" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:48.727932" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:48.316469" elapsed="0.411488"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:48.728525" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:48.728131" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:48.315439" elapsed="0.413271">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:50.732663" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:50.731873" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:50.734838" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:50.734232" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:50.736725" 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-19T02:59:50.736958" 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-19T02:59:50.736378" elapsed="0.000640"/>
</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-19T02:59:50.741798" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:50.741331" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:50.741270" elapsed="0.000782"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:50.743793" 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-19T02:59:50.744055" 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-19T02:59:50.743088" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:50.745679" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:50.745143" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:50.747588" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:50.746791" elapsed="0.000897"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:50.750077" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:50.750158" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:50.749740" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:50.750400" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:50.751674" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:51.061711" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:50.751349" elapsed="0.310514"/>
</kw>
<msg time="2026-04-19T02:59:51.061948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:50.750964" elapsed="0.311095"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:50.748959" elapsed="0.313397"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:51.063881" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:51.086769" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:51.087338" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:51.087674" 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-19T02:59:51.063481" elapsed="0.024408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:51.090207" elapsed="0.000962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:51.093583" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:51.092536" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:51.094863" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:51.094353" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:51.094200" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:51.096250" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T02:59:51.095759" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:51.095468" elapsed="0.001364"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:51.097014" elapsed="0.000141"/>
</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-19T02:59:51.102104" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T02:59:51.102666" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:51.103049" 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-19T02:59:51.098600" elapsed="0.004666"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:50.739767" elapsed="0.363724"/>
</kw>
<msg time="2026-04-19T02:59:51.103866" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:50.739078" elapsed="0.364848"/>
</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-19T02:59:50.738525" elapsed="0.365492"/>
</kw>
<msg time="2026-04-19T02:59:51.104084" 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-19T02:59:50.737416" elapsed="0.366717"/>
</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-19T02:59:51.107156" 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-19T02:59:51.107655" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:51.107952" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:51.104429" elapsed="0.003692"/>
</kw>
<msg time="2026-04-19T02:59:51.108213" level="INFO">${output} = 1</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-19T02:59:50.735418" elapsed="0.372820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:51.108664" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:51.108415" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:51.108775" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:59:51.108931" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:50.733231" elapsed="0.375726"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:51.109004" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:51.109183" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:50.731019" elapsed="0.378190"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:51.109776" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:51.109365" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:50.729883" elapsed="0.380108">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:53.113660" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:53.112869" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:53.115811" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:53.115201" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:53.117676" 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-19T02:59:53.117955" 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-19T02:59:53.117343" elapsed="0.000672"/>
</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-19T02:59:53.122067" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:53.121566" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:53.121510" elapsed="0.000697"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:53.123961" 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-19T02:59:53.124239" 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-19T02:59:53.123202" elapsed="0.001144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:53.126127" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:53.125441" elapsed="0.000802"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:53.128128" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:53.127363" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:53.130846" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:53.130943" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:53.130538" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:53.131253" elapsed="0.000377"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:53.132598" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:53.449665" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:53.132250" elapsed="0.317558"/>
</kw>
<msg time="2026-04-19T02:59:53.449890" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:53.131861" elapsed="0.318114"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:53.129507" elapsed="0.320773"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:53.451777" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:53.474592" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:53.475143" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:53.475482" 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-19T02:59:53.451360" elapsed="0.024360"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:53.477958" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:53.481237" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:53.480176" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:53.482361" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:53.481822" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:53.481698" elapsed="0.000990"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:53.483529" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T02:59:53.483015" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:53.482905" elapsed="0.001038"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:53.484186" elapsed="0.000088"/>
</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-19T02:59:53.489143" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T02:59:53.489697" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:53.490071" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:53.485736" elapsed="0.004546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:53.120169" elapsed="0.370340"/>
</kw>
<msg time="2026-04-19T02:59:53.490818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:53.119457" elapsed="0.371419"/>
</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-19T02:59:53.118905" elapsed="0.372053"/>
</kw>
<msg time="2026-04-19T02:59:53.490999" 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-19T02:59:53.118384" elapsed="0.372678"/>
</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-19T02:59:53.494255" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T02:59:53.494748" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:53.495090" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:53.491427" elapsed="0.003821"/>
</kw>
<msg time="2026-04-19T02:59:53.495343" level="INFO">${output} = 1</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-19T02:59:53.116390" elapsed="0.378981"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:53.495833" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:53.495553" elapsed="0.000336"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:53.495936" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:59:53.496127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:53.114249" elapsed="0.381905"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:53.496205" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T02:59:53.496409" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:53.111945" elapsed="0.384491"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:53.497009" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:53.496599" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:53.110836" elapsed="0.386449">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:55.501130" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:55.500287" elapsed="0.000919"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:55.503366" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:55.502681" elapsed="0.000749"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:55.505343" 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-19T02:59:55.505582" 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-19T02:59:55.504924" elapsed="0.000718"/>
</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-19T02:59:55.511983" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:55.511498" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:55.511176" elapsed="0.000981"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:55.513650" 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-19T02:59:55.513895" 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-19T02:59:55.513179" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:55.515589" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:55.514996" elapsed="0.000707"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:55.517567" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:55.516726" elapsed="0.000940"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:55.519986" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:55.520096" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:55.519699" 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-19T02:59:55.520338" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:55.521936" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:55.836017" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:55.521599" elapsed="0.314593"/>
</kw>
<msg time="2026-04-19T02:59:55.836281" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:55.520986" elapsed="0.315390"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:55.518882" elapsed="0.317784"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:55.838198" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:55.861204" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:55.861700" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:55.862025" 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-19T02:59:55.837780" elapsed="0.024506"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:55.864591" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:55.867816" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:55.866809" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:55.868924" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:55.868424" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:55.868303" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:55.870012" elapsed="0.000153"/>
</return>
<status status="PASS" start="2026-04-19T02:59:55.869570" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:55.869463" elapsed="0.000938"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:55.870650" 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-19T02:59:55.876192" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T02:59:55.876738" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:55.877114" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T02:59:55.872562" elapsed="0.004761"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:55.509789" elapsed="0.367755"/>
</kw>
<msg time="2026-04-19T02:59:55.878051" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:55.508686" elapsed="0.369426"/>
</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-19T02:59:55.507288" elapsed="0.370906"/>
</kw>
<msg time="2026-04-19T02:59:55.878236" 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-19T02:59:55.505999" elapsed="0.372283"/>
</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-19T02:59:55.881333" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T02:59:55.881804" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:55.882113" 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-19T02:59:55.878598" elapsed="0.003662"/>
</kw>
<msg time="2026-04-19T02:59:55.882493" level="INFO">${output} = 1</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-19T02:59:55.503932" elapsed="0.378589"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:55.882956" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:55.882706" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:55.883133" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T02:59:55.883291" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:55.501680" elapsed="0.381636"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:55.883364" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T02:59:55.883510" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:55.499393" elapsed="0.384141"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:55.884103" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:55.883692" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:55.498255" elapsed="0.386035">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T02:59:57.887956" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T02:59:57.887206" elapsed="0.000820"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T02:59:57.890103" level="INFO">${member_ip} = 10.30.171.206</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-19T02:59:57.889470" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:57.891943" 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-19T02:59:57.892492" 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-19T02:59:57.891608" elapsed="0.001031"/>
</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-19T02:59:57.902299" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T02:59:57.901237" elapsed="0.001240"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:57.900526" elapsed="0.002081"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:57.905919" 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-19T02:59:57.906593" 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-19T02:59:57.904820" elapsed="0.001992"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:57.909967" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:57.909072" elapsed="0.001077"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T02:59:57.911829" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T02:59:57.911122" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T02:59:57.914329" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T02:59:57.914406" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T02:59:57.913939" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:57.914643" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T02:59:57.915905" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T02:59:58.240997" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T02:59:57.915580" elapsed="0.325636"/>
</kw>
<msg time="2026-04-19T02:59:58.241292" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:57.915215" elapsed="0.326161"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T02:59:57.913182" elapsed="0.328437"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T02:59:58.243085" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T02:59:58.265885" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T02:59:58.266441" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T02:59:58.266776" 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-19T02:59:58.242696" elapsed="0.024290"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:58.269236" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:58.272375" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:58.271375" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:58.273459" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T02:59:58.272935" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:58.272816" elapsed="0.000935"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T02:59:58.274622" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T02:59:58.274152" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T02:59:58.274008" elapsed="0.000802"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T02:59:58.274888" 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-19T02:59:58.279723" 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-19T02:59:58.280349" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:58.280703" 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-19T02:59:58.276285" elapsed="0.004623"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T02:59:57.897534" elapsed="0.383613"/>
</kw>
<msg time="2026-04-19T02:59:58.281453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T02:59:57.895932" elapsed="0.385577"/>
</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-19T02:59:57.894633" elapsed="0.386960"/>
</kw>
<msg time="2026-04-19T02:59:58.281634" 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-19T02:59:57.893222" elapsed="0.388457"/>
</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-19T02:59:58.284677" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T02:59:58.285186" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T02:59:58.285478" 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-19T02:59:58.281990" elapsed="0.003634"/>
</kw>
<msg time="2026-04-19T02:59:58.285715" level="INFO">${output} = 1</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-19T02:59:57.890667" elapsed="0.395072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T02:59:58.286249" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T02:59:58.285914" elapsed="0.000379"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T02:59:58.286336" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T02:59:58.286486" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T02:59:57.888510" elapsed="0.398001"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T02:59:58.286558" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T02:59:58.286702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T02:59:57.886331" elapsed="0.400396"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T02:59:58.287349" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T02:59:58.286926" elapsed="0.000502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T02:59:57.885227" elapsed="0.402320">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:00.291127" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:00.290336" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:00.293230" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:00.292596" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:00.295118" 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-19T03:00:00.295351" 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-19T03:00:00.294760" elapsed="0.000650"/>
</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-19T03:00:00.303176" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:00.302664" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:00.300602" elapsed="0.002714"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:00.304784" 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-19T03:00:00.305085" 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-19T03:00:00.304331" elapsed="0.000857"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:00.306884" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:00.306317" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:00.308703" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:00.307980" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:00.311159" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:00.311236" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:00.310861" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:00.311468" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:00.312725" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:00.633899" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 02:59:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:00.312405" elapsed="0.321602"/>
</kw>
<msg time="2026-04-19T03:00:00.634098" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:00.312017" elapsed="0.322162"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:00.310097" elapsed="0.324326"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:00.635852" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:00.658847" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:00.659405" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:00.659745" 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-19T03:00:00.635483" elapsed="0.024473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:00.662204" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:00.664702" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:00.664109" 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-19T03:00:00.665420" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:00.665095" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:00.664988" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:00.666110" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:00:00.665807" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:00.665740" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:00.666445" elapsed="0.000055"/>
</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-19T03:00:00.672799" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T03:00:00.673363" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:00.673722" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:00.668391" elapsed="0.005540"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:00.299262" elapsed="0.374909"/>
</kw>
<msg time="2026-04-19T03:00:00.674481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:00.298212" elapsed="0.376327"/>
</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-19T03:00:00.296962" elapsed="0.377665"/>
</kw>
<msg time="2026-04-19T03:00:00.674669" 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-19T03:00:00.295795" elapsed="0.378919"/>
</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-19T03:00:00.677773" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:00:00.678268" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:00.678561" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:00.675003" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T03:00:00.678804" level="INFO">${output} = 1</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-19T03:00:00.293775" elapsed="0.385054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:00.679294" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:00.679006" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:00.679382" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:00.679540" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:00.291656" elapsed="0.387908"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:00.679610" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:00.679753" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:00.289491" elapsed="0.390286"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:00.680373" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:00.679934" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:00.288428" elapsed="0.392129">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:02.682984" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:02.682433" elapsed="0.000616"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:02.684508" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:02.684124" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:02.685659" 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-19T03:00:02.685820" 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-19T03:00:02.685442" elapsed="0.000420"/>
</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-19T03:00:02.694557" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:02.693419" elapsed="0.001359"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:02.693292" elapsed="0.001613"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:02.697252" 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-19T03:00:02.697610" 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-19T03:00:02.696320" elapsed="0.001437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:02.699701" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:02.699127" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:02.701592" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:02.700858" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:02.704203" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:02.704289" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:02.703749" elapsed="0.000566"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:02.704532" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:02.705828" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:03.049043" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:02.705492" elapsed="0.343685"/>
</kw>
<msg time="2026-04-19T03:00:03.049256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:02.705120" elapsed="0.344223"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:02.702933" elapsed="0.346685"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:03.051174" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:03.073675" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:03.074235" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:03.074595" 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-19T03:00:03.050734" elapsed="0.024077"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:03.077087" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:03.080501" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:03.079811" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:03.081349" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:03.080874" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:03.080792" elapsed="0.000759"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:03.082081" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T03:00:03.081761" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:03.081690" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:03.082445" elapsed="0.000055"/>
</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-19T03:00:03.088967" 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-19T03:00:03.089539" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:03.089899" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:03.084472" elapsed="0.005657"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:02.690174" elapsed="0.400183"/>
</kw>
<msg time="2026-04-19T03:00:03.090690" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:02.688420" elapsed="0.402336"/>
</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-19T03:00:02.687096" elapsed="0.403746"/>
</kw>
<msg time="2026-04-19T03:00:03.090884" 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-19T03:00:02.686138" elapsed="0.404792"/>
</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-19T03:00:03.093992" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:03.094489" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:03.094869" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:03.091251" elapsed="0.003803"/>
</kw>
<msg time="2026-04-19T03:00:03.095156" level="INFO">${output} = 1</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-19T03:00:02.684849" elapsed="0.410334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:03.095622" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:03.095364" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:03.095710" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:00:03.095866" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:02.683462" elapsed="0.412430"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:03.095942" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:03.096171" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:02.681845" elapsed="0.414352"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:03.096761" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:03.096359" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:02.681156" elapsed="0.415794">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:05.100461" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:05.099651" elapsed="0.000886"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:05.102574" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:05.101937" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:05.104494" 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-19T03:00:05.104887" 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-19T03:00:05.104109" elapsed="0.000841"/>
</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-19T03:00:05.110407" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:05.109754" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:05.109676" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:05.113093" 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-19T03:00:05.113355" 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-19T03:00:05.112010" elapsed="0.001444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:05.115006" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:05.114463" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:05.116814" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:05.116108" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:05.119287" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:05.119367" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:05.118991" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:05.119601" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:05.121071" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:05.477926" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:05.120713" elapsed="0.357349"/>
</kw>
<msg time="2026-04-19T03:00:05.478140" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:05.120212" elapsed="0.358012"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:05.118240" elapsed="0.360238"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:05.479903" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:05.502804" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:05.503342" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:05.503675" 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-19T03:00:05.479536" elapsed="0.024351"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:05.507080" elapsed="0.000921"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:05.510313" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:05.509326" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:05.511423" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:05.510896" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:05.510772" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:05.512643" elapsed="0.000177"/>
</return>
<status status="PASS" start="2026-04-19T03:00:05.512183" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:05.511929" elapsed="0.001173"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:05.513287" elapsed="0.000084"/>
</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-19T03:00:05.518492" 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-19T03:00:05.519160" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:05.519522" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:05.515000" elapsed="0.004731"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:05.107805" elapsed="0.412152"/>
</kw>
<msg time="2026-04-19T03:00:05.520331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:05.106803" elapsed="0.413589"/>
</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-19T03:00:05.105992" elapsed="0.414485"/>
</kw>
<msg time="2026-04-19T03:00:05.520519" 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-19T03:00:05.105265" elapsed="0.415302"/>
</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-19T03:00:05.523588" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:00:05.524178" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:05.524475" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:05.520884" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T03:00:05.524727" level="INFO">${output} = 1</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-19T03:00:05.103142" elapsed="0.421611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:05.525205" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:05.524939" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:05.525293" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:05.525446" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:05.100994" elapsed="0.424477"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:05.525517" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:05.525663" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:05.098809" elapsed="0.426878"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:05.526252" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:05.525843" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:05.097739" elapsed="0.428698">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:07.529911" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:07.529149" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:07.532160" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:07.531512" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:07.534088" 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-19T03:00:07.534326" 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-19T03:00:07.533651" elapsed="0.000736"/>
</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-19T03:00:07.539886" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:07.539262" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:07.539187" elapsed="0.001006"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:07.542513" 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-19T03:00:07.542855" 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-19T03:00:07.541549" elapsed="0.001446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:07.545154" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:07.544359" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:07.547488" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:07.546767" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:07.549858" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:07.549945" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:07.549552" 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-19T03:00:07.550315" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:07.551578" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:07.872298" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:07.551250" elapsed="0.321182"/>
</kw>
<msg time="2026-04-19T03:00:07.872516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:07.550870" elapsed="0.321730"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:07.548774" elapsed="0.324090"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:07.874384" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:07.897208" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:07.897722" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:07.898122" 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-19T03:00:07.873962" elapsed="0.024374"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:07.900790" elapsed="0.000896"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:07.903618" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:07.902981" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:07.904581" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:07.903985" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:07.903906" elapsed="0.000860"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:07.905265" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:00:07.904963" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:07.904897" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:07.905591" elapsed="0.000051"/>
</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-19T03:00:07.912345" 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-19T03:00:07.912891" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:07.913263" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:07.907479" elapsed="0.005994"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:07.537336" elapsed="0.376365"/>
</kw>
<msg time="2026-04-19T03:00:07.914107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:07.536362" elapsed="0.377804"/>
</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-19T03:00:07.535550" elapsed="0.378701"/>
</kw>
<msg time="2026-04-19T03:00:07.914293" 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-19T03:00:07.534775" elapsed="0.379564"/>
</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-19T03:00:07.917419" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:00:07.917898" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:07.918221" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:07.914632" elapsed="0.003739"/>
</kw>
<msg time="2026-04-19T03:00:07.918465" level="INFO">${output} = 1</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-19T03:00:07.532706" elapsed="0.385785"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:07.918917" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:07.918669" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:07.919006" elapsed="0.000054"/>
</return>
<msg time="2026-04-19T03:00:07.919189" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:07.530467" elapsed="0.388748"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:07.919261" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:00:07.919409" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:07.528306" elapsed="0.391129"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:07.919991" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:07.919592" elapsed="0.000566">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:07.527226" elapsed="0.393043">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:09.923856" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:09.923112" elapsed="0.000815"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:09.925979" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:09.925368" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:09.927868" 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-19T03:00:09.928128" 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-19T03:00:09.927530" elapsed="0.000659"/>
</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-19T03:00:09.934530" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:09.933976" elapsed="0.000636"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:09.933657" elapsed="0.001017"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:09.936166" 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-19T03:00:09.936414" 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-19T03:00:09.935678" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:09.938072" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:09.937498" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:09.940019" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:09.939322" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:09.942445" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:09.942537" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:09.942130" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:09.942850" elapsed="0.000396"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:09.944354" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:10.253508" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:09.943844" elapsed="0.309815"/>
</kw>
<msg time="2026-04-19T03:00:10.253744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:09.943474" elapsed="0.310360"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:09.941341" elapsed="0.312800"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:10.255662" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:10.278067" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:10.278551" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:10.278762" 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-19T03:00:10.255273" elapsed="0.023622"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:10.280441" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:10.282441" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:10.281809" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:10.283177" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:10.282828" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:10.282747" 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-19T03:00:10.283851" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:00:10.283566" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:10.283499" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:10.284242" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:10.289772" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:00:10.290336" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:10.290703" 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-19T03:00:10.286086" elapsed="0.004825"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:09.932326" elapsed="0.358826"/>
</kw>
<msg time="2026-04-19T03:00:10.291462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:09.931106" elapsed="0.360413"/>
</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-19T03:00:09.929730" elapsed="0.361872"/>
</kw>
<msg time="2026-04-19T03:00:10.291642" 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-19T03:00:09.928539" elapsed="0.363150"/>
</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-19T03:00:10.294830" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:00:10.295335" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:10.295636" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:10.292171" elapsed="0.003615"/>
</kw>
<msg time="2026-04-19T03:00:10.295879" level="INFO">${output} = 1</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-19T03:00:09.926575" elapsed="0.369329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:10.296412" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:10.296159" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:10.296501" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:10.296653" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:09.924422" elapsed="0.372257"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:10.296726" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:10.296871" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:09.922231" elapsed="0.374664"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:10.297460" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:10.297069" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:09.921140" elapsed="0.376504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:12.299629" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:12.299268" elapsed="0.000397"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:12.300575" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:12.300303" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:12.301409" 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-19T03:00:12.301512" 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-19T03:00:12.301244" 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-19T03:00:12.305583" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:12.305107" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:12.304791" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:12.307312" 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-19T03:00:12.307561" 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-19T03:00:12.306748" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:12.309285" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:12.308656" elapsed="0.000739"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:12.311101" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:12.310373" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:12.313588" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:12.313666" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:12.313307" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:12.313901" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:12.315261" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:12.632151" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:12.314919" elapsed="0.317333"/>
</kw>
<msg time="2026-04-19T03:00:12.632320" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:12.314541" elapsed="0.317853"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:12.312395" elapsed="0.320231"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:12.633987" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:12.657005" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:12.657252" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:12.657397" 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-19T03:00:12.633649" elapsed="0.023843"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:12.658676" elapsed="0.000600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:12.660270" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:12.659829" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:12.660758" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:12.660530" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:12.660475" elapsed="0.000410"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:12.661244" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T03:00:12.661041" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:12.660980" elapsed="0.000420"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:12.661478" 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-19T03:00:12.666304" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:00:12.666869" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:12.667239" 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-19T03:00:12.662789" elapsed="0.004658"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:12.303470" elapsed="0.364200"/>
</kw>
<msg time="2026-04-19T03:00:12.667977" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:12.302765" elapsed="0.365283"/>
</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-19T03:00:12.302225" elapsed="0.365905"/>
</kw>
<msg time="2026-04-19T03:00:12.668171" 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-19T03:00:12.301697" elapsed="0.366519"/>
</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-19T03:00:12.671444" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:00:12.671916" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:12.672234" 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-19T03:00:12.668505" elapsed="0.003876"/>
</kw>
<msg time="2026-04-19T03:00:12.672540" level="INFO">${output} = 1</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-19T03:00:12.300817" elapsed="0.371750"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:12.672995" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:12.672746" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:12.673101" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:00:12.673256" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:12.299875" elapsed="0.373406"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:12.673329" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:00:12.673473" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:12.298869" elapsed="0.374629"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:12.674083" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:12.673654" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:12.298303" elapsed="0.375965">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:14.677772" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:14.676991" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:14.679600" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:14.679220" elapsed="0.000418"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:14.680773" 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-19T03:00:14.680918" 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-19T03:00:14.680554" elapsed="0.000402"/>
</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-19T03:00:14.688896" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:14.688233" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:14.685710" elapsed="0.003426"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:14.691295" 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-19T03:00:14.691548" 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-19T03:00:14.690582" elapsed="0.001069"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:14.693239" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:14.692658" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:14.695141" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:14.694368" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:14.697654" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:14.697734" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:14.697358" 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-19T03:00:14.697979" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:14.699410" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:15.026823" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:14.699058" elapsed="0.328046"/>
</kw>
<msg time="2026-04-19T03:00:15.027192" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:14.698648" elapsed="0.328635"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:14.696557" elapsed="0.331020"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:15.029120" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:15.052266" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:15.052790" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:15.053198" 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-19T03:00:15.028702" elapsed="0.024717"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:15.055802" elapsed="0.000965"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:15.059275" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:15.058239" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:15.060442" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:15.059869" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:15.059746" elapsed="0.001004"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:15.061595" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:00:15.061109" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:15.060965" elapsed="0.000996"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:15.062319" elapsed="0.000091"/>
</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-19T03:00:15.069884" elapsed="0.000418"/>
</kw>
<kw name="Open 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-19T03:00:15.070551" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:15.070924" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:15.065544" elapsed="0.005614"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:14.683857" elapsed="0.387528"/>
</kw>
<msg time="2026-04-19T03:00:15.071706" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:14.682856" elapsed="0.388915"/>
</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-19T03:00:14.681921" elapsed="0.389935"/>
</kw>
<msg time="2026-04-19T03:00:15.071897" 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-19T03:00:14.681205" elapsed="0.390738"/>
</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-19T03:00:15.075079" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:15.075581" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:15.075888" 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-19T03:00:15.072255" elapsed="0.003805"/>
</kw>
<msg time="2026-04-19T03:00:15.076156" level="INFO">${output} = 1</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-19T03:00:14.679947" elapsed="0.396235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:15.076631" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:15.076364" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:15.076724" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:00:15.076882" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:14.678327" elapsed="0.398582"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:15.076957" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:00:15.077125" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:14.676183" elapsed="0.400968"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:15.077792" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:15.077371" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:14.675150" elapsed="0.402859">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:17.081551" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:17.080783" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:17.083676" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:17.083070" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:17.085533" 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-19T03:00:17.085764" 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-19T03:00:17.085207" elapsed="0.000616"/>
</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-19T03:00:17.092574" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:17.092111" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:17.092054" elapsed="0.000658"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:17.094399" 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-19T03:00:17.094641" 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-19T03:00:17.093684" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:17.096272" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:17.095720" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:17.098070" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:17.097355" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:17.100518" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:17.100596" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:17.100233" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:17.100830" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:17.102131" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:17.430606" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:17.101771" elapsed="0.329006"/>
</kw>
<msg time="2026-04-19T03:00:17.430875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:17.101409" elapsed="0.329578"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:17.099417" elapsed="0.331920"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:17.432915" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:17.455916" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:17.456485" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:17.456820" 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-19T03:00:17.432486" elapsed="0.024579"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:17.459391" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:17.462812" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:17.461701" elapsed="0.001379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:17.464063" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:17.463466" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:17.463332" elapsed="0.001074"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:17.465290" elapsed="0.000138"/>
</return>
<status status="PASS" start="2026-04-19T03:00:17.464758" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:17.464644" elapsed="0.001031"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:17.465856" elapsed="0.000137"/>
</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-19T03:00:17.471839" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T03:00:17.472431" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:17.472804" 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-19T03:00:17.468346" elapsed="0.004673"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:17.090137" elapsed="0.383129"/>
</kw>
<msg time="2026-04-19T03:00:17.473579" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:17.088594" elapsed="0.385044"/>
</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-19T03:00:17.087376" elapsed="0.386346"/>
</kw>
<msg time="2026-04-19T03:00:17.473764" 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-19T03:00:17.086217" elapsed="0.387594"/>
</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-19T03:00:17.476877" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:17.477386" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:17.477685" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:17.474173" elapsed="0.003663"/>
</kw>
<msg time="2026-04-19T03:00:17.477930" level="INFO">${output} = 1</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-19T03:00:17.084252" elapsed="0.393729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:17.478527" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:17.478269" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:17.478617" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:00:17.478786" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:17.082123" elapsed="0.396690"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:17.478861" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:00:17.479062" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:17.079928" elapsed="0.399162"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:17.479668" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:17.479251" elapsed="0.000507">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:17.078852" elapsed="0.401034">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:19.483303" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:19.482546" elapsed="0.000826"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:19.485567" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:19.484919" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:19.487391" 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-19T03:00:19.487615" 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-19T03:00:19.487070" elapsed="0.000604"/>
</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-19T03:00:19.492893" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:19.492425" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:19.492367" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:19.494756" 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-19T03:00:19.495002" 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-19T03:00:19.494026" elapsed="0.001095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:19.496651" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:19.496096" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:19.498516" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:19.497799" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:19.500977" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:19.501345" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:19.500652" elapsed="0.000720"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:19.501638" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:19.502953" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:19.820787" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:19.502612" elapsed="0.318316"/>
</kw>
<msg time="2026-04-19T03:00:19.821010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:19.502246" elapsed="0.318868"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:19.499826" elapsed="0.321554"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:19.823078" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:19.845864" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:19.846406" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:19.846745" 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-19T03:00:19.822667" elapsed="0.024337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:19.849272" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:19.851674" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:19.851020" elapsed="0.000800"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:19.852486" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:19.852065" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:19.851965" 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-19T03:00:19.853199" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T03:00:19.852880" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:19.852811" elapsed="0.000652"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:19.853584" elapsed="0.000058"/>
</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-19T03:00:19.859810" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T03:00:19.860451" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:19.860807" 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-19T03:00:19.855607" elapsed="0.005408"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:19.491012" elapsed="0.370247"/>
</kw>
<msg time="2026-04-19T03:00:19.861585" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:19.490317" elapsed="0.371327"/>
</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-19T03:00:19.489205" elapsed="0.372522"/>
</kw>
<msg time="2026-04-19T03:00:19.861768" 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-19T03:00:19.488024" elapsed="0.373790"/>
</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-19T03:00:19.864889" 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-19T03:00:19.865381" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:19.865708" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:19.862120" elapsed="0.003737"/>
</kw>
<msg time="2026-04-19T03:00:19.865951" level="INFO">${output} = 1</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-19T03:00:19.486134" elapsed="0.379843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:19.866429" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:19.866172" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:19.866544" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:19.866698" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:19.483975" elapsed="0.382749"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:19.866772" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:19.866919" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:19.481725" elapsed="0.385219"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:19.867533" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:19.867136" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:19.480674" elapsed="0.387042">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:21.871387" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:21.870553" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:21.873633" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:21.872953" elapsed="0.000745"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:21.875601" 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-19T03:00:21.875868" 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-19T03:00:21.875377" elapsed="0.000530"/>
</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-19T03:00:21.881116" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:21.880597" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:21.880540" elapsed="0.000716"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:21.882972" 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-19T03:00:21.883239" 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-19T03:00:21.882252" elapsed="0.001090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:21.884905" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:21.884354" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:21.886733" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:21.886015" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:21.889244" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:21.889324" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:21.888938" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:21.889561" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:21.890838" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:22.200729" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:21.890512" elapsed="0.310354"/>
</kw>
<msg time="2026-04-19T03:00:22.200945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:21.890147" elapsed="0.310887"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:21.888160" elapsed="0.313169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:22.202859" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:22.225833" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:22.226384" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:22.226750" 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-19T03:00:22.202455" elapsed="0.024512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:22.229285" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:22.232491" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:22.231516" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:22.233511" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:22.233191" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:22.233028" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:22.234000" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T03:00:22.233794" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:22.233746" elapsed="0.000436"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:22.234262" 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-19T03:00:22.239248" 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-19T03:00:22.239906" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:22.240290" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:22.235635" elapsed="0.004867"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:21.878618" elapsed="0.362327"/>
</kw>
<msg time="2026-04-19T03:00:22.241264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:21.877658" elapsed="0.363667"/>
</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-19T03:00:21.876884" elapsed="0.364528"/>
</kw>
<msg time="2026-04-19T03:00:22.241454" 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-19T03:00:21.876156" elapsed="0.365347"/>
</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-19T03:00:22.244695" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T03:00:22.245235" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:22.245549" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:22.241801" elapsed="0.003906"/>
</kw>
<msg time="2026-04-19T03:00:22.245800" level="INFO">${output} = 1</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-19T03:00:21.874251" elapsed="0.371575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:22.246289" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:22.246013" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:22.246378" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:00:22.246534" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:21.871937" elapsed="0.374623"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:22.246607" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:00:22.246763" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:21.869698" elapsed="0.377096"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:22.247435" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:22.246974" elapsed="0.000551">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:21.868637" elapsed="0.379007">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:24.251387" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:24.250499" elapsed="0.000963"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:24.253506" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:24.252868" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:24.255598" 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-19T03:00:24.255837" 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-19T03:00:24.255217" elapsed="0.000681"/>
</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-19T03:00:24.263419" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:24.262884" elapsed="0.000709"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:24.262538" elapsed="0.001119"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:24.265146" 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-19T03:00:24.265400" 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-19T03:00:24.264670" elapsed="0.000844"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:24.267081" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:24.266509" elapsed="0.000696"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:24.268923" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:24.268195" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:24.271499" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:24.271581" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:24.271160" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:24.271827" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:24.273323" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:24.594202" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:24.272811" elapsed="0.321530"/>
</kw>
<msg time="2026-04-19T03:00:24.594423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:24.272431" elapsed="0.322082"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:24.270341" elapsed="0.324446"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:24.596284" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:24.619129" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:24.619360" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:24.619513" 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-19T03:00:24.595864" elapsed="0.023753"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:24.620617" elapsed="0.000420"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:24.622134" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:24.621665" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:24.622652" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:24.622410" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:24.622345" elapsed="0.000441"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:24.623175" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:00:24.622932" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:24.622883" elapsed="0.000459"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:24.623424" 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-19T03:00:24.628191" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:00:24.628746" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:24.629136" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:24.624757" elapsed="0.004591"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:24.260588" elapsed="0.368984"/>
</kw>
<msg time="2026-04-19T03:00:24.629995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:24.258863" elapsed="0.371353"/>
</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-19T03:00:24.257553" elapsed="0.372749"/>
</kw>
<msg time="2026-04-19T03:00:24.630344" 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-19T03:00:24.256298" elapsed="0.374093"/>
</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-19T03:00:24.633374" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:00:24.633868" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:24.634223" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:24.630683" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T03:00:24.634468" level="INFO">${output} = 1</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-19T03:00:24.254198" elapsed="0.380295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:24.634921" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:24.634670" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:24.635010" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T03:00:24.635288" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:24.251919" elapsed="0.383396"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:24.635364" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:00:24.635510" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:24.249588" elapsed="0.385948"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:24.636107" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:24.635694" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:24.248498" elapsed="0.387793">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:26.639669" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:26.638903" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:26.641843" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:26.641237" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:26.643680" 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-19T03:00:26.643908" 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-19T03:00:26.643359" elapsed="0.000609"/>
</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-19T03:00:26.649086" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:26.648595" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:26.648284" elapsed="0.000943"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:26.650662" 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-19T03:00:26.650906" 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-19T03:00:26.650223" elapsed="0.000784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:26.652589" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:26.651992" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:26.654475" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:26.653758" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:26.656924" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:26.657002" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:26.656645" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:26.657255" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:26.658516" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:26.970298" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:26.658188" elapsed="0.312239"/>
</kw>
<msg time="2026-04-19T03:00:26.970508" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:26.657808" elapsed="0.312793"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:26.655784" elapsed="0.315087"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:26.972350" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:26.994894" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:26.995457" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:26.995791" 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-19T03:00:26.971960" elapsed="0.024040"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:26.998460" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:27.001242" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:27.000607" elapsed="0.000778"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:27.001948" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:27.001619" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:27.001539" 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-19T03:00:27.002651" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:00:27.002363" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:27.002297" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:27.002981" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:27.009734" 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-19T03:00:27.010307" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:27.010661" elapsed="0.000225"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:27.005143" elapsed="0.005850"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:26.646921" elapsed="0.364315"/>
</kw>
<msg time="2026-04-19T03:00:27.011567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:26.646064" elapsed="0.365561"/>
</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-19T03:00:26.645512" elapsed="0.366194"/>
</kw>
<msg time="2026-04-19T03:00:27.011746" 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-19T03:00:26.644355" elapsed="0.367437"/>
</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-19T03:00:27.014926" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:00:27.015450" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:27.015749" 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-19T03:00:27.012285" elapsed="0.003612"/>
</kw>
<msg time="2026-04-19T03:00:27.015987" level="INFO">${output} = 1</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-19T03:00:26.642420" elapsed="0.373592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:27.016499" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:27.016254" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:27.016586" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:27.016736" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:26.640232" elapsed="0.376530"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:27.016808" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:00:27.016951" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:26.638095" elapsed="0.378880"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:27.017535" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:27.017146" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:26.637019" elapsed="0.380706">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:29.021616" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:29.020684" elapsed="0.001015"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:29.024182" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:29.023521" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:29.026147" 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-19T03:00:29.026407" 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-19T03:00:29.025762" elapsed="0.000719"/>
</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-19T03:00:29.034447" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:29.033916" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:29.031799" elapsed="0.002798"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:29.036120" 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-19T03:00:29.036376" 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-19T03:00:29.035637" elapsed="0.000846"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:29.038108" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:29.037523" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:29.040016" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:29.039301" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:29.042521" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:29.042603" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:29.042227" 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-19T03:00:29.042850" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:29.044302" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:29.348322" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:29.043931" elapsed="0.304491"/>
</kw>
<msg time="2026-04-19T03:00:29.348497" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:29.043559" elapsed="0.305017"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:29.041410" elapsed="0.307403"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:29.350252" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:29.373289" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:29.373781" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:29.374193" 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-19T03:00:29.349858" elapsed="0.024553"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:29.377099" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:29.380445" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:29.379382" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:29.381585" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:29.381014" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:29.380895" elapsed="0.000976"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:29.382674" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:00:29.382228" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:29.382119" elapsed="0.000905"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:29.383268" elapsed="0.000165"/>
</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-19T03:00:29.388879" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:00:29.389445" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:29.389803" 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-19T03:00:29.385524" elapsed="0.004486"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:29.030314" elapsed="0.359935"/>
</kw>
<msg time="2026-04-19T03:00:29.390551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:29.029483" elapsed="0.361126"/>
</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-19T03:00:29.028115" elapsed="0.362576"/>
</kw>
<msg time="2026-04-19T03:00:29.390732" 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-19T03:00:29.026845" elapsed="0.363933"/>
</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-19T03:00:29.393875" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:00:29.394369" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:29.394665" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:29.391098" elapsed="0.003716"/>
</kw>
<msg time="2026-04-19T03:00:29.395000" level="INFO">${output} = 1</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-19T03:00:29.024734" elapsed="0.370297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:29.395505" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:29.395239" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:29.395593" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:29.395745" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:29.022353" elapsed="0.373418"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:29.395817" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:00:29.395964" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:29.019826" elapsed="0.376162"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:29.396616" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:29.396226" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:29.018654" elapsed="0.378149">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:31.400859" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:31.399912" elapsed="0.001021"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:31.403150" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:31.402709" elapsed="0.000480"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:31.404652" 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-19T03:00:31.404808" 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-19T03:00:31.404350" elapsed="0.000496"/>
</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-19T03:00:31.410904" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:31.410270" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:31.410189" elapsed="0.000885"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:31.412832" 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-19T03:00:31.413115" 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-19T03:00:31.412073" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:31.414838" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:31.414278" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:31.416652" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:31.415929" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:31.419236" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:31.419314" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:31.418926" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:31.419553" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:31.420861" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:31.733013" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:31.420529" elapsed="0.312767"/>
</kw>
<msg time="2026-04-19T03:00:31.733383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:31.420138" elapsed="0.313336"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:31.418011" elapsed="0.315745"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:31.735576" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:31.758884" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:31.759510" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:31.759986" 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-19T03:00:31.735120" elapsed="0.025168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:31.762973" elapsed="0.000976"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:31.765529" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:31.764838" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:31.766331" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:31.765962" elapsed="0.000484"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:31.765877" elapsed="0.000650"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:31.767067" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T03:00:31.766736" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:31.766665" elapsed="0.000645"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:31.767445" elapsed="0.000064"/>
</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-19T03:00:31.773856" 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-19T03:00:31.774457" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:31.774889" 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-19T03:00:31.769529" elapsed="0.005611"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:31.407920" elapsed="0.367483"/>
</kw>
<msg time="2026-04-19T03:00:31.775755" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:31.406889" elapsed="0.368930"/>
</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-19T03:00:31.406091" elapsed="0.369812"/>
</kw>
<msg time="2026-04-19T03:00:31.775966" 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-19T03:00:31.405183" elapsed="0.370838"/>
</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-19T03:00:31.779218" 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-19T03:00:31.779792" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:31.780215" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:31.776406" elapsed="0.003971"/>
</kw>
<msg time="2026-04-19T03:00:31.780473" level="INFO">${output} = 1</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-19T03:00:31.403517" elapsed="0.376982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:31.780982" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:31.780704" elapsed="0.000357"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:31.781115" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:00:31.781281" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:31.401522" elapsed="0.379784"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:31.781353" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:31.781500" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:31.398866" elapsed="0.382674"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:31.782238" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:31.781782" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:31.397705" elapsed="0.384729">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:33.786054" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:33.785289" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:33.788205" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:33.787556" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:33.790066" 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-19T03:00:33.790303" 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-19T03:00:33.789694" elapsed="0.000669"/>
</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-19T03:00:33.796246" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:33.795589" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:33.795512" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:33.798811" 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-19T03:00:33.799208" 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-19T03:00:33.797792" elapsed="0.001586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:33.801095" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:33.800516" elapsed="0.000688"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:33.802880" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:33.802184" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:33.805922" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:33.806024" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:33.805541" 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-19T03:00:33.806326" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:33.807983" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:34.112096" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:33.807639" elapsed="0.304610"/>
</kw>
<msg time="2026-04-19T03:00:34.112337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:33.806924" elapsed="0.305505"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:33.804555" elapsed="0.308169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:34.114234" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:34.137790" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:34.138381" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:34.138738" 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-19T03:00:34.113819" elapsed="0.025149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:34.141557" elapsed="0.000656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:34.143667" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:34.142999" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:34.144402" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:34.144070" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:34.143963" elapsed="0.000687"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:34.145210" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:00:34.144891" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:34.144819" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:34.145548" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:34.151601" 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-19T03:00:34.152176" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:34.152535" 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-19T03:00:34.147450" elapsed="0.005393"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:33.793640" elapsed="0.359456"/>
</kw>
<msg time="2026-04-19T03:00:34.153401" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:33.792690" elapsed="0.360772"/>
</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-19T03:00:33.791924" elapsed="0.361621"/>
</kw>
<msg time="2026-04-19T03:00:34.153587" 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-19T03:00:33.790716" elapsed="0.362917"/>
</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-19T03:00:34.156836" 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-19T03:00:34.157337" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:34.157635" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:34.153979" elapsed="0.003811"/>
</kw>
<msg time="2026-04-19T03:00:34.157883" level="INFO">${output} = 1</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-19T03:00:33.788748" elapsed="0.369162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:34.158369" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:34.158113" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:34.158459" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:34.158616" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:33.786587" elapsed="0.372055"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:34.158690" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:34.158839" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:33.784435" elapsed="0.374429"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:34.159498" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:34.159025" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:33.783369" elapsed="0.376323">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:36.163244" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:36.162460" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:36.165568" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:36.164927" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:36.167430" 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-19T03:00:36.167656" 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-19T03:00:36.167100" elapsed="0.000616"/>
</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-19T03:00:36.173890" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:36.173427" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:36.173371" elapsed="0.000673"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:36.175733" 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-19T03:00:36.175983" 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-19T03:00:36.175051" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:36.177628" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:36.177089" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:36.179480" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:36.178757" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:36.181874" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:36.181953" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:36.181594" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:36.182235" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:36.183532" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:36.502410" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:36.183206" elapsed="0.319338"/>
</kw>
<msg time="2026-04-19T03:00:36.502627" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:36.182800" elapsed="0.319909"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:36.180789" elapsed="0.322189"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:36.504492" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:36.527113" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:36.527341" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:36.527491" 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-19T03:00:36.504102" elapsed="0.023511"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:36.528614" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:36.530058" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:36.529602" elapsed="0.000562"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:36.530640" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:36.530330" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:36.530270" elapsed="0.000506"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:36.531149" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:00:36.530926" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:36.530876" elapsed="0.000435"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:36.531391" 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-19T03:00:36.536121" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:00:36.536672" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:36.537130" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:36.532730" elapsed="0.004614"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:36.172052" elapsed="0.365519"/>
</kw>
<msg time="2026-04-19T03:00:36.537879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:36.170508" elapsed="0.367428"/>
</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-19T03:00:36.169267" elapsed="0.368751"/>
</kw>
<msg time="2026-04-19T03:00:36.538076" 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-19T03:00:36.168100" elapsed="0.370022"/>
</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-19T03:00:36.541210" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:00:36.541691" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:36.541992" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:36.538412" elapsed="0.003747"/>
</kw>
<msg time="2026-04-19T03:00:36.542250" level="INFO">${output} = 1</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-19T03:00:36.166144" elapsed="0.376132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:36.542702" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:36.542455" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:36.542790" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:36.542942" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:36.163969" elapsed="0.378998"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:36.543013" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:00:36.543178" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:36.161618" elapsed="0.381584"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:36.543777" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:36.543358" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:36.160550" elapsed="0.383415">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:38.547494" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:38.546704" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:38.549749" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:38.549125" elapsed="0.000686"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:38.551624" 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-19T03:00:38.552074" 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-19T03:00:38.551291" elapsed="0.000852"/>
</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-19T03:00:38.556882" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:38.556390" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:38.556079" elapsed="0.000964"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:38.558554" 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-19T03:00:38.558803" 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-19T03:00:38.558102" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:38.560530" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:38.559914" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:38.562422" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:38.561689" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:38.564911" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:38.564993" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:38.564622" 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-19T03:00:38.565422" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:38.566719" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:38.880398" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:38.566395" elapsed="0.314147"/>
</kw>
<msg time="2026-04-19T03:00:38.880623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:38.566017" elapsed="0.314691"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:38.563777" elapsed="0.317239"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:38.882510" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:38.904932" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:38.905574" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:38.905908" 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-19T03:00:38.882107" elapsed="0.024057"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:38.908535" elapsed="0.000962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:38.911053" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:38.910436" elapsed="0.000767"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:38.911754" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:38.911426" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:38.911346" elapsed="0.000596"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:38.912449" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:00:38.912169" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:38.912101" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:38.912785" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:38.918982" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T03:00:38.919602" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:38.919958" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:38.914702" elapsed="0.005483"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:38.554673" elapsed="0.365736"/>
</kw>
<msg time="2026-04-19T03:00:38.920713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:38.553951" elapsed="0.366821"/>
</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-19T03:00:38.553413" elapsed="0.367442"/>
</kw>
<msg time="2026-04-19T03:00:38.920898" 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-19T03:00:38.552680" elapsed="0.368264"/>
</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-19T03:00:38.923972" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:00:38.924461" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:38.924755" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:38.921263" elapsed="0.003647"/>
</kw>
<msg time="2026-04-19T03:00:38.925022" level="INFO">${output} = 1</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-19T03:00:38.550332" elapsed="0.374735"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:38.925494" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:38.925247" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:38.925581" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:38.925732" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:38.548091" elapsed="0.377666"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:38.925803" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:00:38.925946" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:38.545835" elapsed="0.380136"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:38.926580" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:38.926187" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:38.544741" elapsed="0.382018">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:40.930399" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:40.929637" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:40.932499" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:40.931865" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:40.934379" 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-19T03:00:40.934604" 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-19T03:00:40.934013" elapsed="0.000652"/>
</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-19T03:00:40.941431" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:40.940758" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:40.940369" elapsed="0.001369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:40.943778" 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-19T03:00:40.944149" 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-19T03:00:40.943168" elapsed="0.001123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:40.946159" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:40.945550" elapsed="0.000717"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:40.947921" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:40.947231" elapsed="0.000787"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:40.950396" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:40.950474" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:40.949999" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:40.950709" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:40.951963" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:41.266595" 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 Sun Apr 19 02:59:41 UTC 2026

  System load:  0.09               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:40.951640" elapsed="0.315101"/>
</kw>
<msg time="2026-04-19T03:00:41.266826" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:40.951279" elapsed="0.315630"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:40.949232" elapsed="0.317985"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:41.268850" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:41.292108" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:41.292608" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:41.292939" 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-19T03:00:41.268459" elapsed="0.024734"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:41.295453" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:41.298423" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:41.297652" elapsed="0.000916"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:41.299142" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:41.298792" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:41.298713" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:41.299809" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:00:41.299529" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:41.299461" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:41.300166" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:41.306649" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:00:41.307210" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:41.307566" 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-19T03:00:41.302163" elapsed="0.005612"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:40.938507" elapsed="0.369493"/>
</kw>
<msg time="2026-04-19T03:00:41.308403" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:40.937549" elapsed="0.370912"/>
</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-19T03:00:40.936542" elapsed="0.372000"/>
</kw>
<msg time="2026-04-19T03:00:41.308583" 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-19T03:00:40.935015" elapsed="0.373614"/>
</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-19T03:00:41.311737" 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-19T03:00:41.312234" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:41.312531" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:41.308921" elapsed="0.003760"/>
</kw>
<msg time="2026-04-19T03:00:41.312771" level="INFO">${output} = 1</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-19T03:00:40.933097" elapsed="0.379700"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:41.313313" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:41.312974" elapsed="0.000386"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:41.313404" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:41.313556" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:40.930921" elapsed="0.382661"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:41.313628" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:41.313771" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:40.928714" elapsed="0.385082"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:41.314373" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:41.313952" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:40.927613" elapsed="0.386940">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:43.318130" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:43.317364" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:43.320573" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:43.319735" elapsed="0.000899"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:43.321933" 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-19T03:00:43.322097" 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-19T03:00:43.321711" elapsed="0.000425"/>
</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-19T03:00:43.329864" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:43.329199" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:43.326677" elapsed="0.003421"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:43.332115" 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-19T03:00:43.332489" 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-19T03:00:43.331472" elapsed="0.001159"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:43.334366" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:43.333753" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:43.336201" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:43.335495" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:43.338616" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:43.338694" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:43.338336" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:43.338928" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:43.340200" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:43.926783" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:43.339858" elapsed="0.587074"/>
</kw>
<msg time="2026-04-19T03:00:43.927017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:43.339502" elapsed="0.587625"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:43.337503" elapsed="0.589906"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:43.928895" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:43.951893" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:43.952443" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:43.952780" 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-19T03:00:43.928495" elapsed="0.024498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:43.955308" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:43.958458" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:43.957482" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:43.959574" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:43.959064" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:43.958914" elapsed="0.000952"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:43.960686" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:00:43.960225" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:43.960116" elapsed="0.001117"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:43.961430" elapsed="0.000086"/>
</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-19T03:00:43.966567" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:00:43.967173" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:43.967537" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:43.963163" elapsed="0.004582"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:43.324814" elapsed="0.643151"/>
</kw>
<msg time="2026-04-19T03:00:43.968291" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:43.323845" elapsed="0.644505"/>
</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-19T03:00:43.323082" elapsed="0.645350"/>
</kw>
<msg time="2026-04-19T03:00:43.968473" 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-19T03:00:43.322357" elapsed="0.646161"/>
</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-19T03:00:43.971656" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:00:43.972148" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:43.972449" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:43.968865" elapsed="0.003733"/>
</kw>
<msg time="2026-04-19T03:00:43.972690" level="INFO">${output} = 1</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-19T03:00:43.321134" elapsed="0.651581"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:43.973170" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:43.972895" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:43.973258" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:43.973410" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:43.318657" elapsed="0.654778"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:43.973482" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:43.973627" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:43.316528" elapsed="0.657124"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:43.974222" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:43.973808" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:43.315436" elapsed="0.658966">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:45.977913" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:45.977185" elapsed="0.000797"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:45.980128" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:45.979424" elapsed="0.000768"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:45.981957" 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-19T03:00:45.982217" 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-19T03:00:45.981631" elapsed="0.000646"/>
</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-19T03:00:45.988465" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:45.987812" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:45.987734" elapsed="0.000924"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:45.990939" 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-19T03:00:45.991312" 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-19T03:00:45.990008" elapsed="0.001440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:45.993267" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:45.992707" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:45.995125" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:45.994362" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:45.997641" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:45.997720" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:45.997346" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:45.997962" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:45.999458" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:46.313088" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:45.998977" elapsed="0.314217"/>
</kw>
<msg time="2026-04-19T03:00:46.313267" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:45.998612" elapsed="0.314734"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:45.996551" elapsed="0.317037"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:46.314976" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:46.337986" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:46.338518" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:46.338851" 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-19T03:00:46.314624" elapsed="0.024480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:46.341399" elapsed="0.001099"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:46.344623" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:46.343778" elapsed="0.001006"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:46.345466" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:46.345009" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:46.344929" elapsed="0.000727"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:46.346154" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:00:46.345854" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:46.345788" elapsed="0.000586"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:46.346486" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:46.352813" elapsed="0.000369"/>
</kw>
<kw name="Open 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-19T03:00:46.353396" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:46.353751" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:46.348305" elapsed="0.005656"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:45.985691" elapsed="0.368517"/>
</kw>
<msg time="2026-04-19T03:00:46.354517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:45.984738" elapsed="0.369838"/>
</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-19T03:00:45.983855" elapsed="0.370802"/>
</kw>
<msg time="2026-04-19T03:00:46.354699" 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-19T03:00:45.982628" elapsed="0.372118"/>
</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-19T03:00:46.357934" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:00:46.358431" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:46.358727" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:46.355051" elapsed="0.003825"/>
</kw>
<msg time="2026-04-19T03:00:46.359050" level="INFO">${output} = 1</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-19T03:00:45.980679" elapsed="0.378399"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:46.359513" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:46.359261" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:46.359602" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:00:46.359755" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:45.978465" elapsed="0.381316"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:46.359828" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:46.360007" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:45.976355" elapsed="0.383692"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:46.360607" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:46.360214" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:45.975260" elapsed="0.385530">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:48.364322" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:48.363559" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:48.366450" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:48.365794" elapsed="0.000717"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:48.368009" 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-19T03:00:48.368175" 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-19T03:00:48.367787" elapsed="0.000425"/>
</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-19T03:00:48.373501" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:48.372847" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:48.372772" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:48.375612" 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-19T03:00:48.375857" 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-19T03:00:48.374903" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:48.377514" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:48.376952" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:48.379337" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:48.378619" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:48.381762" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:48.381840" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:48.381483" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:48.382118" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:48.383373" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:48.705117" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:48.383049" elapsed="0.322301"/>
</kw>
<msg time="2026-04-19T03:00:48.705432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:48.382674" elapsed="0.322847"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:48.380702" elapsed="0.325093"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:48.707321" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:48.729994" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:48.730275" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:48.730427" 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-19T03:00:48.706885" elapsed="0.023639"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:48.731553" elapsed="0.000451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:48.733064" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:48.732594" elapsed="0.000577"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:48.733583" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:48.733338" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:48.733277" elapsed="0.000440"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:48.734092" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T03:00:48.733866" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:48.733817" elapsed="0.000461"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:48.734363" 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-19T03:00:48.739229" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:00:48.739784" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:48.740159" elapsed="0.000181"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:48.735717" 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-19T03:00:48.370914" elapsed="0.369760"/>
</kw>
<msg time="2026-04-19T03:00:48.740982" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:48.369945" elapsed="0.371116"/>
</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-19T03:00:48.369183" elapsed="0.371964"/>
</kw>
<msg time="2026-04-19T03:00:48.741188" 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-19T03:00:48.368435" elapsed="0.372801"/>
</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-19T03:00:48.744411" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:00:48.744890" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:48.745203" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:48.741527" elapsed="0.003824"/>
</kw>
<msg time="2026-04-19T03:00:48.745441" level="INFO">${output} = 1</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-19T03:00:48.367140" elapsed="0.378326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:48.745900" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:48.745652" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:48.745987" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:48.746190" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:48.364847" elapsed="0.381368"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:48.746284" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:48.746437" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:48.362702" elapsed="0.383759"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:48.747098" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:48.746682" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:48.361627" elapsed="0.385658">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:50.749201" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:50.748816" elapsed="0.000419"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:50.750149" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:50.749856" elapsed="0.000320"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:50.750985" 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-19T03:00:50.751106" 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-19T03:00:50.750815" elapsed="0.000318"/>
</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-19T03:00:50.754933" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:50.754467" elapsed="0.000545"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:50.754411" elapsed="0.000680"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:50.756796" 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-19T03:00:50.757063" 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-19T03:00:50.756103" elapsed="0.001064"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:50.758689" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:50.758146" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:50.760486" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:50.759766" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:50.762832" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:50.762910" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:50.762549" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:50.763161" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:50.764468" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:51.071295" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:50.764140" elapsed="0.307332"/>
</kw>
<msg time="2026-04-19T03:00:51.071556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:50.763739" elapsed="0.307912"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:50.761768" elapsed="0.310170"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:51.073465" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:51.096399" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:51.096909" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:51.097298" 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-19T03:00:51.073066" elapsed="0.024444"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:51.099745" elapsed="0.000943"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:51.102387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:51.101735" elapsed="0.000798"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:51.103120" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:51.102760" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:51.102679" elapsed="0.000629"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:51.103795" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:00:51.103510" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:51.103441" elapsed="0.000581"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:51.104158" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:51.110456" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:51.111003" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:51.111376" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:51.106085" elapsed="0.005498"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:50.753093" elapsed="0.358712"/>
</kw>
<msg time="2026-04-19T03:00:51.112127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:50.752380" elapsed="0.359806"/>
</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-19T03:00:50.751813" elapsed="0.360455"/>
</kw>
<msg time="2026-04-19T03:00:51.112310" 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-19T03:00:50.751294" elapsed="0.361074"/>
</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-19T03:00:51.115649" 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-19T03:00:51.116151" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:51.116632" 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-19T03:00:51.112665" elapsed="0.004121"/>
</kw>
<msg time="2026-04-19T03:00:51.116880" level="INFO">${output} = 1</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-19T03:00:50.750396" elapsed="0.366510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:51.117358" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:51.117105" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:51.117447" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:00:51.117602" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:50.749446" elapsed="0.368182"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:51.117676" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:51.117823" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:50.748426" elapsed="0.369422"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:51.118525" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:51.118008" elapsed="0.000590">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:50.747825" elapsed="0.370883">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:53.122370" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:53.121576" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:53.124675" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:53.124036" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:53.126533" 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-19T03:00:53.126675" 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-19T03:00:53.126306" elapsed="0.000406"/>
</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-19T03:00:53.132795" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:53.132147" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:53.131738" elapsed="0.001253"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:53.134870" 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-19T03:00:53.135143" 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-19T03:00:53.134425" elapsed="0.000819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:53.136769" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:53.136226" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:53.138605" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:53.137885" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:53.141064" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:53.141144" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:53.140745" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:53.141380" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:53.142669" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:53.457795" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:53.142344" elapsed="0.315561"/>
</kw>
<msg time="2026-04-19T03:00:53.457976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:53.141964" elapsed="0.316113"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:53.139961" elapsed="0.318378"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:53.459745" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:53.482590" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:53.483145" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:53.483479" 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-19T03:00:53.459384" elapsed="0.024305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:53.485931" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:53.489009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:53.488089" elapsed="0.001186"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:53.490515" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:53.489615" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:53.489495" elapsed="0.001166"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:53.491112" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T03:00:53.490820" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:53.490770" elapsed="0.000505"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:53.491354" 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-19T03:00:53.496022" 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-19T03:00:53.496596" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:53.496959" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:53.492673" elapsed="0.004513"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:53.129699" elapsed="0.367711"/>
</kw>
<msg time="2026-04-19T03:00:53.497719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:53.128439" elapsed="0.369337"/>
</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-19T03:00:53.127677" elapsed="0.370181"/>
</kw>
<msg time="2026-04-19T03:00:53.497899" 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-19T03:00:53.126935" elapsed="0.371038"/>
</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-19T03:00:53.501212" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:00:53.501694" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:53.502026" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:53.498283" elapsed="0.003914"/>
</kw>
<msg time="2026-04-19T03:00:53.502291" level="INFO">${output} = 1</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-19T03:00:53.125266" elapsed="0.377055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:53.502752" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:53.502501" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:53.502840" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:53.502998" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:53.123106" elapsed="0.379922"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:53.503090" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:00:53.503238" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:53.120691" elapsed="0.382573"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:53.503813" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:53.503422" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:53.119605" elapsed="0.384398">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:55.507727" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:55.506868" elapsed="0.000941"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:55.510626" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:55.509670" elapsed="0.001025"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:55.512661" 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-19T03:00:55.513102" 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-19T03:00:55.512320" elapsed="0.000848"/>
</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-19T03:00:55.519205" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:55.518694" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:55.518412" elapsed="0.000935"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:55.520844" 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-19T03:00:55.521120" 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-19T03:00:55.520392" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:55.522782" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:55.522224" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:55.524663" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:55.523926" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:55.527173" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:55.527263" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:55.526866" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:55.527506" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:55.528854" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:55.897234" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:55.528529" elapsed="0.368892"/>
</kw>
<msg time="2026-04-19T03:00:55.897533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:55.528157" elapsed="0.369488"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:55.526000" elapsed="0.372059"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:55.900249" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:55.923134" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:55.923688" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:55.924023" 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-19T03:00:55.899667" elapsed="0.024650"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:55.926542" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:55.929526" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:55.928826" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:55.930253" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:55.929898" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:55.929818" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:55.930959" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:00:55.930659" elapsed="0.000507"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:55.930589" elapsed="0.000662"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:55.931367" elapsed="0.000059"/>
</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-19T03:00:55.937754" 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-19T03:00:55.938488" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:55.938859" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:55.933417" elapsed="0.005679"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:55.517059" elapsed="0.422272"/>
</kw>
<msg time="2026-04-19T03:00:55.939666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:55.516153" elapsed="0.423574"/>
</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-19T03:00:55.514770" elapsed="0.425042"/>
</kw>
<msg time="2026-04-19T03:00:55.939857" 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-19T03:00:55.513536" elapsed="0.426371"/>
</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-19T03:00:55.942995" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:00:55.943508" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:55.943843" 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-19T03:00:55.940244" elapsed="0.003755"/>
</kw>
<msg time="2026-04-19T03:00:55.944121" level="INFO">${output} = 1</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-19T03:00:55.511247" elapsed="0.432904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:55.944595" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:55.944337" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:55.944685" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:00:55.945803" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:55.508451" elapsed="0.437380"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:55.945880" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:55.946034" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:55.505976" elapsed="0.440099"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:55.946638" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:55.946237" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:55.504883" elapsed="0.441939">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:00:57.950615" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:00:57.949825" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:00:57.952823" level="INFO">${member_ip} = 10.30.171.206</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-19T03:00:57.952215" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:57.954811" 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-19T03:00:57.955076" 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-19T03:00:57.954474" elapsed="0.000665"/>
</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-19T03:00:57.964217" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:00:57.963648" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:57.961564" elapsed="0.002855"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:57.965864" 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-19T03:00:57.966128" 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-19T03:00:57.965420" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:57.967750" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:57.967199" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:00:57.969569" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:00:57.968838" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:00:57.971996" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:00:57.972094" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:00:57.971676" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:57.972329" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:00:57.973688" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:00:58.298249" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:00:57.973365" elapsed="0.325014"/>
</kw>
<msg time="2026-04-19T03:00:58.298456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:57.972882" elapsed="0.325659"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:00:57.970867" elapsed="0.327931"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:00:58.300250" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:00:58.323215" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:00:58.323715" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:00:58.324089" 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-19T03:00:58.299860" elapsed="0.024461"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:58.326630" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:58.329832" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:58.328820" elapsed="0.001381"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:58.331186" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:00:58.330631" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:58.330502" elapsed="0.000991"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:00:58.331911" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T03:00:58.331697" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T03:00:58.331647" elapsed="0.000449"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:00:58.332178" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:58.337078" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:00:58.337646" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:58.338011" elapsed="0.000218"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:58.333544" elapsed="0.004796"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:00:57.959785" elapsed="0.378834"/>
</kw>
<msg time="2026-04-19T03:00:58.339061" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:00:57.958131" elapsed="0.380993"/>
</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-19T03:00:57.956809" elapsed="0.382400"/>
</kw>
<msg time="2026-04-19T03:00:58.339251" 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-19T03:00:57.955529" elapsed="0.383769"/>
</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-19T03:00:58.342373" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T03:00:58.343018" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:00:58.343334" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:00:58.339610" elapsed="0.003873"/>
</kw>
<msg time="2026-04-19T03:00:58.343573" level="INFO">${output} = 1</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-19T03:00:57.953455" elapsed="0.390144"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:00:58.344196" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:00:58.343926" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:00:58.344284" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:00:58.344438" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:00:57.951224" elapsed="0.393240"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:00:58.344510" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:00:58.344654" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:00:57.948898" elapsed="0.395782"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:00:58.345526" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:00:58.345127" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:00:57.947753" elapsed="0.397959">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:00.349685" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:00.348649" elapsed="0.001294"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:00.351659" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:00.351186" elapsed="0.000514"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:00.352865" 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-19T03:01:00.353010" 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-19T03:01:00.352636" elapsed="0.000435"/>
</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-19T03:01:00.358494" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:00.357800" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:00.357722" elapsed="0.000972"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:00.360448" 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-19T03:01:00.360695" 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-19T03:01:00.359724" elapsed="0.001073"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:00.362388" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:00.361765" elapsed="0.000733"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:00.364228" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:00.363519" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:00.366933" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:00.367011" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:00.366639" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:00.367263" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:00.368672" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:00.676016" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:00:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:00.368346" elapsed="0.307818"/>
</kw>
<msg time="2026-04-19T03:01:00.676245" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:00.367966" elapsed="0.308368"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:00.365516" elapsed="0.311087"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:00.678088" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:00.701255" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:00.701760" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:00.702148" 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-19T03:01:00.677687" elapsed="0.024679"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:00.704643" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:00.707831" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:00.706833" elapsed="0.001404"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:00.708827" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:00.708578" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:00.708474" elapsed="0.000488"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:00.709329" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:01:00.709124" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:00.709075" elapsed="0.000413"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:00.709566" 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-19T03:01:00.714368" 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-19T03:01:00.714912" elapsed="0.000194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:00.715299" 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-19T03:01:00.710900" elapsed="0.004605"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:00.355803" elapsed="0.359923"/>
</kw>
<msg time="2026-04-19T03:01:00.716031" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:00.354814" elapsed="0.361439"/>
</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-19T03:01:00.354012" elapsed="0.362326"/>
</kw>
<msg time="2026-04-19T03:01:00.716380" 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-19T03:01:00.353294" elapsed="0.363132"/>
</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-19T03:01:00.719507" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:01:00.719984" elapsed="0.000244"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:00.720380" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:00.716781" elapsed="0.003768"/>
</kw>
<msg time="2026-04-19T03:01:00.720642" level="INFO">${output} = 1</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-19T03:01:00.352012" elapsed="0.368656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:00.721152" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:00.720848" elapsed="0.000350"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:00.721242" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:00.721397" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:00.350569" elapsed="0.370853"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:00.721469" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:01:00.721615" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:00.347753" elapsed="0.373887"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:00.722206" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:00.721796" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:00.346602" elapsed="0.375788">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:02.725860" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:02.725089" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:02.727990" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:02.727391" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:02.729834" 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-19T03:01:02.729976" 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-19T03:01:02.729582" elapsed="0.000431"/>
</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-19T03:01:02.735458" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:02.734796" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:02.734719" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:02.737958" 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-19T03:01:02.738237" 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-19T03:01:02.737026" elapsed="0.001311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:02.739870" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:02.739321" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:02.741708" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:02.740976" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:02.744167" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:02.744246" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:02.743867" 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-19T03:01:02.744485" elapsed="0.001364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:02.746940" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:03.062226" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:02.746610" elapsed="0.315895"/>
</kw>
<msg time="2026-04-19T03:01:03.062663" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:02.746243" elapsed="0.316523"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:02.743086" elapsed="0.319966"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:03.064568" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:03.087818" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:03.088355" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:03.088688" 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-19T03:01:03.064162" elapsed="0.024748"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:03.091207" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:03.094306" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:03.093347" elapsed="0.001186"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:03.095454" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:03.094927" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:03.094804" elapsed="0.000865"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:03.096017" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:01:03.095815" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:03.095766" elapsed="0.000431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:03.096279" 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-19T03:01:03.101013" 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-19T03:01:03.101657" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:03.102017" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:03.097672" elapsed="0.004573"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:02.732717" elapsed="0.369751"/>
</kw>
<msg time="2026-04-19T03:01:03.102803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:02.731764" elapsed="0.371096"/>
</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-19T03:01:02.730990" elapsed="0.371952"/>
</kw>
<msg time="2026-04-19T03:01:03.102983" 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-19T03:01:02.730263" elapsed="0.372780"/>
</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-19T03:01:03.106196" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:01:03.106707" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:03.107007" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:03.103340" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T03:01:03.107324" level="INFO">${output} = 1</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-19T03:01:02.728588" elapsed="0.378762"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:03.107778" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:03.107529" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:03.107866" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:03.108018" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:02.726427" elapsed="0.381633"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:03.108109" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:01:03.108259" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:02.724241" elapsed="0.384042"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:03.108831" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:03.108438" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:02.723203" elapsed="0.385816">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:05.112657" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:05.111893" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:05.114789" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:05.114179" elapsed="0.000772"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:05.116596" 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-19T03:01:05.116743" 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-19T03:01:05.116376" elapsed="0.000404"/>
</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-19T03:01:05.120895" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:05.120430" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:05.120374" elapsed="0.000677"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:05.122756" 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-19T03:01:05.123004" 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-19T03:01:05.122060" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:05.124659" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:05.124114" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:05.126501" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:05.125788" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:05.129006" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:05.129101" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:05.128722" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:05.129339" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:05.130603" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:05.444206" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:05.130278" elapsed="0.314095"/>
</kw>
<msg time="2026-04-19T03:01:05.444441" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:05.129903" elapsed="0.314615"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:05.127815" elapsed="0.316938"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:05.446139" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:05.469134" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:05.469626" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:05.469952" 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-19T03:01:05.445779" elapsed="0.024420"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:05.472388" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:05.475241" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:05.474493" elapsed="0.000891"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:05.475910" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:05.475598" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:05.475522" 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-19T03:01:05.476590" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:01:05.476315" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:05.476248" elapsed="0.000559"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:05.476916" elapsed="0.000055"/>
</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-19T03:01:05.483520" elapsed="0.000404"/>
</kw>
<kw name="Open 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-19T03:01:05.484156" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:05.484509" 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-19T03:01:05.478735" elapsed="0.005978"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:05.119013" elapsed="0.365923"/>
</kw>
<msg time="2026-04-19T03:01:05.485261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:05.118330" elapsed="0.366988"/>
</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-19T03:01:05.117771" elapsed="0.367629"/>
</kw>
<msg time="2026-04-19T03:01:05.485440" 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-19T03:01:05.117001" elapsed="0.368485"/>
</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-19T03:01:05.488585" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:01:05.489081" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:05.489388" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:05.485772" elapsed="0.003766"/>
</kw>
<msg time="2026-04-19T03:01:05.489629" level="INFO">${output} = 1</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-19T03:01:05.115480" elapsed="0.374174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:05.490097" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:05.489831" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:05.490186" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:05.490337" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:05.113217" elapsed="0.377145"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:05.490408" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:01:05.490579" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:05.111069" elapsed="0.379537"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:05.491242" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:05.490807" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:05.109966" elapsed="0.381467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:07.495375" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:07.494588" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:07.497556" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:07.496912" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:07.499669" 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-19T03:01:07.499977" 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-19T03:01:07.499303" elapsed="0.000771"/>
</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-19T03:01:07.506298" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:07.505556" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:07.505133" elapsed="0.001370"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:07.508619" 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-19T03:01:07.508933" 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-19T03:01:07.507942" elapsed="0.001118"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:07.510597" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:07.510023" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:07.512585" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:07.511719" elapsed="0.000968"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:07.515085" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:07.515169" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:07.514756" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:07.515410" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:07.516891" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:07.826870" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:07.516563" elapsed="0.310430"/>
</kw>
<msg time="2026-04-19T03:01:07.827089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:07.516004" elapsed="0.311172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:07.513933" elapsed="0.313499"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:07.828882" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:07.851302" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:07.851788" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:07.852168" 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-19T03:01:07.828493" elapsed="0.023888"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:07.854604" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:07.857743" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:07.856765" elapsed="0.001138"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:07.858491" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:07.858159" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:07.858075" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:07.859221" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:01:07.858896" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:07.858826" elapsed="0.000633"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:07.859582" elapsed="0.000056"/>
</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-19T03:01:07.866336" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:01:07.866875" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:07.867243" 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-19T03:01:07.861651" elapsed="0.005800"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:07.503194" elapsed="0.364481"/>
</kw>
<msg time="2026-04-19T03:01:07.867985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:07.502137" elapsed="0.365919"/>
</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-19T03:01:07.501339" elapsed="0.366802"/>
</kw>
<msg time="2026-04-19T03:01:07.868182" 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-19T03:01:07.500440" elapsed="0.367788"/>
</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-19T03:01:07.871326" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:01:07.871807" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:07.872138" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:07.868541" elapsed="0.003746"/>
</kw>
<msg time="2026-04-19T03:01:07.872377" level="INFO">${output} = 1</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-19T03:01:07.498303" elapsed="0.374100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:07.872855" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:07.872580" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:07.872942" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:07.873134" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:07.495936" elapsed="0.377224"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:07.873208" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:01:07.873357" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:07.493733" elapsed="0.379649"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:07.873930" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:07.873539" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:07.492595" elapsed="0.381546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:09.877628" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:09.876870" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:09.879889" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:09.879283" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:09.881808" 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-19T03:01:09.881971" 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-19T03:01:09.881481" elapsed="0.000527"/>
</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-19T03:01:09.887630" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:09.886967" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:09.886609" elapsed="0.001219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:09.889872" 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-19T03:01:09.890140" 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-19T03:01:09.889267" elapsed="0.000974"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:09.891756" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:09.891217" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:09.893589" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:09.892864" elapsed="0.000825"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:09.896020" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:09.896115" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:09.895733" 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-19T03:01:09.896351" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:09.897631" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:10.214039" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:09.897308" elapsed="0.316846"/>
</kw>
<msg time="2026-04-19T03:01:10.214222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:09.896925" elapsed="0.317372"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:09.894953" elapsed="0.319586"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:10.215926" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:10.238768" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:10.239438" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:10.239765" 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-19T03:01:10.215575" elapsed="0.024402"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:10.242156" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:10.244214" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:10.243563" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:10.244993" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:10.244596" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:10.244516" elapsed="0.000696"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:10.245737" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:01:10.245425" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:10.245354" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:10.246115" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:10.251907" 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-19T03:01:10.252571" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:10.252925" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:10.248143" elapsed="0.005010"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:09.884723" elapsed="0.368653"/>
</kw>
<msg time="2026-04-19T03:01:10.253699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:09.883725" elapsed="0.370031"/>
</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-19T03:01:09.882966" elapsed="0.370869"/>
</kw>
<msg time="2026-04-19T03:01:10.253876" 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-19T03:01:09.882251" elapsed="0.371670"/>
</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-19T03:01:10.256982" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:01:10.257567" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:10.257867" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:10.254234" elapsed="0.003786"/>
</kw>
<msg time="2026-04-19T03:01:10.258137" level="INFO">${output} = 1</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-19T03:01:09.880468" elapsed="0.377695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:10.258586" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:10.258339" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:10.258674" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:10.258827" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:09.878324" elapsed="0.380529"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:10.258901" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:01:10.259096" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:09.876001" elapsed="0.383122"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:10.259668" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:10.259280" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:09.874947" elapsed="0.384900">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:12.263297" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:12.262535" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:12.265419" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:12.264784" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:12.267346" 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-19T03:01:12.267706" 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-19T03:01:12.266967" elapsed="0.000800"/>
</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-19T03:01:12.274966" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:12.274470" elapsed="0.000592"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:12.272300" elapsed="0.002822"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:12.276778" 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-19T03:01:12.277047" 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-19T03:01:12.276307" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:12.278678" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:12.278131" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:12.280537" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:12.279768" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:12.282963" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:12.283059" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:12.282679" 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-19T03:01:12.283301" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:12.284736" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:12.588394" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:12.284409" elapsed="0.304126"/>
</kw>
<msg time="2026-04-19T03:01:12.588619" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:12.283856" elapsed="0.304851"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:12.281858" elapsed="0.307124"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:12.590519" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:12.613551" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:12.614086" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:12.614420" 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-19T03:01:12.590121" elapsed="0.024506"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:12.616799" elapsed="0.000941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:12.619307" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:12.618672" 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-19T03:01:12.619993" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:12.619672" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:12.619591" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:12.620685" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:01:12.620403" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:12.620335" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:12.621015" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:12.627378" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:01:12.628016" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:12.628394" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:12.622877" elapsed="0.005727"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:12.270936" elapsed="0.357894"/>
</kw>
<msg time="2026-04-19T03:01:12.629150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:12.270261" elapsed="0.358947"/>
</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-19T03:01:12.269376" elapsed="0.359929"/>
</kw>
<msg time="2026-04-19T03:01:12.629349" 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-19T03:01:12.268153" elapsed="0.361243"/>
</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-19T03:01:12.632459" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:01:12.632936" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:12.633248" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:12.629689" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T03:01:12.633524" level="INFO">${output} = 1</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-19T03:01:12.265959" elapsed="0.367590"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:12.633978" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:12.633731" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:12.634081" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:12.634235" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:12.263817" elapsed="0.370443"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:12.634306" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:01:12.634499" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:12.261693" elapsed="0.372833"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:12.635129" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:12.634688" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:12.260620" elapsed="0.374709">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:14.639225" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:14.638412" elapsed="0.000886"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:14.641309" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:14.640853" elapsed="0.000494"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:14.642480" 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-19T03:01:14.642623" 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-19T03:01:14.642256" elapsed="0.000405"/>
</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-19T03:01:14.648120" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:14.647347" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:14.647268" elapsed="0.001147"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:14.650561" 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-19T03:01:14.650810" 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-19T03:01:14.649848" elapsed="0.001065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:14.652495" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:14.651900" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:14.654381" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:14.653598" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:14.656775" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:14.656854" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:14.656494" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:14.657115" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:14.658506" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:14.979716" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:14.658177" elapsed="0.321645"/>
</kw>
<msg time="2026-04-19T03:01:14.979891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:14.657679" elapsed="0.322289"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:14.655690" elapsed="0.324538"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:14.981612" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:15.004548" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:15.005087" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:15.005430" 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-19T03:01:14.981263" elapsed="0.024378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:15.007846" elapsed="0.000935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:15.010313" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:15.009702" 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-19T03:01:15.010980" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:15.010673" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:15.010595" elapsed="0.000590"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:15.011664" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T03:01:15.011386" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:15.011318" elapsed="0.000565"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:15.011993" elapsed="0.000076"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:15.018348" 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-19T03:01:15.018891" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:15.019259" 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-19T03:01:15.013866" elapsed="0.005598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:14.645400" elapsed="0.374287"/>
</kw>
<msg time="2026-04-19T03:01:15.020064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:14.644424" elapsed="0.375701"/>
</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-19T03:01:14.643633" elapsed="0.376576"/>
</kw>
<msg time="2026-04-19T03:01:15.020251" 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-19T03:01:14.642884" elapsed="0.377413"/>
</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-19T03:01:15.023444" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:01:15.023925" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:15.024239" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:15.020606" elapsed="0.003782"/>
</kw>
<msg time="2026-04-19T03:01:15.024512" level="INFO">${output} = 1</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-19T03:01:14.641651" elapsed="0.382887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:15.024964" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:15.024717" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:15.025068" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:15.025223" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:14.639783" elapsed="0.385466"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:15.025296" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:01:15.025440" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:14.637503" elapsed="0.387962"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:15.026009" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:15.025620" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:14.636408" elapsed="0.389821">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:17.030082" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:17.029270" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:17.032581" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:17.031715" elapsed="0.000949"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:17.035368" 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-19T03:01:17.035555" 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-19T03:01:17.034981" elapsed="0.000621"/>
</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-19T03:01:17.041601" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:17.040929" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:17.040848" elapsed="0.000950"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:17.043934" 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-19T03:01:17.044204" 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-19T03:01:17.043202" elapsed="0.001105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:17.045842" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:17.045298" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:17.047792" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:17.047081" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:17.050251" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:17.050328" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:17.049941" 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-19T03:01:17.050565" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:17.051867" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:17.373933" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:17.051538" elapsed="0.322593"/>
</kw>
<msg time="2026-04-19T03:01:17.374228" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:17.051171" elapsed="0.323166"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:17.049178" elapsed="0.325462"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:17.376266" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:17.399224" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:17.399739" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:17.400117" 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-19T03:01:17.375820" elapsed="0.024543"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:17.402613" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:17.405785" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:17.404780" elapsed="0.001228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:17.406904" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:17.406406" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:17.406281" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:17.408059" elapsed="0.000105"/>
</return>
<status status="PASS" start="2026-04-19T03:01:17.407586" elapsed="0.000630"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:17.407482" elapsed="0.000791"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:17.408359" 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-19T03:01:17.413461" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:01:17.414023" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:17.414406" 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-19T03:01:17.409783" elapsed="0.004834"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:17.038961" elapsed="0.375900"/>
</kw>
<msg time="2026-04-19T03:01:17.415224" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:17.037812" elapsed="0.377472"/>
</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-19T03:01:17.036979" elapsed="0.378391"/>
</kw>
<msg time="2026-04-19T03:01:17.415412" 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-19T03:01:17.035884" elapsed="0.379576"/>
</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-19T03:01:17.418581" 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-19T03:01:17.419138" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:17.419450" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:17.415827" elapsed="0.003801"/>
</kw>
<msg time="2026-04-19T03:01:17.419741" level="INFO">${output} = 1</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-19T03:01:17.033572" elapsed="0.386200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:17.420265" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:17.419983" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:17.420354" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:17.420511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:17.030639" elapsed="0.389899"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:17.420586" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:01:17.420750" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:17.028412" elapsed="0.392369"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:17.421486" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:17.420971" elapsed="0.000615">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:17.027274" elapsed="0.394488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:19.425326" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:19.424546" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:19.427464" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:19.426827" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:19.429299" 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-19T03:01:19.429443" 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-19T03:01:19.428991" 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-19T03:01:19.434772" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:19.434144" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:19.434066" elapsed="0.000898"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:19.437285" 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-19T03:01:19.437531" 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-19T03:01:19.436331" elapsed="0.001301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:19.439152" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:19.438593" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:19.441186" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:19.440376" elapsed="0.000908"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:19.443682" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:19.443760" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:19.443403" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:19.443994" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:19.445391" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:19.760330" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:19.445019" elapsed="0.315466"/>
</kw>
<msg time="2026-04-19T03:01:19.760571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:19.444632" elapsed="0.316029"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:19.442625" elapsed="0.318326"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:19.762485" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:19.785154" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:19.785693" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:19.786017" 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-19T03:01:19.762091" elapsed="0.024183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:19.788553" elapsed="0.000998"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:19.791293" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:19.790621" elapsed="0.000826"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:19.792022" elapsed="0.000104"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:19.791684" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:19.791599" elapsed="0.000676"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:19.792780" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T03:01:19.792485" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:19.792414" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:19.793304" elapsed="0.000056"/>
</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-19T03:01:19.799646" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T03:01:19.800253" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:19.800620" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:19.795249" elapsed="0.005584"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:19.432173" elapsed="0.368905"/>
</kw>
<msg time="2026-04-19T03:01:19.801406" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:19.431197" elapsed="0.370275"/>
</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-19T03:01:19.430437" elapsed="0.371118"/>
</kw>
<msg time="2026-04-19T03:01:19.801596" 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-19T03:01:19.429701" elapsed="0.371942"/>
</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-19T03:01:19.804812" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:01:19.805335" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:19.805633" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:19.801945" elapsed="0.003836"/>
</kw>
<msg time="2026-04-19T03:01:19.805943" level="INFO">${output} = 1</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-19T03:01:19.428003" elapsed="0.377966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:19.806451" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:19.806194" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:19.806540" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:01:19.806709" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:19.425853" elapsed="0.380885"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:19.806787" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:01:19.806936" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:19.423688" elapsed="0.383273"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:19.807538" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:19.807137" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:19.422605" elapsed="0.385126">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:21.811305" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:21.810455" elapsed="0.000899"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:21.812629" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:21.812246" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:21.813786" 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-19T03:01:21.813927" 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-19T03:01:21.813568" elapsed="0.000396"/>
</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-19T03:01:21.819586" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:21.818900" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:21.818518" elapsed="0.001260"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:21.821780" 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-19T03:01:21.822158" 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-19T03:01:21.821164" elapsed="0.001133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:21.824216" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:21.823617" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:21.826020" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:21.825321" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:21.828624" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:21.828702" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:21.828343" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:21.828941" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:21.830343" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:22.143125" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:21.829869" elapsed="0.313521"/>
</kw>
<msg time="2026-04-19T03:01:22.143470" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:21.829511" elapsed="0.314045"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:21.827408" elapsed="0.316422"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:22.145308" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:22.168226" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:22.168727" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:22.169111" 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-19T03:01:22.144909" elapsed="0.024418"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:22.171693" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:22.174853" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:22.173868" elapsed="0.001373"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:22.176128" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:22.175599" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:22.175476" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:22.177221" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:01:22.176742" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:22.176634" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:22.177754" elapsed="0.000085"/>
</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-19T03:01:22.183959" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:01:22.184538" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:22.184899" 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-19T03:01:22.180624" elapsed="0.004508"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:21.816661" elapsed="0.368701"/>
</kw>
<msg time="2026-04-19T03:01:22.185674" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:21.815712" elapsed="0.370018"/>
</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-19T03:01:21.814922" elapsed="0.370889"/>
</kw>
<msg time="2026-04-19T03:01:22.185852" 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-19T03:01:21.814204" elapsed="0.371693"/>
</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-19T03:01:22.189076" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:01:22.189552" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:22.189846" 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-19T03:01:22.186236" elapsed="0.003757"/>
</kw>
<msg time="2026-04-19T03:01:22.190111" level="INFO">${output} = 1</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-19T03:01:21.812970" elapsed="0.377167"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:22.190559" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:22.190312" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:22.190647" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:22.190798" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:21.811649" elapsed="0.379175"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:22.190870" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:01:22.191014" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:21.809624" elapsed="0.381491"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:22.191739" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:22.191337" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:21.808557" elapsed="0.383365">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:24.195475" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:24.194711" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:24.197724" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:24.197120" elapsed="0.000756"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:24.199392" 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-19T03:01:24.199541" 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-19T03:01:24.199124" elapsed="0.000453"/>
</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-19T03:01:24.205205" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:24.204521" elapsed="0.000796"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:24.204151" elapsed="0.001249"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:24.207418" 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-19T03:01:24.207760" 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-19T03:01:24.206776" elapsed="0.001122"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:24.209921" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:24.209316" elapsed="0.000734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:24.211736" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:24.211022" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:24.214146" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:24.214223" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:24.213847" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:24.214457" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:24.215707" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:24.574052" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:24.215388" elapsed="0.358799"/>
</kw>
<msg time="2026-04-19T03:01:24.574272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:24.215007" elapsed="0.359348"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:24.213078" elapsed="0.361549"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:24.576114" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:24.599153" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:24.599654" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:24.599989" 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-19T03:01:24.575717" elapsed="0.024526"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:24.602506" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:24.605697" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:24.604645" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:24.606923" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:24.606415" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:24.606290" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:24.608014" elapsed="0.000147"/>
</return>
<status status="PASS" start="2026-04-19T03:01:24.607567" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:24.607459" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:24.608575" elapsed="0.000084"/>
</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-19T03:01:24.615491" elapsed="0.000468"/>
</kw>
<kw name="Open 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-19T03:01:24.616279" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:24.616860" elapsed="0.000161"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:24.610855" elapsed="0.006357"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:24.202306" elapsed="0.415220"/>
</kw>
<msg time="2026-04-19T03:01:24.617955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:24.201341" elapsed="0.416823"/>
</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-19T03:01:24.200539" elapsed="0.417743"/>
</kw>
<msg time="2026-04-19T03:01:24.618340" 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-19T03:01:24.199801" elapsed="0.418603"/>
</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-19T03:01:24.622292" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:01:24.622767" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:24.623076" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:24.618814" elapsed="0.004412"/>
</kw>
<msg time="2026-04-19T03:01:24.623316" level="INFO">${output} = 1</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-19T03:01:24.198488" elapsed="0.424853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:24.623779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:24.623532" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:24.623867" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:24.624020" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:24.196000" elapsed="0.428061"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:24.624108" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:01:24.624253" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:24.193801" elapsed="0.430477"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:24.624832" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:24.624440" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:24.192700" elapsed="0.432369">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:26.628933" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:26.628090" elapsed="0.000915"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:26.631470" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:26.630856" elapsed="0.000652"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:26.632676" 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-19T03:01:26.632819" 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-19T03:01:26.632443" elapsed="0.000412"/>
</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-19T03:01:26.640622" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:26.639929" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:26.637441" elapsed="0.003378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:26.642938" 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-19T03:01:26.643300" 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-19T03:01:26.642327" elapsed="0.001115"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:26.645599" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:26.644807" elapsed="0.000947"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:26.647728" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:26.647010" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:26.650313" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:26.650393" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:26.649837" elapsed="0.000581"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:26.650629" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:26.651879" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:26.966239" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:26.651557" elapsed="0.314827"/>
</kw>
<msg time="2026-04-19T03:01:26.966469" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:26.651198" elapsed="0.315363"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:26.649067" elapsed="0.317778"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:26.968401" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:26.991420" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:26.991924" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:26.992313" 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-19T03:01:26.967973" elapsed="0.024573"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:26.994873" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:26.997179" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:26.996517" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:26.997988" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:26.997573" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:26.997490" elapsed="0.000719"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:26.998771" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T03:01:26.998435" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:26.998348" elapsed="0.000657"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:26.999181" elapsed="0.000056"/>
</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-19T03:01:27.006146" elapsed="0.000735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:27.007214" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:27.007787" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:27.001154" elapsed="0.006859"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:26.635560" elapsed="0.372701"/>
</kw>
<msg time="2026-04-19T03:01:27.008628" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:26.634610" elapsed="0.374094"/>
</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-19T03:01:26.633816" elapsed="0.374991"/>
</kw>
<msg time="2026-04-19T03:01:27.008856" 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-19T03:01:26.633098" elapsed="0.375818"/>
</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-19T03:01:27.012430" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:27.012914" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:27.013258" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:27.009607" elapsed="0.003808"/>
</kw>
<msg time="2026-04-19T03:01:27.013513" level="INFO">${output} = 1</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-19T03:01:26.631828" elapsed="0.381711"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:27.013981" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:27.013729" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:27.014106" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:01:27.014268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:26.629685" elapsed="0.384608"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:27.014340" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:01:27.014488" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:26.627092" elapsed="0.387421"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:27.015111" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:27.014674" elapsed="0.000522">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:26.625906" elapsed="0.389408">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:29.018786" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:29.018004" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:29.021278" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:29.020291" elapsed="0.001079"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:29.023322" 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-19T03:01:29.023768" 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-19T03:01:29.022879" elapsed="0.000955"/>
</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-19T03:01:29.031183" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:29.030685" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:29.030624" elapsed="0.000705"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:29.033078" 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-19T03:01:29.033362" 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-19T03:01:29.032349" elapsed="0.001119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:29.035087" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:29.034484" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:29.036964" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:29.036246" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:29.039489" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:29.039569" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:29.039196" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:29.039807" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:29.041128" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:29.401663" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:29.040755" elapsed="0.361080"/>
</kw>
<msg time="2026-04-19T03:01:29.401929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:29.040388" elapsed="0.361638"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:29.038412" elapsed="0.363912"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:29.403887" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:29.426842" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:29.427410" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:29.427748" 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-19T03:01:29.403459" elapsed="0.024502"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:29.430216" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:29.433422" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:29.432430" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:29.434567" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:29.434010" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:29.433880" elapsed="0.001037"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:29.435603" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:01:29.435290" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:29.435179" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:29.435842" 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-19T03:01:29.440779" 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-19T03:01:29.441520" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:29.441890" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:29.437250" elapsed="0.004868"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:29.028894" elapsed="0.413454"/>
</kw>
<msg time="2026-04-19T03:01:29.442657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:29.026950" elapsed="0.415765"/>
</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-19T03:01:29.025549" elapsed="0.417268"/>
</kw>
<msg time="2026-04-19T03:01:29.442859" 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-19T03:01:29.024236" elapsed="0.418671"/>
</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-19T03:01:29.445939" 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-19T03:01:29.446431" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:29.446751" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:29.443227" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T03:01:29.446998" level="INFO">${output} = 1</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-19T03:01:29.021878" elapsed="0.425169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:29.447476" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:29.447227" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:29.447562" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:29.447716" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:29.019350" elapsed="0.428391"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:29.447788" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:01:29.447936" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:29.017137" elapsed="0.430824"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:29.448610" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:29.448209" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:29.016090" elapsed="0.432709">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:31.452390" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:31.451568" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:31.454499" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:31.453864" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:31.456502" 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-19T03:01:31.456730" 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-19T03:01:31.456152" elapsed="0.000637"/>
</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-19T03:01:31.464907" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:31.464227" elapsed="0.000855"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:31.464103" elapsed="0.001041"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:31.466812" 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-19T03:01:31.467071" 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-19T03:01:31.466131" elapsed="0.001041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:31.468781" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:31.468231" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:31.470614" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:31.469860" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:31.473085" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:31.473166" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:31.472762" 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-19T03:01:31.473407" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:31.474793" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:31.793349" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:31.474470" elapsed="0.319035"/>
</kw>
<msg time="2026-04-19T03:01:31.793595" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:31.473960" elapsed="0.319725"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:31.471970" elapsed="0.321997"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:31.795465" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:31.818530" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:31.819072" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:31.819416" 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-19T03:01:31.795072" elapsed="0.024557"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:31.821878" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:31.825086" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:31.824114" elapsed="0.001208"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:31.826211" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:31.825674" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:31.825548" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:31.827493" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:01:31.826827" elapsed="0.000891"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:31.826718" elapsed="0.001169"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:31.828110" elapsed="0.000086"/>
</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-19T03:01:31.833153" 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-19T03:01:31.833696" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:31.834065" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:31.829722" elapsed="0.004556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:31.461128" elapsed="0.373375"/>
</kw>
<msg time="2026-04-19T03:01:31.834954" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:31.459563" elapsed="0.375451"/>
</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-19T03:01:31.458342" elapsed="0.376812"/>
</kw>
<msg time="2026-04-19T03:01:31.835197" 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-19T03:01:31.457177" elapsed="0.378068"/>
</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-19T03:01:31.838239" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:01:31.838714" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:31.839012" elapsed="0.000209"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:31.835542" elapsed="0.003733"/>
</kw>
<msg time="2026-04-19T03:01:31.839368" level="INFO">${output} = 1</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-19T03:01:31.455111" elapsed="0.384283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:31.839849" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:31.839574" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:31.839937" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:31.840114" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:31.452917" elapsed="0.387224"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:31.840190" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:01:31.840335" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:31.450730" elapsed="0.389631"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:31.840909" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:31.840518" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:31.449669" elapsed="0.391440">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:33.844797" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:01:33.843978" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:33.846910" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:33.846294" elapsed="0.000678"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:33.848903" 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-19T03:01:33.849074" 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-19T03:01:33.848667" elapsed="0.000446"/>
</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-19T03:01:33.854396" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:33.853735" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:33.853656" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:33.857106" 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-19T03:01:33.857448" 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-19T03:01:33.855960" elapsed="0.001632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:33.859875" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:33.859112" elapsed="0.000950"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:33.862589" level="INFO">${conn_id} = 495</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:33.861600" elapsed="0.001126"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:33.865669" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:33.865748" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:33.865383" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:33.865982" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:33.867350" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:34.178617" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:33.866902" elapsed="0.311864"/>
</kw>
<msg time="2026-04-19T03:01:34.178852" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:33.866547" elapsed="0.312403"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:33.864605" elapsed="0.314654"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.180921" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:01:34.203499" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:34.203998" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:01:34.204447" 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-19T03:01:34.180500" elapsed="0.024180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:34.207127" elapsed="0.000941"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.210433" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:34.209413" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:34.211606" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:34.211080" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:34.210923" elapsed="0.000984"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:34.212749" elapsed="0.000187"/>
</return>
<status status="PASS" start="2026-04-19T03:01:34.212277" elapsed="0.000983"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:34.212161" elapsed="0.001242"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:34.213591" elapsed="0.000079"/>
</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-19T03:01:34.218487" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:01:34.219078" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:34.219444" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:34.215006" elapsed="0.004650"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:33.851756" elapsed="0.368128"/>
</kw>
<msg time="2026-04-19T03:01:34.220212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:33.850803" elapsed="0.369468"/>
</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-19T03:01:33.850062" elapsed="0.370293"/>
</kw>
<msg time="2026-04-19T03:01:34.220396" 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-19T03:01:33.849337" elapsed="0.371106"/>
</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-19T03:01:34.223618" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T03:01:34.224119" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:34.224421" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:34.220875" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T03:01:34.224671" level="INFO">${output} = 1</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-19T03:01:33.847488" elapsed="0.377212"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.225283" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:34.224911" elapsed="0.000417"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:34.225373" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:34.225529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:33.845352" elapsed="0.380203"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:01:34.225602" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:01:34.225752" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:01:33.843138" elapsed="0.382638"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.226353" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:01:34.225934" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:01:33.841963" elapsed="0.384590">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T03:01:34.226643" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T02:55:32.674169" elapsed="361.552570">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T02:55:32.674009" elapsed="361.552808">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T02:55:24.132480" elapsed="370.094404">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:34.227135" elapsed="0.000026"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:01:34.227205" elapsed="0.000015"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T02:55:21.901984" elapsed="372.325320">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T02:55:21.901186" elapsed="372.326273">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s17-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T03:01:34.232470" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:34.232078" elapsed="0.000419"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.233224" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:34.232659" elapsed="0.000592"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:34.233296" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:34.233451" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:34.231680" elapsed="0.001796"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.235774" 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-19T03:01:34.235875" 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-19T03:01:34.235632" elapsed="0.000308"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:34.238102" level="INFO">${ip_address} = 10.30.171.9</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-19T03:01:34.237755" elapsed="0.000375"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:34.238181" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:34.238334" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:34.237412" elapsed="0.000947"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.241948" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:34.241202" elapsed="0.000869"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.244857" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:34.244947" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:34.244528" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.245182" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.246398" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:34.936828" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 02:55:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:34.246075" elapsed="0.690911"/>
</kw>
<msg time="2026-04-19T03:01:34.937095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.245689" elapsed="0.691500"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:34.244012" elapsed="0.693304"/>
</kw>
<msg time="2026-04-19T03:01:34.937369" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.243584" elapsed="0.693835"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:34.242654" elapsed="0.694950"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:34.937710" elapsed="0.000058"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:34.240000" elapsed="0.698023"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.941294" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:34.953942" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:34.954285" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:34.954391" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:34.954483" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:34.941094" elapsed="0.013442"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.956708" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:34.956003" elapsed="0.000816"/>
</kw>
<msg time="2026-04-19T03:01:34.957074" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:34.957185" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:34.955171" elapsed="0.002068"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.958832" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:34.957770" elapsed="0.001124"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.960922" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:34.960571" elapsed="0.000539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.961671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:34.961331" elapsed="0.000400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.962357" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:34.961943" elapsed="0.000478"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:34.959962" elapsed="0.002537"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:34.959294" elapsed="0.003254"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:34.959191" elapsed="0.003393"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:34.962889" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:34.962745" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:34.962713" elapsed="0.000269"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:34.963286" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T03:01:34.963145" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:34.963120" elapsed="0.000287"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:34.963679" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:34.940146" elapsed="0.023878"/>
</kw>
<msg time="2026-04-19T03:01:34.964257" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:34.964356" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:34.938359" elapsed="0.026048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:34.964765" elapsed="0.000351"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:34.965533" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:01:34.965282" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:34.965255" elapsed="0.000497"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:34.966075" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:34.239081" elapsed="0.727247"/>
</kw>
<msg time="2026-04-19T03:01:34.966409" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.238518" elapsed="0.727961"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:34.236835" elapsed="0.729763"/>
</kw>
<msg time="2026-04-19T03:01:34.966655" 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-19T03:01:34.236119" elapsed="0.730598"/>
</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-19T03:01:34.971293" 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-19T03:01:34.971908" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:34.972232" 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-19T03:01:34.967149" elapsed="0.005230"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:34.234988" elapsed="0.737450"/>
</kw>
<msg time="2026-04-19T03:01:34.972493" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.234539" elapsed="0.738004"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:34.233826" elapsed="0.738800"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:01:34.233671" elapsed="0.739037"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.974913" 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-19T03:01:34.975012" 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-19T03:01:34.974777" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:34.977192" level="INFO">${ip_address} = 10.30.171.128</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-19T03:01:34.976858" elapsed="0.000361"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:34.977268" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:34.977419" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:34.976535" elapsed="0.000908"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.980884" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:34.980198" elapsed="0.000784"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:34.983833" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:34.983911" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:34.983567" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.984110" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:34.985283" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:35.663840" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 02:55:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:34.984951" elapsed="0.679053"/>
</kw>
<msg time="2026-04-19T03:01:35.664120" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.984597" elapsed="0.679624"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:34.982826" elapsed="0.681524"/>
</kw>
<msg time="2026-04-19T03:01:35.664402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.982435" elapsed="0.682018"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:34.981539" elapsed="0.683104"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:35.664743" elapsed="0.000059"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:34.979059" elapsed="0.686024"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:35.668351" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:35.681167" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:35.681435" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:35.681534" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:35.681624" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:35.668146" elapsed="0.013527"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:35.683683" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:35.683071" elapsed="0.000712"/>
</kw>
<msg time="2026-04-19T03:01:35.683988" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:35.684115" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:35.682265" elapsed="0.001901"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:35.685755" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:35.684762" elapsed="0.001052"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:35.688451" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:35.687868" elapsed="0.000675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:35.689456" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:35.688893" elapsed="0.000653"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:35.690475" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:35.689878" elapsed="0.000693"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:35.686922" elapsed="0.003763"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:35.686155" elapsed="0.004571"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:35.686101" elapsed="0.004651"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:35.690975" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:35.690864" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:35.690845" elapsed="0.000213"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:35.691254" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T03:01:35.691161" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:35.691143" elapsed="0.000197"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:35.691537" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:35.667183" elapsed="0.024599"/>
</kw>
<msg time="2026-04-19T03:01:35.691931" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:35.692001" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:35.665404" elapsed="0.026665"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:35.692329" elapsed="0.000245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:35.692871" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:01:35.692693" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:35.692674" elapsed="0.000366"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:35.693189" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:34.978140" elapsed="0.715231"/>
</kw>
<msg time="2026-04-19T03:01:35.693431" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.977600" elapsed="0.715881"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:34.975987" elapsed="0.717584"/>
</kw>
<msg time="2026-04-19T03:01:35.693614" 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-19T03:01:34.975225" elapsed="0.718434"/>
</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-19T03:01:35.696758" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:01:35.697279" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:35.697586" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:35.693960" elapsed="0.003772"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:34.974164" elapsed="0.723625"/>
</kw>
<msg time="2026-04-19T03:01:35.697844" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:34.973682" elapsed="0.724211"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:34.972964" elapsed="0.725112"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:01:34.972805" elapsed="0.725321"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:35.700332" 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-19T03:01:35.700432" 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-19T03:01:35.700181" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:35.704471" level="INFO">${ip_address} = 10.30.171.206</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-19T03:01:35.704159" elapsed="0.000339"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:35.704547" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:35.704699" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:35.703822" elapsed="0.000901"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:35.708245" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:35.707531" elapsed="0.000813"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:35.710962" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:35.711057" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:35.710694" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:35.711239" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:35.712406" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:36.035612" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:35.712090" elapsed="0.323733"/>
</kw>
<msg time="2026-04-19T03:01:36.035912" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:35.711721" elapsed="0.324291"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:35.710207" elapsed="0.325953"/>
</kw>
<msg time="2026-04-19T03:01:36.036215" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:35.709778" elapsed="0.326488"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:35.708883" elapsed="0.327655"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:36.036641" elapsed="0.000064"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:35.706391" elapsed="0.330571"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.040298" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:36.053299" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:36.053559" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:36.053803" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:36.053900" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:36.040087" elapsed="0.013864"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.056156" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:36.055437" elapsed="0.000823"/>
</kw>
<msg time="2026-04-19T03:01:36.056472" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:36.056572" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:36.054504" elapsed="0.002118"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.058344" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:36.057153" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.060932" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.060505" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.061560" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.061225" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.062177" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.061826" elapsed="0.000412"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:36.059505" elapsed="0.002807"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:36.058704" elapsed="0.003657"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.058652" elapsed="0.003746"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:36.062696" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:36.062554" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.062527" elapsed="0.000262"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:36.063081" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T03:01:36.062931" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.062906" elapsed="0.000292"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:36.063471" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:36.039081" elapsed="0.024743"/>
</kw>
<msg time="2026-04-19T03:01:36.064068" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:36.064170" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:36.037295" elapsed="0.026926"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:36.064577" elapsed="0.000314"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:36.065331" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T03:01:36.065080" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.065051" elapsed="0.000494"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:36.065747" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:35.705440" elapsed="0.360569"/>
</kw>
<msg time="2026-04-19T03:01:36.066113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:35.704880" elapsed="0.361305"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:35.703290" elapsed="0.363018"/>
</kw>
<msg time="2026-04-19T03:01:36.066368" 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-19T03:01:35.700612" elapsed="0.365821"/>
</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-19T03:01:36.070733" 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-19T03:01:36.071477" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:36.071882" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:36.066851" elapsed="0.005246"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:35.699551" elapsed="0.372660"/>
</kw>
<msg time="2026-04-19T03:01:36.072268" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:35.699103" elapsed="0.373216"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:35.698388" elapsed="0.374019"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:01:35.698227" elapsed="0.374228"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:34.233533" elapsed="1.838959"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:01:34.229111" elapsed="1.843442"/>
</kw>
<kw name="Check_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-19T03:01:36.076290" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:36.075853" elapsed="0.000464"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.076781" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:36.076478" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:36.076852" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:36.077004" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:36.075444" elapsed="0.001600"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.079424" 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-19T03:01:36.079538" 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-19T03:01:36.079285" elapsed="0.000279"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:36.081361" level="INFO">${ip_address} = 10.30.171.9</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-19T03:01:36.081050" elapsed="0.000338"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:36.081438" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:36.081590" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:36.080715" elapsed="0.000899"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.085134" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:36.084420" elapsed="0.000813"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.088004" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:36.088101" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:36.087736" 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-19T03:01:36.088284" elapsed="0.000317"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.089462" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:36.416715" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:36.089144" elapsed="0.328058"/>
</kw>
<msg time="2026-04-19T03:01:36.417455" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.088770" elapsed="0.328902"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:36.087230" elapsed="0.330682"/>
</kw>
<msg time="2026-04-19T03:01:36.418015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.086676" elapsed="0.331470"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:36.085778" elapsed="0.332669"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:36.418598" elapsed="0.000081"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:36.083252" elapsed="0.335832"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.423829" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:36.437180" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:36.437555" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:36.437654" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:36.437744" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:36.423517" elapsed="0.014280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.440117" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:36.439433" elapsed="0.000789"/>
</kw>
<msg time="2026-04-19T03:01:36.440433" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:36.440530" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:36.438481" elapsed="0.002098"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.442132" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:36.441101" elapsed="0.001091"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.444940" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.444379" elapsed="0.000683"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.445865" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.445453" elapsed="0.000453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.446306" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.446070" elapsed="0.000278"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:36.443384" elapsed="0.003019"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:36.442501" elapsed="0.003938"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.442446" elapsed="0.004021"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:36.446684" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:36.446578" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.446558" elapsed="0.000194"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:36.446946" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T03:01:36.446853" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.446836" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:36.447269" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:36.422100" elapsed="0.025422"/>
</kw>
<msg time="2026-04-19T03:01:36.447673" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:36.447746" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:36.419500" elapsed="0.028287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:36.448072" elapsed="0.000497"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:36.448872" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:01:36.448690" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.448670" elapsed="0.000373"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:36.449203" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:36.082322" elapsed="0.367065"/>
</kw>
<msg time="2026-04-19T03:01:36.449580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.081772" elapsed="0.367868"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:36.080195" elapsed="0.369534"/>
</kw>
<msg time="2026-04-19T03:01:36.449770" 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-19T03:01:36.079719" elapsed="0.370097"/>
</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-19T03:01:36.452924" 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-19T03:01:36.453448" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:36.453759" 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-19T03:01:36.450146" elapsed="0.003760"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:36.078656" elapsed="0.375309"/>
</kw>
<msg time="2026-04-19T03:01:36.454021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.078213" elapsed="0.375874"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:36.077495" elapsed="0.376680"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:01:36.077236" elapsed="0.376986"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.456473" 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-19T03:01:36.456573" 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-19T03:01:36.456336" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:36.458455" level="INFO">${ip_address} = 10.30.171.128</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-19T03:01:36.458124" elapsed="0.000358"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:36.458531" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:36.458681" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:36.457787" elapsed="0.000921"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.462248" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:36.461516" elapsed="0.000832"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.465212" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:36.465297" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:36.464916" 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-19T03:01:36.465482" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.466677" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:36.787719" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:36.466358" elapsed="0.321558"/>
</kw>
<msg time="2026-04-19T03:01:36.787996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.465978" elapsed="0.322114"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:36.464420" elapsed="0.323780"/>
</kw>
<msg time="2026-04-19T03:01:36.788252" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.463810" elapsed="0.324494"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:36.462899" elapsed="0.325571"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:36.788566" elapsed="0.000057"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:36.460352" elapsed="0.328513"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.792067" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:36.804882" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:36.805133" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:36.805224" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:36.805304" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:36.791851" elapsed="0.013499"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.807415" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:36.806680" elapsed="0.000840"/>
</kw>
<msg time="2026-04-19T03:01:36.807732" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:36.807830" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:36.805722" elapsed="0.002157"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.809416" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:36.808415" elapsed="0.001061"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.812158" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.811559" elapsed="0.000694"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.813151" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.812590" elapsed="0.000652"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.814553" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:36.813570" elapsed="0.001082"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:36.810571" elapsed="0.004201"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:36.809771" elapsed="0.005079"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.809721" elapsed="0.005186"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:36.815530" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:36.815293" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.815245" elapsed="0.000436"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:36.815907" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T03:01:36.815813" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.815795" elapsed="0.000198"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:36.816210" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:36.790900" elapsed="0.025555"/>
</kw>
<msg time="2026-04-19T03:01:36.816601" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:36.816673" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:36.789165" elapsed="0.027544"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:36.816964" elapsed="0.000244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:36.817506" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:01:36.817326" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:36.817306" elapsed="0.000354"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:36.817804" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:36.459424" elapsed="0.358560"/>
</kw>
<msg time="2026-04-19T03:01:36.818103" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.458867" elapsed="0.359288"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:36.457261" elapsed="0.360981"/>
</kw>
<msg time="2026-04-19T03:01:36.818283" 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-19T03:01:36.456754" elapsed="0.361574"/>
</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-19T03:01:36.821579" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:01:36.822069" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:36.822376" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:36.818627" elapsed="0.003933"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:36.455652" elapsed="0.366968"/>
</kw>
<msg time="2026-04-19T03:01:36.822675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.455205" elapsed="0.367519"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:36.454478" elapsed="0.368331"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:01:36.454320" elapsed="0.368535"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.825563" 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-19T03:01:36.825693" 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-19T03:01:36.825380" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:36.827750" level="INFO">${ip_address} = 10.30.171.206</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-19T03:01:36.827408" elapsed="0.000380"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:36.827860" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:01:36.828059" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:36.827072" elapsed="0.001015"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.831607" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:36.830882" elapsed="0.000827"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:36.834658" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:36.834736" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:36.834388" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.834954" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:36.836193" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:37.148138" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:36.835838" elapsed="0.312528"/>
</kw>
<msg time="2026-04-19T03:01:37.148448" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.835477" elapsed="0.313061"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:36.833871" elapsed="0.314778"/>
</kw>
<msg time="2026-04-19T03:01:37.148703" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.833469" elapsed="0.315285"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:36.832351" elapsed="0.316575"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:37.149064" elapsed="0.000062"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:36.829717" elapsed="0.319659"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.152558" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:37.164753" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:37.164926" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:37.164988" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:37.165069" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:37.152352" elapsed="0.012751"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.166675" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:37.166016" elapsed="0.000761"/>
</kw>
<msg time="2026-04-19T03:01:37.166982" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:37.167139" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:37.165427" elapsed="0.001767"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.168693" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:37.167685" elapsed="0.001067"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.171433" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.170808" elapsed="0.000719"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.172442" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.171863" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.173822" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.172908" elapsed="0.000959"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:37.169873" elapsed="0.004049"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:37.169104" elapsed="0.004853"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.169022" elapsed="0.004962"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:37.174223" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:37.174116" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.174096" elapsed="0.000194"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:37.174482" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:01:37.174389" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.174371" elapsed="0.000194"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:37.174761" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:37.151410" elapsed="0.023592"/>
</kw>
<msg time="2026-04-19T03:01:37.175183" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:37.175254" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:37.149661" elapsed="0.025630"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:37.175544" elapsed="0.000234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:37.176106" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:01:37.175905" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.175886" elapsed="0.000373"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:37.176402" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:36.828781" elapsed="0.347797"/>
</kw>
<msg time="2026-04-19T03:01:37.176676" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.828248" elapsed="0.348480"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:36.826501" elapsed="0.350325"/>
</kw>
<msg time="2026-04-19T03:01:37.176868" 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-19T03:01:36.825897" elapsed="0.351017"/>
</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-19T03:01:37.179964" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:01:37.180486" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:37.180808" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:37.177229" elapsed="0.003729"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:36.824725" elapsed="0.356292"/>
</kw>
<msg time="2026-04-19T03:01:37.181088" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:36.824197" elapsed="0.356941"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:36.823155" elapsed="0.358067"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:01:36.822969" elapsed="0.358299"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:36.077100" elapsed="1.104205"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:01:36.072793" elapsed="1.108572"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.181526" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T03:01:37.185714" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:37.185337" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.186224" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:37.185902" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:37.186295" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:37.186447" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:37.184946" elapsed="0.001526"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.188734" 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-19T03:01:37.188835" 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-19T03:01:37.188587" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:37.190864" level="INFO">${ip_address} = 10.30.171.9</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-19T03:01:37.190416" elapsed="0.000545"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:37.191218" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:01:37.191379" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:37.190004" elapsed="0.001401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.195442" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:37.195027" elapsed="0.000442"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.197275" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:37.197351" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:37.196994" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.197533" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.198813" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:37.503451" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:37.198490" elapsed="0.305108"/>
</kw>
<msg time="2026-04-19T03:01:37.503681" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.198128" elapsed="0.305640"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:37.196480" elapsed="0.307396"/>
</kw>
<msg time="2026-04-19T03:01:37.503929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.196084" elapsed="0.307896"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:37.195671" elapsed="0.308400"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:37.504173" elapsed="0.000046"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:37.194343" elapsed="0.310119"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.507236" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:37.520348" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:37.520602" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:37.520701" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:37.520791" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:37.507000" elapsed="0.013842"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.522672" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:37.522068" elapsed="0.000705"/>
</kw>
<msg time="2026-04-19T03:01:37.523005" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:37.523137" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:37.521278" elapsed="0.001912"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.524540" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:37.523567" elapsed="0.001032"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.527095" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.526493" elapsed="0.000699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.528093" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.527530" elapsed="0.000657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.529072" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.528520" elapsed="0.000764"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:37.525568" elapsed="0.003838"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:37.524778" elapsed="0.004706"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.524731" elapsed="0.004810"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:37.529893" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:37.529666" elapsed="0.000325"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.529628" elapsed="0.000443"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:37.530392" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T03:01:37.530192" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.530157" elapsed="0.000420"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:37.530939" elapsed="0.000051"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:37.506462" elapsed="0.024777"/>
</kw>
<msg time="2026-04-19T03:01:37.531756" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:37.531840" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:37.505582" elapsed="0.026298"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:37.532869" elapsed="0.000406"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:37.533588" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T03:01:37.533408" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.533349" elapsed="0.000386"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:37.534724" elapsed="0.000035"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:37.192330" elapsed="0.342611"/>
</kw>
<msg time="2026-04-19T03:01:37.535339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.191561" elapsed="0.343833"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:37.189485" elapsed="0.345996"/>
</kw>
<msg time="2026-04-19T03:01:37.535522" 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-19T03:01:37.189016" elapsed="0.346550"/>
</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-19T03:01:37.538639" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T03:01:37.539135" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:37.539446" 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-19T03:01:37.535899" elapsed="0.003694"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:37.187959" elapsed="0.351691"/>
</kw>
<msg time="2026-04-19T03:01:37.539705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.187520" elapsed="0.352238"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:37.186815" elapsed="0.353026"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:01:37.186661" elapsed="0.353226"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.542234" 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-19T03:01:37.542371" 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-19T03:01:37.542096" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:37.544455" level="INFO">${ip_address} = 10.30.171.128</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-19T03:01:37.543985" elapsed="0.000529"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:37.544734" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:01:37.544890" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:37.543586" elapsed="0.001329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.548960" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:37.548578" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.550727" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:37.550815" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:37.550462" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.551005" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.552244" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:37.874280" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:37.551904" elapsed="0.322529"/>
</kw>
<msg time="2026-04-19T03:01:37.874519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.551553" elapsed="0.323057"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:37.549961" elapsed="0.324763"/>
</kw>
<msg time="2026-04-19T03:01:37.874776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.549577" elapsed="0.325249"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:37.549200" elapsed="0.325703"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:37.875010" elapsed="0.000075"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:37.547897" elapsed="0.327432"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.878053" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:37.890745" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:37.890936" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:37.890995" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:37.894587" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:37.877842" elapsed="0.016809"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.896564" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:37.895931" elapsed="0.000734"/>
</kw>
<msg time="2026-04-19T03:01:37.896880" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:37.896997" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:37.895137" elapsed="0.001941"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.898438" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:37.897459" elapsed="0.001038"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.901123" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.900498" elapsed="0.000721"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.901932" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.901563" elapsed="0.000410"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.902376" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:37.902139" elapsed="0.000280"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:37.899565" elapsed="0.002907"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:37.898774" elapsed="0.003735"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.898727" elapsed="0.003808"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:37.902692" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:37.902591" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.902574" elapsed="0.000184"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:37.902899" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:01:37.902810" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.902795" elapsed="0.000187"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:37.903143" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:37.877297" elapsed="0.025965"/>
</kw>
<msg time="2026-04-19T03:01:37.903502" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:37.903585" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:37.876421" elapsed="0.027205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:37.904625" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:37.905363" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T03:01:37.905182" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:37.905123" elapsed="0.000383"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:37.906494" elapsed="0.000035"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:37.545793" elapsed="0.360905"/>
</kw>
<msg time="2026-04-19T03:01:37.907096" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.545272" elapsed="0.361877"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:37.543058" elapsed="0.364174"/>
</kw>
<msg time="2026-04-19T03:01:37.907273" 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-19T03:01:37.542555" elapsed="0.364762"/>
</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-19T03:01:37.910352" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:01:37.910826" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:37.911165" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:37.907611" elapsed="0.003704"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:37.541471" elapsed="0.369901"/>
</kw>
<msg time="2026-04-19T03:01:37.911427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.540843" elapsed="0.370633"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:37.540156" elapsed="0.371400"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:01:37.539984" elapsed="0.371684"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.913956" 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-19T03:01:37.914071" 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-19T03:01:37.913820" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:37.916117" level="INFO">${ip_address} = 10.30.171.206</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-19T03:01:37.915653" elapsed="0.000523"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:37.916398" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:01:37.916556" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:37.915244" elapsed="0.001336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.979111" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:37.978625" elapsed="0.000518"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:37.981012" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:37.981107" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:37.980731" 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-19T03:01:37.981293" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:37.982512" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:38.298605" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:37.982183" elapsed="0.316580"/>
</kw>
<msg time="2026-04-19T03:01:38.298855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.981807" elapsed="0.317158"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:37.980233" elapsed="0.318875"/>
</kw>
<msg time="2026-04-19T03:01:38.299161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.979781" elapsed="0.319432"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:37.979380" elapsed="0.319911"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:38.299399" elapsed="0.000046"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:37.919280" elapsed="0.380409"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.302639" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:38.315087" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:38.315204" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:38.315249" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:38.315290" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:38.302443" elapsed="0.012871"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.316574" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:38.315938" elapsed="0.000734"/>
</kw>
<msg time="2026-04-19T03:01:38.316994" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:38.317126" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:38.315495" elapsed="0.001683"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.318539" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:38.317555" elapsed="0.001042"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.321086" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:38.320505" elapsed="0.000678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.322088" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:38.321526" elapsed="0.000656"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.323084" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:38.322517" elapsed="0.000667"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:38.319582" elapsed="0.003718"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:38.318775" elapsed="0.004605"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.318730" elapsed="0.004707"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:38.323783" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:38.323561" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.323524" elapsed="0.000405"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:38.324274" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:01:38.324074" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.324010" elapsed="0.000450"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:38.324783" elapsed="0.000048"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:38.301696" elapsed="0.023570"/>
</kw>
<msg time="2026-04-19T03:01:38.325800" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:38.325981" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:38.300809" elapsed="0.025466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:38.328146" elapsed="0.000392"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:38.328861" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T03:01:38.328673" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.328614" elapsed="0.000391"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:38.329983" elapsed="0.000036"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:37.917366" elapsed="0.412841"/>
</kw>
<msg time="2026-04-19T03:01:38.330589" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.916738" elapsed="0.413905"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:37.914710" elapsed="0.416023"/>
</kw>
<msg time="2026-04-19T03:01:38.330789" 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-19T03:01:37.914254" elapsed="0.416580"/>
</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-19T03:01:38.333880" 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-19T03:01:38.334376" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:38.334684" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:38.331164" elapsed="0.003684"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:37.913204" elapsed="0.421703"/>
</kw>
<msg time="2026-04-19T03:01:38.334997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.912627" elapsed="0.422462"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:37.911922" elapsed="0.423256"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:01:37.911769" elapsed="0.423456"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:37.186526" elapsed="1.148733"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:01:37.182510" elapsed="1.152807"/>
</kw>
<msg time="2026-04-19T03:01:38.335356" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:37.182006" elapsed="1.153395"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:38.335563" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T03:01:34.228538" elapsed="4.107115"/>
</kw>
<kw name="Check_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-19T03:01:38.339239" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:38.338693" elapsed="0.000574"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.339735" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:38.339430" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:38.339806" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:38.339960" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:38.338315" elapsed="0.001670"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.342480" 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-19T03:01:38.342582" 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-19T03:01:38.342344" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:38.344481" level="INFO">${ip_address} = 10.30.171.9</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-19T03:01:38.344209" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:38.344557" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:38.344708" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:38.343862" elapsed="0.000871"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.347334" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:38.346570" elapsed="0.000805"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.350422" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:38.350498" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:38.350154" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.350703" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.351889" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:38.658633" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:38.351573" elapsed="0.307424"/>
</kw>
<msg time="2026-04-19T03:01:38.659174" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.351217" elapsed="0.308104"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:38.349650" elapsed="0.309874"/>
</kw>
<msg time="2026-04-19T03:01:38.659701" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.348919" elapsed="0.310935"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:38.347638" elapsed="0.312521"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:38.660367" elapsed="0.000075"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:38.346158" elapsed="0.314527"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.666694" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:38.679489" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:38.680109" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:01:38.680442" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:38.680761" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:38.666344" elapsed="0.014623"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.685139" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:38.684443" elapsed="0.000806"/>
</kw>
<msg time="2026-04-19T03:01:38.685711" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:38.685947" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:38.683254" elapsed="0.002852"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.688667" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:38.687580" elapsed="0.001232"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.691601" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:38.691223" elapsed="0.000570"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.692400" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:38.692022" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.693166" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:38.692685" elapsed="0.000549"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:38.690534" elapsed="0.002839"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:38.689160" elapsed="0.004277"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.688969" elapsed="0.004556"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:38.694077" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:38.693750" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.693678" elapsed="0.000582"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:38.694771" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:01:38.694480" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.694410" elapsed="0.000588"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:38.696450" elapsed="0.000083"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:38.662818" elapsed="0.034032"/>
</kw>
<msg time="2026-04-19T03:01:38.697392" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:38.697460" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:38.661144" elapsed="0.036352"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:38.697734" elapsed="0.000242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:38.698168" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:01:38.698056" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:38.698023" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:38.698395" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:38.345435" elapsed="0.353076"/>
</kw>
<msg time="2026-04-19T03:01:38.698606" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.344891" elapsed="0.353765"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:38.343331" elapsed="0.355546"/>
</kw>
<msg time="2026-04-19T03:01:38.698955" 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-19T03:01:38.342781" elapsed="0.356219"/>
</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-19T03:01:38.702297" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:01:38.702769" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:38.703090" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:38.699308" elapsed="0.003931"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:38.341489" elapsed="0.361938"/>
</kw>
<msg time="2026-04-19T03:01:38.703519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.341043" elapsed="0.362522"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:38.340339" elapsed="0.363437"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:01:38.340186" elapsed="0.363678"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.706180" 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-19T03:01:38.706279" 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-19T03:01:38.706042" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:38.708042" level="INFO">${ip_address} = 10.30.171.128</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-19T03:01:38.707758" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:38.708119" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:38.708271" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:38.707440" elapsed="0.000855"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.710941" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:38.710212" elapsed="0.000769"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:38.714219" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:38.714297" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:38.713772" 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-19T03:01:38.714481" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:38.715669" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:39.033407" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:38.715355" elapsed="0.318173"/>
</kw>
<msg time="2026-04-19T03:01:39.033602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.714972" elapsed="0.318706"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:38.713291" elapsed="0.320491"/>
</kw>
<msg time="2026-04-19T03:01:39.033886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.712549" elapsed="0.321409"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:38.711262" elapsed="0.322843"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:39.034202" elapsed="0.000039"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:38.709775" elapsed="0.324587"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.037623" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:39.050348" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:39.050722" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:01:39.051007" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:39.051403" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:39.037283" elapsed="0.014335"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.055784" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:39.055149" elapsed="0.000859"/>
</kw>
<msg time="2026-04-19T03:01:39.056569" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:39.056899" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:39.053905" elapsed="0.003241"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.060451" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:39.059451" elapsed="0.001099"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.062369" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.062112" elapsed="0.000357"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.062860" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.062623" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.063350" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.063099" elapsed="0.000299"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:39.061645" elapsed="0.001850"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:39.060715" elapsed="0.002825"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.060661" elapsed="0.002939"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:39.063971" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:39.063758" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.063708" elapsed="0.000522"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:39.064583" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:01:39.064381" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.064333" elapsed="0.000408"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:39.065726" elapsed="0.000057"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:39.035382" elapsed="0.030623"/>
</kw>
<msg time="2026-04-19T03:01:39.066264" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:39.066310" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:39.034575" elapsed="0.031760"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:39.066498" elapsed="0.000227"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:39.066908" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:01:39.066794" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.066774" elapsed="0.000217"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:39.067151" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:38.709080" elapsed="0.358192"/>
</kw>
<msg time="2026-04-19T03:01:39.067380" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.708451" elapsed="0.358979"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:38.706911" elapsed="0.360738"/>
</kw>
<msg time="2026-04-19T03:01:39.067730" 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-19T03:01:38.706458" elapsed="0.361317"/>
</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-19T03:01:39.071048" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:01:39.071550" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:39.071857" 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-19T03:01:39.068097" elapsed="0.003908"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:38.705422" elapsed="0.366882"/>
</kw>
<msg time="2026-04-19T03:01:39.072400" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:38.704831" elapsed="0.367618"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:38.704135" elapsed="0.368526"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:01:38.703960" elapsed="0.368786"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.074937" 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-19T03:01:39.075051" 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-19T03:01:39.074802" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:39.076949" level="INFO">${ip_address} = 10.30.171.206</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-19T03:01:39.076678" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:39.077025" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:01:39.077193" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:39.076354" elapsed="0.000865"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.079909" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:39.079143" elapsed="0.000807"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.083193" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:39.083298" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:39.082741" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.083488" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.084671" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:39.403908" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:39.084355" elapsed="0.319691"/>
</kw>
<msg time="2026-04-19T03:01:39.404127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.083980" elapsed="0.320229"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:39.082259" elapsed="0.322057"/>
</kw>
<msg time="2026-04-19T03:01:39.404405" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.081531" elapsed="0.322943"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:39.080234" elapsed="0.324364"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:39.404695" elapsed="0.000044"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:39.078701" elapsed="0.326163"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.408219" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:01:39.420999" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:39.421404" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:01:39.421619" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:39.421851" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:39.407852" elapsed="0.014254"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.426266" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:39.425584" elapsed="0.000786"/>
</kw>
<msg time="2026-04-19T03:01:39.426844" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:39.427319" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:39.424382" elapsed="0.003152"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.431189" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:39.429811" elapsed="0.001472"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.433085" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.432810" elapsed="0.000380"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.433579" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.433342" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.434151" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.433785" elapsed="0.000412"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:39.432358" elapsed="0.001935"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:39.431446" elapsed="0.002890"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.431392" elapsed="0.003003"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:39.434758" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:39.434549" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.434500" elapsed="0.000384"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:39.435252" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T03:01:39.435050" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.434987" elapsed="0.000424"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:39.436373" elapsed="0.000057"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:39.405942" elapsed="0.030705"/>
</kw>
<msg time="2026-04-19T03:01:39.436884" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:39.436930" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:39.405105" elapsed="0.031850"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:39.437133" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:39.437605" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:01:39.437492" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.437475" elapsed="0.000215"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:39.437852" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:39.077962" elapsed="0.360010"/>
</kw>
<msg time="2026-04-19T03:01:39.438144" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.077377" elapsed="0.360820"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:39.075707" elapsed="0.362713"/>
</kw>
<msg time="2026-04-19T03:01:39.438500" 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-19T03:01:39.075237" elapsed="0.363308"/>
</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-19T03:01:39.441822" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T03:01:39.442389" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:39.442697" 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-19T03:01:39.438844" elapsed="0.004000"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:39.074184" elapsed="0.368862"/>
</kw>
<msg time="2026-04-19T03:01:39.443141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.073722" elapsed="0.369468"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:39.073003" elapsed="0.370401"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:01:39.072846" elapsed="0.370604"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:38.340052" elapsed="1.103433"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:01:38.335890" elapsed="1.107689"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.453285" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:39.451068" elapsed="0.002245"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T03:01:39.455054" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:39.454664" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.455545" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:39.455243" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:39.455615" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:39.455769" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:39.454293" elapsed="0.001501"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.458078" 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-19T03:01:39.458179" 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-19T03:01:39.457924" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:39.460136" level="INFO">${ip_address} = 10.30.171.9</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-19T03:01:39.459668" elapsed="0.000495"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:39.460213" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:39.460363" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:39.459349" elapsed="0.001038"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.464600" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:39.463983" elapsed="0.000662"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.466991" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:39.467209" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:39.466725" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.467394" elapsed="0.000318"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.468768" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:39.777228" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:39.468447" elapsed="0.308930"/>
</kw>
<msg time="2026-04-19T03:01:39.777464" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.467879" elapsed="0.309687"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:39.466245" elapsed="0.311446"/>
</kw>
<msg time="2026-04-19T03:01:39.777849" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.465831" elapsed="0.312072"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:39.465314" elapsed="0.312769"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:39.778241" elapsed="0.000087"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:39.462756" elapsed="0.315770"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.780927" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:01:39.793869" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:39.794057" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:01:39.794126" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:39.794183" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:39.780727" elapsed="0.013488"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.795651" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:39.795003" elapsed="0.000750"/>
</kw>
<msg time="2026-04-19T03:01:39.795960" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:39.796089" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:39.794466" elapsed="0.001677"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.797577" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:39.796539" elapsed="0.001098"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.800107" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.799528" elapsed="0.000703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.801134" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.800571" elapsed="0.000655"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.802123" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:39.801563" elapsed="0.000658"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:39.798609" elapsed="0.003730"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:39.797821" elapsed="0.004596"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.797774" elapsed="0.004699"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:39.802824" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:39.802597" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.802560" elapsed="0.000412"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:39.803324" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T03:01:39.803123" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.803085" elapsed="0.000425"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:39.803832" elapsed="0.000047"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:39.780122" elapsed="0.024140"/>
</kw>
<msg time="2026-04-19T03:01:39.804583" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:39.804827" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:39.778905" elapsed="0.025987"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:39.805302" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:39.806335" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T03:01:39.805924" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.805905" elapsed="0.000625"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:39.806714" elapsed="0.000046"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:39.461085" elapsed="0.345872"/>
</kw>
<msg time="2026-04-19T03:01:39.807017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.460544" elapsed="0.346542"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:39.458814" elapsed="0.348394"/>
</kw>
<msg time="2026-04-19T03:01:39.807252" 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-19T03:01:39.458359" elapsed="0.348938"/>
</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-19T03:01:39.810355" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T03:01:39.810830" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:39.811204" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:39.807595" elapsed="0.003759"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:39.457296" elapsed="0.354117"/>
</kw>
<msg time="2026-04-19T03:01:39.811469" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.456840" elapsed="0.354678"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:39.456153" elapsed="0.355449"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:01:39.455980" elapsed="0.355674"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.813863" 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-19T03:01:39.813963" 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-19T03:01:39.813719" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:39.815946" level="INFO">${ip_address} = 10.30.171.128</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-19T03:01:39.815500" elapsed="0.000472"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:39.816021" elapsed="0.000056"/>
</return>
<msg time="2026-04-19T03:01:39.816225" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:39.815180" elapsed="0.001070"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.820274" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:39.819635" elapsed="0.000685"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:39.822454" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:39.822530" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:39.822192" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.822709" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:39.823919" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:40.194735" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:39.823572" elapsed="0.371442"/>
</kw>
<msg time="2026-04-19T03:01:40.195122" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.823219" elapsed="0.371999"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:39.821692" elapsed="0.373649"/>
</kw>
<msg time="2026-04-19T03:01:40.195396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.821301" elapsed="0.374145"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:39.820764" elapsed="0.374845"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:40.195763" elapsed="0.000090"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:39.818629" elapsed="0.377448"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.198658" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:01:40.213541" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:40.213829" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:01:40.213934" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:40.214077" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:40.198423" elapsed="0.015730"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.216066" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:40.215426" elapsed="0.000746"/>
</kw>
<msg time="2026-04-19T03:01:40.216380" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:40.216477" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:40.214603" elapsed="0.001924"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.217968" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:40.216933" elapsed="0.001125"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.220696" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:40.220094" elapsed="0.000707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.221748" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:40.221179" elapsed="0.000660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.222802" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:40.222209" elapsed="0.000658"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:40.219131" elapsed="0.003811"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:40.218249" elapsed="0.004742"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.218200" elapsed="0.004846"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:40.223271" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:40.223129" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.223105" elapsed="0.000258"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:40.223558" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:01:40.223434" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.223413" elapsed="0.000262"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:40.223875" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:40.197767" elapsed="0.026362"/>
</kw>
<msg time="2026-04-19T03:01:40.224326" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:40.224481" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:40.196458" elapsed="0.028104"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:40.224907" elapsed="0.000735"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:40.226162" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T03:01:40.225827" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.225798" elapsed="0.000622"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:40.226707" elapsed="0.000065"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:39.816926" elapsed="0.410139"/>
</kw>
<msg time="2026-04-19T03:01:40.227213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.816406" elapsed="0.410878"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:39.814627" elapsed="0.412773"/>
</kw>
<msg time="2026-04-19T03:01:40.227456" 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-19T03:01:39.814170" elapsed="0.413347"/>
</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-19T03:01:40.231829" elapsed="0.000578"/>
</kw>
<kw name="Open 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-19T03:01:40.232643" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:40.233005" elapsed="0.000173"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:40.227928" elapsed="0.005303"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:39.813097" elapsed="0.420191"/>
</kw>
<msg time="2026-04-19T03:01:40.233355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:39.812638" elapsed="0.420768"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:39.811907" elapsed="0.421583"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:01:39.811749" elapsed="0.421788"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.235816" 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-19T03:01:40.235917" 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-19T03:01:40.235677" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:40.237951" level="INFO">${ip_address} = 10.30.171.206</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-19T03:01:40.237495" elapsed="0.000484"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:40.238049" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:01:40.238207" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:40.237160" elapsed="0.001072"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.242297" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:40.241677" elapsed="0.000679"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.244565" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:40.244641" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:40.244304" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.244822" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.246017" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:40.571210" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:40.245677" elapsed="0.325686"/>
</kw>
<msg time="2026-04-19T03:01:40.571457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.245324" elapsed="0.326228"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:40.243795" elapsed="0.327873"/>
</kw>
<msg time="2026-04-19T03:01:40.571720" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.243400" elapsed="0.328373"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:40.242845" elapsed="0.329128"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:40.572159" elapsed="0.000088"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:40.240667" elapsed="0.331788"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.575017" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:01:40.587912" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:40.588103" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:01:40.588168" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:40.588224" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:40.574769" elapsed="0.013488"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.590312" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:40.589174" elapsed="0.001245"/>
</kw>
<msg time="2026-04-19T03:01:40.590633" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:40.590750" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:40.588511" elapsed="0.002297"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.592347" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:40.591270" elapsed="0.001138"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.595057" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:40.594436" elapsed="0.000735"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.596124" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:40.595519" elapsed="0.000701"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.597218" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:40.596567" elapsed="0.000755"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:40.593446" elapsed="0.004000"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:40.592591" elapsed="0.004938"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.592545" elapsed="0.005044"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:40.597958" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:40.597720" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.597680" elapsed="0.000377"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:40.598220" elapsed="0.000030"/>
</return>
<status status="PASS" start="2026-04-19T03:01:40.598124" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.598099" elapsed="0.000211"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:40.598460" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:40.574160" elapsed="0.024465"/>
</kw>
<msg time="2026-04-19T03:01:40.598769" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:40.598901" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:40.572842" elapsed="0.026143"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:40.599331" elapsed="0.000503"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:40.600248" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:01:40.599979" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:40.599958" elapsed="0.000480"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:40.600629" elapsed="0.000049"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:40.238959" elapsed="0.361927"/>
</kw>
<msg time="2026-04-19T03:01:40.600948" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.238422" elapsed="0.362585"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:40.236586" elapsed="0.364558"/>
</kw>
<msg time="2026-04-19T03:01:40.601189" 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-19T03:01:40.236114" elapsed="0.365122"/>
</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-19T03:01:40.604419" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:40.604910" elapsed="0.000262"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:40.605333" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:40.601542" elapsed="0.003946"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:40.235018" elapsed="0.370531"/>
</kw>
<msg time="2026-04-19T03:01:40.605607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.234565" elapsed="0.371093"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:40.233798" elapsed="0.371949"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:01:40.233631" elapsed="0.372164"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:39.455848" elapsed="1.149985"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:01:39.453682" elapsed="1.152211"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:39.453389" elapsed="1.152543"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:39.453371" elapsed="1.152591"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.607393" 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-19T03:01:40.607497" 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-19T03:01:40.607250" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T03:01:40.608677" elapsed="0.000220"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.609995" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:40.609574" elapsed="0.000448"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.610537" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:40.610225" elapsed="0.000383"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:40.610658" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:01:40.610823" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:40.609189" elapsed="0.001666"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:40.611894" level="INFO">${ip_address} = 10.30.171.9</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-19T03:01:40.611616" elapsed="0.000304"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:40.611970" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:40.612143" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:40.611288" elapsed="0.000883"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.614071" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:40.613640" elapsed="0.000459"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:40.616782" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:40.617091" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:40.616231" elapsed="0.000963"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.617502" elapsed="0.000670"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.619551" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:40.931795" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:40.619216" elapsed="0.312751"/>
</kw>
<msg time="2026-04-19T03:01:40.932142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.618496" elapsed="0.313763"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:40.615155" elapsed="0.317275"/>
</kw>
<msg time="2026-04-19T03:01:40.932523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:40.614691" elapsed="0.317886"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:40.614302" elapsed="0.318357"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:40.932715" elapsed="0.000045"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:40.613265" elapsed="0.319629"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.934945" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:01:40.947630" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:40.934543" elapsed="0.013389"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:01:40.934390" elapsed="0.013598"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:40.948899" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:01:41.066249" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:40.948359" elapsed="0.118144"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:01:40.948145" elapsed="0.118442"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.068162" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:01:41.115514" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.067183" elapsed="0.048591"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:01:41.066787" elapsed="0.049214"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.117576" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:01:41.167259" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.116627" elapsed="0.050889"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:01:41.116279" elapsed="0.051329"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.169155" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:01:41.215294" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.168221" elapsed="0.047320"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:01:41.167823" elapsed="0.047805"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.217147" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:01:41.263055" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.216204" elapsed="0.047009"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:01:41.215833" elapsed="0.047434"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.264157" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:01:41.311491" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.263596" elapsed="0.048143"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:01:41.263393" elapsed="0.048452"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.313374" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:01:41.359315" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.312424" elapsed="0.047142"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:01:41.312096" elapsed="0.047556"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:01:40.934240" elapsed="0.425495"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:01:40.933869" elapsed="0.426044"/>
</kw>
<msg time="2026-04-19T03:01:41.360195" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:41.360299" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:40.933179" elapsed="0.427170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:41.360728" elapsed="0.000525"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:41.361720" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:01:41.361426" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:41.361377" elapsed="0.000550"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:41.362292" elapsed="0.000072"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:40.612437" elapsed="0.750153"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T03:01:40.611103" elapsed="0.751584"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:41.364771" level="INFO">${ip_address} = 10.30.171.128</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-19T03:01:41.364145" elapsed="0.000684"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:41.364938" elapsed="0.000063"/>
</return>
<msg time="2026-04-19T03:01:41.365323" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:41.363351" elapsed="0.002027"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.369018" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:41.368165" elapsed="0.000943"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:41.372612" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:41.372869" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:41.372075" elapsed="0.000898"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:41.373282" elapsed="0.000596"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.375184" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:41.684796" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:41.374844" elapsed="0.310213"/>
</kw>
<msg time="2026-04-19T03:01:41.685192" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:41.374199" elapsed="0.311115"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:41.371145" elapsed="0.314349"/>
</kw>
<msg time="2026-04-19T03:01:41.685587" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:41.370438" elapsed="0.315200"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:41.369509" elapsed="0.316208"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:41.685771" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:41.367285" elapsed="0.318653"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.688082" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:01:41.700516" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.687670" elapsed="0.013001"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:01:41.687526" elapsed="0.013198"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.701649" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:01:41.821194" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.701078" elapsed="0.120371"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:01:41.700850" elapsed="0.120684"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.822972" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:01:41.866612" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.822107" elapsed="0.044751"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:01:41.821739" elapsed="0.045205"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.868409" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:01:41.914799" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.867506" elapsed="0.047605"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:01:41.867189" elapsed="0.048007"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.916670" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:01:41.962572" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.915716" elapsed="0.047102"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:01:41.915394" elapsed="0.047507"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:41.964461" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:01:42.010746" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:41.963464" elapsed="0.047526"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:01:41.963142" elapsed="0.047971"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.012554" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:01:42.058583" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.011629" elapsed="0.047201"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:01:42.011314" elapsed="0.047606"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.060442" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:01:42.106472" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.059475" elapsed="0.047245"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:01:42.059156" elapsed="0.047647"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:01:41.687381" elapsed="0.419488"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:01:41.686883" elapsed="0.420130"/>
</kw>
<msg time="2026-04-19T03:01:42.107287" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:42.107389" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:41.686210" elapsed="0.421231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:42.107893" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:42.108890" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:01:42.108600" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:42.108553" elapsed="0.000680"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:42.109573" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:41.365963" elapsed="0.743881"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T03:01:41.362894" elapsed="0.747046"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:42.112012" level="INFO">${ip_address} = 10.30.171.206</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-19T03:01:42.111368" elapsed="0.000744"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:42.112226" elapsed="0.000064"/>
</return>
<msg time="2026-04-19T03:01:42.112566" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:42.110589" elapsed="0.002033"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.116366" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:42.115410" elapsed="0.001016"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:42.120416" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:42.120785" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:42.119328" elapsed="0.001597"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.121365" elapsed="0.000874"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.124127" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:42.447636" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:42.123583" elapsed="0.324222"/>
</kw>
<msg time="2026-04-19T03:01:42.447965" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.122662" elapsed="0.325441"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:42.117996" elapsed="0.330286"/>
</kw>
<msg time="2026-04-19T03:01:42.448374" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.117410" elapsed="0.331017"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:42.116826" elapsed="0.331682"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:42.448566" elapsed="0.000047"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:42.114570" elapsed="0.334180"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.450798" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:01:42.463539" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.450397" elapsed="0.013306"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:01:42.450248" elapsed="0.013509"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.465134" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:01:42.517073" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.464236" elapsed="0.053076"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:01:42.463888" elapsed="0.053505"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.518986" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:01:42.564954" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.517896" elapsed="0.047355"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:01:42.517586" elapsed="0.047753"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.567009" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:01:42.612928" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.566010" elapsed="0.047190"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:01:42.565670" elapsed="0.047612"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.614704" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:01:42.661050" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.613786" elapsed="0.047505"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:01:42.613477" elapsed="0.047895"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.662788" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:01:42.709232" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.661876" elapsed="0.047591"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:01:42.661568" elapsed="0.047981"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.710966" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:01:42.760929" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.710112" elapsed="0.051104"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:01:42.709743" elapsed="0.051559"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.762748" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:01:42.809199" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:42.761832" elapsed="0.047671"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:01:42.761510" elapsed="0.048102"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:01:42.450096" elapsed="0.359594"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:01:42.449735" elapsed="0.360129"/>
</kw>
<msg time="2026-04-19T03:01:42.810163" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:42.810265" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:42.449004" elapsed="0.361314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:42.810764" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:42.811844" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:01:42.811541" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:42.811491" elapsed="0.000591"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:42.812429" elapsed="0.000048"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:42.113244" elapsed="0.699455"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T03:01:42.110176" elapsed="0.702618"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:40.610920" elapsed="2.201942"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T03:01:40.608239" elapsed="2.204739"/>
</kw>
<msg time="2026-04-19T03:01:42.813103" 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-19T03:01:40.607685" elapsed="2.205531"/>
</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-19T03:01:42.820144" elapsed="0.000547"/>
</kw>
<kw name="Open 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-19T03:01:42.820943" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:42.821425" elapsed="0.000144"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:42.813926" elapsed="0.007719"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T03:01:40.606686" elapsed="2.215066"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T03:01:40.606163" elapsed="2.215689"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T03:01:42.824967" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:42.824217" elapsed="0.000795"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:42.825883" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:42.825329" elapsed="0.000597"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:42.826002" elapsed="0.000070"/>
</return>
<msg time="2026-04-19T03:01:42.826302" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:42.823624" elapsed="0.002718"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.830290" 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-19T03:01:42.830415" 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-19T03:01:42.830123" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:42.832829" level="INFO">${ip_address} = 10.30.171.9</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-19T03:01:42.832277" elapsed="0.000584"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:42.832916" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:01:42.833126" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:42.831869" elapsed="0.001286"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.837281" level="INFO">${odl_connection} = 532</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:42.836495" elapsed="0.000832"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:42.839524" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:42.839600" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:42.839229" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.839781" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:42.840964" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:43.161799" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:42.840637" elapsed="0.321261"/>
</kw>
<msg time="2026-04-19T03:01:43.161966" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.840282" elapsed="0.321776"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:42.838725" elapsed="0.323429"/>
</kw>
<msg time="2026-04-19T03:01:43.162205" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.838332" elapsed="0.323922"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:42.837796" elapsed="0.324595"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:43.162529" elapsed="0.000081"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:42.835489" elapsed="0.327294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.165096" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:01:43.177595" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:43.177845" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:01:43.177945" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:43.178071" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:43.164881" elapsed="0.013246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.179919" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:43.179325" elapsed="0.000696"/>
</kw>
<msg time="2026-04-19T03:01:43.180267" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:43.180364" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:43.178524" elapsed="0.001890"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.181869" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:43.180818" elapsed="0.001110"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.184861" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.184243" elapsed="0.000707"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.185522" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.185184" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.186140" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.185789" elapsed="0.000411"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:43.182897" elapsed="0.003378"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:43.182141" elapsed="0.004183"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.182093" elapsed="0.004268"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:43.186580" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:43.186440" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.186416" elapsed="0.000257"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:43.186870" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T03:01:43.186745" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.186724" elapsed="0.000261"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:43.187210" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:43.164302" elapsed="0.023157"/>
</kw>
<msg time="2026-04-19T03:01:43.187699" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:43.187886" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:43.163126" elapsed="0.024844"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:43.188356" elapsed="0.000709"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:43.189569" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T03:01:43.189254" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.189226" elapsed="0.000656"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:43.190164" elapsed="0.000066"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:42.833975" elapsed="0.356529"/>
</kw>
<msg time="2026-04-19T03:01:43.190587" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.833345" elapsed="0.357311"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:42.831258" elapsed="0.359514"/>
</kw>
<msg time="2026-04-19T03:01:43.190828" 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-19T03:01:42.830626" elapsed="0.360263"/>
</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-19T03:01:43.195314" 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-19T03:01:43.196064" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:43.196486" elapsed="0.000164"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:43.191323" elapsed="0.005405"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:42.829071" elapsed="0.367738"/>
</kw>
<msg time="2026-04-19T03:01:43.196886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:42.828257" elapsed="0.368708"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:42.826949" elapsed="0.370187"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:01:42.826666" elapsed="0.370517"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.199344" 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-19T03:01:43.199443" 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-19T03:01:43.199211" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:43.201431" level="INFO">${ip_address} = 10.30.171.128</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-19T03:01:43.200958" elapsed="0.000501"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:43.201508" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:43.201657" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:43.200625" elapsed="0.001057"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.205789" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:43.204995" elapsed="0.000839"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.208098" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:43.208176" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:43.207816" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.208362" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.209579" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:43.524017" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:43.209259" elapsed="0.314861"/>
</kw>
<msg time="2026-04-19T03:01:43.524184" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.208887" elapsed="0.315366"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:43.207326" elapsed="0.317018"/>
</kw>
<msg time="2026-04-19T03:01:43.524447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.206848" elapsed="0.317652"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:43.206297" elapsed="0.318340"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:43.524774" elapsed="0.000081"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:43.203979" elapsed="0.321072"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.527240" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:01:43.540218" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:43.540377" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:01:43.540440" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:43.540497" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:43.527027" elapsed="0.013502"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.541679" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:43.541308" elapsed="0.000435"/>
</kw>
<msg time="2026-04-19T03:01:43.541872" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:43.541934" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:43.540784" elapsed="0.001181"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.542814" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:43.542222" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.545179" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.544586" elapsed="0.000697"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.546200" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.545629" elapsed="0.000662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.547201" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.546628" elapsed="0.000671"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:43.543462" elapsed="0.003956"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:43.542964" elapsed="0.004531"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.542934" elapsed="0.004618"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:43.547928" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:43.547679" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.547640" elapsed="0.000471"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:43.548434" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:01:43.548229" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.548194" elapsed="0.000427"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:43.548945" elapsed="0.000050"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:43.526470" elapsed="0.022868"/>
</kw>
<msg time="2026-04-19T03:01:43.549646" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:43.549885" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:43.525374" elapsed="0.024638"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:43.550609" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:43.552663" elapsed="0.000152"/>
</return>
<status status="PASS" start="2026-04-19T03:01:43.552164" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.552119" elapsed="0.000993"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:43.553526" elapsed="0.000101"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:43.202384" elapsed="0.351708"/>
</kw>
<msg time="2026-04-19T03:01:43.554225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.201840" elapsed="0.352495"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:43.200097" elapsed="0.354511"/>
</kw>
<msg time="2026-04-19T03:01:43.554701" 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-19T03:01:43.199623" elapsed="0.355178"/>
</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-19T03:01:43.558515" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:43.558996" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:43.559357" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:43.555514" elapsed="0.003993"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:43.198580" elapsed="0.360983"/>
</kw>
<msg time="2026-04-19T03:01:43.559617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.198138" elapsed="0.361538"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:43.197433" elapsed="0.362329"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:01:43.197279" elapsed="0.362531"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.561983" 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-19T03:01:43.562101" 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-19T03:01:43.561851" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:43.564128" level="INFO">${ip_address} = 10.30.171.206</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-19T03:01:43.563640" elapsed="0.000516"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:01:43.564205" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:43.564355" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:43.563319" elapsed="0.001061"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.568343" level="INFO">${odl_connection} = 536</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:43.567729" elapsed="0.000662"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.572397" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:43.572474" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:43.572131" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.572656" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.573927" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:43.893718" 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 Sun Apr 19 03:00:43 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:43.573606" elapsed="0.320354"/>
</kw>
<msg time="2026-04-19T03:01:43.894066" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.573247" elapsed="0.320913"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:43.571616" elapsed="0.322658"/>
</kw>
<msg time="2026-04-19T03:01:43.894327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.571218" elapsed="0.323161"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:01:43.570672" elapsed="0.323860"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:01:43.894685" elapsed="0.000120"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:01:43.566595" elapsed="0.328408"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.897435" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:01:43.910432" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:43.910605" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:01:43.910692" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:01:43.910796" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:01:43.897223" elapsed="0.013608"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.912616" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:01:43.911980" elapsed="0.000740"/>
</kw>
<msg time="2026-04-19T03:01:43.912929" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:01:43.913027" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:43.911207" elapsed="0.001904"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.914473" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:43.913491" elapsed="0.001041"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.917508" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.916501" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.918543" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.917962" elapsed="0.000675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.919263" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.919006" elapsed="0.000301"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:01:43.915570" elapsed="0.003791"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:43.914768" elapsed="0.004629"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.914696" elapsed="0.004728"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:01:43.919584" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:43.919482" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.919465" elapsed="0.000184"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:43.919789" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:01:43.919700" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.919685" elapsed="0.000189"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:43.920026" elapsed="0.000037"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:01:43.896604" elapsed="0.023600"/>
</kw>
<msg time="2026-04-19T03:01:43.920344" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:01:43.920453" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:01:43.895389" elapsed="0.025123"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:43.920761" elapsed="0.000509"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:01:43.921631" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:01:43.921404" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.921385" elapsed="0.000434"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:43.922005" elapsed="0.000062"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:01:43.565079" elapsed="0.357190"/>
</kw>
<msg time="2026-04-19T03:01:43.922370" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.564535" elapsed="0.357887"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:01:43.562745" elapsed="0.359765"/>
</kw>
<msg time="2026-04-19T03:01:43.922553" 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-19T03:01:43.562283" elapsed="0.360316"/>
</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-19T03:01:43.925878" 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-19T03:01:43.926412" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:43.926743" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:43.922913" elapsed="0.003982"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:01:43.561235" elapsed="0.365717"/>
</kw>
<msg time="2026-04-19T03:01:43.927013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.560767" elapsed="0.366313"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:01:43.560074" elapsed="0.367092"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:01:43.559905" elapsed="0.367308"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:42.826437" elapsed="1.100812"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:01:42.822529" elapsed="1.104779"/>
</kw>
<status status="PASS" start="2026-04-19T03:01:42.821974" elapsed="1.105372"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:42.821944" elapsed="1.105427"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T03:01:39.446965" elapsed="4.480454"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T03:01:34.227890" elapsed="9.699668"/>
</test>
<test id="s1-s17-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.941649" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:43.941242" elapsed="0.000434"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.942232" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:43.941849" elapsed="0.000410"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T03:01:43.942763" level="INFO">${epoch} = 1776567703.942625</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T03:01:43.942427" elapsed="0.000368"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.943392" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:43.942969" elapsed="0.000449"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.943954" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:01:43.943587" elapsed="0.000394"/>
</kw>
<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-19T03:01:43.945543" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:43.945164" elapsed="0.000405"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.946050" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:43.945729" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:43.946125" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:43.946281" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:43.944779" elapsed="0.001527"/>
</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-19T03:01:43.947449" level="INFO">${member_ip} = 10.30.171.9</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-19T03:01:43.947162" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.948255" 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-19T03:01:43.948353" 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-19T03:01:43.948116" elapsed="0.000263"/>
</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-19T03:01:43.951284" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:43.950985" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:43.950965" elapsed="0.000399"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.951643" 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-19T03:01:43.951742" 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-19T03:01:43.951513" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.952406" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:43.951920" elapsed="0.000534"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.953020" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:43.952610" elapsed="0.000451"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:43.954239" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:43.954364" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:43.953706" elapsed="0.000683"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.954578" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:43.957388" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:44.270006" 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 Sun Apr 19 03:01:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:01:43.956813" elapsed="0.313425"/>
</kw>
<msg time="2026-04-19T03:01:44.270377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.955526" elapsed="0.315020"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:43.953277" elapsed="0.317513"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.271324" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log'.</msg>
<msg time="2026-04-19T03:01:44.294166" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:44.294417" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:44.294519" 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-19T03:01:44.271044" elapsed="0.023526"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:44.294975" elapsed="0.000692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.296856" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:44.296150" 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-19T03:01:44.297481" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:44.297176" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:44.297120" elapsed="0.000522"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:44.298102" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T03:01:44.297807" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:44.297740" elapsed="0.000562"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:44.298378" 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-19T03:01:44.315940" elapsed="0.000569"/>
</kw>
<kw name="Open 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-19T03:01:44.316682" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:44.316998" elapsed="0.000127"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:44.299147" elapsed="0.018033"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:43.950417" elapsed="0.366859"/>
</kw>
<msg time="2026-04-19T03:01:44.317331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:43.949587" elapsed="0.367798"/>
</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-19T03:01:43.949055" elapsed="0.368411"/>
</kw>
<msg time="2026-04-19T03:01:44.317507" 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-19T03:01:43.948536" elapsed="0.369017"/>
</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-19T03:01:44.320775" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:01:44.321286" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:44.321584" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:44.317869" elapsed="0.003881"/>
</kw>
<msg time="2026-04-19T03:01:44.321850" 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-19T03:01:43.947693" elapsed="0.374182"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.322339" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:44.322073" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:44.322423" 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-19T03:01:43.946687" elapsed="0.375862"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:01:43.946496" elapsed="0.376091"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:44.323833" level="INFO">${member_ip} = 10.30.171.128</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-19T03:01:44.323555" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.324653" 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-19T03:01:44.324807" 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-19T03:01:44.324515" elapsed="0.000318"/>
</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-19T03:01:44.327608" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:44.327333" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:44.327313" elapsed="0.000375"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.327969" 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-19T03:01:44.328102" 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-19T03:01:44.327838" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.328772" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:44.328298" elapsed="0.000523"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.329420" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:44.328979" elapsed="0.000468"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.330678" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:44.330804" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:44.330132" elapsed="0.000697"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:44.331018" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.333981" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:44.652463" 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 Sun Apr 19 03:01:35 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.1% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:01:44.333406" elapsed="0.319257"/>
</kw>
<msg time="2026-04-19T03:01:44.652789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:44.331926" elapsed="0.321045"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:44.329665" elapsed="0.323502"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.653662" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log'.</msg>
<msg time="2026-04-19T03:01:44.676740" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:44.677000" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:44.677133" 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-19T03:01:44.653400" elapsed="0.023785"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:44.677558" elapsed="0.000456"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.679173" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:44.678446" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:44.679717" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:44.679433" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:44.679385" elapsed="0.000485"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:44.680256" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T03:01:44.679988" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:44.679955" elapsed="0.000489"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:44.680624" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:44.697895" elapsed="0.000531"/>
</kw>
<kw name="Open 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-19T03:01:44.698596" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:44.698907" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:01:44.681393" elapsed="0.017688"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:44.326734" elapsed="0.372440"/>
</kw>
<msg time="2026-04-19T03:01:44.699237" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:44.326130" elapsed="0.373170"/>
</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-19T03:01:44.325536" elapsed="0.373848"/>
</kw>
<msg time="2026-04-19T03:01:44.699425" 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-19T03:01:44.324994" elapsed="0.374478"/>
</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-19T03:01:44.702740" 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-19T03:01:44.703362" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:44.703654" 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-19T03:01:44.699763" elapsed="0.004037"/>
</kw>
<msg time="2026-04-19T03:01:44.703892" 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-19T03:01:44.324093" elapsed="0.379825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.704361" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:44.704113" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:44.704445" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:01:44.322876" elapsed="0.381693"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:01:44.322690" elapsed="0.381916"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:01:44.705919" level="INFO">${member_ip} = 10.30.171.206</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-19T03:01:44.705645" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.706759" 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-19T03:01:44.706867" 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-19T03:01:44.706619" elapsed="0.000273"/>
</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-19T03:01:44.709807" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:44.709535" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:44.709516" elapsed="0.000372"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.710181" 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-19T03:01:44.710281" 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-19T03:01:44.710051" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.710992" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:44.710458" elapsed="0.000641"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.711676" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:01:44.711261" elapsed="0.000441"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:01:44.712909" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:01:44.713050" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:01:44.712367" elapsed="0.000710"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:44.713266" elapsed="0.000639"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:01:44.715949" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:01:45.308912" 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 Sun Apr 19 03:01:44 UTC 2026

  System load:  0.12               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:01:44.715390" elapsed="0.593772"/>
</kw>
<msg time="2026-04-19T03:01:45.309298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:44.714151" elapsed="0.595323"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:01:44.711920" elapsed="0.597736"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:01:45.310227" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776567703.942625.log'.</msg>
<msg time="2026-04-19T03:01:45.332947" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:01:45.333280" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:01:45.333387" 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-19T03:01:45.309918" elapsed="0.023527"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:45.333893" elapsed="0.000576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:45.335776" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:45.334916" elapsed="0.000965"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:45.336424" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:45.336116" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:45.336015" elapsed="0.000569"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:01:45.336938" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T03:01:45.336704" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T03:01:45.336670" elapsed="0.000497"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:01:45.337243" 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-19T03:01:45.354406" elapsed="0.000539"/>
</kw>
<kw name="Open 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-19T03:01:45.355132" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:45.355480" 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-19T03:01:45.337954" elapsed="0.017683"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:01:44.708941" elapsed="0.646792"/>
</kw>
<msg time="2026-04-19T03:01:45.355789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:01:44.708345" elapsed="0.647502"/>
</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-19T03:01:44.707564" elapsed="0.648365"/>
</kw>
<msg time="2026-04-19T03:01:45.356306" 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-19T03:01:44.707061" elapsed="0.649301"/>
</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-19T03:01:45.359371" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:01:45.359867" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:01:45.360188" 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-19T03:01:45.356666" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T03:01:45.360435" 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-19T03:01:44.706177" elapsed="0.654284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:45.360903" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:45.360651" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:01:45.360991" elapsed="0.000033"/>
</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-19T03:01:44.704958" elapsed="0.656215"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:01:44.704703" elapsed="0.656508"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:01:43.946361" elapsed="1.414886"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:01:43.944259" elapsed="1.417049"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:45.373421" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:45.373023" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:45.373908" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:45.373608" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:45.373977" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:01:45.374148" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:45.372646" elapsed="0.001527"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:45.375690" 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-19T03:01:45.375389" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:01:45.375762" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:45.375909" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:45.375017" elapsed="0.000916"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:45.383983" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:45.383724" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:45.384456" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:45.384208" elapsed="0.000294"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:01:45.390235" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:01:45.386796" elapsed="0.005270">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:01:45.384570" elapsed="0.007590">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.392350" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:45.392195" elapsed="0.000270"/>
</branch>
<status status="FAIL" start="2026-04-19T03:01:45.384551" elapsed="0.007938">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.393058" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:01:45.393199" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:45.393161" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:45.393143" elapsed="0.000120"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.393439" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:01:45.393513" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:01:45.378879" elapsed="0.014746">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:01:45.393699" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:01:45.376163" elapsed="0.017635">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.394061" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:01:45.394197" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:45.394161" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:45.394143" elapsed="0.000115"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.394455" elapsed="0.000023"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.394673" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:01:45.394738" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:01:45.374645" elapsed="0.020195">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:01:45.394957" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:01:45.394918" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:45.394901" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.395181" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:01:45.374412" elapsed="0.020854">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:01:45.374227" elapsed="0.021098">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:01:45.372244" elapsed="0.023175">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:01:45.371907" elapsed="0.023571">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T03:01:45.371888" elapsed="0.023652">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:01:45.395811" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:45.395612" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:45.395595" elapsed="0.000293"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:01:45.396209" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:45.395941" elapsed="0.000326"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:45.395926" elapsed="0.000365"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:01:45.371486" elapsed="0.024884">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:01:55.415266" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:01:55.414800" elapsed="0.000499"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:01:55.415787" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:01:55.415474" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:01:55.415863" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:01:55.416046" level="INFO">${index_list} = [1, 2, 3]</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-19T03:01:55.414390" elapsed="0.001683"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:01:55.417596" 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-19T03:01:55.417296" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:01:55.417671" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:01:55.417818" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:01:55.416920" elapsed="0.000924"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:55.425530" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:55.425266" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:01:55.425972" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:01:55.425732" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:01:55.504812" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:01:55.505080" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T03:01:55.505427" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:01:55.428232" elapsed="0.078039">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:01:55.426105" elapsed="0.080473">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.507139" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:55.506665" elapsed="0.000625"/>
</branch>
<status status="FAIL" start="2026-04-19T03:01:55.426084" elapsed="0.081259">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.508602" elapsed="0.000063"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:01:55.508933" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:55.508830" elapsed="0.000226"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:55.508788" elapsed="0.000318"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.509430" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:01:55.509586" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:01:55.420633" elapsed="0.089196">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:01:55.509986" elapsed="0.000033"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:01:55.418070" elapsed="0.092176">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.510727" elapsed="0.000053"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:01:55.511004" elapsed="0.000056"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:01:55.510926" elapsed="0.000197"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:55.510890" elapsed="0.000282"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.511603" elapsed="0.000052"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.512226" elapsed="0.000054"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:01:55.512335" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:01:55.416545" elapsed="0.095892">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:01:55.512558" elapsed="0.000018"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:01:55.512517" elapsed="0.000084"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:55.512500" elapsed="0.000122"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.512768" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:01:55.416317" elapsed="0.096521">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:01:55.416131" elapsed="0.096782">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:01:55.413955" elapsed="0.099059">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:01:55.413543" elapsed="0.099546">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T03:01:55.413514" elapsed="0.099607">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:01:55.513391" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:55.513189" elapsed="0.000256"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:55.513171" elapsed="0.000296"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:01:55.513767" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:01:55.513551" elapsed="0.000272"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:01:55.513504" elapsed="0.000342"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:01:55.412828" elapsed="0.101099">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:02:05.530717" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:02:05.530267" elapsed="0.000483"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:02:05.531250" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:02:05.530919" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:02:05.531326" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:02:05.531495" level="INFO">${index_list} = [1, 2, 3]</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-19T03:02:05.529830" elapsed="0.001691"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:05.533058" 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-19T03:02:05.532723" elapsed="0.000364"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:02:05.533136" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:02:05.533285" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:02:05.532377" elapsed="0.000934"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:05.540916" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:05.540653" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:05.541378" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:05.541133" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:02:05.547599" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:02:05.547674" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T03:02:05.547805" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:02:05.543653" elapsed="0.004555">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:02:05.541488" elapsed="0.006804">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.548480" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:05.548325" elapsed="0.000219"/>
</branch>
<status status="FAIL" start="2026-04-19T03:02:05.541470" elapsed="0.007098">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.549175" elapsed="0.000028"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:02:05.549313" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:05.549275" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:02:05.549258" elapsed="0.000118"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.549522" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:02:05.549592" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:02:05.536065" elapsed="0.013635">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:02:05.549772" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:02:05.533524" elapsed="0.016344">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.550124" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:02:05.550303" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:05.550267" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:02:05.550248" elapsed="0.000117"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.550562" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.550784" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:02:05.550850" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:02:05.531985" elapsed="0.018965">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:02:05.551093" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:02:05.551052" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:02:05.551011" elapsed="0.000143"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.551297" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:02:05.531758" elapsed="0.019608">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:02:05.531576" elapsed="0.019848">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:02:05.529416" elapsed="0.022103">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:02:05.529075" elapsed="0.022502">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T03:02:05.529050" elapsed="0.022557">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:02:05.551870" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:05.551673" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:02:05.551657" elapsed="0.000291"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:02:05.552226" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:05.552000" elapsed="0.000283"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:02:05.551985" elapsed="0.000321"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:02:05.528550" elapsed="0.023834">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.570851" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:02:15.570377" elapsed="0.000506"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.571389" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:02:15.571078" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:02:15.571465" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:02:15.571635" level="INFO">${index_list} = [1, 2, 3]</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-19T03:02:15.569952" elapsed="0.001708"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.573222" 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-19T03:02:15.572866" elapsed="0.000385"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:02:15.573299" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:02:15.573450" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:02:15.572523" elapsed="0.000951"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.581264" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.580966" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.581720" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.581471" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:02:15.840875" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:02:15.841118" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:02:15 GMT', 'Expires': 'Sun, 19 Apr 2026 02:02:15 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567735,"status":200} 
 </msg>
<msg time="2026-04-19T03:02:15.841443" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:02:15.584004" elapsed="0.257503"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.581834" elapsed="0.259785"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:15.842132" elapsed="0.000200"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:15.841686" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.581814" elapsed="0.260664"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.849307" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567735,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.845016" elapsed="0.004436"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.844630" elapsed="0.004982"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.844602" elapsed="0.005051"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.853626" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.850126" elapsed="0.003595"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.849737" elapsed="0.004093"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.849713" elapsed="0.004146"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.854650" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.854096" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:15.855122" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:15.854825" elapsed="0.000473"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.856099" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:15.855497" elapsed="0.000682"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.855325" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.854806" elapsed="0.001543"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.857053" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.856514" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:15.857416" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:15.857155" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.858401" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:15.857783" elapsed="0.000730"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.857618" elapsed="0.001048"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.857136" elapsed="0.001554"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:02:15.858853" elapsed="0.000727"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:02:15.860593" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.859750" elapsed="0.000872"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:02:15.860779" elapsed="0.003088"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:02:15.843892" elapsed="0.020045"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:02:15.864240" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:15.864009" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.863990" elapsed="0.000322"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:02:15.867276" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567735,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:02:15.864462" elapsed="0.002845"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:02:15.867361" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:02:15.867531" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567735,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:02:15.576342" elapsed="0.291217"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:02:15.867621" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:02:15.867775" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567735,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:02:15.573686" elapsed="0.294116"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.868754" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567735,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.868490" elapsed="0.000315"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.869796" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567735, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.869385" elapsed="0.000442"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:02:15.869880" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:02:15.870058" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567735, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:02:15.869019" elapsed="0.001108"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:15.870522" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:15.870292" elapsed="0.000259"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:15.870936" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:15.870710" elapsed="0.000274"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:02:15.871070" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:02:15.871291" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:02:15.868113" elapsed="0.003213"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:02:15.871551" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:15.871418" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.871395" elapsed="0.000233"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.879459" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.879205" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.879900" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.879658" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:02:15.889016" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:02:15.889124" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:02:15 GMT', 'Expires': 'Sun, 19 Apr 2026 02:02:15 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567735,"status":200} 
 </msg>
<msg time="2026-04-19T03:02:15.889242" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:02:15.882244" elapsed="0.007024"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.880010" elapsed="0.009302"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:15.889489" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:15.889337" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.879992" elapsed="0.009581"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.893495" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567735,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.890756" elapsed="0.002834"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.890510" elapsed="0.003188"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.890492" elapsed="0.003233"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.896736" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.894026" elapsed="0.002803"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.893782" elapsed="0.003155"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.893765" elapsed="0.003199"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.897673" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.897146" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:15.898045" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:15.897771" elapsed="0.000451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.899040" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:15.898415" elapsed="0.000709"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.898250" elapsed="0.001060"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.897753" elapsed="0.001582"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.900013" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.899498" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:15.900413" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:15.900154" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.901353" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:15.900775" elapsed="0.000656"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.900612" elapsed="0.000964"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.900135" elapsed="0.001464"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:02:15.901752" elapsed="0.000676"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:02:15.903411" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.902595" elapsed="0.000843"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:02:15.903593" elapsed="0.003162"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:02:15.890088" elapsed="0.016734"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:02:15.906998" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:15.906890" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.906872" elapsed="0.000209"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:02:15.910085" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:02:15.907268" elapsed="0.002847"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:02:15.910168" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:02:15.910328" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:02:15.874645" elapsed="0.035709"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:02:15.910411" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:02:15.910558" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:02:15.871871" elapsed="0.038713"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.911428" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567735,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.911161" elapsed="0.000317"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.912506" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567735, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:15.912023" elapsed="0.000511"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:02:15.912583" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:02:15.912741" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567735, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:02:15.911684" elapsed="0.001083"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:15.913161" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:15.912922" elapsed="0.000298"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:15.913594" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:15.913380" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:02:15.913666" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:02:15.913816" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:02:15.910795" elapsed="0.003045"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:02:15.913882" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:02:15.914043" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:02:15.572145" elapsed="0.341924"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:02:15.914247" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:02:15.914138" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.914120" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:15.914475" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:02:15.571900" elapsed="0.342630"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.915981" level="INFO">${session} = ClusterManagement__session_2</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-19T03:02:15.915683" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:02:15.916106" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:02:15.916255" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:02:15.915339" elapsed="0.000941"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.923995" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.923738" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:15.924523" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:15.924221" elapsed="0.000348"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:02:16.292791" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:02:16.292994" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:02:16 GMT', 'Expires': 'Sun, 19 Apr 2026 02:02:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567736,"status":200} 
 </msg>
<msg time="2026-04-19T03:02:16.293346" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:02:15.926815" elapsed="0.366595"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:15.924638" elapsed="0.368889"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:16.294002" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:16.293595" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:15.924619" elapsed="0.369802"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.301877" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567736,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.297399" elapsed="0.004578"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.296760" elapsed="0.005352"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.296712" elapsed="0.005429"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.305283" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.302441" elapsed="0.002935"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.302199" elapsed="0.003347"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.302182" elapsed="0.003394"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.306350" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.305758" elapsed="0.000621"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:16.306713" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:16.306450" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.307676" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:16.307101" elapsed="0.000726"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.306912" elapsed="0.001072"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.306431" elapsed="0.001616"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.308751" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.308221" elapsed="0.000558"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:16.309128" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:16.308851" elapsed="0.000455"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.310098" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:16.309497" elapsed="0.000680"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.309333" elapsed="0.000988"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.308833" elapsed="0.001513"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:02:16.310506" elapsed="0.000692"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:02:16.312240" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.311367" elapsed="0.000902"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:02:16.312428" elapsed="0.003206"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:02:16.295617" elapsed="0.020086"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:02:16.315916" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:16.315801" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.315781" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:02:16.318988" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567736,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:02:16.316149" elapsed="0.002868"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:02:16.319087" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:02:16.319253" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567736,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:02:15.919275" elapsed="0.400005"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:02:16.319338" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:02:16.319489" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567736,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:02:15.916488" elapsed="0.403027"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.320372" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567736,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.320115" elapsed="0.000308"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.321387" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567736, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.320970" elapsed="0.000484"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:02:16.321507" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:02:16.321672" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567736, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:02:16.320633" elapsed="0.001065"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:16.322162" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:16.321854" elapsed="0.000337"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:16.322564" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:16.322349" elapsed="0.000241"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:02:16.322639" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:02:16.322791" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:02:16.319733" elapsed="0.003083"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:02:16.322994" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:16.322885" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.322868" elapsed="0.000213"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.330627" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.330375" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.331087" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.330828" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:02:16.341277" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:02:16.341450" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:02:16 GMT', 'Expires': 'Sun, 19 Apr 2026 02:02:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567736,"status":200} 
 </msg>
<msg time="2026-04-19T03:02:16.341703" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:02:16.333521" elapsed="0.008242"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.331197" elapsed="0.010663"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:16.342384" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:16.341920" elapsed="0.000619"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.331179" elapsed="0.011407"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.349308" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567736,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.344944" elapsed="0.004506"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.344576" elapsed="0.005035"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.344548" elapsed="0.005105"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.353532" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.350140" elapsed="0.003485"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.349741" elapsed="0.003990"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.349715" elapsed="0.004044"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.354468" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.353925" elapsed="0.000571"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:16.354862" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:16.354567" elapsed="0.000501"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.355848" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:16.355263" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.355096" elapsed="0.001007"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.354548" elapsed="0.001580"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.356815" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.356292" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:16.357191" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:02:16.356914" elapsed="0.000454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.358189" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:02:16.357587" elapsed="0.000682"/>
</kw>
<status status="PASS" start="2026-04-19T03:02:16.357395" elapsed="0.001022"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.356895" elapsed="0.001547"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:02:16.358598" elapsed="0.000712"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:02:16.360336" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.359480" elapsed="0.000884"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:02:16.360530" elapsed="0.003084"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:02:16.343741" elapsed="0.019940"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:02:16.363881" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:02:16.363753" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.363734" elapsed="0.000215"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:02:16.366797" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:02:16.364111" elapsed="0.002715"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:02:16.366879" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:02:16.367164" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:02:16.325845" elapsed="0.041349"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:02:16.367253" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:02:16.367403" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:02:16.323284" elapsed="0.044145"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.368346" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567736,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.368087" elapsed="0.000310"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.369370" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567736, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:02:16.368949" elapsed="0.000450"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:02:16.369449" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:02:16.369610" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567736, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:02:16.368608" elapsed="0.001061"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:16.370075" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:16.369831" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:02:16.370473" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:02:16.370262" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:02:16.370546" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:02:16.370696" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:02:16.367669" elapsed="0.003052"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:02:16.370764" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:02:16.370910" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:02:15.914901" elapsed="0.456033"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:02:16.371135" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T03:02:16.371004" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T03:02:16.370986" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:02:16.371366" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:02:15.914674" elapsed="0.456747"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.373059" level="INFO">${session} = ClusterManagement__session_3</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-19T03:02:16.372741" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:02:16.373135" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:02:16.373286" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:02:16.372398" elapsed="0.000912"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.380818" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.380562" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:02:16.381286" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:02:16.381020" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:04:21.462614" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:02:16.383527" elapsed="125.083214">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:02:16.381399" elapsed="125.085573">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.467619" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:21.467109" elapsed="0.000668"/>
</branch>
<status status="FAIL" start="2026-04-19T03:02:16.381379" elapsed="125.086454">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.469192" elapsed="0.000118"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:04:21.469616" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:21.469526" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:04:21.469479" elapsed="0.000279"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.470101" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:04:21.470174" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:02:16.376099" elapsed="125.094195">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:04:21.470368" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:02:16.373521" elapsed="125.096957">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.470804" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:04:21.470939" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:21.470902" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:04:21.470884" elapsed="0.000120"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.471233" elapsed="0.000026"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.471470" elapsed="0.000026"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:04:21.471542" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:02:16.371993" elapsed="125.099657">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:04:21.471773" elapsed="0.000018"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:04:21.471734" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:04:21.471716" elapsed="0.000122"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.471989" elapsed="0.000022"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:02:16.371567" elapsed="125.100522">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:02:15.571716" elapsed="125.900437">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:02:15.569515" elapsed="125.902741">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:02:15.569160" elapsed="125.903157">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:02:15.569133" elapsed="125.903216">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:04:21.472636" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:21.472421" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:04:21.472402" elapsed="0.000315"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:04:21.472988" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:21.472773" elapsed="0.000293"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:04:21.472757" elapsed="0.000334"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:02:15.568625" elapsed="125.904557">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.490542" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:04:31.490096" elapsed="0.000477"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.491111" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:04:31.490779" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:04:31.491186" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:04:31.491352" level="INFO">${index_list} = [1, 2, 3]</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-19T03:04:31.489668" elapsed="0.001711"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.492893" 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-19T03:04:31.492597" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:04:31.492967" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:04:31.493130" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:04:31.492251" elapsed="0.000904"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.500922" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.500666" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.501381" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.501138" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:04:31.514146" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:04:31.514374" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:04:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:04:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567871,"status":200} 
 </msg>
<msg time="2026-04-19T03:04:31.514717" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:04:31.503605" elapsed="0.011177"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.501497" elapsed="0.013411"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.515482" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.514986" elapsed="0.000653"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.501476" elapsed="0.014212"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.523322" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567871,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.518721" elapsed="0.004736"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.518139" elapsed="0.005468"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.518091" elapsed="0.005554"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.527855" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.524095" elapsed="0.003887"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.523724" elapsed="0.004447"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.523701" elapsed="0.004509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.529237" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.528465" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.529735" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.529373" elapsed="0.000600"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.531089" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.530262" elapsed="0.000938"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.530009" elapsed="0.001391"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.529347" elapsed="0.002086"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.532433" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.531664" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.532804" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.532548" elapsed="0.000428"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.533742" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.533180" elapsed="0.000642"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.533002" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.532530" elapsed="0.001464"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:04:31.534175" elapsed="0.000660"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:04:31.535876" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.535001" elapsed="0.000959"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.536147" elapsed="0.003182"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:04:31.516990" elapsed="0.022408"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:04:31.539590" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:31.539473" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.539452" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:04:31.542536" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:04:31.539806" elapsed="0.002759"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:04:31.542618" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:04:31.542787" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:04:31.496092" elapsed="0.046722"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:04:31.542872" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:04:31.543024" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:04:31.493446" elapsed="0.049689"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.543971" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.543720" elapsed="0.000304"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.545013" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.544613" elapsed="0.000444"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:04:31.545109" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:04:31.545268" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:04:31.544274" elapsed="0.001020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.545671" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.545450" elapsed="0.000248"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.546075" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.545850" elapsed="0.000251"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:04:31.546148" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:04:31.546294" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:04:31.543363" elapsed="0.002955"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:04:31.546498" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:31.546384" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.546368" elapsed="0.000194"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.554129" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.553867" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.554571" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.554329" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:04:31.562791" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:04:31.562867" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:04:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:04:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567871,"status":200} 
 </msg>
<msg time="2026-04-19T03:04:31.562979" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:04:31.556973" elapsed="0.006032"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.554715" elapsed="0.008362"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.563256" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.563103" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.554696" elapsed="0.008644"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.567194" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776567871,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.564545" elapsed="0.002744"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.564299" elapsed="0.003096"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.564280" elapsed="0.003142"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.570400" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.567715" elapsed="0.002779"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.567477" elapsed="0.003122"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.567461" elapsed="0.003165"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.571338" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.570788" elapsed="0.000578"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.571692" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.571435" elapsed="0.000424"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.572763" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.572066" elapsed="0.000829"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.571885" elapsed="0.001235"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.571417" elapsed="0.001738"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.574136" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.573382" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.574634" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.574271" elapsed="0.000598"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.575989" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.575217" elapsed="0.000920"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.574905" elapsed="0.001445"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.574246" elapsed="0.002139"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:04:31.576600" elapsed="0.000938"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:04:31.578871" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.577770" elapsed="0.001138"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.579255" elapsed="0.003372"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:04:31.563832" elapsed="0.018892"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:04:31.582951" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:31.582796" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.582776" elapsed="0.000351"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:04:31.586027" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:04:31.583285" elapsed="0.002786"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:04:31.586125" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:04:31.586284" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:04:31.549410" elapsed="0.036901"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:04:31.586370" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:04:31.586516" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:04:31.546764" elapsed="0.039778"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.587470" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.587215" elapsed="0.000308"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.588524" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.588118" elapsed="0.000433"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:04:31.588600" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:04:31.588758" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:04:31.587731" elapsed="0.001053"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.589177" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.588938" elapsed="0.000267"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.589573" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.589363" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:04:31.589648" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:04:31.589834" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:04:31.586757" elapsed="0.003107"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:04:31.589909" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:04:31.590072" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:04:31.491851" elapsed="0.098246"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:04:31.590279" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T03:04:31.590167" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.590150" elapsed="0.000213"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.590513" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:04:31.491624" elapsed="0.098944"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.593686" level="INFO">${session} = ClusterManagement__session_2</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-19T03:04:31.593385" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:04:31.593797" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:04:31.593950" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:04:31.593024" elapsed="0.000951"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.601484" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.601235" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.601927" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.601684" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:04:31.614342" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:04:31.614464" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:04:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:04:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567871,"status":200} 
 </msg>
<msg time="2026-04-19T03:04:31.614657" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:04:31.604203" elapsed="0.010492"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.602051" elapsed="0.012714"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.615076" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.614806" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.602018" elapsed="0.013182"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.623727" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567871,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.617352" elapsed="0.006588"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.616763" elapsed="0.007478"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.616719" elapsed="0.007587"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.629883" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.624979" elapsed="0.004996"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.624435" elapsed="0.005662"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.624396" elapsed="0.005729"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.630997" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.630302" elapsed="0.000722"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.631382" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.631121" elapsed="0.000436"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.632360" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.631749" elapsed="0.000691"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.631584" elapsed="0.001002"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.631102" elapsed="0.001508"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.633308" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.632773" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.633663" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.633406" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.634616" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.634026" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.633863" elapsed="0.000979"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.633388" elapsed="0.001478"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:04:31.635023" elapsed="0.000732"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:04:31.636760" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.635923" elapsed="0.000865"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.636946" elapsed="0.003038"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:04:31.615933" elapsed="0.024132"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:04:31.640285" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:31.640170" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.640149" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:04:31.643371" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:04:31.640531" elapsed="0.002869"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:04:31.643453" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:04:31.643619" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:04:31.596730" elapsed="0.046916"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:04:31.643704" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:04:31.643852" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:04:31.594203" elapsed="0.049675"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.644749" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.644498" elapsed="0.000300"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.645753" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.645359" elapsed="0.000422"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:04:31.645830" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:04:31.645989" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:04:31.645005" elapsed="0.001011"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.646410" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.646186" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.646799" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.646591" elapsed="0.000233"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:04:31.646871" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:04:31.647020" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:04:31.644134" elapsed="0.002981"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:04:31.647293" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:31.647184" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.647166" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.655063" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.654797" elapsed="0.000349"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.655553" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.655302" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:04:31.666134" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:04:31.666306" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:04:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:04:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567871,"status":200} 
 </msg>
<msg time="2026-04-19T03:04:31.666582" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:04:31.657815" elapsed="0.008828"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.655671" elapsed="0.011069"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.667279" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.666799" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.655653" elapsed="0.011826"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.674828" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776567871,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.670234" elapsed="0.004729"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.669651" elapsed="0.005483"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.669609" elapsed="0.005565"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.679390" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.675595" elapsed="0.003930"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.675255" elapsed="0.004441"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.675231" elapsed="0.004507"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.680703" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.679971" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.681084" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.680804" elapsed="0.000459"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.682052" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.681454" elapsed="0.000683"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.681289" elapsed="0.000999"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.680785" elapsed="0.001527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.683003" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.682478" elapsed="0.000567"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.683377" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:04:31.683118" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.684467" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:04:31.683747" elapsed="0.000803"/>
</kw>
<status status="PASS" start="2026-04-19T03:04:31.683579" elapsed="0.001120"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.683100" elapsed="0.001623"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:04:31.684879" elapsed="0.000697"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:04:31.686556" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.685746" elapsed="0.000838"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.686779" elapsed="0.003215"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:04:31.668665" elapsed="0.021414"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:04:31.690263" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:04:31.690151" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.690131" elapsed="0.000201"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:04:31.693314" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:04:31.690480" elapsed="0.002863"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:04:31.693398" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:04:31.693560" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:04:31.650292" elapsed="0.043295"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:04:31.693645" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:04:31.693795" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:04:31.647558" elapsed="0.046263"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.694661" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776567871,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.694407" elapsed="0.000304"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.695707" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:04:31.695285" elapsed="0.000452"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:04:31.695787" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:04:31.695952" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776567871, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:04:31.694919" elapsed="0.001060"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.696468" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.696238" elapsed="0.000258"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:04:31.696868" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:04:31.696654" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:04:31.696942" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:04:31.697113" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:04:31.694048" elapsed="0.003091"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:04:31.697183" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:04:31.697328" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:04:31.592645" elapsed="0.104708"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:04:31.697535" elapsed="0.000031"/>
</continue>
<status status="PASS" start="2026-04-19T03:04:31.697421" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T03:04:31.697404" elapsed="0.000217"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:04:31.697771" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:04:31.592410" elapsed="0.105416"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.699333" level="INFO">${session} = ClusterManagement__session_3</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-19T03:04:31.699007" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:04:31.699408" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:04:31.699559" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:04:31.698657" elapsed="0.000926"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.707302" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.707051" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:04:31.707750" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:04:31.707507" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:06:36.806268" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:04:31.709987" elapsed="125.100686">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:04:31.707859" elapsed="125.103061">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.811624" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:36.811015" elapsed="0.000782"/>
</branch>
<status status="FAIL" start="2026-04-19T03:04:31.707841" elapsed="125.104019">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.813399" elapsed="0.000072"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:06:36.813786" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:36.813685" elapsed="0.000262"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:06:36.813636" elapsed="0.000368"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.814408" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:06:36.814580" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:04:31.702582" elapsed="125.112268">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:06:36.815026" elapsed="0.000071"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:04:31.699796" elapsed="125.115400">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.815434" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:06:36.815571" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:36.815533" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:06:36.815513" elapsed="0.000127"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.815847" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.816094" elapsed="0.000026"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:06:36.816167" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:04:31.698227" elapsed="125.118052">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:06:36.816402" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:06:36.816363" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:06:36.816345" elapsed="0.000121"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.816627" elapsed="0.000023"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:04:31.697978" elapsed="125.118726">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:04:31.491435" elapsed="125.325403">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:04:31.489254" elapsed="125.327688">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:04:31.488887" elapsed="125.328115">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:04:31.488863" elapsed="125.328200">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:06:36.817361" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:36.817150" elapsed="0.000265"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:06:36.817132" elapsed="0.000307"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:06:36.817705" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:36.817493" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:06:36.817477" elapsed="0.000310"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:04:31.488355" elapsed="125.329528">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.836626" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:06:46.836148" elapsed="0.000512"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.837187" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:06:46.836842" elapsed="0.000372"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:06:46.837264" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:06:46.837436" level="INFO">${index_list} = [1, 2, 3]</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-19T03:06:46.835712" elapsed="0.001749"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.838993" 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-19T03:06:46.838695" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:06:46.839083" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:06:46.839231" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:06:46.838345" elapsed="0.000911"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.846924" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.846654" elapsed="0.000319"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.847388" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.847144" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:06:46.857846" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:06:46.857941" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:06:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:06:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568006,"status":200} 
 </msg>
<msg time="2026-04-19T03:06:46.858086" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:06:46.849628" elapsed="0.008486"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.847499" elapsed="0.010659"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.858339" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.858185" elapsed="0.000275"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.847481" elapsed="0.011002"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.862553" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568006,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.859730" elapsed="0.002921"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.859482" elapsed="0.003276"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.859464" elapsed="0.003322"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.865903" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.863099" elapsed="0.002956"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.862843" elapsed="0.003363"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.862826" elapsed="0.003418"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.867245" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.866488" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.867740" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.867380" elapsed="0.000600"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.869132" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:46.868303" elapsed="0.000940"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.868017" elapsed="0.001429"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.867355" elapsed="0.002125"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.870429" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.869704" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.870919" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.870563" elapsed="0.000616"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.872276" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:46.871444" elapsed="0.000940"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.871216" elapsed="0.001367"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.870538" elapsed="0.002079"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:06:46.872831" elapsed="0.000951"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:06:46.875192" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.874073" elapsed="0.001157"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.875449" elapsed="0.003762"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:06:46.859026" elapsed="0.020249"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:06:46.879458" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:46.879344" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.879326" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:06:46.882484" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:06:46.879671" elapsed="0.002842"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:06:46.882566" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:06:46.882725" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:06:46.842020" elapsed="0.040732"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:06:46.882844" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:06:46.882997" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:06:46.839466" elapsed="0.043557"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.883854" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.883603" elapsed="0.000300"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.884944" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.884538" elapsed="0.000435"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:06:46.885043" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:06:46.885205" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:06:46.884198" elapsed="0.001033"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:46.885608" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.885386" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:46.886178" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.885792" elapsed="0.000412"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:06:46.886253" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:06:46.886408" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:06:46.883252" elapsed="0.003180"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:06:46.886608" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:46.886499" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.886482" elapsed="0.000198"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.894163" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.893901" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.894606" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.894362" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:06:46.902147" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:06:46.902225" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:06:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:06:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568006,"status":200} 
 </msg>
<msg time="2026-04-19T03:06:46.902338" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:06:46.896825" elapsed="0.005540"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.894714" elapsed="0.007694"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.902587" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.902433" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.894696" elapsed="0.007975"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.906600" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568006,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.903920" elapsed="0.002775"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.903639" elapsed="0.003169"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.903621" elapsed="0.003215"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.909833" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.907150" elapsed="0.002796"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.906893" elapsed="0.003238"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.906876" elapsed="0.003294"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.911161" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.910402" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.911659" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.911298" elapsed="0.000622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.913140" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:46.912208" elapsed="0.001051"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.911957" elapsed="0.001505"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.911273" elapsed="0.002222"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.914503" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.913731" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.915009" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.914640" elapsed="0.000631"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.916338" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:46.915535" elapsed="0.000912"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.915307" elapsed="0.001341"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.914614" elapsed="0.002067"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:06:46.916913" elapsed="0.000937"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:06:46.919300" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.918176" elapsed="0.001161"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.919556" elapsed="0.003942"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:06:46.903219" elapsed="0.020349"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:06:46.923749" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:46.923639" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.923620" elapsed="0.000198"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:06:46.926774" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:06:46.923964" elapsed="0.002838"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:06:46.926855" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:06:46.927078" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:06:46.889436" elapsed="0.037671"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:06:46.927168" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:06:46.927331" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:06:46.886881" elapsed="0.040478"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.928306" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.928041" elapsed="0.000314"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.929336" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.928917" elapsed="0.000448"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:06:46.929414" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:06:46.929571" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:06:46.928563" elapsed="0.001035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:46.929996" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.929754" elapsed="0.000355"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:46.930523" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.930306" elapsed="0.000243"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:06:46.930598" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:06:46.930747" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:06:46.927657" elapsed="0.003115"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:06:46.930816" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:06:46.930969" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:06:46.837951" elapsed="0.093043"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:06:46.931189" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:06:46.931078" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.931060" elapsed="0.000212"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.931419" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:06:46.837719" elapsed="0.093755"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.932960" level="INFO">${session} = ClusterManagement__session_2</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-19T03:06:46.932637" elapsed="0.000350"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:06:46.933049" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:06:46.933201" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:06:46.932244" elapsed="0.000982"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.940890" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.940616" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.941358" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.941114" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:06:46.951595" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:06:46.951702" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:06:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:06:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568006,"status":200} 
 </msg>
<msg time="2026-04-19T03:06:46.951917" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:06:46.943574" elapsed="0.008381"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.941469" elapsed="0.010546"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.952329" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.952111" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.941450" elapsed="0.010996"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.957824" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568006,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.954148" elapsed="0.003808"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.953790" elapsed="0.004344"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.953763" elapsed="0.004411"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.962411" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.958591" elapsed="0.003911"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.958254" elapsed="0.004355"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.958231" elapsed="0.004406"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.963364" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.962812" elapsed="0.000579"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.963719" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.963461" elapsed="0.000430"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.964658" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:46.964096" elapsed="0.000642"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.963917" elapsed="0.000980"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.963443" elapsed="0.001479"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.965627" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.965122" elapsed="0.000533"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.965985" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.965724" elapsed="0.000448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.966919" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:46.966360" elapsed="0.000637"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.966198" elapsed="0.000960"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.965706" elapsed="0.001476"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:06:46.967340" elapsed="0.000653"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:06:46.968987" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.968175" elapsed="0.000839"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.969204" elapsed="0.003093"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:06:46.953197" elapsed="0.019167"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:06:46.972542" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:46.972433" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.972414" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:06:46.975564" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:06:46.972756" elapsed="0.002837"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:06:46.975644" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:06:46.975806" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:06:46.936175" elapsed="0.039691"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:06:46.975940" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:06:46.976125" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:06:46.933435" elapsed="0.042716"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.976974" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.976714" elapsed="0.000309"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.978104" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:46.977693" elapsed="0.000439"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:06:46.978182" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:06:46.978341" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:06:46.977354" elapsed="0.001014"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:46.978746" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.978524" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:46.979158" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:46.978930" elapsed="0.000254"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:06:46.979232" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:06:46.979382" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:06:46.976363" elapsed="0.003044"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:06:46.979584" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:46.979475" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.979458" elapsed="0.000191"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.987146" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.986885" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:46.987585" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.987346" elapsed="0.000283"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:06:46.995768" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:06:46.995873" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:06:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:06:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568006,"status":200} 
 </msg>
<msg time="2026-04-19T03:06:46.996065" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:06:46.990003" elapsed="0.006103"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.987693" elapsed="0.008472"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:46.996411" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:46.996200" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.987675" elapsed="0.008901"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.001938" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568006,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:46.998245" elapsed="0.003846"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:46.997888" elapsed="0.004349"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:46.997862" elapsed="0.004412"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.006366" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:47.002697" elapsed="0.003778"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:47.002353" elapsed="0.004248"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:47.002330" elapsed="0.004308"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.007369" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:47.006815" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:47.007725" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:47.007467" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.008693" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:47.008129" elapsed="0.000646"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:47.007929" elapsed="0.001005"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:47.007449" elapsed="0.001510"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.009655" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:47.009143" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:47.010010" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:06:47.009753" elapsed="0.000444"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.010952" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:06:47.010389" elapsed="0.000655"/>
</kw>
<status status="PASS" start="2026-04-19T03:06:47.010223" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:47.009735" elapsed="0.001480"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:06:47.011370" elapsed="0.000651"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:06:47.013017" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:47.012226" elapsed="0.000833"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:06:47.013215" elapsed="0.003227"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:06:46.997304" elapsed="0.019213"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:06:47.016711" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:06:47.016595" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:47.016573" elapsed="0.000208"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:06:47.019703" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:06:47.016967" elapsed="0.002765"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:06:47.019784" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:06:47.019953" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:06:46.982453" elapsed="0.037527"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:06:47.020182" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:06:47.020387" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:06:46.979852" elapsed="0.040562"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.021303" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568006,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:47.021019" elapsed="0.000334"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.022339" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:06:47.021913" elapsed="0.000454"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:06:47.022416" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:06:47.022574" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568006, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:06:47.021564" elapsed="0.001037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:47.022979" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:47.022756" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:06:47.023417" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:06:47.023204" elapsed="0.000239"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:06:47.023491" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:06:47.023639" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:06:47.020647" elapsed="0.003016"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:06:47.023707" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:06:47.023851" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:06:46.931849" elapsed="0.092027"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:06:47.024069" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:06:47.023944" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T03:06:47.023927" elapsed="0.000224"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:06:47.024299" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:06:46.931621" elapsed="0.092733"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.027282" level="INFO">${session} = ClusterManagement__session_3</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-19T03:06:47.026941" elapsed="0.000369"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:06:47.027357" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:06:47.027506" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:06:47.026589" elapsed="0.000942"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.035105" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:47.034841" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:06:47.035548" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:06:47.035305" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:08:52.087609" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:06:47.037864" elapsed="125.053807">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:06:47.035660" elapsed="125.056224">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.092504" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:52.091971" elapsed="0.000869"/>
</branch>
<status status="FAIL" start="2026-04-19T03:06:47.035641" elapsed="125.057296">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.094353" elapsed="0.000070"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:08:52.094766" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:52.094674" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:08:52.094627" elapsed="0.000289"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.095154" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:08:52.095253" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:06:47.030313" elapsed="125.065079">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:08:52.095480" elapsed="0.000018"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:06:47.027745" elapsed="125.067840">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.095817" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:08:52.095951" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:52.095914" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:08:52.095895" elapsed="0.000121"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.096239" elapsed="0.000027"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.096482" elapsed="0.000026"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:08:52.096553" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:06:47.026199" elapsed="125.070458">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:08:52.096780" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:08:52.096740" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:08:52.096720" elapsed="0.000122"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.096988" elapsed="0.000022"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:06:47.024505" elapsed="125.072572">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:06:46.837522" elapsed="125.259617">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:06:46.835292" elapsed="125.261946">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:06:46.834924" elapsed="125.262373">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:06:46.834897" elapsed="125.262434">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:08:52.097614" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:52.097400" elapsed="0.000269"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:08:52.097383" elapsed="0.000309"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:08:52.097987" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:52.097747" elapsed="0.000337"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:08:52.097731" elapsed="0.000379"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:06:46.834390" elapsed="125.263804">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T03:08:52.098308" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T03:01:45.361477" elapsed="426.736962">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:08:52.102663" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:08:52.102167" elapsed="0.000525"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:08:52.103204" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:08:52.102858" elapsed="0.000373"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:08:52.103278" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:08:52.103440" level="INFO">${index_list} = [1, 2, 3]</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-19T03:08:52.101680" elapsed="0.001786"/>
</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-19T03:08:52.104650" level="INFO">${member_ip} = 10.30.171.9</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-19T03:08:52.104305" elapsed="0.000373"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:52.105606" 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-19T03:08:52.105724" 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-19T03:08:52.105411" elapsed="0.000340"/>
</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-19T03:08:52.108540" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:52.108255" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:52.108234" elapsed="0.000400"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:52.108920" 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-19T03:08:52.109023" 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-19T03:08:52.108788" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:52.109720" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:52.109221" elapsed="0.000548"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:52.110414" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:08:52.109928" elapsed="0.000529"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:08:52.111693" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:08:52.111793" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:08:52.111254" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:52.111995" elapsed="0.000561"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:08:52.114142" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:08:53.295781" 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 Sun Apr 19 03:08:52 UTC 2026

  System load:  0.11               Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:01:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:08:52.113470" elapsed="1.182508"/>
</kw>
<msg time="2026-04-19T03:08:53.296200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:52.112730" elapsed="1.183609"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:08:52.110751" elapsed="1.185700"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.296955" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:08:53.309272" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:08:53.309387" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:08:53.309431" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:08:53.296693" elapsed="0.012762"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:53.309624" elapsed="0.000232"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.310820" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:53.310170" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:53.311412" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:53.311124" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:53.311074" elapsed="0.000495"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:08:53.311921" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T03:08:53.311688" elapsed="0.000400"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:53.311654" elapsed="0.000490"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:53.312219" 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-19T03:08:53.318956" elapsed="0.000639"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:08:53.319763" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:53.320088" 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-19T03:08:53.312908" elapsed="0.007337"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:08:52.107639" elapsed="1.212699"/>
</kw>
<msg time="2026-04-19T03:08:53.320392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:52.107080" elapsed="1.213376"/>
</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-19T03:08:52.106455" elapsed="1.214080"/>
</kw>
<msg time="2026-04-19T03:08:53.320577" 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-19T03:08:52.105911" elapsed="1.214723"/>
</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-19T03:08:53.323585" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:08:53.324075" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:53.324369" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:53.320924" elapsed="0.003594"/>
</kw>
<msg time="2026-04-19T03:08:53.324611" 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-19T03:08:52.104903" elapsed="1.219734"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.325074" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:53.324813" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:08:53.325159" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:08:52.103839" elapsed="1.221448"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:08:52.103657" elapsed="1.221668"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:53.326352" level="INFO">${member_ip} = 10.30.171.128</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-19T03:08:53.326075" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.327249" 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-19T03:08:53.327350" 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-19T03:08:53.327110" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:53.330313" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:53.330011" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:53.329992" elapsed="0.000406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.330677" 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-19T03:08:53.330778" 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-19T03:08:53.330547" elapsed="0.000258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.331438" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:53.330957" elapsed="0.000528"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.332074" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:08:53.331644" elapsed="0.000459"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.333186" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:08:53.333281" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:08:53.332783" elapsed="0.000523"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:53.333465" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.335373" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:08:53.915240" 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 Sun Apr 19 03:08:53 UTC 2026

  System load:  0.06               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:01:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:08:53.334740" elapsed="0.580728"/>
</kw>
<msg time="2026-04-19T03:08:53.915593" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:53.334196" elapsed="0.581536"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:08:53.332320" elapsed="0.583530"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.916412" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:08:53.928795" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:08:53.928961" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:08:53.929025" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:08:53.916130" elapsed="0.012953"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:53.929337" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.930454" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:53.929970" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:53.930848" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:53.930641" elapsed="0.000279"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:53.930603" elapsed="0.000351"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:08:53.931218" elapsed="0.000044"/>
</return>
<status status="PASS" start="2026-04-19T03:08:53.931060" elapsed="0.000251"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:53.931011" elapsed="0.000415"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:53.931482" 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-19T03:08:53.936351" elapsed="0.000875"/>
</kw>
<kw name="Open 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-19T03:08:53.937477" elapsed="0.000256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:53.937952" elapsed="0.000174"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:53.931961" elapsed="0.006244"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:08:53.329424" elapsed="0.608920"/>
</kw>
<msg time="2026-04-19T03:08:53.938430" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:53.328842" elapsed="0.609691"/>
</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-19T03:08:53.328268" elapsed="0.610381"/>
</kw>
<msg time="2026-04-19T03:08:53.938710" 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-19T03:08:53.327534" elapsed="0.611259"/>
</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-19T03:08:53.943373" elapsed="0.000495"/>
</kw>
<kw name="Open 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-19T03:08:53.944138" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:53.944591" elapsed="0.000148"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:53.939261" elapsed="0.005557"/>
</kw>
<msg time="2026-04-19T03:08:53.944957" 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-19T03:08:53.326644" elapsed="0.618351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.945731" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:53.945313" elapsed="0.000481"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:08:53.945862" elapsed="0.000052"/>
</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-19T03:08:53.325602" elapsed="0.620469"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:08:53.325418" elapsed="0.620697"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:53.947149" level="INFO">${member_ip} = 10.30.171.206</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-19T03:08:53.946854" elapsed="0.000322"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.947974" 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-19T03:08:53.948097" 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-19T03:08:53.947834" elapsed="0.000290"/>
</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-19T03:08:53.950842" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:53.950543" elapsed="0.000356"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:53.950521" elapsed="0.000403"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.951229" 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-19T03:08:53.951331" 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-19T03:08:53.951094" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.952012" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:53.951509" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.952747" level="INFO">${conn_id} = 553</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:08:53.952319" elapsed="0.000454"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:08:53.953882" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:08:53.953976" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:08:53.953473" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:53.954180" elapsed="0.000794"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:08:53.956366" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:08:54.561486" 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 Sun Apr 19 03:08:54 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:01:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:08:53.955721" elapsed="0.605960"/>
</kw>
<msg time="2026-04-19T03:08:54.561800" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:53.955167" elapsed="0.606764"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:08:53.952992" elapsed="0.609074"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:08:54.562574" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:08:54.574909" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:08:54.575109" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:08:54.575174" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:08:54.562311" elapsed="0.012898"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:54.575443" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.576846" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:54.576196" 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-19T03:08:54.577477" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:54.577155" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:54.577105" 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-19T03:08:54.577987" elapsed="0.000092"/>
</return>
<status status="PASS" start="2026-04-19T03:08:54.577752" elapsed="0.000403"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:54.577718" elapsed="0.000489"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:54.578282" 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-19T03:08:54.584981" elapsed="0.001281"/>
</kw>
<kw name="Open 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-19T03:08:54.586430" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:54.586738" 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-19T03:08:54.578967" elapsed="0.007920"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:08:53.949956" elapsed="0.637024"/>
</kw>
<msg time="2026-04-19T03:08:54.587050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:53.949379" elapsed="0.637735"/>
</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-19T03:08:53.948790" elapsed="0.638403"/>
</kw>
<msg time="2026-04-19T03:08:54.587235" 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-19T03:08:53.948281" elapsed="0.639073"/>
</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-19T03:08:54.590343" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:08:54.590820" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:54.591130" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:54.587650" elapsed="0.003631"/>
</kw>
<msg time="2026-04-19T03:08:54.591372" 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-19T03:08:53.947393" elapsed="0.644004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.591819" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:54.591572" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:08:54.591904" 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-19T03:08:53.946408" elapsed="0.645640"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:08:53.946216" elapsed="0.645872"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:08:52.103522" elapsed="2.488601"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:08:52.098780" elapsed="2.493407"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T03:01:43.933340" elapsed="430.658929">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:54.592444" elapsed="0.000022"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T03:08:54.592685" elapsed="0.000024"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:54.593060" elapsed="0.000025"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:54.593278" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:54.593564" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:54.593381" elapsed="0.000243"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:08:54.593364" elapsed="0.000285"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T03:08:54.592868" elapsed="0.000804"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:08:54.592762" elapsed="0.000934"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:54.593850" elapsed="0.000021"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:01:43.928105" elapsed="430.665918">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T03:08:54.594488" elapsed="0.000439"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T02:54:28.810313" elapsed="865.784663"/>
</suite>
<suite id="s1-s18" name="Global Rpc Freeze" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_freeze.robot">
<kw name="Setup_Suite" 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-19T03:08:54.667908" 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-19T03:08:54.664216" elapsed="0.003741"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:08:54.663982" elapsed="0.004037"/>
</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-19T03:08:54.672372" 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-19T03:08:54.669123" elapsed="0.003276"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:08:54.672583" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:54.672476" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:54.672456" elapsed="0.000190"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.673150" 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-19T03:08:54.672785" elapsed="0.000409"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.673670" level="INFO">${cluster_size} = 3</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-19T03:08:54.673355" elapsed="0.000341"/>
</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-19T03:08:54.674191" elapsed="0.000275"/>
</kw>
<msg time="2026-04-19T03:08:54.674561" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:08:54.674608" level="INFO">${possibly_int_of_members} = 3</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-19T03:08:54.673850" elapsed="0.000780"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.675169" level="INFO">${int_of_members} = 3</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-19T03:08:54.674785" elapsed="0.000411"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.676144" 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-19T03:08:54.675864" elapsed="0.000307"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.676560" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:08:54.676307" elapsed="0.000280"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.677017" 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-19T03:08:54.676732" elapsed="0.000327"/>
</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-19T03:08:54.679823" elapsed="0.000218"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.680519" level="INFO">${member_ip} = 10.30.171.9</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-19T03:08:54.680193" elapsed="0.000352"/>
</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-19T03:08:54.680687" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.681702" 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-19T03:08:54.681407" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:08:54.681775" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:08:54.681929" 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-19T03:08:54.681111" elapsed="0.000843"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:08:54.682688" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7e65550&gt;, timeout=30, 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-19T03:08:54.682112" elapsed="0.000706"/>
</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-19T03:08:54.682968" elapsed="0.000212"/>
</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-19T03:08:54.679283" elapsed="0.003962"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:08:54.679106" elapsed="0.004184"/>
</iter>
<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-19T03:08:54.684100" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.684756" level="INFO">${member_ip} = 10.30.171.128</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-19T03:08:54.684434" elapsed="0.000349"/>
</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-19T03:08:54.684920" elapsed="0.000237"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.685968" level="INFO">${session} = ClusterManagement__session_2</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-19T03:08:54.685629" elapsed="0.000366"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:08:54.686057" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:08:54.686212" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:08:54.685349" elapsed="0.000889"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:08:54.686787" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f74363d0&gt;, timeout=30, 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-19T03:08:54.686381" elapsed="0.000509"/>
</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-19T03:08:54.687054" elapsed="0.000191"/>
</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-19T03:08:54.683546" elapsed="0.003758"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:08:54.683376" elapsed="0.003973"/>
</iter>
<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-19T03:08:54.688161" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.688816" level="INFO">${member_ip} = 10.30.171.206</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-19T03:08:54.688493" elapsed="0.000349"/>
</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-19T03:08:54.688981" elapsed="0.000236"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.690001" level="INFO">${session} = ClusterManagement__session_3</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-19T03:08:54.689707" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:08:54.690090" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:08:54.690260" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:08:54.689425" elapsed="0.000862"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:08:54.690832" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f75f0dd0&gt;, timeout=30, 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-19T03:08:54.690429" elapsed="0.000515"/>
</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-19T03:08:54.691109" elapsed="0.000193"/>
</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-19T03:08:54.687603" elapsed="0.003758"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:08:54.687434" elapsed="0.003970"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:08:54.677113" elapsed="0.014322"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.691982" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:08:54.691583" elapsed="0.000442"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.692605" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:08:54.692197" elapsed="0.000451"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.693196" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:08:54.692797" elapsed="0.000443"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-19T03:08:54.675424" elapsed="0.017893"/>
</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-19T03:08:54.668778" elapsed="0.024597"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:08:54.693558" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:54.693444" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:54.693426" elapsed="0.000198"/>
</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-19T03:08:54.696687" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:08:54.696305" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.697188" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:08:54.696861" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:08:54.697260" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:08:54.697435" level="INFO">${index_list} = [1, 2, 3]</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-19T03:08:54.695974" elapsed="0.001486"/>
</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-19T03:08:54.698427" level="INFO">${member_ip} = 10.30.171.9</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-19T03:08:54.698161" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:54.699155" 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-19T03:08:54.699255" 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-19T03:08:54.698997" 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-19T03:08:54.702497" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:54.701940" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:54.701921" elapsed="0.000697"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:54.703253" 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-19T03:08:54.703481" 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-19T03:08:54.702805" elapsed="0.000727"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.704446" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:54.703780" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:54.705698" 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-19T03:08:54.704802" elapsed="0.000946"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:08:54.707396" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:08:54.707567" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:08:54.707046" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:54.707929" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:08:54.709636" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:08:55.022401" 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 Sun Apr 19 03:08:52 UTC 2026

  System load:  0.11               Processes:             120
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:08:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:08:54.709311" elapsed="0.313182"/>
</kw>
<msg time="2026-04-19T03:08:55.022561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:54.708726" elapsed="0.313953"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:08:54.706180" elapsed="0.316627"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.023621" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:08:55.036453" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:08:55.036676" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:08:55.036820" 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-19T03:08:55.023189" elapsed="0.013699"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.037347" elapsed="0.000661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.039528" 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-19T03:08:55.038746" elapsed="0.000927"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:55.040263" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:55.039897" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.039863" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:08:55.040904" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T03:08:55.040598" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.040575" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:55.041296" 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-19T03:08:55.045364" elapsed="0.000617"/>
</kw>
<kw name="Open 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-19T03:08:55.046383" elapsed="0.000378"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.047249" elapsed="0.000304"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:55.041915" elapsed="0.005731"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:08:54.700982" elapsed="0.346903"/>
</kw>
<msg time="2026-04-19T03:08:55.047960" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:54.700390" elapsed="0.347658"/>
</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-19T03:08:54.699905" elapsed="0.348257"/>
</kw>
<msg time="2026-04-19T03:08:55.048218" 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-19T03:08:54.699428" elapsed="0.348851"/>
</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-19T03:08:55.051625" 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-19T03:08:55.052286" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.052675" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:55.048656" elapsed="0.004219"/>
</kw>
<msg time="2026-04-19T03:08:55.052998" 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-19T03:08:54.698656" elapsed="0.354395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.053642" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:55.053300" elapsed="0.000398"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:08:55.053759" elapsed="0.000039"/>
</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-19T03:08:54.697804" elapsed="0.356123"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:08:54.697639" elapsed="0.356337"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:55.054941" level="INFO">${member_ip} = 10.30.171.128</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-19T03:08:55.054672" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.055704" 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-19T03:08:55.055866" 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-19T03:08:55.055570" elapsed="0.000322"/>
</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-19T03:08:55.060681" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:55.060150" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.060131" elapsed="0.000674"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.061444" 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-19T03:08:55.061671" 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-19T03:08:55.060989" elapsed="0.000732"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.062637" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:55.061970" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.063883" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:08:55.062993" elapsed="0.000940"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.065647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:08:55.065823" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:08:55.065286" elapsed="0.000579"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:55.066201" elapsed="0.000449"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.067763" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:08:55.388316" 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 Sun Apr 19 03:08:53 UTC 2026

  System load:  0.06               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:08:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:08:55.067439" elapsed="0.321001"/>
</kw>
<msg time="2026-04-19T03:08:55.388517" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:55.066982" elapsed="0.321672"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:08:55.064368" elapsed="0.324431"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.389681" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:08:55.402466" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:08:55.402856" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:08:55.403133" 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-19T03:08:55.389197" elapsed="0.014048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.403880" elapsed="0.001113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.407415" 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-19T03:08:55.406181" elapsed="0.001468"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:55.408607" elapsed="0.000107"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:55.408007" elapsed="0.000874"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.407954" elapsed="0.001058"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:08:55.409741" elapsed="0.000140"/>
</return>
<status status="PASS" start="2026-04-19T03:08:55.409242" elapsed="0.000942"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.409203" elapsed="0.001058"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:55.410348" 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-19T03:08:55.414766" elapsed="0.000654"/>
</kw>
<kw name="Open 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-19T03:08:55.415801" elapsed="0.000521"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.416673" elapsed="0.000328"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:55.411013" elapsed="0.006106"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:08:55.059231" elapsed="0.358135"/>
</kw>
<msg time="2026-04-19T03:08:55.417444" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:55.058604" elapsed="0.358911"/>
</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-19T03:08:55.058116" elapsed="0.359510"/>
</kw>
<msg time="2026-04-19T03:08:55.417684" 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-19T03:08:55.056048" elapsed="0.361698"/>
</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-19T03:08:55.421198" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:08:55.421677" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.421959" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:55.418157" elapsed="0.003968"/>
</kw>
<msg time="2026-04-19T03:08:55.422217" 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-19T03:08:55.055226" elapsed="0.367016"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.422655" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:55.422407" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:08:55.422739" 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-19T03:08:55.054329" elapsed="0.368534"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:08:55.054134" elapsed="0.368768"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:55.423811" level="INFO">${member_ip} = 10.30.171.206</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-19T03:08:55.423540" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.424586" 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-19T03:08:55.424686" 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-19T03:08:55.424450" elapsed="0.000262"/>
</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-19T03:08:55.427923" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:55.427382" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.427363" elapsed="0.000737"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.428723" 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-19T03:08:55.428964" 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-19T03:08:55.428293" elapsed="0.000723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.429974" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:55.429321" elapsed="0.000774"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.431282" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:08:55.430378" elapsed="0.000955"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.433111" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:08:55.433292" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:08:55.432631" elapsed="0.000704"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:55.433658" elapsed="0.000638"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.435418" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:08:55.745970" 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 Sun Apr 19 03:08:54 UTC 2026

  System load:  0.01               Processes:             118
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:08:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:08:55.435088" elapsed="0.311053"/>
</kw>
<msg time="2026-04-19T03:08:55.746230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:55.434632" elapsed="0.311740"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:08:55.431751" elapsed="0.314770"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.747388" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:08:55.759783" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:08:55.760200" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:08:55.760448" 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-19T03:08:55.746870" elapsed="0.013687"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.761297" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.765176" 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-19T03:08:55.763776" elapsed="0.001580"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:55.766139" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:55.765750" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.765711" 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-19T03:08:55.766828" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T03:08:55.766494" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.766469" elapsed="0.000704"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:08:55.767260" elapsed="0.000025"/>
</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-19T03:08:55.771513" elapsed="0.000694"/>
</kw>
<kw name="Open 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-19T03:08:55.772581" elapsed="0.000437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.773398" elapsed="0.000326"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:55.767925" elapsed="0.005901"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:08:55.426444" elapsed="0.347654"/>
</kw>
<msg time="2026-04-19T03:08:55.774280" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:08:55.425832" elapsed="0.348531"/>
</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-19T03:08:55.425362" elapsed="0.349114"/>
</kw>
<msg time="2026-04-19T03:08:55.774532" 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-19T03:08:55.424855" elapsed="0.349741"/>
</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-19T03:08:55.777849" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:08:55.778348" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.778639" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:08:55.775001" elapsed="0.003788"/>
</kw>
<msg time="2026-04-19T03:08:55.778895" 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-19T03:08:55.424096" elapsed="0.354825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.779418" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:55.779160" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:08:55.779505" 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-19T03:08:55.423180" elapsed="0.356454"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:08:55.422994" elapsed="0.356679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:08:54.697512" elapsed="1.082195"/>
</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-19T03:08:54.693831" elapsed="1.085934"/>
</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-19T03:08:55.779926" elapsed="0.000233"/>
</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-19T03:08:55.792809" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:55.792680" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.792660" elapsed="0.000220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.793195" 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-19T03:08:55.793302" 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-19T03:08:55.793050" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.793731" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:55.793470" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:55.794197" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:55.793917" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:55.794962" 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-19T03:08:55.794734" elapsed="0.000361">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:08:55.795206" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:08:55.795253" 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-19T03:08:55.794389" elapsed="0.000887"/>
</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-19T03:08:55.795568" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:55.795353" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:55.795334" elapsed="0.000334"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:55.796423" level="INFO">${ip_address} = 10.30.171.9</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-19T03:08:55.796147" elapsed="0.000302"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:08:55.796497" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:08:55.796647" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:08:55.795857" elapsed="0.000815"/>
</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-19T03:08:55.796898" elapsed="0.000435"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.797604" level="INFO">index=10
host=10.30.171.9
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-19T03:08:55.797706" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.797494" 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-19T03:08:55.797872" elapsed="0.001959"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:08:55.800278" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:08:56.851494" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:08:55.799987" elapsed="1.051781"/>
</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-19T03:08:56.858985" elapsed="0.000895"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:08:56.860357" elapsed="0.000380"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:56.861085" elapsed="0.000157"/>
</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-19T03:08:56.853879" elapsed="0.007418"/>
</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-19T03:08:56.852540" elapsed="0.008805"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:08:55.792393" elapsed="1.069004"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:08:55.780873" elapsed="1.080574"/>
</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-19T03:08:55.780498" elapsed="1.081002"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:08:55.780368" elapsed="1.081173"/>
</iter>
<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-19T03:08:56.874104" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:56.873924" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:56.873894" elapsed="0.000303"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:56.874540" 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-19T03:08:56.874668" 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-19T03:08:56.874377" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:56.875201" 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-19T03:08:56.874862" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:56.875720" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:56.875429" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:56.876576" level="FAIL">Dictionary does not contain key '2'.</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-19T03:08:56.876325" elapsed="0.000363">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:08:56.876795" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:08:56.876919" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:08:56.875928" elapsed="0.001017"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-19T03:08:56.877256" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:56.877023" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:56.877004" elapsed="0.000351"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:56.878096" level="INFO">${ip_address} = 10.30.171.128</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-19T03:08:56.877807" elapsed="0.000316"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:08:56.878172" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:08:56.878325" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:08:56.877545" elapsed="0.000805"/>
</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-19T03:08:56.878493" elapsed="0.000402"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:56.879181" level="INFO">index=12
host=10.30.171.128
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-19T03:08:56.879282" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T03:08:56.879072" elapsed="0.000236"/>
</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-19T03:08:56.879444" elapsed="0.001946"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:08:56.881799" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:08:57.719941" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:08:56.881541" elapsed="0.838580"/>
</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-19T03:08:57.723326" elapsed="0.000379"/>
</kw>
<kw name="Open 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-19T03:08:57.723879" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:08:57.724208" elapsed="0.000106"/>
</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-19T03:08:57.721244" 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-19T03:08:57.720524" elapsed="0.003891"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:08:56.873584" elapsed="0.850886"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:08:56.862154" elapsed="0.862368"/>
</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-19T03:08:56.861776" elapsed="0.862801"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:08:56.861644" elapsed="0.862983"/>
</iter>
<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-19T03:08:57.736591" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:08:57.736473" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:57.736450" elapsed="0.000212"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:57.737025" 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-19T03:08:57.737149" 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-19T03:08:57.736889" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:57.737586" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:57.737322" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:08:57.738009" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:08:57.737769" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:57.738801" level="FAIL">Dictionary does not contain key '3'.</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-19T03:08:57.738557" elapsed="0.000352">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:08:57.739017" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:08:57.739078" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:08:57.738214" elapsed="0.000889"/>
</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-19T03:08:57.739392" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:08:57.739179" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T03:08:57.739161" elapsed="0.000329"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:08:57.740249" level="INFO">${ip_address} = 10.30.171.206</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-19T03:08:57.739959" elapsed="0.000316"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:08:57.740325" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:08:57.740476" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:08:57.739678" elapsed="0.000823"/>
</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-19T03:08:57.740644" elapsed="0.000412"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:08:57.741325" level="INFO">index=14
host=10.30.171.206
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-19T03:08:57.741425" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T03:08:57.741217" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:08:57.741588" elapsed="0.001973"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:08:57.743992" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:09:07.812784" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:08:57.743714" elapsed="10.069977">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:09:07.816974" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T03:09:07.817544" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:07.817853" 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-19T03:09:07.814899" elapsed="0.003109"/>
</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-19T03:09:07.814216" elapsed="0.003866"/>
</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-19T03:08:57.736183" elapsed="10.081984">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:09:07.818260" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:08:57.725244" elapsed="10.093109">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:08:57.724863" elapsed="10.093656"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:08:57.724732" elapsed="10.093844"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:08:55.780217" elapsed="12.038397"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:08:54.668352" elapsed="13.150325"/>
</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-19T03:09:07.821189" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:07.821069" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:07.821024" elapsed="0.000236"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:07.825416" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:07.825309" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:07.825291" elapsed="0.000198"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:09:07.826461" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:09:07.826052" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:09:07.826970" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:09:07.826643" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:09:07.827089" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:09:07.827254" level="INFO">${index_list} = [1, 2, 3]</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-19T03:09:07.825715" elapsed="0.001565"/>
</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-19T03:09:07.832425" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:07.832314" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:07.832295" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:07.833721" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:07.833588" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:07.833570" elapsed="0.000221"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:07.834443" 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-19T03:09:07.833925" elapsed="0.000546"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:07.834870" 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-19T03:09:07.834629" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:09:07.926207" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:09:07.835615" elapsed="0.090804"/>
</kw>
<msg time="2026-04-19T03:09:07.926616" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:09:07.926684" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:07.835087" elapsed="0.091651"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:09:08.053666" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "f "r "e "e "z "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:09:07.927837" elapsed="0.126155"/>
</kw>
<msg time="2026-04-19T03:09:08.054245" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:09:08.054294" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:07.927020" elapsed="0.127312"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:08.054873" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:08.054477" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.054439" elapsed="0.000801"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:08.055869" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "f "r "e "e "z "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:08.055381" elapsed="0.000580"/>
</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-19T03:09:08.056276" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:08.056043" elapsed="0.000398"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.056010" elapsed="0.000456"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:09:08.056513" elapsed="0.000046"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:08.059050" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T03:09:08.060096" elapsed="0.000340"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:08.060786" elapsed="0.000351"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:08.058149" elapsed="0.003087"/>
</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-19T03:09:08.056823" elapsed="0.004560"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:09:07.833290" elapsed="0.228195"/>
</kw>
<msg time="2026-04-19T03:09:08.061586" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:09:08.061630" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:07.832658" elapsed="0.229009"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:09:08.061996" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:09:08.061744" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.061725" elapsed="0.000371"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:08.062502" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:08.062829" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:09:08.062913" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:09:07.831891" elapsed="0.231131"/>
</kw>
<msg time="2026-04-19T03:09:08.063134" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:09:08.063178" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:07.827670" elapsed="0.235545"/>
</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-19T03:09:08.063528" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:08.063291" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.063274" elapsed="0.000329"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:09:07.827534" elapsed="0.236098"/>
</iter>
<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-19T03:09:08.069286" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:08.068991" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.068972" elapsed="0.000383"/>
</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-19T03:09:08.070544" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:08.070414" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.070396" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:08.071153" level="INFO">${karaf_connection_index} = 12</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-19T03:09:08.070744" elapsed="0.000437"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:08.071565" 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-19T03:09:08.071328" elapsed="0.000298"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:09:08.153636" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:09:08.072300" elapsed="0.081585"/>
</kw>
<msg time="2026-04-19T03:09:08.154104" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:09:08.154155" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:08.071777" elapsed="0.082422"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:09:08.274250" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "f "r "e "e "z "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:09:08.155197" elapsed="0.119332"/>
</kw>
<msg time="2026-04-19T03:09:08.274722" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:09:08.274771" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:08.154432" elapsed="0.120406"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:08.275330" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:08.274953" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.274921" elapsed="0.000607"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:08.276239" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "f "r "e "e "z "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:08.275666" elapsed="0.000666"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:08.276678" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:08.276401" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.276382" elapsed="0.000498"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:09:08.276921" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:08.279187" 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-19T03:09:08.280047" elapsed="0.000338"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:08.280742" elapsed="0.000263"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:08.278285" elapsed="0.002838"/>
</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-19T03:09:08.277241" elapsed="0.004034"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:09:08.070126" elapsed="0.211252"/>
</kw>
<msg time="2026-04-19T03:09:08.281473" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:09:08.281518" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:08.069494" elapsed="0.212062"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:09:08.281742" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:09:08.281632" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.281614" elapsed="0.000211"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:08.282856" elapsed="0.000032"/>
</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-19T03:09:08.283216" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:09:08.283290" elapsed="0.000023"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:09:08.068695" elapsed="0.214784"/>
</kw>
<msg time="2026-04-19T03:09:08.283576" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:09:08.283621" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:09:08.063894" elapsed="0.219764"/>
</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-19T03:09:08.283973" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:08.283734" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.283716" elapsed="0.000349"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:09:08.063764" elapsed="0.220326"/>
</iter>
<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-19T03:09:08.289119" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:08.288997" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.288978" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:08.290527" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:08.290397" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:08.290379" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:08.291096" level="INFO">${karaf_connection_index} = 14</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-19T03:09:08.290726" elapsed="0.000397"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:08.291502" 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-19T03:09:08.291269" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:09:18.293336" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:09:08.292194" elapsed="10.002263">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:09:18.294704" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:09:18.294756" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:09:08.291675" elapsed="10.003107"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:09:28.296749" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:09:18.295747" elapsed="10.002028">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:09:28.298082" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:09:28.298153" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:09:18.295099" elapsed="10.003085"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:09:28.299861" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_freeze.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-19T03:09:28.298735" elapsed="0.001221">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_freeze.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:09:28.298344" elapsed="0.001904">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_freeze.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:09:28.298305" elapsed="0.001984">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_freeze.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-19T03:09:28.300448" 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-19T03:09:28.300668" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:28.300536" elapsed="0.000298"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:09:28.300519" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:09:28.300900" 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-19T03:09:28.303326" elapsed="0.000505"/>
</kw>
<kw name="Open 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-19T03:09:28.304236" elapsed="0.000342"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:28.305106" elapsed="0.000322"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:28.302273" elapsed="0.003257"/>
</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-19T03:09:28.301220" elapsed="0.004462"/>
</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-19T03:09:08.289919" elapsed="20.015852">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_freeze.robot"</status>
</kw>
<msg time="2026-04-19T03:09:28.305878" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:09:28.305924" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_freeze.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-19T03:09:08.289325" elapsed="20.016624"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:09:28.306163" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:28.306045" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:28.306008" elapsed="0.000222"/>
</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-19T03:09:28.306990" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:28.306884" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:28.306866" elapsed="0.000342"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:28.307707" 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-19T03:09:28.307835" 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-19T03:09:28.307355" elapsed="0.000507"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:28.308314" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:28.308010" elapsed="0.000350"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:28.308752" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:28.308503" elapsed="0.000293"/>
</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-19T03:09:28.309342" elapsed="0.000333"/>
</kw>
<msg time="2026-04-19T03:09:28.309774" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:09:28.309820" level="INFO">${old_connection_index} = 14</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-19T03:09:28.308942" elapsed="0.000902"/>
</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-19T03:09:28.311011" elapsed="0.000422"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:09:38.313530" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:09:28.312555" elapsed="10.001789">No match found for '
' in 10 seconds
Output:
.</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-19T03:09:28.311672" elapsed="10.002819"/>
</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-19T03:09:38.315864" elapsed="0.000327"/>
</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-19T03:09:38.314919" elapsed="0.001353"/>
</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-19T03:09:28.310163" elapsed="10.006200"/>
</kw>
<status status="PASS" start="2026-04-19T03:09:28.309921" elapsed="10.006498"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:28.309902" elapsed="10.006552"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:38.317631" level="INFO">${ip_address} = 10.30.171.206</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-19T03:09:38.317124" elapsed="0.000537"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:09:38.317714" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:09:38.317874" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:09:38.316729" elapsed="0.001170"/>
</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-19T03:09:38.318063" elapsed="0.000434"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:38.318790" level="INFO">index=19
host=10.30.171.206
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-19T03:09:38.318985" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T03:09:38.318664" elapsed="0.000349"/>
</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-19T03:09:38.319180" elapsed="0.002107"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:09:38.321764" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:09:48.383229" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:09:38.321465" elapsed="10.062664">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:09:48.387957" 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-19T03:09:48.388962" elapsed="0.000506"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:48.389683" elapsed="0.000198"/>
</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-19T03:09:48.385648" elapsed="0.004320"/>
</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-19T03:09:48.384639" elapsed="0.005378"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:09:28.306634" elapsed="20.083489">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:09:48.390485" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:09:48.390562" elapsed="0.000020"/>
</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-19T03:09:08.288701" elapsed="40.101973">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:09:48.390787" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:09:48.390832" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:09:08.284350" elapsed="40.106505"/>
</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-19T03:09:48.391227" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:48.390948" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:48.390927" elapsed="0.000380"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:09:08.284220" elapsed="40.107111"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:09:07.827343" elapsed="40.564029"/>
</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-19T03:09:07.825006" elapsed="40.566424"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:09:07.819321" elapsed="40.572174"/>
</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-19T03:09:07.818830" elapsed="40.572709"/>
</kw>
<arg>http_timeout=30</arg>
<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-19T03:08:54.663677" elapsed="53.727917"/>
</kw>
<kw name="Setup_Logging_For_Debug_Purposes_On_List_Or_All" owner="SetupUtils">
<for flavor="IN">
<iter>
<kw name="Run_Karaf_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-19T03:09:48.395195" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:09:48.394775" elapsed="0.000447"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:09:48.395689" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:09:48.395371" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:09:48.395763" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:09:48.395918" level="INFO">${index_list} = [1, 2, 3]</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-19T03:09:48.394464" elapsed="0.001480"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:48.396685" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:09:48.396413" elapsed="0.000299"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:48.397462" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:48.397351" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:48.397331" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:48.398692" 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-19T03:09:48.398794" 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-19T03:09:48.398544" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:48.404502" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:48.404368" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:48.404349" elapsed="0.000224"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T03:09:48.404708" elapsed="0.000961"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:09:48.406450" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:09:48.647685" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:09:48.405825" elapsed="0.242102"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:09:48.751580" level="INFO">@root&gt;log:set info org.opendaylight.controller.remote.rpc</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:09:48.648224" elapsed="0.103421"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:09:48.753299" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-19T03:09:48.753392" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:09:48.751815" elapsed="0.001605"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-19T03:09:48.753568" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:48.753926" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:48.754859" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:48.754340" elapsed="0.000572"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:09:48.754963" elapsed="0.000044"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-19T03:09:48.404022" elapsed="0.351112"/>
</kw>
<msg time="2026-04-19T03:09:48.755187" 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-19T03:09:48.398965" elapsed="0.356280"/>
</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-19T03:09:48.757888" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:09:48.758396" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:48.758694" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:48.755578" elapsed="0.003266"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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-19T03:09:48.398118" elapsed="0.360793"/>
</kw>
<msg time="2026-04-19T03:09:48.759249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:48.397668" elapsed="0.361640"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="PASS" start="2026-04-19T03:09:48.396948" elapsed="0.362457"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:09:48.396285" elapsed="0.363161"/>
</iter>
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:48.759987" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:09:48.759707" elapsed="0.000307"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:48.760807" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:48.760692" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:48.760671" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:48.762359" 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-19T03:09:48.762466" 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-19T03:09:48.761906" elapsed="0.000588"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:48.766523" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:48.766389" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:48.766370" elapsed="0.000221"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T03:09:48.766726" elapsed="0.000973"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:09:48.768475" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:09:48.990589" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:09:48.767854" elapsed="0.223127"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:09:49.058627" level="INFO">@root&gt;log:set info org.opendaylight.controller.remote.rpc</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:09:48.991559" elapsed="0.067138"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:09:49.060380" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-19T03:09:49.060478" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:09:49.058863" elapsed="0.001645"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-19T03:09:49.060657" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:49.060994" elapsed="0.000199"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:49.061866" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:49.061341" elapsed="0.000576"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:09:49.061967" elapsed="0.000043"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-19T03:09:48.766059" elapsed="0.296085"/>
</kw>
<msg time="2026-04-19T03:09:49.062200" 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-19T03:09:48.762640" elapsed="0.299633"/>
</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-19T03:09:49.065200" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:09:49.065697" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:49.066289" elapsed="0.000109"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:49.062619" elapsed="0.003834"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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-19T03:09:48.761478" elapsed="0.305043"/>
</kw>
<msg time="2026-04-19T03:09:49.066578" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:48.761018" elapsed="0.305610"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="PASS" start="2026-04-19T03:09:48.760296" elapsed="0.306423"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:09:48.759577" elapsed="0.307181"/>
</iter>
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:49.067350" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:09:49.066993" elapsed="0.000388"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:49.068180" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:49.068060" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:49.068007" elapsed="0.000241"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:49.069415" 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-19T03:09:49.069516" 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-19T03:09:49.069267" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:49.073628" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:49.073491" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:49.073471" elapsed="0.000226"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T03:09:49.073832" elapsed="0.000956"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:09:49.075632" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:09:59.146706" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:09:49.074945" elapsed="10.072653">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:59.147930" elapsed="0.000033"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:59.148126" elapsed="0.000022"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:59.148284" elapsed="0.000020"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:59.148433" elapsed="0.000020"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T03:09:59.148595" elapsed="0.000021"/>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-19T03:09:59.148669" elapsed="0.000340"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="FAIL" start="2026-04-19T03:09:49.073159" elapsed="10.075989">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:09:59.149214" 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="FAIL" start="2026-04-19T03:09:49.069685" elapsed="10.079587"/>
</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-19T03:09:59.151899" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T03:09:59.152466" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:59.152773" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:59.149648" elapsed="0.003281"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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="FAIL" start="2026-04-19T03:09:49.068821" elapsed="10.084184">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:09:59.153185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T03:09:49.068386" elapsed="10.084848"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="FAIL" start="2026-04-19T03:09:49.067631" elapsed="10.085708">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:09:49.066866" elapsed="10.086544">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:09:48.396007" elapsed="10.757465">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</for>
<arg>log:set ${log_level} ${logger}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run karaf command on each.</doc>
<status status="FAIL" start="2026-04-19T03:09:48.393985" elapsed="10.759584">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<var name="${logger}">org.opendaylight.controller.remote.rpc</var>
<status status="FAIL" start="2026-04-19T03:09:48.393783" elapsed="10.759847">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</iter>
<var>${logger}</var>
<value>@{loggers_list}</value>
<status status="FAIL" start="2026-04-19T03:09:48.393647" elapsed="10.760037">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</for>
<arg>${TEST_LOG_LEVEL}</arg>
<arg>${TEST_LOG_COMPONENTS}</arg>
<doc>Set the log level for given loggers on node nodes of the cluster</doc>
<status status="FAIL" start="2026-04-19T03:09:48.391828" elapsed="10.761945">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<doc>FIXME: Add a documentation.</doc>
<status status="FAIL" start="2026-04-19T03:08:54.663389" elapsed="64.490476">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<test id="s1-s18-t1" name="Get_Basic_Rpc_Test_Owner" line="36">
<doc>Find a service owner and successors.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.153943" elapsed="0.000602">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t2" name="Rpc_Before_Freezing_On_Owner" line="40">
<doc>Run rpc on the service owner.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.154811" elapsed="0.000383">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t3" name="Rpc_Before_Freeze_On_Successors" line="44">
<doc>Run rpc on non owher cluster nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.155428" elapsed="0.000335">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t4" name="Freeze_Current_Owner_Member" line="50">
<doc>Stop cluster node which is the owner.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.155930" elapsed="0.000423">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t5" name="Verify_New_Basic_Rpc_Test_Owner_Elected" line="57">
<doc>Verify new owner of the service is elected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.156592" elapsed="0.000482">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t6" name="Rpc_On_Remained_Cluster_Nodes" line="63">
<doc>Run rpc on remained cluster nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.157318" elapsed="0.000364">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t7" name="Unfreeze_Frozen_Member" line="69">
<doc>Restart frozen node</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.157933" elapsed="0.000365">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t8" name="Rpc_After_Rejoin_On_New_Owner" line="74">
<doc>Run rpc on the new service owner node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.158554" elapsed="0.000374">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t9" name="Rpc_After_Rejoin_On_Old_Owner" line="78">
<doc>Run rpc on rejoined cluster node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.159249" elapsed="0.000364">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s18-t10" name="Rpc_After_Rejoin_On_All" line="82">
<doc>Run rpc again on all nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:09:59.159852" elapsed="0.000365">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T03:09:59.160695" elapsed="0.000313"/>
</kw>
<doc>Controller functional HA testing of global singleton rpcs if jvm frozen.

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html</doc>
<status status="FAIL" start="2026-04-19T03:08:54.595751" elapsed="64.565317">Suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</suite>
<suite id="s1-s19" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.267246" 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-19T03:09:59.262848" elapsed="0.004450"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:09:59.262621" elapsed="0.004742"/>
</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-19T03:09:59.272997" 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-19T03:09:59.268662" elapsed="0.004364"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:09:59.273234" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:59.273125" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:59.273102" elapsed="0.000197"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.273852" 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-19T03:09:59.273454" elapsed="0.000442"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.274443" level="INFO">${cluster_size} = 3</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-19T03:09:59.274075" elapsed="0.000409"/>
</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-19T03:09:59.274996" elapsed="0.000318"/>
</kw>
<msg time="2026-04-19T03:09:59.275413" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:09:59.275461" level="INFO">${possibly_int_of_members} = 3</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-19T03:09:59.274656" elapsed="0.000829"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.276025" level="INFO">${int_of_members} = 3</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-19T03:09:59.275654" elapsed="0.000413"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.277049" 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-19T03:09:59.276771" elapsed="0.000306"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.277481" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:09:59.277225" elapsed="0.000283"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.277947" 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-19T03:09:59.277663" elapsed="0.000311"/>
</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-19T03:09:59.281206" elapsed="0.000223"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.281915" level="INFO">${member_ip} = 10.30.171.9</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-19T03:09:59.281588" elapsed="0.000353"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:09:59.282107" elapsed="0.000230"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.283150" 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-19T03:09:59.282837" elapsed="0.000340"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:09:59.283224" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:09:59.283404" 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-19T03:09:59.282544" elapsed="0.000885"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:09:59.284008" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7e45590&gt;, timeout=125, 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-19T03:09:59.283585" 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-19T03:09:59.284336" elapsed="0.000399"/>
</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-19T03:09:59.280628" elapsed="0.004170"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:09:59.280439" elapsed="0.004402"/>
</iter>
<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-19T03:09:59.285681" elapsed="0.000190"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.286367" level="INFO">${member_ip} = 10.30.171.128</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-19T03:09:59.286041" elapsed="0.000352"/>
</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-19T03:09:59.286557" elapsed="0.000223"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.287602" level="INFO">${session} = ClusterManagement__session_2</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-19T03:09:59.287286" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:09:59.287673" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:09:59.287821" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:09:59.286973" elapsed="0.000873"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:09:59.288414" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7fc1790&gt;, timeout=125, 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-19T03:09:59.287997" elapsed="0.000559"/>
</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-19T03:09:59.288717" 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-19T03:09:59.285122" elapsed="0.003844"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:09:59.284927" elapsed="0.004083"/>
</iter>
<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-19T03:09:59.289859" elapsed="0.000204"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.290571" level="INFO">${member_ip} = 10.30.171.206</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-19T03:09:59.290223" elapsed="0.000374"/>
</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-19T03:09:59.290749" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.291761" level="INFO">${session} = ClusterManagement__session_3</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-19T03:09:59.291468" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:09:59.291832" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:09:59.291981" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:09:59.291174" elapsed="0.000831"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:09:59.292575" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f73839d0&gt;, timeout=125, 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-19T03:09:59.292175" elapsed="0.000502"/>
</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-19T03:09:59.292836" elapsed="0.000187"/>
</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-19T03:09:59.289290" elapsed="0.003808"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:09:59.289111" elapsed="0.004032"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:09:59.278043" elapsed="0.015130"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.293732" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:09:59.293350" elapsed="0.000424"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.294335" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:09:59.293935" elapsed="0.000442"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.294919" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:09:59.294551" elapsed="0.000410"/>
</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-19T03:09:59.276320" elapsed="0.018697"/>
</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-19T03:09:59.268114" elapsed="0.026976"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:09:59.295268" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:59.295154" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:59.295136" elapsed="0.000196"/>
</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-19T03:09:59.298727" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:09:59.298324" elapsed="0.000430"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.299243" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:09:59.298916" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:09:59.299315" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:09:59.299471" level="INFO">${index_list} = [1, 2, 3]</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-19T03:09:59.297968" elapsed="0.001528"/>
</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-19T03:09:59.300542" level="INFO">${member_ip} = 10.30.171.9</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-19T03:09:59.300274" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.301323" 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-19T03:09:59.301424" 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-19T03:09:59.301164" elapsed="0.000285"/>
</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-19T03:09:59.304150" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:59.303814" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:59.303795" elapsed="0.000546"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.304620" 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-19T03:09:59.304740" 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-19T03:09:59.304491" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.305836" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:59.304921" elapsed="0.000963"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.306724" 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-19T03:09:59.306059" elapsed="0.000693"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.308063" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:09:59.308266" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:09:59.307516" elapsed="0.000801"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:59.308608" elapsed="0.000632"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.310884" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:09:59.905532" 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 Sun Apr 19 03:09:59 UTC 2026

  System load:  0.22               Processes:             123
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:08:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:09:59.310472" elapsed="0.595312"/>
</kw>
<msg time="2026-04-19T03:09:59.905894" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:59.309560" elapsed="0.596538"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:09:59.306968" elapsed="0.599409"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.906945" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:09:59.919569" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:09:59.919967" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:09:59.920198" 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-19T03:09:59.906634" elapsed="0.013638"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:59.920650" elapsed="0.000564"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.922872" 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-19T03:09:59.921653" elapsed="0.001476"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:09:59.923669" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:09:59.923318" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:59.923264" elapsed="0.000564"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:09:59.924269" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T03:09:59.923950" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:59.923915" elapsed="0.000546"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:09:59.924536" 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-19T03:09:59.930018" elapsed="0.001103"/>
</kw>
<kw name="Open 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-19T03:09:59.931446" elapsed="0.000744"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:59.932462" elapsed="0.000273"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:59.925277" elapsed="0.007576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:09:59.303335" elapsed="0.629658"/>
</kw>
<msg time="2026-04-19T03:09:59.933116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:59.302660" elapsed="0.630530"/>
</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-19T03:09:59.302121" elapsed="0.631179"/>
</kw>
<msg time="2026-04-19T03:09:59.933358" 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-19T03:09:59.301604" elapsed="0.631823"/>
</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-19T03:09:59.937578" 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-19T03:09:59.938290" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:09:59.938701" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:09:59.933840" elapsed="0.005062"/>
</kw>
<msg time="2026-04-19T03:09:59.939047" 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-19T03:09:59.300788" elapsed="0.638297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.939822" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:59.939378" elapsed="0.000536"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:09:59.939979" elapsed="0.000041"/>
</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-19T03:09:59.299899" elapsed="0.640247"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:09:59.299720" elapsed="0.640469"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:09:59.941216" level="INFO">${member_ip} = 10.30.171.128</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-19T03:09:59.940856" elapsed="0.000387"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.941973" 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-19T03:09:59.942091" 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-19T03:09:59.941833" elapsed="0.000285"/>
</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-19T03:09:59.944993" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:09:59.944679" elapsed="0.000493"/>
</branch>
<status status="PASS" start="2026-04-19T03:09:59.944660" elapsed="0.000541"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.945526" 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-19T03:09:59.945650" 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-19T03:09:59.945358" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.946796" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:09:59.945838" elapsed="0.001007"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.947671" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:09:59.947004" elapsed="0.000693"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:09:59.949048" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:09:59.949251" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:09:59.948470" elapsed="0.000831"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:59.949582" elapsed="0.000661"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:09:59.951753" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:00.559725" 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 Sun Apr 19 03:10:00 UTC 2026

  System load:  0.02               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:08:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:09:59.951354" elapsed="0.608585"/>
</kw>
<msg time="2026-04-19T03:10:00.560066" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:59.950578" elapsed="0.609661"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:09:59.947924" elapsed="0.612561"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:00.561069" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:10:00.574021" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:10:00.574257" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:10:00.574330" 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-19T03:10:00.560738" elapsed="0.013634"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:00.574634" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:00.575981" 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-19T03:10:00.575259" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:00.576432" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:00.576202" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:00.576166" elapsed="0.000365"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:10:00.576778" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T03:10:00.576606" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:00.576585" elapsed="0.000311"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:00.576942" 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-19T03:10:00.581534" elapsed="0.001073"/>
</kw>
<kw name="Open 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-19T03:10:00.582923" elapsed="0.000585"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:00.583769" elapsed="0.000299"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:00.577421" elapsed="0.006764"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:09:59.944198" elapsed="0.640116"/>
</kw>
<msg time="2026-04-19T03:10:00.584463" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:09:59.943539" elapsed="0.640996"/>
</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-19T03:09:59.943028" elapsed="0.641618"/>
</kw>
<msg time="2026-04-19T03:10:00.584704" 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-19T03:09:59.942301" elapsed="0.642464"/>
</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-19T03:10:00.588903" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:10:00.589596" elapsed="0.000204"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:00.590069" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:00.585194" elapsed="0.005087"/>
</kw>
<msg time="2026-04-19T03:10:00.590382" 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-19T03:09:59.941468" elapsed="0.648939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:00.590831" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:00.590584" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:00.590915" 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-19T03:09:59.940496" elapsed="0.650557"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:09:59.940304" elapsed="0.650787"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:00.592001" level="INFO">${member_ip} = 10.30.171.206</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-19T03:10:00.591730" elapsed="0.000378"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:00.592822" 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-19T03:10:00.592922" 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-19T03:10:00.592688" elapsed="0.000260"/>
</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-19T03:10:00.595630" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:00.595286" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:00.595262" elapsed="0.000561"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:00.596128" 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-19T03:10:00.596252" 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-19T03:10:00.595975" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:00.597381" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:00.596446" elapsed="0.000990"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:00.598271" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:00.597596" elapsed="0.000703"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:00.599714" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:00.599918" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:00.599120" elapsed="0.000850"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:00.600317" elapsed="0.000828"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:00.602707" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:01.181692" 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 Sun Apr 19 03:10:00 UTC 2026

  System load:  0.03               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:08:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:10:00.602292" elapsed="0.579536"/>
</kw>
<msg time="2026-04-19T03:10:01.181916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:00.601481" elapsed="0.580616"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:00.598535" elapsed="0.583784"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.182783" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:10:01.195415" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:10:01.195750" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:10:01.195850" 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-19T03:10:01.182521" elapsed="0.013383"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.196308" elapsed="0.000455"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.198287" 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-19T03:10:01.197193" elapsed="0.001200"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:01.198871" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:01.198556" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.198508" 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-19T03:10:01.199461" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:10:01.199180" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.199146" elapsed="0.000502"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:01.199722" 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-19T03:10:01.204935" elapsed="0.001023"/>
</kw>
<kw name="Open 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-19T03:10:01.206296" elapsed="0.000555"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.207134" elapsed="0.000270"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:01.200435" elapsed="0.007082"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:00.594773" elapsed="0.612873"/>
</kw>
<msg time="2026-04-19T03:10:01.207719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:00.594138" elapsed="0.613650"/>
</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-19T03:10:00.593627" elapsed="0.614268"/>
</kw>
<msg time="2026-04-19T03:10:01.207951" 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-19T03:10:00.593117" elapsed="0.614895"/>
</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-19T03:10:01.212071" 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-19T03:10:01.212735" elapsed="0.000264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.213293" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:01.208442" elapsed="0.005063"/>
</kw>
<msg time="2026-04-19T03:10:01.213668" 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-19T03:10:00.592329" elapsed="0.621375"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.214332" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:01.213949" elapsed="0.000445"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:01.214448" elapsed="0.000032"/>
</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-19T03:10:00.591370" elapsed="0.623204"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:10:00.591187" elapsed="0.623424"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:09:59.299589" elapsed="1.915056"/>
</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-19T03:09:59.295550" elapsed="1.919152"/>
</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-19T03:10:01.214860" elapsed="0.000228"/>
</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-19T03:10:01.231050" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:01.230924" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.230905" elapsed="0.000217"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.231410" 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-19T03:10:01.231514" 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-19T03:10:01.231275" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.231953" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:01.231695" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.232415" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:01.232169" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:01.233226" 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-19T03:10:01.232987" elapsed="0.000352">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:10:01.233445" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:10:01.233491" 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-19T03:10:01.232626" elapsed="0.000889"/>
</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-19T03:10:01.233831" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:01.233605" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.233587" elapsed="0.000343"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:01.234686" level="INFO">${ip_address} = 10.30.171.9</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-19T03:10:01.234420" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:10:01.234760" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:10:01.234910" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:10:01.234146" elapsed="0.000789"/>
</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-19T03:10:01.235105" elapsed="0.000398"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.235782" level="INFO">index=10
host=10.30.171.9
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-19T03:10:01.235881" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.235677" elapsed="0.000231"/>
</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-19T03:10:01.236071" elapsed="0.002393"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.238924" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:10:01.435223" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:10:01.238667" elapsed="0.196674"/>
</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-19T03:10:01.439164" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:10:01.439644" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.439948" elapsed="0.000117"/>
</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-19T03:10:01.436401" elapsed="0.003717"/>
</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-19T03:10:01.435715" elapsed="0.004449"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.230641" elapsed="0.209574"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:10:01.215956" elapsed="0.224307"/>
</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-19T03:10:01.215428" elapsed="0.224890"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:10:01.215290" elapsed="0.225076"/>
</iter>
<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-19T03:10:01.454355" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:01.454237" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.454214" elapsed="0.000217"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.454730" 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-19T03:10:01.454839" 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-19T03:10:01.454588" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.455314" 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-19T03:10:01.455019" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.455754" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:01.455511" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:01.456563" level="FAIL">Dictionary does not contain key '2'.</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-19T03:10:01.456332" elapsed="0.000340">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:10:01.456778" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:10:01.456823" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:10:01.455955" elapsed="0.000891"/>
</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-19T03:10:01.457160" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:01.456921" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.456902" elapsed="0.000357"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:01.458044" level="INFO">${ip_address} = 10.30.171.128</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-19T03:10:01.457762" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:10:01.458175" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:10:01.458335" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:10:01.457479" elapsed="0.000881"/>
</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-19T03:10:01.458515" elapsed="0.000406"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.459218" level="INFO">index=12
host=10.30.171.128
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-19T03:10:01.459318" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T03:10:01.459109" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:10:01.459493" elapsed="0.002557"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.462489" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:10:01.645989" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:10:01.462216" elapsed="0.183878"/>
</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-19T03:10:01.649453" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:01.649922" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.650236" 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-19T03:10:01.646958" elapsed="0.003427"/>
</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-19T03:10:01.646376" elapsed="0.004054"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:10:01.453929" elapsed="0.196553"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:10:01.440980" elapsed="0.209547"/>
</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-19T03:10:01.440612" elapsed="0.209966"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:10:01.440469" elapsed="0.210149"/>
</iter>
<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-19T03:10:01.664495" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:01.664382" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.664361" elapsed="0.000207"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.664854" 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-19T03:10:01.664957" 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-19T03:10:01.664722" elapsed="0.000261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.665435" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:01.665150" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:01.665873" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:01.665631" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:01.666674" level="FAIL">Dictionary does not contain key '3'.</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-19T03:10:01.666454" elapsed="0.000320">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:10:01.666932" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:10:01.666979" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:10:01.666090" elapsed="0.000912"/>
</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-19T03:10:01.667322" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:01.667096" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:01.667077" elapsed="0.000348"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:01.668387" level="INFO">${ip_address} = 10.30.171.206</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-19T03:10:01.668107" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:10:01.668465" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:10:01.668622" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:10:01.667625" elapsed="0.001022"/>
</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-19T03:10:01.668803" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.669515" level="INFO">index=14
host=10.30.171.206
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-19T03:10:01.669613" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T03:10:01.669407" 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-19T03:10:01.669790" elapsed="0.002431"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:10:01.672645" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:10:11.738676" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:01.672386" elapsed="10.067214">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:11.743481" 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-19T03:10:11.743987" elapsed="0.000209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:11.744351" elapsed="0.000105"/>
</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-19T03:10:11.740937" elapsed="0.003600"/>
</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-19T03:10:11.740181" elapsed="0.004408"/>
</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-19T03:10:01.664094" elapsed="10.080586">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:10:11.744783" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:01.651237" elapsed="10.093643">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:01.650851" elapsed="10.094097"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:10:01.650710" elapsed="10.094290"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:10:01.215144" elapsed="10.529916"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:09:59.267658" elapsed="12.477473"/>
</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-19T03:10:11.748201" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:11.748065" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.748025" elapsed="0.000377"/>
</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-19T03:10:11.753612" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:11.753502" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.753483" elapsed="0.000199"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:10:11.754813" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:10:11.754278" elapsed="0.000563"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:10:11.755348" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:10:11.755006" elapsed="0.000368"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:10:11.755421" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:10:11.755582" level="INFO">${index_list} = [1, 2, 3]</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-19T03:10:11.753916" elapsed="0.001691"/>
</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-19T03:10:11.761182" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:11.761071" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.761051" elapsed="0.000200"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:10:11.762303" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:11.762195" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.762177" elapsed="0.000193"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:11.762819" 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-19T03:10:11.762514" elapsed="0.000332"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:11.763224" 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-19T03:10:11.763005" elapsed="0.000245"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:10:11.821238" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:10:11.763744" elapsed="0.057641"/>
</kw>
<msg time="2026-04-19T03:10:11.821490" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:10:11.821536" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.763410" elapsed="0.058162"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:10:11.900873" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:10:11.822112" elapsed="0.078963"/>
</kw>
<msg time="2026-04-19T03:10:11.901176" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:10:11.901220" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.821745" elapsed="0.079511"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:11.901558" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:11.901331" elapsed="0.000281"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.901312" elapsed="0.000323"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:11.902077" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:11.901782" elapsed="0.000388"/>
</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-19T03:10:11.902452" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:11.902236" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.902218" elapsed="0.000310"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:10:11.902601" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:11.903854" elapsed="0.000871"/>
</kw>
<kw name="Open 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-19T03:10:11.905072" elapsed="0.000516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:11.905878" elapsed="0.000235"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:11.903425" elapsed="0.002834"/>
</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-19T03:10:11.902876" elapsed="0.003432"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:10:11.761926" elapsed="0.144482"/>
</kw>
<msg time="2026-04-19T03:10:11.906501" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:10:11.906545" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.761405" elapsed="0.145177"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:10:11.906766" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:10:11.906658" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.906640" elapsed="0.000209"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:11.907266" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:11.907605" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:10:11.907678" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:10:11.760761" elapsed="0.147024"/>
</kw>
<msg time="2026-04-19T03:10:11.907877" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:10:11.907920" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.755982" elapsed="0.151974"/>
</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-19T03:10:11.908298" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:11.908044" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.908013" elapsed="0.000361"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:10:11.755839" elapsed="0.152558"/>
</iter>
<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-19T03:10:11.913817" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:11.913709" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.913690" 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-19T03:10:11.915057" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:11.914935" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:11.914918" elapsed="0.000206"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:11.915524" level="INFO">${karaf_connection_index} = 12</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-19T03:10:11.915267" elapsed="0.000283"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:11.915896" 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-19T03:10:11.915706" elapsed="0.000216"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:10:11.964233" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:10:11.916459" elapsed="0.047919"/>
</kw>
<msg time="2026-04-19T03:10:11.964506" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:10:11.964553" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.916103" elapsed="0.048487"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:10:12.038724" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:10:11.965125" elapsed="0.073781"/>
</kw>
<msg time="2026-04-19T03:10:12.039007" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:10:12.039075" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.964761" elapsed="0.074353"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:12.039412" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:12.039189" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:12.039169" elapsed="0.000320"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:12.039913" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:12.039628" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:12.040304" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:12.040089" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:12.040070" elapsed="0.000328"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:10:12.040432" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:12.041658" 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-19T03:10:12.042614" elapsed="0.000516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:12.043412" elapsed="0.000205"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:12.041233" elapsed="0.002530"/>
</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-19T03:10:12.040692" elapsed="0.003119"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:10:11.914683" elapsed="0.129378"/>
</kw>
<msg time="2026-04-19T03:10:12.044155" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:10:12.044200" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.914170" elapsed="0.130067"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:10:12.044438" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:10:12.044318" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:12.044300" elapsed="0.000220"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:12.044907" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:12.045444" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:10:12.045519" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:10:11.913411" elapsed="0.132215"/>
</kw>
<msg time="2026-04-19T03:10:12.045718" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:10:12.045761" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:10:11.908684" elapsed="0.137115"/>
</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-19T03:10:12.046139" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:12.045874" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:12.045856" elapsed="0.000361"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:10:11.908533" elapsed="0.137741"/>
</iter>
<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-19T03:10:12.051662" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:12.051556" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:12.051537" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:10:12.052802" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:12.052697" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:12.052679" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:12.053319" level="INFO">${karaf_connection_index} = 14</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-19T03:10:12.053012" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:12.053694" 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-19T03:10:12.053504" elapsed="0.000216"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:10:22.055097" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:10:12.054320" elapsed="10.001514">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:10:22.056061" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:10:22.056116" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:10:12.053877" elapsed="10.002264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:10:32.057661" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:10:22.056922" elapsed="10.001401">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:10:32.058542" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:10:32.058591" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:10:22.056443" elapsed="10.002172"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:10:32.059793" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T03:10:32.059135" elapsed="0.000724">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:10:32.058746" elapsed="0.001183">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:10:32.058713" elapsed="0.001251">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T03:10:32.060151" elapsed="0.000024"/>
</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-19T03:10:32.060386" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:32.060241" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:10:32.060222" elapsed="0.000240"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:10:32.060499" 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-19T03:10:32.061888" elapsed="0.000915"/>
</kw>
<kw name="Open 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-19T03:10:32.063160" elapsed="0.000528"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:32.063976" 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-19T03:10:32.061421" elapsed="0.002942"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T03:10:32.060809" elapsed="0.003602"/>
</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-19T03:10:12.052445" elapsed="20.012052">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T03:10:32.064602" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:10:32.064648" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T03:10:12.051879" elapsed="20.012862"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:10:32.064934" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:32.064821" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:32.064803" elapsed="0.000197"/>
</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-19T03:10:32.065820" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:32.065715" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:32.065697" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:32.066203" 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-19T03:10:32.066308" 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-19T03:10:32.066058" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:32.066999" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:32.066532" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:32.067494" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:32.067218" elapsed="0.000320"/>
</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-19T03:10:32.068244" elapsed="0.000256"/>
</kw>
<msg time="2026-04-19T03:10:32.068607" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:10:32.068653" level="INFO">${old_connection_index} = 14</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-19T03:10:32.067867" 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-19T03:10:32.069515" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:10:42.071491" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:10:32.070493" elapsed="10.002851">No match found for '
' in 10 seconds
Output:
.</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-19T03:10:32.069931" elapsed="10.003614"/>
</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-19T03:10:42.074557" elapsed="0.000457"/>
</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-19T03:10:42.073884" elapsed="0.001653"/>
</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-19T03:10:32.068973" elapsed="10.006615"/>
</kw>
<status status="PASS" start="2026-04-19T03:10:32.068751" elapsed="10.006890"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:32.068733" elapsed="10.006942"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:42.076566" level="INFO">${ip_address} = 10.30.171.206</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-19T03:10:42.076283" elapsed="0.000310"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:10:42.076645" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:10:42.076805" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:10:42.075926" elapsed="0.000904"/>
</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-19T03:10:42.076989" elapsed="0.000592"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:42.077880" level="INFO">index=19
host=10.30.171.206
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-19T03:10:42.077988" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T03:10:42.077757" elapsed="0.000258"/>
</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-19T03:10:42.078218" elapsed="0.002648"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:10:42.081312" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:10:52.144889" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:42.081046" elapsed="10.065025">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:52.150057" elapsed="0.000622"/>
</kw>
<kw name="Open 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-19T03:10:52.150851" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:52.151205" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:52.147429" elapsed="0.003933"/>
</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-19T03:10:52.146714" elapsed="0.004695"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:10:32.065461" elapsed="20.086035">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:52.151863" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:10:52.151941" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T03:10:12.051265" elapsed="40.100803">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:10:52.152189" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:10:52.152235" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:10:12.046540" elapsed="40.105719"/>
</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-19T03:10:52.152611" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:52.152349" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:52.152328" elapsed="0.000362"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:10:12.046400" elapsed="40.106321"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:10:11.755663" elapsed="40.397093"/>
</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-19T03:10:11.753194" elapsed="40.399624"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:10:11.745761" elapsed="40.407117"/>
</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-19T03:10:11.745299" elapsed="40.407623"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T03:09:59.262257" elapsed="52.890719"/>
</kw>
<test id="s1-s19-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.159111" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:10:52.158703" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.159603" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:10:52.159300" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:10:52.159673" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:10:52.159830" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T03:10:52.158322" elapsed="0.001532"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.161015" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:10:52.160639" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.161551" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:10:52.161218" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:10:52.161621" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:10:52.161772" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T03:10:52.160076" elapsed="0.001720"/>
</kw>
<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-19T03:10:52.163337" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:10:52.162941" elapsed="0.000422"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.163821" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:10:52.163522" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:10:52.163891" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:10:52.164063" level="INFO">${index_list} = [1, 2, 3]</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-19T03:10:52.162571" elapsed="0.001518"/>
</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-19T03:10:52.165139" level="INFO">${member_ip} = 10.30.171.9</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-19T03:10:52.164851" elapsed="0.000315"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.166104" 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-19T03:10:52.166205" 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-19T03:10:52.165942" elapsed="0.000289"/>
</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-19T03:10:52.169046" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:52.168756" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:52.168737" elapsed="0.000391"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.169420" 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-19T03:10:52.169519" 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-19T03:10:52.169292" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.170197" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:52.169699" elapsed="0.000546"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.170823" 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-19T03:10:52.170407" elapsed="0.000443"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.172128" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:52.172264" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:52.171525" elapsed="0.000764"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:52.172481" elapsed="0.000761"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.175561" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:52.504189" 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 Sun Apr 19 03:09:59 UTC 2026

  System load:  0.22               Processes:             123
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:09:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:10:52.174941" elapsed="0.329483"/>
</kw>
<msg time="2026-04-19T03:10:52.504561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:52.173481" elapsed="0.331269"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:52.171083" elapsed="0.333922"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.505539" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T03:10:52.892755" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:10:52.893098" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:10:52.893161" 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-19T03:10:52.505283" elapsed="0.387910"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:52.893540" elapsed="0.000459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.894826" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:52.894312" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:52.895424" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:52.895008" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:52.894972" elapsed="0.000542"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:10:52.895704" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T03:10:52.895579" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:52.895560" elapsed="0.000257"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:52.895859" elapsed="0.000017"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:52.915492" elapsed="0.000944"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:52.916623" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:52.916989" elapsed="0.000131"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:52.896291" elapsed="0.020885"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:52.168079" elapsed="0.749195"/>
</kw>
<msg time="2026-04-19T03:10:52.917334" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:52.167485" elapsed="0.749912"/>
</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-19T03:10:52.166889" elapsed="0.750590"/>
</kw>
<msg time="2026-04-19T03:10:52.917521" 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-19T03:10:52.166386" elapsed="0.751182"/>
</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-19T03:10:52.920959" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:10:52.921476" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:52.921776" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:52.917914" elapsed="0.004013"/>
</kw>
<msg time="2026-04-19T03:10:52.922021" 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-19T03:10:52.165524" elapsed="0.756538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.922555" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:52.922284" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:52.922647" elapsed="0.000034"/>
</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-19T03:10:52.164450" elapsed="0.758333"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:10:52.164276" elapsed="0.758554"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:52.923852" level="INFO">${member_ip} = 10.30.171.128</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-19T03:10:52.923563" elapsed="0.000318"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.924971" 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-19T03:10:52.925090" 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-19T03:10:52.924789" elapsed="0.000393"/>
</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-19T03:10:52.927924" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:52.927624" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:52.927602" elapsed="0.000406"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.928321" 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-19T03:10:52.928423" 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-19T03:10:52.928188" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.929156" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:52.928602" elapsed="0.000603"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.929796" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:52.929364" elapsed="0.000466"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:52.931144" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:52.931279" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:52.930544" elapsed="0.000760"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:52.931496" elapsed="0.002959"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:52.937091" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:53.264001" 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 Sun Apr 19 03:10:00 UTC 2026

  System load:  0.02               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:10:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:10:52.936366" elapsed="0.327935"/>
</kw>
<msg time="2026-04-19T03:10:53.264451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:52.934720" elapsed="0.330011"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:52.930094" elapsed="0.334896"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:53.265615" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T03:10:53.632678" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:10:53.633091" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:10:53.633198" 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-19T03:10:53.265319" elapsed="0.367933"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:53.633750" elapsed="0.000633"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:53.635582" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:53.634816" elapsed="0.000864"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:53.636205" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:53.635856" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:53.635804" elapsed="0.000560"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:10:53.636749" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:10:53.636485" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:53.636450" elapsed="0.000495"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:53.637020" elapsed="0.000064"/>
</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-19T03:10:53.658927" elapsed="0.000967"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:53.660166" elapsed="0.000237"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:53.660760" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:53.637812" elapsed="0.023173"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:52.927054" elapsed="0.734431"/>
</kw>
<msg time="2026-04-19T03:10:53.661545" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:52.926438" elapsed="0.735171"/>
</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-19T03:10:52.925871" elapsed="0.735822"/>
</kw>
<msg time="2026-04-19T03:10:53.661735" 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-19T03:10:52.925347" elapsed="0.736434"/>
</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-19T03:10:53.664816" 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-19T03:10:53.665344" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:53.665638" 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-19T03:10:53.662104" elapsed="0.003681"/>
</kw>
<msg time="2026-04-19T03:10:53.665878" 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-19T03:10:52.924375" elapsed="0.741528"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:53.666640" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:53.666387" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:53.666728" 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-19T03:10:52.923139" elapsed="0.743717"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:10:52.922934" elapsed="0.743959"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:53.667875" level="INFO">${member_ip} = 10.30.171.206</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-19T03:10:53.667602" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:53.668695" 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-19T03:10:53.668796" 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-19T03:10:53.668555" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:10:53.671951" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:53.671678" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:53.671658" elapsed="0.000392"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:53.672339" 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-19T03:10:53.672459" 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-19T03:10:53.672201" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:53.673207" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:53.672679" elapsed="0.000577"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:53.673845" 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-19T03:10:53.673417" elapsed="0.000456"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:53.675450" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:53.675586" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:53.674837" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:53.675824" elapsed="0.000782"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:53.679078" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:54.012525" 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 Sun Apr 19 03:10:00 UTC 2026

  System load:  0.03               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:10:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:10:53.678399" elapsed="0.334430"/>
</kw>
<msg time="2026-04-19T03:10:54.013010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:53.676850" elapsed="0.336443"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:53.674379" elapsed="0.339167"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:54.014238" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T03:10:54.371217" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T03:10:54.371614" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:10:54.371722" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:10:54.013868" elapsed="0.357911"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:54.372334" elapsed="0.000619"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.374242" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:54.373429" elapsed="0.000922"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:54.374860" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:54.374545" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:54.374478" elapsed="0.000546"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:10:54.375466" elapsed="0.000080"/>
</return>
<status status="PASS" start="2026-04-19T03:10:54.375219" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:54.375182" elapsed="0.000508"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:54.375769" 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-19T03:10:54.398334" elapsed="0.000591"/>
</kw>
<kw name="Open 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-19T03:10:54.399131" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:54.399462" 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-19T03:10:54.376575" elapsed="0.023041"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:53.671129" elapsed="0.728581"/>
</kw>
<msg time="2026-04-19T03:10:54.399767" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:53.670451" elapsed="0.729375"/>
</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-19T03:10:53.669873" elapsed="0.730032"/>
</kw>
<msg time="2026-04-19T03:10:54.399950" 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-19T03:10:53.668976" elapsed="0.731019"/>
</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-19T03:10:54.403370" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:10:54.403913" elapsed="0.000440"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:54.404508" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:54.400356" elapsed="0.004302"/>
</kw>
<msg time="2026-04-19T03:10:54.404752" 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-19T03:10:53.668129" elapsed="0.736649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.405260" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:54.404981" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:54.405348" elapsed="0.000032"/>
</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-19T03:10:53.667191" elapsed="0.738287"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:10:53.666991" elapsed="0.738525"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:10:52.164144" elapsed="2.241407"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:10:52.162075" elapsed="2.243533"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.406098" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:10:54.405767" elapsed="0.000357"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:10:54.406278" elapsed="0.000220"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:10:54.406685" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:54.406575" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:54.406556" elapsed="0.000196"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.408707" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:10:54.408413" elapsed="0.000321"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:54.409627" level="INFO">${member_ip} = 10.30.171.9</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-19T03:10:54.409357" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:54.410431" 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-19T03:10:54.410532" 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-19T03:10:54.410296" elapsed="0.000263"/>
</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-19T03:10:54.414678" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:54.414000" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:54.413943" elapsed="0.000884"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:54.416669" 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-19T03:10:54.416934" 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-19T03:10:54.416180" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.419235" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:54.418628" elapsed="0.000732"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:54.421356" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:54.420590" elapsed="0.000879"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.424003" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:54.424422" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:54.423730" elapsed="0.000717"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:54.424711" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:54.425987" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:54.751548" 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 Sun Apr 19 03:09:59 UTC 2026

  System load:  0.22               Processes:             123
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:10:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:10:54.425660" elapsed="0.326047"/>
</kw>
<msg time="2026-04-19T03:10:54.751797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:54.425298" elapsed="0.326589"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:54.422876" elapsed="0.329373"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:54.753932" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:10:54.777557" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:10:54.778169" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:10:54.778559" 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-19T03:10:54.753508" elapsed="0.025297"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:54.781465" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.785129" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:54.784102" elapsed="0.001191"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:54.785898" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:54.785540" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:54.785452" elapsed="0.000677"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:10:54.786667" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T03:10:54.786359" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:54.786281" elapsed="0.000627"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:54.787091" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:54.794286" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T03:10:54.795205" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:54.795713" 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-19T03:10:54.789361" elapsed="0.006717"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:54.412456" elapsed="0.383975"/>
</kw>
<msg time="2026-04-19T03:10:54.796934" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:54.411769" elapsed="0.385247"/>
</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-19T03:10:54.411238" elapsed="0.385907"/>
</kw>
<msg time="2026-04-19T03:10:54.797187" 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-19T03:10:54.410717" elapsed="0.386517"/>
</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-19T03:10:54.800274" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:10:54.800749" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:54.801139" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:54.797525" elapsed="0.003766"/>
</kw>
<msg time="2026-04-19T03:10:54.801455" level="INFO">${output} = 1</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-19T03:10:54.409870" elapsed="0.391611"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.801910" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:54.801659" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:54.801997" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:10:54.802169" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:10:54.408932" elapsed="0.393262"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:10:54.802242" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:10:54.802388" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:10:54.408050" elapsed="0.394363"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:10:54.802974" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:10:54.802571" elapsed="0.000548">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:10:54.407644" elapsed="0.395592">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:10:56.806714" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:10:56.805941" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:56.809251" level="INFO">${member_ip} = 10.30.171.9</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-19T03:10:56.808358" elapsed="0.000962"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:56.811229" 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-19T03:10:56.811495" 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-19T03:10:56.810777" elapsed="0.000779"/>
</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-19T03:10:56.817354" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:56.816712" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:56.816637" elapsed="0.000907"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:56.820014" 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-19T03:10:56.820384" 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-19T03:10:56.819018" elapsed="0.001505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:56.822625" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:56.821855" elapsed="0.000918"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:56.825072" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:56.824368" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:56.827430" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:56.827511" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:56.827142" 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-19T03:10:56.827758" elapsed="0.000466"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:56.829148" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:57.147721" 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 Sun Apr 19 03:09:59 UTC 2026

  System load:  0.22               Processes:             123
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:10:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:10:56.828805" elapsed="0.319173"/>
</kw>
<msg time="2026-04-19T03:10:57.148085" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:56.828445" elapsed="0.319731"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:56.826356" elapsed="0.322131"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:57.150069" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:10:57.172681" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:10:57.173328" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:10:57.173667" 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-19T03:10:57.149641" elapsed="0.024285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:57.176345" elapsed="0.000946"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:57.179721" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:57.178615" elapsed="0.001343"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:57.180877" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:57.180367" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:57.180241" elapsed="0.000995"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:10:57.182019" elapsed="0.000207"/>
</return>
<status status="PASS" start="2026-04-19T03:10:57.181563" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:57.181453" elapsed="0.001021"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:57.182654" elapsed="0.000086"/>
</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-19T03:10:57.190071" 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-19T03:10:57.190658" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:57.191142" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:57.185904" elapsed="0.005465"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:56.814757" elapsed="0.376838"/>
</kw>
<msg time="2026-04-19T03:10:57.191907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:56.813786" elapsed="0.378180"/>
</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-19T03:10:56.812987" elapsed="0.379077"/>
</kw>
<msg time="2026-04-19T03:10:57.192107" 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-19T03:10:56.811914" elapsed="0.380241"/>
</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-19T03:10:57.195317" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T03:10:57.195806" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:57.196121" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:57.192558" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T03:10:57.196371" level="INFO">${output} = 1</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-19T03:10:56.809819" elapsed="0.386578"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:57.196837" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:57.196577" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:57.196927" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:10:57.197104" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:10:56.807298" elapsed="0.389832"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:10:57.197177" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:10:57.197330" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:10:56.805120" elapsed="0.392278"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:10:57.198054" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:10:57.197617" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:10:56.804024" elapsed="0.394225">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.201709" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:10:59.200943" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:59.203937" level="INFO">${member_ip} = 10.30.171.9</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-19T03:10:59.203295" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.205851" 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-19T03:10:59.206162" 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-19T03:10:59.205518" elapsed="0.000707"/>
</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-19T03:10:59.212020" elapsed="0.000071"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:59.211370" elapsed="0.000783"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:59.210985" elapsed="0.001252"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.214263" 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-19T03:10:59.214596" 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-19T03:10:59.213607" elapsed="0.001128"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.216980" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:59.216201" elapsed="0.000957"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.219382" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:59.218508" elapsed="0.000973"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.221770" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:59.221872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:59.221482" 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-19T03:10:59.222146" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.223600" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:59.538916" 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 Sun Apr 19 03:09:59 UTC 2026

  System load:  0.22               Processes:             123
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:10:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:10:59.223271" elapsed="0.315804"/>
</kw>
<msg time="2026-04-19T03:10:59.539159" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:59.222743" elapsed="0.316502"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:59.220680" elapsed="0.318854"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.541024" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:10:59.564328" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:10:59.564842" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T03:10:59.565229" 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-19T03:10:59.540609" elapsed="0.024835"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:59.567737" elapsed="0.000939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.571111" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:59.570084" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:59.572260" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:10:59.571697" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:59.571573" elapsed="0.000984"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:10:59.573379" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:10:59.572879" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:59.572767" elapsed="0.001020"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:10:59.573994" elapsed="0.000254"/>
</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-19T03:10:59.579154" 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-19T03:10:59.579703" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:59.580104" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:10:59.575700" elapsed="0.004625"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:59.209113" elapsed="0.371440"/>
</kw>
<msg time="2026-04-19T03:10:59.580862" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:59.208133" elapsed="0.372788"/>
</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-19T03:10:59.207344" elapsed="0.373660"/>
</kw>
<msg time="2026-04-19T03:10:59.581070" 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-19T03:10:59.206567" elapsed="0.374553"/>
</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-19T03:10:59.584264" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:10:59.584741" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:59.585053" 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-19T03:10:59.581417" elapsed="0.003799"/>
</kw>
<msg time="2026-04-19T03:10:59.585307" level="INFO">${output} = 0</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-19T03:10:59.204531" elapsed="0.380802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.585779" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:59.585511" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:10:59.585867" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:10:59.586019" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:10:59.202290" elapsed="0.383859"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:10:59.586201" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:10:59.586355" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:10:59.200123" elapsed="0.386257"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T03:10:59.586538" elapsed="0.000357"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T03:10:59.199016" elapsed="0.387941"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:10:54.407091" elapsed="5.179913"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:10:54.406932" elapsed="5.180127"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.588959" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:10:59.588663" elapsed="0.000323"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:10:59.589919" level="INFO">${member_ip} = 10.30.171.128</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-19T03:10:59.589624" elapsed="0.000323"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.590809" 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-19T03:10:59.590911" 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-19T03:10:59.590674" elapsed="0.000264"/>
</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-19T03:10:59.594788" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:10:59.594355" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:59.594302" elapsed="0.000824"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.596585" 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-19T03:10:59.596832" 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-19T03:10:59.596127" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.598659" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:59.597939" elapsed="0.000831"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.600480" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:10:59.599761" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.603278" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:10:59.603357" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:10:59.602850" elapsed="0.000534"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:59.603604" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.604877" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:10:59.971829" 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 Sun Apr 19 03:10:00 UTC 2026

  System load:  0.02               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:10:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:10:59.604550" elapsed="0.367429"/>
</kw>
<msg time="2026-04-19T03:10:59.972081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:59.604173" elapsed="0.367994"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:10:59.602044" elapsed="0.370399"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:10:59.973939" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:10:59.996464" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:10:59.996835" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:10:59.996984" 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-19T03:10:59.973557" elapsed="0.023546"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:10:59.998270" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:10:59.999693" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:10:59.999254" elapsed="0.000608"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:00.000289" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:00.000027" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T03:10:59.999970" elapsed="0.000453"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:00.000777" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T03:11:00.000573" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:00.000521" elapsed="0.000415"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:00.001017" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:00.005727" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:11:00.006305" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:00.006661" 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-19T03:11:00.002384" elapsed="0.004485"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:10:59.592843" elapsed="0.414418"/>
</kw>
<msg time="2026-04-19T03:11:00.007571" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:10:59.592189" elapsed="0.415438"/>
</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-19T03:10:59.591635" elapsed="0.416072"/>
</kw>
<msg time="2026-04-19T03:11:00.007748" 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-19T03:10:59.591111" elapsed="0.416682"/>
</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-19T03:11:00.010780" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T03:11:00.011318" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:00.011611" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:00.008099" elapsed="0.003662"/>
</kw>
<msg time="2026-04-19T03:11:00.011851" level="INFO">${output} = 1</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-19T03:10:59.590258" elapsed="0.421619"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:00.012322" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:00.012072" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:00.012410" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:00.012561" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:10:59.589212" elapsed="0.423375"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:00.012633" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:11:00.012778" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:10:59.588313" elapsed="0.424491"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:00.013374" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:00.012961" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:10:59.587833" elapsed="0.425736">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.017129" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:02.016303" elapsed="0.000899"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:02.018516" level="INFO">${member_ip} = 10.30.171.128</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-19T03:11:02.018128" elapsed="0.000426"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.019793" 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-19T03:11:02.019937" 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-19T03:11:02.019574" elapsed="0.000400"/>
</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-19T03:11:02.025571" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:02.024612" elapsed="0.001072"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:02.024534" elapsed="0.001231"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.027740" 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-19T03:11:02.028115" 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-19T03:11:02.027131" elapsed="0.001124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.030148" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:02.029588" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.031921" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:02.031228" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.034413" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:02.034490" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:02.034131" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:02.034725" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.036060" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:02.614819" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.07               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:10:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:11:02.035710" elapsed="0.579266"/>
</kw>
<msg time="2026-04-19T03:11:02.615081" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:02.035344" elapsed="0.579832"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:02.033367" elapsed="0.582096"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.616970" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:02.639984" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:02.640347" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T03:11:02.640558" 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-19T03:11:02.616572" elapsed="0.024121"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:02.642101" elapsed="0.000576"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.644099" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:02.643473" 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-19T03:11:02.644815" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:02.644491" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:02.644406" elapsed="0.000596"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:02.645531" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:11:02.645234" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:02.645167" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:02.645861" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:02.653572" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:11:02.654138" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:02.654503" 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-19T03:11:02.647919" elapsed="0.006792"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:02.022655" elapsed="0.632278"/>
</kw>
<msg time="2026-04-19T03:11:02.655310" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:02.021722" elapsed="0.633646"/>
</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-19T03:11:02.020957" elapsed="0.634491"/>
</kw>
<msg time="2026-04-19T03:11:02.655488" 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-19T03:11:02.020221" elapsed="0.635313"/>
</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-19T03:11:02.658512" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:02.658983" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:02.659325" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:02.655827" elapsed="0.003645"/>
</kw>
<msg time="2026-04-19T03:11:02.659561" level="INFO">${output} = 0</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-19T03:11:02.018856" elapsed="0.640729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.660005" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:02.659762" elapsed="0.000325"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:02.660132" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:02.660310" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:02.017539" elapsed="0.642796"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:02.660382" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:02.660524" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:02.015465" elapsed="0.645083"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T03:11:02.660700" elapsed="0.000363"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T03:11:02.014394" elapsed="0.646732"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:10:59.587317" elapsed="3.073855"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:10:59.587170" elapsed="3.074039"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.662984" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:02.662696" elapsed="0.000315"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:02.663952" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:02.663684" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.664757" 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-19T03:11:02.664855" 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-19T03:11:02.664625" elapsed="0.000256"/>
</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-19T03:11:02.668572" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:02.668128" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:02.668076" elapsed="0.000629"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.670272" 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-19T03:11:02.670512" 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-19T03:11:02.669661" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.672124" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:02.671562" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.673913" 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-19T03:11:02.673230" elapsed="0.000780"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:02.676634" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:02.676711" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:02.676352" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:02.676945" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:02.678351" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:03.267569" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:10:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:02.677907" elapsed="0.589813"/>
</kw>
<msg time="2026-04-19T03:11:03.267803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:02.677547" elapsed="0.590343"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:02.675346" elapsed="0.592871"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:03.269788" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:03.292195" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:03.292729" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:03.293099" 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-19T03:11:03.269351" elapsed="0.023963"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:03.295581" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:03.298869" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:03.297817" elapsed="0.001312"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:03.300055" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:03.299486" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:03.299359" elapsed="0.000992"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:03.301141" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:11:03.300665" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:03.300560" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:03.301670" 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-19T03:11:03.308148" 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-19T03:11:03.308728" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:03.309098" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:03.304688" elapsed="0.004683"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:02.666768" elapsed="0.642831"/>
</kw>
<msg time="2026-04-19T03:11:03.309902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:02.666141" elapsed="0.643818"/>
</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-19T03:11:02.665594" elapsed="0.644501"/>
</kw>
<msg time="2026-04-19T03:11:03.310140" 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-19T03:11:02.665049" elapsed="0.645137"/>
</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-19T03:11:03.313199" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:11:03.313822" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:03.314206" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:03.310502" elapsed="0.003854"/>
</kw>
<msg time="2026-04-19T03:11:03.314447" level="INFO">${output} = 1</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-19T03:11:02.664206" elapsed="0.650266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:03.314895" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:03.314648" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:03.314981" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:03.315157" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:02.663279" elapsed="0.651904"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:03.315231" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:03.315376" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:02.662354" elapsed="0.653046"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:03.316007" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:03.315562" elapsed="0.000540">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:02.661954" elapsed="0.654264">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:05.319720" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:05.318934" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:05.321831" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:05.321228" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:05.323707" 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-19T03:11:05.323932" 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-19T03:11:05.323359" elapsed="0.000632"/>
</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-19T03:11:05.329767" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:05.329298" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:05.329240" elapsed="0.000663"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:05.331578" 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-19T03:11:05.331885" 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-19T03:11:05.330877" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:05.333533" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:05.332960" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:05.335335" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:05.334609" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:05.337772" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:05.337849" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:05.337491" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:05.338099" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:05.339377" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:05.649649" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:05.339049" elapsed="0.310743"/>
</kw>
<msg time="2026-04-19T03:11:05.649875" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:05.338656" elapsed="0.311306"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:05.336634" elapsed="0.313635"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:05.651773" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:05.674697" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:05.675260" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:05.675600" 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-19T03:11:05.651377" elapsed="0.024437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:05.678079" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:05.681254" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:05.680234" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:05.682361" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:05.681827" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:05.681705" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:05.683492" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T03:11:05.683014" elapsed="0.000603"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:05.682908" elapsed="0.000768"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:05.683755" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:05.688536" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:11:05.689158" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:05.689514" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:05.685188" elapsed="0.004534"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:05.327891" elapsed="0.362052"/>
</kw>
<msg time="2026-04-19T03:11:05.690318" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:05.326788" elapsed="0.363589"/>
</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-19T03:11:05.325563" elapsed="0.364895"/>
</kw>
<msg time="2026-04-19T03:11:05.690499" 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-19T03:11:05.324374" elapsed="0.366170"/>
</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-19T03:11:05.693569" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:11:05.694120" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:05.694420" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:05.690850" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T03:11:05.694662" level="INFO">${output} = 1</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-19T03:11:05.322398" elapsed="0.372290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:05.695165" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:05.694899" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:05.695254" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:05.695407" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:05.320274" elapsed="0.375160"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:05.695487" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:11:05.695654" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:05.318125" elapsed="0.377555"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:05.696309" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:05.695840" elapsed="0.000541">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:05.317018" elapsed="0.379478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:07.700209" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:07.699362" elapsed="0.000917"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:07.702432" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:07.701717" elapsed="0.000781"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:07.703727" 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-19T03:11:07.703874" 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-19T03:11:07.703486" elapsed="0.000425"/>
</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-19T03:11:07.710061" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:07.709135" elapsed="0.001073"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:07.709002" elapsed="0.001319"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:07.712776" 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-19T03:11:07.713218" 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-19T03:11:07.711764" elapsed="0.001596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:07.715352" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:07.714765" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:07.717424" 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-19T03:11:07.716575" elapsed="0.000950"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:07.720188" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:07.720300" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:07.719780" 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-19T03:11:07.720697" elapsed="0.000539"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:07.722231" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:08.033095" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:07.721853" elapsed="0.311393"/>
</kw>
<msg time="2026-04-19T03:11:08.033331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:07.721467" elapsed="0.311950"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:07.718781" elapsed="0.314932"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:08.035185" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:08.048612" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:08.049159" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:08.049497" 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-19T03:11:08.034780" elapsed="0.014954"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:08.051973" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:08.055373" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:08.054378" elapsed="0.001230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:08.056620" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:08.055961" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:08.055835" elapsed="0.001078"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:08.057824" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T03:11:08.057272" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:08.057162" elapsed="0.001065"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:08.058407" elapsed="0.000086"/>
</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-19T03:11:08.064991" 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-19T03:11:08.065791" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:08.066313" 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-19T03:11:08.060422" elapsed="0.006191"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:07.706798" elapsed="0.360133"/>
</kw>
<msg time="2026-04-19T03:11:08.067386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:07.705795" elapsed="0.361670"/>
</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-19T03:11:07.704930" elapsed="0.362650"/>
</kw>
<msg time="2026-04-19T03:11:08.067639" 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-19T03:11:07.704160" elapsed="0.363543"/>
</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-19T03:11:08.071775" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:11:08.072279" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:08.072575" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:08.068271" elapsed="0.004455"/>
</kw>
<msg time="2026-04-19T03:11:08.072820" level="INFO">${output} = 1</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-19T03:11:07.702854" elapsed="0.369992"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:08.073295" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:08.073026" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:08.073384" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:08.073540" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:07.700745" elapsed="0.372822"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:08.073614" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:11:08.073775" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:07.698503" elapsed="0.375296"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:08.074363" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:08.073955" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:07.697317" elapsed="0.377228">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:10.078093" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:10.077323" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:10.080417" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:10.079616" elapsed="0.000890"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:10.082515" 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-19T03:11:10.082739" 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-19T03:11:10.082171" elapsed="0.000626"/>
</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-19T03:11:10.089711" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:10.088651" elapsed="0.001161"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:10.088572" elapsed="0.001301"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:10.091474" 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-19T03:11:10.091724" 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-19T03:11:10.090942" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:10.093371" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:10.092813" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:10.095210" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:10.094456" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:10.097675" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:10.097768" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:10.097388" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:10.098055" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:10.099405" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:10.410401" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:10.099072" elapsed="0.311521"/>
</kw>
<msg time="2026-04-19T03:11:10.410682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:10.098687" elapsed="0.312092"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:10.096592" elapsed="0.314512"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:10.412610" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:10.435615" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:10.436213" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:10.436651" 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-19T03:11:10.412192" elapsed="0.024714"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:10.439289" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:10.442597" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:10.441600" elapsed="0.001230"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:10.443832" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:10.443325" elapsed="0.000677"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:10.443193" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:10.445131" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T03:11:10.444490" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:10.444380" elapsed="0.001119"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:10.445645" 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-19T03:11:10.450563" elapsed="0.000439"/>
</kw>
<kw name="Open 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-19T03:11:10.451322" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:10.451718" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:10.446979" elapsed="0.004946"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:10.086711" elapsed="0.365452"/>
</kw>
<msg time="2026-04-19T03:11:10.452521" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:10.085560" elapsed="0.367025"/>
</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-19T03:11:10.084766" elapsed="0.367902"/>
</kw>
<msg time="2026-04-19T03:11:10.452709" 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-19T03:11:10.083180" elapsed="0.369576"/>
</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-19T03:11:10.455896" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:11:10.456389" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:10.456722" 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-19T03:11:10.453064" elapsed="0.003806"/>
</kw>
<msg time="2026-04-19T03:11:10.456961" level="INFO">${output} = 1</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-19T03:11:10.081212" elapsed="0.375857"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:10.457510" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:10.457262" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:10.457599" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:11:10.457760" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:10.078627" elapsed="0.379158"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:10.457833" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:11:10.457982" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:10.076435" elapsed="0.381572"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:10.458577" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:10.458181" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:10.075371" elapsed="0.383397">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:12.462585" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:12.461782" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:12.464808" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:12.464174" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:12.466884" 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-19T03:11:12.467146" 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-19T03:11:12.466542" elapsed="0.000666"/>
</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-19T03:11:12.473933" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:12.473251" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:12.472780" elapsed="0.001378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:12.476273" 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-19T03:11:12.476632" 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-19T03:11:12.475590" elapsed="0.001193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:12.479000" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:12.478211" elapsed="0.000967"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:12.481227" 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-19T03:11:12.480486" elapsed="0.000843"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:12.483779" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:12.483861" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:12.483428" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:12.484284" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:12.485574" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:12.805799" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:12.485239" elapsed="0.320836"/>
</kw>
<msg time="2026-04-19T03:11:12.806163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:12.484855" elapsed="0.321422"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:12.482564" elapsed="0.324058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:12.808222" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:12.831180" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:12.831790" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:12.832169" 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-19T03:11:12.807791" elapsed="0.024590"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:12.834629" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:12.837853" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:12.836844" elapsed="0.001382"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:12.839139" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:12.838610" elapsed="0.000727"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:12.838485" elapsed="0.001017"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:12.840323" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:11:12.839834" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:12.839726" elapsed="0.001020"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:12.840923" elapsed="0.000087"/>
</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-19T03:11:12.849183" elapsed="0.000503"/>
</kw>
<kw name="Open 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-19T03:11:12.850002" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:12.850532" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:12.844021" elapsed="0.006725"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:12.470648" elapsed="0.380322"/>
</kw>
<msg time="2026-04-19T03:11:12.851298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:12.469655" elapsed="0.381717"/>
</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-19T03:11:12.468856" elapsed="0.382613"/>
</kw>
<msg time="2026-04-19T03:11:12.851512" 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-19T03:11:12.467638" elapsed="0.383923"/>
</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-19T03:11:12.854573" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:11:12.855079" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:12.855416" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:12.851859" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T03:11:12.855662" level="INFO">${output} = 1</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-19T03:11:12.465421" elapsed="0.390268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:12.856141" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:12.855873" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:12.856231" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:11:12.856383" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:12.463162" elapsed="0.393247"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:12.856455" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:12.856601" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:12.460883" elapsed="0.395743"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:12.857270" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:12.856835" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:12.459755" elapsed="0.397705">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:14.861504" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:14.860664" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:14.864001" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:14.863250" elapsed="0.000886"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:14.866083" 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-19T03:11:14.866334" 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-19T03:11:14.865697" elapsed="0.000725"/>
</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-19T03:11:14.874265" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:14.873435" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:14.872960" elapsed="0.001533"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:14.876232" 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-19T03:11:14.876483" 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-19T03:11:14.875730" elapsed="0.000854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:14.878188" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:14.877616" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:14.880082" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:14.879322" elapsed="0.000864"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:14.882796" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:14.882902" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:14.882487" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:14.883212" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:14.884702" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:15.198167" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:14.884338" elapsed="0.314011"/>
</kw>
<msg time="2026-04-19T03:11:15.198435" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:14.883867" elapsed="0.314657"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:14.881589" elapsed="0.317203"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:15.200304" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:15.223159" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:15.223659" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:15.223991" 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-19T03:11:15.199884" elapsed="0.024363"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:15.226546" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:15.229722" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:15.228706" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:15.231019" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:15.230517" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:15.230387" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:15.232145" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:11:15.231667" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:15.231561" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:15.232673" 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-19T03:11:15.242840" 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-19T03:11:15.243505" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:15.243865" 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-19T03:11:15.235896" elapsed="0.008194"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:14.871026" elapsed="0.373288"/>
</kw>
<msg time="2026-04-19T03:11:15.244621" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:14.869369" elapsed="0.375310"/>
</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-19T03:11:14.868019" elapsed="0.376740"/>
</kw>
<msg time="2026-04-19T03:11:15.244799" 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-19T03:11:14.866805" elapsed="0.378038"/>
</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-19T03:11:15.247955" elapsed="0.000505"/>
</kw>
<kw name="Open 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-19T03:11:15.248624" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:15.248922" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:15.245149" elapsed="0.003936"/>
</kw>
<msg time="2026-04-19T03:11:15.249174" level="INFO">${output} = 1</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-19T03:11:14.864674" elapsed="0.384525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:15.249631" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:15.249387" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:15.249717" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:15.249865" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:14.862125" elapsed="0.387764"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:15.249933" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:11:15.250088" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:14.859738" elapsed="0.390374"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:15.250667" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:15.250278" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:14.858564" elapsed="0.392286">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:17.254839" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:17.253918" elapsed="0.001004"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:17.257429" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:17.256746" elapsed="0.000745"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:17.259329" 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-19T03:11:17.259561" 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-19T03:11:17.258950" elapsed="0.000672"/>
</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-19T03:11:17.267155" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:17.266657" elapsed="0.000580"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:17.266597" elapsed="0.000701"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:17.321321" 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-19T03:11:17.321681" 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-19T03:11:17.268293" elapsed="0.053493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:17.323544" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:17.322877" elapsed="0.000785"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:17.325446" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:17.324668" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:17.327950" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:17.328045" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:17.327658" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:17.328294" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:17.329658" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:17.657621" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:17.329325" elapsed="0.328447"/>
</kw>
<msg time="2026-04-19T03:11:17.657858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:17.328886" elapsed="0.329062"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:17.326825" elapsed="0.331432"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:17.659737" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:17.682537" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:17.683096" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:17.683437" 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-19T03:11:17.659338" elapsed="0.024313"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:17.685991" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:17.689253" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:17.688232" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:17.690495" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:17.689843" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:17.689720" elapsed="0.001111"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:17.691655" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T03:11:17.691199" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:17.691074" elapsed="0.000934"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:17.692348" elapsed="0.000084"/>
</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-19T03:11:17.699645" 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-19T03:11:17.700274" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:17.700639" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:17.695252" elapsed="0.005596"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:17.264258" elapsed="0.436846"/>
</kw>
<msg time="2026-04-19T03:11:17.701419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:17.262500" elapsed="0.438982"/>
</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-19T03:11:17.261197" elapsed="0.440370"/>
</kw>
<msg time="2026-04-19T03:11:17.701608" 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-19T03:11:17.259976" elapsed="0.441679"/>
</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-19T03:11:17.704755" 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-19T03:11:17.705292" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:17.705597" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:17.701948" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T03:11:17.705887" level="INFO">${output} = 1</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-19T03:11:17.257982" elapsed="0.447931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:17.706387" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:17.706132" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:17.706475" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:11:17.706633" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:17.255764" elapsed="0.450894"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:17.706706" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:17.706853" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:17.252929" elapsed="0.453949"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:17.707450" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:17.707050" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:17.251805" elapsed="0.455836">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:19.711324" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:19.710529" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:19.713519" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:19.712874" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:19.715449" 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-19T03:11:19.715832" 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-19T03:11:19.715098" elapsed="0.000795"/>
</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-19T03:11:19.720716" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:19.720226" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:19.720167" elapsed="0.000690"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:19.722412" 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-19T03:11:19.722681" 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-19T03:11:19.721873" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:19.724344" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:19.723743" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:19.726203" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:19.725446" elapsed="0.000854"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:19.728635" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:19.728717" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:19.728343" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:19.728960" elapsed="0.000535"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:19.730434" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:20.052364" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:19.730108" elapsed="0.322401"/>
</kw>
<msg time="2026-04-19T03:11:20.052594" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:19.729720" elapsed="0.322959"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:19.727496" elapsed="0.325466"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:20.054463" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:20.077438" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:20.077942" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:20.078332" 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-19T03:11:20.054074" elapsed="0.024470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:20.080817" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:20.084217" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:20.082969" elapsed="0.001489"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:20.085366" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:20.084810" elapsed="0.000661"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:20.084686" elapsed="0.000863"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:20.086057" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:11:20.085754" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:20.085687" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:20.086391" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:20.093337" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T03:11:20.094231" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:20.094727" 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-19T03:11:20.088418" elapsed="0.006602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:19.718558" elapsed="0.376815"/>
</kw>
<msg time="2026-04-19T03:11:20.095800" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:19.717842" elapsed="0.378037"/>
</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-19T03:11:19.717300" elapsed="0.378869"/>
</kw>
<msg time="2026-04-19T03:11:20.096230" 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-19T03:11:19.716351" elapsed="0.379944"/>
</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-19T03:11:20.099443" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T03:11:20.099969" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:20.100324" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:20.096696" elapsed="0.003778"/>
</kw>
<msg time="2026-04-19T03:11:20.100565" level="INFO">${output} = 1</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-19T03:11:19.714114" elapsed="0.386476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:20.101012" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:20.100767" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:20.101117" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:20.101269" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:19.711853" elapsed="0.389441"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:20.101340" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:11:20.101481" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:19.709628" elapsed="0.391877"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:20.102063" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:20.101660" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:19.708536" elapsed="0.393708">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:22.105787" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:22.105017" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:22.107960" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:22.107353" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:22.109157" 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-19T03:11:22.109301" 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-19T03:11:22.108920" elapsed="0.000419"/>
</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-19T03:11:22.114912" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:22.114273" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:22.114195" elapsed="0.001038"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:22.117220" 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-19T03:11:22.117556" 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-19T03:11:22.116593" elapsed="0.001103"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:22.119890" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:22.119132" elapsed="0.000924"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:22.121717" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:22.121010" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:22.124128" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:22.124207" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:22.123831" 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-19T03:11:22.124445" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:22.125712" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:22.452555" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:22.125386" elapsed="0.327326"/>
</kw>
<msg time="2026-04-19T03:11:22.452799" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:22.125002" elapsed="0.327888"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:22.123073" elapsed="0.330163"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:22.454727" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:22.477407" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:22.477892" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:22.478260" 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-19T03:11:22.454330" elapsed="0.024139"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:22.480764" elapsed="0.000931"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:22.483966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:22.482973" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:22.485158" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:22.484625" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:22.484501" elapsed="0.000949"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:22.486250" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T03:11:22.485766" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:22.485659" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:22.486800" elapsed="0.000089"/>
</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-19T03:11:22.494191" elapsed="0.000534"/>
</kw>
<kw name="Open 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-19T03:11:22.494953" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:22.495395" 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-19T03:11:22.489885" elapsed="0.005724"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:22.112002" elapsed="0.383832"/>
</kw>
<msg time="2026-04-19T03:11:22.496226" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:22.111074" elapsed="0.385215"/>
</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-19T03:11:22.110301" elapsed="0.386071"/>
</kw>
<msg time="2026-04-19T03:11:22.496415" 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-19T03:11:22.109558" elapsed="0.386905"/>
</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-19T03:11:22.499525" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:11:22.500000" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:22.500312" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:22.496758" elapsed="0.003702"/>
</kw>
<msg time="2026-04-19T03:11:22.500550" level="INFO">${output} = 1</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-19T03:11:22.108347" elapsed="0.392227"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:22.501001" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:22.500755" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:22.501109" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:11:22.501261" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:22.106347" elapsed="0.394939"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:22.501333" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:11:22.501475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:22.104154" elapsed="0.397346"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:22.502061" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:22.501655" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:22.103101" elapsed="0.399148">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:24.505777" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:24.505016" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:24.507926" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:24.507319" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:24.510003" 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-19T03:11:24.510271" 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-19T03:11:24.509626" elapsed="0.000703"/>
</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-19T03:11:24.518841" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:24.518203" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:24.518122" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:24.521236" 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-19T03:11:24.521577" 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-19T03:11:24.520581" elapsed="0.001135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:24.523458" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:24.522900" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:24.525414" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:24.524662" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:24.527812" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:24.527889" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:24.527527" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:24.528246" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:24.529505" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:24.846102" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:24.529181" elapsed="0.317084"/>
</kw>
<msg time="2026-04-19T03:11:24.846357" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:24.528799" elapsed="0.317655"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:24.526749" elapsed="0.319984"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:24.848270" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:24.871259" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:24.871753" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:24.872140" 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-19T03:11:24.847848" elapsed="0.024505"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:24.874573" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:24.877722" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:24.876685" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:24.878830" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:24.878338" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:24.878215" elapsed="0.000940"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:24.879915" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T03:11:24.879476" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:24.879370" elapsed="0.000923"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:24.880475" elapsed="0.000081"/>
</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-19T03:11:24.886152" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:11:24.886697" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:24.887069" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:24.882752" elapsed="0.004533"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:24.514594" elapsed="0.372913"/>
</kw>
<msg time="2026-04-19T03:11:24.887815" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:24.513081" elapsed="0.374791"/>
</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-19T03:11:24.511839" elapsed="0.376120"/>
</kw>
<msg time="2026-04-19T03:11:24.888001" 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-19T03:11:24.510678" elapsed="0.377383"/>
</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-19T03:11:24.891204" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:11:24.891679" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:24.891980" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:24.888475" elapsed="0.003669"/>
</kw>
<msg time="2026-04-19T03:11:24.892234" level="INFO">${output} = 1</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-19T03:11:24.508508" elapsed="0.383751"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:24.892677" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:24.892434" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:24.892763" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:11:24.892912" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:24.506377" elapsed="0.386559"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:24.892982" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:11:24.893221" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:24.504201" elapsed="0.389045"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:24.893820" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:24.893403" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:24.503084" elapsed="0.390918">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:26.897821" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:26.897086" elapsed="0.000805"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:26.899923" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:26.899324" elapsed="0.000659"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:26.901799" 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-19T03:11:26.902061" 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-19T03:11:26.901478" elapsed="0.000646"/>
</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-19T03:11:26.907929" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:26.907454" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:26.907179" elapsed="0.000907"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:26.909548" 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-19T03:11:26.909825" 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-19T03:11:26.909107" elapsed="0.000819"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:26.911483" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:26.910918" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:26.913300" 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-19T03:11:26.912570" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:26.915764" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:26.915863" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:26.915484" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:26.916114" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:26.917478" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:27.233147" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:26.917153" elapsed="0.316143"/>
</kw>
<msg time="2026-04-19T03:11:27.233384" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:26.916774" elapsed="0.316701"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:26.914631" elapsed="0.319129"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:27.235238" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:27.258001" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:27.258538" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:27.258867" 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-19T03:11:27.234834" elapsed="0.024288"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:27.261360" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:27.264510" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:27.263516" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:27.265639" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:27.265133" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:27.264973" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:27.266741" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T03:11:27.266292" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:27.266183" elapsed="0.001002"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:27.267363" elapsed="0.000082"/>
</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-19T03:11:27.273209" elapsed="0.000533"/>
</kw>
<kw name="Open 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-19T03:11:27.273952" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:27.274328" elapsed="0.000268"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:27.269808" elapsed="0.004893"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:26.905842" elapsed="0.369080"/>
</kw>
<msg time="2026-04-19T03:11:27.275319" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:26.905008" elapsed="0.370369"/>
</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-19T03:11:26.903643" elapsed="0.371814"/>
</kw>
<msg time="2026-04-19T03:11:27.275498" 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-19T03:11:26.902474" elapsed="0.373070"/>
</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-19T03:11:27.278593" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:11:27.279153" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:27.279456" 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-19T03:11:27.275835" elapsed="0.003767"/>
</kw>
<msg time="2026-04-19T03:11:27.279755" level="INFO">${output} = 1</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-19T03:11:26.900501" elapsed="0.379280"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:27.280220" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:27.279957" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:27.280307" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:27.280456" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:26.898383" elapsed="0.382112"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:27.280542" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:27.280684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:26.896199" elapsed="0.384509"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:27.281270" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:27.280864" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:26.894828" elapsed="0.386627">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:29.285370" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:29.284469" elapsed="0.000986"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:29.287679" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:29.286904" elapsed="0.000851"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:29.289256" 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-19T03:11:29.289403" 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-19T03:11:29.288995" elapsed="0.000445"/>
</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-19T03:11:29.295209" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:29.294504" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:29.294130" elapsed="0.001298"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:29.297480" 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-19T03:11:29.297824" 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-19T03:11:29.296824" elapsed="0.001143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:29.300177" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:29.299355" elapsed="0.000958"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:29.302076" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:29.301353" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:29.304492" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:29.304573" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:29.304197" 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-19T03:11:29.304817" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:29.306261" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:29.675971" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:29.305914" elapsed="0.370327"/>
</kw>
<msg time="2026-04-19T03:11:29.676331" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:29.305535" elapsed="0.370887"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:29.303386" elapsed="0.373318"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:29.678229" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:29.700986" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:29.701558" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:29.701905" 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-19T03:11:29.677812" elapsed="0.024361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:29.704868" elapsed="0.000988"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:29.708546" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:29.707479" elapsed="0.001308"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:29.709752" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:29.709225" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:29.709086" elapsed="0.001011"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:29.710906" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:11:29.710438" elapsed="0.000858"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:29.710325" elapsed="0.001136"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:29.711645" elapsed="0.000088"/>
</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-19T03:11:29.719103" 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-19T03:11:29.719674" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:29.720046" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:29.714844" elapsed="0.005412"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:29.292198" elapsed="0.428282"/>
</kw>
<msg time="2026-04-19T03:11:29.720789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:29.291162" elapsed="0.429685"/>
</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-19T03:11:29.290410" elapsed="0.430518"/>
</kw>
<msg time="2026-04-19T03:11:29.720970" 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-19T03:11:29.289667" elapsed="0.431349"/>
</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-19T03:11:29.724089" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:11:29.724570" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:29.724867" 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-19T03:11:29.721328" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T03:11:29.725123" level="INFO">${output} = 1</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-19T03:11:29.288325" elapsed="0.436824"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:29.725581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:29.725333" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:29.725670" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:11:29.725822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:29.285925" elapsed="0.439923"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:29.725895" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:29.726055" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:29.283552" elapsed="0.442529"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:29.726703" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:29.726306" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:29.282382" elapsed="0.444508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:31.730421" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:31.729554" elapsed="0.000940"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:31.732553" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:31.731896" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:31.734743" 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-19T03:11:31.734992" 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-19T03:11:31.734290" elapsed="0.000798"/>
</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-19T03:11:31.746141" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:31.745402" elapsed="0.000865"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:31.742807" elapsed="0.003586"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:31.748264" 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-19T03:11:31.748515" 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-19T03:11:31.747763" elapsed="0.000850"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:31.750261" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:31.749640" elapsed="0.000779"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:31.752155" 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-19T03:11:31.751433" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:31.755143" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:31.755224" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:31.754780" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:31.755467" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:31.756799" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:32.069946" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:31.756452" elapsed="0.313696"/>
</kw>
<msg time="2026-04-19T03:11:32.070276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:31.756082" elapsed="0.314293"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:31.753480" elapsed="0.317196"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:32.072205" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:32.094338" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:32.094673" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:32.094829" 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-19T03:11:32.071782" elapsed="0.023146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:32.096017" elapsed="0.000539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:32.097620" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:32.097153" elapsed="0.000572"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:32.098159" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:32.097890" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:32.097830" elapsed="0.000538"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:32.098738" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:11:32.098531" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:32.098481" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:32.098989" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:32.103905" elapsed="0.000614"/>
</kw>
<kw name="Open 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-19T03:11:32.104752" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:32.105157" 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-19T03:11:32.100388" elapsed="0.004992"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:31.739775" elapsed="0.365840"/>
</kw>
<msg time="2026-04-19T03:11:32.105945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:31.738097" elapsed="0.367920"/>
</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-19T03:11:31.736748" elapsed="0.369373"/>
</kw>
<msg time="2026-04-19T03:11:32.106175" 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-19T03:11:31.735477" elapsed="0.370759"/>
</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-19T03:11:32.109511" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T03:11:32.110443" elapsed="0.000255"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:32.110915" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:32.106561" elapsed="0.004534"/>
</kw>
<msg time="2026-04-19T03:11:32.111196" level="INFO">${output} = 1</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-19T03:11:31.733173" elapsed="0.378048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:32.111705" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:32.111441" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:32.111799" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:11:32.111968" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:31.730954" elapsed="0.381041"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:32.112060" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:11:32.112210" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:31.728711" elapsed="0.383524"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:32.112831" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:32.112405" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:31.727662" elapsed="0.385362">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:34.116627" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:34.115852" elapsed="0.000846"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:34.119116" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:34.118444" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:34.121089" 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-19T03:11:34.121402" 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-19T03:11:34.120708" elapsed="0.000762"/>
</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-19T03:11:34.127657" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:34.126932" elapsed="0.000841"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:34.126850" elapsed="0.001009"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:34.130266" 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-19T03:11:34.130622" 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-19T03:11:34.129302" elapsed="0.001470"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:34.133122" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:34.132277" elapsed="0.001046"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:34.135105" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:34.134376" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:34.137665" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:34.137757" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:34.137345" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:34.138003" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:34.139331" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:34.469602" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:34.138970" elapsed="0.330773"/>
</kw>
<msg time="2026-04-19T03:11:34.469824" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:34.138599" elapsed="0.331314"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:34.136535" elapsed="0.333682"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:34.473563" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:34.496481" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:34.496979" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:34.497403" 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-19T03:11:34.472844" elapsed="0.024808"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:34.499943" elapsed="0.001126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:34.503501" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:34.502448" elapsed="0.001462"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:34.505149" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:34.504333" elapsed="0.001008"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:34.504204" elapsed="0.001250"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:34.505991" elapsed="0.000225"/>
</return>
<status status="PASS" start="2026-04-19T03:11:34.505670" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:34.505599" elapsed="0.000812"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:34.506531" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:34.513400" elapsed="0.000500"/>
</kw>
<kw name="Open 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-19T03:11:34.514288" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:34.514796" elapsed="0.000160"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:34.508513" elapsed="0.006625"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:34.124914" elapsed="0.390545"/>
</kw>
<msg time="2026-04-19T03:11:34.515905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:34.123826" elapsed="0.392166"/>
</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-19T03:11:34.122979" elapsed="0.393158"/>
</kw>
<msg time="2026-04-19T03:11:34.516195" 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-19T03:11:34.121835" elapsed="0.394426"/>
</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-19T03:11:34.519682" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:11:34.520211" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:34.520510" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:34.516671" elapsed="0.003990"/>
</kw>
<msg time="2026-04-19T03:11:34.520754" level="INFO">${output} = 1</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-19T03:11:34.119709" elapsed="0.401070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:34.521261" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:34.520973" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:34.521351" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:11:34.521510" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:34.117362" elapsed="0.404173"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:34.521583" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:34.521730" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:34.114970" elapsed="0.406785"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:34.522383" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:34.521922" elapsed="0.000542">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:34.113866" elapsed="0.408712">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:36.526390" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:36.525603" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:36.528619" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:36.527949" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:36.529830" 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-19T03:11:36.530112" 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-19T03:11:36.529594" elapsed="0.000559"/>
</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-19T03:11:36.535604" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:36.534929" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:36.534850" elapsed="0.000951"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:36.538219" 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-19T03:11:36.538579" 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-19T03:11:36.537253" elapsed="0.001474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:36.540844" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:36.540201" elapsed="0.000755"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:36.542750" 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-19T03:11:36.541944" elapsed="0.000905"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:36.545138" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:36.545219" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:36.544825" 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-19T03:11:36.545457" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:36.546829" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:36.839735" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:36.546507" elapsed="0.293345"/>
</kw>
<msg time="2026-04-19T03:11:36.839946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:36.546011" elapsed="0.294047"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:36.544060" elapsed="0.296265"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:36.841876" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:36.865135" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:36.865654" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:36.865989" 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-19T03:11:36.841489" elapsed="0.024774"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:36.868159" elapsed="0.000587"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:36.870269" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:36.869586" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:36.870995" elapsed="0.000090"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:36.870661" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:36.870578" elapsed="0.000697"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:36.871775" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T03:11:36.871484" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:36.871415" elapsed="0.000658"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:36.872205" elapsed="0.000056"/>
</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-19T03:11:36.877330" 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-19T03:11:36.878095" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:36.878492" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:36.873710" elapsed="0.005025"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:36.532931" elapsed="0.346035"/>
</kw>
<msg time="2026-04-19T03:11:36.879404" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:36.531912" elapsed="0.347556"/>
</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-19T03:11:36.531142" elapsed="0.348417"/>
</kw>
<msg time="2026-04-19T03:11:36.879621" 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-19T03:11:36.530383" elapsed="0.349291"/>
</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-19T03:11:36.882752" elapsed="0.000437"/>
</kw>
<kw name="Open 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-19T03:11:36.883373" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:36.883704" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:36.879994" elapsed="0.003871"/>
</kw>
<msg time="2026-04-19T03:11:36.883985" level="INFO">${output} = 1</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-19T03:11:36.528974" elapsed="0.355037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:36.884489" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:36.884215" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:36.884581" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:36.884762" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:36.526977" elapsed="0.357812"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:36.884838" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:11:36.884987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:36.524706" elapsed="0.360305"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:36.885647" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:36.885188" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:36.523500" elapsed="0.362357">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:38.889553" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:38.888768" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:38.891671" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:38.891111" elapsed="0.000598"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:38.892859" 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-19T03:11:38.892999" 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-19T03:11:38.892631" elapsed="0.000425"/>
</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-19T03:11:38.898447" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:38.897779" elapsed="0.000918"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:38.897699" elapsed="0.001092"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:38.901195" 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-19T03:11:38.901551" 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-19T03:11:38.900216" elapsed="0.001479"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:38.903880" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:38.903187" elapsed="0.000805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:38.905743" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:38.905000" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:38.908209" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:38.908288" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:38.907906" 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-19T03:11:38.908538" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:38.909836" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:39.233512" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:38.909511" elapsed="0.324146"/>
</kw>
<msg time="2026-04-19T03:11:39.233748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:38.909143" elapsed="0.324705"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:38.907127" elapsed="0.327042"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:39.235700" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:39.258549" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:39.259317" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:39.259665" 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-19T03:11:39.235293" elapsed="0.024589"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:39.262514" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:39.265990" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:39.264955" elapsed="0.001303"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:39.267249" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:39.266627" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:39.266499" elapsed="0.001046"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:39.268173" elapsed="0.000089"/>
</return>
<status status="PASS" start="2026-04-19T03:11:39.267767" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:39.267696" elapsed="0.000713"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:39.268519" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:39.275350" elapsed="0.000484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:39.276217" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:39.276729" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:39.270490" elapsed="0.006532"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:38.895795" elapsed="0.381570"/>
</kw>
<msg time="2026-04-19T03:11:39.277930" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:38.894812" elapsed="0.383210"/>
</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-19T03:11:38.894006" elapsed="0.384157"/>
</kw>
<msg time="2026-04-19T03:11:39.278221" 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-19T03:11:38.893279" elapsed="0.385008"/>
</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-19T03:11:39.281735" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:11:39.282234" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:39.282532" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:39.278698" elapsed="0.003983"/>
</kw>
<msg time="2026-04-19T03:11:39.282783" level="INFO">${output} = 1</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-19T03:11:38.892026" elapsed="0.390784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:39.283257" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:39.282991" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:39.283345" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:39.283499" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:38.890116" elapsed="0.393408"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:39.283572" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:11:39.283727" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:38.887897" elapsed="0.395857"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:39.284383" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:39.283912" elapsed="0.000559">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:38.886721" elapsed="0.397871">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:41.288310" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:41.287528" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:41.290492" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:41.289846" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:41.291723" 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-19T03:11:41.291868" 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-19T03:11:41.291493" elapsed="0.000413"/>
</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-19T03:11:41.298061" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:41.297303" elapsed="0.000878"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:41.296882" elapsed="0.001383"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:41.300301" 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-19T03:11:41.300641" 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-19T03:11:41.299645" elapsed="0.001200"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:41.302969" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:41.302306" elapsed="0.000791"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:41.305102" 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-19T03:11:41.304231" elapsed="0.001000"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:41.307978" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:41.308209" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:41.307672" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:41.308449" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:41.309719" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:41.626359" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:41.309394" elapsed="0.317122"/>
</kw>
<msg time="2026-04-19T03:11:41.626604" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:41.309017" elapsed="0.317682"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:41.306844" elapsed="0.320173"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:41.628628" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:41.651723" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:41.652283" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:41.652620" 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-19T03:11:41.628205" elapsed="0.024631"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:41.655213" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:41.658579" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:41.657423" elapsed="0.001397"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:41.659841" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:41.659215" elapsed="0.000812"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:41.659084" elapsed="0.001179"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:41.661304" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T03:11:41.660646" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:41.660527" elapsed="0.001183"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:41.661896" elapsed="0.000087"/>
</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-19T03:11:41.669821" elapsed="0.000381"/>
</kw>
<kw name="Open 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-19T03:11:41.670424" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:41.670797" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:41.665413" elapsed="0.005599"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:41.294896" elapsed="0.376388"/>
</kw>
<msg time="2026-04-19T03:11:41.671605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:41.293641" elapsed="0.378027"/>
</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-19T03:11:41.292868" elapsed="0.378887"/>
</kw>
<msg time="2026-04-19T03:11:41.671798" 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-19T03:11:41.292146" elapsed="0.379700"/>
</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-19T03:11:41.675108" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T03:11:41.675594" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:41.675891" 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-19T03:11:41.672275" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T03:11:41.676149" level="INFO">${output} = 1</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-19T03:11:41.290899" elapsed="0.385276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:41.676609" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:41.676359" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:41.676698" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:41.676851" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:41.288839" elapsed="0.388037"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:41.676923" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:41.677095" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:41.286683" elapsed="0.390438"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:41.677717" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:41.677279" elapsed="0.000538">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:41.285588" elapsed="0.392341">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:43.681428" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:43.680608" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:43.682845" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:43.682469" elapsed="0.000414"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:43.683997" 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-19T03:11:43.684160" 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-19T03:11:43.683781" elapsed="0.000417"/>
</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-19T03:11:43.689775" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:43.689129" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:43.688740" elapsed="0.001229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:43.691950" 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-19T03:11:43.692316" 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-19T03:11:43.691346" elapsed="0.001109"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:43.694359" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:43.693801" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:43.696277" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:43.695499" elapsed="0.000876"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:43.698632" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:43.698709" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:43.698350" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:43.698944" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:43.700426" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:44.020761" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:43.699948" elapsed="0.320954"/>
</kw>
<msg time="2026-04-19T03:11:44.020985" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:43.699587" elapsed="0.321507"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:43.697573" elapsed="0.323801"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:44.022856" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:44.045997" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:44.046534" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:44.046897" 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-19T03:11:44.022471" elapsed="0.024690"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:44.049440" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:44.052678" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:44.051600" elapsed="0.001239"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:44.053424" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:44.053095" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:44.052993" elapsed="0.000614"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:44.054122" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:11:44.053822" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:44.053753" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:44.054451" elapsed="0.000051"/>
</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-19T03:11:44.061370" elapsed="0.000440"/>
</kw>
<kw name="Open 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-19T03:11:44.062020" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:44.062396" 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-19T03:11:44.056503" elapsed="0.006097"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:43.686877" elapsed="0.375943"/>
</kw>
<msg time="2026-04-19T03:11:44.063143" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:43.685917" elapsed="0.377283"/>
</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-19T03:11:43.685169" elapsed="0.378120"/>
</kw>
<msg time="2026-04-19T03:11:44.063330" 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-19T03:11:43.684419" elapsed="0.378957"/>
</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-19T03:11:44.066401" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:11:44.066874" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:44.067207" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:44.063664" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T03:11:44.067513" level="INFO">${output} = 1</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-19T03:11:43.683205" elapsed="0.384334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:44.067960" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:44.067716" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:44.068063" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:44.068216" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:43.681872" elapsed="0.386368"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:44.068287" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:11:44.068431" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:43.679765" elapsed="0.388707"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:44.069043" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:44.068634" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:43.678702" elapsed="0.390534">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:46.072833" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:46.072096" elapsed="0.000811"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:46.074928" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:46.074330" elapsed="0.000657"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:46.076461" 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-19T03:11:46.076603" 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-19T03:11:46.076241" elapsed="0.000399"/>
</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-19T03:11:46.084257" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:46.083565" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:46.081180" elapsed="0.003271"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:46.086438" 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-19T03:11:46.086775" 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-19T03:11:46.085800" elapsed="0.001112"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:46.088764" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:46.088217" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:46.090556" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:46.089842" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:46.092999" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:46.093093" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:46.092712" 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-19T03:11:46.093325" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:46.094568" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:46.409972" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:46.094246" elapsed="0.315942"/>
</kw>
<msg time="2026-04-19T03:11:46.410265" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:46.093875" elapsed="0.316474"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:46.091942" elapsed="0.318662"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:46.412071" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:46.434636" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:46.434886" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:46.435062" 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-19T03:11:46.411674" elapsed="0.023487"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:46.436203" elapsed="0.000433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:46.437658" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:46.437214" elapsed="0.000551"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:46.438185" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:46.437928" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:46.437869" elapsed="0.000452"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:46.438668" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T03:11:46.438465" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:46.438417" elapsed="0.000416"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:46.438911" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:46.443621" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T03:11:46.444482" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:46.444977" elapsed="0.000162"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:46.440275" elapsed="0.005012"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:46.079308" elapsed="0.366284"/>
</kw>
<msg time="2026-04-19T03:11:46.446011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:46.078356" elapsed="0.367759"/>
</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-19T03:11:46.077595" elapsed="0.368635"/>
</kw>
<msg time="2026-04-19T03:11:46.446286" 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-19T03:11:46.076862" elapsed="0.369487"/>
</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-19T03:11:46.450722" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T03:11:46.451424" elapsed="0.000208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:46.451841" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:46.446752" elapsed="0.005349"/>
</kw>
<msg time="2026-04-19T03:11:46.452229" level="INFO">${output} = 1</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-19T03:11:46.075539" elapsed="0.376725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:46.452850" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:46.452507" elapsed="0.000406"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:46.452972" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T03:11:46.453206" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:46.073394" elapsed="0.379847"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:46.453305" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:11:46.453504" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:46.071221" elapsed="0.382317"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:46.454437" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:46.453870" elapsed="0.000664">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:46.070133" elapsed="0.384548">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:48.458236" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:48.457465" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:48.460373" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:48.459736" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:48.462216" 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-19T03:11:48.462498" 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-19T03:11:48.461853" elapsed="0.000706"/>
</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-19T03:11:48.466829" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:48.466330" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:48.466273" elapsed="0.000699"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:48.468639" 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-19T03:11:48.468885" 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-19T03:11:48.467951" elapsed="0.001034"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:48.470527" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:48.469950" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:48.472333" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:48.471622" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:48.474787" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:48.474864" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:48.474503" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:48.475113" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:48.476383" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:48.793010" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:48.476051" elapsed="0.317122"/>
</kw>
<msg time="2026-04-19T03:11:48.793257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:48.475671" elapsed="0.317675"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:48.473621" elapsed="0.320008"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:48.795186" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:48.817803" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:48.818412" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:48.818772" 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-19T03:11:48.794782" elapsed="0.024212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:48.821224" elapsed="0.000880"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:48.824339" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:48.823362" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:48.825440" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:48.824916" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:48.824795" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:48.826612" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:11:48.826081" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:48.825945" elapsed="0.001012"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:48.827123" 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-19T03:11:48.831837" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:11:48.832403" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:48.832757" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:48.828436" elapsed="0.004533"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:48.464905" elapsed="0.368305"/>
</kw>
<msg time="2026-04-19T03:11:48.833513" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:48.464188" elapsed="0.369384"/>
</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-19T03:11:48.463623" elapsed="0.370033"/>
</kw>
<msg time="2026-04-19T03:11:48.833696" 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-19T03:11:48.462915" elapsed="0.370828"/>
</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-19T03:11:48.836869" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:11:48.837368" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:48.837665" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:48.834050" elapsed="0.003765"/>
</kw>
<msg time="2026-04-19T03:11:48.837907" level="INFO">${output} = 1</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-19T03:11:48.460914" elapsed="0.377019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:48.838402" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:48.838127" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:48.838490" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:48.838644" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:48.458794" elapsed="0.379875"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:48.838716" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:48.838860" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:48.456595" elapsed="0.382290"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:48.839535" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:48.839139" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:48.455549" elapsed="0.384170">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:50.843234" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:50.842463" elapsed="0.000841"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:50.845687" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:50.844997" elapsed="0.000753"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:50.847548" 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-19T03:11:50.847776" 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-19T03:11:50.847219" elapsed="0.000618"/>
</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-19T03:11:50.852842" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:50.852370" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:50.852312" elapsed="0.000667"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:50.854653" 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-19T03:11:50.854898" 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-19T03:11:50.853972" elapsed="0.001026"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:50.856516" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:50.855957" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:50.858322" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:50.857612" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:50.860746" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:50.860825" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:50.860463" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:50.861076" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:50.862373" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:51.179866" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:50.862044" elapsed="0.317935"/>
</kw>
<msg time="2026-04-19T03:11:51.180069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:50.861668" elapsed="0.318485"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:50.859612" elapsed="0.320796"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:51.181837" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:51.204909" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:51.205675" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:51.206185" 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-19T03:11:51.181476" elapsed="0.024936"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:51.207735" elapsed="0.000448"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:51.209234" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:51.208754" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:51.209812" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:51.209503" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:51.209444" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:51.210328" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T03:11:51.210123" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:51.210074" elapsed="0.000420"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:51.210574" 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-19T03:11:51.215366" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:11:51.215909" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:51.216284" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:51.211898" elapsed="0.004596"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:50.850979" elapsed="0.365742"/>
</kw>
<msg time="2026-04-19T03:11:51.217067" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:50.850293" elapsed="0.366837"/>
</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-19T03:11:50.849462" elapsed="0.367756"/>
</kw>
<msg time="2026-04-19T03:11:51.217259" 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-19T03:11:50.848233" elapsed="0.369073"/>
</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-19T03:11:51.220375" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T03:11:51.220845" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:51.221168" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:51.217597" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T03:11:51.221558" level="INFO">${output} = 1</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-19T03:11:50.846272" elapsed="0.375374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:51.222817" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:51.222227" elapsed="0.000692"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:51.223016" elapsed="0.000096"/>
</return>
<msg time="2026-04-19T03:11:51.223388" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:50.844068" elapsed="0.379376"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:51.223550" elapsed="0.000056"/>
</return>
<msg time="2026-04-19T03:11:51.223867" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:50.841616" elapsed="0.382306"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:51.225218" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:51.224304" elapsed="0.001062">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:50.840521" elapsed="0.385081">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:53.229301" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:53.228536" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:53.231402" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:53.230763" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:53.233275" 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-19T03:11:53.233655" 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-19T03:11:53.232906" elapsed="0.000811"/>
</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-19T03:11:53.241603" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:53.241134" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:53.241076" elapsed="0.000665"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:53.243426" 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-19T03:11:53.243672" 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-19T03:11:53.242732" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:53.245330" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:53.244772" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:53.247161" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:53.246408" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:53.249505" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:53.249585" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:53.249215" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:53.249822" elapsed="0.000355"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:53.251241" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:53.578354" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:53.250759" elapsed="0.327727"/>
</kw>
<msg time="2026-04-19T03:11:53.578569" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:53.250398" elapsed="0.328257"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:53.248448" elapsed="0.330482"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:53.580445" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:53.603131" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:53.603619" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:53.603973" 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-19T03:11:53.580051" elapsed="0.024175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:53.606501" elapsed="0.000988"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:53.609755" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:53.608798" elapsed="0.001182"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:53.610840" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:53.610357" elapsed="0.000644"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:53.610235" elapsed="0.000926"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:53.611967" elapsed="0.000206"/>
</return>
<status status="PASS" start="2026-04-19T03:11:53.611482" elapsed="0.000801"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:53.611375" elapsed="0.001035"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:53.612587" 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-19T03:11:53.617598" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T03:11:53.618235" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:53.618601" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:53.614217" elapsed="0.004594"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:53.238007" elapsed="0.381049"/>
</kw>
<msg time="2026-04-19T03:11:53.619377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:53.236528" elapsed="0.382910"/>
</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-19T03:11:53.235287" elapsed="0.384234"/>
</kw>
<msg time="2026-04-19T03:11:53.619564" 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-19T03:11:53.234104" elapsed="0.385506"/>
</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-19T03:11:53.622657" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:11:53.623151" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:53.623448" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:53.619914" elapsed="0.003682"/>
</kw>
<msg time="2026-04-19T03:11:53.623688" level="INFO">${output} = 1</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-19T03:11:53.231940" elapsed="0.391773"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:53.624282" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:53.623927" elapsed="0.000400"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:53.624370" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:53.624524" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:53.229823" elapsed="0.394726"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:53.624596" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:11:53.624739" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:53.227671" elapsed="0.397093"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:53.625333" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:53.624922" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:53.226489" elapsed="0.399032">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:55.629190" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:55.628421" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:55.631331" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:55.630678" elapsed="0.000714"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:55.633179" 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-19T03:11:55.633406" 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-19T03:11:55.632809" elapsed="0.000655"/>
</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-19T03:11:55.639009" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:55.638519" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:55.638221" elapsed="0.001013"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:55.640686" 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-19T03:11:55.640931" 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-19T03:11:55.640242" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:55.642585" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:55.642022" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:55.644464" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:55.643735" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:55.647143" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:55.647222" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:55.646818" 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-19T03:11:55.647457" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:55.648704" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:55.967211" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:55.648383" elapsed="0.318965"/>
</kw>
<msg time="2026-04-19T03:11:55.967441" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:55.648009" elapsed="0.319524"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:55.645975" elapsed="0.321841"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:55.969328" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:55.992063" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:55.992580" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:55.992920" 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-19T03:11:55.968922" elapsed="0.024261"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:55.995448" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:55.998566" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:55.997596" elapsed="0.001220"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:55.999705" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:55.999198" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:55.999070" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:56.000825" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:11:56.000374" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:56.000264" elapsed="0.001065"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:56.001506" 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-19T03:11:56.007188" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:11:56.007727" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:56.008103" 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-19T03:11:56.003762" elapsed="0.004556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:55.636876" elapsed="0.371664"/>
</kw>
<msg time="2026-04-19T03:11:56.008972" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:55.636186" elapsed="0.372904"/>
</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-19T03:11:55.635018" elapsed="0.374159"/>
</kw>
<msg time="2026-04-19T03:11:56.009219" 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-19T03:11:55.633813" elapsed="0.375453"/>
</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-19T03:11:56.012247" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T03:11:56.012739" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:56.013140" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:56.009561" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T03:11:56.013394" level="INFO">${output} = 1</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-19T03:11:55.631872" elapsed="0.381548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:56.013853" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:56.013603" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:56.013941" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:11:56.014108" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:55.629710" elapsed="0.384425"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:56.014182" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:11:56.014328" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:55.627537" elapsed="0.386817"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:56.014941" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:56.014517" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:55.626429" elapsed="0.388720">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:11:58.018680" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:11:58.017899" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:11:58.020822" level="INFO">${member_ip} = 10.30.171.206</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-19T03:11:58.020209" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:58.022706" 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-19T03:11:58.022937" 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-19T03:11:58.022379" elapsed="0.000618"/>
</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-19T03:11:58.031023" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:11:58.030552" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:58.030253" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:58.032602" 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-19T03:11:58.032842" 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-19T03:11:58.032159" elapsed="0.000784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:58.034477" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:58.033919" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:11:58.036386" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:11:58.035632" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:11:58.038748" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:11:58.038828" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:11:58.038464" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:58.039080" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:11:58.040535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:11:58.360425" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:11:58.040002" elapsed="0.320571"/>
</kw>
<msg time="2026-04-19T03:11:58.360659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:58.039641" elapsed="0.321106"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:11:58.037674" elapsed="0.323378"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:11:58.362550" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:11:58.385350" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:11:58.385881" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:11:58.386269" 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-19T03:11:58.362159" elapsed="0.024326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:58.388719" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:58.391909" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:58.390907" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:58.393023" elapsed="0.000097"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:11:58.392520" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:58.392397" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:11:58.394204" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T03:11:58.393718" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T03:11:58.393561" elapsed="0.000811"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:11:58.394451" 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-19T03:11:58.399618" 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-19T03:11:58.400212" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:58.400578" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:11:58.395838" elapsed="0.004952"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:11:58.027331" elapsed="0.373682"/>
</kw>
<msg time="2026-04-19T03:11:58.401345" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:11:58.025778" elapsed="0.375630"/>
</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-19T03:11:58.024559" elapsed="0.376930"/>
</kw>
<msg time="2026-04-19T03:11:58.401530" 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-19T03:11:58.023385" elapsed="0.378191"/>
</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-19T03:11:58.404711" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:11:58.405204" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:11:58.405499" 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-19T03:11:58.401961" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T03:11:58.405765" level="INFO">${output} = 1</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-19T03:11:58.021408" elapsed="0.384383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:11:58.406252" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:11:58.405985" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:11:58.406340" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:11:58.406492" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:11:58.019242" elapsed="0.387275"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:11:58.406563" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:11:58.406707" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:11:58.017004" elapsed="0.389728"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:11:58.407372" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:11:58.406886" elapsed="0.000561">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:11:58.015931" elapsed="0.391627">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:00.411084" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:00.410323" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:00.413275" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:00.412560" elapsed="0.000759"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:00.414443" 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-19T03:12:00.414584" 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-19T03:12:00.414220" elapsed="0.000401"/>
</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-19T03:12:00.422371" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:00.421675" elapsed="0.000809"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:00.419192" elapsed="0.003372"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:00.424540" 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-19T03:12:00.424934" 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-19T03:12:00.423911" elapsed="0.001182"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:00.426680" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:00.426138" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:00.428499" 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-19T03:12:00.427778" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:00.430889" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:00.430966" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:00.430609" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:00.431211" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:00.432524" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:00.753464" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:11:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:00.432204" elapsed="0.321409"/>
</kw>
<msg time="2026-04-19T03:12:00.753697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:00.431830" elapsed="0.321960"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:00.429798" elapsed="0.324300"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:00.755604" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:00.778214" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:00.778725" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:00.779103" 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-19T03:12:00.755206" elapsed="0.024124"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:00.781757" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:00.785270" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:00.783906" elapsed="0.001783"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:00.786594" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:00.786081" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:00.785924" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:00.787702" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T03:12:00.787250" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:00.787142" elapsed="0.001011"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:00.788336" elapsed="0.000085"/>
</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-19T03:12:00.794325" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:12:00.794893" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:00.795280" 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-19T03:12:00.790605" elapsed="0.004889"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:00.417340" elapsed="0.378385"/>
</kw>
<msg time="2026-04-19T03:12:00.796147" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:00.416336" elapsed="0.379878"/>
</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-19T03:12:00.415574" elapsed="0.380729"/>
</kw>
<msg time="2026-04-19T03:12:00.796344" 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-19T03:12:00.414840" elapsed="0.381551"/>
</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-19T03:12:00.799465" 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-19T03:12:00.799953" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:00.800288" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:00.796705" elapsed="0.003737"/>
</kw>
<msg time="2026-04-19T03:12:00.800637" level="INFO">${output} = 1</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-19T03:12:00.413624" elapsed="0.387041"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:00.801190" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:00.800854" elapsed="0.000382"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:00.801281" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:12:00.801437" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:00.411615" elapsed="0.389848"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:00.801512" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:00.801659" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:00.409480" elapsed="0.392205"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:00.802265" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:00.801843" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:00.408372" elapsed="0.394090">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:02.806355" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:02.805539" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:02.808585" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:02.808089" elapsed="0.000535"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:02.809800" 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-19T03:12:02.809943" 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-19T03:12:02.809581" elapsed="0.000400"/>
</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-19T03:12:02.815402" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:02.814710" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:02.814634" elapsed="0.001004"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:02.818164" 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-19T03:12:02.818509" 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-19T03:12:02.817070" elapsed="0.001579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:02.820732" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:02.820050" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:02.822578" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:02.821815" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:02.824935" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:02.825014" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:02.824654" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:02.825266" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:02.826634" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:03.140348" 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 Sun Apr 19 03:11:02 UTC 2026

  System load:  0.01               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:02.826308" elapsed="0.314262"/>
</kw>
<msg time="2026-04-19T03:12:03.140649" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:02.825815" elapsed="0.314916"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:02.823876" elapsed="0.317124"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:03.142505" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:03.165181" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:03.165691" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:03.166019" 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-19T03:12:03.142106" elapsed="0.024161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:03.168528" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:03.171966" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:03.170806" elapsed="0.001523"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:03.172901" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:03.172566" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:03.172483" 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-19T03:12:03.173623" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T03:12:03.173330" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:03.173259" elapsed="0.000595"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:03.173969" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:03.181170" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T03:12:03.181976" elapsed="0.000285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:03.182550" 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-19T03:12:03.175981" elapsed="0.006878"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:02.812787" elapsed="0.370446"/>
</kw>
<msg time="2026-04-19T03:12:03.183728" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:02.811787" elapsed="0.372030"/>
</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-19T03:12:02.810937" elapsed="0.373001"/>
</kw>
<msg time="2026-04-19T03:12:03.183997" 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-19T03:12:02.810225" elapsed="0.373924"/>
</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-19T03:12:03.187313" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:03.187810" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:03.188168" 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-19T03:12:03.184552" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T03:12:03.188413" level="INFO">${output} = 1</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-19T03:12:02.808976" elapsed="0.379462"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:03.188886" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:03.188635" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:03.188976" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:03.189147" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:02.806912" elapsed="0.382261"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:03.189222" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:03.189368" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:02.804608" elapsed="0.384786"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:03.190008" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:03.189612" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:02.803473" elapsed="0.386734">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:05.193769" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:05.193003" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:05.195962" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:05.195347" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:05.197823" 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-19T03:12:05.198084" 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-19T03:12:05.197498" elapsed="0.000650"/>
</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-19T03:12:05.203948" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:05.203310" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:05.203233" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:05.206590" 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-19T03:12:05.206939" 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-19T03:12:05.205611" elapsed="0.001524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:05.209291" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:05.208507" elapsed="0.000943"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:05.212181" 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-19T03:12:05.211420" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:05.214567" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:05.214644" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:05.214269" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:05.214878" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:05.216263" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:05.800536" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:05.215926" elapsed="0.584729"/>
</kw>
<msg time="2026-04-19T03:12:05.800731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:05.215566" elapsed="0.585248"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:05.213484" elapsed="0.587606"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:05.802552" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:05.825499" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:05.826006" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:05.826414" 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-19T03:12:05.802172" elapsed="0.024480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:05.828911" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:05.832212" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:05.831153" elapsed="0.001291"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:05.833322" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:05.832790" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:05.832667" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:05.834458" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T03:12:05.833928" elapsed="0.000645"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:05.833824" elapsed="0.000807"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:05.834710" 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-19T03:12:05.839508" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:05.840127" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:05.840484" 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-19T03:12:05.836141" elapsed="0.004546"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:05.201346" elapsed="0.639562"/>
</kw>
<msg time="2026-04-19T03:12:05.841225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:05.200390" elapsed="0.640895"/>
</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-19T03:12:05.199613" elapsed="0.641755"/>
</kw>
<msg time="2026-04-19T03:12:05.841409" 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-19T03:12:05.198548" elapsed="0.642908"/>
</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-19T03:12:05.844524" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:12:05.844999" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:05.845310" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:05.841746" elapsed="0.003711"/>
</kw>
<msg time="2026-04-19T03:12:05.845547" level="INFO">${output} = 1</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-19T03:12:05.196550" elapsed="0.649022"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:05.845995" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:05.845749" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:05.846125" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:12:05.846280" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:05.194327" elapsed="0.651979"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:05.846352" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:05.846501" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:05.192155" elapsed="0.654371"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:05.847104" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:05.846683" elapsed="0.000497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:05.191018" elapsed="0.656273">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:07.850014" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:07.849346" elapsed="0.000741"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:07.851887" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:07.851279" elapsed="0.000675"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:07.854238" 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-19T03:12:07.854561" 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-19T03:12:07.853725" elapsed="0.000922"/>
</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-19T03:12:07.860237" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:07.859741" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:07.859683" elapsed="0.000695"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:07.862081" 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-19T03:12:07.862330" 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-19T03:12:07.861374" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:07.864063" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:07.863496" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:07.865922" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:07.865233" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:07.868423" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:07.868506" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:07.868085" 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-19T03:12:07.868748" elapsed="0.000557"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:07.870259" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:08.187402" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:07.869913" elapsed="0.317654"/>
</kw>
<msg time="2026-04-19T03:12:08.187659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:07.869541" elapsed="0.318216"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:07.867259" elapsed="0.320815"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:08.189641" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:08.212394" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:08.212914" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:08.213338" 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-19T03:12:08.189232" elapsed="0.024320"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:08.215805" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:08.218523" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:08.217866" 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-19T03:12:08.219333" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:08.218893" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:08.218813" elapsed="0.000712"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:08.220022" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-19T03:12:08.219734" elapsed="0.000460"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:08.219665" elapsed="0.000612"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:08.220391" elapsed="0.000055"/>
</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-19T03:12:08.228604" elapsed="0.000896"/>
</kw>
<kw name="Open 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-19T03:12:08.229980" elapsed="0.000704"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:08.231409" elapsed="0.000306"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:08.222369" elapsed="0.009650"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:07.858365" elapsed="0.374333"/>
</kw>
<msg time="2026-04-19T03:12:08.233631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:07.857653" elapsed="0.376150"/>
</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-19T03:12:07.856511" elapsed="0.377608"/>
</kw>
<msg time="2026-04-19T03:12:08.234255" 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-19T03:12:07.855143" elapsed="0.379257"/>
</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-19T03:12:08.239525" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:08.240006" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:08.240334" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:08.235326" elapsed="0.005172"/>
</kw>
<msg time="2026-04-19T03:12:08.240596" level="INFO">${output} = 1</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-19T03:12:07.852522" elapsed="0.388100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:08.241121" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:08.240818" elapsed="0.000350"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:08.241212" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:12:08.241369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:07.850525" elapsed="0.390870"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:08.241444" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:12:08.241597" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:07.848745" elapsed="0.392877"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:08.242241" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:08.241781" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:07.847946" elapsed="0.394484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:10.245885" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:10.245147" elapsed="0.000811"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:10.248371" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:10.247526" elapsed="0.000908"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:10.249681" 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-19T03:12:10.249935" 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-19T03:12:10.249455" elapsed="0.000518"/>
</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-19T03:12:10.255555" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:10.254893" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:10.254519" elapsed="0.001230"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:10.257756" 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-19T03:12:10.258132" 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-19T03:12:10.257145" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:10.260390" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:10.259599" elapsed="0.000946"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:10.262364" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:10.261609" elapsed="0.000851"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:10.264729" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:10.264807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:10.264448" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:10.265054" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:10.266449" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:10.575444" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:10.265970" elapsed="0.309633"/>
</kw>
<msg time="2026-04-19T03:12:10.575694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:10.265612" elapsed="0.310175"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:10.263655" elapsed="0.312458"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:10.577606" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:10.600373" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:10.600867" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:10.601249" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:12:10.577206" elapsed="0.024251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:10.603637" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:10.606831" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:10.605823" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:10.607974" elapsed="0.000141"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:10.607450" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:10.607327" elapsed="0.001021"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:10.609155" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:12:10.608673" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:10.608565" elapsed="0.000941"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:10.609682" 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-19T03:12:10.616081" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:12:10.616690" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:10.617063" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:10.612733" elapsed="0.004538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:10.252668" elapsed="0.364825"/>
</kw>
<msg time="2026-04-19T03:12:10.617797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:10.251709" elapsed="0.366145"/>
</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-19T03:12:10.250943" elapsed="0.366994"/>
</kw>
<msg time="2026-04-19T03:12:10.617979" 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-19T03:12:10.250218" elapsed="0.367809"/>
</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-19T03:12:10.621099" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:12:10.621577" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:10.621876" 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-19T03:12:10.618408" elapsed="0.003615"/>
</kw>
<msg time="2026-04-19T03:12:10.622187" level="INFO">${output} = 1</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-19T03:12:10.248861" elapsed="0.373352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:10.622642" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:10.622393" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:10.622730" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:10.622883" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:10.246453" elapsed="0.376456"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:10.622955" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:10.623116" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:10.244301" elapsed="0.378841"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:10.623758" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:10.623365" elapsed="0.000622">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:10.243224" elapsed="0.380938">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:12.628338" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:12.627461" elapsed="0.000949"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:12.630447" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:12.629813" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:12.632150" 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-19T03:12:12.632294" 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-19T03:12:12.631886" elapsed="0.000444"/>
</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-19T03:12:12.638683" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:12.637999" elapsed="0.000924"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:12.637533" elapsed="0.001480"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:12.641133" 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-19T03:12:12.641471" 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-19T03:12:12.640474" elapsed="0.001135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:12.644063" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:12.643119" elapsed="0.001066"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:12.646050" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:12.645280" elapsed="0.000875"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:12.648542" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:12.648629" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:12.648245" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:12.648885" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:12.650340" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:12.966880" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:12.650000" elapsed="0.317047"/>
</kw>
<msg time="2026-04-19T03:12:12.967136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:12.649637" elapsed="0.317590"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:12.647417" elapsed="0.320092"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:12.969012" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:12.991761" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:12.992320" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:12.992670" 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-19T03:12:12.968611" elapsed="0.024275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:12.995209" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:12.998522" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:12.997472" elapsed="0.001321"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:12.999802" elapsed="0.000113"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:12.999265" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:12.999076" elapsed="0.001131"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:13.001027" elapsed="0.000373"/>
</return>
<status status="PASS" start="2026-04-19T03:12:13.000542" elapsed="0.000969"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:13.000433" elapsed="0.001211"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:13.001826" elapsed="0.000095"/>
</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-19T03:12:13.007849" 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-19T03:12:13.008456" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:13.008824" 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-19T03:12:13.004328" elapsed="0.004781"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:12.635663" elapsed="0.373685"/>
</kw>
<msg time="2026-04-19T03:12:13.009776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:12.634553" elapsed="0.375289"/>
</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-19T03:12:12.633606" elapsed="0.376319"/>
</kw>
<msg time="2026-04-19T03:12:13.009968" 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-19T03:12:12.632638" elapsed="0.377376"/>
</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-19T03:12:13.013177" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:13.013684" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:13.013997" elapsed="0.000131"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:13.010344" elapsed="0.003843"/>
</kw>
<msg time="2026-04-19T03:12:13.014283" level="INFO">${output} = 1</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-19T03:12:12.631077" elapsed="0.383233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:13.014807" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:13.014513" elapsed="0.000342"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:13.014900" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:12:13.015077" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:12.628871" elapsed="0.386234"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:13.015162" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:12:13.015313" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:12.626528" elapsed="0.388812"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:13.015898" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:13.015497" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:12.625299" elapsed="0.390801">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:15.019944" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:15.019196" elapsed="0.000819"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:15.022301" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:15.021533" elapsed="0.000830"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:15.024160" 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-19T03:12:15.024390" 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-19T03:12:15.023790" elapsed="0.000658"/>
</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-19T03:12:15.033992" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:15.033467" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:15.031475" elapsed="0.002680"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:15.035604" 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-19T03:12:15.035852" 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-19T03:12:15.035156" elapsed="0.000797"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:15.037493" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:15.036933" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:15.039446" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:15.038729" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:15.041845" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:15.041923" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:15.041549" 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-19T03:12:15.042270" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:15.043524" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:15.353808" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:15.043201" elapsed="0.310801"/>
</kw>
<msg time="2026-04-19T03:12:15.354141" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:15.042823" elapsed="0.311442"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:15.040760" elapsed="0.313894"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:15.356771" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:15.379856" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:15.380409" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:15.380745" 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-19T03:12:15.356230" elapsed="0.024725"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:15.383336" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:15.386743" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:15.385718" elapsed="0.001255"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:15.387865" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:15.387359" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:15.387234" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:15.388977" elapsed="0.000269"/>
</return>
<status status="PASS" start="2026-04-19T03:12:15.388522" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:15.388413" elapsed="0.001072"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:15.389713" elapsed="0.000074"/>
</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-19T03:12:15.394630" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:12:15.395202" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:15.395576" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:15.391093" elapsed="0.004696"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:15.028895" elapsed="0.367117"/>
</kw>
<msg time="2026-04-19T03:12:15.396339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:15.027347" elapsed="0.369052"/>
</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-19T03:12:15.026023" elapsed="0.370460"/>
</kw>
<msg time="2026-04-19T03:12:15.396525" 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-19T03:12:15.024799" elapsed="0.371771"/>
</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-19T03:12:15.399713" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:12:15.400205" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:15.400500" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:15.396987" elapsed="0.003658"/>
</kw>
<msg time="2026-04-19T03:12:15.400737" level="INFO">${output} = 1</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-19T03:12:15.022845" elapsed="0.377917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:15.401307" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:15.400949" elapsed="0.000402"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:15.401394" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:12:15.401568" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:15.020502" elapsed="0.381092"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:15.401641" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:15.401784" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:15.018305" elapsed="0.383503"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:15.402387" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:15.401965" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:15.016970" elapsed="0.385609">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:17.406655" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:17.405820" elapsed="0.000908"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:17.408971" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:17.408274" elapsed="0.000791"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:17.411202" 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-19T03:12:17.411493" 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-19T03:12:17.410716" elapsed="0.000840"/>
</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-19T03:12:17.416249" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:17.415768" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:17.415709" elapsed="0.000681"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:17.418092" 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-19T03:12:17.418334" 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-19T03:12:17.417394" elapsed="0.001039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:17.419947" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:17.419402" elapsed="0.000720"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:17.421783" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:17.421094" elapsed="0.000788"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:17.424272" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:17.424351" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:17.423837" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:17.424612" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:17.425942" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:17.748243" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:17.425617" elapsed="0.322813"/>
</kw>
<msg time="2026-04-19T03:12:17.748519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:17.425256" elapsed="0.323355"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:17.423082" elapsed="0.325817"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:17.750459" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:17.773664" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:17.774219" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:17.774553" 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-19T03:12:17.750048" elapsed="0.024721"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:17.777069" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:17.780290" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:17.779306" elapsed="0.001239"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:17.781455" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:17.780910" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:17.780776" elapsed="0.000976"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:17.782590" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T03:12:17.782133" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:17.781991" elapsed="0.001202"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:17.783383" elapsed="0.000084"/>
</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-19T03:12:17.788561" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:12:17.789122" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:17.789481" 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-19T03:12:17.785091" elapsed="0.004598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:17.414384" elapsed="0.375529"/>
</kw>
<msg time="2026-04-19T03:12:17.790238" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:17.413663" elapsed="0.376634"/>
</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-19T03:12:17.413114" elapsed="0.377266"/>
</kw>
<msg time="2026-04-19T03:12:17.790420" 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-19T03:12:17.411918" elapsed="0.378548"/>
</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-19T03:12:17.793502" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:12:17.793976" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:17.794289" 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-19T03:12:17.790758" elapsed="0.003679"/>
</kw>
<msg time="2026-04-19T03:12:17.794593" level="INFO">${output} = 1</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-19T03:12:17.409591" elapsed="0.385028"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:17.795148" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:17.794798" elapsed="0.000397"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:17.795239" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:17.795393" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:17.407255" elapsed="0.388163"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:17.795466" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:17.795612" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:17.404749" elapsed="0.390888"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:17.796201" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:17.795793" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:17.403485" elapsed="0.392917">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:19.799981" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:19.799218" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:19.802122" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:19.801490" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:19.803992" 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-19T03:12:19.804158" 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-19T03:12:19.803668" elapsed="0.000528"/>
</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-19T03:12:19.809471" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:19.808819" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:19.808743" elapsed="0.000921"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:19.811975" 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-19T03:12:19.812538" 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-19T03:12:19.811013" elapsed="0.001665"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:19.814790" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:19.814020" elapsed="0.000923"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:19.816981" 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-19T03:12:19.816283" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:19.819508" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:19.819585" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:19.819212" 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-19T03:12:19.819823" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:19.821120" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:20.132743" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:19.820777" elapsed="0.312233"/>
</kw>
<msg time="2026-04-19T03:12:20.133114" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:19.820414" elapsed="0.312791"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:19.818283" elapsed="0.315204"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:20.134983" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:20.157805" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:20.158418" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:20.158749" 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-19T03:12:20.134581" elapsed="0.024379"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:20.161338" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:20.164592" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:20.163569" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:20.165690" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:20.165192" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:20.165065" elapsed="0.000912"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:20.166760" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T03:12:20.166326" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:20.166220" elapsed="0.000926"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:20.167343" elapsed="0.000082"/>
</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-19T03:12:20.174799" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:12:20.175378" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:20.175737" 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-19T03:12:20.170697" elapsed="0.005253"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:19.806890" elapsed="0.369351"/>
</kw>
<msg time="2026-04-19T03:12:20.176550" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:19.805918" elapsed="0.370695"/>
</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-19T03:12:19.805165" elapsed="0.371530"/>
</kw>
<msg time="2026-04-19T03:12:20.176737" 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-19T03:12:19.804421" elapsed="0.372362"/>
</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-19T03:12:20.179854" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T03:12:20.180422" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:20.180714" 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-19T03:12:20.177090" elapsed="0.003771"/>
</kw>
<msg time="2026-04-19T03:12:20.180954" level="INFO">${output} = 1</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-19T03:12:19.802668" elapsed="0.378311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:20.181429" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:20.181178" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:20.181517" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:20.181670" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:19.800537" elapsed="0.381158"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:20.181742" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:20.181886" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:19.798367" elapsed="0.383543"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:20.182561" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:20.182151" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:19.797301" elapsed="0.385456">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:22.186616" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:22.185770" elapsed="0.000917"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:22.188902" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:22.188121" elapsed="0.000840"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:22.190761" 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-19T03:12:22.190985" 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-19T03:12:22.190428" elapsed="0.000647"/>
</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-19T03:12:22.197104" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:22.196604" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:22.196547" elapsed="0.000702"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:22.199050" 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-19T03:12:22.199310" 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-19T03:12:22.198245" elapsed="0.001166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:22.201008" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:22.200435" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:22.202920" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:22.202159" elapsed="0.000860"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:22.205475" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:22.205555" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:22.205177" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:22.205800" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:22.207441" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:22.526461" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:22.206818" elapsed="0.319809"/>
</kw>
<msg time="2026-04-19T03:12:22.526718" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:22.206445" elapsed="0.320367"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:22.204372" elapsed="0.322764"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:22.528670" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:22.552224" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:22.552853" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:22.553232" 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-19T03:12:22.528262" elapsed="0.025183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:22.555797" elapsed="0.001371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:22.559791" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:22.558644" elapsed="0.001419"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:22.561089" elapsed="0.000078"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:22.560479" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:22.560341" elapsed="0.001102"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:22.562370" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T03:12:22.561777" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:22.561666" elapsed="0.001080"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:22.562927" elapsed="0.000085"/>
</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-19T03:12:22.568900" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:12:22.569600" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:22.569998" elapsed="0.000191"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:22.564623" elapsed="0.005688"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:22.195236" elapsed="0.375318"/>
</kw>
<msg time="2026-04-19T03:12:22.570877" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:22.193841" elapsed="0.377112"/>
</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-19T03:12:22.192596" elapsed="0.378618"/>
</kw>
<msg time="2026-04-19T03:12:22.571259" 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-19T03:12:22.191430" elapsed="0.379879"/>
</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-19T03:12:22.575330" 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-19T03:12:22.575964" elapsed="0.000246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:22.576366" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:22.571894" elapsed="0.004641"/>
</kw>
<msg time="2026-04-19T03:12:22.576640" level="INFO">${output} = 1</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-19T03:12:22.189474" elapsed="0.387193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:22.577185" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:22.576896" elapsed="0.000334"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:22.577280" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T03:12:22.577459" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:22.187179" elapsed="0.390306"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:22.577534" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:12:22.577681" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:22.184710" elapsed="0.392996"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:22.578387" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:22.577866" elapsed="0.000597">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:22.183605" elapsed="0.394976">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:24.582323" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:24.581382" elapsed="0.001019"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:24.584623" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:24.583977" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:24.586550" 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-19T03:12:24.586777" 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-19T03:12:24.586210" elapsed="0.000625"/>
</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-19T03:12:24.592802" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:24.592325" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:24.592006" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:24.594389" 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-19T03:12:24.594631" 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-19T03:12:24.593939" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:24.596251" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:24.595697" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:24.598127" 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-19T03:12:24.597405" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:24.600709" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:24.600787" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:24.600425" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:24.601018" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:24.602326" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:24.914371" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:24.601972" elapsed="0.312519"/>
</kw>
<msg time="2026-04-19T03:12:24.914564" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:24.601616" elapsed="0.313028"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:24.599649" elapsed="0.315248"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:24.916340" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:24.938821" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:24.939065" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:24.939218" 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-19T03:12:24.915953" elapsed="0.023361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:24.940310" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:24.941731" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:24.941301" elapsed="0.000535"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:24.942312" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:24.941997" elapsed="0.000395"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:24.941941" elapsed="0.000508"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:24.942805" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:12:24.942598" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:24.942547" elapsed="0.000417"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:24.943061" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:24.947669" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:12:24.948229" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:24.948586" 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-19T03:12:24.944392" elapsed="0.004401"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:24.590639" elapsed="0.358431"/>
</kw>
<msg time="2026-04-19T03:12:24.949389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:24.589653" elapsed="0.359793"/>
</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-19T03:12:24.588395" elapsed="0.361134"/>
</kw>
<msg time="2026-04-19T03:12:24.949569" 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-19T03:12:24.587219" elapsed="0.362397"/>
</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-19T03:12:24.952808" 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-19T03:12:24.953383" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:24.953677" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:24.949907" elapsed="0.003918"/>
</kw>
<msg time="2026-04-19T03:12:24.953916" level="INFO">${output} = 1</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-19T03:12:24.585251" elapsed="0.368692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:24.954385" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:24.954136" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:24.954473" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:24.954625" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:24.583018" elapsed="0.371632"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:24.954697" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:24.954841" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:24.580475" elapsed="0.374391"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:24.955427" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:24.955024" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:24.579394" elapsed="0.376212">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:26.959274" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:26.958504" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:26.961390" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:26.960752" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:26.963228" 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-19T03:12:26.963621" 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-19T03:12:26.962862" elapsed="0.000821"/>
</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-19T03:12:26.969957" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:26.969303" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:26.968896" elapsed="0.001278"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:26.972224" 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-19T03:12:26.972569" 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-19T03:12:26.971556" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:26.974832" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:26.974077" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:26.977404" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:26.976459" elapsed="0.001042"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:26.979751" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:26.979830" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:26.979469" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:26.980220" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:26.981467" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:27.303021" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:26.981142" elapsed="0.322055"/>
</kw>
<msg time="2026-04-19T03:12:27.303286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:26.980770" elapsed="0.322611"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:26.978692" elapsed="0.324979"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:27.305234" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:27.328215" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:27.328733" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:27.329106" 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-19T03:12:27.304796" elapsed="0.024523"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:27.331589" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:27.334815" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:27.333782" elapsed="0.001390"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:27.336107" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:27.335548" elapsed="0.000728"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:27.335422" elapsed="0.000979"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:27.337203" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T03:12:27.336725" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:27.336618" elapsed="0.000947"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:27.337742" elapsed="0.000082"/>
</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-19T03:12:27.344357" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:12:27.344970" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:27.345349" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:27.340767" elapsed="0.004790"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:26.966947" elapsed="0.378829"/>
</kw>
<msg time="2026-04-19T03:12:27.346109" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:26.966001" elapsed="0.380171"/>
</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-19T03:12:26.965255" elapsed="0.381001"/>
</kw>
<msg time="2026-04-19T03:12:27.346298" 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-19T03:12:26.964118" elapsed="0.382227"/>
</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-19T03:12:27.349390" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:12:27.349869" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:27.350194" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:27.346636" elapsed="0.003715"/>
</kw>
<msg time="2026-04-19T03:12:27.350442" level="INFO">${output} = 1</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-19T03:12:26.961928" elapsed="0.388539"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:27.350898" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:27.350649" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:27.350985" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:27.351181" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:26.959795" elapsed="0.391411"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:27.351254" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:27.351398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:26.957662" elapsed="0.393761"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:27.351997" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:27.351579" elapsed="0.000546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:26.956478" elapsed="0.395757">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:29.355743" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:29.354980" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:29.357834" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:29.357232" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:29.359599" 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-19T03:12:29.359741" 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-19T03:12:29.359381" elapsed="0.000397"/>
</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-19T03:12:29.367508" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:29.366805" elapsed="0.000884"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:29.364326" elapsed="0.003446"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:29.369844" 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-19T03:12:29.370200" 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-19T03:12:29.369246" elapsed="0.001092"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:29.372193" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:29.371623" elapsed="0.000679"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:29.373967" 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-19T03:12:29.373278" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:29.376427" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:29.376509" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:29.376136" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:29.376752" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:29.378133" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:29.694375" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:29.377791" elapsed="0.316738"/>
</kw>
<msg time="2026-04-19T03:12:29.694615" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:29.377421" elapsed="0.317298"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:29.375320" elapsed="0.319683"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:29.696516" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:29.719466" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:29.719967" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:29.720350" 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-19T03:12:29.696120" elapsed="0.024443"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:29.722830" elapsed="0.000908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:29.725984" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:29.724993" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:29.727166" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:29.726607" elapsed="0.000726"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:29.726484" elapsed="0.000979"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:29.728273" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:12:29.727783" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:29.727675" elapsed="0.000957"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:29.728809" elapsed="0.000085"/>
</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-19T03:12:29.735087" 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-19T03:12:29.735729" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:29.736103" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:29.731677" elapsed="0.004641"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:29.362448" elapsed="0.374100"/>
</kw>
<msg time="2026-04-19T03:12:29.736918" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:29.361496" elapsed="0.375481"/>
</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-19T03:12:29.360731" elapsed="0.376394"/>
</kw>
<msg time="2026-04-19T03:12:29.737168" 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-19T03:12:29.359999" elapsed="0.377215"/>
</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-19T03:12:29.740194" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:12:29.740673" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:29.740967" elapsed="0.000193"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:29.737505" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T03:12:29.741304" level="INFO">${output} = 1</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-19T03:12:29.358447" elapsed="0.382882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:29.741752" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:29.741505" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:29.741839" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:12:29.741987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:29.356295" elapsed="0.385717"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:29.742075" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:29.742219" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:29.354150" elapsed="0.388094"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:29.742819" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:29.742404" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:29.353104" elapsed="0.389907">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:31.746496" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:31.745707" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:31.748597" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:31.747965" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:31.750441" 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-19T03:12:31.750588" 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-19T03:12:31.750166" elapsed="0.000459"/>
</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-19T03:12:31.755882" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:31.755257" elapsed="0.000733"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:31.755180" elapsed="0.000916"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:31.758400" 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-19T03:12:31.758740" 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-19T03:12:31.757448" elapsed="0.001434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:31.760997" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:31.760239" elapsed="0.000933"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:31.763300" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:31.762592" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:31.765647" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:31.765736" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:31.765368" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:31.765974" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:31.767371" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:32.134484" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:31.767045" elapsed="0.367589"/>
</kw>
<msg time="2026-04-19T03:12:32.134719" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:31.766669" elapsed="0.368139"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:31.764590" elapsed="0.370530"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:32.136665" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:32.159218" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:32.159731" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:32.160112" 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-19T03:12:32.136257" elapsed="0.024067"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:32.162605" elapsed="0.001112"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:32.166279" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:32.165129" elapsed="0.001383"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:32.167407" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:32.166865" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:32.166741" elapsed="0.000960"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:32.168578" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T03:12:32.168023" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:32.167916" elapsed="0.001030"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:32.169187" elapsed="0.000085"/>
</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-19T03:12:32.176942" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T03:12:32.177542" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:32.177905" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:32.172400" elapsed="0.005811"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:31.753351" elapsed="0.425080"/>
</kw>
<msg time="2026-04-19T03:12:32.178731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:31.752384" elapsed="0.426410"/>
</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-19T03:12:31.751604" elapsed="0.427274"/>
</kw>
<msg time="2026-04-19T03:12:32.178919" 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-19T03:12:31.750847" elapsed="0.428118"/>
</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-19T03:12:32.182098" 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-19T03:12:32.182584" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:32.182881" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:32.179339" elapsed="0.003705"/>
</kw>
<msg time="2026-04-19T03:12:32.183139" level="INFO">${output} = 1</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-19T03:12:31.749168" elapsed="0.433997"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:32.183593" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:32.183345" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:32.183682" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:32.183834" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:31.747024" elapsed="0.436836"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:32.183907" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:32.184069" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:31.744856" elapsed="0.439239"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:32.184648" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:32.184254" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:31.743791" elapsed="0.441043">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:34.188453" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:34.187666" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:34.190613" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:34.189975" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:34.192472" 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-19T03:12:34.192723" 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-19T03:12:34.192120" elapsed="0.000662"/>
</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-19T03:12:34.201358" elapsed="0.000093"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:34.200270" elapsed="0.001290"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:34.200146" elapsed="0.001496"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:34.203369" 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-19T03:12:34.203617" 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-19T03:12:34.202638" elapsed="0.001079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:34.205287" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:34.204718" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:34.207173" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:34.206397" elapsed="0.000873"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:34.209563" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:34.209640" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:34.209269" 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-19T03:12:34.209873" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:34.211344" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:34.532131" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:34.210872" elapsed="0.321407"/>
</kw>
<msg time="2026-04-19T03:12:34.532364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:34.210512" elapsed="0.321963"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:34.208478" elapsed="0.324281"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:34.534260" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:34.557512" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:34.557740" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:34.557888" 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-19T03:12:34.533857" elapsed="0.024127"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:34.558972" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:34.560459" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:34.559977" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:34.560974" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:34.560727" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:34.560669" elapsed="0.000457"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:34.561479" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T03:12:34.561271" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:34.561222" elapsed="0.000416"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:34.561717" 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-19T03:12:34.566409" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:34.566956" elapsed="0.000305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:34.567459" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:34.563027" elapsed="0.004641"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:34.197173" elapsed="0.370719"/>
</kw>
<msg time="2026-04-19T03:12:34.568216" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:34.195584" elapsed="0.372691"/>
</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-19T03:12:34.194330" elapsed="0.374030"/>
</kw>
<msg time="2026-04-19T03:12:34.568433" 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-19T03:12:34.193162" elapsed="0.375319"/>
</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-19T03:12:34.571641" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:12:34.572135" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:34.572445" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:34.568774" elapsed="0.003821"/>
</kw>
<msg time="2026-04-19T03:12:34.572752" level="INFO">${output} = 1</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-19T03:12:34.191181" elapsed="0.381598"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:34.573227" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:34.572958" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:34.573316" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:34.573471" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:34.189027" elapsed="0.384469"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:34.573544" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:34.573692" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:34.186814" elapsed="0.386903"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:34.574286" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:34.573877" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:34.185713" elapsed="0.388757">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:36.577954" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:36.577219" elapsed="0.000806"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:36.580356" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:36.579716" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:36.581561" 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-19T03:12:36.581702" 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-19T03:12:36.581337" elapsed="0.000402"/>
</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-19T03:12:36.587238" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:36.586586" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:36.586507" elapsed="0.000939"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:36.589804" 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-19T03:12:36.590202" 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-19T03:12:36.588815" elapsed="0.001526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:36.592562" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:36.591809" elapsed="0.000867"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:36.594416" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:36.593674" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:36.596928" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:36.597007" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:36.596645" 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-19T03:12:36.597260" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:36.598679" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:36.913806" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:36.598353" elapsed="0.315731"/>
</kw>
<msg time="2026-04-19T03:12:36.914173" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:36.597815" elapsed="0.316449"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:36.595867" elapsed="0.318674"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:36.916073" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:36.938957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:36.939519" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:36.939854" 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-19T03:12:36.915664" elapsed="0.024442"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:36.942329" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:36.945503" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:36.944527" elapsed="0.001206"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:36.946716" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:36.946116" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:36.945958" elapsed="0.001058"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:36.947750" elapsed="0.000063"/>
</return>
<status status="PASS" start="2026-04-19T03:12:36.947428" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:36.947313" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:36.948005" elapsed="0.000143"/>
</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-19T03:12:36.952876" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T03:12:36.953516" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:36.953878" 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-19T03:12:36.949448" elapsed="0.004657"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:36.584500" elapsed="0.369830"/>
</kw>
<msg time="2026-04-19T03:12:36.954645" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:36.583536" elapsed="0.371169"/>
</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-19T03:12:36.582737" elapsed="0.372052"/>
</kw>
<msg time="2026-04-19T03:12:36.954830" 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-19T03:12:36.581961" elapsed="0.372915"/>
</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-19T03:12:36.957926" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:12:36.958422" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:36.958719" 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-19T03:12:36.955181" elapsed="0.003685"/>
</kw>
<msg time="2026-04-19T03:12:36.958958" level="INFO">${output} = 1</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-19T03:12:36.580740" elapsed="0.378243"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:36.959552" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:36.959287" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:36.959642" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:12:36.959793" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:36.578536" elapsed="0.381282"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:36.959864" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:36.960008" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:36.576374" elapsed="0.383703"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:36.960703" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:36.960301" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:36.575287" elapsed="0.385606">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:38.964323" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:38.963562" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:38.966416" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:38.965771" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:38.968340" 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-19T03:12:38.968565" 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-19T03:12:38.967877" elapsed="0.000715"/>
</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-19T03:12:38.972712" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:38.972211" elapsed="0.000582"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:38.971878" elapsed="0.000976"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:38.974311" 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-19T03:12:38.974553" 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-19T03:12:38.973836" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:38.976218" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:38.975637" elapsed="0.000687"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:38.977979" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:38.977287" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:38.980517" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:38.980595" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:38.980223" 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-19T03:12:38.980830" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:38.982102" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:39.298408" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:38.981763" elapsed="0.316799"/>
</kw>
<msg time="2026-04-19T03:12:39.298650" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:38.981405" elapsed="0.317338"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:38.979318" elapsed="0.319733"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:39.300536" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:39.323536" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:39.324076" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:39.324421" 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-19T03:12:39.300145" elapsed="0.024488"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:39.326993" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:39.330136" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:39.329156" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:39.331265" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:39.330735" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:39.330612" elapsed="0.000940"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:39.332339" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:12:39.331865" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:39.331761" elapsed="0.000933"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:39.332865" elapsed="0.000089"/>
</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-19T03:12:39.338753" 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-19T03:12:39.339322" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:39.339682" 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-19T03:12:39.335276" elapsed="0.004613"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:38.970559" elapsed="0.369574"/>
</kw>
<msg time="2026-04-19T03:12:39.340440" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:38.969839" elapsed="0.370660"/>
</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-19T03:12:38.969302" elapsed="0.371279"/>
</kw>
<msg time="2026-04-19T03:12:39.340622" 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-19T03:12:38.968755" elapsed="0.371914"/>
</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-19T03:12:39.343687" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T03:12:39.344175" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:39.344469" 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-19T03:12:39.340959" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T03:12:39.344706" level="INFO">${output} = 1</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-19T03:12:38.966947" elapsed="0.377784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:39.345261" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:39.344910" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:39.345349" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:39.345502" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:38.964841" elapsed="0.380686"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:39.345573" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:39.345717" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:38.962728" elapsed="0.383014"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:39.346343" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:39.345898" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:38.961655" elapsed="0.384874">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:41.349901" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:41.349176" elapsed="0.000794"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:41.352180" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:41.351540" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:41.354020" 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-19T03:12:41.354281" 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-19T03:12:41.353694" elapsed="0.000647"/>
</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-19T03:12:41.360226" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:41.359733" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:41.359456" elapsed="0.000911"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:41.361797" 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-19T03:12:41.362049" 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-19T03:12:41.361359" elapsed="0.000794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:41.363660" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:41.363124" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:41.365486" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:41.364755" elapsed="0.000833"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:41.367905" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:41.367983" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:41.367624" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:41.368237" elapsed="0.000341"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:41.369528" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:41.688732" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:41.369201" elapsed="0.319652"/>
</kw>
<msg time="2026-04-19T03:12:41.688926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:41.368800" elapsed="0.320223"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:41.366782" elapsed="0.322541"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:41.690751" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:41.702935" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:41.703467" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:41.703799" 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-19T03:12:41.690384" elapsed="0.013626"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:41.706272" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:41.709438" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:41.708455" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:41.710662" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:41.710012" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:41.709892" elapsed="0.001069"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:41.711787" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T03:12:41.711334" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:41.711222" elapsed="0.001161"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:41.712562" 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-19T03:12:41.717915" 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-19T03:12:41.718475" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:41.718831" 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-19T03:12:41.714534" elapsed="0.004520"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:41.358159" elapsed="0.361127"/>
</kw>
<msg time="2026-04-19T03:12:41.719610" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:41.357219" elapsed="0.362449"/>
</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-19T03:12:41.355857" elapsed="0.363892"/>
</kw>
<msg time="2026-04-19T03:12:41.719790" 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-19T03:12:41.354691" elapsed="0.365144"/>
</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-19T03:12:41.722851" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T03:12:41.723343" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:41.723634" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:41.720186" elapsed="0.003599"/>
</kw>
<msg time="2026-04-19T03:12:41.723875" level="INFO">${output} = 1</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-19T03:12:41.352721" elapsed="0.371179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:41.724428" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:41.724179" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:41.724514" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:41.724665" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:41.350595" elapsed="0.374095"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:41.724736" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:12:41.724878" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:41.348332" elapsed="0.376570"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:41.725488" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:41.725096" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:41.347307" elapsed="0.378368">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:43.729403" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:43.728625" elapsed="0.000848"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:43.731507" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:43.730871" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:43.733167" 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-19T03:12:43.733428" 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-19T03:12:43.732929" elapsed="0.000537"/>
</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-19T03:12:43.741826" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:43.741127" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:43.738268" elapsed="0.003812"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:43.744301" 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-19T03:12:43.744686" 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-19T03:12:43.743578" elapsed="0.001230"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:43.746468" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:43.745831" elapsed="0.000749"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:43.748310" 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-19T03:12:43.747573" elapsed="0.000841"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:43.750874" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:43.750952" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:43.750572" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:43.751206" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:43.752531" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:44.100211" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:43.752189" elapsed="0.348177"/>
</kw>
<msg time="2026-04-19T03:12:44.100453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:43.751785" elapsed="0.348761"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:43.749648" elapsed="0.351183"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:44.102339" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:44.125002" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:44.125254" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:44.125404" 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-19T03:12:44.101930" elapsed="0.023571"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:44.126507" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:44.127984" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:44.127514" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:44.128514" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:44.128270" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:44.128211" elapsed="0.000436"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:44.129001" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:12:44.128797" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:44.128745" elapsed="0.000435"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:44.129260" 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-19T03:12:44.134380" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:12:44.134979" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:44.135356" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:44.130606" elapsed="0.004959"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:43.736424" elapsed="0.399362"/>
</kw>
<msg time="2026-04-19T03:12:44.136118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:43.735281" elapsed="0.400896"/>
</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-19T03:12:43.734435" elapsed="0.401825"/>
</kw>
<msg time="2026-04-19T03:12:44.136303" 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-19T03:12:43.733687" elapsed="0.402663"/>
</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-19T03:12:44.139459" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:12:44.139986" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:44.140302" 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-19T03:12:44.136643" elapsed="0.003806"/>
</kw>
<msg time="2026-04-19T03:12:44.140540" level="INFO">${output} = 1</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-19T03:12:43.732125" elapsed="0.408440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:44.140991" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:44.140743" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:44.141096" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:12:44.141249" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:43.729931" elapsed="0.411342"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:44.141319" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:12:44.141461" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:43.727756" elapsed="0.413729"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:44.142062" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:44.141640" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:43.726680" elapsed="0.415570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:46.145793" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:46.145055" elapsed="0.000807"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:46.147923" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:46.147347" elapsed="0.000616"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:46.149127" 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-19T03:12:46.149274" 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-19T03:12:46.148883" elapsed="0.000431"/>
</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-19T03:12:46.154705" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:46.154075" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:46.153977" elapsed="0.001031"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:46.157386" 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-19T03:12:46.157809" 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-19T03:12:46.156413" elapsed="0.001593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:46.160198" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:46.159547" elapsed="0.000761"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:46.162155" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:46.161357" elapsed="0.000899"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:46.164560" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:46.164639" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:46.164277" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:46.164879" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:46.166327" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:46.480543" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:46.165977" elapsed="0.314711"/>
</kw>
<msg time="2026-04-19T03:12:46.480776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:46.165565" elapsed="0.315303"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:46.163488" elapsed="0.317690"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:46.482717" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:46.505507" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:46.506099" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:46.506557" 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-19T03:12:46.482293" elapsed="0.024537"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:46.509333" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:46.512777" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:46.511674" elapsed="0.001353"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:46.513989" elapsed="0.000104"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:46.513447" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:46.513314" elapsed="0.001030"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:46.515423" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T03:12:46.514757" elapsed="0.000915"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:46.514577" elapsed="0.001244"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:46.515979" elapsed="0.000078"/>
</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-19T03:12:46.522616" elapsed="0.000589"/>
</kw>
<kw name="Open 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-19T03:12:46.523513" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:46.524148" elapsed="0.000168"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:46.517863" elapsed="0.006618"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:46.151998" elapsed="0.372803"/>
</kw>
<msg time="2026-04-19T03:12:46.525945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:46.151057" elapsed="0.375046"/>
</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-19T03:12:46.150282" elapsed="0.376005"/>
</kw>
<msg time="2026-04-19T03:12:46.526375" 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-19T03:12:46.149538" elapsed="0.376939"/>
</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-19T03:12:46.533329" elapsed="0.000740"/>
</kw>
<kw name="Open 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-19T03:12:46.534437" elapsed="0.000369"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:46.535168" elapsed="0.000220"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:46.527185" elapsed="0.008317"/>
</kw>
<msg time="2026-04-19T03:12:46.535700" level="INFO">${output} = 1</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-19T03:12:46.148297" elapsed="0.387458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:46.536231" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:46.535965" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:46.536319" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:46.536473" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:46.146350" elapsed="0.390149"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:46.536546" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:46.536692" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:46.144209" elapsed="0.392508"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:46.537296" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:46.536873" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:46.143137" elapsed="0.394345">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:48.541090" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:48.540309" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:48.543338" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:48.542676" elapsed="0.000723"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:48.545256" 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-19T03:12:48.545498" 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-19T03:12:48.544861" elapsed="0.000697"/>
</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-19T03:12:48.550189" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:48.549650" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:48.549593" elapsed="0.000735"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:48.551996" 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-19T03:12:48.552258" 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-19T03:12:48.551301" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:48.553972" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:48.553389" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:48.555848" 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-19T03:12:48.555141" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:48.558441" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:48.558531" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:48.558123" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:48.558774" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:48.560103" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:48.879574" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:48.559751" elapsed="0.319961"/>
</kw>
<msg time="2026-04-19T03:12:48.879792" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:48.559375" elapsed="0.320501"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:48.557298" elapsed="0.322878"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:48.881672" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:48.904629" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:48.905168" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:48.905500" 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-19T03:12:48.881255" elapsed="0.024484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:48.907966" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:48.911138" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:48.910163" elapsed="0.001207"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:48.912252" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:48.911717" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:48.911595" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:48.913360" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:12:48.912875" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:48.912763" elapsed="0.001014"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:48.913935" 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-19T03:12:48.918728" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:12:48.919298" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:48.919653" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:48.915352" elapsed="0.004512"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:48.548284" elapsed="0.371872"/>
</kw>
<msg time="2026-04-19T03:12:48.920523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:48.547572" elapsed="0.373009"/>
</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-19T03:12:48.547016" elapsed="0.373649"/>
</kw>
<msg time="2026-04-19T03:12:48.920706" 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-19T03:12:48.545986" elapsed="0.374767"/>
</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-19T03:12:48.923806" 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-19T03:12:48.924332" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:48.924626" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:48.921127" elapsed="0.003650"/>
</kw>
<msg time="2026-04-19T03:12:48.924870" level="INFO">${output} = 1</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-19T03:12:48.543880" elapsed="0.381019"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:48.925380" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:48.925126" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:48.925471" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:12:48.925654" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:48.541620" elapsed="0.384060"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:48.925728" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:12:48.925876" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:48.539448" elapsed="0.386453"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:48.926497" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:48.926105" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:48.538367" elapsed="0.388311">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:50.930242" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:50.929460" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:50.932543" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:50.931779" elapsed="0.000856"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:50.934669" 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-19T03:12:50.934913" 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-19T03:12:50.934282" elapsed="0.000690"/>
</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-19T03:12:50.942512" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:50.941837" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:50.941760" elapsed="0.000952"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:50.945164" 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-19T03:12:50.945536" 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-19T03:12:50.944152" elapsed="0.001529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:50.947898" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:50.947099" elapsed="0.001037"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:50.950602" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:50.949567" elapsed="0.001177"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:50.953974" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:50.954071" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:50.953681" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:50.954309" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:50.955693" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:51.280881" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:50.955357" elapsed="0.325684"/>
</kw>
<msg time="2026-04-19T03:12:51.281126" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:50.954957" elapsed="0.326257"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:50.952831" elapsed="0.328666"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:51.282981" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:51.305390" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:51.305706" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:51.305916" 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-19T03:12:51.282590" elapsed="0.023490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:51.307477" elapsed="0.000543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:51.309464" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:51.308841" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:51.310182" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:51.309834" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:51.309753" 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-19T03:12:51.310860" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:12:51.310575" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:51.310504" elapsed="0.000623"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:51.311241" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:51.318002" elapsed="0.000482"/>
</kw>
<kw name="Open 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-19T03:12:51.318778" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:51.319315" 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-19T03:12:51.313237" elapsed="0.006369"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:50.939103" elapsed="0.380818"/>
</kw>
<msg time="2026-04-19T03:12:51.320534" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:50.937682" elapsed="0.382933"/>
</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-19T03:12:50.936772" elapsed="0.383961"/>
</kw>
<msg time="2026-04-19T03:12:51.320791" 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-19T03:12:50.935412" elapsed="0.385445"/>
</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-19T03:12:51.324022" 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-19T03:12:51.324568" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:51.324868" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:51.321202" elapsed="0.003816"/>
</kw>
<msg time="2026-04-19T03:12:51.325188" level="INFO">${output} = 1</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-19T03:12:50.933225" elapsed="0.391991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:51.325648" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:51.325396" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:51.325736" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:12:51.325891" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:50.930772" elapsed="0.395143"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:51.325963" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:51.326124" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:50.928598" elapsed="0.397551"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:51.326704" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:51.326307" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:50.927493" elapsed="0.399398">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:53.329635" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:53.329140" elapsed="0.000544"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:53.331115" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:53.330663" elapsed="0.000543"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:53.332653" 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-19T03:12:53.332854" 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-19T03:12:53.332349" elapsed="0.000557"/>
</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-19T03:12:53.339593" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:53.338844" elapsed="0.000886"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:53.338442" elapsed="0.001379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:53.342018" 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-19T03:12:53.342434" 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-19T03:12:53.341387" elapsed="0.001193"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:53.344760" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:53.344000" elapsed="0.000874"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:53.346710" 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-19T03:12:53.345866" elapsed="0.000943"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:53.349132" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:53.349211" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:53.348820" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:53.349450" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:53.350825" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:53.673152" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:53.350501" elapsed="0.322890"/>
</kw>
<msg time="2026-04-19T03:12:53.673480" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:53.350000" elapsed="0.323581"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:53.348011" elapsed="0.325849"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:53.675484" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:53.698000" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:53.698622" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:53.698976" 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-19T03:12:53.675023" elapsed="0.024277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:53.701805" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:53.705874" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:53.704754" elapsed="0.001394"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:53.707151" elapsed="0.000141"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:53.706557" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:53.706431" elapsed="0.001127"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:53.708471" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T03:12:53.708020" elapsed="0.000613"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:53.707906" elapsed="0.000853"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:53.708889" elapsed="0.000059"/>
</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-19T03:12:53.716370" elapsed="0.000554"/>
</kw>
<kw name="Open 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-19T03:12:53.717270" elapsed="0.000273"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:53.717845" elapsed="0.000204"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:53.710992" elapsed="0.007224"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:53.336448" elapsed="0.382243"/>
</kw>
<msg time="2026-04-19T03:12:53.719415" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:53.335316" elapsed="0.384199"/>
</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-19T03:12:53.334287" elapsed="0.385355"/>
</kw>
<msg time="2026-04-19T03:12:53.719703" 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-19T03:12:53.333259" elapsed="0.386514"/>
</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-19T03:12:53.722950" elapsed="0.000402"/>
</kw>
<kw name="Open 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-19T03:12:53.723519" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:53.723832" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:53.720223" elapsed="0.003767"/>
</kw>
<msg time="2026-04-19T03:12:53.724108" level="INFO">${output} = 1</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-19T03:12:53.331591" elapsed="0.392543"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:53.724590" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:53.724335" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:53.724681" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:12:53.724837" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:53.329982" elapsed="0.394881"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:53.724911" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:53.725083" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:53.328559" elapsed="0.396551"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:53.725750" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:53.725341" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:53.327678" elapsed="0.398261">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:55.729463" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:55.728698" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:55.731714" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:55.730975" elapsed="0.000821"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:55.733664" 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-19T03:12:55.733899" 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-19T03:12:55.733324" elapsed="0.000638"/>
</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-19T03:12:55.738937" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:55.738466" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:55.738140" elapsed="0.000953"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:55.740514" 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-19T03:12:55.740752" 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-19T03:12:55.740072" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:55.742398" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:55.741820" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:55.744234" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:55.743531" elapsed="0.000801"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:55.746610" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:55.746687" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:55.746323" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:55.746923" elapsed="0.000647"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:55.748847" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:56.060515" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:55.748400" elapsed="0.312268"/>
</kw>
<msg time="2026-04-19T03:12:56.060751" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:55.747877" elapsed="0.312966"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:55.745517" elapsed="0.315629"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:56.062636" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:56.085433" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:56.085931" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:56.086332" 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-19T03:12:56.062245" elapsed="0.024300"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:56.088762" elapsed="0.000887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:56.091903" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:56.090910" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:56.093023" elapsed="0.000097"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:56.092520" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:56.092398" elapsed="0.000954"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:56.094206" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:12:56.093673" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:56.093563" elapsed="0.001002"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:56.094743" elapsed="0.000088"/>
</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-19T03:12:56.099712" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T03:12:56.100271" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:56.100626" 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-19T03:12:56.096399" elapsed="0.004433"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:55.736734" elapsed="0.364337"/>
</kw>
<msg time="2026-04-19T03:12:56.101381" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:55.736026" elapsed="0.365412"/>
</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-19T03:12:55.735481" elapsed="0.366040"/>
</kw>
<msg time="2026-04-19T03:12:56.101562" 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-19T03:12:55.734459" elapsed="0.367148"/>
</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-19T03:12:56.104605" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T03:12:56.105131" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:56.105430" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:12:56.101897" elapsed="0.003682"/>
</kw>
<msg time="2026-04-19T03:12:56.105669" level="INFO">${output} = 1</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-19T03:12:55.732351" elapsed="0.373343"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:56.106184" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:56.105872" elapsed="0.000359"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:56.106276" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:12:56.106430" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:55.729987" elapsed="0.376469"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:56.106502" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:56.106646" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:55.727846" elapsed="0.378826"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:56.107385" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:56.106832" elapsed="0.000628">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:55.726734" elapsed="0.380837">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:12:58.111140" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:12:58.110328" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:12:58.113616" level="INFO">${member_ip} = 10.30.171.206</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-19T03:12:58.112885" elapsed="0.000795"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:58.115095" 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-19T03:12:58.115249" 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-19T03:12:58.114831" elapsed="0.000457"/>
</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-19T03:12:58.123763" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:12:58.123025" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:58.120383" elapsed="0.003593"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:58.126215" 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-19T03:12:58.126475" 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-19T03:12:58.125514" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:58.128606" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:58.127848" elapsed="0.000874"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:12:58.130562" 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-19T03:12:58.129778" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:12:58.133083" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:12:58.133184" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:12:58.132761" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:58.133429" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:12:58.134764" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:12:58.461460" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:12:58.134431" elapsed="0.327213"/>
</kw>
<msg time="2026-04-19T03:12:58.461764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:58.134045" elapsed="0.327837"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:12:58.131937" elapsed="0.330349"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:12:58.464354" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:12:58.487189" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:12:58.487727" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:12:58.488125" 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-19T03:12:58.463807" elapsed="0.024538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:58.490619" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:58.493903" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:58.492833" elapsed="0.001343"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:58.495223" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:12:58.494538" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:58.494408" elapsed="0.001131"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:12:58.496371" elapsed="0.000268"/>
</return>
<status status="PASS" start="2026-04-19T03:12:58.495871" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-19T03:12:58.495761" elapsed="0.001150"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:12:58.497266" 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-19T03:12:58.502528" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T03:12:58.503160" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:58.503530" 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-19T03:12:58.498779" elapsed="0.004966"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:12:58.118342" elapsed="0.385633"/>
</kw>
<msg time="2026-04-19T03:12:58.504308" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:12:58.117293" elapsed="0.387072"/>
</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-19T03:12:58.116354" elapsed="0.388095"/>
</kw>
<msg time="2026-04-19T03:12:58.504491" 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-19T03:12:58.115548" elapsed="0.388989"/>
</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-19T03:12:58.507641" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:12:58.508146" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:12:58.508454" 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-19T03:12:58.504831" elapsed="0.003775"/>
</kw>
<msg time="2026-04-19T03:12:58.508699" level="INFO">${output} = 1</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-19T03:12:58.114192" elapsed="0.394532"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:12:58.509212" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:12:58.508907" elapsed="0.000352"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:12:58.509305" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:12:58.509643" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:12:58.111813" elapsed="0.397856"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:12:58.509718" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:12:58.509866" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:12:58.109469" elapsed="0.400422"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:12:58.510469" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:12:58.510067" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:12:58.108361" elapsed="0.402297">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:00.514139" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:00.513371" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:00.516287" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:00.515602" elapsed="0.000731"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:00.517518" 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-19T03:13:00.517777" 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-19T03:13:00.517288" elapsed="0.000530"/>
</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-19T03:13:00.523600" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:00.522923" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:00.522842" elapsed="0.000954"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:00.526265" 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-19T03:13:00.526657" 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-19T03:13:00.525253" elapsed="0.001544"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:00.528929" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:00.528353" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:00.530743" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:00.530042" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:00.533266" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:00.533345" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:00.532961" 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-19T03:13:00.533580" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:00.534843" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:00.891414" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:12:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:00.534519" elapsed="0.357251"/>
</kw>
<msg time="2026-04-19T03:13:00.891905" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:00.534151" elapsed="0.357863"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:00.532212" elapsed="0.360128"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:00.894084" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:00.917353" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:00.917930" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:00.918319" 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-19T03:13:00.893645" elapsed="0.024890"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:00.920983" elapsed="0.000992"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:00.924304" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:00.923277" elapsed="0.001257"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:00.925410" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:00.924879" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:00.924757" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:00.926534" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:13:00.926020" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:00.925914" elapsed="0.000977"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:00.927161" elapsed="0.000086"/>
</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-19T03:13:00.935174" elapsed="0.000389"/>
</kw>
<kw name="Open 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-19T03:13:00.935891" elapsed="0.000207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:00.936299" 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-19T03:13:00.930282" elapsed="0.006239"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:00.520785" elapsed="0.415969"/>
</kw>
<msg time="2026-04-19T03:13:00.937108" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:00.519738" elapsed="0.417446"/>
</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-19T03:13:00.518908" elapsed="0.418365"/>
</kw>
<msg time="2026-04-19T03:13:00.937317" 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-19T03:13:00.518076" elapsed="0.419290"/>
</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-19T03:13:00.940473" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:13:00.940981" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:00.941309" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:00.937679" elapsed="0.003789"/>
</kw>
<msg time="2026-04-19T03:13:00.941568" level="INFO">${output} = 1</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-19T03:13:00.516652" elapsed="0.424942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:00.942099" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:00.941811" elapsed="0.000336"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:00.942196" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:13:00.942369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:00.514664" elapsed="0.427731"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:00.942444" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:13:00.942595" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:00.512539" elapsed="0.430081"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:00.943236" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:00.942780" elapsed="0.000529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:00.511456" elapsed="0.431968">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:02.947144" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:02.946319" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:02.949384" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:02.948739" elapsed="0.000706"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:02.951410" 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-19T03:13:02.951640" 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-19T03:13:02.951075" elapsed="0.000626"/>
</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-19T03:13:02.957735" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:02.957266" elapsed="0.000626"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:02.957209" elapsed="0.000745"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:02.959736" 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-19T03:13:02.959995" 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-19T03:13:02.959006" elapsed="0.001106"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:02.961715" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:02.961164" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:02.963678" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:02.962876" elapsed="0.000902"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:02.966256" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:02.966341" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:02.965930" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:02.966602" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:02.968178" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:03.280891" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:02.967802" elapsed="0.313323"/>
</kw>
<msg time="2026-04-19T03:13:03.281272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:02.967407" elapsed="0.314011"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:02.965095" elapsed="0.316837"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:03.285012" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:03.308373" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:03.308870" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:03.309248" 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-19T03:13:03.284271" elapsed="0.025195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:03.311728" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:03.314843" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:03.313850" elapsed="0.001250"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:03.315934" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:03.315447" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:03.315324" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:03.317013" elapsed="0.000149"/>
</return>
<status status="PASS" start="2026-04-19T03:13:03.316572" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:03.316466" elapsed="0.000931"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:03.317571" elapsed="0.000080"/>
</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-19T03:13:03.323360" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:03.323902" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:03.324275" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:03.319945" elapsed="0.004539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:02.955818" elapsed="0.368892"/>
</kw>
<msg time="2026-04-19T03:13:03.325101" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:02.954736" elapsed="0.370425"/>
</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-19T03:13:02.953421" elapsed="0.371825"/>
</kw>
<msg time="2026-04-19T03:13:03.325287" 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-19T03:13:02.952115" elapsed="0.373219"/>
</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-19T03:13:03.328357" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:13:03.328832" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:03.329143" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:03.325629" elapsed="0.003666"/>
</kw>
<msg time="2026-04-19T03:13:03.329385" level="INFO">${output} = 1</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-19T03:13:02.949985" elapsed="0.379425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:03.329835" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:03.329588" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:03.329922" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:03.330171" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:02.947689" elapsed="0.382508"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:03.330245" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:13:03.330392" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:02.945332" elapsed="0.385086"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:03.330998" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:03.330573" elapsed="0.000515">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:02.944264" elapsed="0.386939">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:05.334774" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:05.334010" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:05.336875" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:05.336271" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:05.338674" 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-19T03:13:05.338817" 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-19T03:13:05.338441" elapsed="0.000412"/>
</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-19T03:13:05.344452" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:05.343793" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:05.343714" elapsed="0.000930"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:05.347010" 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-19T03:13:05.347391" 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-19T03:13:05.346058" elapsed="0.001471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:05.349895" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:05.348901" elapsed="0.001170"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:05.352184" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:05.351466" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:05.354691" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:05.354769" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:05.354403" 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-19T03:13:05.355005" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:05.356276" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:05.677882" 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 Sun Apr 19 03:12:05 UTC 2026

  System load:  0.07               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:05.355936" elapsed="0.322075"/>
</kw>
<msg time="2026-04-19T03:13:05.678106" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:05.355576" elapsed="0.322614"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:05.353619" elapsed="0.324854"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:05.679961" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:05.703076" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:05.703587" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:05.703917" 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-19T03:13:05.679582" elapsed="0.024590"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:05.706452" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:05.709742" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:05.708619" elapsed="0.001356"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:05.710877" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:05.710376" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:05.710246" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:05.712023" elapsed="0.000346"/>
</return>
<status status="PASS" start="2026-04-19T03:13:05.711569" elapsed="0.000913"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:05.711462" elapsed="0.001149"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:05.712787" elapsed="0.000084"/>
</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-19T03:13:05.720799" 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-19T03:13:05.721379" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:05.721768" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:05.715910" elapsed="0.006068"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:05.341663" elapsed="0.380556"/>
</kw>
<msg time="2026-04-19T03:13:05.722534" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:05.340693" elapsed="0.381901"/>
</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-19T03:13:05.339810" elapsed="0.382868"/>
</kw>
<msg time="2026-04-19T03:13:05.722719" 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-19T03:13:05.339093" elapsed="0.383672"/>
</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-19T03:13:05.725992" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:05.726488" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:05.726782" 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-19T03:13:05.723139" elapsed="0.003790"/>
</kw>
<msg time="2026-04-19T03:13:05.727020" level="INFO">${output} = 1</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-19T03:13:05.337446" elapsed="0.389615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:05.727491" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:05.727243" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:05.727578" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:05.727731" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:05.335333" elapsed="0.392422"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:05.727803" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:13:05.727949" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:05.333177" elapsed="0.394796"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:05.728547" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:05.728151" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:05.332081" elapsed="0.396652">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:07.732289" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:07.731529" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:07.734470" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:07.733802" elapsed="0.000732"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:07.736483" 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-19T03:13:07.736782" 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-19T03:13:07.736137" elapsed="0.000710"/>
</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-19T03:13:07.743552" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:07.743077" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:07.742763" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:07.745165" 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-19T03:13:07.745411" 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-19T03:13:07.744705" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:07.747148" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:07.746545" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:07.748961" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:07.748240" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:07.751378" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:07.751455" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:07.751098" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:07.751695" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:07.753225" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:08.338887" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:07.752709" elapsed="0.586334"/>
</kw>
<msg time="2026-04-19T03:13:08.339128" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:07.752334" elapsed="0.586880"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:07.750330" elapsed="0.589169"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:08.340990" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:08.363668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:08.364287" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:08.364635" 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-19T03:13:08.340597" elapsed="0.024246"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:08.367021" elapsed="0.000864"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:08.370160" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:08.369198" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:08.371302" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:08.370737" elapsed="0.000742"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:08.370615" elapsed="0.000989"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:08.372468" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:13:08.371939" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:08.371827" elapsed="0.000996"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:08.373003" elapsed="0.000235"/>
</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-19T03:13:08.379886" elapsed="0.000381"/>
</kw>
<kw name="Open 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-19T03:13:08.380485" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:08.380853" 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-19T03:13:08.376221" elapsed="0.004860"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:07.741322" elapsed="0.639988"/>
</kw>
<msg time="2026-04-19T03:13:08.381618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:07.739634" elapsed="0.642042"/>
</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-19T03:13:07.738415" elapsed="0.643345"/>
</kw>
<msg time="2026-04-19T03:13:08.381802" 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-19T03:13:07.737237" elapsed="0.644612"/>
</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-19T03:13:08.384883" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:08.385387" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:08.385686" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:08.382161" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T03:13:08.385990" level="INFO">${output} = 1</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-19T03:13:07.735081" elapsed="0.650936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:08.386475" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:08.386218" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:08.386566" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:13:08.386720" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:07.732853" elapsed="0.653895"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:08.386796" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:13:08.386945" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:07.730683" elapsed="0.656288"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:08.387655" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:08.387216" elapsed="0.000516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:07.729604" elapsed="0.658240">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:10.391310" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:10.390529" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:10.393418" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:10.392787" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:10.395467" 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-19T03:13:10.395661" 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-19T03:13:10.395089" elapsed="0.000608"/>
</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-19T03:13:10.401254" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:10.400597" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:10.400224" elapsed="0.001221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:10.403906" 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-19T03:13:10.404276" 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-19T03:13:10.403256" elapsed="0.001157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:10.406686" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:10.405916" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:10.408760" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:10.408066" elapsed="0.000791"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:10.411208" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:10.411301" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:10.410910" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:10.411539" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:10.412869" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:10.737495" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:10.412540" elapsed="0.325260"/>
</kw>
<msg time="2026-04-19T03:13:10.737894" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:10.412157" elapsed="0.325840"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:10.410153" elapsed="0.328177"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:10.739883" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:10.762633" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:10.763309" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:10.763675" 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-19T03:13:10.739484" elapsed="0.024425"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:10.766419" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:10.769998" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:10.768915" elapsed="0.001372"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:10.771292" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:10.770672" elapsed="0.000803"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:10.770542" elapsed="0.001065"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:10.772549" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:13:10.771945" elapsed="0.000832"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:10.771836" elapsed="0.001068"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:10.773111" elapsed="0.000085"/>
</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-19T03:13:10.782823" elapsed="0.000543"/>
</kw>
<kw name="Open 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-19T03:13:10.783686" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:10.784272" 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-19T03:13:10.776587" elapsed="0.007995"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:10.398359" elapsed="0.386549"/>
</kw>
<msg time="2026-04-19T03:13:10.785393" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:10.397409" elapsed="0.388075"/>
</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-19T03:13:10.396652" elapsed="0.388951"/>
</kw>
<msg time="2026-04-19T03:13:10.785668" 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-19T03:13:10.395921" elapsed="0.389838"/>
</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-19T03:13:10.790260" 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-19T03:13:10.790963" elapsed="0.000264"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:10.791449" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:10.786230" elapsed="0.005432"/>
</kw>
<msg time="2026-04-19T03:13:10.791758" level="INFO">${output} = 1</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-19T03:13:10.393957" elapsed="0.397825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:10.792313" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:10.791979" elapsed="0.000386"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:10.792409" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:13:10.792562" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:10.391840" elapsed="0.400747"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:10.792633" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:10.792778" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:10.389691" elapsed="0.403111"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:10.793442" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:10.793023" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:10.388654" elapsed="0.404984">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:12.795979" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:12.795499" elapsed="0.000526"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:12.797312" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:12.796910" elapsed="0.000440"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:12.798489" 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-19T03:13:12.798634" 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-19T03:13:12.798263" elapsed="0.000408"/>
</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-19T03:13:12.805547" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:12.805054" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:12.803096" elapsed="0.002592"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:12.807155" 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-19T03:13:12.807402" 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-19T03:13:12.806695" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:12.809048" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:12.808490" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:12.810909" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:12.810218" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:12.813304" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:12.813383" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:12.812991" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:12.813621" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:12.815063" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:13.129000" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:12.814726" elapsed="0.314543"/>
</kw>
<msg time="2026-04-19T03:13:13.129419" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:12.814363" elapsed="0.315206"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:12.812208" elapsed="0.317975"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:13.133302" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:13.156240" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:13.156472" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:13.156621" 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-19T03:13:13.132510" elapsed="0.024208"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:13.157713" elapsed="0.000417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:13.159241" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:13.158716" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:13.159790" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:13.159508" elapsed="0.000362"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:13.159451" elapsed="0.000475"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:13.160295" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:13:13.160091" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:13.160025" elapsed="0.000431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:13.160536" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:13.165261" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:13.165811" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:13.166280" 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-19T03:13:13.161850" elapsed="0.004640"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:12.801373" elapsed="0.365338"/>
</kw>
<msg time="2026-04-19T03:13:13.167222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:12.800403" elapsed="0.366931"/>
</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-19T03:13:12.799636" elapsed="0.367794"/>
</kw>
<msg time="2026-04-19T03:13:13.167473" 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-19T03:13:12.798892" elapsed="0.368630"/>
</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-19T03:13:13.170808" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T03:13:13.171365" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:13.171669" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:13.167857" elapsed="0.003972"/>
</kw>
<msg time="2026-04-19T03:13:13.171921" level="INFO">${output} = 1</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-19T03:13:12.797653" elapsed="0.374292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:13.172401" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:13.172145" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:13.172489" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:13:13.172643" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:12.796336" elapsed="0.376333"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:13.172715" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:13.172860" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:12.794952" elapsed="0.377933"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:13.173460" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:13.173045" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:12.794268" elapsed="0.379377">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:15.177296" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:15.176531" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:15.179565" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:15.178929" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:15.181446" 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-19T03:13:15.181674" 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-19T03:13:15.181116" elapsed="0.000618"/>
</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-19T03:13:15.187374" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:15.186891" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:15.186831" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:15.189224" 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-19T03:13:15.189474" 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-19T03:13:15.188521" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:15.191499" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:15.190717" elapsed="0.000891"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:15.193332" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:15.192618" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:15.195849" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:15.195928" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:15.195567" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:15.196181" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:15.197462" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:15.560970" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:15.197132" elapsed="0.364000"/>
</kw>
<msg time="2026-04-19T03:13:15.561220" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:15.196753" elapsed="0.364560"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:15.194660" elapsed="0.366938"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:15.563136" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:15.586205" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:15.586795" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:15.587210" 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-19T03:13:15.562718" elapsed="0.024746"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:15.589870" elapsed="0.001007"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:15.592319" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:15.591673" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:15.593182" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:15.592688" elapsed="0.000606"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:15.592608" elapsed="0.000765"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:15.593861" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:13:15.593573" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:15.593506" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:15.594243" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:15.600437" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:13:15.600989" elapsed="0.000295"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:15.601483" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:15.596159" elapsed="0.005534"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:15.185393" elapsed="0.416526"/>
</kw>
<msg time="2026-04-19T03:13:15.602243" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:15.184617" elapsed="0.417685"/>
</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-19T03:13:15.183318" elapsed="0.419066"/>
</kw>
<msg time="2026-04-19T03:13:15.602426" 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-19T03:13:15.182132" elapsed="0.420341"/>
</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-19T03:13:15.605503" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:13:15.605979" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:15.606291" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:15.602784" elapsed="0.003653"/>
</kw>
<msg time="2026-04-19T03:13:15.606529" level="INFO">${output} = 1</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-19T03:13:15.180146" elapsed="0.426408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:15.607009" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:15.606759" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:15.607115" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:15.607266" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:15.177984" elapsed="0.429307"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:15.607338" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:15.607483" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:15.175665" elapsed="0.431842"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:15.608080" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:15.607662" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:15.174608" elapsed="0.433663">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:17.612144" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:17.611321" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:17.614484" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:17.613784" elapsed="0.000765"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:17.616524" 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-19T03:13:17.616908" 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-19T03:13:17.616176" elapsed="0.000798"/>
</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-19T03:13:17.624740" elapsed="0.000095"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:17.624106" elapsed="0.000796"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:17.624004" elapsed="0.000978"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:17.626921" 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-19T03:13:17.627180" 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-19T03:13:17.626240" elapsed="0.001039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:17.628852" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:17.628292" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:17.630659" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:17.629947" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:17.633062" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:17.633144" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:17.632759" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:17.633381" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:17.634671" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:17.939619" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:17.634347" elapsed="0.305384"/>
</kw>
<msg time="2026-04-19T03:13:17.939804" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:17.633966" elapsed="0.305924"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:17.631948" elapsed="0.308221"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:17.941590" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:17.964584" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:17.965125" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:17.965484" 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-19T03:13:17.941224" elapsed="0.024479"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:17.967921" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:17.970639" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:17.970016" elapsed="0.000768"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:17.971354" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:17.971014" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:17.970934" elapsed="0.000605"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:17.972025" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-19T03:13:17.971743" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:17.971676" elapsed="0.000597"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:17.972382" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:17.978797" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T03:13:17.979412" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:17.979775" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:17.974325" elapsed="0.005662"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:17.621982" elapsed="0.358248"/>
</kw>
<msg time="2026-04-19T03:13:17.980541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:17.620366" elapsed="0.360233"/>
</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-19T03:13:17.618988" elapsed="0.361695"/>
</kw>
<msg time="2026-04-19T03:13:17.980727" 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-19T03:13:17.617497" elapsed="0.363278"/>
</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-19T03:13:17.983908" 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-19T03:13:17.984441" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:17.984741" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:17.981092" elapsed="0.003806"/>
</kw>
<msg time="2026-04-19T03:13:17.984990" level="INFO">${output} = 1</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-19T03:13:17.615124" elapsed="0.369893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:17.985471" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:17.985219" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:17.985559" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:13:17.985745" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:17.612711" elapsed="0.373065"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:17.985823" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:13:17.985972" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:17.610339" elapsed="0.375659"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:17.986582" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:17.986186" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:17.609134" elapsed="0.377634">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:19.988618" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:19.988254" elapsed="0.000399"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:19.989692" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:19.989415" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:19.990559" 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-19T03:13:19.990661" 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-19T03:13:19.990381" elapsed="0.000307"/>
</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-19T03:13:19.994523" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:19.994056" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:19.993980" elapsed="0.000826"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:19.996521" 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-19T03:13:19.996770" 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-19T03:13:19.995811" elapsed="0.001061"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:19.998475" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:19.997896" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:20.000264" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:19.999554" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:20.002630" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:20.002711" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:20.002348" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:20.002968" elapsed="0.000376"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:20.004272" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:20.306749" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:20.003927" elapsed="0.302959"/>
</kw>
<msg time="2026-04-19T03:13:20.306965" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:20.003567" elapsed="0.303510"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:20.001569" elapsed="0.305787"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:20.308855" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:20.321157" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:20.321657" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:20.321994" 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-19T03:13:20.308464" elapsed="0.013788"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:20.324458" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:20.327575" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:20.326571" elapsed="0.001305"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:20.328802" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:20.328302" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:20.328177" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:20.329456" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:13:20.329247" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:20.329200" elapsed="0.000413"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:20.329694" 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-19T03:13:20.334394" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:13:20.334948" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:20.335407" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:20.331004" elapsed="0.004609"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:19.992635" elapsed="0.343232"/>
</kw>
<msg time="2026-04-19T03:13:20.336256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:19.991913" elapsed="0.344402"/>
</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-19T03:13:19.991379" elapsed="0.345019"/>
</kw>
<msg time="2026-04-19T03:13:20.336439" 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-19T03:13:19.990847" elapsed="0.345638"/>
</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-19T03:13:20.339550" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:13:20.340062" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:20.340363" 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-19T03:13:20.336780" elapsed="0.003730"/>
</kw>
<msg time="2026-04-19T03:13:20.340600" level="INFO">${output} = 1</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-19T03:13:19.989941" elapsed="0.350684"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:20.341071" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:20.340802" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:20.341159" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:20.341312" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:19.988864" elapsed="0.352473"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:20.341384" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:13:20.341528" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:19.987852" elapsed="0.353701"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:20.342119" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:20.341708" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:19.987306" elapsed="0.355000">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:22.345982" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:22.345175" elapsed="0.000880"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:22.347496" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:22.347112" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:22.348665" 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-19T03:13:22.348808" 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-19T03:13:22.348430" elapsed="0.000414"/>
</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-19T03:13:22.354403" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:22.353824" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:22.353385" elapsed="0.001157"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:22.355957" 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-19T03:13:22.356218" 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-19T03:13:22.355522" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:22.357847" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:22.357296" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:22.359711" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:22.358995" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:22.362141" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:22.362219" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:22.361839" 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-19T03:13:22.362451" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:22.363697" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:22.672705" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:22.363373" elapsed="0.309486"/>
</kw>
<msg time="2026-04-19T03:13:22.672946" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:22.362999" elapsed="0.310056"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:22.360994" elapsed="0.312337"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:22.674809" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:22.697965" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:22.698573" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:22.698908" 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-19T03:13:22.674412" elapsed="0.024751"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:22.701686" elapsed="0.000987"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:22.704994" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:22.703987" elapsed="0.001285"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:22.706147" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:22.705616" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:22.705496" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:22.707360" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:13:22.706762" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:22.706654" elapsed="0.001061"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:22.707986" elapsed="0.000087"/>
</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-19T03:13:22.712959" 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-19T03:13:22.713558" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:22.713924" 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-19T03:13:22.709414" elapsed="0.004745"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:22.351542" elapsed="0.362843"/>
</kw>
<msg time="2026-04-19T03:13:22.714696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:22.350589" elapsed="0.364172"/>
</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-19T03:13:22.349824" elapsed="0.365019"/>
</kw>
<msg time="2026-04-19T03:13:22.714884" 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-19T03:13:22.349086" elapsed="0.365843"/>
</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-19T03:13:22.718283" 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-19T03:13:22.718782" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:22.719110" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:22.715417" elapsed="0.003844"/>
</kw>
<msg time="2026-04-19T03:13:22.719356" level="INFO">${output} = 1</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-19T03:13:22.347833" elapsed="0.371548"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:22.719872" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:22.719592" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:22.719969" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:13:22.720223" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:22.346518" elapsed="0.373731"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:22.720297" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:22.720443" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:22.344319" elapsed="0.376148"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:22.721026" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:22.720628" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:22.343230" elapsed="0.378001">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:24.723216" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:24.722759" elapsed="0.000525"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:24.725294" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:24.724671" elapsed="0.000681"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:24.727143" 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-19T03:13:24.727603" 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-19T03:13:24.726788" elapsed="0.000881"/>
</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-19T03:13:24.732721" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:24.732248" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:24.731928" elapsed="0.000936"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:24.734494" 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-19T03:13:24.734819" 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-19T03:13:24.733919" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:24.736562" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:24.735965" elapsed="0.000718"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:24.738627" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:24.737707" elapsed="0.001039"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:24.741285" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:24.741364" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:24.740962" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:24.741605" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:24.743251" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:25.101655" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:24.742847" elapsed="0.358953"/>
</kw>
<msg time="2026-04-19T03:13:25.101886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:24.742390" elapsed="0.359584"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:24.739970" elapsed="0.362303"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:25.103807" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:25.126339" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:25.126836" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:25.127233" 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-19T03:13:25.103403" elapsed="0.024063"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:25.129641" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:25.132579" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:25.131822" elapsed="0.000898"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:25.133295" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:25.132946" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:25.132867" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:25.133957" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T03:13:25.133678" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:25.133612" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:25.134305" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:25.140790" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:13:25.141355" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:25.141713" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:25.136236" elapsed="0.005698"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:24.730621" elapsed="0.411557"/>
</kw>
<msg time="2026-04-19T03:13:25.142487" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:24.729819" elapsed="0.412725"/>
</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-19T03:13:24.728967" elapsed="0.413659"/>
</kw>
<msg time="2026-04-19T03:13:25.142667" 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-19T03:13:24.728020" elapsed="0.414692"/>
</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-19T03:13:25.145801" 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-19T03:13:25.146293" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:25.146587" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:25.143006" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T03:13:25.146890" level="INFO">${output} = 1</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-19T03:13:24.725854" elapsed="0.421063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:25.147365" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:25.147111" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:25.147452" elapsed="0.000055"/>
</return>
<msg time="2026-04-19T03:13:25.147636" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:24.723731" elapsed="0.423930"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:25.147709" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:25.147853" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:24.722350" elapsed="0.425527"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:25.148459" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:25.148061" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:24.721803" elapsed="0.426843">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:27.152243" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:27.151477" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:27.154525" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:27.153753" elapsed="0.000835"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:27.156442" 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-19T03:13:27.156667" 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-19T03:13:27.156113" elapsed="0.000613"/>
</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-19T03:13:27.163917" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:27.163433" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:27.161454" elapsed="0.002621"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:27.165505" 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-19T03:13:27.165746" 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-19T03:13:27.165060" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:27.167392" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:27.166838" elapsed="0.000800"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:27.169518" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:27.168754" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:27.171853" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:27.171930" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:27.171570" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:27.172181" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:27.173558" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:27.487068" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:27.173232" elapsed="0.314148"/>
</kw>
<msg time="2026-04-19T03:13:27.487512" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:27.172734" elapsed="0.314913"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:27.170801" elapsed="0.317376"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:27.491169" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:27.514483" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:27.514995" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:27.515404" 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-19T03:13:27.490410" elapsed="0.025212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:27.517857" elapsed="0.000902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:27.520747" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:27.520131" elapsed="0.000763"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:27.521443" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:27.521131" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:27.521054" elapsed="0.000572"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:27.522143" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T03:13:27.521827" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:27.521759" elapsed="0.000619"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:27.522490" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:27.528990" 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-19T03:13:27.529569" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:27.529920" 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-19T03:13:27.524452" elapsed="0.005692"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:27.160110" elapsed="0.370257"/>
</kw>
<msg time="2026-04-19T03:13:27.530672" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:27.159402" elapsed="0.371327"/>
</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-19T03:13:27.158266" elapsed="0.372545"/>
</kw>
<msg time="2026-04-19T03:13:27.530851" 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-19T03:13:27.157106" elapsed="0.373790"/>
</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-19T03:13:27.534051" 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-19T03:13:27.534528" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:27.534824" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:27.531348" elapsed="0.003623"/>
</kw>
<msg time="2026-04-19T03:13:27.535093" level="INFO">${output} = 1</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-19T03:13:27.155133" elapsed="0.379987"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:27.535583" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:27.535304" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:27.535671" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:13:27.535820" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:27.152768" elapsed="0.383077"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:27.535892" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:13:27.536049" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:27.150634" elapsed="0.385441"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:27.536674" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:27.536279" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:27.149525" elapsed="0.387332">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:29.540453" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:29.539622" elapsed="0.000903"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:29.542602" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:29.541912" elapsed="0.000752"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:29.544542" 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-19T03:13:29.544770" 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-19T03:13:29.544186" elapsed="0.000642"/>
</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-19T03:13:29.550259" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:29.549603" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:29.549522" elapsed="0.000927"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:29.552850" 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-19T03:13:29.553238" 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-19T03:13:29.551804" elapsed="0.001574"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:29.554894" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:29.554352" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:29.556717" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:29.555973" elapsed="0.000842"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:29.559512" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:29.559589" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:29.559217" 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-19T03:13:29.559823" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:29.561299" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:29.925996" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:29.560785" elapsed="0.365403"/>
</kw>
<msg time="2026-04-19T03:13:29.926286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:29.560425" elapsed="0.365959"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:29.558257" elapsed="0.368427"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:29.928224" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:29.951202" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:29.951704" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:29.952076" 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-19T03:13:29.927801" elapsed="0.024492"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:29.954571" elapsed="0.000971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:29.957839" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:29.956805" elapsed="0.001299"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:29.958965" elapsed="0.000093"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:29.958463" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:29.958336" elapsed="0.000959"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:29.960091" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:13:29.959615" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:29.959509" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:29.960624" elapsed="0.000085"/>
</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-19T03:13:29.965917" 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-19T03:13:29.966489" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:29.966850" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:29.962428" elapsed="0.004649"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:29.547680" elapsed="0.419624"/>
</kw>
<msg time="2026-04-19T03:13:29.967618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:29.546720" elapsed="0.420956"/>
</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-19T03:13:29.545940" elapsed="0.421822"/>
</kw>
<msg time="2026-04-19T03:13:29.967803" 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-19T03:13:29.545211" elapsed="0.422638"/>
</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-19T03:13:29.971019" 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-19T03:13:29.971520" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:29.971812" 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-19T03:13:29.968155" elapsed="0.003803"/>
</kw>
<msg time="2026-04-19T03:13:29.972066" level="INFO">${output} = 1</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-19T03:13:29.543198" elapsed="0.428895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:29.972521" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:29.972273" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:29.972607" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:29.972761" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:29.540978" elapsed="0.431808"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:29.972833" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:13:29.972992" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:29.538772" elapsed="0.434244"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:29.973668" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:29.973265" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:29.537681" elapsed="0.436180">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:31.977482" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:31.976709" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:31.979825" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:31.979177" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:31.981630" 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-19T03:13:31.981781" 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-19T03:13:31.981401" elapsed="0.000418"/>
</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-19T03:13:31.987306" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:31.986647" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:31.986569" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:31.989752" 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-19T03:13:31.990002" 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-19T03:13:31.988899" elapsed="0.001242"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:31.991675" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:31.991131" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:31.993565" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:31.992842" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:31.995951" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:31.996217" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:31.995665" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:31.996461" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:31.997722" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:32.312514" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:31.997397" elapsed="0.315316"/>
</kw>
<msg time="2026-04-19T03:13:32.312816" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:31.997018" elapsed="0.315899"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:31.994881" elapsed="0.318352"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:32.314970" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:32.337718" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:32.337949" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:32.338123" 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-19T03:13:32.314385" elapsed="0.023836"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:32.339232" elapsed="0.000424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:32.340713" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:32.340250" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:32.341320" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:32.340985" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:32.340927" 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-19T03:13:32.341813" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:13:32.341605" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:32.341556" elapsed="0.000421"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:32.342078" 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-19T03:13:32.346840" 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-19T03:13:32.347399" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:32.347759" 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-19T03:13:32.343430" elapsed="0.004537"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:31.984532" elapsed="0.363772"/>
</kw>
<msg time="2026-04-19T03:13:32.348630" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:31.983551" elapsed="0.365141"/>
</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-19T03:13:31.982783" elapsed="0.365998"/>
</kw>
<msg time="2026-04-19T03:13:32.348823" 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-19T03:13:31.982065" elapsed="0.366806"/>
</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-19T03:13:32.351844" elapsed="0.000419"/>
</kw>
<kw name="Open 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-19T03:13:32.352435" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:32.352750" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:32.349180" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T03:13:32.352990" level="INFO">${output} = 1</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-19T03:13:31.980460" elapsed="0.372556"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:32.353512" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:32.353262" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:32.353598" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:32.353753" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:31.978214" elapsed="0.375564"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:32.353825" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:32.353971" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:31.975823" elapsed="0.378172"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:32.354563" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:32.354168" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:31.974726" elapsed="0.380026">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:34.358268" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:34.357508" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:34.360461" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:34.359818" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:34.362359" 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-19T03:13:34.362812" 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-19T03:13:34.361994" elapsed="0.000883"/>
</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-19T03:13:34.368572" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:34.367908" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:34.367829" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:34.371170" 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-19T03:13:34.371541" 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-19T03:13:34.370156" elapsed="0.001504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:34.373206" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:34.372645" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:34.375158" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:34.374377" elapsed="0.000879"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:34.377501" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:34.377579" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:34.377219" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:34.377811" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:34.379280" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:34.706664" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:34.378770" elapsed="0.328048"/>
</kw>
<msg time="2026-04-19T03:13:34.706920" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:34.378380" elapsed="0.328645"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:34.376449" elapsed="0.330894"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:34.708831" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:34.731695" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:34.732244" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:34.732579" 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-19T03:13:34.708439" elapsed="0.024352"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:34.735096" elapsed="0.000912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:34.738296" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:34.737314" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:34.739484" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:34.738878" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:34.738756" elapsed="0.000888"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:34.739994" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T03:13:34.739790" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:34.739741" elapsed="0.000431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:34.740253" 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-19T03:13:34.745169" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:34.745787" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:34.746161" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:34.741774" elapsed="0.004597"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:34.365839" elapsed="0.380756"/>
</kw>
<msg time="2026-04-19T03:13:34.746902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:34.364855" elapsed="0.382116"/>
</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-19T03:13:34.364100" elapsed="0.382974"/>
</kw>
<msg time="2026-04-19T03:13:34.747118" 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-19T03:13:34.363267" elapsed="0.383898"/>
</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-19T03:13:34.750203" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:13:34.750684" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:34.751025" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:34.747460" elapsed="0.003735"/>
</kw>
<msg time="2026-04-19T03:13:34.751288" level="INFO">${output} = 1</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-19T03:13:34.361076" elapsed="0.390238"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:34.751748" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:34.751497" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:34.751835" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:13:34.751989" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:34.358824" elapsed="0.393191"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:34.752079" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:34.752227" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:34.356673" elapsed="0.395579"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:34.752796" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:34.752407" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:34.355602" elapsed="0.397376">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:36.756404" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:36.755624" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:36.758555" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:36.757914" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:36.760465" 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-19T03:13:36.760627" 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-19T03:13:36.760075" elapsed="0.000593"/>
</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-19T03:13:36.766273" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:36.765610" elapsed="0.000857"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:36.765222" elapsed="0.001328"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:36.768597" 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-19T03:13:36.768841" 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-19T03:13:36.767906" elapsed="0.001035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:36.770450" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:36.769900" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:36.772310" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:36.771519" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:36.774644" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:36.774721" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:36.774362" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:36.774953" elapsed="0.000474"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:36.776390" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:37.089072" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:36.776014" elapsed="0.313282"/>
</kw>
<msg time="2026-04-19T03:13:37.089443" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:36.775656" elapsed="0.313920"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:36.773587" elapsed="0.316361"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:37.092094" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:37.115071" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:37.115575" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:37.115905" 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-19T03:13:37.091544" elapsed="0.024616"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:37.118417" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:37.121891" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:37.120877" elapsed="0.001272"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:37.123056" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:37.122522" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:37.122397" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:37.124271" elapsed="0.000167"/>
</return>
<status status="PASS" start="2026-04-19T03:13:37.123674" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:37.123570" elapsed="0.001104"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:37.124847" elapsed="0.000082"/>
</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-19T03:13:37.130058" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:37.130608" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:37.130965" elapsed="0.000120"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:37.126576" elapsed="0.004617"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:36.763381" elapsed="0.368036"/>
</kw>
<msg time="2026-04-19T03:13:37.131821" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:36.762412" elapsed="0.369468"/>
</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-19T03:13:36.761650" elapsed="0.370313"/>
</kw>
<msg time="2026-04-19T03:13:37.132005" 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-19T03:13:36.760908" elapsed="0.371205"/>
</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-19T03:13:37.135086" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:13:37.135566" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:37.135861" 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-19T03:13:37.132421" elapsed="0.003587"/>
</kw>
<msg time="2026-04-19T03:13:37.136207" level="INFO">${output} = 1</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-19T03:13:36.759129" elapsed="0.377104"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:37.136685" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:37.136438" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:37.136773" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:37.137026" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:36.756925" elapsed="0.380142"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:37.137116" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:13:37.137263" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:36.754786" elapsed="0.382502"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:37.137846" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:37.137445" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:36.753728" elapsed="0.384321">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:39.141504" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:39.140709" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:39.143593" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:39.142966" elapsed="0.000687"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:39.145475" 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-19T03:13:39.145707" 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-19T03:13:39.145116" elapsed="0.000651"/>
</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-19T03:13:39.154420" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:39.153737" elapsed="0.000793"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:39.153162" elapsed="0.001451"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:39.156584" 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-19T03:13:39.156918" 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-19T03:13:39.155959" elapsed="0.001150"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:39.158838" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:39.158300" elapsed="0.000646"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:39.160696" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:39.159984" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:39.163113" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:39.163192" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:39.162820" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:39.163428" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:39.164691" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:39.479353" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:39.164360" elapsed="0.315110"/>
</kw>
<msg time="2026-04-19T03:13:39.479544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:39.163981" elapsed="0.315644"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:39.161993" elapsed="0.317883"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:39.481327" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:39.504201" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:39.504691" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:39.505019" 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-19T03:13:39.480924" elapsed="0.024361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:39.507516" elapsed="0.000881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:39.510320" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:39.509652" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:39.511130" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:39.510706" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:39.510623" elapsed="0.000707"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:39.511837" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:13:39.511541" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:39.511470" elapsed="0.000619"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:39.512205" elapsed="0.000055"/>
</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-19T03:13:39.519348" 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-19T03:13:39.520168" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:39.520685" elapsed="0.000147"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:39.514194" elapsed="0.006797"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:39.150178" elapsed="0.371200"/>
</kw>
<msg time="2026-04-19T03:13:39.521744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:39.148633" elapsed="0.373168"/>
</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-19T03:13:39.147414" elapsed="0.374561"/>
</kw>
<msg time="2026-04-19T03:13:39.522017" 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-19T03:13:39.146236" elapsed="0.375856"/>
</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-19T03:13:39.525147" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:39.525629" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:39.525924" 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-19T03:13:39.522451" elapsed="0.003649"/>
</kw>
<msg time="2026-04-19T03:13:39.526193" level="INFO">${output} = 1</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-19T03:13:39.144160" elapsed="0.382059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:39.526647" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:39.526400" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:39.526734" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:39.526885" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:39.142026" elapsed="0.384884"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:39.526957" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:13:39.527183" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:39.139874" elapsed="0.387334"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:39.527757" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:39.527364" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:39.138818" elapsed="0.389118">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:41.531724" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:41.530788" elapsed="0.001009"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:41.533970" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:41.533323" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:41.536225" 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-19T03:13:41.536454" 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-19T03:13:41.535819" elapsed="0.000693"/>
</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-19T03:13:41.545410" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:41.544877" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:41.542663" elapsed="0.002890"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:41.547229" 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-19T03:13:41.547469" 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-19T03:13:41.546737" elapsed="0.000831"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:41.549082" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:41.548527" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:41.550882" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:41.550192" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:41.553335" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:41.553414" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:41.553006" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:41.553688" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:41.555573" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:41.866826" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:41.554831" elapsed="0.312151"/>
</kw>
<msg time="2026-04-19T03:13:41.867084" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:41.554394" elapsed="0.312781"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:41.552240" elapsed="0.315222"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:41.868953" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:41.891714" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:41.892249" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:41.892581" 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-19T03:13:41.868566" elapsed="0.024231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:41.894993" elapsed="0.000885"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:41.898135" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:41.897153" elapsed="0.001210"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:41.899249" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:41.898711" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:41.898589" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:41.900329" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:13:41.899850" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:41.899744" elapsed="0.000932"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:41.900856" elapsed="0.000080"/>
</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-19T03:13:41.907919" elapsed="0.000485"/>
</kw>
<kw name="Open 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-19T03:13:41.908700" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:41.909385" 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-19T03:13:41.903165" elapsed="0.006518"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:41.540817" elapsed="0.369188"/>
</kw>
<msg time="2026-04-19T03:13:41.910483" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:41.539341" elapsed="0.371223"/>
</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-19T03:13:41.538127" elapsed="0.372554"/>
</kw>
<msg time="2026-04-19T03:13:41.910741" 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-19T03:13:41.536870" elapsed="0.373937"/>
</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-19T03:13:41.914253" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:13:41.914735" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:41.915045" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:41.911346" elapsed="0.003849"/>
</kw>
<msg time="2026-04-19T03:13:41.915348" level="INFO">${output} = 1</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-19T03:13:41.534685" elapsed="0.380689"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:41.915803" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:41.915553" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:41.915890" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:41.916057" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:41.532311" elapsed="0.383773"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:41.916132" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:41.916278" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:41.529896" elapsed="0.386407"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:41.916856" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:41.916461" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:41.528716" elapsed="0.388372">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:43.920647" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:43.919859" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:43.922817" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:43.922213" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:43.924671" 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-19T03:13:43.924904" 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-19T03:13:43.924340" elapsed="0.000625"/>
</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-19T03:13:43.931560" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:43.931092" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:43.931019" elapsed="0.000711"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:43.933489" 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-19T03:13:43.933748" 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-19T03:13:43.932745" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:43.935558" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:43.934852" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:43.937381" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:43.936651" elapsed="0.000830"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:43.939788" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:43.939865" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:43.939505" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:43.940203" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:43.941552" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:44.264137" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:43.941223" elapsed="0.323166"/>
</kw>
<msg time="2026-04-19T03:13:44.264472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:43.940767" elapsed="0.323793"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:43.938738" elapsed="0.326099"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:44.266370" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:44.289374" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:44.289870" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:44.290252" 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-19T03:13:44.265963" elapsed="0.024499"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:44.292645" elapsed="0.001032"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:44.295165" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:44.294518" 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-19T03:13:44.295855" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:44.295530" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:44.295450" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:44.296543" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T03:13:44.296265" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:44.296197" elapsed="0.000566"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:44.296872" elapsed="0.000051"/>
</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-19T03:13:44.303944" 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-19T03:13:44.304729" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:44.305274" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:44.298852" elapsed="0.006715"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:43.929391" elapsed="0.376455"/>
</kw>
<msg time="2026-04-19T03:13:44.306236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:43.927778" elapsed="0.378518"/>
</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-19T03:13:43.926559" elapsed="0.379822"/>
</kw>
<msg time="2026-04-19T03:13:44.306422" 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-19T03:13:43.925375" elapsed="0.381094"/>
</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-19T03:13:44.309540" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:13:44.310015" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:44.310328" 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-19T03:13:44.306763" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T03:13:44.310567" level="INFO">${output} = 1</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-19T03:13:43.923397" elapsed="0.387196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:44.311023" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:44.310776" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:44.311136" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:44.311290" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:43.921246" elapsed="0.390070"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:44.311363" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:44.311510" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:43.919009" elapsed="0.392525"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:44.312154" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:44.311738" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:43.917916" elapsed="0.394423">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:46.316168" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:46.315307" elapsed="0.000936"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:46.318451" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:46.317770" elapsed="0.000744"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:46.320457" 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-19T03:13:46.320699" 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-19T03:13:46.320099" elapsed="0.000662"/>
</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-19T03:13:46.327994" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:46.327359" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:46.327275" elapsed="0.000896"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:46.330004" 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-19T03:13:46.330286" 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-19T03:13:46.329184" elapsed="0.001204"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:46.332001" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:46.331380" elapsed="0.000754"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:46.333855" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:46.333129" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:46.336442" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:46.336521" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:46.336131" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:46.336766" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:46.338387" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:46.694144" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:46.337750" elapsed="0.356537"/>
</kw>
<msg time="2026-04-19T03:13:46.694371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:46.337387" elapsed="0.357072"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:46.335292" elapsed="0.359448"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:46.696222" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:46.719071" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:46.719300" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:46.719447" 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-19T03:13:46.695814" elapsed="0.023729"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:46.720563" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:46.721999" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:46.721555" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:46.722532" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:46.722287" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:46.722227" 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-19T03:13:46.723042" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:13:46.722818" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:46.722768" elapsed="0.000439"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:46.723287" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:46.727956" elapsed="0.000471"/>
</kw>
<kw name="Open 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-19T03:13:46.728640" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:46.729002" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:46.724640" elapsed="0.004587"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:46.325304" elapsed="0.404149"/>
</kw>
<msg time="2026-04-19T03:13:46.729760" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:46.323808" elapsed="0.406008"/>
</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-19T03:13:46.322439" elapsed="0.407461"/>
</kw>
<msg time="2026-04-19T03:13:46.729943" 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-19T03:13:46.321170" elapsed="0.408820"/>
</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-19T03:13:46.733112" 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-19T03:13:46.733590" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:46.733883" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:46.730296" elapsed="0.003751"/>
</kw>
<msg time="2026-04-19T03:13:46.734141" level="INFO">${output} = 1</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-19T03:13:46.319059" elapsed="0.415108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:46.734599" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:46.734349" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:46.734688" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:46.734843" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:46.316731" elapsed="0.418138"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:46.734916" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:13:46.735080" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:46.314395" elapsed="0.420710"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:46.735653" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:46.735262" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:46.313258" elapsed="0.422573">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:48.740190" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:48.739398" elapsed="0.000912"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:48.741999" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:48.741581" elapsed="0.000477"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:48.743276" 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-19T03:13:48.743429" 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-19T03:13:48.743005" elapsed="0.000463"/>
</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-19T03:13:48.749122" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:48.748433" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:48.748349" elapsed="0.000989"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:48.751799" 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-19T03:13:48.752205" 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-19T03:13:48.750788" elapsed="0.001569"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:48.754126" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:48.753489" elapsed="0.000757"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:48.755898" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:48.755201" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:48.758422" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:48.758500" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:48.758002" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:48.758733" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:48.760129" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:49.076290" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:48.759711" elapsed="0.316741"/>
</kw>
<msg time="2026-04-19T03:13:49.076542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:48.759314" elapsed="0.317325"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:48.757213" elapsed="0.319740"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:49.078540" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:49.101390" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:49.101950" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:49.102355" 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-19T03:13:49.078120" elapsed="0.024453"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:49.104950" elapsed="0.000951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:49.108295" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:49.107270" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:49.109630" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:49.108912" elapsed="0.000899"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:49.108784" elapsed="0.001157"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:49.110794" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T03:13:49.110308" elapsed="0.000907"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:49.110192" elapsed="0.001195"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:49.111670" elapsed="0.000093"/>
</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-19T03:13:49.116996" elapsed="0.000401"/>
</kw>
<kw name="Open 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-19T03:13:49.117649" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:49.118049" elapsed="0.000240"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:49.113412" elapsed="0.004991"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:48.746357" elapsed="0.372307"/>
</kw>
<msg time="2026-04-19T03:13:49.118999" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:48.745334" elapsed="0.373794"/>
</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-19T03:13:48.744525" elapsed="0.374691"/>
</kw>
<msg time="2026-04-19T03:13:49.119258" 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-19T03:13:48.743714" elapsed="0.375591"/>
</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-19T03:13:49.122384" 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-19T03:13:49.122953" elapsed="0.000271"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:49.123378" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:49.119609" elapsed="0.003922"/>
</kw>
<msg time="2026-04-19T03:13:49.123626" level="INFO">${output} = 1</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-19T03:13:48.742394" elapsed="0.381259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:49.124112" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:49.123844" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:49.124201" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:13:49.124358" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:48.740944" elapsed="0.383439"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:49.124432" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:49.124579" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:48.738544" elapsed="0.386060"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:49.125181" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:49.124763" elapsed="0.000514">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:48.737423" elapsed="0.387971">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:51.129075" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:51.128290" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:51.131362" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:51.130713" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:51.133271" 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-19T03:13:51.133664" 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-19T03:13:51.132884" elapsed="0.000842"/>
</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-19T03:13:51.140220" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:51.139558" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:51.139148" elapsed="0.001268"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:51.142402" 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-19T03:13:51.142737" 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-19T03:13:51.141766" elapsed="0.001110"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:51.145121" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:51.144337" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:51.147841" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:51.146809" elapsed="0.001167"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:51.150413" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:51.150491" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:51.149946" elapsed="0.000569"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:51.150726" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:51.151994" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:51.469356" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:51.151670" elapsed="0.317846"/>
</kw>
<msg time="2026-04-19T03:13:51.469603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:51.151307" elapsed="0.318387"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:51.149189" elapsed="0.320792"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:51.471650" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:51.494739" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:51.495340" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:51.495671" 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-19T03:13:51.471092" elapsed="0.024809"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:51.498216" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:51.501468" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:51.500454" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:51.502829" elapsed="0.000085"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:51.502193" elapsed="0.000894"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:51.501981" elapsed="0.001284"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:51.504789" elapsed="0.000166"/>
</return>
<status status="PASS" start="2026-04-19T03:13:51.503693" elapsed="0.001329"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:51.503550" elapsed="0.001580"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:51.505249" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:51.510399" 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-19T03:13:51.511047" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:51.511419" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:51.506891" elapsed="0.004742"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:51.137321" elapsed="0.374559"/>
</kw>
<msg time="2026-04-19T03:13:51.512213" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:51.136350" elapsed="0.375929"/>
</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-19T03:13:51.135300" elapsed="0.377064"/>
</kw>
<msg time="2026-04-19T03:13:51.512407" 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-19T03:13:51.134119" elapsed="0.378335"/>
</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-19T03:13:51.515515" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:13:51.516042" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:51.516342" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:51.512750" elapsed="0.003742"/>
</kw>
<msg time="2026-04-19T03:13:51.516584" level="INFO">${output} = 1</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-19T03:13:51.131934" elapsed="0.384676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:51.517077" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:51.516811" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:51.517167" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:13:51.517324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:51.129644" elapsed="0.387705"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:51.517397" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:51.517542" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:51.127397" elapsed="0.390170"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:51.518136" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:51.517725" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:51.126233" elapsed="0.392085">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:53.521912" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:53.521182" elapsed="0.000799"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:53.524024" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:53.523421" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:53.525891" 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-19T03:13:53.526147" 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-19T03:13:53.525553" elapsed="0.000656"/>
</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-19T03:13:53.532194" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:53.531530" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:53.531140" elapsed="0.001343"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:53.534527" 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-19T03:13:53.534868" 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-19T03:13:53.533870" elapsed="0.001143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:53.537220" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:53.536437" elapsed="0.000938"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:53.539621" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:53.538813" elapsed="0.000907"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:53.542177" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:53.542259" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:53.541760" elapsed="0.000536"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:53.542510" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:53.543761" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:53.861308" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:53.543439" elapsed="0.318026"/>
</kw>
<msg time="2026-04-19T03:13:53.861552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:53.543080" elapsed="0.318564"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:53.540953" elapsed="0.320975"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:53.863419" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:53.886142" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:53.886702" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:53.887073" 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-19T03:13:53.863007" elapsed="0.024286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:53.889567" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:53.892519" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:53.891789" elapsed="0.000871"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:53.893239" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:53.892888" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:53.892806" 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-19T03:13:53.893908" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:13:53.893629" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:53.893561" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:53.894264" elapsed="0.000051"/>
</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-19T03:13:53.900882" 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-19T03:13:53.901669" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:53.902191" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:53.896205" elapsed="0.006281"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:53.529288" elapsed="0.373509"/>
</kw>
<msg time="2026-04-19T03:13:53.903502" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:53.528309" elapsed="0.375277"/>
</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-19T03:13:53.527507" elapsed="0.376208"/>
</kw>
<msg time="2026-04-19T03:13:53.903773" 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-19T03:13:53.526611" elapsed="0.377227"/>
</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-19T03:13:53.906877" 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-19T03:13:53.907435" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:53.907740" 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-19T03:13:53.904229" elapsed="0.003659"/>
</kw>
<msg time="2026-04-19T03:13:53.907979" level="INFO">${output} = 1</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-19T03:13:53.524601" elapsed="0.383403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:53.908446" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:53.908199" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:53.908532" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:53.908683" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:53.522484" elapsed="0.386223"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:53.908754" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:53.908900" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:53.520331" elapsed="0.388595"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:53.909495" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:53.909098" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:53.519227" elapsed="0.390458">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:55.913227" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:55.912461" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:55.915344" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:55.914693" elapsed="0.000710"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:55.917225" 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-19T03:13:55.917455" 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-19T03:13:55.916853" elapsed="0.000660"/>
</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-19T03:13:55.924221" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:55.923719" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:55.921656" elapsed="0.002707"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:55.925781" 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-19T03:13:55.926019" 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-19T03:13:55.925343" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:55.927773" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:55.927183" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:55.929678" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:55.928947" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:55.932150" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:55.932229" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:55.931840" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:55.932464" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:55.933716" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:56.241008" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:55.933394" elapsed="0.307771"/>
</kw>
<msg time="2026-04-19T03:13:56.241247" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:55.933019" elapsed="0.308327"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:55.931074" elapsed="0.310584"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:56.243150" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:56.266082" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:56.266589" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:56.266921" 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-19T03:13:56.242747" elapsed="0.024425"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:56.269474" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:56.272585" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:56.271617" elapsed="0.001195"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:56.273755" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:56.273253" elapsed="0.000666"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:56.273129" elapsed="0.000944"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:56.274853" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:13:56.274407" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:56.274298" elapsed="0.001053"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:56.275525" 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-19T03:13:56.285813" 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-19T03:13:56.286387" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:56.286744" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:56.278473" elapsed="0.008482"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:55.920353" elapsed="0.366935"/>
</kw>
<msg time="2026-04-19T03:13:56.287597" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:55.919662" elapsed="0.367992"/>
</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-19T03:13:55.919118" elapsed="0.368618"/>
</kw>
<msg time="2026-04-19T03:13:56.287777" 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-19T03:13:55.917863" elapsed="0.369961"/>
</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-19T03:13:56.290876" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:13:56.291380" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:56.291675" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:56.288197" elapsed="0.003626"/>
</kw>
<msg time="2026-04-19T03:13:56.291914" level="INFO">${output} = 1</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-19T03:13:55.915880" elapsed="0.376060"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:56.292430" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:56.292179" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:56.292517" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:56.292668" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:55.913752" elapsed="0.378941"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:56.292752" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:13:56.292909" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:55.911611" elapsed="0.381323"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:56.293497" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:56.293107" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:55.910523" elapsed="0.383158">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:13:58.297231" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:13:58.296470" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:13:58.299359" level="INFO">${member_ip} = 10.30.171.206</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-19T03:13:58.298699" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:58.301220" 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-19T03:13:58.301449" 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-19T03:13:58.300865" elapsed="0.000643"/>
</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-19T03:13:58.306827" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:13:58.306359" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:58.306304" elapsed="0.000664"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:58.308675" 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-19T03:13:58.308924" 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-19T03:13:58.307978" elapsed="0.001046"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:58.310577" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:58.310012" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:13:58.312404" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:13:58.311690" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:13:58.314856" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:13:58.314933" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:13:58.314574" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:58.315216" elapsed="0.000403"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:13:58.316553" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:13:58.631077" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:13:58.316226" elapsed="0.315004"/>
</kw>
<msg time="2026-04-19T03:13:58.631316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:58.315844" elapsed="0.315562"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:13:58.313716" elapsed="0.317977"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:13:58.633206" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:13:58.656215" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:13:58.656714" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:13:58.657091" 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-19T03:13:58.632795" elapsed="0.024514"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:58.659550" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:58.662763" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:58.661704" elapsed="0.001293"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:58.663882" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:13:58.663385" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:58.663262" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:13:58.665164" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:13:58.664680" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T03:13:58.664572" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:13:58.665696" elapsed="0.000130"/>
</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-19T03:13:58.672618" 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-19T03:13:58.673396" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:58.673904" elapsed="0.000217"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:58.667855" elapsed="0.006419"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:13:58.304957" elapsed="0.369630"/>
</kw>
<msg time="2026-04-19T03:13:58.675015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:13:58.304270" elapsed="0.370843"/>
</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-19T03:13:58.303027" elapsed="0.372202"/>
</kw>
<msg time="2026-04-19T03:13:58.675294" 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-19T03:13:58.301859" elapsed="0.373499"/>
</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-19T03:13:58.679330" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:13:58.679809" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:13:58.680120" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:13:58.675765" elapsed="0.004511"/>
</kw>
<msg time="2026-04-19T03:13:58.680431" level="INFO">${output} = 1</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-19T03:13:58.299907" elapsed="0.380551"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:13:58.680891" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:13:58.680640" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:13:58.680980" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:13:58.681152" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:13:58.297756" elapsed="0.383422"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:13:58.681228" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:13:58.681374" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:13:58.295628" elapsed="0.385771"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:13:58.681961" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:13:58.681557" elapsed="0.000530">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:13:58.294535" elapsed="0.387668">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:00.685818" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:00.685023" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:00.687780" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:00.687392" elapsed="0.000426"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:00.688955" 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-19T03:14:00.689117" 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-19T03:14:00.688725" elapsed="0.000431"/>
</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-19T03:14:00.694567" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:00.693846" elapsed="0.000833"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:00.693719" elapsed="0.001043"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:00.697137" 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-19T03:14:00.697485" 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-19T03:14:00.696166" elapsed="0.001488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:00.699754" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:00.699140" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:00.701537" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:00.700830" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:00.703972" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:00.704065" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:00.703685" 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-19T03:14:00.704304" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:00.705598" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:01.024125" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:13:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:00.705225" elapsed="0.319111"/>
</kw>
<msg time="2026-04-19T03:14:01.024416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:00.704851" elapsed="0.319650"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:00.702839" elapsed="0.321916"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:01.026226" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:01.049170" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:01.049707" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:01.050085" 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-19T03:14:01.025831" elapsed="0.024475"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:01.052550" elapsed="0.000917"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:01.055726" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:01.054722" elapsed="0.001235"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:01.056981" elapsed="0.000098"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:01.056449" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:01.056321" elapsed="0.001053"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:01.058198" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T03:14:01.057706" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:01.057597" elapsed="0.000856"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:01.058534" 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-19T03:14:01.063416" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:14:01.063981" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:01.064436" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:01.059899" elapsed="0.004748"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:00.691846" elapsed="0.373025"/>
</kw>
<msg time="2026-04-19T03:14:01.065201" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:00.690883" elapsed="0.374381"/>
</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-19T03:14:00.690120" elapsed="0.375351"/>
</kw>
<msg time="2026-04-19T03:14:01.065513" 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-19T03:14:00.689379" elapsed="0.376183"/>
</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-19T03:14:01.068712" 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-19T03:14:01.069216" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:01.069558" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:01.065860" elapsed="0.003853"/>
</kw>
<msg time="2026-04-19T03:14:01.069807" level="INFO">${output} = 1</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-19T03:14:00.688141" elapsed="0.381692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:01.070297" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:01.070025" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:01.070388" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:01.070546" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:00.686453" elapsed="0.384118"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:01.070619" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:01.070768" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:00.684194" elapsed="0.386600"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:01.071460" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:01.071014" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:00.683019" elapsed="0.388637">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:03.075412" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:03.074594" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:03.077533" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:03.076902" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:03.079352" 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-19T03:14:03.079574" 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-19T03:14:03.079002" elapsed="0.000636"/>
</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-19T03:14:03.084124" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:03.083588" elapsed="0.000622"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:03.083530" elapsed="0.000739"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:03.085975" 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-19T03:14:03.086242" 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-19T03:14:03.085252" elapsed="0.001089"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:03.087891" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:03.087310" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:03.089747" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:03.089042" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:03.092299" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:03.092379" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:03.091858" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:03.092619" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:03.093914" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:03.411921" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:03.093584" elapsed="0.318550"/>
</kw>
<msg time="2026-04-19T03:14:03.412225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:03.093219" elapsed="0.319128"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:03.091053" elapsed="0.321589"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:03.414265" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:03.437468" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:03.437966" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:03.438345" 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-19T03:14:03.413815" elapsed="0.024737"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:03.440918" elapsed="0.001161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:03.444709" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:03.443674" elapsed="0.001271"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:03.445899" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:03.445340" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:03.445213" elapsed="0.001027"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:03.447343" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T03:14:03.446568" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:03.446458" elapsed="0.001177"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:03.447755" elapsed="0.000060"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:03.455602" elapsed="0.000412"/>
</kw>
<kw name="Open 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-19T03:14:03.456390" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:03.456808" 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-19T03:14:03.450022" elapsed="0.007021"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:03.082101" elapsed="0.375180"/>
</kw>
<msg time="2026-04-19T03:14:03.457605" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:03.081358" elapsed="0.376324"/>
</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-19T03:14:03.080778" elapsed="0.376991"/>
</kw>
<msg time="2026-04-19T03:14:03.457811" 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-19T03:14:03.080120" elapsed="0.377740"/>
</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-19T03:14:03.460961" 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-19T03:14:03.461477" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:03.461794" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:03.458202" elapsed="0.003748"/>
</kw>
<msg time="2026-04-19T03:14:03.462063" level="INFO">${output} = 1</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-19T03:14:03.078095" elapsed="0.383996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:03.462565" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:03.462305" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:03.462659" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:14:03.462825" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:03.075967" elapsed="0.386884"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:03.462954" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:14:03.463122" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:03.073759" elapsed="0.389389"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:03.463708" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:03.463306" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:03.072537" elapsed="0.391361">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:05.467439" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:05.466617" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:05.469712" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:05.469099" elapsed="0.000674"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:05.471608" 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-19T03:14:05.471836" 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-19T03:14:05.471281" elapsed="0.000616"/>
</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-19T03:14:05.481594" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:05.480831" elapsed="0.000881"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:05.480324" elapsed="0.001470"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:05.483851" 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-19T03:14:05.484114" 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-19T03:14:05.483306" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:05.485802" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:05.485238" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:05.487710" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:05.486927" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:05.490118" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:05.490197" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:05.489812" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:05.490428" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:05.491764" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:05.800677" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:05.491392" elapsed="0.309368"/>
</kw>
<msg time="2026-04-19T03:14:05.800853" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:05.491009" elapsed="0.309919"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:05.489063" elapsed="0.312145"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:05.802610" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:05.825563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:05.826115" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:05.826453" 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-19T03:14:05.802279" elapsed="0.024384"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:05.828872" elapsed="0.000881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:05.831950" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:05.830999" elapsed="0.001215"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:05.833192" elapsed="0.000072"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:05.832550" elapsed="0.000818"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:05.832432" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:05.834353" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T03:14:05.833818" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:05.833705" elapsed="0.000868"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:05.834653" 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-19T03:14:05.839319" 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-19T03:14:05.839856" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:05.840217" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:05.836009" elapsed="0.004414"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:05.476245" elapsed="0.364397"/>
</kw>
<msg time="2026-04-19T03:14:05.840967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:05.474709" elapsed="0.366314"/>
</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-19T03:14:05.473451" elapsed="0.367670"/>
</kw>
<msg time="2026-04-19T03:14:05.841161" 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-19T03:14:05.472283" elapsed="0.368924"/>
</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-19T03:14:05.844213" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:14:05.844685" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:05.844975" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:05.841496" elapsed="0.003652"/>
</kw>
<msg time="2026-04-19T03:14:05.845239" level="INFO">${output} = 1</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-19T03:14:05.470301" elapsed="0.374963"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:05.845691" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:05.845440" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:05.845826" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:14:05.846002" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:05.468144" elapsed="0.377896"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:05.846093" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:05.846238" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:05.465763" elapsed="0.380500"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:05.846807" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:05.846418" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:05.464713" elapsed="0.382287">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:07.850667" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:07.849868" elapsed="0.000871"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:07.852773" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:07.852165" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:07.854878" 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-19T03:14:07.855576" 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-19T03:14:07.854456" elapsed="0.001149"/>
</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-19T03:14:07.859883" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:07.859393" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:07.859104" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:07.861509" 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-19T03:14:07.861801" 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-19T03:14:07.861023" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:07.863582" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:07.862978" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:07.865469" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:07.864724" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:07.868089" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:07.868170" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:07.867787" 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-19T03:14:07.868414" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:07.869686" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:08.174413" 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 Sun Apr 19 03:13:07 UTC 2026

  System load:  0.13               Processes:             127
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:07.869359" elapsed="0.305212"/>
</kw>
<msg time="2026-04-19T03:14:08.174659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:07.868974" elapsed="0.305778"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:07.866911" elapsed="0.308153"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:08.176560" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:08.199291" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:08.199829" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:08.200243" 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-19T03:14:08.176167" elapsed="0.024308"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:08.202884" elapsed="0.000607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:08.204908" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:08.204300" elapsed="0.000795"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:08.205783" elapsed="0.000048"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:08.205340" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:08.205243" elapsed="0.000739"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:08.206547" elapsed="0.000081"/>
</return>
<status status="PASS" start="2026-04-19T03:14:08.206250" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:08.206174" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:08.206956" elapsed="0.000059"/>
</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-19T03:14:08.213696" elapsed="0.000534"/>
</kw>
<kw name="Open 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-19T03:14:08.214594" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:08.214961" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:08.208855" elapsed="0.006344"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:07.857732" elapsed="0.357701"/>
</kw>
<msg time="2026-04-19T03:14:08.215750" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:07.857010" elapsed="0.358803"/>
</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-19T03:14:07.856315" elapsed="0.359585"/>
</kw>
<msg time="2026-04-19T03:14:08.215945" 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-19T03:14:07.855772" elapsed="0.360223"/>
</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-19T03:14:08.219120" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:14:08.219608" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:08.219909" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:08.216309" elapsed="0.003769"/>
</kw>
<msg time="2026-04-19T03:14:08.220171" level="INFO">${output} = 1</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-19T03:14:07.853340" elapsed="0.366856"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:08.220634" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:08.220380" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:08.220722" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:08.220877" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:07.851231" elapsed="0.369671"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:08.220950" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:14:08.221130" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:07.849022" elapsed="0.372134"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:08.221738" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:08.221315" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:07.847936" elapsed="0.374011">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:10.225669" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:10.224847" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:10.227801" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:10.227222" elapsed="0.000618"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:10.228999" 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-19T03:14:10.229169" 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-19T03:14:10.228776" elapsed="0.000431"/>
</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-19T03:14:10.237431" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:10.236707" elapsed="0.000924"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:10.234059" elapsed="0.003659"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:10.239771" 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-19T03:14:10.240044" 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-19T03:14:10.239153" elapsed="0.000997"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:10.241780" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:10.241224" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:10.243677" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:10.242888" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:10.246337" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:10.246419" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:10.246019" 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-19T03:14:10.246684" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:10.248067" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:10.872837" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:10.247703" elapsed="0.625286"/>
</kw>
<msg time="2026-04-19T03:14:10.873090" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:10.247291" elapsed="0.625892"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:10.245202" elapsed="0.628260"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:10.874987" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:10.897537" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:10.898094" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:10.898435" 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-19T03:14:10.874562" elapsed="0.024113"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:10.900907" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:10.904112" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:10.903136" elapsed="0.001204"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:10.905225" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:10.904692" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:10.904564" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:10.906313" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:14:10.905833" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:10.905730" elapsed="0.000985"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:10.906892" elapsed="0.000082"/>
</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-19T03:14:10.958703" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:10.959378" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:10.959762" 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-19T03:14:10.908671" elapsed="0.051307"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:10.232115" elapsed="0.728113"/>
</kw>
<msg time="2026-04-19T03:14:10.960620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:10.230979" elapsed="0.729709"/>
</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-19T03:14:10.230210" elapsed="0.730560"/>
</kw>
<msg time="2026-04-19T03:14:10.960811" 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-19T03:14:10.229435" elapsed="0.731421"/>
</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-19T03:14:10.963932" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:14:10.964423" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:10.964714" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:10.961204" elapsed="0.003656"/>
</kw>
<msg time="2026-04-19T03:14:10.964950" level="INFO">${output} = 1</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-19T03:14:10.228173" elapsed="0.736802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:10.965434" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:10.965180" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:10.965525" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:14:10.965684" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:10.226241" elapsed="0.739468"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:10.965754" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:10.965895" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:10.223939" elapsed="0.741981"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:10.966609" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:10.966186" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:10.222775" elapsed="0.744054">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:12.968663" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:12.968283" elapsed="0.000415"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:12.969610" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:12.969334" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:12.970474" 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-19T03:14:12.970580" 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-19T03:14:12.970306" elapsed="0.000300"/>
</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-19T03:14:12.974668" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:12.974196" elapsed="0.000552"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:12.974139" elapsed="0.000671"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:12.977877" 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-19T03:14:12.978456" 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-19T03:14:12.976827" elapsed="0.001853"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:12.982537" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:12.981299" elapsed="0.001490"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:12.986254" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:12.985192" elapsed="0.001210"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:12.990626" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:12.990815" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:12.989987" elapsed="0.000886"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:12.991366" elapsed="0.000803"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:12.993502" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:13.306683" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:12.993137" elapsed="0.313702"/>
</kw>
<msg time="2026-04-19T03:14:13.306922" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:12.992699" elapsed="0.314315"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:12.988258" elapsed="0.319058"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:13.308801" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:13.330871" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:13.331138" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:13.331291" 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-19T03:14:13.308416" elapsed="0.022973"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:13.332411" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:13.333869" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:13.333427" elapsed="0.000548"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:13.334398" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:13.334159" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:13.334097" elapsed="0.000436"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:13.334889" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:14:13.334685" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:13.334634" elapsed="0.000434"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:13.335151" 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-19T03:14:13.339912" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T03:14:13.340499" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:13.340859" 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-19T03:14:13.336504" elapsed="0.004658"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:12.972792" elapsed="0.368597"/>
</kw>
<msg time="2026-04-19T03:14:13.341696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:12.971837" elapsed="0.369918"/>
</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-19T03:14:12.971300" elapsed="0.370538"/>
</kw>
<msg time="2026-04-19T03:14:13.341879" 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-19T03:14:12.970764" elapsed="0.371161"/>
</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-19T03:14:13.344983" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:13.345591" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:13.345893" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:13.342311" elapsed="0.003749"/>
</kw>
<msg time="2026-04-19T03:14:13.346154" level="INFO">${output} = 1</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-19T03:14:12.969871" elapsed="0.376308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:13.346611" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:13.346361" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:13.346700" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:13.346855" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:12.968909" elapsed="0.377971"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:13.346928" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:13.347091" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:12.967883" elapsed="0.379234"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:13.347665" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:13.347275" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:12.967354" elapsed="0.380492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:15.351317" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:15.350556" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:15.353386" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:15.352763" elapsed="0.000683"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:15.355127" 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-19T03:14:15.355279" 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-19T03:14:15.354870" elapsed="0.000454"/>
</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-19T03:14:15.361348" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:15.360682" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:15.360603" elapsed="0.000942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:15.363594" 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-19T03:14:15.363929" 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-19T03:14:15.362947" elapsed="0.001160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:15.366296" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:15.365452" elapsed="0.000999"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:15.368274" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:15.367562" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:15.370639" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:15.370716" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:15.370348" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:15.370956" elapsed="0.000556"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:15.372436" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:15.739444" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:15.372113" elapsed="0.367474"/>
</kw>
<msg time="2026-04-19T03:14:15.739673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:15.371735" elapsed="0.368030"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:15.369552" elapsed="0.370509"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:15.741544" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:15.764272" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:15.764765" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:15.765144" 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-19T03:14:15.741152" elapsed="0.024207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:15.767559" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:15.770690" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:15.769669" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:15.771806" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:15.771308" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:15.771185" elapsed="0.000943"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:15.772889" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:14:15.772450" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:15.772345" elapsed="0.000926"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:15.773446" 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-19T03:14:15.778983" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T03:14:15.779539" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:15.779897" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:15.775583" elapsed="0.004537"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:15.358208" elapsed="0.422131"/>
</kw>
<msg time="2026-04-19T03:14:15.780641" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:15.357169" elapsed="0.423530"/>
</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-19T03:14:15.356358" elapsed="0.424424"/>
</kw>
<msg time="2026-04-19T03:14:15.780823" 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-19T03:14:15.355570" elapsed="0.425300"/>
</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-19T03:14:15.784020" 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-19T03:14:15.784513" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:15.784809" 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-19T03:14:15.781279" elapsed="0.003677"/>
</kw>
<msg time="2026-04-19T03:14:15.785124" level="INFO">${output} = 1</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-19T03:14:15.353920" elapsed="0.431231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:15.785586" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:15.785332" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:15.785673" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:14:15.785857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:15.351832" elapsed="0.434057"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:15.785940" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:15.786247" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:15.349664" elapsed="0.436613"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:15.786841" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:15.786435" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:15.348649" elapsed="0.438378">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:17.790579" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:17.789806" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:17.792714" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:17.792091" elapsed="0.000685"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:17.794911" 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-19T03:14:17.795315" 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-19T03:14:17.794488" elapsed="0.000909"/>
</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-19T03:14:17.800559" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:17.800054" elapsed="0.000588"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:17.799980" elapsed="0.000721"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:17.802171" 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-19T03:14:17.802417" 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-19T03:14:17.801710" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:17.804111" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:17.803507" elapsed="0.000728"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:17.805922" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:17.805217" elapsed="0.000804"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:17.808413" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:17.808492" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:17.808026" elapsed="0.000491"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:17.808732" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:17.810002" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:18.126980" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:17.809670" elapsed="0.317582"/>
</kw>
<msg time="2026-04-19T03:14:18.127340" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:17.809306" elapsed="0.318124"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:17.807257" elapsed="0.320456"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:18.129242" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:18.152211" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:18.152726" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:18.153104" 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-19T03:14:18.128836" elapsed="0.024482"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:18.155552" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:18.158770" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:18.157762" elapsed="0.001237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:18.160082" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:18.159483" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:18.159357" elapsed="0.001033"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:18.160998" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:14:18.160709" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:18.160603" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:18.161253" 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-19T03:14:18.167521" elapsed="0.000498"/>
</kw>
<kw name="Open 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-19T03:14:18.168352" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:18.168873" 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-19T03:14:18.162573" elapsed="0.006625"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:17.798351" elapsed="0.371157"/>
</kw>
<msg time="2026-04-19T03:14:18.169934" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:17.797630" elapsed="0.372388"/>
</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-19T03:14:17.797076" elapsed="0.373096"/>
</kw>
<msg time="2026-04-19T03:14:18.170234" 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-19T03:14:17.795766" elapsed="0.374537"/>
</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-19T03:14:18.175134" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:18.175842" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:18.176271" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:18.170736" elapsed="0.005691"/>
</kw>
<msg time="2026-04-19T03:14:18.176521" level="INFO">${output} = 1</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-19T03:14:17.793289" elapsed="0.383258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:18.176993" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:18.176739" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:18.177100" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:14:18.177257" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:17.791145" elapsed="0.386138"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:18.177330" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:18.177479" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:17.788951" elapsed="0.388553"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:18.178147" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:18.177722" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:17.787845" elapsed="0.390491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:20.182164" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:20.181349" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:20.184531" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:20.183787" elapsed="0.000809"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:20.185849" 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-19T03:14:20.185993" 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-19T03:14:20.185631" elapsed="0.000422"/>
</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-19T03:14:20.191690" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:20.191048" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:20.190951" elapsed="0.000936"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:20.193911" 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-19T03:14:20.194291" 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-19T03:14:20.193298" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:20.196667" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:20.195854" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:20.198577" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:20.197851" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:20.201111" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:20.201188" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:20.200811" 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-19T03:14:20.201423" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:20.202691" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:20.517270" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:20.202369" elapsed="0.315028"/>
</kw>
<msg time="2026-04-19T03:14:20.517472" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:20.201978" elapsed="0.315574"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:20.200014" elapsed="0.317805"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:20.519292" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:20.541666" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:20.542212" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:20.542556" 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-19T03:14:20.518895" elapsed="0.023873"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:20.545022" elapsed="0.000877"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:20.548297" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:20.547207" elapsed="0.001323"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:20.549263" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:20.548878" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:20.548756" elapsed="0.000692"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:20.549927" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:14:20.549646" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:20.549579" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:20.550288" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:20.557061" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:14:20.557904" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:20.558431" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:20.552304" elapsed="0.006423"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:20.188749" elapsed="0.370276"/>
</kw>
<msg time="2026-04-19T03:14:20.559371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:20.187762" elapsed="0.371667"/>
</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-19T03:14:20.186993" elapsed="0.372519"/>
</kw>
<msg time="2026-04-19T03:14:20.559554" 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-19T03:14:20.186277" elapsed="0.373324"/>
</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-19T03:14:20.562664" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:14:20.563174" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:20.563481" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:20.559895" elapsed="0.003736"/>
</kw>
<msg time="2026-04-19T03:14:20.563725" level="INFO">${output} = 1</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-19T03:14:20.185052" elapsed="0.378699"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:20.564326" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:20.563932" elapsed="0.000440"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:20.564416" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:20.564574" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:20.182728" elapsed="0.381872"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:20.564648" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:20.564796" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:20.180442" elapsed="0.384379"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:20.565531" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:20.564978" elapsed="0.000624">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:20.179256" elapsed="0.386454">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:22.569346" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:22.568578" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:22.571626" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:22.570986" elapsed="0.000702"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:22.573425" 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-19T03:14:22.573569" 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-19T03:14:22.573202" elapsed="0.000405"/>
</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-19T03:14:22.579279" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:22.578608" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:22.578227" elapsed="0.001249"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:22.581581" 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-19T03:14:22.581917" 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-19T03:14:22.580931" elapsed="0.001148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:22.584304" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:22.583458" elapsed="0.000958"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:22.586203" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:22.585479" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:22.588618" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:22.588698" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:22.588319" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:22.588937" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:22.590354" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:22.903929" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:22.590014" elapsed="0.314067"/>
</kw>
<msg time="2026-04-19T03:14:22.904164" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:22.589655" elapsed="0.314597"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:22.587491" elapsed="0.317031"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:22.906004" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:22.929143" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:22.929791" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:22.930314" 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-19T03:14:22.905618" elapsed="0.024947"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:22.932966" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:22.936162" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:22.935163" elapsed="0.001238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:22.937413" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:22.936773" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:22.936650" elapsed="0.001071"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:22.938616" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T03:14:22.938152" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:22.937932" elapsed="0.001049"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:22.939200" elapsed="0.000085"/>
</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-19T03:14:22.947804" 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-19T03:14:22.948564" elapsed="0.000215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:22.949048" elapsed="0.000137"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:22.942699" elapsed="0.006615"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:22.576363" elapsed="0.373223"/>
</kw>
<msg time="2026-04-19T03:14:22.949964" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:22.575358" elapsed="0.374839"/>
</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-19T03:14:22.574582" elapsed="0.375724"/>
</kw>
<msg time="2026-04-19T03:14:22.950443" 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-19T03:14:22.573831" elapsed="0.376675"/>
</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-19T03:14:22.954471" 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-19T03:14:22.955218" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:22.955616" elapsed="0.000127"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:22.950905" elapsed="0.004940"/>
</kw>
<msg time="2026-04-19T03:14:22.955972" level="INFO">${output} = 1</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-19T03:14:22.572268" elapsed="0.383737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:22.956636" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:22.956311" elapsed="0.000384"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:22.956754" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:14:22.956953" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:22.570058" elapsed="0.386927"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:22.957065" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:14:22.957254" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:22.567619" elapsed="0.389667"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:22.957983" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:22.957492" elapsed="0.000621">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:22.566560" elapsed="0.391696">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:24.961788" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:24.961027" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:24.963908" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:24.963283" elapsed="0.000686"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:24.965921" 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-19T03:14:24.966315" 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-19T03:14:24.965591" elapsed="0.000786"/>
</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-19T03:14:24.973237" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:24.972569" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:24.972024" elapsed="0.001405"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:24.975426" 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-19T03:14:24.975780" 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-19T03:14:24.974779" elapsed="0.001138"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:24.979363" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:24.977973" elapsed="0.001672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:24.983429" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:24.981796" elapsed="0.001914"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:24.986310" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:24.986387" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:24.986004" 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-19T03:14:24.986622" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:24.987968" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:25.291750" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:24.987641" elapsed="0.304268"/>
</kw>
<msg time="2026-04-19T03:14:25.291997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:24.987264" elapsed="0.304849"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:24.985250" elapsed="0.307168"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:25.293937" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:25.306657" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:25.307251" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:25.307642" 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-19T03:14:25.293531" elapsed="0.014330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:25.310337" elapsed="0.000994"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:25.314131" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:25.312954" elapsed="0.001455"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:25.315383" elapsed="0.000084"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:25.314803" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:25.314674" elapsed="0.001119"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:25.316749" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T03:14:25.316362" elapsed="0.000494"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:25.316027" elapsed="0.000888"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:25.316995" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:25.323881" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T03:14:25.324603" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:25.324976" elapsed="0.000124"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:25.318374" 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-19T03:14:24.970190" elapsed="0.355252"/>
</kw>
<msg time="2026-04-19T03:14:25.325753" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:24.969232" elapsed="0.356583"/>
</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-19T03:14:24.968023" elapsed="0.357875"/>
</kw>
<msg time="2026-04-19T03:14:25.325939" 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-19T03:14:24.966734" elapsed="0.359250"/>
</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-19T03:14:25.329152" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:14:25.329646" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:25.329941" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:25.326300" elapsed="0.003810"/>
</kw>
<msg time="2026-04-19T03:14:25.330203" level="INFO">${output} = 1</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-19T03:14:24.964646" elapsed="0.365582"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:25.330669" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:25.330415" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:25.330757" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:14:25.330911" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:24.962342" elapsed="0.368595"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:25.330983" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:14:25.331146" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:24.960213" elapsed="0.370958"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:25.331742" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:25.331327" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:24.959140" elapsed="0.372790">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:27.335670" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:27.334782" elapsed="0.000961"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:27.337941" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:27.337242" elapsed="0.000769"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:27.340568" 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-19T03:14:27.340911" 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-19T03:14:27.340021" elapsed="0.000981"/>
</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-19T03:14:27.347363" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:27.346833" elapsed="0.000762"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:27.346773" elapsed="0.000887"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:27.349488" 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-19T03:14:27.349766" 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-19T03:14:27.348682" elapsed="0.001190"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:27.351563" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:27.350908" elapsed="0.000774"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:27.353758" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:27.352815" elapsed="0.001055"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:27.356727" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:27.356807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:27.356422" elapsed="0.000410"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:27.357062" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:27.358429" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:27.676700" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:27.358097" elapsed="0.318757"/>
</kw>
<msg time="2026-04-19T03:14:27.676941" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:27.357702" elapsed="0.319352"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:27.355454" elapsed="0.321907"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:27.678924" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:27.701833" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:27.702386" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:27.702710" 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-19T03:14:27.678507" elapsed="0.024412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:27.705190" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:27.708298" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:27.707389" elapsed="0.001053"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:27.708993" elapsed="0.000061"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:27.708664" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:27.708587" 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-19T03:14:27.709681" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:14:27.709401" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:27.709336" elapsed="0.000564"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:27.710009" elapsed="0.000074"/>
</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-19T03:14:27.716673" 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-19T03:14:27.717450" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:27.717947" elapsed="0.000166"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:27.711932" elapsed="0.006333"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:27.345340" elapsed="0.373245"/>
</kw>
<msg time="2026-04-19T03:14:27.719276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:27.344555" elapsed="0.374808"/>
</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-19T03:14:27.343440" elapsed="0.376043"/>
</kw>
<msg time="2026-04-19T03:14:27.719540" 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-19T03:14:27.341573" elapsed="0.378031"/>
</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-19T03:14:27.722739" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T03:14:27.723306" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:27.723603" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:27.720015" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T03:14:27.723845" level="INFO">${output} = 1</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-19T03:14:27.338614" elapsed="0.385257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:27.724442" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:27.724075" elapsed="0.000413"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:27.724532" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:27.724688" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:27.336252" elapsed="0.388462"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:27.724761" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:27.724908" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:27.333888" elapsed="0.391046"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:27.725505" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:27.725109" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:27.332780" elapsed="0.392913">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:29.728181" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:29.727679" elapsed="0.000550"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:29.729525" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:29.729134" elapsed="0.000429"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:29.730692" 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-19T03:14:29.730874" 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-19T03:14:29.730470" elapsed="0.000442"/>
</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-19T03:14:29.736344" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:29.735668" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:29.735593" elapsed="0.000946"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:29.738898" 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-19T03:14:29.739266" 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-19T03:14:29.737920" elapsed="0.001491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:29.741643" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:29.740848" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:29.743998" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:29.743291" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:29.746462" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:29.746743" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:29.746177" elapsed="0.000592"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:29.746985" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:29.748376" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:30.062944" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:29.747922" elapsed="0.315124"/>
</kw>
<msg time="2026-04-19T03:14:30.063111" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:29.747560" elapsed="0.315622"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:29.745392" elapsed="0.318014"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:30.064737" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:30.087901" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:30.088538" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:30.088872" 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-19T03:14:30.064407" elapsed="0.024717"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:30.091441" elapsed="0.001001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:30.094786" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:30.093697" elapsed="0.001319"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:30.095720" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:30.095364" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:30.095275" elapsed="0.000645"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:30.096463" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T03:14:30.096157" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:30.096084" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:30.096826" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:30.104193" 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-19T03:14:30.105007" elapsed="0.000268"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:30.105560" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:30.098928" elapsed="0.006935"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:29.733685" elapsed="0.372696"/>
</kw>
<msg time="2026-04-19T03:14:30.106859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:29.732643" elapsed="0.374309"/>
</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-19T03:14:29.731866" elapsed="0.375231"/>
</kw>
<msg time="2026-04-19T03:14:30.107160" 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-19T03:14:29.731154" elapsed="0.376075"/>
</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-19T03:14:30.110295" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:14:30.110791" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:30.111106" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:30.107602" elapsed="0.003655"/>
</kw>
<msg time="2026-04-19T03:14:30.111352" level="INFO">${output} = 1</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-19T03:14:29.729866" elapsed="0.381511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:30.111816" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:30.111566" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:30.111902" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:30.112073" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:29.728530" elapsed="0.383570"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:30.112148" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:30.112303" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:29.727153" elapsed="0.385175"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:30.112893" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:30.112486" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:29.726422" elapsed="0.386688">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:32.117019" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:32.116243" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:32.119199" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:32.118553" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:32.121087" 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-19T03:14:32.121320" 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-19T03:14:32.120716" elapsed="0.000662"/>
</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-19T03:14:32.126411" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:32.125881" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:32.125824" elapsed="0.000729"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:32.128283" 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-19T03:14:32.128535" 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-19T03:14:32.127553" elapsed="0.001084"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:32.130317" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:32.129632" elapsed="0.000811"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:32.132567" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:32.131540" elapsed="0.001167"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:32.136163" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:32.136276" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:32.135733" elapsed="0.000578"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:32.136615" elapsed="0.000603"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:32.138730" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:32.473114" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:32.138259" elapsed="0.335017"/>
</kw>
<msg time="2026-04-19T03:14:32.473366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:32.137542" elapsed="0.335944"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:32.134617" elapsed="0.339164"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:32.475340" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:32.498681" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:32.499272" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:32.499635" 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-19T03:14:32.474903" elapsed="0.024981"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:32.502585" elapsed="0.001333"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:32.506582" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:32.505425" elapsed="0.001459"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:32.507933" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:32.507306" elapsed="0.000873"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:32.507176" elapsed="0.001132"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:32.509334" elapsed="0.000128"/>
</return>
<status status="PASS" start="2026-04-19T03:14:32.508635" elapsed="0.000934"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:32.508526" elapsed="0.001173"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:32.509905" elapsed="0.000089"/>
</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-19T03:14:32.515907" elapsed="0.000423"/>
</kw>
<kw name="Open 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-19T03:14:32.516611" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:32.517153" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:32.512122" 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-19T03:14:32.124484" elapsed="0.393129"/>
</kw>
<msg time="2026-04-19T03:14:32.517929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:32.123771" elapsed="0.394220"/>
</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-19T03:14:32.123090" elapsed="0.395002"/>
</kw>
<msg time="2026-04-19T03:14:32.518167" 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-19T03:14:32.121730" elapsed="0.396486"/>
</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-19T03:14:32.522642" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:14:32.523339" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:32.523753" 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-19T03:14:32.518522" elapsed="0.005439"/>
</kw>
<msg time="2026-04-19T03:14:32.524231" level="INFO">${output} = 1</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-19T03:14:32.119763" elapsed="0.404506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:32.524880" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:32.524529" elapsed="0.000414"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:32.525003" elapsed="0.000124"/>
</return>
<msg time="2026-04-19T03:14:32.525308" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:32.117584" elapsed="0.407760"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:32.525414" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:14:32.525619" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:32.115386" elapsed="0.410266"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:32.526455" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:32.525873" elapsed="0.000693">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:32.114001" elapsed="0.412722">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:34.530926" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:34.530107" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:34.533204" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:34.532521" elapsed="0.000744"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:34.535168" 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-19T03:14:34.535398" 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-19T03:14:34.534803" elapsed="0.000655"/>
</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-19T03:14:34.541270" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:34.540518" elapsed="0.000832"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:34.540455" elapsed="0.000959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:34.542838" 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-19T03:14:34.543093" 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-19T03:14:34.542406" elapsed="0.000786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:34.544710" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:34.544167" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:34.546578" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:34.545862" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:34.548910" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:34.548988" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:34.548629" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:34.549312" elapsed="0.000354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:34.550592" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:34.880934" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:34.550263" elapsed="0.330961"/>
</kw>
<msg time="2026-04-19T03:14:34.881316" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:34.549887" elapsed="0.331522"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:34.547866" elapsed="0.333865"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:34.883243" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:34.906740" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:34.907394" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:34.907736" 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-19T03:14:34.882841" elapsed="0.025111"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:34.910366" elapsed="0.001107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:34.913764" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:34.912739" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:34.914850" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:34.914364" elapsed="0.000650"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:34.914243" elapsed="0.000925"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:34.915970" elapsed="0.000205"/>
</return>
<status status="PASS" start="2026-04-19T03:14:34.915530" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:34.915420" elapsed="0.000995"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:34.916590" elapsed="0.000081"/>
</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-19T03:14:34.924841" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T03:14:34.925502" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:34.925900" 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-19T03:14:34.919601" elapsed="0.006543"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:34.539147" elapsed="0.387221"/>
</kw>
<msg time="2026-04-19T03:14:34.926673" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:34.538399" elapsed="0.388337"/>
</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-19T03:14:34.537001" elapsed="0.389818"/>
</kw>
<msg time="2026-04-19T03:14:34.926861" 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-19T03:14:34.535815" elapsed="0.391093"/>
</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-19T03:14:34.929970" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:14:34.930471" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:34.930768" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:34.927214" elapsed="0.003703"/>
</kw>
<msg time="2026-04-19T03:14:34.931008" level="INFO">${output} = 1</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-19T03:14:34.533838" elapsed="0.397210"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:34.931482" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:34.931233" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:34.931571" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:14:34.931725" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:34.531494" elapsed="0.400256"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:34.931797" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:14:34.931941" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:34.529148" elapsed="0.402817"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:34.932613" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:34.932208" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:34.527641" elapsed="0.405167">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:36.936824" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:36.935735" elapsed="0.001251"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:36.938663" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:36.938278" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:36.939854" 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-19T03:14:36.939999" 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-19T03:14:36.939599" elapsed="0.000460"/>
</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-19T03:14:36.945770" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:36.945112" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:36.944665" elapsed="0.001300"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:36.947988" 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-19T03:14:36.948363" 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-19T03:14:36.947373" elapsed="0.001132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:36.950422" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:36.949862" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:36.952294" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:36.951522" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:36.954683" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:36.954759" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:36.954399" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:36.954994" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:36.956405" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:37.266869" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:36.955925" elapsed="0.311119"/>
</kw>
<msg time="2026-04-19T03:14:37.267133" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:36.955565" elapsed="0.311658"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:36.953616" elapsed="0.313901"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:37.269075" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:37.291898" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:37.292476" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:37.292863" 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-19T03:14:37.268623" elapsed="0.024512"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:37.295562" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:37.298938" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:37.297894" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:37.300164" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:37.299599" elapsed="0.000743"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:37.299467" elapsed="0.001027"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:37.301516" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:14:37.300907" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:37.300736" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:37.301760" 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-19T03:14:37.306719" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T03:14:37.307336" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:37.307696" 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-19T03:14:37.303291" elapsed="0.004612"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:36.942746" elapsed="0.365399"/>
</kw>
<msg time="2026-04-19T03:14:37.308457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:36.941789" elapsed="0.366729"/>
</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-19T03:14:36.941021" elapsed="0.367579"/>
</kw>
<msg time="2026-04-19T03:14:37.308642" 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-19T03:14:36.940284" elapsed="0.368404"/>
</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-19T03:14:37.311749" 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-19T03:14:37.312241" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:37.312539" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:37.308996" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T03:14:37.312780" level="INFO">${output} = 1</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-19T03:14:36.939003" elapsed="0.373825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:37.313285" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:37.313021" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:37.313378" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T03:14:37.313581" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:36.937638" elapsed="0.375969"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:37.313656" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:37.313802" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:36.934703" elapsed="0.379124"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:37.314413" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:37.313984" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:36.933660" elapsed="0.380940">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:39.317224" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:39.316696" elapsed="0.000575"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:39.318801" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:39.318392" elapsed="0.000450"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:39.320064" 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-19T03:14:39.320236" 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-19T03:14:39.319806" elapsed="0.000473"/>
</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-19T03:14:39.325821" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:39.325336" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:39.325045" elapsed="0.000917"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:39.327573" 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-19T03:14:39.327823" 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-19T03:14:39.327125" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:39.330982" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:39.330172" elapsed="0.000991"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:39.333676" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:39.332698" elapsed="0.001113"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:39.337202" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:39.337310" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:39.336789" 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-19T03:14:39.337639" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:39.339403" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:39.658108" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:39.338930" elapsed="0.319322"/>
</kw>
<msg time="2026-04-19T03:14:39.658334" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:39.338429" elapsed="0.319994"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:39.335485" elapsed="0.323215"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:39.660276" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:39.682990" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:39.683568" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:39.683921" 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-19T03:14:39.659827" elapsed="0.024381"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:39.686570" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:39.689938" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:39.688863" elapsed="0.001354"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:39.691249" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:39.690581" elapsed="0.000851"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:39.690454" elapsed="0.001112"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:39.692475" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T03:14:39.691907" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:39.691793" elapsed="0.000956"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:39.692861" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:39.701935" elapsed="0.000496"/>
</kw>
<kw name="Open 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-19T03:14:39.702732" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:39.703370" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:39.694788" elapsed="0.008883"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:39.323195" elapsed="0.380786"/>
</kw>
<msg time="2026-04-19T03:14:39.704465" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:39.322136" elapsed="0.382412"/>
</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-19T03:14:39.321307" elapsed="0.383342"/>
</kw>
<msg time="2026-04-19T03:14:39.704689" 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-19T03:14:39.320518" elapsed="0.384217"/>
</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-19T03:14:39.707741" 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-19T03:14:39.708292" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:39.708590" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:39.705042" elapsed="0.003697"/>
</kw>
<msg time="2026-04-19T03:14:39.708829" level="INFO">${output} = 1</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-19T03:14:39.319187" elapsed="0.389667"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:39.709306" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:39.709054" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:39.709393" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:39.709544" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:39.317749" elapsed="0.391820"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:39.709614" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:14:39.709755" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:39.316013" elapsed="0.393766"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:39.710349" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:39.709932" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:39.315308" elapsed="0.395224">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:41.712625" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:41.712244" elapsed="0.000416"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:41.713586" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:41.713310" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:41.714454" 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-19T03:14:41.714658" 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-19T03:14:41.714278" elapsed="0.000414"/>
</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-19T03:14:41.718553" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:41.718082" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:41.718009" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:41.720400" 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-19T03:14:41.720650" 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-19T03:14:41.719700" elapsed="0.001052"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:41.722324" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:41.721747" elapsed="0.000689"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:41.724419" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:41.723642" elapsed="0.000878"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:41.726959" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:41.727054" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:41.726664" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:41.727295" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:41.728587" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:42.033612" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:41.728261" elapsed="0.305592"/>
</kw>
<msg time="2026-04-19T03:14:42.034016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:41.727881" elapsed="0.306328"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:41.725786" elapsed="0.308976"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:42.037886" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:42.060926" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:42.061539" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:42.061878" 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-19T03:14:42.037106" elapsed="0.025025"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:42.064445" elapsed="0.000991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:42.067738" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:42.066712" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:42.068880" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:42.068358" elapsed="0.000723"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:42.068231" elapsed="0.000984"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:42.069998" elapsed="0.000271"/>
</return>
<status status="PASS" start="2026-04-19T03:14:42.069542" elapsed="0.000839"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:42.069431" elapsed="0.001082"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:42.070691" elapsed="0.000084"/>
</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-19T03:14:42.076217" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T03:14:42.076918" elapsed="0.000189"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:42.077302" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:42.072595" elapsed="0.004916"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:41.716668" elapsed="0.361096"/>
</kw>
<msg time="2026-04-19T03:14:42.078150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:41.715965" elapsed="0.362248"/>
</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-19T03:14:41.715395" elapsed="0.362903"/>
</kw>
<msg time="2026-04-19T03:14:42.078340" 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-19T03:14:41.714856" elapsed="0.363531"/>
</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-19T03:14:42.081410" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:14:42.081889" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:42.082292" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:42.078695" elapsed="0.003748"/>
</kw>
<msg time="2026-04-19T03:14:42.082534" level="INFO">${output} = 1</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-19T03:14:41.713840" elapsed="0.368719"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:42.082990" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:42.082743" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:42.083095" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:14:42.083250" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:41.712877" elapsed="0.370399"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:42.083323" elapsed="0.000049"/>
</return>
<msg time="2026-04-19T03:14:42.083496" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:41.711835" elapsed="0.371692"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:42.084096" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:42.083686" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:41.711081" elapsed="0.373199">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:44.088426" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:44.087642" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:44.090623" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:44.089963" elapsed="0.000739"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:44.092595" 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-19T03:14:44.092830" 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-19T03:14:44.092221" elapsed="0.000669"/>
</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-19T03:14:44.098411" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:44.097908" elapsed="0.000691"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:44.097845" elapsed="0.000826"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:44.100386" 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-19T03:14:44.100640" 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-19T03:14:44.099662" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:44.102319" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:44.101727" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:44.104209" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:44.103461" elapsed="0.000846"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:44.106715" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:44.106807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:44.106379" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:44.107065" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:44.108337" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:44.427228" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:44.107992" elapsed="0.319380"/>
</kw>
<msg time="2026-04-19T03:14:44.427457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:44.107628" elapsed="0.319921"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:44.105509" elapsed="0.322317"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:44.429337" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:44.452184" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:44.452691" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:44.453065" 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-19T03:14:44.428926" elapsed="0.024360"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:44.455651" elapsed="0.000954"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:44.459126" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:44.457919" elapsed="0.001461"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:44.460315" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:44.459752" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:44.459620" elapsed="0.001019"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:44.461494" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T03:14:44.460978" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:44.460867" elapsed="0.001005"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:44.462215" elapsed="0.000094"/>
</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-19T03:14:44.467576" 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-19T03:14:44.468170" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:44.468536" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:44.463938" elapsed="0.004815"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:44.096496" elapsed="0.372489"/>
</kw>
<msg time="2026-04-19T03:14:44.469394" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:44.095768" elapsed="0.373689"/>
</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-19T03:14:44.094493" elapsed="0.375054"/>
</kw>
<msg time="2026-04-19T03:14:44.469590" 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-19T03:14:44.093280" elapsed="0.376372"/>
</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-19T03:14:44.472763" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:14:44.473269" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:44.473572" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:44.469960" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T03:14:44.473818" level="INFO">${output} = 1</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-19T03:14:44.091232" elapsed="0.382612"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:44.474388" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:44.474129" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:44.474479" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:44.474706" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:44.088970" elapsed="0.385765"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:44.474787" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:14:44.474949" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:44.086738" elapsed="0.388237"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:44.475579" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:44.475159" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:44.085543" elapsed="0.390246">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:46.479353" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:46.478581" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:46.481462" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:46.480827" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:46.483444" 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-19T03:14:46.483712" 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-19T03:14:46.483080" elapsed="0.000731"/>
</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-19T03:14:46.489442" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:46.488958" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:46.488899" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:46.491414" 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-19T03:14:46.491676" 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-19T03:14:46.490651" elapsed="0.001132"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:46.493399" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:46.492801" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:46.495408" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:46.494660" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:46.497947" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:46.498042" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:46.497636" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:46.498287" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:46.499887" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:46.822101" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:46.499430" elapsed="0.322847"/>
</kw>
<msg time="2026-04-19T03:14:46.822367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:46.498891" elapsed="0.323574"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:46.496744" elapsed="0.326022"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:46.824543" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:46.848139" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:46.848529" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:46.848745" 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-19T03:14:46.823907" elapsed="0.024987"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:46.850901" elapsed="0.001065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:46.854537" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:46.853335" elapsed="0.001440"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:46.855415" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:46.855071" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:46.854962" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:46.856147" elapsed="0.000086"/>
</return>
<status status="PASS" start="2026-04-19T03:14:46.855829" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:46.855746" elapsed="0.000647"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:46.856509" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:46.863517" elapsed="0.000433"/>
</kw>
<kw name="Open 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-19T03:14:46.864185" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:46.864572" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:46.858584" elapsed="0.006214"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:46.487568" elapsed="0.377489"/>
</kw>
<msg time="2026-04-19T03:14:46.865383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:46.486847" elapsed="0.378600"/>
</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-19T03:14:46.485503" elapsed="0.380030"/>
</kw>
<msg time="2026-04-19T03:14:46.865575" 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-19T03:14:46.484243" elapsed="0.381380"/>
</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-19T03:14:46.868860" 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-19T03:14:46.869360" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:46.869661" elapsed="0.000147"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:46.866155" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T03:14:46.869991" level="INFO">${output} = 1</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-19T03:14:46.482073" elapsed="0.387950"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:46.870624" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:46.870312" elapsed="0.000366"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:46.870734" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:14:46.870923" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:46.479883" elapsed="0.391072"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:46.871015" elapsed="0.000062"/>
</return>
<msg time="2026-04-19T03:14:46.871228" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:46.477694" elapsed="0.393566"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:46.871958" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:46.871468" elapsed="0.000696">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:46.476648" elapsed="0.395667">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:48.875870" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:48.875131" elapsed="0.000810"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:48.878011" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:48.877454" elapsed="0.000613"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:48.879214" 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-19T03:14:48.879359" 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-19T03:14:48.878970" elapsed="0.000426"/>
</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-19T03:14:48.885116" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:48.884111" elapsed="0.001120"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:48.884006" elapsed="0.001308"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:48.887386" 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-19T03:14:48.887725" 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-19T03:14:48.886741" elapsed="0.001125"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:48.890011" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:48.889292" elapsed="0.000847"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:48.891876" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:48.891185" elapsed="0.000793"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:48.894280" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:48.894359" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:48.893981" 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-19T03:14:48.894597" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:48.896056" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:49.209349" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:48.895714" elapsed="0.313848"/>
</kw>
<msg time="2026-04-19T03:14:49.209666" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:48.895352" elapsed="0.314431"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:48.893215" elapsed="0.316921"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:49.211766" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:49.234523" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:49.235068" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:49.235414" 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-19T03:14:49.211307" elapsed="0.024320"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:49.237996" elapsed="0.000952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:49.241376" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:49.240300" elapsed="0.001313"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:49.242534" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:49.241981" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:49.241847" elapsed="0.000981"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:49.243645" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:14:49.243187" elapsed="0.000688"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:49.243072" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:49.244356" elapsed="0.000085"/>
</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-19T03:14:49.250323" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T03:14:49.250931" elapsed="0.000200"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:49.251327" 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-19T03:14:49.246666" elapsed="0.004874"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:48.882116" elapsed="0.369748"/>
</kw>
<msg time="2026-04-19T03:14:49.252269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:48.881144" elapsed="0.371194"/>
</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-19T03:14:48.880361" elapsed="0.372083"/>
</kw>
<msg time="2026-04-19T03:14:49.252488" 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-19T03:14:48.879620" elapsed="0.372918"/>
</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-19T03:14:49.255624" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:49.256228" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:49.256532" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:49.252842" elapsed="0.003838"/>
</kw>
<msg time="2026-04-19T03:14:49.256896" level="INFO">${output} = 1</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-19T03:14:48.878373" elapsed="0.378558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:49.257427" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:49.257164" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:49.257516" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:14:49.257681" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:48.876426" elapsed="0.381281"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:49.257758" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:49.257911" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:48.874290" elapsed="0.383649"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:49.258582" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:49.258147" elapsed="0.000533">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:48.873211" elapsed="0.385608">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:51.262409" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:51.261616" elapsed="0.000864"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:51.264675" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:51.263914" elapsed="0.000825"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:51.265979" 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-19T03:14:51.266147" 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-19T03:14:51.265755" elapsed="0.000431"/>
</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-19T03:14:51.273318" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:51.272445" elapsed="0.001022"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:51.271832" elapsed="0.001740"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:51.276279" 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-19T03:14:51.276776" 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-19T03:14:51.275341" elapsed="0.001626"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:51.278977" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:51.278263" elapsed="0.000869"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:51.281261" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:51.280361" elapsed="0.001021"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:51.284417" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:51.284516" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:51.284004" 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-19T03:14:51.284824" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:51.286621" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:51.600926" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:51.286212" elapsed="0.315167"/>
</kw>
<msg time="2026-04-19T03:14:51.601535" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:51.285586" elapsed="0.316122"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:51.283016" elapsed="0.319303"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:51.605356" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:51.628700" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:51.629268" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:51.629611" 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-19T03:14:51.604710" elapsed="0.025117"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:51.632317" elapsed="0.000834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:51.634617" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:51.633932" elapsed="0.000906"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:51.635462" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:51.635120" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:51.635014" elapsed="0.000640"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:51.636198" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T03:14:51.635873" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:51.635800" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:51.636542" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:51.643375" elapsed="0.000480"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:51.644223" elapsed="0.000235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:51.644737" elapsed="0.000149"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:51.638521" elapsed="0.006524"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:51.269302" elapsed="0.376068"/>
</kw>
<msg time="2026-04-19T03:14:51.645686" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:51.267973" elapsed="0.377774"/>
</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-19T03:14:51.267223" elapsed="0.378608"/>
</kw>
<msg time="2026-04-19T03:14:51.645874" 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-19T03:14:51.266412" elapsed="0.379508"/>
</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-19T03:14:51.649196" 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-19T03:14:51.649683" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:51.649982" 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-19T03:14:51.646336" elapsed="0.003836"/>
</kw>
<msg time="2026-04-19T03:14:51.650266" level="INFO">${output} = 1</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-19T03:14:51.265165" elapsed="0.385126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:51.650728" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:51.650473" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:51.650819" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:51.650975" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:51.262949" elapsed="0.388052"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:51.651066" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:14:51.651217" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:51.260741" elapsed="0.390502"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:51.651864" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:51.651458" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:51.259609" elapsed="0.392490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:53.655729" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:53.654906" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:53.657176" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:53.656772" elapsed="0.000442"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:53.658356" 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-19T03:14:53.658504" 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-19T03:14:53.658116" elapsed="0.000426"/>
</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-19T03:14:53.664563" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:53.663888" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:53.663507" elapsed="0.001256"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:53.666748" 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-19T03:14:53.667107" 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-19T03:14:53.666141" elapsed="0.001136"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:53.669184" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:53.668514" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:53.670940" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:53.670253" elapsed="0.000800"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:53.673355" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:53.673432" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:53.673002" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:53.673667" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:53.675061" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:53.996350" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:53.674709" elapsed="0.321766"/>
</kw>
<msg time="2026-04-19T03:14:53.996553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:53.674341" elapsed="0.322297"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:53.672249" elapsed="0.324643"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:53.998347" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:54.020870" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:54.021117" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:54.021266" 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-19T03:14:53.997955" elapsed="0.023405"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:54.022340" elapsed="0.000488"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:54.023859" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:54.023430" elapsed="0.000530"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:54.024372" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:54.024138" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:54.024079" elapsed="0.000428"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:54.024849" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T03:14:54.024650" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:54.024602" elapsed="0.000406"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:54.025103" 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-19T03:14:54.031757" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:14:54.032321" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:54.032678" 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-19T03:14:54.026405" elapsed="0.006480"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:53.661279" elapsed="0.371846"/>
</kw>
<msg time="2026-04-19T03:14:54.033530" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:53.660302" elapsed="0.373288"/>
</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-19T03:14:53.659520" elapsed="0.374150"/>
</kw>
<msg time="2026-04-19T03:14:54.033710" 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-19T03:14:53.658766" elapsed="0.374990"/>
</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-19T03:14:54.036890" 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-19T03:14:54.037383" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:54.037677" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:54.034096" elapsed="0.003732"/>
</kw>
<msg time="2026-04-19T03:14:54.037918" level="INFO">${output} = 1</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-19T03:14:53.657518" elapsed="0.380424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:54.038384" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:54.038136" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:54.038470" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:14:54.038620" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:53.656195" elapsed="0.382450"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:54.038690" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:54.038832" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:53.654017" elapsed="0.384839"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:54.039495" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:54.039009" elapsed="0.000570">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:53.652907" elapsed="0.386780">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:56.043461" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:56.042662" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:56.045752" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:56.045142" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:56.047693" 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-19T03:14:56.047924" 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-19T03:14:56.047330" elapsed="0.000654"/>
</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-19T03:14:56.056151" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:56.055491" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:56.055412" elapsed="0.000930"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:56.058692" 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-19T03:14:56.059058" 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-19T03:14:56.057722" elapsed="0.001466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:56.060725" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:56.060178" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:56.062648" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:56.061861" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:56.065210" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:56.065289" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:56.064795" elapsed="0.000518"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:56.065521" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:56.066795" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:56.391156" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:56.066460" elapsed="0.324892"/>
</kw>
<msg time="2026-04-19T03:14:56.391467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:56.066085" elapsed="0.325505"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:56.064004" elapsed="0.328005"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:56.394237" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:56.417068" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:56.417647" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:56.417978" 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-19T03:14:56.393634" elapsed="0.024630"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:56.420580" elapsed="0.000996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:56.423867" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:56.422830" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:56.425155" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:56.424470" elapsed="0.000862"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:56.424346" elapsed="0.001109"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:56.426312" elapsed="0.000125"/>
</return>
<status status="PASS" start="2026-04-19T03:14:56.425769" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:56.425664" elapsed="0.001008"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:56.426844" elapsed="0.000080"/>
</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-19T03:14:56.434065" 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-19T03:14:56.434920" elapsed="0.000341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:56.435547" 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-19T03:14:56.429004" elapsed="0.006849"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:14:56.052446" elapsed="0.383754"/>
</kw>
<msg time="2026-04-19T03:14:56.436648" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:56.050896" elapsed="0.385841"/>
</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-19T03:14:56.049613" elapsed="0.387246"/>
</kw>
<msg time="2026-04-19T03:14:56.436919" 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-19T03:14:56.048414" elapsed="0.388573"/>
</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-19T03:14:56.440853" 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-19T03:14:56.441350" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:56.441646" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:56.437442" elapsed="0.004352"/>
</kw>
<msg time="2026-04-19T03:14:56.441887" level="INFO">${output} = 1</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-19T03:14:56.046365" elapsed="0.395547"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:56.442395" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:56.442113" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:56.442483" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:56.442639" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:56.044181" elapsed="0.398483"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:56.442713" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:14:56.442860" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:56.041644" elapsed="0.401241"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:56.443507" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:56.443095" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:56.040533" elapsed="0.403170">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:14:58.447198" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:14:58.446426" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:14:58.449324" level="INFO">${member_ip} = 10.30.171.206</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-19T03:14:58.448690" elapsed="0.000735"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:58.451223" 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-19T03:14:58.451611" 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-19T03:14:58.450865" elapsed="0.000808"/>
</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-19T03:14:58.457998" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:14:58.457339" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:58.457260" elapsed="0.000956"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:58.460906" 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-19T03:14:58.461278" 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-19T03:14:58.459787" elapsed="0.001646"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:58.463767" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:58.462991" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:14:58.466355" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:14:58.465373" elapsed="0.001080"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:14:58.468758" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:14:58.468839" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:14:58.468472" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:58.469151" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:14:58.470454" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:14:58.799014" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:14:58.470103" elapsed="0.329079"/>
</kw>
<msg time="2026-04-19T03:14:58.799263" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:58.469726" elapsed="0.329621"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:14:58.467668" elapsed="0.331954"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:14:58.801117" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:14:58.824077" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:14:58.824595" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:14:58.824934" 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-19T03:14:58.800708" elapsed="0.024480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:58.827454" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:58.830524" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:58.829634" elapsed="0.001034"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:58.831271" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:14:58.830915" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:58.830821" elapsed="0.000638"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:14:58.831950" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:14:58.831665" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T03:14:58.831594" elapsed="0.000604"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:14:58.832312" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:58.839077" 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-19T03:14:58.839706" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:58.840084" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:58.834341" 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-19T03:14:58.455395" elapsed="0.385127"/>
</kw>
<msg time="2026-04-19T03:14:58.840833" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:14:58.454419" elapsed="0.386473"/>
</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-19T03:14:58.453254" elapsed="0.387722"/>
</kw>
<msg time="2026-04-19T03:14:58.841019" 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-19T03:14:58.452068" elapsed="0.389093"/>
</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-19T03:14:58.844164" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:14:58.844645" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:14:58.844964" elapsed="0.000178"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:14:58.841468" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T03:14:58.845311" level="INFO">${output} = 1</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-19T03:14:58.449911" elapsed="0.395426"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:14:58.845772" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:14:58.845521" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:14:58.845860" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:14:58.846013" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:14:58.447731" elapsed="0.398328"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:14:58.846108" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:14:58.846255" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:14:58.445579" elapsed="0.400701"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:14:58.846829" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:14:58.846437" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:14:58.444508" elapsed="0.402508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:00.850655" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:00.849853" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:00.852824" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:00.852163" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:00.854289" 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-19T03:15:00.854436" 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-19T03:15:00.854017" elapsed="0.000456"/>
</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-19T03:15:00.859759" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:00.859121" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:00.859021" elapsed="0.001061"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:00.862413" 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-19T03:15:00.862753" 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-19T03:15:00.861450" elapsed="0.001440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:00.865069" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:00.864260" elapsed="0.000965"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:00.866966" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:00.866278" elapsed="0.000800"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:00.869346" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:00.869428" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:00.869052" 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-19T03:15:00.869666" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:00.871067" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:01.191127" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:14:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:00.870725" elapsed="0.320535"/>
</kw>
<msg time="2026-04-19T03:15:01.191343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:00.870358" elapsed="0.321069"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:00.868267" elapsed="0.323429"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:01.193185" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:01.215985" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:01.216551" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:01.216891" 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-19T03:15:01.192795" elapsed="0.024351"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:01.219359" elapsed="0.000914"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:01.222553" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:01.221546" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:01.223670" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:01.223169" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:01.223005" elapsed="0.000958"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:01.224896" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:15:01.224437" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:01.224278" elapsed="0.001056"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:01.225416" 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-19T03:15:01.230292" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:15:01.230837" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:01.231256" 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-19T03:15:01.226754" elapsed="0.004719"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:00.857206" elapsed="0.374489"/>
</kw>
<msg time="2026-04-19T03:15:01.232087" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:00.856209" elapsed="0.375939"/>
</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-19T03:15:00.855439" elapsed="0.376794"/>
</kw>
<msg time="2026-04-19T03:15:01.232275" 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-19T03:15:00.854699" elapsed="0.377638"/>
</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-19T03:15:01.235411" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:01.235893" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:01.236206" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:01.232634" elapsed="0.003752"/>
</kw>
<msg time="2026-04-19T03:15:01.236479" level="INFO">${output} = 1</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-19T03:15:00.853382" elapsed="0.383123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:01.236933" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:01.236685" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:01.237020" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:15:01.237190" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:00.851217" elapsed="0.385999"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:01.237264" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:01.237410" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:00.848990" elapsed="0.388445"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:01.237985" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:01.237591" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:00.847853" elapsed="0.390335">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:03.241661" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:03.240905" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:03.243904" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:03.243221" elapsed="0.000750"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:03.245938" 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-19T03:15:03.246216" 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-19T03:15:03.245589" elapsed="0.000693"/>
</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-19T03:15:03.253974" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:03.253249" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:03.253189" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:03.255565" 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-19T03:15:03.255810" 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-19T03:15:03.255106" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:03.257438" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:03.256886" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:03.259296" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:03.258587" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:03.261838" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:03.261917" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:03.261544" 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-19T03:15:03.262168" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:03.263429" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:03.573929" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:03.263100" elapsed="0.311013"/>
</kw>
<msg time="2026-04-19T03:15:03.574207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:03.262722" elapsed="0.311580"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:03.260761" elapsed="0.313854"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:03.576244" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:03.598940" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:03.599532" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:03.600010" 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-19T03:15:03.575783" elapsed="0.024482"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:03.602534" elapsed="0.000961"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:03.605806" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:03.604799" elapsed="0.001269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:03.606958" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:03.606428" elapsed="0.000730"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:03.606303" elapsed="0.000980"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:03.608273" elapsed="0.000110"/>
</return>
<status status="PASS" start="2026-04-19T03:15:03.607673" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:03.607564" elapsed="0.000945"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:03.608587" 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-19T03:15:03.613966" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T03:15:03.614565" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:03.614939" elapsed="0.000172"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:03.609896" elapsed="0.005324"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:03.250946" elapsed="0.364536"/>
</kw>
<msg time="2026-04-19T03:15:03.615899" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:03.249319" elapsed="0.366663"/>
</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-19T03:15:03.247963" elapsed="0.368139"/>
</kw>
<msg time="2026-04-19T03:15:03.616146" 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-19T03:15:03.246664" elapsed="0.369530"/>
</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-19T03:15:03.619462" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:15:03.619984" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:03.620320" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:03.616589" elapsed="0.003896"/>
</kw>
<msg time="2026-04-19T03:15:03.620596" level="INFO">${output} = 1</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-19T03:15:03.244558" elapsed="0.376065"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:03.621115" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:03.620838" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:03.621207" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:15:03.621379" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:03.242211" elapsed="0.379197"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:03.621457" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:15:03.621611" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:03.240088" elapsed="0.381549"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:03.622231" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:03.621798" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:03.238956" elapsed="0.383482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:05.626237" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:05.625482" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:05.628352" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:05.627719" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:05.630249" 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-19T03:15:05.630476" 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-19T03:15:05.629887" elapsed="0.000652"/>
</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-19T03:15:05.636845" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:05.636202" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:05.635790" elapsed="0.001270"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:05.639127" 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-19T03:15:05.639466" 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-19T03:15:05.638448" elapsed="0.001160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:05.641765" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:05.640985" elapsed="0.000933"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:05.644182" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:05.643471" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:05.646566" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:05.646652" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:05.646265" 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-19T03:15:05.646888" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:05.648601" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:05.959800" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:05.648197" elapsed="0.311735"/>
</kw>
<msg time="2026-04-19T03:15:05.960010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:05.647710" elapsed="0.312400"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:05.645491" elapsed="0.314888"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:05.961843" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:05.984117" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:05.984345" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:05.984497" 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-19T03:15:05.961457" elapsed="0.023137"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:05.985599" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:05.987047" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:05.986592" elapsed="0.000563"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:05.987558" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:05.987319" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:05.987261" elapsed="0.000430"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:05.988054" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:15:05.987838" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:05.987789" elapsed="0.000427"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:05.988298" 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-19T03:15:05.992941" 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-19T03:15:05.993498" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:05.993886" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:05.989616" elapsed="0.004580"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:05.633922" elapsed="0.360531"/>
</kw>
<msg time="2026-04-19T03:15:05.994766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:05.632626" elapsed="0.362198"/>
</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-19T03:15:05.631862" elapsed="0.363042"/>
</kw>
<msg time="2026-04-19T03:15:05.994944" 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-19T03:15:05.630942" elapsed="0.364048"/>
</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-19T03:15:05.997946" elapsed="0.000444"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:05.998566" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:05.998861" 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-19T03:15:05.995298" elapsed="0.003710"/>
</kw>
<msg time="2026-04-19T03:15:05.999172" level="INFO">${output} = 1</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-19T03:15:05.628891" elapsed="0.370308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:05.999627" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:05.999378" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:05.999714" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:15:05.999866" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:05.626782" elapsed="0.373109"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:05.999938" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:06.000101" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:05.624651" elapsed="0.375475"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:06.000675" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:06.000284" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:05.623612" elapsed="0.377243">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:08.004420" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:08.003660" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:08.006561" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:08.005946" elapsed="0.000653"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:08.007735" 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-19T03:15:08.007877" 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-19T03:15:08.007513" elapsed="0.000402"/>
</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-19T03:15:08.013692" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:08.012984" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:08.012609" elapsed="0.001279"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:08.015579" 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-19T03:15:08.015823" 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-19T03:15:08.015132" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:08.017528" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:08.016921" elapsed="0.000731"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:08.019352" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:08.018640" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:08.021899" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:08.021977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:08.021607" 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-19T03:15:08.022231" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:08.023492" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:08.337518" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:08.023168" elapsed="0.314608"/>
</kw>
<msg time="2026-04-19T03:15:08.337863" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:08.022788" elapsed="0.315184"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:08.020679" elapsed="0.317611"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:08.339790" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:08.361862" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:08.362406" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:08.362735" 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-19T03:15:08.339395" elapsed="0.023552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:08.365164" elapsed="0.000958"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:08.368396" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:08.367359" elapsed="0.001266"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:08.369536" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:08.368971" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:08.368851" elapsed="0.000982"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:08.370636" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:15:08.370186" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:08.370074" elapsed="0.000910"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:08.371199" elapsed="0.000084"/>
</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-19T03:15:08.379659" 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-19T03:15:08.380284" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:08.380665" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:08.374307" elapsed="0.006568"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:08.010733" elapsed="0.370379"/>
</kw>
<msg time="2026-04-19T03:15:08.381416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:08.009664" elapsed="0.371831"/>
</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-19T03:15:08.008874" elapsed="0.372708"/>
</kw>
<msg time="2026-04-19T03:15:08.381622" 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-19T03:15:08.008157" elapsed="0.373512"/>
</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-19T03:15:08.384705" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T03:15:08.385208" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:08.385535" elapsed="0.000189"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:08.381963" elapsed="0.003816"/>
</kw>
<msg time="2026-04-19T03:15:08.385870" level="INFO">${output} = 1</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-19T03:15:08.006915" elapsed="0.378981"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:08.386346" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:08.386093" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:08.386435" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:15:08.386588" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:08.004945" elapsed="0.381668"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:08.386660" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:15:08.386802" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:08.002808" elapsed="0.384019"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:08.387442" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:08.387047" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:08.001761" elapsed="0.385860">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:10.391499" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:10.390690" elapsed="0.000881"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:10.393805" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:10.393186" elapsed="0.000679"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:10.395939" 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-19T03:15:10.396214" 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-19T03:15:10.395437" elapsed="0.000838"/>
</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-19T03:15:10.400945" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:10.400434" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:10.400377" elapsed="0.000724"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:10.402863" 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-19T03:15:10.403122" 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-19T03:15:10.402185" elapsed="0.001037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:10.404754" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:10.404202" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:10.406600" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:10.405836" elapsed="0.000863"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:10.409167" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:10.409244" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:10.408863" 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-19T03:15:10.409477" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:10.410724" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:10.774475" 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 Sun Apr 19 03:14:10 UTC 2026

  System load:  0.13               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:10.410401" elapsed="0.364249"/>
</kw>
<msg time="2026-04-19T03:15:10.774737" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:10.410026" elapsed="0.364815"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:10.407984" elapsed="0.367193"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:10.776805" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:10.800261" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:10.800863" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:10.801246" 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-19T03:15:10.776330" elapsed="0.025134"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:10.803805" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:10.806703" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:10.805956" elapsed="0.000914"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:10.807576" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:10.807180" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:10.807081" elapsed="0.000698"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:10.808308" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T03:15:10.807994" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:10.807923" elapsed="0.000644"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:10.808704" elapsed="0.000057"/>
</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-19T03:15:10.815833" elapsed="0.000389"/>
</kw>
<kw name="Open 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-19T03:15:10.816441" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:10.816836" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:10.810674" elapsed="0.006398"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:10.398984" elapsed="0.418321"/>
</kw>
<msg time="2026-04-19T03:15:10.817616" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:10.398284" elapsed="0.419400"/>
</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-19T03:15:10.397728" elapsed="0.420039"/>
</kw>
<msg time="2026-04-19T03:15:10.817809" 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-19T03:15:10.396676" elapsed="0.421180"/>
</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-19T03:15:10.820966" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T03:15:10.821488" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:10.821790" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:10.818247" elapsed="0.003694"/>
</kw>
<msg time="2026-04-19T03:15:10.822074" level="INFO">${output} = 1</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-19T03:15:10.394387" elapsed="0.427715"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:10.822551" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:10.822284" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:10.822640" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:15:10.822795" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:10.392117" elapsed="0.430703"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:10.822868" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:10.823014" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:10.389747" elapsed="0.433310"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:10.823645" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:10.823218" elapsed="0.000518">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:10.388499" elapsed="0.435355">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:12.827384" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:12.826615" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:12.829363" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:12.828960" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:12.830530" 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-19T03:15:12.830672" 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-19T03:15:12.830304" elapsed="0.000409"/>
</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-19T03:15:12.836449" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:12.835734" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:12.835609" elapsed="0.001148"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:12.839732" 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-19T03:15:12.840255" 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-19T03:15:12.838499" elapsed="0.001929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:12.842248" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:12.841629" elapsed="0.000730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:12.844304" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:12.843511" elapsed="0.000892"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:12.846910" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:12.847008" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:12.846581" elapsed="0.000576"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:12.847377" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:12.848865" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:13.456883" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:12.848479" elapsed="0.608599"/>
</kw>
<msg time="2026-04-19T03:15:13.457181" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:12.848062" elapsed="0.609238"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:12.845723" elapsed="0.611883"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:13.459156" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:13.482114" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:13.482761" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:13.483232" 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-19T03:15:13.458721" elapsed="0.024774"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:13.485927" elapsed="0.001168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:13.489548" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:13.488455" elapsed="0.001340"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:13.490878" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:13.490202" elapsed="0.001073"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:13.490070" elapsed="0.001398"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:13.491948" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:15:13.491735" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:13.491685" elapsed="0.000482"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:13.492271" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:13.497918" elapsed="0.000468"/>
</kw>
<kw name="Open 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-19T03:15:13.498629" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:13.499092" 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-19T03:15:13.493777" elapsed="0.005541"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:12.833689" elapsed="0.665889"/>
</kw>
<msg time="2026-04-19T03:15:13.499902" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:12.832610" elapsed="0.667367"/>
</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-19T03:15:12.831690" elapsed="0.668391"/>
</kw>
<msg time="2026-04-19T03:15:13.500125" 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-19T03:15:12.830935" elapsed="0.669239"/>
</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-19T03:15:13.503616" 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-19T03:15:13.504175" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:13.504547" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:13.500506" elapsed="0.004198"/>
</kw>
<msg time="2026-04-19T03:15:13.504805" level="INFO">${output} = 1</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-19T03:15:12.829707" elapsed="0.675124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:13.505334" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:13.505070" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:13.505429" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:15:13.505596" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:12.828158" elapsed="0.677464"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:13.505670" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:13.505816" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:12.825768" elapsed="0.680073"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:13.506425" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:13.506000" elapsed="0.000534">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:12.824686" elapsed="0.681967">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:15.510269" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:15.509484" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:15.511931" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:15.511491" elapsed="0.000478"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:15.513213" 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-19T03:15:15.513615" 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-19T03:15:15.512937" elapsed="0.000720"/>
</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-19T03:15:15.519524" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:15.518626" elapsed="0.001020"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:15.518512" elapsed="0.001221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:15.522595" 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-19T03:15:15.522962" 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-19T03:15:15.521357" elapsed="0.001733"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:15.524725" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:15.524112" elapsed="0.000730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:15.526836" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:15.526015" elapsed="0.000925"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:15.529357" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:15.529438" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:15.529064" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:15.529684" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:15.531127" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:15.840342" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:15.530774" elapsed="0.309717"/>
</kw>
<msg time="2026-04-19T03:15:15.840577" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:15.530379" elapsed="0.310288"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:15.528257" elapsed="0.312712"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:15.842503" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:15.865512" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:15.866023" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:15.866425" 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-19T03:15:15.842080" elapsed="0.024602"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:15.869009" elapsed="0.000969"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:15.872278" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:15.871300" elapsed="0.001205"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:15.873415" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:15.872875" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:15.872732" elapsed="0.000975"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:15.874562" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:15:15.874026" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:15.873919" elapsed="0.000999"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:15.875299" elapsed="0.000099"/>
</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-19T03:15:15.880147" 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-19T03:15:15.880814" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:15.881237" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:15.876688" elapsed="0.004764"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:15.516595" elapsed="0.365078"/>
</kw>
<msg time="2026-04-19T03:15:15.882154" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:15.515576" elapsed="0.366641"/>
</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-19T03:15:15.514787" elapsed="0.367516"/>
</kw>
<msg time="2026-04-19T03:15:15.882345" 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-19T03:15:15.513887" elapsed="0.368515"/>
</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-19T03:15:15.885447" 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-19T03:15:15.885925" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:15.886277" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:15.882696" elapsed="0.003761"/>
</kw>
<msg time="2026-04-19T03:15:15.886550" level="INFO">${output} = 1</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-19T03:15:15.512317" elapsed="0.374258"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:15.887003" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:15.886753" elapsed="0.000393"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:15.887191" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:15:15.887346" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:15.510888" elapsed="0.376483"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:15.887418" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:15:15.887563" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:15.508628" elapsed="0.378959"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:15.888150" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:15.887743" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:15.507494" elapsed="0.380841">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:17.891934" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:17.891207" elapsed="0.000796"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:17.894135" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:17.893631" elapsed="0.000545"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:17.895361" 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-19T03:15:17.895510" 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-19T03:15:17.895122" elapsed="0.000426"/>
</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-19T03:15:17.901502" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:17.900498" elapsed="0.001216"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:17.900419" elapsed="0.001382"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:17.903864" 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-19T03:15:17.904233" 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-19T03:15:17.903232" elapsed="0.001143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:17.906447" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:17.905829" elapsed="0.000730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:17.908311" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:17.907597" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:17.910713" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:17.910791" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:17.910428" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:17.911198" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:17.912485" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:18.214295" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:17.912158" elapsed="0.302285"/>
</kw>
<msg time="2026-04-19T03:15:18.214526" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:17.911781" elapsed="0.302838"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:17.909637" elapsed="0.305274"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:18.216439" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:18.239102" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:18.239618" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:18.239987" 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-19T03:15:18.216015" elapsed="0.024238"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:18.242716" elapsed="0.001006"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:18.247443" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:18.245243" elapsed="0.002438"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:18.248677" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:18.248164" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:18.247910" elapsed="0.001060"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:18.249809" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T03:15:18.249328" elapsed="0.000777"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:18.249219" elapsed="0.001070"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:18.250479" elapsed="0.000096"/>
</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-19T03:15:18.257189" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:15:18.257761" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:18.258142" 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-19T03:15:18.253728" elapsed="0.004629"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:17.898482" elapsed="0.360106"/>
</kw>
<msg time="2026-04-19T03:15:18.258977" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:17.897449" elapsed="0.361612"/>
</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-19T03:15:17.896584" elapsed="0.362568"/>
</kw>
<msg time="2026-04-19T03:15:18.259194" 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-19T03:15:17.895782" elapsed="0.363461"/>
</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-19T03:15:18.262362" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:18.262849" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:18.263183" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:18.259551" elapsed="0.003787"/>
</kw>
<msg time="2026-04-19T03:15:18.263432" level="INFO">${output} = 1</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-19T03:15:17.894494" elapsed="0.368964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:18.263906" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:18.263652" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:18.263993" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:15:18.264243" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:17.892549" elapsed="0.371719"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:18.264317" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:18.264464" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:17.890375" elapsed="0.374113"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:18.265056" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:18.264646" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:17.889234" elapsed="0.376010">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:20.268814" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:20.267996" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:20.270196" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:20.269783" elapsed="0.000452"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:20.271364" 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-19T03:15:20.271506" 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-19T03:15:20.271139" elapsed="0.000404"/>
</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-19T03:15:20.277287" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:20.276612" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:20.276204" elapsed="0.001278"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:20.279520" 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-19T03:15:20.279862" 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-19T03:15:20.278863" elapsed="0.001140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:20.281830" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:20.281291" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:20.283764" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:20.282982" elapsed="0.000878"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:20.286132" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:20.286212" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:20.285837" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:20.286447" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:20.287837" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:20.737435" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:20.287510" elapsed="0.450037"/>
</kw>
<msg time="2026-04-19T03:15:20.737621" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:20.287002" elapsed="0.450700"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:20.285079" elapsed="0.452868"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:20.739369" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:20.762766" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:20.763311" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:20.763646" 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-19T03:15:20.738992" elapsed="0.024864"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:20.766131" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:20.769422" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:20.768430" elapsed="0.001223"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:20.770534" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:20.770002" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:20.769879" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:20.771668" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:15:20.771207" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:20.771076" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:20.772402" elapsed="0.000101"/>
</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-19T03:15:20.779311" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:20.780117" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:20.780638" 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-19T03:15:20.774485" elapsed="0.006443"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:20.274246" elapsed="0.507032"/>
</kw>
<msg time="2026-04-19T03:15:20.781707" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:20.273272" elapsed="0.508515"/>
</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-19T03:15:20.272495" elapsed="0.509405"/>
</kw>
<msg time="2026-04-19T03:15:20.781969" 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-19T03:15:20.271764" elapsed="0.510309"/>
</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-19T03:15:20.786095" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:15:20.786575" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:20.786870" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:20.782558" elapsed="0.004461"/>
</kw>
<msg time="2026-04-19T03:15:20.787168" level="INFO">${output} = 1</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-19T03:15:20.270540" elapsed="0.516654"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:20.787623" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:20.787374" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:20.787710" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:15:20.787863" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:20.269206" elapsed="0.518682"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:20.787934" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:20.788096" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:20.267187" elapsed="0.520934"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:20.788688" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:20.788279" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:20.266102" elapsed="0.522770">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:22.792539" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:22.791742" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:22.794787" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:22.794105" elapsed="0.000742"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:22.796724" 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-19T03:15:22.796951" 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-19T03:15:22.796387" elapsed="0.000621"/>
</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-19T03:15:22.805257" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:22.804761" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:22.804465" elapsed="0.000959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:22.806870" 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-19T03:15:22.807155" 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-19T03:15:22.806418" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:22.808813" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:22.808253" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:22.810639" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:22.809916" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:22.813113" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:22.813195" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:22.812805" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:22.813436" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:22.814777" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:23.124632" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:22.814450" elapsed="0.310339"/>
</kw>
<msg time="2026-04-19T03:15:23.124879" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:22.814082" elapsed="0.310893"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:22.812012" elapsed="0.313274"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:23.126782" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:23.149722" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:23.150280" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:23.150616" 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-19T03:15:23.126390" elapsed="0.024438"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:23.153177" elapsed="0.000939"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:23.156462" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:23.155409" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:23.157745" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:23.157203" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:23.156922" elapsed="0.001150"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:23.158847" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:15:23.158397" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:23.158292" elapsed="0.000950"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:23.159443" elapsed="0.000087"/>
</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-19T03:15:23.168637" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T03:15:23.169312" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:23.169744" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:23.162585" elapsed="0.007371"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:22.801735" elapsed="0.368462"/>
</kw>
<msg time="2026-04-19T03:15:23.170506" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:22.800021" elapsed="0.370545"/>
</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-19T03:15:22.798735" elapsed="0.371910"/>
</kw>
<msg time="2026-04-19T03:15:23.170684" 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-19T03:15:22.797403" elapsed="0.373326"/>
</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-19T03:15:23.173759" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:15:23.174294" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:23.174613" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:23.171020" elapsed="0.003744"/>
</kw>
<msg time="2026-04-19T03:15:23.174919" level="INFO">${output} = 1</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-19T03:15:22.795400" elapsed="0.379545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:23.175424" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:23.175149" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:23.175512" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:15:23.175662" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:22.793108" elapsed="0.382579"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:23.175733" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:23.175874" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:22.790798" elapsed="0.385100"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:23.176459" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:23.176067" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:22.789699" elapsed="0.386943">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:25.180384" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:25.179575" elapsed="0.000882"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:25.182610" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:25.181897" elapsed="0.000779"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:25.183975" 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-19T03:15:25.184151" 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-19T03:15:25.183752" elapsed="0.000450"/>
</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-19T03:15:25.189747" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:25.189092" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:25.188984" elapsed="0.000963"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:25.192430" 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-19T03:15:25.192793" 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-19T03:15:25.191432" elapsed="0.001505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:25.195181" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:25.194354" elapsed="0.000943"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:25.197128" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:25.196382" elapsed="0.000849"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:25.199551" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:25.199629" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:25.199262" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:25.199868" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:25.201303" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:25.512978" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:25.200955" elapsed="0.312287"/>
</kw>
<msg time="2026-04-19T03:15:25.513327" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:25.200583" elapsed="0.312837"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:25.198450" elapsed="0.315254"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:25.515309" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:25.538267" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:25.538807" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:25.539234" 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-19T03:15:25.514886" elapsed="0.024594"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:25.541878" elapsed="0.001113"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:25.544726" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:25.543910" elapsed="0.001060"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:25.545570" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:25.545232" elapsed="0.000450"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:25.545142" 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-19T03:15:25.546408" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T03:15:25.545963" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:25.545894" elapsed="0.000755"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:25.546760" elapsed="0.000056"/>
</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-19T03:15:25.553806" elapsed="0.000505"/>
</kw>
<kw name="Open 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-19T03:15:25.554659" elapsed="0.000256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:25.555188" 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-19T03:15:25.548810" elapsed="0.006602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:25.187009" elapsed="0.368637"/>
</kw>
<msg time="2026-04-19T03:15:25.555955" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:25.185978" elapsed="0.370038"/>
</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-19T03:15:25.185198" elapsed="0.371016"/>
</kw>
<msg time="2026-04-19T03:15:25.556256" 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-19T03:15:25.184433" elapsed="0.371873"/>
</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-19T03:15:25.559537" 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-19T03:15:25.560052" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:25.560391" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:25.556611" elapsed="0.003963"/>
</kw>
<msg time="2026-04-19T03:15:25.560671" level="INFO">${output} = 1</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-19T03:15:25.183168" elapsed="0.377529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:25.561176" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:25.560895" elapsed="0.000327"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:25.561266" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:15:25.561427" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:25.180931" elapsed="0.380521"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:25.561506" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:15:25.561707" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:25.178713" elapsed="0.383020"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:25.562465" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:25.561961" elapsed="0.000600">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:25.177516" elapsed="0.385171">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:27.566664" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:27.565829" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:27.568986" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:27.568356" elapsed="0.000726"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:27.571093" 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-19T03:15:27.571385" 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-19T03:15:27.570695" elapsed="0.000762"/>
</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-19T03:15:27.578096" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:27.577371" elapsed="0.000832"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:27.577289" elapsed="0.000986"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:27.580157" 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-19T03:15:27.580451" 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-19T03:15:27.579387" elapsed="0.001174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:27.582192" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:27.581609" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:27.584130" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:27.583320" elapsed="0.000920"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:27.586639" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:27.586720" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:27.586316" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:27.586965" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:27.588468" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:27.898733" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:27.587961" elapsed="0.310936"/>
</kw>
<msg time="2026-04-19T03:15:27.898986" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:27.587588" elapsed="0.311514"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:27.585502" elapsed="0.313908"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:27.900994" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:27.924456" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:27.924975" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:27.925421" 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-19T03:15:27.900565" elapsed="0.025079"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:27.927929" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:27.931261" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:27.930194" elapsed="0.001301"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:27.932424" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:27.931846" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:27.931721" elapsed="0.001004"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:27.933566" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:15:27.933077" elapsed="0.000719"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:27.932937" elapsed="0.000988"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:27.934166" elapsed="0.000090"/>
</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-19T03:15:27.941297" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:15:27.941863" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:27.942257" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:27.937421" elapsed="0.005045"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:27.575328" elapsed="0.367359"/>
</kw>
<msg time="2026-04-19T03:15:27.943020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:27.574305" elapsed="0.368877"/>
</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-19T03:15:27.573007" elapsed="0.370264"/>
</kw>
<msg time="2026-04-19T03:15:27.943313" 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-19T03:15:27.571817" elapsed="0.371543"/>
</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-19T03:15:27.946387" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:15:27.946868" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:27.947220" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:27.943652" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T03:15:27.947465" level="INFO">${output} = 1</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-19T03:15:27.569637" elapsed="0.377855"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:27.948046" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:27.947674" elapsed="0.000419"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:27.948139" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:15:27.948294" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:27.567334" elapsed="0.380986"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:27.948368" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:27.948515" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:27.564884" elapsed="0.383657"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:27.949114" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:27.948700" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:27.563648" elapsed="0.385650">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:29.953194" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:29.952368" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:29.955612" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:29.954919" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:29.957562" 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-19T03:15:29.957791" 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-19T03:15:29.957226" elapsed="0.000626"/>
</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-19T03:15:29.963852" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:29.963385" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:29.963326" elapsed="0.000664"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:29.965940" 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-19T03:15:29.966199" 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-19T03:15:29.965008" elapsed="0.001293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:29.968006" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:29.967277" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:29.970046" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:29.969333" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:29.972613" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:29.972692" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:29.972296" 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-19T03:15:29.972929" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:29.974237" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:30.490259" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:27 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:29.973889" elapsed="0.516524"/>
</kw>
<msg time="2026-04-19T03:15:30.490495" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:29.973525" elapsed="0.517059"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:29.971344" elapsed="0.519517"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:30.492454" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:30.515337" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:30.515914" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:30.516501" 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-19T03:15:30.492001" elapsed="0.024785"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:30.519075" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:30.522320" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:30.521290" elapsed="0.001263"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:30.523540" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:30.522898" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:30.522776" elapsed="0.001066"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:30.524682" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:15:30.524207" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:30.524092" elapsed="0.001013"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:30.525296" elapsed="0.000089"/>
</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-19T03:15:30.532402" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:15:30.532950" elapsed="0.000191"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:30.533339" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:30.528574" elapsed="0.004975"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:29.961801" elapsed="0.571979"/>
</kw>
<msg time="2026-04-19T03:15:30.534226" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:29.960892" elapsed="0.573400"/>
</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-19T03:15:29.959546" elapsed="0.574833"/>
</kw>
<msg time="2026-04-19T03:15:30.534420" 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-19T03:15:29.958356" elapsed="0.576110"/>
</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-19T03:15:30.537484" 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-19T03:15:30.537976" elapsed="0.000242"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:30.538398" 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-19T03:15:30.534759" elapsed="0.003793"/>
</kw>
<msg time="2026-04-19T03:15:30.538646" level="INFO">${output} = 1</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-19T03:15:29.956214" elapsed="0.582458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:30.539137" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:30.538859" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:30.539226" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:15:30.539381" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:29.953940" elapsed="0.585466"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:30.539453" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:30.539600" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:29.951473" elapsed="0.588151"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:30.540189" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:30.539780" elapsed="0.000512">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:29.950369" elapsed="0.590037">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:32.544064" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:32.543212" elapsed="0.000927"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:32.546303" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:32.545625" elapsed="0.000740"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:32.548421" 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-19T03:15:32.548823" 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-19T03:15:32.548077" elapsed="0.000831"/>
</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-19T03:15:32.557424" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:32.556684" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:32.556627" elapsed="0.000941"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:32.559014" 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-19T03:15:32.559329" 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-19T03:15:32.558568" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:32.560980" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:32.560435" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:32.562852" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:32.562098" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:32.565374" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:32.565457" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:32.565026" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:32.565695" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:32.566994" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:32.882610" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:32.566667" elapsed="0.316123"/>
</kw>
<msg time="2026-04-19T03:15:32.882891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:32.566294" elapsed="0.316706"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:32.564251" elapsed="0.319146"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:32.885269" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:32.908146" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:32.908600" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:32.908832" 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-19T03:15:32.884763" elapsed="0.024212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:32.910468" elapsed="0.000703"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:32.912681" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:32.912015" elapsed="0.000804"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:32.913424" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:32.913078" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:32.912970" elapsed="0.000636"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:32.914117" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T03:15:32.913814" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:32.913745" elapsed="0.000608"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:32.914474" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:32.921290" elapsed="0.000515"/>
</kw>
<kw name="Open 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-19T03:15:32.922228" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:32.922758" elapsed="0.000152"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:32.916332" elapsed="0.006744"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:32.553635" elapsed="0.369764"/>
</kw>
<msg time="2026-04-19T03:15:32.923828" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:32.552079" elapsed="0.371845"/>
</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-19T03:15:32.550699" elapsed="0.373369"/>
</kw>
<msg time="2026-04-19T03:15:32.924132" 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-19T03:15:32.549315" elapsed="0.374886"/>
</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-19T03:15:32.928753" elapsed="0.000519"/>
</kw>
<kw name="Open 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-19T03:15:32.929513" elapsed="0.000217"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:32.929946" elapsed="0.000160"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:32.924635" elapsed="0.005544"/>
</kw>
<msg time="2026-04-19T03:15:32.930311" level="INFO">${output} = 1</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-19T03:15:32.547014" elapsed="0.383334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:32.930999" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:32.930641" elapsed="0.000446"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:32.931154" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T03:15:32.931404" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:32.544621" elapsed="0.386822"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:32.931513" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:15:32.931728" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:32.542336" elapsed="0.389429"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:32.932596" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:32.932000" elapsed="0.000705">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:32.541252" elapsed="0.391615">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:34.936441" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:34.935669" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:34.938561" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:34.937910" elapsed="0.000712"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:34.940401" 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-19T03:15:34.940626" 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-19T03:15:34.940069" elapsed="0.000616"/>
</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-19T03:15:34.946412" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:34.945869" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:34.945575" elapsed="0.001057"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:34.948092" 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-19T03:15:34.948345" 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-19T03:15:34.947631" elapsed="0.000815"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:34.949980" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:34.949435" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:34.951870" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:34.951178" elapsed="0.000790"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:34.954273" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:34.954352" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:34.953974" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:34.954623" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:34.956176" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:35.278577" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:34.955761" elapsed="0.323056"/>
</kw>
<msg time="2026-04-19T03:15:35.278969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:34.955399" elapsed="0.323768"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:34.953204" elapsed="0.326517"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:35.282889" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:35.306494" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:35.307134" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:35.307505" 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-19T03:15:35.282090" elapsed="0.025648"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:35.310347" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:35.313832" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:35.312804" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:35.315072" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:35.314537" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:35.314397" elapsed="0.000970"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:35.315751" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:15:35.315546" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:35.315497" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:35.315999" elapsed="0.000124"/>
</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-19T03:15:35.321185" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T03:15:35.321779" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:35.322172" elapsed="0.000127"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:35.317454" elapsed="0.004956"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:34.944249" elapsed="0.378390"/>
</kw>
<msg time="2026-04-19T03:15:35.323197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:34.943532" elapsed="0.379736"/>
</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-19T03:15:34.942231" elapsed="0.381123"/>
</kw>
<msg time="2026-04-19T03:15:35.323395" 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-19T03:15:34.941066" elapsed="0.382377"/>
</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-19T03:15:35.326764" elapsed="0.000375"/>
</kw>
<kw name="Open 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-19T03:15:35.327307" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:35.327646" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:35.323750" elapsed="0.004050"/>
</kw>
<msg time="2026-04-19T03:15:35.327894" level="INFO">${output} = 1</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-19T03:15:34.939133" elapsed="0.388787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:35.328526" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:35.328269" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:35.328618" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:15:35.328779" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:34.936963" elapsed="0.391841"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:35.328850" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:35.328993" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:34.934829" elapsed="0.394188"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:35.329580" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:35.329188" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:34.933729" elapsed="0.396055">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:37.333810" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:37.332971" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:37.335921" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:37.335313" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:37.337899" 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-19T03:15:37.338166" 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-19T03:15:37.337541" elapsed="0.000687"/>
</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-19T03:15:37.345483" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:37.344783" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:37.344397" elapsed="0.001287"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:37.347376" 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-19T03:15:37.347626" 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-19T03:15:37.346915" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:37.349260" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:37.348706" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:37.351237" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:37.350450" elapsed="0.000887"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:37.353616" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:37.353694" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:37.353320" 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-19T03:15:37.353930" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:37.355407" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:37.703218" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:37.354862" elapsed="0.348523"/>
</kw>
<msg time="2026-04-19T03:15:37.703481" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:37.354503" elapsed="0.349099"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:37.352542" elapsed="0.351401"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:37.705607" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:37.728502" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:37.728837" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:37.729082" 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-19T03:15:37.705146" elapsed="0.024096"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:37.730678" elapsed="0.000618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:37.732923" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:37.732214" elapsed="0.000936"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:37.733978" elapsed="0.000182"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:37.733440" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:37.733329" elapsed="0.001125"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:37.735518" elapsed="0.000171"/>
</return>
<status status="PASS" start="2026-04-19T03:15:37.734899" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:37.734759" elapsed="0.001369"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:37.736411" elapsed="0.000102"/>
</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-19T03:15:37.743995" 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-19T03:15:37.744615" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:37.744986" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:37.738620" elapsed="0.006618"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:37.342540" elapsed="0.402929"/>
</kw>
<msg time="2026-04-19T03:15:37.745818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:37.340990" elapsed="0.404894"/>
</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-19T03:15:37.339767" elapsed="0.406199"/>
</kw>
<msg time="2026-04-19T03:15:37.746007" 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-19T03:15:37.338580" elapsed="0.407571"/>
</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-19T03:15:37.749329" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:37.749844" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:37.750245" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:37.746541" elapsed="0.003891"/>
</kw>
<msg time="2026-04-19T03:15:37.750560" level="INFO">${output} = 1</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-19T03:15:37.336497" elapsed="0.414097"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:37.751214" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:37.750859" elapsed="0.000414"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:37.751331" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:15:37.751534" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:37.334372" elapsed="0.417193"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:37.751625" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:15:37.751807" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:37.332115" elapsed="0.419724"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:37.752559" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:37.752068" elapsed="0.000579">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:37.330873" elapsed="0.421886">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:39.757204" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:39.756441" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:39.759316" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:39.758659" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:39.761004" 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-19T03:15:39.761179" 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-19T03:15:39.760746" elapsed="0.000472"/>
</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-19T03:15:39.766902" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:39.766231" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:39.766152" elapsed="0.000982"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:39.769601" 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-19T03:15:39.769968" 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-19T03:15:39.768613" elapsed="0.001526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:39.772452" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:39.771603" elapsed="0.001006"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:39.774369" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:39.773660" elapsed="0.000808"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:39.776752" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:39.776830" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:39.776471" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:39.777177" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:39.778499" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:40.089665" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:39.778174" elapsed="0.311657"/>
</kw>
<msg time="2026-04-19T03:15:40.089919" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:39.777798" elapsed="0.312214"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:39.775679" elapsed="0.314655"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:40.091832" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:40.114991" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:40.115637" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:40.115967" 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-19T03:15:40.091436" elapsed="0.024810"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:40.118565" elapsed="0.000988"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:40.121788" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:40.120816" elapsed="0.001197"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:40.122888" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:40.122397" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:40.122270" elapsed="0.000999"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:40.124020" elapsed="0.000239"/>
</return>
<status status="PASS" start="2026-04-19T03:15:40.123584" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:40.123480" elapsed="0.001018"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:40.124646" elapsed="0.000055"/>
</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-19T03:15:40.131809" elapsed="0.000548"/>
</kw>
<kw name="Open 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-19T03:15:40.132672" elapsed="0.000247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:40.133229" 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-19T03:15:40.126648" elapsed="0.006896"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:39.764160" elapsed="0.369715"/>
</kw>
<msg time="2026-04-19T03:15:40.134367" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:39.763139" elapsed="0.371319"/>
</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-19T03:15:39.762319" elapsed="0.372260"/>
</kw>
<msg time="2026-04-19T03:15:40.134640" 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-19T03:15:39.761452" elapsed="0.373256"/>
</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-19T03:15:40.138612" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:15:40.139147" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:40.139455" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:40.135333" elapsed="0.004273"/>
</kw>
<msg time="2026-04-19T03:15:40.139812" level="INFO">${output} = 1</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-19T03:15:39.759848" elapsed="0.379990"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:40.140354" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:40.140070" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:40.140446" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:15:40.140608" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:39.757718" elapsed="0.382914"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:40.140681" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:15:40.140826" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:39.754613" elapsed="0.386238"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:40.141436" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:40.141010" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:39.753573" elapsed="0.388059">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:42.145391" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:42.144644" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:42.147516" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:42.146844" elapsed="0.000733"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:42.148924" 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-19T03:15:42.149097" 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-19T03:15:42.148690" elapsed="0.000447"/>
</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-19T03:15:42.154882" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:42.154181" elapsed="0.000820"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:42.154098" elapsed="0.001017"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:42.157620" 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-19T03:15:42.157977" 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-19T03:15:42.156574" elapsed="0.001572"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:42.160181" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:42.159610" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:42.162012" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:42.161321" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:42.164397" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:42.164474" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:42.164107" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:42.164714" elapsed="0.000485"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:42.166137" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:42.477782" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:42.165792" elapsed="0.312335"/>
</kw>
<msg time="2026-04-19T03:15:42.478242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:42.165423" elapsed="0.312935"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:42.163319" elapsed="0.315432"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:42.480846" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:42.503851" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:42.504219" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:42.504435" 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-19T03:15:42.480311" elapsed="0.024260"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:42.506008" elapsed="0.000628"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:42.508136" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:42.507477" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:42.508860" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:42.508519" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:42.508436" elapsed="0.000651"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:42.509594" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T03:15:42.509301" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:42.509228" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:42.510000" elapsed="0.000078"/>
</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-19T03:15:42.516983" elapsed="0.000675"/>
</kw>
<kw name="Open 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-19T03:15:42.517991" elapsed="0.000278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:42.518549" elapsed="0.000152"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:42.511940" elapsed="0.006913"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:42.152139" elapsed="0.367094"/>
</kw>
<msg time="2026-04-19T03:15:42.519680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:42.150940" elapsed="0.368850"/>
</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-19T03:15:42.150150" elapsed="0.369777"/>
</kw>
<msg time="2026-04-19T03:15:42.519985" 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-19T03:15:42.149371" elapsed="0.370703"/>
</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-19T03:15:42.524351" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:15:42.524853" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:42.525203" 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-19T03:15:42.520508" elapsed="0.004850"/>
</kw>
<msg time="2026-04-19T03:15:42.525454" level="INFO">${output} = 1</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-19T03:15:42.148075" elapsed="0.377407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:42.525963" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:42.525699" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:42.526075" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:15:42.526238" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:42.145906" elapsed="0.380358"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:42.526313" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:15:42.526463" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:42.143661" elapsed="0.382828"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:42.527151" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:42.526723" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:42.142448" elapsed="0.384919">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:44.531173" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:44.530342" elapsed="0.000906"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:44.533671" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:44.532852" elapsed="0.000876"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:44.534908" 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-19T03:15:44.535072" 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-19T03:15:44.534684" elapsed="0.000426"/>
</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-19T03:15:44.540406" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:44.539746" elapsed="0.000772"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:44.539668" elapsed="0.000932"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:44.542912" 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-19T03:15:44.543182" 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-19T03:15:44.541981" elapsed="0.001299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:44.544917" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:44.544265" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:44.546843" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:44.546082" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:44.549414" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:44.549496" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:44.549091" 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-19T03:15:44.549737" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:44.551408" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:44.903578" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:44.550852" elapsed="0.352899"/>
</kw>
<msg time="2026-04-19T03:15:44.903849" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:44.550437" elapsed="0.353515"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:44.548253" elapsed="0.356052"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:44.905834" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:44.929587" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:44.930200" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:44.930567" 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-19T03:15:44.905424" elapsed="0.025374"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:44.933250" elapsed="0.000996"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:44.936630" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:44.935605" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:44.937769" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:44.937260" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:44.937129" elapsed="0.000965"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:44.938915" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T03:15:44.938474" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:44.938363" elapsed="0.000804"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:44.939247" 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-19T03:15:44.944091" 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-19T03:15:44.944663" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:44.945024" 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-19T03:15:44.940595" elapsed="0.004659"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:44.537795" elapsed="0.407685"/>
</kw>
<msg time="2026-04-19T03:15:44.945791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:44.536830" elapsed="0.409024"/>
</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-19T03:15:44.536065" elapsed="0.409873"/>
</kw>
<msg time="2026-04-19T03:15:44.945979" 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-19T03:15:44.535335" elapsed="0.410691"/>
</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-19T03:15:44.949179" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:15:44.949672" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:44.949972" elapsed="0.000239"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:44.946357" elapsed="0.003908"/>
</kw>
<msg time="2026-04-19T03:15:44.950361" level="INFO">${output} = 1</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-19T03:15:44.534066" elapsed="0.416320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:44.950824" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:44.950574" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:44.950912" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:15:44.951084" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:44.531742" elapsed="0.419368"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:44.951158" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:44.951304" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:44.529404" elapsed="0.421925"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:44.951882" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:44.951485" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:44.528260" elapsed="0.423827">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:46.955628" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:46.954844" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:46.957898" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:46.957290" elapsed="0.000647"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:46.959153" 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-19T03:15:46.959305" 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-19T03:15:46.958888" elapsed="0.000456"/>
</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-19T03:15:46.965393" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:46.964334" elapsed="0.001178"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:46.964251" elapsed="0.001350"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:46.967784" 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-19T03:15:46.968170" 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-19T03:15:46.967128" elapsed="0.001195"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:46.970431" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:46.969865" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:46.972289" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:46.971577" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:46.974692" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:46.974771" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:46.974401" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:46.975167" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:46.976423" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:47.288338" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:46.976098" elapsed="0.312402"/>
</kw>
<msg time="2026-04-19T03:15:47.288590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:46.975723" elapsed="0.312984"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:46.973609" elapsed="0.315462"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:47.290709" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:47.313728" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:47.314344" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:47.314691" 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-19T03:15:47.290278" elapsed="0.024633"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:47.317397" elapsed="0.001006"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:47.320840" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:47.319756" 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-19T03:15:47.322116" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:47.321633" elapsed="0.000587"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:47.321488" elapsed="0.000806"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:47.322698" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T03:15:47.322471" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:47.322399" elapsed="0.000477"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:47.322960" 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-19T03:15:47.328003" elapsed="0.000439"/>
</kw>
<kw name="Open 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-19T03:15:47.328677" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:47.329065" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:47.324494" elapsed="0.004832"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:46.962294" elapsed="0.367283"/>
</kw>
<msg time="2026-04-19T03:15:47.329932" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:46.961254" elapsed="0.368746"/>
</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-19T03:15:46.960358" elapsed="0.369746"/>
</kw>
<msg time="2026-04-19T03:15:47.330147" 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-19T03:15:46.959577" elapsed="0.370618"/>
</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-19T03:15:47.333428" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:15:47.333929" elapsed="0.000190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:47.334289" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:47.330494" elapsed="0.003950"/>
</kw>
<msg time="2026-04-19T03:15:47.334540" level="INFO">${output} = 1</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-19T03:15:46.958280" elapsed="0.376286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:47.335107" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:47.334791" elapsed="0.000364"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:47.335202" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:15:47.335367" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:46.956353" elapsed="0.379039"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:47.335440" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:15:47.335587" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:46.954005" elapsed="0.381607"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:47.336295" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:47.335788" elapsed="0.000586">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:46.952901" elapsed="0.383591">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:49.339977" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:49.339221" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:49.341710" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:49.341322" elapsed="0.000425"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:49.342867" 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-19T03:15:49.343224" 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-19T03:15:49.342648" elapsed="0.000615"/>
</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-19T03:15:49.348975" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:49.348309" elapsed="0.000800"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:49.347870" elapsed="0.001325"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:49.351239" 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-19T03:15:49.351582" 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-19T03:15:49.350574" elapsed="0.001148"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:49.353701" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:49.353157" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:49.355526" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:49.354799" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:49.357888" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:49.357966" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:49.357598" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:49.358218" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:49.359484" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:49.709878" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:49.359157" elapsed="0.350862"/>
</kw>
<msg time="2026-04-19T03:15:49.710118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:49.358768" elapsed="0.351439"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:49.356827" elapsed="0.353656"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:49.711954" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:49.734684" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:49.734908" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:49.735074" 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-19T03:15:49.711564" elapsed="0.023605"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:49.736161" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:49.737556" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:49.737120" elapsed="0.000540"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:49.738081" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:49.737823" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:49.737766" elapsed="0.000448"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:49.738560" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:15:49.738359" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:49.738311" elapsed="0.000407"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:49.738796" 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-19T03:15:49.743548" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:15:49.744179" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:49.744539" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:49.740214" elapsed="0.004534"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:49.345980" elapsed="0.398989"/>
</kw>
<msg time="2026-04-19T03:15:49.745290" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:49.345047" elapsed="0.400300"/>
</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-19T03:15:49.344254" elapsed="0.401177"/>
</kw>
<msg time="2026-04-19T03:15:49.745474" 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-19T03:15:49.343491" elapsed="0.402031"/>
</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-19T03:15:49.748532" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:15:49.749006" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:49.749315" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:49.745813" elapsed="0.003648"/>
</kw>
<msg time="2026-04-19T03:15:49.749550" level="INFO">${output} = 1</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-19T03:15:49.342072" elapsed="0.407504"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:49.749996" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:49.749753" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:49.750099" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:15:49.750249" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:49.340598" elapsed="0.409676"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:49.750319" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:15:49.750465" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:49.338376" elapsed="0.412113"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:49.751126" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:49.750643" elapsed="0.000562">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:49.337298" elapsed="0.414019">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:51.754655" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:51.753908" elapsed="0.000815"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:51.757717" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:51.757126" elapsed="0.000650"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:51.759572" 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-19T03:15:51.759792" 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-19T03:15:51.759203" elapsed="0.000647"/>
</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-19T03:15:51.766279" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:51.765545" elapsed="0.000934"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:51.765150" elapsed="0.001418"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:51.768687" 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-19T03:15:51.769055" 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-19T03:15:51.768024" elapsed="0.001179"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:51.771561" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:51.770628" elapsed="0.001088"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:51.773467" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:51.772760" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:51.775887" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:51.775963" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:51.775604" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:51.776209" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:51.777467" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:52.100049" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:51.777141" elapsed="0.323069"/>
</kw>
<msg time="2026-04-19T03:15:52.100296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:51.776763" elapsed="0.323624"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:51.774744" elapsed="0.325932"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:52.102194" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:52.125208" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:52.125701" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:52.126080" 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-19T03:15:52.101775" elapsed="0.024524"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:52.128564" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:52.131762" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:52.130748" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:52.132956" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:52.132469" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:52.132346" elapsed="0.000929"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:52.134062" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T03:15:52.133594" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:52.133488" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:52.134697" elapsed="0.000084"/>
</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-19T03:15:52.141437" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:52.141989" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:52.142361" 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-19T03:15:52.136312" elapsed="0.006255"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:51.762996" elapsed="0.379793"/>
</kw>
<msg time="2026-04-19T03:15:52.143210" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:51.761831" elapsed="0.381440"/>
</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-19T03:15:51.761017" elapsed="0.382334"/>
</kw>
<msg time="2026-04-19T03:15:52.143391" 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-19T03:15:51.760146" elapsed="0.383291"/>
</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-19T03:15:52.146478" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:15:52.146956" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:52.147292" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:52.143734" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T03:15:52.147532" level="INFO">${output} = 1</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-19T03:15:51.758276" elapsed="0.389281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:52.147993" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:52.147743" elapsed="0.000375"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:52.148164" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:15:52.148316" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:51.756188" elapsed="0.392154"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:52.148387" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:52.148529" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:51.753116" elapsed="0.395438"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:52.149112" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:52.148708" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:51.752103" elapsed="0.397187">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:54.152682" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:54.151933" elapsed="0.000817"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:54.155758" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:54.154160" elapsed="0.001642"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:54.157019" 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-19T03:15:54.157194" 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-19T03:15:54.156792" elapsed="0.000442"/>
</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-19T03:15:54.162831" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:54.162148" elapsed="0.000798"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:54.162063" elapsed="0.000990"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:54.165531" 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-19T03:15:54.165894" 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-19T03:15:54.164532" elapsed="0.001593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:54.167979" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:54.167438" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:54.169838" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:54.169148" elapsed="0.000787"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:54.172303" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:54.172382" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:54.172005" 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-19T03:15:54.172618" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:54.173896" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:54.483942" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:54.173572" elapsed="0.310565"/>
</kw>
<msg time="2026-04-19T03:15:54.484257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:54.173208" elapsed="0.311146"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:54.171253" elapsed="0.313406"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:54.486282" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:54.508904" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:54.509469" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:54.509812" 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-19T03:15:54.485817" elapsed="0.024210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:54.512343" elapsed="0.000957"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:54.515663" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:54.514655" elapsed="0.001241"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:54.516853" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:54.516297" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:54.516166" elapsed="0.001032"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:54.517982" elapsed="0.000320"/>
</return>
<status status="PASS" start="2026-04-19T03:15:54.517529" elapsed="0.000886"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:54.517422" elapsed="0.001120"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:54.518715" elapsed="0.000081"/>
</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-19T03:15:54.526012" elapsed="0.000573"/>
</kw>
<kw name="Open 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-19T03:15:54.526884" elapsed="0.000256"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:54.527415" 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-19T03:15:54.520749" elapsed="0.006959"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:54.160078" elapsed="0.367941"/>
</kw>
<msg time="2026-04-19T03:15:54.528470" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:54.159068" elapsed="0.369483"/>
</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-19T03:15:54.158243" elapsed="0.370430"/>
</kw>
<msg time="2026-04-19T03:15:54.528731" 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-19T03:15:54.157468" elapsed="0.371328"/>
</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-19T03:15:54.532415" 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-19T03:15:54.532909" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:54.533266" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:54.529407" elapsed="0.004013"/>
</kw>
<msg time="2026-04-19T03:15:54.533514" level="INFO">${output} = 1</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-19T03:15:54.156165" elapsed="0.377374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:54.533976" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:54.533723" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:54.534136" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:15:54.534308" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:54.153226" elapsed="0.381107"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:54.534384" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:15:54.534535" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:54.151138" elapsed="0.383422"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:54.535145" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:54.534720" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:54.150103" elapsed="0.385236">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:56.539275" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:56.538435" elapsed="0.000916"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:56.541595" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:56.540874" elapsed="0.000797"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:56.543765" 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-19T03:15:56.544013" 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-19T03:15:56.543395" elapsed="0.000737"/>
</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-19T03:15:56.551828" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:56.551352" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:56.551292" elapsed="0.000678"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:56.553833" 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-19T03:15:56.554099" 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-19T03:15:56.553057" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:56.556737" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:56.556184" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:56.558613" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:56.557890" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:56.561180" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:56.561295" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:56.560839" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:56.561661" elapsed="0.000577"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:56.563543" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:56.884218" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:56.563080" elapsed="0.321307"/>
</kw>
<msg time="2026-04-19T03:15:56.884475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:56.562553" elapsed="0.322017"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:56.559943" elapsed="0.324933"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:56.886428" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:56.909696" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:56.910263" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:56.910599" 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-19T03:15:56.885994" elapsed="0.024817"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:56.913101" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:56.916277" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:56.915286" elapsed="0.001223"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:56.917383" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:56.916905" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:56.916734" elapsed="0.000834"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:56.918078" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:15:56.917775" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:56.917708" elapsed="0.000596"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:56.918419" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:56.925220" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:15:56.925979" elapsed="0.000248"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:56.926499" elapsed="0.000139"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:56.920343" elapsed="0.006445"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:56.549366" elapsed="0.377854"/>
</kw>
<msg time="2026-04-19T03:15:56.927650" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:56.547419" elapsed="0.380311"/>
</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-19T03:15:56.546184" elapsed="0.381658"/>
</kw>
<msg time="2026-04-19T03:15:56.927899" 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-19T03:15:56.544601" elapsed="0.383362"/>
</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-19T03:15:56.931438" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:15:56.931914" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:56.932227" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:56.928389" elapsed="0.003986"/>
</kw>
<msg time="2026-04-19T03:15:56.932649" level="INFO">${output} = 1</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-19T03:15:56.542248" elapsed="0.390427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:56.933133" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:56.932866" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:56.933221" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:15:56.933375" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:56.539850" elapsed="0.393550"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:56.933448" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:15:56.933746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:56.537463" elapsed="0.396308"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:56.934364" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:56.933930" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:56.536249" elapsed="0.398305">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:15:58.938105" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:15:58.937352" elapsed="0.000823"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:15:58.940178" level="INFO">${member_ip} = 10.30.171.206</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-19T03:15:58.939550" elapsed="0.000688"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:58.941998" 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-19T03:15:58.942255" 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-19T03:15:58.941678" elapsed="0.000636"/>
</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-19T03:15:58.949881" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:15:58.949410" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:58.949354" elapsed="0.000666"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:58.951830" 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-19T03:15:58.952096" 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-19T03:15:58.951137" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:58.953745" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:58.953194" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:15:58.955852" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:15:58.955151" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:15:58.958289" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:15:58.958369" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:15:58.957982" 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-19T03:15:58.958608" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:15:58.960000" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:15:59.270905" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:15:58.959674" elapsed="0.311507"/>
</kw>
<msg time="2026-04-19T03:15:59.271264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:58.959310" elapsed="0.312047"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:15:58.957217" elapsed="0.314422"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:15:59.273222" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:15:59.296815" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:15:59.297591" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:15:59.297942" 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-19T03:15:59.272806" elapsed="0.025403"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:59.300590" elapsed="0.000973"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:59.303876" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:59.302844" elapsed="0.001347"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:59.305142" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:15:59.304554" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:59.304426" elapsed="0.001014"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:15:59.306356" elapsed="0.000130"/>
</return>
<status status="PASS" start="2026-04-19T03:15:59.305765" elapsed="0.000830"/>
</branch>
<status status="PASS" start="2026-04-19T03:15:59.305657" elapsed="0.001067"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:15:59.306902" elapsed="0.000084"/>
</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-19T03:15:59.312594" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T03:15:59.313168" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:59.313535" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:59.309040" elapsed="0.004707"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:15:58.946523" elapsed="0.367451"/>
</kw>
<msg time="2026-04-19T03:15:59.314339" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:15:58.945056" elapsed="0.369348"/>
</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-19T03:15:58.943805" elapsed="0.370684"/>
</kw>
<msg time="2026-04-19T03:15:59.314547" 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-19T03:15:58.942662" elapsed="0.371961"/>
</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-19T03:15:59.317934" 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-19T03:15:59.318530" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:15:59.318828" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:15:59.314994" elapsed="0.003984"/>
</kw>
<msg time="2026-04-19T03:15:59.319087" level="INFO">${output} = 1</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-19T03:15:58.940741" elapsed="0.378373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:15:59.319546" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:15:59.319296" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:15:59.319634" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:15:59.319788" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:15:58.938620" elapsed="0.381193"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:15:59.319888" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:15:59.320063" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:15:58.936455" elapsed="0.383634"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:15:59.320736" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:15:59.320326" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:15:58.935412" elapsed="0.385517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:01.324640" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:01.323810" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:01.326805" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:01.326192" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:01.328686" 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-19T03:16:01.328913" 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-19T03:16:01.328345" elapsed="0.000628"/>
</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-19T03:16:01.335750" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:01.334848" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:01.334788" elapsed="0.001108"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:01.337372" 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-19T03:16:01.337616" 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-19T03:16:01.336898" elapsed="0.000815"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:01.339250" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:01.338676" elapsed="0.000684"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:01.341137" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:01.340427" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:01.343554" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:01.343634" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:01.343240" 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-19T03:16:01.343869" elapsed="0.000540"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:01.345328" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:01.665912" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:15:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:01.344990" elapsed="0.321083"/>
</kw>
<msg time="2026-04-19T03:16:01.666164" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:01.344629" elapsed="0.321630"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:01.342442" elapsed="0.324098"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:01.668020" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:01.691101" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:01.691630" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:01.691967" 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-19T03:16:01.667635" elapsed="0.024583"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:01.694438" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:01.697574" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:01.696601" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:01.698688" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:01.698188" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:01.698060" elapsed="0.000923"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:01.699849" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:16:01.699342" elapsed="0.000895"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:01.699232" elapsed="0.001120"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:01.700432" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:01.705144" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T03:16:01.705745" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:01.706119" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:01.701760" elapsed="0.004569"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:01.333456" elapsed="0.373100"/>
</kw>
<msg time="2026-04-19T03:16:01.706866" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:01.331944" elapsed="0.374981"/>
</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-19T03:16:01.330546" elapsed="0.376460"/>
</kw>
<msg time="2026-04-19T03:16:01.707063" 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-19T03:16:01.329356" elapsed="0.377755"/>
</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-19T03:16:01.710133" 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-19T03:16:01.710611" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:01.710905" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:01.707402" elapsed="0.003669"/>
</kw>
<msg time="2026-04-19T03:16:01.711162" level="INFO">${output} = 1</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-19T03:16:01.327381" elapsed="0.383807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:01.711655" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:01.711370" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:01.711743" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:01.711893" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:01.325248" elapsed="0.386669"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:01.711964" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:16:01.712211" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:01.322948" elapsed="0.389288"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:01.712781" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:01.712392" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:01.321766" elapsed="0.391196">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:03.716609" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:03.715767" elapsed="0.000914"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:03.718905" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:03.718295" elapsed="0.000672"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:03.720833" 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-19T03:16:03.721093" 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-19T03:16:03.720502" elapsed="0.000655"/>
</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-19T03:16:03.727935" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:03.727370" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:03.727055" elapsed="0.001060"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:03.729654" 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-19T03:16:03.729910" 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-19T03:16:03.729171" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:03.731625" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:03.731062" elapsed="0.000682"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:03.733656" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:03.732862" elapsed="0.000930"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:03.736506" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:03.736593" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:03.735965" elapsed="0.000652"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:03.736836" elapsed="0.000408"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:03.738270" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:04.058233" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:03.737910" elapsed="0.320472"/>
</kw>
<msg time="2026-04-19T03:16:04.058471" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:03.737513" elapsed="0.321059"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:03.735106" elapsed="0.323758"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:04.060467" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:04.083479" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:04.084077" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:04.084456" 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-19T03:16:04.060060" elapsed="0.024619"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:04.086975" elapsed="0.001003"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:04.090545" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:04.089363" elapsed="0.001426"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:04.092072" elapsed="0.000089"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:04.091203" elapsed="0.001087"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:04.091072" elapsed="0.001338"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:04.092789" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T03:16:04.092562" elapsed="0.000337"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:04.092513" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:04.093116" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:04.098091" elapsed="0.000352"/>
</kw>
<kw name="Open 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-19T03:16:04.098665" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:04.099119" 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-19T03:16:04.094508" elapsed="0.004918"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:03.725551" elapsed="0.374116"/>
</kw>
<msg time="2026-04-19T03:16:04.100006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:03.723999" elapsed="0.376084"/>
</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-19T03:16:03.722725" elapsed="0.377445"/>
</kw>
<msg time="2026-04-19T03:16:04.100212" 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-19T03:16:03.721512" elapsed="0.378748"/>
</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-19T03:16:04.103340" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:04.103853" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:04.104170" 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-19T03:16:04.100560" elapsed="0.003763"/>
</kw>
<msg time="2026-04-19T03:16:04.104417" level="INFO">${output} = 1</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-19T03:16:03.719513" elapsed="0.384930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:04.104877" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:04.104624" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:04.104964" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:04.105137" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:03.717342" elapsed="0.387821"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:04.105212" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:16:04.105374" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:03.714887" elapsed="0.390519"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:04.105971" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:04.105566" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:03.713788" elapsed="0.392404">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:06.109791" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:06.109053" elapsed="0.000809"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:06.111888" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:06.111288" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:06.113679" 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-19T03:16:06.113929" 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-19T03:16:06.113458" elapsed="0.000510"/>
</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-19T03:16:06.119745" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:06.119093" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:06.118694" elapsed="0.001247"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:06.121955" 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-19T03:16:06.122335" 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-19T03:16:06.121334" elapsed="0.001137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:06.124654" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:06.123880" elapsed="0.000972"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:06.126734" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:06.126016" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:06.129254" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:06.129334" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:06.128926" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:06.129573" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:06.130862" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:06.455297" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:06.130535" elapsed="0.324916"/>
</kw>
<msg time="2026-04-19T03:16:06.455535" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:06.130168" elapsed="0.325456"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:06.128150" elapsed="0.327799"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:06.457511" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:06.480285" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:06.480862" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:06.481245" 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-19T03:16:06.457114" elapsed="0.024341"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:06.483728" elapsed="0.001007"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:06.486509" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:06.485810" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:06.487325" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:06.486896" elapsed="0.000557"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:06.486813" elapsed="0.000726"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:06.488133" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T03:16:06.487787" elapsed="0.000517"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:06.487713" elapsed="0.000680"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:06.488511" elapsed="0.000055"/>
</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-19T03:16:06.498546" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T03:16:06.499306" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:06.499684" 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-19T03:16:06.490487" elapsed="0.009409"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:06.116632" elapsed="0.383504"/>
</kw>
<msg time="2026-04-19T03:16:06.500461" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:06.115693" elapsed="0.384839"/>
</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-19T03:16:06.114929" elapsed="0.385684"/>
</kw>
<msg time="2026-04-19T03:16:06.500654" 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-19T03:16:06.114214" elapsed="0.386485"/>
</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-19T03:16:06.503700" elapsed="0.000505"/>
</kw>
<kw name="Open 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-19T03:16:06.504383" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:06.504682" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:06.501009" elapsed="0.003820"/>
</kw>
<msg time="2026-04-19T03:16:06.504921" level="INFO">${output} = 1</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-19T03:16:06.112460" elapsed="0.392486"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:06.505419" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:06.505167" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:06.505511" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:16:06.505669" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:06.110346" elapsed="0.395348"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:06.505740" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:16:06.505879" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:06.108188" elapsed="0.397715"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:06.506618" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:06.506226" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:06.107024" elapsed="0.399776">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:08.510828" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:08.510005" elapsed="0.000896"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:08.513067" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:08.512391" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:08.515092" 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-19T03:16:08.515336" 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-19T03:16:08.514693" elapsed="0.000704"/>
</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-19T03:16:08.523373" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:08.522877" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:08.522819" elapsed="0.000762"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:08.525289" 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-19T03:16:08.525543" 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-19T03:16:08.524582" elapsed="0.001075"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:08.527230" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:08.526651" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:08.529069" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:08.528333" elapsed="0.000838"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:08.531614" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:08.531694" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:08.531323" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:08.531934" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:08.533263" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:08.844630" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:08.532894" elapsed="0.311871"/>
</kw>
<msg time="2026-04-19T03:16:08.844847" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:08.532525" elapsed="0.312407"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:08.530525" elapsed="0.314704"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:08.846794" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:08.869329" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:08.869881" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:08.870276" 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-19T03:16:08.846386" elapsed="0.024197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:08.873058" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:08.876428" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:08.875349" elapsed="0.001311"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:08.877589" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:08.877012" elapsed="0.000657"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:08.876888" elapsed="0.000837"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:08.878103" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T03:16:08.877871" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:08.877821" elapsed="0.000450"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:08.878351" 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-19T03:16:08.883242" 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-19T03:16:08.883930" elapsed="0.000278"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:08.884408" 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-19T03:16:08.879718" elapsed="0.004902"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:08.519969" elapsed="0.364876"/>
</kw>
<msg time="2026-04-19T03:16:08.885266" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:08.518406" elapsed="0.366923"/>
</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-19T03:16:08.517106" elapsed="0.368310"/>
</kw>
<msg time="2026-04-19T03:16:08.885458" 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-19T03:16:08.515786" elapsed="0.369719"/>
</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-19T03:16:08.888598" elapsed="0.000476"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:08.889306" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:08.889626" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:08.885801" elapsed="0.003976"/>
</kw>
<msg time="2026-04-19T03:16:08.889870" level="INFO">${output} = 1</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-19T03:16:08.513675" elapsed="0.376220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:08.890349" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:08.890100" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:08.890438" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:08.890592" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:08.511402" elapsed="0.379215"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:08.890664" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:08.890809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:08.509100" elapsed="0.381733"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:08.891409" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:08.890989" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:08.507936" elapsed="0.383671">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:10.895277" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:10.894417" elapsed="0.000932"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:10.897431" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:10.896793" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:10.899337" 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-19T03:16:10.899567" 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-19T03:16:10.898970" elapsed="0.000655"/>
</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-19T03:16:10.905917" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:10.905447" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:10.905390" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:10.907778" 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-19T03:16:10.908080" 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-19T03:16:10.907069" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:10.909704" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:10.909162" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:10.911574" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:10.910861" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:10.914281" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:10.914359" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:10.913975" 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-19T03:16:10.914593" elapsed="0.000359"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:10.915881" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:11.269728" 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 Sun Apr 19 03:15:13 UTC 2026

  System load:  0.18               Processes:             125
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:10.915556" elapsed="0.354271"/>
</kw>
<msg time="2026-04-19T03:16:11.269894" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:10.915192" elapsed="0.354780"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:10.913221" elapsed="0.357002"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:11.271904" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:11.294646" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:11.295219" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:11.295552" 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-19T03:16:11.271548" elapsed="0.024215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:11.297993" elapsed="0.000962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:11.301332" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:11.300286" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:11.302448" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:11.301901" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:11.301781" elapsed="0.000963"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:11.303548" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T03:16:11.303096" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:11.302956" elapsed="0.000980"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:11.304179" elapsed="0.000085"/>
</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-19T03:16:11.310492" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:16:11.311050" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:11.311405" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:11.307079" elapsed="0.004535"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:10.903903" elapsed="0.407937"/>
</kw>
<msg time="2026-04-19T03:16:11.312172" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:10.902500" elapsed="0.409729"/>
</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-19T03:16:10.901261" elapsed="0.411053"/>
</kw>
<msg time="2026-04-19T03:16:11.312355" 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-19T03:16:10.899976" elapsed="0.412425"/>
</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-19T03:16:11.315593" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T03:16:11.316108" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:11.316409" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:11.312750" elapsed="0.003809"/>
</kw>
<msg time="2026-04-19T03:16:11.316650" level="INFO">${output} = 1</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-19T03:16:10.898005" elapsed="0.418671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:11.317181" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:11.316856" elapsed="0.000372"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:11.317272" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:11.317424" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:10.895831" elapsed="0.421618"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:11.317497" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:11.317647" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:10.893565" elapsed="0.424108"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:11.318345" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:11.317832" elapsed="0.000610">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:10.892454" elapsed="0.426120">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:13.322288" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:13.321484" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:13.324543" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:13.323829" elapsed="0.000776"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:13.326051" 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-19T03:16:13.326202" 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-19T03:16:13.325800" elapsed="0.000441"/>
</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-19T03:16:13.331806" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:13.331156" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:13.331075" elapsed="0.000944"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:13.334472" 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-19T03:16:13.334828" 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-19T03:16:13.333453" elapsed="0.001521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:13.337205" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:13.336487" elapsed="0.000832"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:13.339196" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:13.338340" elapsed="0.000961"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:13.341648" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:13.341730" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:13.341356" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:13.341968" elapsed="0.000452"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:13.343541" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:13.915174" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:13.343024" elapsed="0.572296"/>
</kw>
<msg time="2026-04-19T03:16:13.915402" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:13.342652" elapsed="0.572843"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:13.340537" elapsed="0.575266"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:13.917287" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:13.940294" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:13.940528" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:13.940677" 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-19T03:16:13.916873" elapsed="0.023906"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:13.941783" elapsed="0.000451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:13.943278" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:13.942815" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:13.943811" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:13.943550" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:13.943489" elapsed="0.000462"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:13.944322" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T03:16:13.944116" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:13.944064" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:13.944563" 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-19T03:16:13.949500" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:16:13.950081" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:13.950442" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:13.946065" elapsed="0.004588"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:13.329135" elapsed="0.621742"/>
</kw>
<msg time="2026-04-19T03:16:13.951346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:13.327992" elapsed="0.623414"/>
</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-19T03:16:13.327228" elapsed="0.624259"/>
</kw>
<msg time="2026-04-19T03:16:13.951529" 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-19T03:16:13.326465" elapsed="0.625110"/>
</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-19T03:16:13.954574" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:13.955100" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:13.955399" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:13.951898" elapsed="0.003648"/>
</kw>
<msg time="2026-04-19T03:16:13.955721" level="INFO">${output} = 1</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-19T03:16:13.325160" elapsed="0.630592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:13.956210" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:13.955939" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:13.956297" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:13.956449" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:13.322835" elapsed="0.633639"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:13.956521" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:16:13.956667" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:13.320601" elapsed="0.636090"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:13.957260" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:13.956847" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:13.319437" elapsed="0.638013">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:15.961161" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:15.960393" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:15.963290" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:15.962651" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:15.965231" 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-19T03:16:15.965463" 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-19T03:16:15.964860" elapsed="0.000662"/>
</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-19T03:16:15.971670" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:15.970685" elapsed="0.001097"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:15.970609" elapsed="0.001254"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:15.973960" 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-19T03:16:15.974340" 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-19T03:16:15.973335" elapsed="0.001142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:15.976716" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:15.975945" elapsed="0.000925"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:15.979260" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:15.978275" elapsed="0.001081"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:15.981581" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:15.981668" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:15.981296" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:15.981906" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:15.983320" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:16.285700" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:15.982845" elapsed="0.303060"/>
</kw>
<msg time="2026-04-19T03:16:16.285987" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:15.982487" elapsed="0.303605"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:15.980530" elapsed="0.305817"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:16.287795" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:16.310660" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:16.311325" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:16.311691" 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-19T03:16:16.287415" elapsed="0.024503"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:16.314471" elapsed="0.001008"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:16.318099" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:16.316877" elapsed="0.001477"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:16.319319" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:16.318749" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:16.318617" elapsed="0.001045"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:16.320595" elapsed="0.000134"/>
</return>
<status status="PASS" start="2026-04-19T03:16:16.320021" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:16.319905" elapsed="0.001084"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:16.321287" elapsed="0.000112"/>
</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-19T03:16:16.328852" 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-19T03:16:16.329534" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:16.329914" elapsed="0.000123"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:16.324735" elapsed="0.005414"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:15.968732" elapsed="0.361642"/>
</kw>
<msg time="2026-04-19T03:16:16.330683" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:15.967789" elapsed="0.362961"/>
</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-19T03:16:15.967014" elapsed="0.363823"/>
</kw>
<msg time="2026-04-19T03:16:16.330880" 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-19T03:16:15.965921" elapsed="0.365008"/>
</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-19T03:16:16.333981" 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-19T03:16:16.334500" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:16.334826" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:16.331251" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T03:16:16.335103" level="INFO">${output} = 1</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-19T03:16:15.963832" elapsed="0.371298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:16.335575" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:16.335314" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:16.335666" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:16.335831" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:15.961704" elapsed="0.374156"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:16.335909" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:16:16.336090" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:15.959393" elapsed="0.376725"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:16.336759" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:16.336348" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:15.958327" elapsed="0.378631">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:18.340730" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:18.339893" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:18.343137" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:18.342354" elapsed="0.000848"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:18.345291" 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-19T03:16:18.345556" 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-19T03:16:18.344885" elapsed="0.000772"/>
</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-19T03:16:18.352276" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:18.351721" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:18.351284" elapsed="0.001139"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:18.353956" 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-19T03:16:18.354308" 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-19T03:16:18.353450" elapsed="0.000982"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:18.356806" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:18.355901" elapsed="0.001024"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:18.358679" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:18.357918" elapsed="0.000867"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:18.361265" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:18.361343" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:18.360956" 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-19T03:16:18.361581" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:18.362885" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:18.689071" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:18.362548" elapsed="0.326686"/>
</kw>
<msg time="2026-04-19T03:16:18.689320" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:18.362184" elapsed="0.327228"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:18.360188" elapsed="0.329513"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:18.691242" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:18.714152" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:18.714657" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:18.714987" 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-19T03:16:18.690809" elapsed="0.024473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:18.717494" elapsed="0.000971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:18.720774" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:18.719724" elapsed="0.001276"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:18.721891" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:18.721392" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:18.721267" elapsed="0.000956"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:18.723002" elapsed="0.000152"/>
</return>
<status status="PASS" start="2026-04-19T03:16:18.722545" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:18.722438" elapsed="0.001010"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:18.723628" elapsed="0.000088"/>
</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-19T03:16:18.728875" 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-19T03:16:18.729449" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:18.729806" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:18.725319" elapsed="0.004750"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:18.349326" elapsed="0.380992"/>
</kw>
<msg time="2026-04-19T03:16:18.730635" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:18.348228" elapsed="0.382466"/>
</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-19T03:16:18.347363" elapsed="0.383415"/>
</kw>
<msg time="2026-04-19T03:16:18.730820" 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-19T03:16:18.346156" elapsed="0.384711"/>
</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-19T03:16:18.733917" 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-19T03:16:18.734416" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:18.734709" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:18.731181" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T03:16:18.734949" level="INFO">${output} = 1</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-19T03:16:18.343775" elapsed="0.391202"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:18.735557" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:18.735298" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:18.735646" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:18.735800" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:18.341305" elapsed="0.394520"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:18.735872" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:18.736018" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:18.338946" elapsed="0.397114"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:18.736619" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:18.736220" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:18.337802" elapsed="0.399009">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:20.740466" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:20.739562" elapsed="0.000986"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:20.742812" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:20.742373" elapsed="0.000483"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:20.744195" 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-19T03:16:20.744365" 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-19T03:16:20.743902" elapsed="0.000504"/>
</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-19T03:16:20.750718" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:20.750012" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:20.749624" elapsed="0.001300"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:20.753120" 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-19T03:16:20.753477" 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-19T03:16:20.752422" elapsed="0.001245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:20.755310" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:20.754745" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:20.757201" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:20.756407" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:20.759760" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:20.759839" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:20.759478" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:20.760092" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:20.761353" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:21.109929" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:20.761012" elapsed="0.349079"/>
</kw>
<msg time="2026-04-19T03:16:21.110177" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:20.760650" elapsed="0.349617"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:20.758698" elapsed="0.351858"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:21.112070" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:21.135010" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:21.135548" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:21.135875" 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-19T03:16:21.111655" elapsed="0.024469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:21.138344" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:21.141459" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:21.140482" elapsed="0.001205"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:21.142691" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:21.142083" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:21.141907" elapsed="0.001080"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:21.143797" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:16:21.143349" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:21.143241" elapsed="0.001055"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:21.144471" elapsed="0.000080"/>
</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-19T03:16:21.151761" 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-19T03:16:21.152359" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:21.152722" 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-19T03:16:21.146613" elapsed="0.006313"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:20.747637" elapsed="0.405554"/>
</kw>
<msg time="2026-04-19T03:16:21.153505" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:20.746473" elapsed="0.407089"/>
</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-19T03:16:20.745579" elapsed="0.408062"/>
</kw>
<msg time="2026-04-19T03:16:21.153682" 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-19T03:16:20.744678" elapsed="0.409048"/>
</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-19T03:16:21.156792" elapsed="0.000455"/>
</kw>
<kw name="Open 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-19T03:16:21.157426" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:21.157723" 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-19T03:16:21.154014" elapsed="0.003856"/>
</kw>
<msg time="2026-04-19T03:16:21.157960" level="INFO">${output} = 1</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-19T03:16:20.743238" elapsed="0.414747"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:21.158435" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:21.158185" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:21.158521" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:21.158778" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:20.741319" elapsed="0.417485"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:21.158852" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:16:21.158996" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:20.738725" elapsed="0.420295"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:21.159581" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:21.159193" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:20.737661" elapsed="0.422102">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:23.163188" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:23.162426" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:23.165012" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:23.164614" elapsed="0.000458"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:23.166203" 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-19T03:16:23.166468" 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-19T03:16:23.165957" elapsed="0.000549"/>
</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-19T03:16:23.171875" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:23.171149" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:23.171066" elapsed="0.001028"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:23.174410" 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-19T03:16:23.174771" 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-19T03:16:23.173478" elapsed="0.001433"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:23.176876" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:23.176334" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:23.178684" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:23.177971" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:23.181220" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:23.181298" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:23.180913" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:23.181535" elapsed="0.000371"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:23.182867" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:23.534439" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:23.182521" elapsed="0.352073"/>
</kw>
<msg time="2026-04-19T03:16:23.534682" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:23.182153" elapsed="0.352621"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:23.180012" elapsed="0.355092"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:23.536599" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:23.549184" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:23.549683" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:23.550014" 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-19T03:16:23.536205" elapsed="0.014067"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:23.552512" elapsed="0.001129"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:23.555962" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:23.554897" elapsed="0.001321"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:23.556762" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:23.556441" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:23.556362" 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-19T03:16:23.557450" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:16:23.557170" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:23.557102" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:23.557787" elapsed="0.000051"/>
</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-19T03:16:23.564517" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T03:16:23.565393" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:23.565892" 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-19T03:16:23.559718" elapsed="0.006567"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:23.169219" elapsed="0.397372"/>
</kw>
<msg time="2026-04-19T03:16:23.567011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:23.168257" elapsed="0.398856"/>
</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-19T03:16:23.167472" elapsed="0.399757"/>
</kw>
<msg time="2026-04-19T03:16:23.567554" 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-19T03:16:23.166731" elapsed="0.400900"/>
</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-19T03:16:23.570900" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:16:23.571415" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:23.571719" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:23.568080" elapsed="0.003791"/>
</kw>
<msg time="2026-04-19T03:16:23.571961" level="INFO">${output} = 1</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-19T03:16:23.165380" elapsed="0.406607"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:23.572448" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:23.572197" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:23.572536" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:23.572692" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:23.163768" elapsed="0.408948"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:23.572763" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:23.572907" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:23.161587" elapsed="0.411345"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:23.573496" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:23.573101" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:23.160549" elapsed="0.413135">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:25.577324" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:25.576529" elapsed="0.000867"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:25.579427" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:25.578858" elapsed="0.000606"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:25.580606" 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-19T03:16:25.580749" 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-19T03:16:25.580374" elapsed="0.000412"/>
</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-19T03:16:25.586214" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:25.585520" elapsed="0.000939"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:25.585442" elapsed="0.001104"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:25.588870" 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-19T03:16:25.589260" 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-19T03:16:25.587903" elapsed="0.001493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:25.591526" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:25.590793" elapsed="0.000910"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:25.593471" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:25.592699" elapsed="0.000871"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:25.595882" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:25.595960" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:25.595596" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:25.596213" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:25.597599" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:25.918764" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:25.597269" elapsed="0.321647"/>
</kw>
<msg time="2026-04-19T03:16:25.919001" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:25.596765" elapsed="0.322345"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:25.594805" elapsed="0.324591"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:25.920889" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:25.943695" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:25.944278" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:25.944640" 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-19T03:16:25.920496" elapsed="0.024356"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:25.947154" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:25.950355" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:25.949352" elapsed="0.001231"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:25.951455" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:25.950925" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:25.950804" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:25.952575" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:16:25.952100" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:25.951956" elapsed="0.000964"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:25.953409" elapsed="0.000087"/>
</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-19T03:16:25.961117" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:25.961662" elapsed="0.000210"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:25.962103" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:25.956440" elapsed="0.005913"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:25.583594" elapsed="0.378997"/>
</kw>
<msg time="2026-04-19T03:16:25.962968" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:25.582622" elapsed="0.380510"/>
</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-19T03:16:25.581789" elapsed="0.381434"/>
</kw>
<msg time="2026-04-19T03:16:25.963266" 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-19T03:16:25.581010" elapsed="0.382303"/>
</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-19T03:16:25.966344" 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-19T03:16:25.966823" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:25.967135" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:25.963610" elapsed="0.003677"/>
</kw>
<msg time="2026-04-19T03:16:25.967379" level="INFO">${output} = 1</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-19T03:16:25.579767" elapsed="0.387638"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:25.967829" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:25.967583" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:25.967916" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:25.968168" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:25.577851" elapsed="0.390346"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:25.968248" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:16:25.968399" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:25.575667" elapsed="0.392759"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:25.968983" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:25.968585" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:25.574529" elapsed="0.394674">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:27.972730" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:27.971939" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:27.974843" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:27.974233" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:27.976755" 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-19T03:16:27.976989" 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-19T03:16:27.976421" elapsed="0.000659"/>
</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-19T03:16:27.982692" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:27.982064" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:27.981969" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:27.985258" 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-19T03:16:27.985606" 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-19T03:16:27.984247" elapsed="0.001499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:27.987904" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:27.987147" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:27.990354" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:27.989528" elapsed="0.000923"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:27.992703" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:27.992782" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:27.992418" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:27.993018" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:27.994340" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:28.305654" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:27.993967" elapsed="0.311798"/>
</kw>
<msg time="2026-04-19T03:16:28.305838" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:27.993605" elapsed="0.312316"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:27.991634" elapsed="0.314555"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:28.307583" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:28.319689" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:28.320264" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:28.320602" 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-19T03:16:28.307228" elapsed="0.013585"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:28.323151" elapsed="0.001162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:28.326611" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:28.325593" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:28.327739" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:28.327227" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:28.327099" elapsed="0.000962"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:28.328904" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:16:28.328453" elapsed="0.000740"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:28.328342" elapsed="0.000997"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:28.329438" 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-19T03:16:28.334303" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:28.334855" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:28.335226" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:28.330795" elapsed="0.004640"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:27.979966" elapsed="0.355692"/>
</kw>
<msg time="2026-04-19T03:16:28.335965" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:27.978843" elapsed="0.357179"/>
</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-19T03:16:27.978096" elapsed="0.358046"/>
</kw>
<msg time="2026-04-19T03:16:28.336188" 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-19T03:16:27.977359" elapsed="0.358881"/>
</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-19T03:16:28.339377" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:16:28.339851" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:28.340220" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:28.336598" elapsed="0.003791"/>
</kw>
<msg time="2026-04-19T03:16:28.340484" level="INFO">${output} = 1</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-19T03:16:27.975420" elapsed="0.365090"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:28.340937" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:28.340687" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:28.341024" elapsed="0.000059"/>
</return>
<msg time="2026-04-19T03:16:28.341212" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:27.973287" elapsed="0.367951"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:28.341285" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:28.341432" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:27.971099" elapsed="0.370358"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:28.342027" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:28.341616" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:27.970017" elapsed="0.372293">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:30.345902" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:30.345174" elapsed="0.000799"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:30.347865" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:30.347481" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:30.349022" 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-19T03:16:30.349190" 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-19T03:16:30.348801" elapsed="0.000426"/>
</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-19T03:16:30.354852" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:30.353858" elapsed="0.001109"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:30.353782" elapsed="0.001289"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:30.357089" 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-19T03:16:30.357432" 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-19T03:16:30.356424" elapsed="0.001146"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:30.359676" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:30.358955" elapsed="0.000831"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:30.361494" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:30.360765" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:30.364164" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:30.364243" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:30.363867" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:30.364479" elapsed="0.000398"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:30.365805" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:30.666529" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:30.365481" elapsed="0.301368"/>
</kw>
<msg time="2026-04-19T03:16:30.666959" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:30.365116" elapsed="0.301985"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:30.362957" elapsed="0.304516"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:30.669383" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:30.692205" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:30.692718" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:30.693094" 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-19T03:16:30.668875" elapsed="0.024436"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:30.695521" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:30.697656" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:30.696978" elapsed="0.000831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:30.698513" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:30.698141" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:30.697984" elapsed="0.000748"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:30.699288" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T03:16:30.698954" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:30.698880" elapsed="0.000647"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:30.699645" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:30.706309" elapsed="0.000365"/>
</kw>
<kw name="Open 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-19T03:16:30.706887" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:30.707276" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:30.701763" 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-19T03:16:30.351936" elapsed="0.355779"/>
</kw>
<msg time="2026-04-19T03:16:30.708026" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:30.350964" elapsed="0.357137"/>
</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-19T03:16:30.350193" elapsed="0.357992"/>
</kw>
<msg time="2026-04-19T03:16:30.708227" 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-19T03:16:30.349448" elapsed="0.358826"/>
</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-19T03:16:30.711382" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:16:30.711880" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:30.712249" 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-19T03:16:30.708567" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T03:16:30.712563" level="INFO">${output} = 1</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-19T03:16:30.348225" elapsed="0.364364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:30.713049" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:30.712778" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:30.713140" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:30.713293" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:30.346487" elapsed="0.366832"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:30.713366" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:16:30.713509" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:30.344340" elapsed="0.369194"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:30.714120" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:30.713690" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:30.343288" elapsed="0.371019">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:32.718090" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:32.717230" elapsed="0.000939"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:32.720254" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:32.719621" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:32.722384" 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-19T03:16:32.722555" 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-19T03:16:32.721997" elapsed="0.000595"/>
</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-19T03:16:32.728248" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:32.727488" elapsed="0.000879"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:32.727106" elapsed="0.001345"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:32.730558" 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-19T03:16:32.730948" 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-19T03:16:32.729871" elapsed="0.001261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:32.734614" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:32.733261" elapsed="0.001463"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:32.736420" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:32.735699" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:32.738974" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:32.739066" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:32.738665" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:32.739302" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:32.740609" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:33.057909" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:32.740284" elapsed="0.318012"/>
</kw>
<msg time="2026-04-19T03:16:33.058423" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:32.739890" elapsed="0.318647"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:32.737771" elapsed="0.321149"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:33.061085" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:33.084290" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:33.084799" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:33.085245" 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-19T03:16:33.060528" elapsed="0.024936"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:33.087710" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:33.090872" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:33.089870" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:33.091988" elapsed="0.000102"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:33.091488" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:33.091367" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:33.093120" elapsed="0.000132"/>
</return>
<status status="PASS" start="2026-04-19T03:16:33.092638" elapsed="0.000724"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:33.092532" elapsed="0.000957"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:33.093666" 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-19T03:16:33.100805" 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-19T03:16:33.101386" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:33.101745" 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-19T03:16:33.096830" elapsed="0.005124"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:32.725265" elapsed="0.376967"/>
</kw>
<msg time="2026-04-19T03:16:33.102539" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:32.724308" elapsed="0.378288"/>
</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-19T03:16:32.723547" elapsed="0.379130"/>
</kw>
<msg time="2026-04-19T03:16:33.102718" 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-19T03:16:32.722816" elapsed="0.379948"/>
</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-19T03:16:33.105712" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:16:33.106277" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:33.106572" 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-19T03:16:33.103070" elapsed="0.003650"/>
</kw>
<msg time="2026-04-19T03:16:33.106811" level="INFO">${output} = 1</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-19T03:16:32.720800" elapsed="0.386037"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:33.107281" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:33.107018" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:33.107369" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:33.107522" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:32.718638" elapsed="0.388909"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:33.107595" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:33.107741" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:32.716354" elapsed="0.391412"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:33.108381" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:33.107969" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:32.715177" elapsed="0.393391">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:35.112142" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:35.111336" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:35.114253" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:35.113616" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:35.116175" 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-19T03:16:35.116409" 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-19T03:16:35.115766" elapsed="0.000703"/>
</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-19T03:16:35.122220" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:35.121556" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:35.121187" elapsed="0.001230"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:35.124455" 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-19T03:16:35.124793" 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-19T03:16:35.123800" elapsed="0.001134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:35.127159" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:35.126353" elapsed="0.000961"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:35.129469" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:35.128758" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:35.131850" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:35.131928" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:35.131565" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:35.132314" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:35.133562" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:35.454903" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:35.133242" elapsed="0.321746"/>
</kw>
<msg time="2026-04-19T03:16:35.455064" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:35.132868" elapsed="0.322270"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:35.130784" elapsed="0.324575"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:35.456718" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:35.479528" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:35.480075" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:35.480416" 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-19T03:16:35.456393" elapsed="0.024230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:35.482869" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:35.485408" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:35.484807" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:35.486127" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:35.485760" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:35.485687" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:35.486785" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:16:35.486509" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:35.486444" elapsed="0.000558"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:35.487132" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:35.496951" elapsed="0.000783"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:35.498240" elapsed="0.000339"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:35.499002" elapsed="0.000249"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:35.488913" elapsed="0.010570"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:35.119325" elapsed="0.380776"/>
</kw>
<msg time="2026-04-19T03:16:35.500791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:35.118373" elapsed="0.382540"/>
</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-19T03:16:35.117613" elapsed="0.383529"/>
</kw>
<msg time="2026-04-19T03:16:35.501233" 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-19T03:16:35.116819" elapsed="0.384514"/>
</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-19T03:16:35.506945" elapsed="0.000485"/>
</kw>
<kw name="Open 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-19T03:16:35.507674" elapsed="0.000259"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:35.508178" elapsed="0.000145"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:35.501997" elapsed="0.006403"/>
</kw>
<msg time="2026-04-19T03:16:35.508505" level="INFO">${output} = 1</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-19T03:16:35.114793" elapsed="0.393737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:35.508959" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:35.508708" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:35.509063" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:35.509218" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:35.112668" elapsed="0.396575"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:35.509289" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:35.509432" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:35.110493" elapsed="0.398964"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:35.510004" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:35.509611" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:35.109399" elapsed="0.400799">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:37.513723" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:37.512964" elapsed="0.000987"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:37.516172" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:37.515535" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:37.517977" 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-19T03:16:37.518236" 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-19T03:16:37.517655" elapsed="0.000641"/>
</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-19T03:16:37.524198" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:37.523543" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:37.523462" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:37.526736" 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-19T03:16:37.527210" 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-19T03:16:37.525784" elapsed="0.001569"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:37.529558" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:37.528768" elapsed="0.000943"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:37.532072" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:37.531229" elapsed="0.000941"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:37.534499" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:37.534577" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:37.534210" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:37.534826" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:37.536217" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:37.859228" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:37.535838" elapsed="0.323528"/>
</kw>
<msg time="2026-04-19T03:16:37.859444" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:37.535479" elapsed="0.324047"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:37.533395" elapsed="0.326396"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:37.861280" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:37.883751" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:37.883981" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:37.884157" 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-19T03:16:37.860876" elapsed="0.023379"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:37.885273" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:37.886886" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:37.886451" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:37.887468" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:37.887172" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:37.887111" elapsed="0.000491"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:37.887953" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T03:16:37.887750" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:37.887698" elapsed="0.000431"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:37.888208" 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-19T03:16:37.893802" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T03:16:37.894595" elapsed="0.000222"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:37.895109" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:37.889674" elapsed="0.005728"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:37.521460" elapsed="0.374259"/>
</kw>
<msg time="2026-04-19T03:16:37.896168" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:37.520516" elapsed="0.375732"/>
</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-19T03:16:37.519753" elapsed="0.376610"/>
</kw>
<msg time="2026-04-19T03:16:37.896419" 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-19T03:16:37.518687" elapsed="0.377796"/>
</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-19T03:16:37.900609" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:37.901150" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:37.901456" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:37.896889" elapsed="0.004716"/>
</kw>
<msg time="2026-04-19T03:16:37.901698" level="INFO">${output} = 1</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-19T03:16:37.516720" elapsed="0.385004"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:37.902167" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:37.901901" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:37.902255" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:37.902407" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:37.514569" elapsed="0.387977"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:37.902606" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:16:37.902771" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:37.512157" elapsed="0.390640"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:37.903380" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:37.902961" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:37.511112" elapsed="0.392453">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:39.907143" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:39.906374" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:39.909245" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:39.908612" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:39.910593" 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-19T03:16:39.910849" 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-19T03:16:39.910377" elapsed="0.000511"/>
</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-19T03:16:39.916211" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:39.915555" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:39.915478" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:39.918812" 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-19T03:16:39.919198" 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-19T03:16:39.917841" elapsed="0.001496"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:39.921657" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:39.920706" elapsed="0.001116"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:39.923793" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:39.923023" elapsed="0.000870"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:39.926204" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:39.926283" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:39.925894" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:39.926523" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:39.927951" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:40.245558" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:39.927625" elapsed="0.318141"/>
</kw>
<msg time="2026-04-19T03:16:40.245889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:39.927254" elapsed="0.318757"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:39.925111" elapsed="0.321313"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:40.248540" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:40.271634" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:40.272244" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:40.272584" 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-19T03:16:40.247970" elapsed="0.024832"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:40.275211" elapsed="0.001038"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:40.278680" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:40.277618" elapsed="0.001300"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:40.279871" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:40.279325" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:40.279193" elapsed="0.001021"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:40.281321" elapsed="0.000154"/>
</return>
<status status="PASS" start="2026-04-19T03:16:40.280578" elapsed="0.001023"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:40.280454" elapsed="0.001225"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:40.281783" 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-19T03:16:40.286657" elapsed="0.000443"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:40.287393" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:40.287779" 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-19T03:16:40.283151" elapsed="0.004852"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:39.913596" elapsed="0.374658"/>
</kw>
<msg time="2026-04-19T03:16:40.288584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:39.912633" elapsed="0.376019"/>
</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-19T03:16:39.911861" elapsed="0.376877"/>
</kw>
<msg time="2026-04-19T03:16:40.288782" 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-19T03:16:39.911134" elapsed="0.377697"/>
</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-19T03:16:40.291938" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:16:40.292452" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:40.292764" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:40.289194" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T03:16:40.293017" level="INFO">${output} = 1</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-19T03:16:39.909770" elapsed="0.383407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:40.293637" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:40.293372" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:40.293731" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:40.293888" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:39.907671" elapsed="0.386243"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:40.293962" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:40.294128" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:39.905530" elapsed="0.388623"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:40.294729" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:40.294315" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:39.904447" elapsed="0.390470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:42.298898" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:42.298143" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:42.300994" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:42.300446" elapsed="0.000605"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:42.302176" 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-19T03:16:42.302321" 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-19T03:16:42.301936" elapsed="0.000422"/>
</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-19T03:16:42.307894" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:42.307232" elapsed="0.000906"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:42.307153" elapsed="0.001074"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:42.310650" 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-19T03:16:42.311064" 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-19T03:16:42.309616" elapsed="0.001598"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:42.313306" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:42.312716" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:42.315102" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:42.314383" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:42.317642" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:42.317728" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:42.317352" 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-19T03:16:42.317980" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:42.319303" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:42.642351" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:42.318952" elapsed="0.323562"/>
</kw>
<msg time="2026-04-19T03:16:42.642603" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:42.318565" elapsed="0.324135"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:42.316542" elapsed="0.326463"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:42.644605" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:42.667024" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:42.667631" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:42.668107" 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-19T03:16:42.644187" elapsed="0.024153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:42.670769" elapsed="0.001235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:42.674497" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:42.673450" elapsed="0.001283"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:42.675685" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:42.675150" elapsed="0.000715"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:42.674962" elapsed="0.001098"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:42.676881" elapsed="0.000131"/>
</return>
<status status="PASS" start="2026-04-19T03:16:42.676410" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:42.676298" elapsed="0.001123"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:42.677605" elapsed="0.000088"/>
</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-19T03:16:42.684508" 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-19T03:16:42.685144" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:42.685509" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:42.680837" elapsed="0.004881"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:42.305222" elapsed="0.380721"/>
</kw>
<msg time="2026-04-19T03:16:42.686337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:42.304215" elapsed="0.382197"/>
</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-19T03:16:42.303383" elapsed="0.383117"/>
</kw>
<msg time="2026-04-19T03:16:42.686542" 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-19T03:16:42.302598" elapsed="0.383991"/>
</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-19T03:16:42.689740" 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-19T03:16:42.690255" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:42.690552" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:42.686900" elapsed="0.003815"/>
</kw>
<msg time="2026-04-19T03:16:42.690820" level="INFO">${output} = 1</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-19T03:16:42.301359" elapsed="0.389489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:42.691300" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:42.691027" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:42.691388" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:42.691543" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:42.299455" elapsed="0.392113"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:42.691614" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:42.691761" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:42.297265" elapsed="0.394529"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:42.692413" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:42.691992" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:42.296117" elapsed="0.396481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:44.696782" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:44.695743" elapsed="0.001111"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:44.699074" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:44.698331" elapsed="0.000811"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:44.700627" 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-19T03:16:44.700773" 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-19T03:16:44.700384" elapsed="0.000428"/>
</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-19T03:16:44.706709" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:44.705661" elapsed="0.001165"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:44.705580" elapsed="0.001354"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:44.709002" 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-19T03:16:44.709390" 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-19T03:16:44.708368" elapsed="0.001166"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:44.711858" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:44.711024" elapsed="0.000976"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:44.713925" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:44.713190" elapsed="0.000874"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:44.716665" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:44.716746" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:44.716375" 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-19T03:16:44.716994" elapsed="0.000524"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:44.718504" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:45.032054" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:44.718169" elapsed="0.314103"/>
</kw>
<msg time="2026-04-19T03:16:45.032420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:44.717752" elapsed="0.314828"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:44.715433" elapsed="0.317729"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:45.036205" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:45.058665" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:45.059264" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:45.059605" 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-19T03:16:45.035575" elapsed="0.024245"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:45.062125" elapsed="0.000938"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:45.065388" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:45.064382" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:45.066538" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:45.065980" elapsed="0.000780"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:45.065859" elapsed="0.001038"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:45.067754" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T03:16:45.067281" elapsed="0.000607"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:45.067160" elapsed="0.000788"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:45.068095" elapsed="0.000042"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:45.072865" 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-19T03:16:45.073455" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:45.073838" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:45.069443" elapsed="0.004628"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:44.703619" elapsed="0.370690"/>
</kw>
<msg time="2026-04-19T03:16:45.074617" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:44.702552" elapsed="0.372123"/>
</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-19T03:16:44.701780" elapsed="0.372998"/>
</kw>
<msg time="2026-04-19T03:16:45.074821" 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-19T03:16:44.701055" elapsed="0.373814"/>
</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-19T03:16:45.078046" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:16:45.078551" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:45.078875" 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-19T03:16:45.075299" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T03:16:45.079143" level="INFO">${output} = 1</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-19T03:16:44.699690" elapsed="0.379480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:45.079628" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:45.079366" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:45.079719" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:45.079876" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:44.697366" elapsed="0.382535"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:45.079950" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:16:45.080201" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:44.694804" elapsed="0.385422"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:45.080799" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:45.080396" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:44.693671" elapsed="0.387337">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:47.084567" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:47.083780" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:47.086741" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:47.086132" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:47.088003" 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-19T03:16:47.088171" 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-19T03:16:47.087773" elapsed="0.000435"/>
</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-19T03:16:47.094084" elapsed="0.000099"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:47.093143" elapsed="0.001118"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:47.092732" elapsed="0.001621"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:47.096489" 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-19T03:16:47.096828" 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-19T03:16:47.095837" elapsed="0.001127"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:47.099147" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:47.098373" elapsed="0.000883"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:47.100924" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:47.100217" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:47.103378" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:47.103455" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:47.102996" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:47.103689" elapsed="0.000434"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:47.105052" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:47.470353" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:47.104712" elapsed="0.365816"/>
</kw>
<msg time="2026-04-19T03:16:47.470639" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:47.104347" elapsed="0.366403"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:47.102240" elapsed="0.368927"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:47.473274" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:47.496145" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:47.496637" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:47.496969" 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-19T03:16:47.472722" elapsed="0.024499"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:47.499486" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:47.502424" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:47.501700" elapsed="0.000889"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:47.503196" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:47.502830" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:47.502746" elapsed="0.000640"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:47.503901" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:16:47.503598" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:47.503527" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:47.504272" elapsed="0.000056"/>
</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-19T03:16:47.511462" 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-19T03:16:47.512285" elapsed="0.000237"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:47.512803" 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-19T03:16:47.506382" elapsed="0.006745"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:47.090872" elapsed="0.422579"/>
</kw>
<msg time="2026-04-19T03:16:47.513908" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:47.089913" elapsed="0.424056"/>
</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-19T03:16:47.089162" elapsed="0.424905"/>
</kw>
<msg time="2026-04-19T03:16:47.514111" 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-19T03:16:47.088432" elapsed="0.425725"/>
</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-19T03:16:47.517143" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:16:47.517638" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:47.517934" elapsed="0.000112"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:47.514454" elapsed="0.003646"/>
</kw>
<msg time="2026-04-19T03:16:47.518254" level="INFO">${output} = 1</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-19T03:16:47.087143" elapsed="0.431137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:47.518713" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:47.518462" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:47.518801" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:47.518954" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:47.085125" elapsed="0.433855"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:47.519027" elapsed="0.000063"/>
</return>
<msg time="2026-04-19T03:16:47.519216" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:47.082939" elapsed="0.436308"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:47.519801" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:47.519410" elapsed="0.000462">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:47.081855" elapsed="0.438125">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:49.523467" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:49.522707" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:49.525369" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:49.524966" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:49.526564" 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-19T03:16:49.526705" 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-19T03:16:49.526338" elapsed="0.000405"/>
</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-19T03:16:49.532291" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:49.531634" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:49.531271" elapsed="0.001209"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:49.534581" 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-19T03:16:49.534946" 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-19T03:16:49.533916" elapsed="0.001217"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:49.537404" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:49.536459" elapsed="0.001055"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:49.539409" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:49.538486" elapsed="0.001044"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:49.542000" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:49.542119" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:49.541647" elapsed="0.000504"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:49.542376" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:49.543889" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:49.868427" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:49.543559" elapsed="0.325134"/>
</kw>
<msg time="2026-04-19T03:16:49.868778" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:49.542990" elapsed="0.325877"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:49.540820" elapsed="0.328367"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:49.870660" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:49.893361" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:49.893964" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:49.894380" 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-19T03:16:49.870278" elapsed="0.024319"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:49.896984" elapsed="0.001170"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:49.900529" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:49.899484" elapsed="0.001279"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:49.901668" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:49.901156" elapsed="0.000682"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:49.900995" elapsed="0.000972"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:49.902772" elapsed="0.000124"/>
</return>
<status status="PASS" start="2026-04-19T03:16:49.902327" elapsed="0.000683"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:49.902219" elapsed="0.001100"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:49.903499" elapsed="0.000085"/>
</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-19T03:16:49.911023" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T03:16:49.911648" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:49.912006" 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-19T03:16:49.905674" elapsed="0.006556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:49.529436" elapsed="0.383061"/>
</kw>
<msg time="2026-04-19T03:16:49.912808" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:49.528474" elapsed="0.384394"/>
</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-19T03:16:49.527704" elapsed="0.385243"/>
</kw>
<msg time="2026-04-19T03:16:49.912987" 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-19T03:16:49.526965" elapsed="0.386082"/>
</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-19T03:16:49.916113" 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-19T03:16:49.916626" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:49.916921" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:49.913338" elapsed="0.003752"/>
</kw>
<msg time="2026-04-19T03:16:49.917180" level="INFO">${output} = 1</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-19T03:16:49.525714" elapsed="0.391491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:49.917629" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:49.917382" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:49.917715" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:49.917864" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:49.523991" elapsed="0.393898"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:49.917933" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:49.918090" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:49.521866" elapsed="0.396248"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:49.918725" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:49.918333" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:49.520803" elapsed="0.398130">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:51.922726" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:51.921893" elapsed="0.000905"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:51.924614" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:51.924208" elapsed="0.000450"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:51.925847" 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-19T03:16:51.925997" 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-19T03:16:51.925599" elapsed="0.000462"/>
</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-19T03:16:51.931483" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:51.930769" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:51.930693" elapsed="0.000986"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:51.933989" 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-19T03:16:51.934375" 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-19T03:16:51.933050" elapsed="0.001483"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:51.936523" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:51.935932" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:51.938430" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:51.937622" elapsed="0.000907"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:51.940839" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:51.940916" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:51.940549" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:51.941182" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:51.942587" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:52.261833" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:51.942258" elapsed="0.319744"/>
</kw>
<msg time="2026-04-19T03:16:52.262113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:51.941743" elapsed="0.320469"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:51.939759" elapsed="0.322761"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:52.264157" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:52.286997" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:52.287369" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:52.287581" 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-19T03:16:52.263699" elapsed="0.024017"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:52.289161" elapsed="0.000579"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:52.291226" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:52.290566" elapsed="0.000811"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:52.291944" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:52.291609" elapsed="0.000473"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:52.291524" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:52.292652" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:16:52.292368" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:52.292301" elapsed="0.000572"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:52.292986" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:52.298777" elapsed="0.000478"/>
</kw>
<kw name="Open 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-19T03:16:52.299468" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:52.299829" 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-19T03:16:52.294880" elapsed="0.005169"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:51.928801" elapsed="0.371475"/>
</kw>
<msg time="2026-04-19T03:16:52.300579" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:51.927839" elapsed="0.372801"/>
</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-19T03:16:51.927071" elapsed="0.373654"/>
</kw>
<msg time="2026-04-19T03:16:52.300766" 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-19T03:16:51.926292" elapsed="0.374524"/>
</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-19T03:16:52.303915" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:16:52.304419" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:52.304720" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:52.301131" elapsed="0.003739"/>
</kw>
<msg time="2026-04-19T03:16:52.304964" level="INFO">${output} = 1</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-19T03:16:51.924974" elapsed="0.380015"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:52.305436" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:52.305185" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:52.305525" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:16:52.305681" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:51.923297" elapsed="0.382410"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:52.305754" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:52.305900" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:51.921015" elapsed="0.384910"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:52.306500" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:52.306097" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:51.919826" elapsed="0.386860">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:54.310190" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:54.309416" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:54.311974" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:54.311585" elapsed="0.000427"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:54.313156" 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-19T03:16:54.313300" 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-19T03:16:54.312903" elapsed="0.000434"/>
</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-19T03:16:54.318691" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:54.318010" elapsed="0.000792"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:54.317928" elapsed="0.000959"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:54.321234" 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-19T03:16:54.321580" 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-19T03:16:54.320291" elapsed="0.001432"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:54.323668" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:54.323119" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:54.325551" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:54.324770" elapsed="0.000880"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:54.327936" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:54.328014" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:54.327657" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:54.328268" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:54.329652" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:54.645951" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:54.329327" elapsed="0.316807"/>
</kw>
<msg time="2026-04-19T03:16:54.646218" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:54.328822" elapsed="0.317483"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:54.326872" elapsed="0.319718"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:54.648155" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:54.671172" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:54.671681" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:54.672015" 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-19T03:16:54.647715" elapsed="0.024557"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:54.674571" elapsed="0.000929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:54.677784" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:54.676755" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:54.679169" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:54.678552" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:54.678421" elapsed="0.000887"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:54.679664" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T03:16:54.679458" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:54.679409" elapsed="0.000424"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:54.679913" 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-19T03:16:54.684824" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T03:16:54.685407" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:54.685771" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:54.681293" 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-19T03:16:54.316086" elapsed="0.370259"/>
</kw>
<msg time="2026-04-19T03:16:54.686655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:54.315067" elapsed="0.371651"/>
</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-19T03:16:54.314308" elapsed="0.372495"/>
</kw>
<msg time="2026-04-19T03:16:54.686846" 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-19T03:16:54.313558" elapsed="0.373335"/>
</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-19T03:16:54.689994" 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-19T03:16:54.690541" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:54.690832" 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-19T03:16:54.687206" elapsed="0.003773"/>
</kw>
<msg time="2026-04-19T03:16:54.691089" level="INFO">${output} = 1</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-19T03:16:54.312333" elapsed="0.378782"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:54.691549" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:54.691299" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:54.691636" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:54.691790" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:54.310932" elapsed="0.380883"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:54.691863" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:16:54.692008" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:54.308572" elapsed="0.383475"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:54.692607" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:54.692206" elapsed="0.000476">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:54.307533" elapsed="0.385262">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:56.696328" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:56.695563" elapsed="0.000835"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:56.698454" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:56.697811" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:56.700301" 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-19T03:16:56.700763" 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-19T03:16:56.699937" elapsed="0.000889"/>
</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-19T03:16:56.707162" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:56.706145" elapsed="0.001192"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:56.706066" elapsed="0.001400"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:56.711364" 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-19T03:16:56.711917" 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-19T03:16:56.709767" elapsed="0.002406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:56.715870" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:56.714625" elapsed="0.001523"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:56.720222" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:56.718602" elapsed="0.001839"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:56.723898" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:56.723977" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:56.723615" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:56.724228" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:56.725531" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:57.037515" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:56.725196" elapsed="0.312459"/>
</kw>
<msg time="2026-04-19T03:16:57.037736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:56.724790" elapsed="0.313028"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:56.722834" elapsed="0.315283"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:57.039581" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:57.062150" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:57.062646" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:57.062983" 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-19T03:16:57.039198" elapsed="0.024054"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:57.065575" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:57.068757" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:57.067741" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:57.069896" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:57.069390" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:57.069265" elapsed="0.000990"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:57.071060" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:16:57.070577" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:57.070469" elapsed="0.000950"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:57.071594" elapsed="0.000084"/>
</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-19T03:16:57.080301" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:16:57.081001" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:57.081381" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:57.074750" elapsed="0.006842"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:56.704151" elapsed="0.377664"/>
</kw>
<msg time="2026-04-19T03:16:57.082142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:56.703205" elapsed="0.379001"/>
</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-19T03:16:56.702431" elapsed="0.379859"/>
</kw>
<msg time="2026-04-19T03:16:57.082332" 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-19T03:16:56.701231" elapsed="0.381148"/>
</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-19T03:16:57.085396" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:16:57.085873" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:57.086185" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:57.082669" elapsed="0.003669"/>
</kw>
<msg time="2026-04-19T03:16:57.086429" level="INFO">${output} = 1</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-19T03:16:56.698994" elapsed="0.387461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:57.086884" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:57.086634" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:57.086972" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:57.087145" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:56.696849" elapsed="0.390322"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:57.087219" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:16:57.087366" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:56.694724" elapsed="0.392667"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:57.087938" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:57.087548" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:56.693675" elapsed="0.394486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:16:59.091779" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:16:59.090941" elapsed="0.000918"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:16:59.093980" level="INFO">${member_ip} = 10.30.171.206</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-19T03:16:59.093381" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:59.095867" 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-19T03:16:59.096170" 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-19T03:16:59.095520" elapsed="0.000714"/>
</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-19T03:16:59.102245" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:16:59.101261" elapsed="0.001176"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:59.101186" elapsed="0.001335"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:59.104535" 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-19T03:16:59.104871" 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-19T03:16:59.103886" elapsed="0.001123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:59.107148" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:59.106369" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:16:59.109773" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:16:59.108758" elapsed="0.001113"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:16:59.112466" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:16:59.112547" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:16:59.111979" elapsed="0.000592"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:59.112786" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:16:59.114065" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:16:59.437544" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:16:59.113726" elapsed="0.323942"/>
</kw>
<msg time="2026-04-19T03:16:59.437745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:59.113365" elapsed="0.324464"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:16:59.111222" elapsed="0.326884"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:16:59.439554" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:16:59.462455" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:16:59.462962" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:16:59.463348" 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-19T03:16:59.439175" elapsed="0.024386"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:59.465839" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:59.469009" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:59.468019" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:59.470158" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:16:59.469624" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:59.469500" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:16:59.471256" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:16:59.470774" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:16:59.470668" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:16:59.471783" elapsed="0.000082"/>
</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-19T03:16:59.479070" 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-19T03:16:59.479647" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:59.480106" 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-19T03:16:59.474903" elapsed="0.005419"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:16:59.099335" elapsed="0.381210"/>
</kw>
<msg time="2026-04-19T03:16:59.480967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:16:59.098356" elapsed="0.382686"/>
</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-19T03:16:59.097571" elapsed="0.383558"/>
</kw>
<msg time="2026-04-19T03:16:59.481171" 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-19T03:16:59.096593" elapsed="0.384625"/>
</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-19T03:16:59.484273" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:16:59.484754" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:16:59.485078" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:16:59.481513" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T03:16:59.485328" level="INFO">${output} = 1</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-19T03:16:59.094559" elapsed="0.390794"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:16:59.485779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:16:59.485532" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:16:59.485868" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:16:59.486020" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:16:59.092419" elapsed="0.393643"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:16:59.486111" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:16:59.486257" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:16:59.090117" elapsed="0.396165"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:16:59.486829" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:16:59.486441" elapsed="0.000459">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:16:59.088983" elapsed="0.398027">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:01.490661" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:01.489874" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:01.492826" level="INFO">${member_ip} = 10.30.171.206</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-19T03:17:01.492211" elapsed="0.000676"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:01.494686" 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-19T03:17:01.494913" 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-19T03:17:01.494357" elapsed="0.000617"/>
</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-19T03:17:01.502321" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:01.501657" elapsed="0.000775"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:01.501264" elapsed="0.001251"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:01.504249" 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-19T03:17:01.504488" 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-19T03:17:01.503799" elapsed="0.000788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:01.506125" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:01.505573" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:01.507976" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:01.507277" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:01.510374" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:01.510452" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:01.510088" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:01.510687" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:01.511963" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:01.842815" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:16:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:01.511640" elapsed="0.331335"/>
</kw>
<msg time="2026-04-19T03:17:01.843072" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:01.511277" elapsed="0.331881"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:01.509327" elapsed="0.334106"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:01.844895" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:17:01.867787" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:01.868351" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:17:01.868687" 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-19T03:17:01.844509" elapsed="0.024407"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:01.871247" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:01.874440" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:01.873437" elapsed="0.001237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:01.875582" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:01.875073" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:01.874901" elapsed="0.000969"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:01.876678" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T03:17:01.876229" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:01.876120" elapsed="0.001060"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:01.877366" elapsed="0.000161"/>
</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-19T03:17:01.883459" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:17:01.884007" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:01.884383" 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-19T03:17:01.879861" elapsed="0.004733"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:17:01.499415" elapsed="0.385401"/>
</kw>
<msg time="2026-04-19T03:17:01.885191" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:01.497803" elapsed="0.387449"/>
</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-19T03:17:01.496584" elapsed="0.388748"/>
</kw>
<msg time="2026-04-19T03:17:01.885373" 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-19T03:17:01.495396" elapsed="0.390023"/>
</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-19T03:17:01.888490" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:17:01.888971" elapsed="0.000249"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:01.889373" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:01.885774" elapsed="0.003749"/>
</kw>
<msg time="2026-04-19T03:17:01.889615" level="INFO">${output} = 1</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-19T03:17:01.493408" elapsed="0.396233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:01.890083" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:01.889818" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:17:01.890171" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:01.890323" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:17:01.491258" elapsed="0.399095"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:17:01.890400" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:17:01.890543" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:17:01.489016" elapsed="0.401552"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:17:01.891168" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:17:01.890724" elapsed="0.000517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:17:01.487834" elapsed="0.403516">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:03.894808" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:03.894011" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:03.897102" level="INFO">${member_ip} = 10.30.171.206</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-19T03:17:03.896314" elapsed="0.000851"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:03.899147" 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-19T03:17:03.899374" 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-19T03:17:03.898792" elapsed="0.000645"/>
</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-19T03:17:03.905140" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:03.904651" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:03.904372" elapsed="0.000905"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:03.906710" 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-19T03:17:03.906949" 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-19T03:17:03.906275" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:03.908554" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:03.908003" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:03.910336" level="INFO">${conn_id} = 495</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:03.909623" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:03.912741" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:03.912818" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:03.912461" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:03.913063" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:03.914405" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:04.234072" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:03.914078" elapsed="0.320134"/>
</kw>
<msg time="2026-04-19T03:17:04.234295" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:03.913677" elapsed="0.320704"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:03.911619" elapsed="0.323045"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:04.236165" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:17:04.258710" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:04.259253" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:17:04.259586" 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-19T03:17:04.235760" elapsed="0.024036"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:04.262059" elapsed="0.000852"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:04.265177" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:04.264205" elapsed="0.001205"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:04.266338" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:04.265757" elapsed="0.000712"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:04.265635" elapsed="0.000890"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:04.266870" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:17:04.266669" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:04.266620" elapsed="0.000423"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:04.267126" 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-19T03:17:04.273526" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:17:04.274102" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:04.274461" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:04.268498" elapsed="0.006253"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:17:03.903051" elapsed="0.371926"/>
</kw>
<msg time="2026-04-19T03:17:04.275306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:03.902224" elapsed="0.373141"/>
</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-19T03:17:03.900944" elapsed="0.374502"/>
</kw>
<msg time="2026-04-19T03:17:04.275486" 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-19T03:17:03.899786" elapsed="0.375745"/>
</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-19T03:17:04.278607" 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-19T03:17:04.279099" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:04.279395" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:04.275822" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T03:17:04.279711" level="INFO">${output} = 1</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-19T03:17:03.897680" elapsed="0.382057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:04.280222" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:04.279927" elapsed="0.000340"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:17:04.280309" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:04.280458" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:17:03.895364" elapsed="0.385118"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:17:04.280528" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:17:04.280668" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:17:03.893203" elapsed="0.387489"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:17:04.281251" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:17:04.280846" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:17:03.892156" elapsed="0.389278">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T03:17:04.281519" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T03:11:02.661446" elapsed="361.620166">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:11:02.661303" elapsed="361.620385">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T03:10:54.406793" elapsed="369.874960">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:04.281994" elapsed="0.000026"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:17:04.282078" elapsed="0.000016"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T03:10:52.153811" elapsed="372.128366">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:10:52.153063" elapsed="372.129263">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s19-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T03:17:04.286894" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:04.286509" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:04.287402" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:04.287097" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:04.287472" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:04.287627" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:04.286125" elapsed="0.001527"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:04.289951" 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-19T03:17:04.290068" 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-19T03:17:04.289803" elapsed="0.000293"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:04.353400" level="INFO">${ip_address} = 10.30.171.9</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-19T03:17:04.353013" elapsed="0.000422"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:04.353499" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:17:04.353671" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:04.352642" elapsed="0.001055"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:04.357441" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:04.356697" elapsed="0.000845"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:04.360354" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:04.360434" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:04.359983" 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-19T03:17:04.360619" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:04.361849" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:05.061891" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:10:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:04.361523" elapsed="0.700558"/>
</kw>
<msg time="2026-04-19T03:17:05.062176" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:04.361153" elapsed="0.701123"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:04.359491" elapsed="0.702916"/>
</kw>
<msg time="2026-04-19T03:17:05.062461" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:04.359083" elapsed="0.703429"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:04.358124" elapsed="0.704580"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:05.062804" elapsed="0.000061"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:04.355526" elapsed="0.707623"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.066349" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:05.079003" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:05.079303" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:05.079402" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:05.079496" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:05.066149" elapsed="0.013397"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.081609" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:05.080913" elapsed="0.000811"/>
</kw>
<msg time="2026-04-19T03:17:05.081934" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:05.082061" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:05.080120" elapsed="0.001994"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.083651" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:05.082610" elapsed="0.001099"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.086457" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:05.085852" elapsed="0.000673"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.087145" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:05.086735" elapsed="0.000471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.087762" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:05.087421" elapsed="0.000407"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:05.084836" elapsed="0.003075"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:05.084021" elapsed="0.003940"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.083965" elapsed="0.004034"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:05.088411" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:05.088258" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.088228" elapsed="0.000282"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:05.088788" elapsed="0.000045"/>
</return>
<status status="PASS" start="2026-04-19T03:17:05.088655" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.088630" elapsed="0.000294"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:05.089229" elapsed="0.000034"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:05.065187" elapsed="0.024412"/>
</kw>
<msg time="2026-04-19T03:17:05.089819" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:05.089934" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:05.063451" elapsed="0.026538"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:05.090402" elapsed="0.000338"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:05.091302" elapsed="0.000049"/>
</return>
<status status="PASS" start="2026-04-19T03:17:05.090949" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.090912" elapsed="0.000674"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:05.091821" elapsed="0.000033"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:04.354578" elapsed="0.737581"/>
</kw>
<msg time="2026-04-19T03:17:05.092246" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:04.353950" elapsed="0.738373"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:04.290710" elapsed="0.801734"/>
</kw>
<msg time="2026-04-19T03:17:05.092503" 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-19T03:17:04.290251" elapsed="0.802316"/>
</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-19T03:17:05.097243" elapsed="0.000491"/>
</kw>
<kw name="Open 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-19T03:17:05.097967" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:05.098443" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:05.092995" elapsed="0.005644"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:04.289185" elapsed="0.809514"/>
</kw>
<msg time="2026-04-19T03:17:05.098757" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:04.288724" elapsed="0.810084"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:04.288005" elapsed="0.810889"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:04.287848" elapsed="0.811117"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.101300" 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-19T03:17:05.101404" 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-19T03:17:05.101158" elapsed="0.000272"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:05.103331" level="INFO">${ip_address} = 10.30.171.128</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-19T03:17:05.102995" elapsed="0.000363"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:05.103407" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:05.103560" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:05.102674" elapsed="0.000910"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.107167" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:05.106442" elapsed="0.000833"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.110148" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:05.110234" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:05.109692" elapsed="0.000568"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.110423" elapsed="0.000327"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.111644" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:05.791536" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:11:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:05.111321" elapsed="0.680377"/>
</kw>
<msg time="2026-04-19T03:17:05.791786" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.110922" elapsed="0.680960"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:05.109152" elapsed="0.682849"/>
</kw>
<msg time="2026-04-19T03:17:05.792078" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.108734" elapsed="0.683397"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:05.107823" elapsed="0.684500"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:05.792425" elapsed="0.000064"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:05.105264" elapsed="0.687485"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.795973" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:05.808818" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:05.808986" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:05.809069" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:05.809129" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:05.795775" elapsed="0.013386"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.810992" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:05.810368" elapsed="0.000792"/>
</kw>
<msg time="2026-04-19T03:17:05.811374" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:05.811472" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:05.809543" elapsed="0.001978"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.813010" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:05.812014" elapsed="0.001087"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.815858" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:05.815291" elapsed="0.000661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.818018" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:05.817771" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.818470" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:05.818231" elapsed="0.000282"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:05.814243" elapsed="0.004324"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:05.813433" elapsed="0.005169"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.813381" elapsed="0.005247"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:05.818842" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:05.818738" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.818719" elapsed="0.000191"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:05.819138" elapsed="0.000032"/>
</return>
<status status="PASS" start="2026-04-19T03:17:05.819020" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.819001" elapsed="0.000228"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:05.819423" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:05.794835" elapsed="0.024836"/>
</kw>
<msg time="2026-04-19T03:17:05.819819" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:05.819889" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:05.793069" elapsed="0.026858"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:05.820203" elapsed="0.000240"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:05.820739" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:17:05.820559" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:05.820540" elapsed="0.000353"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:05.821056" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:05.104318" elapsed="0.716916"/>
</kw>
<msg time="2026-04-19T03:17:05.821326" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.103742" elapsed="0.717640"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:05.102146" elapsed="0.719322"/>
</kw>
<msg time="2026-04-19T03:17:05.821511" 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-19T03:17:05.101648" elapsed="0.719909"/>
</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-19T03:17:05.824841" 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-19T03:17:05.825452" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:05.825778" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:05.821852" elapsed="0.004076"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:05.100498" elapsed="0.725488"/>
</kw>
<msg time="2026-04-19T03:17:05.826077" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.100004" elapsed="0.726122"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:05.099291" elapsed="0.726919"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:05.099109" elapsed="0.727147"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.828535" 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-19T03:17:05.828636" 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-19T03:17:05.828393" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:05.830484" level="INFO">${ip_address} = 10.30.171.206</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-19T03:17:05.830173" elapsed="0.000338"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:05.830559" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:05.830708" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:05.829841" elapsed="0.000892"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.834201" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:05.833496" elapsed="0.000802"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:05.837062" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:05.837142" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:05.836621" elapsed="0.000546"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.837350" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:05.838538" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:06.145462" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:05.838220" elapsed="0.307368"/>
</kw>
<msg time="2026-04-19T03:17:06.145665" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.837844" elapsed="0.307906"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:05.836130" elapsed="0.309729"/>
</kw>
<msg time="2026-04-19T03:17:06.145910" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.835719" elapsed="0.310239"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:05.834833" elapsed="0.311326"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:06.146255" elapsed="0.000053"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:05.832350" elapsed="0.314205"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.149696" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:06.162306" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:06.162564" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:06.162663" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:06.162756" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:06.149498" elapsed="0.013309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.164879" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:06.164231" elapsed="0.000753"/>
</kw>
<msg time="2026-04-19T03:17:06.165253" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:06.165355" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:06.163386" elapsed="0.002020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.167016" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:06.166009" elapsed="0.001101"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.169680" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.169229" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.170304" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.169950" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.170894" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.170569" elapsed="0.000386"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:06.168232" elapsed="0.002816"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:06.167412" elapsed="0.003690"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.167359" elapsed="0.003781"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:06.171434" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:06.171291" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.171264" elapsed="0.000266"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:06.171799" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T03:17:06.171670" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.171646" elapsed="0.000275"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:06.172217" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:06.148525" elapsed="0.024034"/>
</kw>
<msg time="2026-04-19T03:17:06.172767" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:06.172864" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:06.146827" elapsed="0.026088"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:06.173310" elapsed="0.000319"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:06.174062" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:17:06.173794" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.173768" elapsed="0.000511"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:06.174482" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:05.831430" elapsed="0.343305"/>
</kw>
<msg time="2026-04-19T03:17:06.174819" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.830888" elapsed="0.344000"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:05.829320" elapsed="0.345689"/>
</kw>
<msg time="2026-04-19T03:17:06.175090" 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-19T03:17:05.828817" elapsed="0.346338"/>
</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-19T03:17:06.179742" elapsed="0.000506"/>
</kw>
<kw name="Open 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-19T03:17:06.180477" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:06.180904" elapsed="0.000154"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:06.175571" elapsed="0.005595"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:05.827750" elapsed="0.353500"/>
</kw>
<msg time="2026-04-19T03:17:06.181329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:05.827296" elapsed="0.354100"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:05.826549" elapsed="0.355036"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:17:05.826390" elapsed="0.355245"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:04.287709" elapsed="1.893961"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:17:04.283662" elapsed="1.898066"/>
</kw>
<kw name="Check_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-19T03:17:06.185144" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:06.184736" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.185634" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:06.185332" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:06.185844" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:06.185997" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:06.184363" elapsed="0.001659"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.188316" 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-19T03:17:06.188416" 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-19T03:17:06.188180" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:06.190337" level="INFO">${ip_address} = 10.30.171.9</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-19T03:17:06.189927" elapsed="0.000438"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:06.190416" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:06.190566" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:06.189607" elapsed="0.000983"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.194276" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:06.193392" elapsed="0.000985"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.196994" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:06.197096" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:06.196731" 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-19T03:17:06.197281" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.198449" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:06.553956" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:06.198133" elapsed="0.356071"/>
</kw>
<msg time="2026-04-19T03:17:06.554353" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.197764" elapsed="0.356737"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:06.196233" elapsed="0.358595"/>
</kw>
<msg time="2026-04-19T03:17:06.554938" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.195824" elapsed="0.359250"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:06.194919" elapsed="0.360516"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:06.555635" elapsed="0.000102"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:06.192232" elapsed="0.364058"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.562168" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:06.574721" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:06.574980" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:06.575115" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:06.575213" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:06.561951" elapsed="0.013314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.577319" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:06.576629" elapsed="0.000794"/>
</kw>
<msg time="2026-04-19T03:17:06.577635" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:06.577734" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:06.575800" elapsed="0.001987"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.579317" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:06.578314" elapsed="0.001063"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.582123" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.581753" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.582736" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.582398" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.583353" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.583002" elapsed="0.000412"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:06.580482" elapsed="0.003008"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:06.579671" elapsed="0.003869"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.579620" elapsed="0.003957"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:06.583876" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:06.583729" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.583703" elapsed="0.000268"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:06.584269" elapsed="0.000043"/>
</return>
<status status="PASS" start="2026-04-19T03:17:06.584138" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.584112" elapsed="0.000278"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:06.584662" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:06.560470" elapsed="0.024542"/>
</kw>
<msg time="2026-04-19T03:17:06.585249" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:06.585347" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:06.556844" elapsed="0.028554"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:06.585761" elapsed="0.000336"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:06.586510" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T03:17:06.586260" elapsed="0.000421"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.586234" elapsed="0.000485"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:06.586921" elapsed="0.000029"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:06.191296" elapsed="0.395896"/>
</kw>
<msg time="2026-04-19T03:17:06.587274" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.190748" elapsed="0.396597"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:06.189072" elapsed="0.398463"/>
</kw>
<msg time="2026-04-19T03:17:06.587593" 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-19T03:17:06.188598" elapsed="0.399058"/>
</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-19T03:17:06.591912" elapsed="0.000456"/>
</kw>
<kw name="Open 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-19T03:17:06.592596" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:06.593144" elapsed="0.000143"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:06.588090" elapsed="0.005271"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:06.187542" elapsed="0.405905"/>
</kw>
<msg time="2026-04-19T03:17:06.593544" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.187095" elapsed="0.406517"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:06.186382" elapsed="0.407318"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:06.186228" elapsed="0.407519"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.595927" 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-19T03:17:06.596040" 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-19T03:17:06.595791" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:06.597871" level="INFO">${ip_address} = 10.30.171.128</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-19T03:17:06.597563" elapsed="0.000334"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:06.597946" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:06.598118" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:06.597238" elapsed="0.001022"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.601995" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:06.601095" elapsed="0.001018"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.604777" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:06.604854" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:06.604511" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.605097" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.606293" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:06.928753" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:06.605949" elapsed="0.323267"/>
</kw>
<msg time="2026-04-19T03:17:06.929373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.605592" elapsed="0.323938"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:06.603987" elapsed="0.325754"/>
</kw>
<msg time="2026-04-19T03:17:06.929854" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.603565" elapsed="0.326396"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:06.602660" elapsed="0.327721"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:06.930588" elapsed="0.000105"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:06.599876" elapsed="0.331402"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.937881" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:06.950231" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:06.950362" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:06.950407" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:06.950448" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:06.937672" elapsed="0.012799"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.951406" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:06.951114" elapsed="0.000339"/>
</kw>
<msg time="2026-04-19T03:17:06.951554" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:06.951598" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:06.950723" elapsed="0.000898"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.952317" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:06.951846" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.953811" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.953556" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.954272" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.954011" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.954714" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:06.954468" elapsed="0.000291"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:06.952864" elapsed="0.001950"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:06.952487" elapsed="0.002363"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.952460" elapsed="0.002419"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:06.955113" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:06.954991" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.954972" elapsed="0.000210"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:06.955376" elapsed="0.000033"/>
</return>
<status status="PASS" start="2026-04-19T03:17:06.955284" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.955266" elapsed="0.000287"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:06.955758" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:06.935522" elapsed="0.020484"/>
</kw>
<msg time="2026-04-19T03:17:06.956218" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:06.956290" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:06.931839" elapsed="0.024488"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:06.956589" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:06.957194" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:17:06.956992" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:06.956973" elapsed="0.000376"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:06.957508" elapsed="0.000026"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:06.598950" elapsed="0.358823"/>
</kw>
<msg time="2026-04-19T03:17:06.957928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.598426" elapsed="0.359578"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:06.596678" elapsed="0.361487"/>
</kw>
<msg time="2026-04-19T03:17:06.958224" 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-19T03:17:06.596225" elapsed="0.362061"/>
</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-19T03:17:06.962628" elapsed="0.000461"/>
</kw>
<kw name="Open 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-19T03:17:06.963320" elapsed="0.000219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:06.963747" 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-19T03:17:06.958709" elapsed="0.005244"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:06.595175" elapsed="0.368879"/>
</kw>
<msg time="2026-04-19T03:17:06.964134" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.594717" elapsed="0.369484"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:06.594000" elapsed="0.370319"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:06.593843" elapsed="0.370539"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.967507" 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-19T03:17:06.967646" 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-19T03:17:06.967320" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:06.969855" level="INFO">${ip_address} = 10.30.171.206</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-19T03:17:06.969538" elapsed="0.000343"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:06.969929" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:06.970103" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:06.969215" elapsed="0.000913"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.973822" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:06.972900" elapsed="0.001022"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:06.976563" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:06.976641" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:06.976290" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.976848" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:06.978049" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:07.294091" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:06.977717" elapsed="0.316619"/>
</kw>
<msg time="2026-04-19T03:17:07.294418" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.977356" elapsed="0.317149"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:06.975777" elapsed="0.318839"/>
</kw>
<msg time="2026-04-19T03:17:07.294668" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.975380" elapsed="0.319338"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:06.974482" elapsed="0.320416"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:07.294997" elapsed="0.000077"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:06.971740" elapsed="0.323583"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.298539" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:07.311144" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:07.311402" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:07.311499" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:07.311588" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:07.298319" elapsed="0.013318"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.313636" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:07.312981" elapsed="0.000757"/>
</kw>
<msg time="2026-04-19T03:17:07.313946" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:07.314075" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:07.312193" elapsed="0.001936"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.315812" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:07.314623" elapsed="0.001265"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.320546" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:07.320182" elapsed="0.000425"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.321247" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:07.320870" elapsed="0.000435"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.321863" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:07.321521" elapsed="0.000403"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:07.317181" elapsed="0.004820"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:07.316293" elapsed="0.005791"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.316227" elapsed="0.005910"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:07.322446" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:07.322297" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.322270" elapsed="0.000271"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:07.322815" elapsed="0.000042"/>
</return>
<status status="PASS" start="2026-04-19T03:17:07.322683" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.322658" elapsed="0.000279"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:07.323240" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:07.297351" elapsed="0.026227"/>
</kw>
<msg time="2026-04-19T03:17:07.323780" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:07.323879" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:07.295605" elapsed="0.028326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:07.324309" elapsed="0.000333"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:07.325094" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:17:07.324813" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.324785" elapsed="0.000523"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:07.325517" elapsed="0.000031"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:06.970817" elapsed="0.354946"/>
</kw>
<msg time="2026-04-19T03:17:07.325912" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.970285" elapsed="0.355698"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:06.968651" elapsed="0.357473"/>
</kw>
<msg time="2026-04-19T03:17:07.326179" 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-19T03:17:06.967900" elapsed="0.358340"/>
</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-19T03:17:07.330245" 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-19T03:17:07.330742" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:07.331070" 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-19T03:17:07.326648" elapsed="0.004575"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:06.966434" elapsed="0.364848"/>
</kw>
<msg time="2026-04-19T03:17:07.331337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:06.965769" elapsed="0.365617"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:06.964739" elapsed="0.366733"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:17:06.964517" elapsed="0.367013"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:06.186094" elapsed="1.145477"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:17:06.181963" elapsed="1.149667"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.331789" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T03:17:07.336128" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:07.335721" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.336660" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:07.336316" elapsed="0.000376"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:07.336738" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:07.336895" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:07.335341" elapsed="0.001579"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.339197" 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-19T03:17:07.339296" 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-19T03:17:07.339059" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:07.341414" level="INFO">${ip_address} = 10.30.171.9</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-19T03:17:07.340925" elapsed="0.000587"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:07.341747" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:17:07.341911" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:07.340499" elapsed="0.001440"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.346236" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:07.345818" elapsed="0.000447"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.348044" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:07.348124" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:07.347753" 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-19T03:17:07.348304" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.349553" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:07.667416" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:07.349218" elapsed="0.318353"/>
</kw>
<msg time="2026-04-19T03:17:07.667657" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.348847" elapsed="0.318901"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:07.347272" elapsed="0.320590"/>
</kw>
<msg time="2026-04-19T03:17:07.667916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.346845" elapsed="0.321122"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:07.346468" elapsed="0.321591"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:07.668165" elapsed="0.000041"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:07.345134" elapsed="0.323306"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.671351" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:07.684376" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:07.684552" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:07.684597" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:07.684643" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:07.671155" elapsed="0.013517"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.686215" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:07.685475" elapsed="0.000860"/>
</kw>
<msg time="2026-04-19T03:17:07.686550" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:07.686647" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:07.684859" elapsed="0.001838"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.688148" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:07.687141" elapsed="0.001068"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.690830" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:07.690250" elapsed="0.000675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.691838" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:07.691302" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.692893" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:07.692291" elapsed="0.000848"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:07.689288" elapsed="0.003977"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:07.688389" elapsed="0.004955"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.688342" elapsed="0.005061"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:07.693698" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:07.693541" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.693496" elapsed="0.000270"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:07.693907" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T03:17:07.693819" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.693803" elapsed="0.000190"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:07.694157" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:07.670449" elapsed="0.023828"/>
</kw>
<msg time="2026-04-19T03:17:07.694521" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:07.694603" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:07.669575" elapsed="0.025069"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:07.695684" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:07.696503" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T03:17:07.696279" elapsed="0.000360"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:07.696213" elapsed="0.000465"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:07.697715" elapsed="0.000039"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:07.342872" elapsed="0.355060"/>
</kw>
<msg time="2026-04-19T03:17:07.698346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.342115" elapsed="0.356288"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:07.339954" elapsed="0.358539"/>
</kw>
<msg time="2026-04-19T03:17:07.698540" 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-19T03:17:07.339482" elapsed="0.359103"/>
</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-19T03:17:07.701682" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:17:07.702176" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:07.702485" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:07.698884" elapsed="0.003750"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:07.338428" elapsed="0.364264"/>
</kw>
<msg time="2026-04-19T03:17:07.702748" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.337969" elapsed="0.364828"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:07.337278" elapsed="0.365604"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:07.337124" elapsed="0.365804"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.705269" 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-19T03:17:07.705413" 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-19T03:17:07.705134" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:07.707474" level="INFO">${ip_address} = 10.30.171.128</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-19T03:17:07.707007" elapsed="0.000527"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:07.707763" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:17:07.707920" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:07.706608" elapsed="0.001342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.712128" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:07.711657" elapsed="0.000498"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:07.713960" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:07.714056" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:07.713694" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.714240" elapsed="0.000322"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:07.715418" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:08.038215" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:07.715097" elapsed="0.323274"/>
</kw>
<msg time="2026-04-19T03:17:08.038460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.714728" elapsed="0.323826"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:07.713213" elapsed="0.325459"/>
</kw>
<msg time="2026-04-19T03:17:08.038725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.712760" elapsed="0.326018"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:07.712360" elapsed="0.326498"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:08.038968" elapsed="0.000046"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:07.710948" elapsed="0.328365"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.042107" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:08.055024" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:08.055332" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:08.055432" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:08.055523" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:08.041892" elapsed="0.013681"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.058141" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:08.057468" elapsed="0.000781"/>
</kw>
<msg time="2026-04-19T03:17:08.058473" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:08.058573" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:08.055979" elapsed="0.002648"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.060545" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:08.059155" elapsed="0.001444"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.062799" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.062438" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.063446" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.063103" elapsed="0.000402"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.064077" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.063720" elapsed="0.000420"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:08.061691" elapsed="0.002528"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:08.061046" elapsed="0.003226"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.060987" elapsed="0.003342"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:08.064640" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:08.064431" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.064397" elapsed="0.000380"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:08.064998" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T03:17:08.064859" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.064835" elapsed="0.000313"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:08.065364" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:08.041345" elapsed="0.024194"/>
</kw>
<msg time="2026-04-19T03:17:08.065891" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:08.066008" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:08.040448" elapsed="0.025651"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:08.067512" elapsed="0.000693"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:08.068815" elapsed="0.000102"/>
</return>
<status status="PASS" start="2026-04-19T03:17:08.068499" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.068381" elapsed="0.000744"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:08.070798" elapsed="0.000059"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:07.708790" elapsed="0.362367"/>
</kw>
<msg time="2026-04-19T03:17:08.071717" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.708222" elapsed="0.363579"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:07.706081" elapsed="0.365848"/>
</kw>
<msg time="2026-04-19T03:17:08.071992" 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-19T03:17:07.705599" elapsed="0.366481"/>
</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-19T03:17:08.075485" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:17:08.075987" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:08.076345" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:08.072579" elapsed="0.003923"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:07.704487" elapsed="0.372074"/>
</kw>
<msg time="2026-04-19T03:17:08.076621" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.703898" elapsed="0.372773"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:07.703201" elapsed="0.373629"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:07.703039" elapsed="0.373906"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.079408" 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-19T03:17:08.079512" 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-19T03:17:08.079262" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:08.081816" level="INFO">${ip_address} = 10.30.171.206</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-19T03:17:08.081346" elapsed="0.000533"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:08.082195" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:17:08.082360" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:08.080874" elapsed="0.001511"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.086778" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:08.086379" elapsed="0.000428"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.088748" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:08.088861" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:08.088466" 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-19T03:17:08.089066" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.090274" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:08.414335" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:08.089930" elapsed="0.324555"/>
</kw>
<msg time="2026-04-19T03:17:08.414572" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.089570" elapsed="0.325090"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:08.087849" elapsed="0.326925"/>
</kw>
<msg time="2026-04-19T03:17:08.414827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.087442" elapsed="0.327436"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:08.087051" elapsed="0.327906"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:08.415085" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:08.085274" elapsed="0.330095"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.418175" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:08.430820" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:08.431106" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:08.431206" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:08.431294" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:08.417963" elapsed="0.013380"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.433679" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:08.432591" elapsed="0.001194"/>
</kw>
<msg time="2026-04-19T03:17:08.434145" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:08.434248" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:08.431746" elapsed="0.002552"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.435678" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:08.434680" elapsed="0.001057"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.437642" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.437295" elapsed="0.000407"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.438336" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.437980" elapsed="0.000413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.438931" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.438603" elapsed="0.000389"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:08.436712" elapsed="0.002378"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:08.435922" elapsed="0.003220"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.435875" elapsed="0.003305"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:08.439402" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:08.439261" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.439237" elapsed="0.000255"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:08.439689" elapsed="0.000205"/>
</return>
<status status="PASS" start="2026-04-19T03:17:08.439565" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.439544" elapsed="0.000427"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:08.440241" elapsed="0.000032"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:08.417418" elapsed="0.022993"/>
</kw>
<msg time="2026-04-19T03:17:08.440743" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:08.440855" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:08.416539" elapsed="0.024373"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:08.442330" elapsed="0.000606"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:08.443409" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T03:17:08.443150" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.443064" elapsed="0.000547"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:08.444950" elapsed="0.000041"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:08.083123" elapsed="0.362065"/>
</kw>
<msg time="2026-04-19T03:17:08.445577" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.082546" elapsed="0.363086"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:08.080254" elapsed="0.365467"/>
</kw>
<msg time="2026-04-19T03:17:08.445763" 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-19T03:17:08.079695" elapsed="0.366113"/>
</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-19T03:17:08.448893" 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-19T03:17:08.449385" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:08.449696" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:08.446144" elapsed="0.003700"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:08.078599" elapsed="0.371303"/>
</kw>
<msg time="2026-04-19T03:17:08.449996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.077955" elapsed="0.372188"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:08.077235" elapsed="0.373000"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:17:08.077064" elapsed="0.373218"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:07.336974" elapsed="1.113342"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:17:07.332868" elapsed="1.117507"/>
</kw>
<msg time="2026-04-19T03:17:08.450415" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:07.332338" elapsed="1.118121"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:08.450625" elapsed="0.000021"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T03:17:04.283242" elapsed="4.167471"/>
</kw>
<kw name="Check_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-19T03:17:08.454231" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:08.453721" elapsed="0.000537"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.454736" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:08.454422" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:08.454809" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:08.454965" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:08.453341" elapsed="0.001650"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.457303" 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-19T03:17:08.457405" 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-19T03:17:08.457167" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:08.459424" level="INFO">${ip_address} = 10.30.171.9</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-19T03:17:08.459145" elapsed="0.000306"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:08.459502" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:08.459656" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:08.458585" elapsed="0.001097"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.462308" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:08.461562" elapsed="0.000787"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.465431" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:08.465506" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:08.465160" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.465686" elapsed="0.000314"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.466857" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:08.818144" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:08.466543" elapsed="0.351842"/>
</kw>
<msg time="2026-04-19T03:17:08.818467" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.466189" elapsed="0.352372"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:08.464664" elapsed="0.354010"/>
</kw>
<msg time="2026-04-19T03:17:08.818766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.463919" elapsed="0.354918"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:08.462615" elapsed="0.356346"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:08.819090" elapsed="0.000042"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:08.461147" elapsed="0.358113"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.822823" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:08.835564" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:08.835941" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:17:08.836208" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:08.836414" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:08.822488" elapsed="0.014064"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.839184" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:08.838763" elapsed="0.000487"/>
</kw>
<msg time="2026-04-19T03:17:08.839548" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:08.839756" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:08.838003" elapsed="0.001886"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.842462" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:08.841423" elapsed="0.001179"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.845403" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.844878" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.846180" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.845822" elapsed="0.000414"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.846780" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:08.846447" elapsed="0.000393"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:08.844240" elapsed="0.002730"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:08.842838" elapsed="0.004210"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.842761" elapsed="0.004374"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:08.847637" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:08.847349" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.847281" elapsed="0.000530"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:08.848359" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:17:08.848075" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.847951" elapsed="0.000625"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:08.850057" elapsed="0.000080"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:08.820636" elapsed="0.029802"/>
</kw>
<msg time="2026-04-19T03:17:08.850765" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:08.850828" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:08.819489" elapsed="0.031372"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:08.851107" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:08.851655" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T03:17:08.851501" elapsed="0.000236"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:08.851476" elapsed="0.000293"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:08.852005" elapsed="0.000054"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:08.460416" elapsed="0.391782"/>
</kw>
<msg time="2026-04-19T03:17:08.852329" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.459841" elapsed="0.392556"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:08.458059" elapsed="0.394640"/>
</kw>
<msg time="2026-04-19T03:17:08.852810" 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-19T03:17:08.457586" elapsed="0.395286"/>
</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-19T03:17:08.857272" elapsed="0.000433"/>
</kw>
<kw name="Open 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-19T03:17:08.857935" elapsed="0.000276"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:08.858419" elapsed="0.000135"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:08.853400" elapsed="0.005230"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:08.456537" elapsed="0.402354"/>
</kw>
<msg time="2026-04-19T03:17:08.859020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.456065" elapsed="0.403072"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:08.455355" elapsed="0.404080"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:08.455198" elapsed="0.404389"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.862775" 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-19T03:17:08.862913" 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-19T03:17:08.862588" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:08.865237" level="INFO">${ip_address} = 10.30.171.128</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-19T03:17:08.864952" elapsed="0.000311"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:08.865311" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:08.865459" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:08.864608" elapsed="0.000876"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.868286" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:08.867531" elapsed="0.000794"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:08.871363" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:08.871438" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:08.871094" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.871618" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:08.872824" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:09.192697" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:08.872508" elapsed="0.320312"/>
</kw>
<msg time="2026-04-19T03:17:09.192900" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.872149" elapsed="0.320832"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:08.870586" elapsed="0.322525"/>
</kw>
<msg time="2026-04-19T03:17:09.193199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.869858" elapsed="0.323412"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:08.868588" elapsed="0.324809"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:09.193494" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:08.867123" elapsed="0.326548"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.197257" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:09.209913" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:09.210311" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:17:09.210522" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:09.210795" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:09.196898" elapsed="0.014109"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.215993" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:09.215340" elapsed="0.000909"/>
</kw>
<msg time="2026-04-19T03:17:09.216735" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:09.217106" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:09.213943" elapsed="0.003378"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.220995" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:09.219681" elapsed="0.001425"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.222911" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.222655" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.223485" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.223242" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.223959" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.223707" elapsed="0.000295"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:09.222203" elapsed="0.001908"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:09.221271" elapsed="0.002884"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.221218" elapsed="0.002996"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:09.224574" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:09.224367" elapsed="0.000277"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.224319" elapsed="0.000380"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:09.225058" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:17:09.224846" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.224799" elapsed="0.000419"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:09.226183" elapsed="0.000056"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:09.194752" elapsed="0.031704"/>
</kw>
<msg time="2026-04-19T03:17:09.226694" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:09.226739" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:09.193900" elapsed="0.032862"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:09.226923" elapsed="0.000327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:09.227427" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:17:09.227317" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.227299" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:09.227650" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:08.866401" elapsed="0.361366"/>
</kw>
<msg time="2026-04-19T03:17:09.227888" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.865643" elapsed="0.362304"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:08.863820" elapsed="0.364360"/>
</kw>
<msg time="2026-04-19T03:17:09.228262" 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-19T03:17:08.863184" elapsed="0.365122"/>
</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-19T03:17:09.231448" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:09.231949" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:09.232332" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:09.228599" elapsed="0.003887"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:08.861709" elapsed="0.370968"/>
</kw>
<msg time="2026-04-19T03:17:09.232772" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:08.860970" elapsed="0.371850"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:08.859942" elapsed="0.373110"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:08.859723" elapsed="0.373411"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.235438" 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-19T03:17:09.235538" 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-19T03:17:09.235301" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:09.237334" level="INFO">${ip_address} = 10.30.171.206</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-19T03:17:09.237065" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:09.237409" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:09.237570" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:09.236730" elapsed="0.000865"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.240377" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:09.239617" elapsed="0.000801"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.243449" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:09.243527" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:09.243184" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.243709" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.244935" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:09.597621" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:09.244617" elapsed="0.353153"/>
</kw>
<msg time="2026-04-19T03:17:09.597857" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.244252" elapsed="0.353697"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:09.242687" elapsed="0.355407"/>
</kw>
<msg time="2026-04-19T03:17:09.598201" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.241964" elapsed="0.356316"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:09.240683" elapsed="0.357729"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:09.598517" elapsed="0.000050"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:09.239201" elapsed="0.359503"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.602202" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:17:09.617136" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:09.617570" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:17:09.617921" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:09.618310" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:09.601826" elapsed="0.016728"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.622876" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:09.622220" elapsed="0.000760"/>
</kw>
<msg time="2026-04-19T03:17:09.623498" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:09.623999" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:09.620924" elapsed="0.003327"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.628484" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:09.626668" elapsed="0.002043"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.630691" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.630420" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.631244" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.630978" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.631770" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.631463" elapsed="0.000362"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:09.629849" elapsed="0.002077"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:09.628888" elapsed="0.003084"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.628832" elapsed="0.003216"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:09.632422" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:09.632208" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.632158" elapsed="0.000394"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:09.632922" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:17:09.632702" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.632654" elapsed="0.000451"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:09.634157" elapsed="0.000058"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:09.599870" elapsed="0.034564"/>
</kw>
<msg time="2026-04-19T03:17:09.634671" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:09.634718" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:09.598941" elapsed="0.035801"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:09.634913" elapsed="0.000251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:09.635348" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:17:09.635235" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.635217" elapsed="0.000216"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:09.635578" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:09.238479" elapsed="0.397239"/>
</kw>
<msg time="2026-04-19T03:17:09.635816" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.237751" elapsed="0.398122"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:09.236214" elapsed="0.399897"/>
</kw>
<msg time="2026-04-19T03:17:09.636193" 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-19T03:17:09.235719" elapsed="0.400520"/>
</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-19T03:17:09.639375" elapsed="0.000341"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:09.639896" elapsed="0.000184"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:09.640233" 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-19T03:17:09.636533" elapsed="0.003853"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:09.234550" elapsed="0.406022"/>
</kw>
<msg time="2026-04-19T03:17:09.640672" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.234109" elapsed="0.406612"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:09.233394" elapsed="0.407551"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:17:09.233236" elapsed="0.407758"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:08.455062" elapsed="1.185980"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:17:08.450965" elapsed="1.190171"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.651342" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:09.649023" elapsed="0.002348"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T03:17:09.653150" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:09.652746" elapsed="0.000438"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.653657" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:09.653349" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:09.653730" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:09.653888" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:09.652368" elapsed="0.001545"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.656270" 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-19T03:17:09.656374" 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-19T03:17:09.656120" elapsed="0.000281"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:09.658881" level="INFO">${ip_address} = 10.30.171.9</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-19T03:17:09.658426" elapsed="0.000484"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:09.658961" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:09.659134" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:09.658083" elapsed="0.001077"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.663076" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:09.662441" elapsed="0.000682"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.665435" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:09.665515" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:09.665149" 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-19T03:17:09.665704" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.666918" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:09.970940" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:09.666591" elapsed="0.304502"/>
</kw>
<msg time="2026-04-19T03:17:09.971179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.666218" elapsed="0.305056"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:09.664556" elapsed="0.306831"/>
</kw>
<msg time="2026-04-19T03:17:09.971551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.664145" elapsed="0.307464"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:09.663584" elapsed="0.308181"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:09.971912" elapsed="0.000092"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:09.661426" elapsed="0.310803"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:09.974689" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:17:09.987146" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:09.987309" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:17:09.987374" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:09.987432" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:09.974469" elapsed="0.012994"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.988858" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:09.988461" elapsed="0.000462"/>
</kw>
<msg time="2026-04-19T03:17:09.989078" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:09.989143" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:09.987755" elapsed="0.001419"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.990075" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:09.989411" elapsed="0.000702"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.991751" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.991332" elapsed="0.000489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.992588" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.992244" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:09.993239" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:09.992872" elapsed="0.000428"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:09.990723" elapsed="0.002652"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:09.990233" elapsed="0.003192"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.990201" elapsed="0.003260"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:09.993682" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:09.993540" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.993516" elapsed="0.000263"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:09.993993" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T03:17:09.993865" elapsed="0.000234"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.993842" elapsed="0.000290"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:09.994335" elapsed="0.000030"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:09.973842" elapsed="0.020716"/>
</kw>
<msg time="2026-04-19T03:17:09.994759" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:09.994929" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:09.972599" elapsed="0.022413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:09.995394" elapsed="0.000728"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:09.996631" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T03:17:09.996311" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.996283" elapsed="0.000624"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:09.997194" elapsed="0.000066"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:09.659900" elapsed="0.337638"/>
</kw>
<msg time="2026-04-19T03:17:09.997624" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.659339" elapsed="0.338355"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:09.657315" elapsed="0.340564"/>
</kw>
<msg time="2026-04-19T03:17:09.997945" 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-19T03:17:09.656557" elapsed="0.341454"/>
</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-19T03:17:10.002768" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T03:17:10.003513" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:10.003957" elapsed="0.000234"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:09.998449" elapsed="0.005817"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:09.655463" elapsed="0.348900"/>
</kw>
<msg time="2026-04-19T03:17:10.004444" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:09.654981" elapsed="0.349530"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:09.654288" elapsed="0.350355"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:09.654120" elapsed="0.350597"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.007355" 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-19T03:17:10.007467" 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-19T03:17:10.007207" elapsed="0.000313"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:10.010100" level="INFO">${ip_address} = 10.30.171.128</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-19T03:17:10.009626" elapsed="0.000501"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:10.010177" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:17:10.010331" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:10.009292" elapsed="0.001063"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.014391" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:10.013608" elapsed="0.000829"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.017065" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:10.017145" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:10.016585" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.017330" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.018730" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:10.341365" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:10.018394" elapsed="0.323167"/>
</kw>
<msg time="2026-04-19T03:17:10.341636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.017830" elapsed="0.323886"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:10.016081" elapsed="0.325736"/>
</kw>
<msg time="2026-04-19T03:17:10.341868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.015664" elapsed="0.326253"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:10.015118" elapsed="0.326964"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:10.342231" elapsed="0.000085"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:10.012595" elapsed="0.329907"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.344876" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:17:10.357716" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:10.357844" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:17:10.357890" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:10.357930" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:10.344676" elapsed="0.013277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.358800" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:10.358513" elapsed="0.000333"/>
</kw>
<msg time="2026-04-19T03:17:10.358939" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:10.358983" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:10.358161" elapsed="0.000844"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.359661" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:10.359196" elapsed="0.000491"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.360891" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:10.360640" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.361341" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:10.361102" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.361769" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:10.361531" elapsed="0.000281"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:10.360233" elapsed="0.001631"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:10.359776" elapsed="0.002124"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.359752" elapsed="0.002174"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:10.362102" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:10.361983" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.361967" elapsed="0.000201"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:10.362307" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:17:10.362219" elapsed="0.000147"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.362204" elapsed="0.000186"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:10.362537" elapsed="0.000021"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:10.344100" elapsed="0.018596"/>
</kw>
<msg time="2026-04-19T03:17:10.362836" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:10.362944" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:10.342852" elapsed="0.020152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:10.363275" elapsed="0.000496"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:10.364156" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:17:10.363901" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.363882" elapsed="0.000463"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:10.364529" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:10.011077" elapsed="0.353700"/>
</kw>
<msg time="2026-04-19T03:17:10.364876" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.010523" elapsed="0.354403"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:10.008607" elapsed="0.356405"/>
</kw>
<msg time="2026-04-19T03:17:10.365073" 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-19T03:17:10.007684" elapsed="0.357438"/>
</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-19T03:17:10.368368" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:17:10.368846" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:10.369227" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:10.365419" elapsed="0.003959"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:10.006570" elapsed="0.362871"/>
</kw>
<msg time="2026-04-19T03:17:10.369497" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.006107" elapsed="0.363438"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:10.005186" elapsed="0.364447"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:10.004824" elapsed="0.364856"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.371912" 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-19T03:17:10.372011" 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-19T03:17:10.371774" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:10.374310" level="INFO">${ip_address} = 10.30.171.206</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-19T03:17:10.373821" elapsed="0.000516"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:10.374386" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:17:10.374541" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:10.373491" elapsed="0.001075"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.378389" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:10.377737" elapsed="0.000697"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.380696" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:10.380772" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:10.380417" 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-19T03:17:10.380951" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.382159" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:10.689247" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:10.381810" elapsed="0.307549"/>
</kw>
<msg time="2026-04-19T03:17:10.689430" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.381457" elapsed="0.308051"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:10.379916" elapsed="0.309697"/>
</kw>
<msg time="2026-04-19T03:17:10.689665" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.379524" elapsed="0.310190"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:10.378959" elapsed="0.310898"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:10.689998" elapsed="0.000104"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:10.376758" elapsed="0.313528"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.692606" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:17:10.705070" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:10.705320" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:17:10.705421" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:10.705513" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:10.692407" elapsed="0.013156"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.707395" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:10.706744" elapsed="0.000753"/>
</kw>
<msg time="2026-04-19T03:17:10.707704" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:10.707801" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:10.705961" elapsed="0.001890"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.709369" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:10.708254" elapsed="0.001173"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.711812" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:10.711370" elapsed="0.000506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.712436" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:10.712106" elapsed="0.000386"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.713044" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:10.712700" elapsed="0.000407"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:10.710413" elapsed="0.002766"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:10.709604" elapsed="0.003624"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.709558" elapsed="0.003707"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:10.713482" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:10.713342" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.713319" elapsed="0.000252"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:10.713763" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:17:10.713642" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.713621" elapsed="0.000259"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:10.714103" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:10.691819" elapsed="0.022509"/>
</kw>
<msg time="2026-04-19T03:17:10.714521" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:10.714673" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:10.690621" elapsed="0.024132"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:10.715233" elapsed="0.000667"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:10.716422" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T03:17:10.716108" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:10.716081" elapsed="0.000602"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:10.716943" elapsed="0.000065"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:10.375273" elapsed="0.342036"/>
</kw>
<msg time="2026-04-19T03:17:10.717392" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.374727" elapsed="0.342735"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:10.372672" elapsed="0.344910"/>
</kw>
<msg time="2026-04-19T03:17:10.717641" 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-19T03:17:10.372217" elapsed="0.345487"/>
</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-19T03:17:10.721985" 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-19T03:17:10.722664" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:10.723106" elapsed="0.000167"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:10.718135" elapsed="0.005210"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:10.371105" elapsed="0.352323"/>
</kw>
<msg time="2026-04-19T03:17:10.723527" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.370647" elapsed="0.352953"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:10.369935" elapsed="0.353800"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:17:10.369778" elapsed="0.354008"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:09.653968" elapsed="1.069854"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:17:09.651740" elapsed="1.072142"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:09.651449" elapsed="1.072470"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:09.651430" elapsed="1.072515"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.725341" 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-19T03:17:10.725441" 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-19T03:17:10.725202" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T03:17:10.726564" elapsed="0.000439"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.728011" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:10.727630" elapsed="0.000432"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.728530" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:10.728225" elapsed="0.000374"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:10.728649" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:10.728812" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:10.727252" elapsed="0.001585"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:10.729812" level="INFO">${ip_address} = 10.30.171.9</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-19T03:17:10.729541" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:10.729887" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:10.730051" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:10.729220" elapsed="0.000856"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.731633" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:10.731267" elapsed="0.000392"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:10.734174" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:10.734432" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:10.733558" elapsed="0.000974"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.734828" elapsed="0.000634"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:10.736738" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:11.058655" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:10.736416" elapsed="0.322371"/>
</kw>
<msg time="2026-04-19T03:17:11.058919" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.735767" elapsed="0.323258"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:10.732619" elapsed="0.326605"/>
</kw>
<msg time="2026-04-19T03:17:11.059313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:10.732233" elapsed="0.327134"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:10.731842" elapsed="0.327604"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:11.059500" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:10.730882" elapsed="0.328795"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.061657" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:17:11.074356" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.061259" elapsed="0.013248"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:17:11.061110" elapsed="0.013448"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.075917" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:17:11.194126" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.075019" elapsed="0.119358"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:17:11.074704" elapsed="0.119755"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.195884" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:17:11.239459" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.194969" elapsed="0.044762"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:17:11.194654" elapsed="0.045308"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.241742" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:17:11.287283" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.240681" elapsed="0.046865"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:17:11.240270" elapsed="0.047363"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.289129" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:17:11.335414" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.288220" elapsed="0.047506"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:17:11.287841" elapsed="0.047989"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.337502" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:17:11.383001" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.336548" elapsed="0.046722"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:17:11.336144" elapsed="0.047211"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.384761" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:17:11.431183" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.383865" elapsed="0.047560"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:17:11.383551" elapsed="0.047963"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.432899" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:17:11.479247" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.432019" elapsed="0.047474"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:17:11.431708" elapsed="0.047868"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:17:11.060947" elapsed="0.418696"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:17:11.060616" elapsed="0.419172"/>
</kw>
<msg time="2026-04-19T03:17:11.480068" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:11.480176" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:11.059907" elapsed="0.420320"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:11.480597" elapsed="0.000494"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:11.481569" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T03:17:11.481270" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:11.481218" elapsed="0.000560"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:11.482143" elapsed="0.000051"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:10.730335" elapsed="0.752084"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T03:17:10.729050" elapsed="0.753467"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:11.484602" level="INFO">${ip_address} = 10.30.171.128</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-19T03:17:11.483948" elapsed="0.000714"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:11.484772" elapsed="0.000065"/>
</return>
<msg time="2026-04-19T03:17:11.485158" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:11.483196" elapsed="0.002018"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.488271" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:11.487867" elapsed="0.000431"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:11.491062" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:11.491325" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:11.490482" elapsed="0.000940"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:11.491715" elapsed="0.000615"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.493601" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:11.827588" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:11.493277" elapsed="0.334518"/>
</kw>
<msg time="2026-04-19T03:17:11.827914" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:11.492634" elapsed="0.335377"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:11.489304" elapsed="0.338882"/>
</kw>
<msg time="2026-04-19T03:17:11.828275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:11.488862" elapsed="0.339465"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:11.488479" elapsed="0.339922"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:11.828450" elapsed="0.000036"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:11.487162" elapsed="0.341442"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.830460" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:17:11.843084" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.830069" elapsed="0.013259"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:17:11.829915" elapsed="0.013497"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.844811" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:17:11.953850" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.843920" elapsed="0.110224"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:17:11.843610" elapsed="0.110619"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:11.955686" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:17:12.009542" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:11.954781" elapsed="0.055007"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:17:11.954426" elapsed="0.055445"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.011374" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:17:12.061506" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.010421" elapsed="0.051328"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:17:12.010109" elapsed="0.051721"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.063330" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:17:12.109405" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.062384" elapsed="0.047270"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:17:12.062026" elapsed="0.047709"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.111222" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:17:12.157762" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.110289" elapsed="0.047721"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:17:12.109930" elapsed="0.048207"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.159607" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:17:12.209536" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.158703" elapsed="0.051082"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:17:12.158335" elapsed="0.051536"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.211411" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:17:12.257534" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.210427" elapsed="0.047357"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:17:12.210107" elapsed="0.047762"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:17:11.829774" elapsed="0.428164"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:17:11.829461" elapsed="0.428660"/>
</kw>
<msg time="2026-04-19T03:17:12.258354" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:12.258454" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:11.828811" elapsed="0.429694"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:12.258934" elapsed="0.000502"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:12.260085" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:17:12.259609" elapsed="0.000629"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:12.259562" elapsed="0.000833"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:12.260740" elapsed="0.000048"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:11.485810" elapsed="0.775381"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T03:17:11.482722" elapsed="0.778568"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:12.263425" level="INFO">${ip_address} = 10.30.171.206</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-19T03:17:12.262756" elapsed="0.000730"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:12.263598" elapsed="0.000065"/>
</return>
<msg time="2026-04-19T03:17:12.263943" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:12.261903" elapsed="0.002095"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.267693" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:12.266808" elapsed="0.000955"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:12.270378" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:12.270661" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:12.269810" elapsed="0.000953"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.271128" elapsed="0.000791"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.273417" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:12.587995" 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 Sun Apr 19 03:16:13 UTC 2026

  System load:  0.16               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:12.273052" elapsed="0.315083"/>
</kw>
<msg time="2026-04-19T03:17:12.588255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.272301" elapsed="0.316060"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:12.268846" elapsed="0.319673"/>
</kw>
<msg time="2026-04-19T03:17:12.588608" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.268363" elapsed="0.320295"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:12.267964" elapsed="0.320774"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:12.588788" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:12.265897" elapsed="0.323057"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.590910" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:17:12.603617" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.590514" elapsed="0.013374"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:17:12.590337" elapsed="0.013639"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.605589" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:17:12.652130" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.604571" elapsed="0.047824"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:17:12.604235" elapsed="0.048250"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.654002" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:17:12.700376" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.653079" elapsed="0.047631"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:17:12.652698" elapsed="0.048114"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.703024" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:17:12.748150" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.701850" elapsed="0.046632"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:17:12.701476" elapsed="0.047108"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.750192" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:17:12.796889" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.749253" elapsed="0.048151"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:17:12.748840" elapsed="0.048701"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.799329" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:17:12.845125" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.798411" elapsed="0.047040"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:17:12.797855" elapsed="0.047708"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.847280" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:17:12.891949" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.846273" elapsed="0.045976"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:17:12.845841" elapsed="0.046495"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.893778" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:17:12.944177" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:12.892868" elapsed="0.051629"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:17:12.892545" elapsed="0.052062"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:17:12.590194" elapsed="0.354498"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:17:12.589840" elapsed="0.355022"/>
</kw>
<msg time="2026-04-19T03:17:12.945222" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:12.945349" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:12.589191" elapsed="0.356224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:12.945880" elapsed="0.000660"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:12.947195" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T03:17:12.946745" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:12.946688" elapsed="0.000777"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:12.947916" elapsed="0.000059"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:12.264625" elapsed="0.683666"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T03:17:12.261494" elapsed="0.686920"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:10.728892" elapsed="2.219610"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T03:17:10.726140" elapsed="2.222526"/>
</kw>
<msg time="2026-04-19T03:17:12.948781" 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-19T03:17:10.725620" elapsed="2.223298"/>
</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-19T03:17:12.956939" elapsed="0.000961"/>
</kw>
<kw name="Open 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-19T03:17:12.958268" elapsed="0.000285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:12.958779" elapsed="0.000144"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:12.949877" elapsed="0.009122"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T03:17:10.724713" elapsed="2.234395"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T03:17:10.724201" elapsed="2.235005"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T03:17:12.962002" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:12.961397" elapsed="0.000668"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:12.962820" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:12.962358" elapsed="0.000493"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:12.962898" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:12.963073" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:12.960785" elapsed="0.002315"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.967545" 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-19T03:17:12.967649" 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-19T03:17:12.967384" elapsed="0.000294"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:12.969649" level="INFO">${ip_address} = 10.30.171.9</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-19T03:17:12.969194" elapsed="0.000483"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:12.969727" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:12.969879" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:12.968855" elapsed="0.001048"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.973731" level="INFO">${odl_connection} = 532</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:12.973129" elapsed="0.000646"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:12.975968" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:12.976060" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:12.975682" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.976246" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:12.977427" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:13.285218" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:12.977103" elapsed="0.308268"/>
</kw>
<msg time="2026-04-19T03:17:13.285458" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.976735" elapsed="0.308820"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:12.975199" elapsed="0.310484"/>
</kw>
<msg time="2026-04-19T03:17:13.285742" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.974775" elapsed="0.311018"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:12.974263" elapsed="0.311687"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:13.286151" elapsed="0.000090"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:12.972135" elapsed="0.314307"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.288945" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:17:13.301341" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:13.301504" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:17:13.301567" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:13.301623" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:13.288745" elapsed="0.012909"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.303620" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:13.302972" elapsed="0.000752"/>
</kw>
<msg time="2026-04-19T03:17:13.303933" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:13.304057" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:13.302021" elapsed="0.002090"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.305450" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:13.304482" elapsed="0.001028"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.308002" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:13.307440" elapsed="0.000698"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.309010" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:13.308476" elapsed="0.000657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.310000" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:13.309470" elapsed="0.000710"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:13.306514" elapsed="0.003791"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:13.305689" elapsed="0.004696"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.305643" elapsed="0.004798"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:13.310772" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:13.310566" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.310528" elapsed="0.000312"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:13.310982" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:17:13.310892" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.310876" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:13.311230" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:13.288147" elapsed="0.023254"/>
</kw>
<msg time="2026-04-19T03:17:13.311543" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:13.311654" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:13.286815" elapsed="0.024900"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:13.311970" elapsed="0.000515"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:13.312850" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:17:13.312622" elapsed="0.000378"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.312602" elapsed="0.000455"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:13.313247" elapsed="0.000047"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:12.970641" elapsed="0.342854"/>
</kw>
<msg time="2026-04-19T03:17:13.313556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.970082" elapsed="0.343524"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:12.968328" elapsed="0.345367"/>
</kw>
<msg time="2026-04-19T03:17:13.313737" 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-19T03:17:12.967840" elapsed="0.345942"/>
</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-19T03:17:13.317090" 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-19T03:17:13.317618" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:13.317933" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:13.314113" elapsed="0.004022"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:12.964666" elapsed="0.353532"/>
</kw>
<msg time="2026-04-19T03:17:13.318256" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:12.964209" elapsed="0.354097"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:12.963493" elapsed="0.354898"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:12.963325" elapsed="0.355118"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.320690" 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-19T03:17:13.320795" 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-19T03:17:13.320547" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:13.322797" level="INFO">${ip_address} = 10.30.171.128</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-19T03:17:13.322342" elapsed="0.000482"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:13.322874" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:13.323047" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:13.321977" elapsed="0.001106"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.326926" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:13.326329" elapsed="0.000642"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.329152" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:13.329232" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:13.328860" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.329420" elapsed="0.000500"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.330885" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:13.650899" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:13.330536" elapsed="0.320463"/>
</kw>
<msg time="2026-04-19T03:17:13.651089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.330152" elapsed="0.321008"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:13.328369" elapsed="0.322889"/>
</kw>
<msg time="2026-04-19T03:17:13.651382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.327954" elapsed="0.323480"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:13.327449" elapsed="0.324124"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:13.651714" elapsed="0.000077"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:13.325286" elapsed="0.326684"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.654278" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:17:13.667020" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:13.667196" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:17:13.667260" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:13.667317" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:13.654079" elapsed="0.013271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.668479" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:13.668104" elapsed="0.000438"/>
</kw>
<msg time="2026-04-19T03:17:13.668672" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:13.668735" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:13.667603" elapsed="0.001164"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.669621" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:13.669002" elapsed="0.000656"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.671529" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:13.670945" elapsed="0.000687"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.672534" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:13.671971" elapsed="0.000652"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.673517" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:13.672954" elapsed="0.000659"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:13.670299" elapsed="0.003432"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:13.669772" elapsed="0.004044"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.669743" elapsed="0.004129"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:13.674274" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:13.674017" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.673977" elapsed="0.000448"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:13.674741" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T03:17:13.674542" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.674507" elapsed="0.000421"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:13.675284" elapsed="0.000053"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:13.653482" elapsed="0.022168"/>
</kw>
<msg time="2026-04-19T03:17:13.675963" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:13.676263" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:13.652328" elapsed="0.024072"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:13.676963" elapsed="0.001153"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:13.678828" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:17:13.678418" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:13.678375" elapsed="0.000642"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:13.679253" elapsed="0.000047"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:13.323785" elapsed="0.355715"/>
</kw>
<msg time="2026-04-19T03:17:13.679561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.323251" elapsed="0.356361"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:13.321457" elapsed="0.358282"/>
</kw>
<msg time="2026-04-19T03:17:13.679782" 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-19T03:17:13.320979" elapsed="0.358849"/>
</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-19T03:17:13.683151" 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-19T03:17:13.683631" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:13.683939" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:13.680140" elapsed="0.003969"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:13.319913" elapsed="0.364257"/>
</kw>
<msg time="2026-04-19T03:17:13.684227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.319463" elapsed="0.364813"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:13.318697" elapsed="0.365665"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:13.318539" elapsed="0.365870"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.686645" 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-19T03:17:13.686746" 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-19T03:17:13.686511" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:13.688729" level="INFO">${ip_address} = 10.30.171.206</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-19T03:17:13.688276" elapsed="0.000480"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:17:13.688806" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:13.688959" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:13.687934" elapsed="0.001051"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.692967" level="INFO">${odl_connection} = 536</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:13.692375" elapsed="0.000639"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:13.695199" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:13.695276" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:13.694918" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.695460" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:13.696825" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:14.286828" 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 Sun Apr 19 03:17:13 UTC 2026

  System load:  0.1                Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:13.696500" elapsed="0.590610"/>
</kw>
<msg time="2026-04-19T03:17:14.287197" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.696135" elapsed="0.591153"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:13.694430" elapsed="0.592969"/>
</kw>
<msg time="2026-04-19T03:17:14.287454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.694001" elapsed="0.593504"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:17:13.693484" elapsed="0.594181"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:17:14.287815" elapsed="0.000085"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:17:13.691371" elapsed="0.596745"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.290507" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:17:14.303641" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:14.303895" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:17:14.303996" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:17:14.304127" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:17:14.290307" elapsed="0.013874"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.306001" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:17:14.305366" elapsed="0.000770"/>
</kw>
<msg time="2026-04-19T03:17:14.306345" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:17:14.306441" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:14.304579" elapsed="0.001913"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.307871" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:14.306892" elapsed="0.001037"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.310482" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:14.309861" elapsed="0.000725"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.311383" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:14.310909" elapsed="0.000549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.312266" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:14.311754" elapsed="0.000595"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:17:14.308892" elapsed="0.003557"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:14.308140" elapsed="0.004380"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.308093" elapsed="0.004476"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:17:14.312862" elapsed="0.000027"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:14.312676" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.312644" elapsed="0.000338"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:14.313296" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T03:17:14.313117" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.313083" elapsed="0.000376"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:14.313770" elapsed="0.000039"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:17:14.289697" elapsed="0.024393"/>
</kw>
<msg time="2026-04-19T03:17:14.314344" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:17:14.314540" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:17:14.288481" elapsed="0.026149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:14.314984" elapsed="0.000700"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:17:14.316211" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T03:17:14.315870" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.315842" elapsed="0.000651"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:14.316760" elapsed="0.000066"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:17:13.689732" elapsed="0.627397"/>
</kw>
<msg time="2026-04-19T03:17:14.317274" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.689206" elapsed="0.628141"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:17:13.687414" elapsed="0.630055"/>
</kw>
<msg time="2026-04-19T03:17:14.317528" 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-19T03:17:13.686928" elapsed="0.630664"/>
</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-19T03:17:14.322443" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T03:17:14.322999" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:14.323390" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:14.318204" elapsed="0.005338"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:17:13.685853" elapsed="0.637750"/>
</kw>
<msg time="2026-04-19T03:17:14.323661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:13.685408" elapsed="0.638301"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:17:13.684658" elapsed="0.639136"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:17:13.684502" elapsed="0.639339"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:12.963159" elapsed="1.360716"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:17:12.959835" elapsed="1.364098"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:12.959316" elapsed="1.364654"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:12.959289" elapsed="1.364707"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T03:17:09.644710" elapsed="4.679353"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T03:17:04.282557" elapsed="10.041642"/>
</test>
<test id="s1-s19-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.337476" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:14.337097" elapsed="0.000406"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.338062" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:14.337683" elapsed="0.000406"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T03:17:14.338525" level="INFO">${epoch} = 1776568634.338445</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T03:17:14.338256" elapsed="0.000295"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.339131" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:14.338719" elapsed="0.000439"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.339703" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:17:14.339326" elapsed="0.000403"/>
</kw>
<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-19T03:17:14.341286" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:14.340897" elapsed="0.000415"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.341789" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:14.341471" elapsed="0.000343"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:14.341859" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:14.342013" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:14.340527" elapsed="0.001532"/>
</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-19T03:17:14.343252" level="INFO">${member_ip} = 10.30.171.9</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-19T03:17:14.342832" elapsed="0.000455"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.344064" 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-19T03:17:14.344165" 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-19T03:17:14.343912" elapsed="0.000279"/>
</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-19T03:17:14.346824" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:14.346545" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.346526" elapsed="0.000377"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.347374" 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-19T03:17:14.347479" 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-19T03:17:14.347067" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.348149" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:14.347660" elapsed="0.000537"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.348770" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:14.348354" elapsed="0.000443"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.350009" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:14.350153" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:14.349470" elapsed="0.000709"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:14.350565" elapsed="0.000701"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.353361" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:14.670857" 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 Sun Apr 19 03:17:04 UTC 2026

  System load:  0.0                Processes:             117
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:17:14.352786" elapsed="0.318294"/>
</kw>
<msg time="2026-04-19T03:17:14.671207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:14.351501" elapsed="0.319873"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:14.349014" elapsed="0.322598"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.672107" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log'.</msg>
<msg time="2026-04-19T03:17:14.694681" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:14.694920" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:14.695017" 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-19T03:17:14.671837" elapsed="0.023274"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:14.695479" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.697066" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:14.696379" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:14.697648" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:14.697337" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.697287" elapsed="0.000514"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:14.698188" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T03:17:14.697918" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.697885" elapsed="0.000489"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:14.698447" 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-19T03:17:14.716360" elapsed="0.000543"/>
</kw>
<kw name="Open 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-19T03:17:14.717092" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:14.717407" elapsed="0.000115"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:14.699156" elapsed="0.018423"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:17:14.345997" elapsed="0.371677"/>
</kw>
<msg time="2026-04-19T03:17:14.717731" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:14.345388" elapsed="0.372398"/>
</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-19T03:17:14.344848" elapsed="0.373021"/>
</kw>
<msg time="2026-04-19T03:17:14.717911" 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-19T03:17:14.344347" elapsed="0.373611"/>
</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-19T03:17:14.721186" 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-19T03:17:14.721705" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:14.722092" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:17:14.718274" elapsed="0.004009"/>
</kw>
<msg time="2026-04-19T03:17:14.722380" 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-19T03:17:14.343505" elapsed="0.378902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.722862" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:14.722602" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:17:14.722952" 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-19T03:17:14.342427" elapsed="0.380890"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:14.342248" elapsed="0.381110"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:14.724360" level="INFO">${member_ip} = 10.30.171.128</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-19T03:17:14.724081" elapsed="0.000306"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.725200" 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-19T03:17:14.725356" 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-19T03:17:14.725058" elapsed="0.000327"/>
</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-19T03:17:14.728205" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:14.727907" elapsed="0.000357"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:14.727888" elapsed="0.000399"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.728584" 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-19T03:17:14.728686" 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-19T03:17:14.728447" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.729364" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:14.728868" elapsed="0.000547"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.730018" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:14.729593" elapsed="0.000469"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:14.731271" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:14.731399" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:14.730719" elapsed="0.000706"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:14.731615" elapsed="0.000868"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:14.734609" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:15.040723" 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 Sun Apr 19 03:17:05 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:17:14.734026" elapsed="0.306858"/>
</kw>
<msg time="2026-04-19T03:17:15.040993" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:14.732718" elapsed="0.308449"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:14.730284" elapsed="0.311032"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:15.041738" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log'.</msg>
<msg time="2026-04-19T03:17:15.064567" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:15.064801" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:15.064898" 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-19T03:17:15.041525" elapsed="0.023424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:15.065370" elapsed="0.000454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.066855" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:15.066238" elapsed="0.000710"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.067420" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:15.067150" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:15.067103" elapsed="0.000467"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:15.067921" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T03:17:15.067690" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:15.067656" elapsed="0.000660"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.068474" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:15.085732" elapsed="0.000512"/>
</kw>
<kw name="Open 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-19T03:17:15.086416" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:15.086716" 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-19T03:17:15.069190" elapsed="0.017674"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:17:14.727354" elapsed="0.359600"/>
</kw>
<msg time="2026-04-19T03:17:15.087006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:14.726670" elapsed="0.360403"/>
</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-19T03:17:14.726117" elapsed="0.361037"/>
</kw>
<msg time="2026-04-19T03:17:15.087195" 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-19T03:17:14.725573" elapsed="0.361666"/>
</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-19T03:17:15.090323" 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-19T03:17:15.090792" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:15.091097" 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-19T03:17:15.087524" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T03:17:15.091331" 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-19T03:17:14.724617" elapsed="0.366739"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.091774" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:15.091531" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:17:15.091858" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:17:14.723647" elapsed="0.368413"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:14.723459" elapsed="0.368641"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:15.093278" level="INFO">${member_ip} = 10.30.171.206</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-19T03:17:15.092775" elapsed="0.000531"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:15.094083" 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-19T03:17:15.094183" 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-19T03:17:15.093937" elapsed="0.000272"/>
</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-19T03:17:15.097011" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:15.096738" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:15.096720" elapsed="0.000416"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:15.097423" 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-19T03:17:15.097529" 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-19T03:17:15.097284" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.098189" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:15.097707" elapsed="0.000566"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:17:15.098846" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:17:15.098433" elapsed="0.000440"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.100076" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:17:15.100203" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:17:15.099540" elapsed="0.000689"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:15.100415" elapsed="0.000672"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:17:15.103192" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:17:15.414530" 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 Sun Apr 19 03:17:13 UTC 2026

  System load:  0.1                Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:17:15.102617" elapsed="0.312062"/>
</kw>
<msg time="2026-04-19T03:17:15.414781" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:15.101316" elapsed="0.313607"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:17:15.099107" elapsed="0.315980"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:17:15.415462" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776568634.338445.log'.</msg>
<msg time="2026-04-19T03:17:15.438277" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:17:15.438511" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:17:15.438607" 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-19T03:17:15.415265" elapsed="0.023394"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:15.439021" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.440563" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:15.439900" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.441165" elapsed="0.000088"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:15.440830" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:15.440785" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:17:15.441744" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:17:15.441500" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:15.441466" elapsed="0.000413"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.441926" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:15.458261" elapsed="0.000501"/>
</kw>
<kw name="Open 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-19T03:17:15.458935" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:15.459253" 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-19T03:17:15.442371" elapsed="0.017031"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:17:15.096213" elapsed="0.363277"/>
</kw>
<msg time="2026-04-19T03:17:15.459542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:15.095622" elapsed="0.363972"/>
</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-19T03:17:15.095090" elapsed="0.364579"/>
</kw>
<msg time="2026-04-19T03:17:15.459756" 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-19T03:17:15.094361" elapsed="0.365442"/>
</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-19T03:17:15.462908" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:17:15.463396" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:17:15.463687" 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-19T03:17:15.460112" elapsed="0.003722"/>
</kw>
<msg time="2026-04-19T03:17:15.463922" 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-19T03:17:15.093533" elapsed="0.370413"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.464383" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:15.464137" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:17:15.464466" 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-19T03:17:15.092372" elapsed="0.372215"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:17:15.092192" elapsed="0.372432"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:17:14.342115" elapsed="1.122544"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:17:14.339988" elapsed="1.124731"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.476756" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:15.476377" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.477273" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:15.476942" elapsed="0.000356"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:15.477341" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:15.477493" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:15.475989" elapsed="0.001528"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.479005" 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-19T03:17:15.478710" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:17:15.479092" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:15.479237" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:15.478368" elapsed="0.000894"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.488875" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:15.488619" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:15.489362" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:15.489096" elapsed="0.000310"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:17:15.494887" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:17:15.491638" elapsed="0.005010">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:15.489471" elapsed="0.007267">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.496930" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:15.496772" elapsed="0.000292"/>
</branch>
<status status="FAIL" start="2026-04-19T03:17:15.489453" elapsed="0.007637">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.497639" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.497776" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:15.497739" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:15.497721" elapsed="0.000117"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.497983" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.498072" elapsed="0.000016"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:17:15.483841" elapsed="0.014343">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.498256" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:17:15.479471" elapsed="0.018883">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.498576" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.498703" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:15.498667" elapsed="0.000075"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:15.498651" elapsed="0.000113"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.498963" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.499201" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:17:15.499268" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:17:15.477980" elapsed="0.021388">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:17:15.499485" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:17:15.499447" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:15.499430" elapsed="0.000118"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.499691" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:17:15.477750" elapsed="0.022013">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:17:15.477569" elapsed="0.022254">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:17:15.475592" elapsed="0.024327">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:15.475282" elapsed="0.024698">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T03:17:15.475263" elapsed="0.024941">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:17:15.500475" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:15.500277" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:15.500260" elapsed="0.000292"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:17:15.500812" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:15.500605" elapsed="0.000263"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:15.500589" elapsed="0.000303"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:17:15.474854" elapsed="0.026117">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:25.519947" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:25.519501" elapsed="0.000477"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:25.520486" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:25.520169" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:25.520562" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:17:25.520728" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:25.519093" elapsed="0.001660"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:25.522304" 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-19T03:17:25.521988" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:17:25.522379" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:25.522527" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:25.521641" elapsed="0.000911"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:25.530376" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:25.530115" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:25.530826" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:25.530580" elapsed="0.000291"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:17:25.589940" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:17:25.590156" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T03:17:25.590478" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:17:25.533116" elapsed="0.058204">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:25.530940" elapsed="0.060658">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.592026" elapsed="0.000084"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:25.591676" elapsed="0.000536"/>
</branch>
<status status="FAIL" start="2026-04-19T03:17:25.530921" elapsed="0.061343">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.593477" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:25.593780" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:25.593699" elapsed="0.000172"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:25.593660" elapsed="0.000259"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.594272" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:17:25.594433" elapsed="0.000032"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:17:25.525524" elapsed="0.069146">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:25.594830" elapsed="0.000033"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:17:25.522764" elapsed="0.072325">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.595578" elapsed="0.000054"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:17:25.595859" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:25.595781" elapsed="0.000166"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:25.595744" elapsed="0.000253"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.596466" elapsed="0.000054"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.597004" elapsed="0.000081"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:17:25.597188" elapsed="0.000021"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:17:25.521262" elapsed="0.076033">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:17:25.597412" elapsed="0.000015"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:17:25.597374" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:25.597357" elapsed="0.000115"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.597615" elapsed="0.000020"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:17:25.521017" elapsed="0.076667">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:17:25.520810" elapsed="0.076931">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:17:25.518652" elapsed="0.079184">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:25.518266" elapsed="0.079628">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T03:17:25.518240" elapsed="0.079684">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:17:25.598201" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:25.597989" elapsed="0.000267"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:25.597973" elapsed="0.000306"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:17:25.598579" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:25.598363" elapsed="0.000274"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:25.598316" elapsed="0.000344"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:17:25.517729" elapsed="0.081011">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:35.616676" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:35.616189" elapsed="0.000522"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:35.617231" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:35.616898" elapsed="0.000359"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:35.617308" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:17:35.617482" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:35.615754" elapsed="0.001753"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:35.619318" 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-19T03:17:35.618996" elapsed="0.000348"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:17:35.619391" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:35.619542" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:35.618651" elapsed="0.000915"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:35.627092" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:35.626814" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:35.627537" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:35.627294" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:17:35.641750" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:17:35.641912" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=401, reason=Unauthorized 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '524'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 401 Unauthorized&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 401 Unauthorized&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;401&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Unauthorized&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;org.jolokia.osgi.servlet.JolokiaServlet&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T03:17:35.642240" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:17:35.629829" elapsed="0.013258">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:35.627647" elapsed="0.015639">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.643706" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:35.643361" elapsed="0.000489"/>
</branch>
<status status="FAIL" start="2026-04-19T03:17:35.627628" elapsed="0.016273">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.645238" elapsed="0.000061"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:35.645543" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:35.645460" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:35.645421" elapsed="0.000268"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.646075" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:17:35.646235" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:17:35.622335" elapsed="0.024138">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:35.646632" elapsed="0.000034"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:17:35.619778" elapsed="0.027068">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.647396" elapsed="0.000056"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:17:35.647682" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:35.647603" elapsed="0.000169"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:35.647566" elapsed="0.000254"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.648302" elapsed="0.000054"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.648815" elapsed="0.000053"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:17:35.648965" elapsed="0.000033"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:17:35.618272" elapsed="0.030949">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:17:35.649479" elapsed="0.000033"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:17:35.649397" elapsed="0.000167"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:35.649360" elapsed="0.000252"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.650001" elapsed="0.000074"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:17:35.618022" elapsed="0.032166">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:17:35.617567" elapsed="0.032749">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:17:35.615330" elapsed="0.035195">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:35.614955" elapsed="0.035697">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T03:17:35.614929" elapsed="0.035952">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:17:35.651521" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:35.651023" elapsed="0.000618"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:35.650987" elapsed="0.000706"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:17:35.652317" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:35.651809" elapsed="0.000633"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:17:35.651774" elapsed="0.000719"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:17:35.614422" elapsed="0.038291">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.674120" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:17:45.673626" elapsed="0.000534"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.674665" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:17:45.674338" elapsed="0.000354"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:17:45.674743" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:17:45.674916" level="INFO">${index_list} = [1, 2, 3]</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-19T03:17:45.673096" elapsed="0.001845"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.676600" 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-19T03:17:45.676223" elapsed="0.000405"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:17:45.676677" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:45.676828" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:45.675839" elapsed="0.001014"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.684673" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:45.684367" elapsed="0.000356"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.685148" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:45.684884" elapsed="0.000309"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:17:45.955549" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:17:45.955782" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:17:45 GMT', 'Expires': 'Sun, 19 Apr 2026 02:17:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568665,"status":200} 
 </msg>
<msg time="2026-04-19T03:17:45.956157" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:17:45.687468" elapsed="0.268764"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:45.685266" elapsed="0.271174"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:45.957007" elapsed="0.000098"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:45.956546" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.685245" elapsed="0.272014"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.964491" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568665,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:45.960414" elapsed="0.004225"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:45.959673" elapsed="0.005120"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.959626" elapsed="0.005209"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.969210" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:45.965302" elapsed="0.004043"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:45.964918" elapsed="0.004597"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.964894" elapsed="0.004661"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.970707" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:45.969817" elapsed="0.000935"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:45.971358" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:45.970940" elapsed="0.000667"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.972789" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:45.971883" elapsed="0.000994"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:45.971645" elapsed="0.001379"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.970912" elapsed="0.002176"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.973761" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:45.973252" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:45.974132" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:45.973859" elapsed="0.000449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.975075" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:45.974499" elapsed="0.000656"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:45.974335" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.973841" elapsed="0.001486"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:45.975485" elapsed="0.000704"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:17:45.977233" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:45.976372" elapsed="0.000890"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:17:45.977419" elapsed="0.003149"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:17:45.958531" elapsed="0.022106"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:45.980823" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:45.980709" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.980689" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:17:45.983859" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568665,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:17:45.981148" elapsed="0.002741"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:17:45.983943" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:17:45.984139" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568665,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:17:45.679836" elapsed="0.304331"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:17:45.984226" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:17:45.984399" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568665,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:17:45.677088" elapsed="0.307338"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.985340" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568665,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:45.985008" elapsed="0.000382"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.986356" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568665, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:45.985939" elapsed="0.000446"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:17:45.986436" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:45.986596" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568665, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:17:45.985600" elapsed="0.001057"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:45.987063" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:45.986819" elapsed="0.000273"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:45.987465" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:45.987249" elapsed="0.000242"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:17:45.987540" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:45.987693" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:17:45.984647" elapsed="0.003071"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:17:45.987898" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:45.987787" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.987770" elapsed="0.000195"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.995482" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:45.995229" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:45.995928" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:45.995684" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:17:46.004830" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:17:46.004908" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:17:45 GMT', 'Expires': 'Sun, 19 Apr 2026 02:17:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568665,"status":200} 
 </msg>
<msg time="2026-04-19T03:17:46.005021" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:17:45.998340" elapsed="0.006725"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:45.996055" elapsed="0.009071"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.005311" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.005156" elapsed="0.000220"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:45.996021" elapsed="0.009376"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.009456" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568665,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.006564" elapsed="0.003025"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.006324" elapsed="0.003412"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.006305" elapsed="0.003469"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.014099" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.010209" elapsed="0.004024"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.009853" elapsed="0.004529"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.009829" elapsed="0.004592"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.015431" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.014655" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.015937" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.015570" elapsed="0.000651"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.017399" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:46.016507" elapsed="0.001002"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.016261" elapsed="0.001451"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.015543" elapsed="0.002203"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.018714" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.017974" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.019237" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.018851" elapsed="0.000632"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.020615" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:46.019748" elapsed="0.000979"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.019520" elapsed="0.001389"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.018825" elapsed="0.002108"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:46.021123" elapsed="0.000736"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:17:46.022834" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.022044" elapsed="0.000817"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.023017" elapsed="0.003218"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:17:46.005884" elapsed="0.020417"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:46.026479" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:46.026371" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.026352" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:17:46.029503" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:17:46.026691" elapsed="0.002840"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:17:46.029584" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:17:46.029740" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:17:45.990762" elapsed="0.039004"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:17:46.029824" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:46.029972" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:17:45.988198" elapsed="0.041800"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.030824" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568665,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.030574" elapsed="0.000299"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.031829" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568665, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.031434" elapsed="0.000423"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:17:46.031907" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:46.032094" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568665, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:17:46.031095" elapsed="0.001027"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:46.032512" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.032287" elapsed="0.000285"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:46.032944" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.032732" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:17:46.033016" elapsed="0.000076"/>
</return>
<msg time="2026-04-19T03:17:46.033218" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:17:46.030222" elapsed="0.003021"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:17:46.033286" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:17:46.033430" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:17:45.675453" elapsed="0.358001"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:17:46.033630" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:17:46.033522" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.033505" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.033861" elapsed="0.000024"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:17:45.675215" elapsed="0.358703"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.035528" level="INFO">${session} = ClusterManagement__session_2</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-19T03:17:46.035229" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:17:46.035601" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:46.035748" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:46.034869" elapsed="0.000903"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.043237" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.042972" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.043680" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.043438" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:17:46.372938" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:17:46.373193" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:17:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:17:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568666,"status":200} 
 </msg>
<msg time="2026-04-19T03:17:46.373495" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:17:46.045930" elapsed="0.327628"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.043791" elapsed="0.329881"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.374184" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.373740" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.043772" elapsed="0.330610"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.382200" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568666,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.377327" elapsed="0.004971"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.376727" elapsed="0.005679"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.376683" elapsed="0.005751"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.385441" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.382734" elapsed="0.002798"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.382491" elapsed="0.003208"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.382474" elapsed="0.003255"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.386483" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.385914" elapsed="0.000597"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.386847" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.386581" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.387799" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:46.387232" elapsed="0.000648"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.387064" elapsed="0.000991"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.386563" elapsed="0.001519"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.388768" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.388259" elapsed="0.000536"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.389137" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.388865" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.390074" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:46.389496" elapsed="0.000660"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.389334" elapsed="0.000970"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.388847" elapsed="0.001481"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:46.390486" elapsed="0.000695"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:17:46.392219" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.391350" elapsed="0.000897"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.392404" elapsed="0.002991"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:17:46.375615" elapsed="0.019847"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:46.395644" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:46.395532" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.395513" elapsed="0.000201"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:17:46.398667" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568666,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:17:46.395863" elapsed="0.002833"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:17:46.398749" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:17:46.398913" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568666,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:17:46.038520" elapsed="0.360419"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:17:46.398997" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:17:46.399164" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568666,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:17:46.035983" elapsed="0.363207"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.400005" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568666,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.399755" elapsed="0.000435"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.401157" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568666, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.400744" elapsed="0.000473"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:17:46.401270" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:17:46.401434" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568666, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:17:46.400406" elapsed="0.001054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:46.401841" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.401617" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:46.402251" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.402023" elapsed="0.000253"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:17:46.402324" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:17:46.402472" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:17:46.399405" elapsed="0.003091"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:17:46.402671" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:46.402563" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.402546" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.410373" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.410124" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.410816" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.410573" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:17:46.419797" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:17:46.419882" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:17:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:17:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568666,"status":200} 
 </msg>
<msg time="2026-04-19T03:17:46.419996" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:17:46.413097" elapsed="0.006942"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.410925" elapsed="0.009161"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.420308" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.420144" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.410907" elapsed="0.009487"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.424449" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568666,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.421606" elapsed="0.002939"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.421364" elapsed="0.003287"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.421346" elapsed="0.003333"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.428983" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.425074" elapsed="0.004056"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.424736" elapsed="0.004544"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.424720" elapsed="0.004598"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.430346" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.429545" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.431004" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.430579" elapsed="0.000728"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.432440" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:46.431579" elapsed="0.000972"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.431345" elapsed="0.001413"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.430551" elapsed="0.002241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.433652" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.433020" elapsed="0.000660"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.434014" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:17:46.433750" elapsed="0.000454"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.434962" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:17:46.434395" elapsed="0.000689"/>
</kw>
<status status="PASS" start="2026-04-19T03:17:46.434231" elapsed="0.000999"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.433732" elapsed="0.001523"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:17:46.435410" elapsed="0.000676"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:17:46.437061" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.436268" elapsed="0.000821"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.437245" elapsed="0.003184"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:17:46.420923" elapsed="0.019572"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:17:46.440676" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:17:46.440566" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.440547" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:17:46.443668" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:17:46.440895" elapsed="0.002803"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:17:46.443751" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:17:46.443910" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:17:46.405648" elapsed="0.038289"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:17:46.443995" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:17:46.444188" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:17:46.402942" elapsed="0.041273"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.445046" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568666,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.444779" elapsed="0.000319"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.446056" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568666, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:17:46.445647" elapsed="0.000439"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:17:46.446137" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:17:46.446296" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568666, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:17:46.445308" elapsed="0.001047"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:46.446738" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.446515" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:17:46.447207" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:17:46.446921" elapsed="0.000312"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:17:46.447282" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:17:46.447432" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:17:46.444427" elapsed="0.003030"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:17:46.447500" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:17:46.447647" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:17:46.034486" elapsed="0.413186"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:17:46.447850" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T03:17:46.447741" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:17:46.447723" elapsed="0.000206"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:17:46.448290" elapsed="0.000023"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:17:46.034254" elapsed="0.414096"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.449746" level="INFO">${session} = ClusterManagement__session_3</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-19T03:17:46.449449" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:17:46.449818" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:17:46.449963" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:17:46.449111" elapsed="0.000876"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.458980" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.458729" elapsed="0.000313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:17:46.459445" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:17:46.459200" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:19:51.554653" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:17:46.461702" elapsed="125.096808">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:46.459556" elapsed="125.099159">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.559305" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:19:51.558800" elapsed="0.000664"/>
</branch>
<status status="FAIL" start="2026-04-19T03:17:46.459537" elapsed="125.099981">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.560852" elapsed="0.000068"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:19:51.561165" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:19:51.561099" elapsed="0.000128"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:19:51.561062" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.561461" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:19:51.561559" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:17:46.454249" elapsed="125.107466">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:19:51.561816" elapsed="0.000022"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:17:46.450217" elapsed="125.111735">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.562376" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:19:51.562556" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:19:51.562505" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:19:51.562482" elapsed="0.000160"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.562915" elapsed="0.000034"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.563249" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:19:51.563345" elapsed="0.000023"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:17:46.448720" elapsed="125.114769">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:19:51.563655" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:19:51.563603" elapsed="0.000108"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:19:51.563578" elapsed="0.000163"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.563945" elapsed="0.000052"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:17:46.448495" elapsed="125.115603">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:17:45.675000" elapsed="125.889187">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:17:45.672406" elapsed="125.891923">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:17:45.671807" elapsed="125.892606">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:17:45.671766" elapsed="125.892690">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:19:51.564842" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:19:51.564554" elapsed="0.000366"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:19:51.564530" elapsed="0.000423"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:19:51.565380" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:19:51.565035" elapsed="0.000431"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:19:51.565008" elapsed="0.000492"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:17:45.670767" elapsed="125.894848">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.584911" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:20:01.584439" elapsed="0.000504"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.585449" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:20:01.585131" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:20:01.585525" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:20:01.585690" level="INFO">${index_list} = [1, 2, 3]</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-19T03:20:01.583970" elapsed="0.001747"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.587270" 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-19T03:20:01.586944" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:20:01.587352" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:20:01.587501" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:20:01.586593" elapsed="0.000934"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.595447" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.595173" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.595899" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.595654" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:20:01.607022" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:20:01.607150" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:20:01 GMT', 'Expires': 'Sun, 19 Apr 2026 02:20:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568801,"status":200} 
 </msg>
<msg time="2026-04-19T03:20:01.607293" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:20:01.598185" elapsed="0.009139"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.596011" elapsed="0.011365"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.607576" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.607405" elapsed="0.000238"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.595992" elapsed="0.011673"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.615636" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568801,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.609019" elapsed="0.006850"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.608759" elapsed="0.007439"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.608738" elapsed="0.007529"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.620094" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.617111" elapsed="0.003079"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.616408" elapsed="0.003892"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.616366" elapsed="0.003963"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.621138" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.620548" elapsed="0.000618"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.621508" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.621238" elapsed="0.000448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.622479" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.621880" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.621712" elapsed="0.000992"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.621219" elapsed="0.001509"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.623476" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.622892" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.623833" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.623575" elapsed="0.000431"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.624854" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.624224" elapsed="0.000710"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.624058" elapsed="0.001041"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.623556" elapsed="0.001568"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:20:01.625283" elapsed="0.000663"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:20:01.626960" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.626131" elapsed="0.000932"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.627225" elapsed="0.003083"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:20:01.608242" elapsed="0.022140"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:20:01.630569" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:20:01.630454" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.630435" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:20:01.633661" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:20:01.630786" elapsed="0.002904"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:20:01.633744" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:20:01.633912" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:20:01.590391" elapsed="0.043548"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:20:01.633998" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:20:01.634168" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:20:01.587821" elapsed="0.046374"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.635051" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.634780" elapsed="0.000324"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.636153" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.635658" elapsed="0.000526"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:20:01.636235" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:20:01.636397" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:20:01.635316" elapsed="0.001108"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.636829" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.636600" elapsed="0.000257"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.637247" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.637015" elapsed="0.000258"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:20:01.637323" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:20:01.637491" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:20:01.634416" elapsed="0.003103"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:20:01.637699" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:20:01.637589" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.637571" elapsed="0.000192"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.645669" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.645416" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.646131" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.645870" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:20:01.654377" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:20:01.654455" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:20:01 GMT', 'Expires': 'Sun, 19 Apr 2026 02:20:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568801,"status":200} 
 </msg>
<msg time="2026-04-19T03:20:01.654570" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:20:01.648421" elapsed="0.006176"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.646281" elapsed="0.008360"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.654825" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.654668" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.646262" elapsed="0.008650"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.659519" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568801,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.656142" elapsed="0.003510"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.655879" elapsed="0.003924"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.655860" elapsed="0.003982"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.664263" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.660280" elapsed="0.004114"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.659921" elapsed="0.004624"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.659897" elapsed="0.004726"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.665631" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.664869" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.665996" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.665730" elapsed="0.000481"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.667052" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.666407" elapsed="0.000727"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.666239" elapsed="0.001044"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.665712" elapsed="0.001597"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.668001" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.667474" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.668385" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.668118" elapsed="0.000442"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.669356" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.668775" elapsed="0.000661"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.668608" elapsed="0.000973"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.668099" elapsed="0.001506"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:20:01.669766" elapsed="0.000704"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:20:01.671456" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.670640" elapsed="0.000843"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.671643" elapsed="0.003345"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:20:01.655445" elapsed="0.019682"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:20:01.675335" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:20:01.675205" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.675185" elapsed="0.000257"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:20:01.678583" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:20:01.675602" elapsed="0.003010"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:20:01.678665" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:20:01.678833" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:20:01.640838" elapsed="0.038022"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:20:01.678918" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:20:01.679114" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:20:01.637966" elapsed="0.041175"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.679999" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.679737" elapsed="0.000388"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.681156" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.680728" elapsed="0.000456"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:20:01.681236" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:20:01.681397" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:20:01.680339" elapsed="0.001085"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.681805" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.681580" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.682264" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.681987" elapsed="0.000303"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:20:01.682339" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:20:01.682490" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:20:01.679373" elapsed="0.003142"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:20:01.682559" elapsed="0.000024"/>
</return>
<msg time="2026-04-19T03:20:01.682704" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:20:01.586210" elapsed="0.096518"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:20:01.682906" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:20:01.682796" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.682779" elapsed="0.000211"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.683156" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:20:01.585961" elapsed="0.097252"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.684693" level="INFO">${session} = ClusterManagement__session_2</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-19T03:20:01.684369" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:20:01.684846" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:20:01.685004" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:20:01.684008" elapsed="0.001035"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.692901" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.692618" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.693369" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.693121" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:20:01.708164" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:20:01.708402" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:20:01 GMT', 'Expires': 'Sun, 19 Apr 2026 02:20:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568801,"status":200} 
 </msg>
<msg time="2026-04-19T03:20:01.708689" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:20:01.695626" elapsed="0.013168"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.693482" elapsed="0.015426"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.709497" elapsed="0.000066"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.708974" elapsed="0.000731"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.693462" elapsed="0.016296"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.716987" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568801,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.712855" elapsed="0.004302"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.712168" elapsed="0.005153"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.712104" elapsed="0.005266"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.721746" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.717848" elapsed="0.003991"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.717476" elapsed="0.004468"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.717441" elapsed="0.004530"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.722734" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.722178" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.723108" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.722832" elapsed="0.000448"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.724056" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.723473" elapsed="0.000666"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.723307" elapsed="0.000978"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.722814" elapsed="0.001496"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.725022" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.724472" elapsed="0.000608"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.725416" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.725152" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.726352" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.725773" elapsed="0.000660"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.725611" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.725133" elapsed="0.001468"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:20:01.726758" elapsed="0.000747"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:20:01.728495" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.727671" elapsed="0.000851"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.728679" elapsed="0.003169"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:20:01.711069" elapsed="0.020847"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:20:01.732119" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:20:01.731987" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.731969" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:20:01.735177" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:20:01.732336" elapsed="0.002870"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:20:01.735259" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:20:01.735426" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:20:01.688101" elapsed="0.047352"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:20:01.735512" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:20:01.735663" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:20:01.685264" elapsed="0.050427"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.736599" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.736292" elapsed="0.000358"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.737733" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.737331" elapsed="0.000431"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:20:01.737812" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:20:01.737973" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:20:01.736880" elapsed="0.001120"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.738397" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.738174" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.738785" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.738577" elapsed="0.000234"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:20:01.738857" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:20:01.739005" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:20:01.735913" elapsed="0.003132"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:20:01.739238" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:20:01.739115" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.739098" elapsed="0.000207"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.746889" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.746637" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.747410" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.747153" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:20:01.756278" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:20:01.756357" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:20:01 GMT', 'Expires': 'Sun, 19 Apr 2026 02:20:01 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568801,"status":200} 
 </msg>
<msg time="2026-04-19T03:20:01.756487" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:20:01.749885" elapsed="0.006629"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.747524" elapsed="0.009034"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.756739" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.756585" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.747505" elapsed="0.009321"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.762188" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568801,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.758359" elapsed="0.003970"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.757994" elapsed="0.004485"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.757968" elapsed="0.004550"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.766389" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.762947" elapsed="0.003537"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.762602" elapsed="0.003998"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.762578" elapsed="0.004051"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.767381" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.766796" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.767740" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.767480" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.768694" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.768122" elapsed="0.000653"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.767938" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.767461" elapsed="0.001503"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.769668" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.769145" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.770024" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:20:01.769764" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.770975" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:20:01.770410" elapsed="0.000686"/>
</kw>
<status status="PASS" start="2026-04-19T03:20:01.770244" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.769746" elapsed="0.001518"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:20:01.771419" elapsed="0.000674"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:20:01.773122" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.772263" elapsed="0.000886"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.773342" elapsed="0.003096"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:20:01.757405" elapsed="0.019109"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:20:01.776698" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:20:01.776587" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.776567" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:20:01.779783" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:20:01.776931" elapsed="0.002881"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:20:01.779865" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:20:01.780024" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:20:01.742136" elapsed="0.037932"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:20:01.780127" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:20:01.780276" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:20:01.739518" elapsed="0.040784"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.781214" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568801,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.780866" elapsed="0.000401"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.782249" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:20:01.781830" elapsed="0.000447"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:20:01.782327" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:20:01.782489" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568801, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:20:01.781486" elapsed="0.001038"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.782941" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.782706" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:20:01.783435" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:20:01.783219" elapsed="0.000243"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:20:01.783510" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:20:01.783662" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:20:01.780512" elapsed="0.003175"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:20:01.783731" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:20:01.783881" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:20:01.683626" elapsed="0.100280"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:20:01.784110" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:20:01.783978" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T03:20:01.783960" elapsed="0.000233"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:20:01.784344" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:20:01.683393" elapsed="0.101006"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.786193" level="INFO">${session} = ClusterManagement__session_3</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-19T03:20:01.785871" elapsed="0.000349"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:20:01.786267" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:20:01.786415" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:20:01.785527" elapsed="0.000913"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.793976" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.793727" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:20:01.794441" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:20:01.794194" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:22:06.895314" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:20:01.796667" elapsed="125.103129">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:20:01.794549" elapsed="125.105537">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.900707" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:06.900183" elapsed="0.000682"/>
</branch>
<status status="FAIL" start="2026-04-19T03:20:01.794531" elapsed="125.106390">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.901882" elapsed="0.000031"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:22:06.902065" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:06.902001" elapsed="0.000113"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:22:06.901980" elapsed="0.000155"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.902283" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:22:06.902354" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:20:01.789243" elapsed="125.113228">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:22:06.902545" elapsed="0.000017"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:20:01.786652" elapsed="125.115994">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.902876" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:22:06.903006" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:06.902970" elapsed="0.000098"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:22:06.902951" elapsed="0.000140"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.903292" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.903514" elapsed="0.000028"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:22:06.903586" elapsed="0.000016"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:20:01.785055" elapsed="125.118634">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:22:06.903809" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:22:06.903770" elapsed="0.000080"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:22:06.903753" elapsed="0.000118"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.904018" elapsed="0.000037"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:20:01.784549" elapsed="125.119567">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:20:01.585773" elapsed="125.318493">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:20:01.583528" elapsed="125.320844">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:20:01.583060" elapsed="125.321371">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:20:01.583016" elapsed="125.321446">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:22:06.904779" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:06.904530" elapsed="0.000308"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:22:06.904513" elapsed="0.000350"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:22:06.905179" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:06.904919" elapsed="0.000325"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:22:06.904903" elapsed="0.000370"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:20:01.582499" elapsed="125.322860">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.924796" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:22:16.924337" elapsed="0.000491"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.925326" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:22:16.924999" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:22:16.925401" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:22:16.925579" level="INFO">${index_list} = [1, 2, 3]</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-19T03:22:16.923903" elapsed="0.001701"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.927284" 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-19T03:22:16.926813" elapsed="0.000498"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:22:16.927359" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:22:16.927517" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:22:16.926466" elapsed="0.001077"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.935117" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.934843" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.935592" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.935322" elapsed="0.000315"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:22:16.948364" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:22:16.948470" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:22:16 GMT', 'Expires': 'Sun, 19 Apr 2026 02:22:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568936,"status":200} 
 </msg>
<msg time="2026-04-19T03:22:16.948626" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:22:16.937819" elapsed="0.010845"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:16.935705" elapsed="0.013019"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:16.948975" elapsed="0.000129"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:16.948760" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.935686" elapsed="0.013518"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.954572" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568936,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.950864" elapsed="0.003841"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:16.950522" elapsed="0.004334"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.950495" elapsed="0.004400"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.959144" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.955336" elapsed="0.003937"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:16.954975" elapsed="0.004463"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.954951" elapsed="0.004527"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.960485" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:16.959721" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:16.960984" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:16.960623" elapsed="0.000643"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.962346" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:16.961536" elapsed="0.000922"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:16.961302" elapsed="0.001358"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.960597" elapsed="0.002097"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.963697" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:16.962929" elapsed="0.000807"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:16.964215" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:16.963834" elapsed="0.000624"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.965564" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:16.964731" elapsed="0.000945"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:16.964494" elapsed="0.001382"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.963809" elapsed="0.002102"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:22:16.966146" elapsed="0.000945"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:22:16.968329" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:16.967326" elapsed="0.001030"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:22:16.968514" elapsed="0.003055"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:22:16.949899" elapsed="0.021734"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:22:16.971812" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:16.971703" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.971684" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:22:16.974924" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568936,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:22:16.972027" elapsed="0.002926"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:22:16.975006" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T03:22:16.975183" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568936,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:22:16.930274" elapsed="0.044936"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:22:16.975306" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:16.975485" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568936,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:22:16.927756" elapsed="0.047756"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.976353" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568936,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.976094" elapsed="0.000309"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.977456" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568936, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:16.976961" elapsed="0.000524"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:22:16.977536" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:16.977696" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568936, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:22:16.976613" elapsed="0.001110"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:16.978120" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:16.977879" elapsed="0.000269"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:16.978515" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:16.978305" elapsed="0.000236"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:22:16.978588" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:16.978737" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:22:16.975724" elapsed="0.003038"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:22:16.978966" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:16.978832" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.978813" elapsed="0.000246"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.986786" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.986519" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:16.987248" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.986988" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:22:16.997570" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:22:16.997647" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:22:16 GMT', 'Expires': 'Sun, 19 Apr 2026 02:22:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568936,"status":200} 
 </msg>
<msg time="2026-04-19T03:22:16.997771" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:22:16.990965" elapsed="0.006833"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:16.987371" elapsed="0.010471"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:16.998026" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:16.997869" elapsed="0.000240"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.987340" elapsed="0.010790"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.002951" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776568936,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:16.999416" elapsed="0.003691"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:16.999099" elapsed="0.004158"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:16.999080" elapsed="0.004215"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.007523" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.003727" elapsed="0.003924"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.003390" elapsed="0.004414"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.003364" elapsed="0.004478"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.008842" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.008100" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.009388" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.008977" elapsed="0.000650"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.010707" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:17.009893" elapsed="0.000925"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.009663" elapsed="0.001362"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.008951" elapsed="0.002127"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.012006" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.011305" elapsed="0.000742"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.012377" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.012119" elapsed="0.000432"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.013339" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:17.012740" elapsed="0.000678"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.012577" elapsed="0.000987"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.012101" elapsed="0.001487"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:22:17.013741" elapsed="0.000671"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:22:17.015413" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.014579" elapsed="0.000860"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.015595" elapsed="0.003025"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:22:16.998653" elapsed="0.020033"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:22:17.018865" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:17.018755" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.018737" elapsed="0.000198"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:22:17.021878" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:22:17.019095" elapsed="0.002813"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:22:17.021962" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:22:17.022140" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:22:16.981876" elapsed="0.040291"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:22:17.022226" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:22:17.022373" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:22:16.979260" elapsed="0.043139"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.023269" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568936,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.023000" elapsed="0.000318"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.024422" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568936, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.024007" elapsed="0.000444"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:22:17.024501" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:17.024659" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568936, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:22:17.023648" elapsed="0.001037"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:17.025147" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.024840" elapsed="0.000336"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:17.025545" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.025333" elapsed="0.000237"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:22:17.025618" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:22:17.025767" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:22:17.022646" elapsed="0.003146"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:22:17.025836" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:22:17.025982" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:22:16.926091" elapsed="0.099916"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:22:17.026197" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:22:17.026090" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.026072" elapsed="0.000207"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.026423" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:22:16.925843" elapsed="0.100635"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.028308" level="INFO">${session} = ClusterManagement__session_2</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-19T03:22:17.027990" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:22:17.028386" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:22:17.028539" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:22:17.027639" elapsed="0.000926"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.036182" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.035909" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.036627" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.036384" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:22:17.046190" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:22:17.046298" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:22:17 GMT', 'Expires': 'Sun, 19 Apr 2026 02:22:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568937,"status":200} 
 </msg>
<msg time="2026-04-19T03:22:17.046519" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:22:17.038876" elapsed="0.007682"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.036737" elapsed="0.009881"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.046869" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.046655" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.036718" elapsed="0.010276"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.052577" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568937,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.048788" elapsed="0.003925"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.048443" elapsed="0.004419"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.048416" elapsed="0.004484"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.056828" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.053359" elapsed="0.003562"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.052981" elapsed="0.004062"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.052958" elapsed="0.004115"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.057793" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.057246" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.058171" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.057892" elapsed="0.000459"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.059137" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:17.058545" elapsed="0.000671"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.058378" elapsed="0.001011"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.057874" elapsed="0.001540"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.060134" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.059578" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.060505" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.060233" elapsed="0.000441"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.061452" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:17.060863" elapsed="0.000667"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.060700" elapsed="0.000976"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.060215" elapsed="0.001485"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:22:17.061858" elapsed="0.000697"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:22:17.063550" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.062726" elapsed="0.000851"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.063735" elapsed="0.003193"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:22:17.047758" elapsed="0.019238"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:22:17.067194" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:17.067084" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.067064" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:22:17.070257" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568937,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:22:17.067453" elapsed="0.002833"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:22:17.070339" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:22:17.070504" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568937,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:22:17.031328" elapsed="0.039242"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:22:17.070631" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:17.070811" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568937,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:22:17.028777" elapsed="0.042063"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.071723" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568937,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.071439" elapsed="0.000334"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.072849" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568937, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.072442" elapsed="0.000436"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:22:17.072928" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:22:17.073107" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568937, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:22:17.071985" elapsed="0.001149"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:17.073519" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.073290" elapsed="0.000263"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:17.073923" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.073711" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:22:17.073996" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:17.074164" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:22:17.071071" elapsed="0.003118"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:22:17.074365" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:17.074257" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.074239" elapsed="0.000190"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.082009" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.081755" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.082474" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.082230" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:22:17.090639" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:22:17.090717" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:22:17 GMT', 'Expires': 'Sun, 19 Apr 2026 02:22:17 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568937,"status":200} 
 </msg>
<msg time="2026-04-19T03:22:17.090841" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:22:17.084895" elapsed="0.005974"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.082584" elapsed="0.008330"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.091119" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.090941" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.082567" elapsed="0.008679"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.095253" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776568937,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.092496" elapsed="0.002873"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.092244" elapsed="0.003244"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.092225" elapsed="0.003292"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.098592" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.095829" elapsed="0.002858"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.095576" elapsed="0.003221"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.095558" elapsed="0.003268"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.099636" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.099023" elapsed="0.000641"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.100078" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.099736" elapsed="0.000610"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.101530" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:17.100634" elapsed="0.001014"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.100387" elapsed="0.001484"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.099718" elapsed="0.002190"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.103010" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.102224" elapsed="0.000851"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.103586" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:22:17.103182" elapsed="0.000669"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.105065" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:22:17.104188" elapsed="0.001001"/>
</kw>
<status status="PASS" start="2026-04-19T03:22:17.103896" elapsed="0.001523"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.103155" elapsed="0.002299"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:22:17.105693" elapsed="0.001105"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:22:17.108252" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.107079" elapsed="0.001200"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.108440" elapsed="0.003187"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:22:17.091786" elapsed="0.019916"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:22:17.111902" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:22:17.111780" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.111759" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:22:17.114984" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:22:17.112146" elapsed="0.002868"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:22:17.115088" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:22:17.115270" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:22:17.077210" elapsed="0.038087"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:22:17.115394" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:17.115623" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:22:17.074641" elapsed="0.041009"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.116573" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776568937,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.116294" elapsed="0.000330"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.117646" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568937, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:22:17.117226" elapsed="0.000450"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:22:17.117727" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:22:17.117893" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776568937, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:22:17.116838" elapsed="0.001082"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:17.118427" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.118184" elapsed="0.000272"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:22:17.118834" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:22:17.118617" elapsed="0.000244"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:22:17.118914" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:22:17.119083" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:22:17.115895" elapsed="0.003215"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:22:17.119155" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:22:17.119318" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:22:17.026843" elapsed="0.092513"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:22:17.119547" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:22:17.119432" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T03:22:17.119415" elapsed="0.000216"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:22:17.119781" elapsed="0.000021"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:22:17.026618" elapsed="0.093218"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.121555" level="INFO">${session} = ClusterManagement__session_3</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-19T03:22:17.121244" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:22:17.121629" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:22:17.121778" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:22:17.120878" elapsed="0.000925"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.129641" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.129377" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:22:17.130105" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:22:17.129844" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:24:22.189256" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:22:17.132390" elapsed="125.060776">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:22:17.130218" elapsed="125.063155">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.193878" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:22.193457" elapsed="0.000750"/>
</branch>
<status status="FAIL" start="2026-04-19T03:22:17.130200" elapsed="125.064072">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.195580" elapsed="0.000064"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:24:22.195900" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:22.195814" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:24:22.195772" elapsed="0.000302"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.196448" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:24:22.196610" elapsed="0.000034"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:22:17.124673" elapsed="125.072184">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:24:22.197017" elapsed="0.000068"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:22:17.122017" elapsed="125.075257">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.197770" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:24:22.198103" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:22.197977" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:24:22.197939" elapsed="0.000353"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.198776" elapsed="0.000059"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.199417" elapsed="0.000059"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:24:22.199580" elapsed="0.000035"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:22:17.120488" elapsed="125.079320">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:24:22.200122" elapsed="0.000036"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:24:22.199991" elapsed="0.000242"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:24:22.199952" elapsed="0.000330"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.200607" elapsed="0.000046"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:22:17.119992" elapsed="125.080772">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:22:16.925660" elapsed="125.275234">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:22:16.923286" elapsed="125.277857">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:22:16.922793" elapsed="125.278485">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:22:16.922760" elapsed="125.278587">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:24:22.201941" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:22.201496" elapsed="0.000598"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:24:22.201458" elapsed="0.000691"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:24:22.202737" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:22.202269" elapsed="0.000595"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:24:22.202235" elapsed="0.000680"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:22:16.922111" elapsed="125.281038">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T03:24:22.203390" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T03:17:15.464886" elapsed="426.738802">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.209803" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:24:22.209340" elapsed="0.000491"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.210336" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:24:22.209992" elapsed="0.000370"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:24:22.210407" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:24:22.210564" level="INFO">${index_list} = [1, 2, 3]</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-19T03:24:22.208694" elapsed="0.001894"/>
</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-19T03:24:22.211668" level="INFO">${member_ip} = 10.30.171.9</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-19T03:24:22.211398" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.212552" 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-19T03:24:22.212653" 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-19T03:24:22.212382" elapsed="0.000297"/>
</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-19T03:24:22.215401" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:22.215117" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:22.215098" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.215756" 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-19T03:24:22.215855" 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-19T03:24:22.215629" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.216572" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:22.216047" elapsed="0.000572"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.217240" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:24:22.216778" elapsed="0.000488"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.218366" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:24:22.218459" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:24:22.217945" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:22.218645" elapsed="0.000563"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.220723" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:24:22.825077" 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 Sun Apr 19 03:24:22 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:17:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:24:22.220080" elapsed="0.605199"/>
</kw>
<msg time="2026-04-19T03:24:22.825516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:22.219380" elapsed="0.606279"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:24:22.217484" elapsed="0.608292"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.826314" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:24:22.839423" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:24:22.839801" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:24:22.839905" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:24:22.826020" elapsed="0.013941"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:22.840501" elapsed="0.000649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.842330" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:22.841583" elapsed="0.000853"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:22.842912" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:22.842609" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:22.842559" elapsed="0.000559"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:24:22.843487" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:24:22.843243" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:22.843208" elapsed="0.000477"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:22.843766" 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-19T03:24:22.849817" elapsed="0.000582"/>
</kw>
<kw name="Open 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-19T03:24:22.850569" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:22.850882" 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-19T03:24:22.844507" elapsed="0.006548"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:24:22.214526" elapsed="0.636627"/>
</kw>
<msg time="2026-04-19T03:24:22.851209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:22.213939" elapsed="0.637341"/>
</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-19T03:24:22.213373" elapsed="0.637989"/>
</kw>
<msg time="2026-04-19T03:24:22.851406" 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-19T03:24:22.212836" elapsed="0.638627"/>
</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-19T03:24:22.854496" 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-19T03:24:22.854982" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:22.855292" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:22.851797" elapsed="0.003642"/>
</kw>
<msg time="2026-04-19T03:24:22.855534" 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-19T03:24:22.211919" elapsed="0.643641"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.855980" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:22.855736" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:24:22.856082" 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-19T03:24:22.210946" elapsed="0.645265"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:24:22.210773" elapsed="0.645477"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:22.857291" level="INFO">${member_ip} = 10.30.171.128</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-19T03:24:22.857002" elapsed="0.000315"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.858225" 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-19T03:24:22.858327" 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-19T03:24:22.858069" elapsed="0.000284"/>
</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-19T03:24:22.861303" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:22.861016" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:22.860997" elapsed="0.000386"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.861659" 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-19T03:24:22.861757" 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-19T03:24:22.861531" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.862411" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:22.861933" elapsed="0.000525"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.863047" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:24:22.862613" elapsed="0.000464"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:24:22.864185" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:24:22.864278" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:24:22.863761" elapsed="0.000541"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:22.864461" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:24:22.866377" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:24:23.454672" 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 Sun Apr 19 03:24:23 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:17:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:24:22.865746" elapsed="0.589164"/>
</kw>
<msg time="2026-04-19T03:24:23.455058" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:22.865205" elapsed="0.590014"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:24:22.863305" elapsed="0.592043"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:24:23.455910" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:24:23.468481" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:24:23.468727" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:24:23.468828" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:24:23.455630" elapsed="0.013250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:23.469298" elapsed="0.000492"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:23.470932" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:23.470246" elapsed="0.000830"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:23.471566" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:23.471261" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:23.471213" elapsed="0.000510"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:24:23.472160" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:24:23.471855" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:23.471819" elapsed="0.000667"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:23.472571" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:23.477900" elapsed="0.000795"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:24:23.478929" elapsed="0.000251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:23.479392" 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-19T03:24:23.473295" elapsed="0.006306"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:24:22.860444" elapsed="0.619285"/>
</kw>
<msg time="2026-04-19T03:24:23.479805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:22.859867" elapsed="0.620027"/>
</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-19T03:24:22.859292" elapsed="0.620713"/>
</kw>
<msg time="2026-04-19T03:24:23.480096" 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-19T03:24:22.858510" elapsed="0.621668"/>
</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-19T03:24:23.483739" 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-19T03:24:23.484247" elapsed="0.000286"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:23.484682" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:23.480583" elapsed="0.004246"/>
</kw>
<msg time="2026-04-19T03:24:23.484919" 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-19T03:24:22.857599" elapsed="0.627345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:23.485402" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:23.485137" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:24:23.485501" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:24:22.856531" elapsed="0.629093"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:24:22.856348" elapsed="0.629314"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:23.486704" level="INFO">${member_ip} = 10.30.171.206</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-19T03:24:23.486427" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:23.487541" 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-19T03:24:23.487641" 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-19T03:24:23.487397" elapsed="0.000270"/>
</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-19T03:24:23.490322" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:23.490052" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:23.490019" elapsed="0.000384"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:23.490677" 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-19T03:24:23.490777" 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-19T03:24:23.490549" elapsed="0.000254"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:23.491426" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:23.490950" elapsed="0.000560"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:23.492113" level="INFO">${conn_id} = 553</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:24:23.491667" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:24:23.493209" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:24:23.493302" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:24:23.492808" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:23.493493" elapsed="0.000723"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:24:23.495571" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:24:24.076983" 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 Sun Apr 19 03:24:23 UTC 2026

  System load:  0.17               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:17:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:24:23.494937" elapsed="0.582270"/>
</kw>
<msg time="2026-04-19T03:24:24.077328" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:23.494389" elapsed="0.583077"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:24:23.492355" elapsed="0.585224"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.078128" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:24:24.091109" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:24:24.091345" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:24:24.091439" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:24:24.077825" elapsed="0.013666"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.091854" elapsed="0.000487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.093447" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:24.092755" elapsed="0.000791"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.094004" elapsed="0.000121"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:24.093713" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.093664" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:24:24.094613" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T03:24:24.094378" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.094343" elapsed="0.000453"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.094868" 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-19T03:24:24.099298" elapsed="0.000825"/>
</kw>
<kw name="Open 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-19T03:24:24.100369" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.100816" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:24.095430" elapsed="0.005627"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:24:23.489458" elapsed="0.611740"/>
</kw>
<msg time="2026-04-19T03:24:24.101276" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:23.488895" elapsed="0.612472"/>
</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-19T03:24:23.488339" elapsed="0.613142"/>
</kw>
<msg time="2026-04-19T03:24:24.101540" 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-19T03:24:23.487821" elapsed="0.613882"/>
</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-19T03:24:24.105160" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:24:24.105635" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.105927" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:24.102195" elapsed="0.003909"/>
</kw>
<msg time="2026-04-19T03:24:24.106197" 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-19T03:24:23.486944" elapsed="0.619278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.106650" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:24.106404" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:24:24.106733" 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-19T03:24:23.485937" elapsed="0.620918"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:24:23.485755" elapsed="0.621138"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:24:22.210642" elapsed="1.896286"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:24:22.204473" elapsed="1.902516"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T03:17:14.329163" elapsed="429.777941">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:24.107288" elapsed="0.000022"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T03:24:24.107529" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:24.107898" elapsed="0.000023"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:24.108156" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:24.108437" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:24.108247" elapsed="0.000248"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:24:24.108230" elapsed="0.000289"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T03:24:24.107719" elapsed="0.000823"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.107607" elapsed="0.000960"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:24.108720" elapsed="0.000021"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:17:14.324423" elapsed="429.784474">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T03:24:24.109505" elapsed="0.000284"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T03:09:59.161827" elapsed="864.947998"/>
</suite>
<suite id="s1-s20" name="Global Rpc Isolate" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_isolate.robot">
<kw name="Setup_Suite" 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-19T03:24:24.183455" 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-19T03:24:24.179775" elapsed="0.003729"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:24:24.179560" elapsed="0.004008"/>
</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-19T03:24:24.187926" 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-19T03:24:24.184672" elapsed="0.003281"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:24:24.188160" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:24.188045" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.188012" elapsed="0.000214"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.188719" 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-19T03:24:24.188370" elapsed="0.000392"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.189236" level="INFO">${cluster_size} = 3</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-19T03:24:24.188912" elapsed="0.000350"/>
</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-19T03:24:24.189740" elapsed="0.000276"/>
</kw>
<msg time="2026-04-19T03:24:24.190128" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:24:24.190191" level="INFO">${possibly_int_of_members} = 3</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-19T03:24:24.189416" elapsed="0.000801"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.190737" level="INFO">${int_of_members} = 3</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-19T03:24:24.190374" elapsed="0.000389"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.191705" 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-19T03:24:24.191445" elapsed="0.000286"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.192134" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:24:24.191866" elapsed="0.000294"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.192590" 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-19T03:24:24.192305" elapsed="0.000311"/>
</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-19T03:24:24.195474" elapsed="0.000211"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.196169" level="INFO">${member_ip} = 10.30.171.9</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-19T03:24:24.195831" elapsed="0.000364"/>
</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-19T03:24:24.196337" elapsed="0.000226"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.197333" 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-19T03:24:24.197026" elapsed="0.000334"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:24:24.197405" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:24:24.197560" 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-19T03:24:24.196744" elapsed="0.000841"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:24:24.198343" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f727a5d0&gt;, timeout=30, 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-19T03:24:24.197729" elapsed="0.000748"/>
</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-19T03:24:24.198629" elapsed="0.000191"/>
</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-19T03:24:24.194875" elapsed="0.004005"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:24:24.194694" elapsed="0.004230"/>
</iter>
<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-19T03:24:24.199735" elapsed="0.000187"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.200405" level="INFO">${member_ip} = 10.30.171.128</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-19T03:24:24.200084" elapsed="0.000348"/>
</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-19T03:24:24.200571" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.201602" level="INFO">${session} = ClusterManagement__session_2</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-19T03:24:24.201262" elapsed="0.000366"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:24:24.201675" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:24:24.201824" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:24:24.200968" elapsed="0.000881"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:24:24.202440" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782705fde390&gt;, timeout=30, 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-19T03:24:24.201990" elapsed="0.000551"/>
</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-19T03:24:24.202691" elapsed="0.000189"/>
</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-19T03:24:24.199195" elapsed="0.003744"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:24:24.199009" elapsed="0.003974"/>
</iter>
<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-19T03:24:24.203794" elapsed="0.000188"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.204464" level="INFO">${member_ip} = 10.30.171.206</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-19T03:24:24.204142" elapsed="0.000348"/>
</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-19T03:24:24.204629" elapsed="0.000218"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.205653" level="INFO">${session} = ClusterManagement__session_3</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-19T03:24:24.205360" elapsed="0.000319"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:24:24.205724" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:24:24.205873" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:24:24.205027" elapsed="0.000871"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:24:24.206472" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6e8f550&gt;, timeout=30, 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-19T03:24:24.206054" elapsed="0.000522"/>
</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-19T03:24:24.206726" 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-19T03:24:24.203255" elapsed="0.003716"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:24:24.203083" elapsed="0.003931"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:24:24.192670" elapsed="0.014390"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.207613" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:24:24.207212" elapsed="0.000443"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.208221" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:24:24.207804" elapsed="0.000459"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.208795" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:24:24.208412" elapsed="0.000425"/>
</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-19T03:24:24.190994" elapsed="0.017898"/>
</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-19T03:24:24.184344" elapsed="0.024603"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.209143" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:24.209011" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.208993" 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-19T03:24:24.212301" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:24:24.211898" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.212785" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:24:24.212475" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:24:24.212855" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:24:24.213007" level="INFO">${index_list} = [1, 2, 3]</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-19T03:24:24.211585" elapsed="0.001462"/>
</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-19T03:24:24.213999" level="INFO">${member_ip} = 10.30.171.9</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-19T03:24:24.213735" elapsed="0.000290"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.214752" 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-19T03:24:24.214851" 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-19T03:24:24.214605" elapsed="0.000272"/>
</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-19T03:24:24.218430" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:24.217661" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.217642" elapsed="0.000910"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.219185" 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-19T03:24:24.219416" 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-19T03:24:24.218743" elapsed="0.000723"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.220378" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:24.219714" elapsed="0.000769"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.221619" 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-19T03:24:24.220735" elapsed="0.000935"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.223350" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:24:24.223527" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:24:24.222985" elapsed="0.000584"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.223894" elapsed="0.000473"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.225603" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:24:24.541591" 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 Sun Apr 19 03:24:22 UTC 2026

  System load:  0.09               Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:24:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:24:24.225149" elapsed="0.316581"/>
</kw>
<msg time="2026-04-19T03:24:24.541811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.224701" elapsed="0.317275"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:24:24.222122" elapsed="0.320028"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.543128" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:24:24.556624" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:24:24.556995" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:24:24.557266" 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-19T03:24:24.542619" elapsed="0.014757"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.558090" elapsed="0.001165"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.561622" 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-19T03:24:24.560406" elapsed="0.001444"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.562818" elapsed="0.000108"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:24.562266" elapsed="0.000903"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.562214" elapsed="0.001038"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:24:24.563915" elapsed="0.000161"/>
</return>
<status status="PASS" start="2026-04-19T03:24:24.563426" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.563390" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.564465" 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-19T03:24:24.568960" 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-19T03:24:24.569710" elapsed="0.000287"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.570281" elapsed="0.000234"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:24.565487" elapsed="0.005098"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:24:24.216599" elapsed="0.354162"/>
</kw>
<msg time="2026-04-19T03:24:24.570817" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.215980" elapsed="0.354890"/>
</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-19T03:24:24.215515" elapsed="0.355435"/>
</kw>
<msg time="2026-04-19T03:24:24.570992" 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-19T03:24:24.215021" elapsed="0.356083"/>
</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-19T03:24:24.573489" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:24:24.573953" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.574272" 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-19T03:24:24.571392" elapsed="0.003027"/>
</kw>
<msg time="2026-04-19T03:24:24.574534" 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-19T03:24:24.214264" elapsed="0.360297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.574972" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:24.574727" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:24:24.575118" 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-19T03:24:24.213394" elapsed="0.361849"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:24:24.213230" elapsed="0.362050"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:24.576186" level="INFO">${member_ip} = 10.30.171.128</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-19T03:24:24.575896" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.576910" 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-19T03:24:24.577068" 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-19T03:24:24.576776" elapsed="0.000321"/>
</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-19T03:24:24.580554" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:24.580002" elapsed="0.000635"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.579982" elapsed="0.000692"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.581305" 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-19T03:24:24.581531" 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-19T03:24:24.580861" elapsed="0.000721"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.582522" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:24.581831" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.583796" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:24:24.582885" elapsed="0.000963"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.585526" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:24:24.585703" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:24:24.585168" elapsed="0.000578"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.586090" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.587688" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:24:24.901985" 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 Sun Apr 19 03:24:23 UTC 2026

  System load:  0.07               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:24:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:24:24.587366" elapsed="0.314780"/>
</kw>
<msg time="2026-04-19T03:24:24.902230" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.586899" elapsed="0.315492"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:24:24.584293" elapsed="0.318248"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.903437" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:24:24.916378" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:24:24.916737" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:24:24.916960" 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-19T03:24:24.902919" elapsed="0.014194"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.917761" elapsed="0.001158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.921388" 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-19T03:24:24.920137" elapsed="0.001481"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.922587" elapsed="0.000108"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:24.921984" elapsed="0.000926"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.921930" elapsed="0.001068"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:24:24.923508" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T03:24:24.923187" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.923162" elapsed="0.000670"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:24.923915" 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-19T03:24:24.928382" elapsed="0.000635"/>
</kw>
<kw name="Open 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-19T03:24:24.929411" elapsed="0.000391"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.930240" elapsed="0.000313"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:24.924582" 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-19T03:24:24.579097" elapsed="0.351835"/>
</kw>
<msg time="2026-04-19T03:24:24.931010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.578446" elapsed="0.352657"/>
</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-19T03:24:24.577734" elapsed="0.353462"/>
</kw>
<msg time="2026-04-19T03:24:24.931238" 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-19T03:24:24.577245" elapsed="0.354039"/>
</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-19T03:24:24.933666" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:24:24.934196" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:24.934483" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:24.931566" elapsed="0.003064"/>
</kw>
<msg time="2026-04-19T03:24:24.934721" 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-19T03:24:24.576422" elapsed="0.358325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.935796" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:24.935542" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:24:24.935882" 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-19T03:24:24.575544" elapsed="0.360464"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:24:24.575371" elapsed="0.360690"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:24.936950" level="INFO">${member_ip} = 10.30.171.206</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-19T03:24:24.936679" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.937683" 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-19T03:24:24.937782" 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-19T03:24:24.937548" elapsed="0.000261"/>
</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-19T03:24:24.941091" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:24.940539" elapsed="0.000638"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:24.940521" elapsed="0.000694"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.941834" 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-19T03:24:24.942103" 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-19T03:24:24.941402" elapsed="0.000754"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.943132" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:24.942451" elapsed="0.000785"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.944385" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:24:24.943490" elapsed="0.000947"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:24:24.946101" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:24:24.946276" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:24:24.945728" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.946646" elapsed="0.000752"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:24:24.948515" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:24:25.303460" 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 Sun Apr 19 03:24:23 UTC 2026

  System load:  0.17               Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:24:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:24:24.948181" elapsed="0.355428"/>
</kw>
<msg time="2026-04-19T03:24:25.303694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.947733" elapsed="0.356126"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:24:24.944858" elapsed="0.359153"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:24:25.304914" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:24:25.317680" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:24:25.318080" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:24:25.318310" 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-19T03:24:25.304412" elapsed="0.014008"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:25.319097" elapsed="0.001162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:25.322808" 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-19T03:24:25.321556" elapsed="0.001526"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:25.324193" elapsed="0.000111"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:25.323611" elapsed="0.000859"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:25.323556" elapsed="0.000994"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:24:25.325247" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-19T03:24:25.324725" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:25.324688" elapsed="0.000950"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:24:25.325766" 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-19T03:24:25.330112" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T03:24:25.330875" elapsed="0.000392"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:25.331532" elapsed="0.000245"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:25.326791" elapsed="0.005058"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:24:24.939615" elapsed="0.392436"/>
</kw>
<msg time="2026-04-19T03:24:25.332176" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:24.938999" elapsed="0.393232"/>
</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-19T03:24:24.938505" elapsed="0.393810"/>
</kw>
<msg time="2026-04-19T03:24:25.332358" 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-19T03:24:24.937953" elapsed="0.394452"/>
</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-19T03:24:25.334834" 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-19T03:24:25.335422" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:25.335710" 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-19T03:24:25.332692" elapsed="0.003165"/>
</kw>
<msg time="2026-04-19T03:24:25.335949" 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-19T03:24:24.937198" elapsed="0.398777"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:25.336409" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:25.336157" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:24:25.336494" 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-19T03:24:24.936331" elapsed="0.400287"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:24:24.936156" elapsed="0.400502"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:24:24.213099" elapsed="1.123595"/>
</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-19T03:24:24.209415" elapsed="1.127339"/>
</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-19T03:24:25.336903" elapsed="0.000228"/>
</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-19T03:24:25.349696" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:25.349586" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:25.349567" elapsed="0.000197"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:25.350055" 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-19T03:24:25.350160" 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-19T03:24:25.349906" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:25.350584" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:25.350328" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:25.351009" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:25.350767" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:25.351840" 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-19T03:24:25.351614" elapsed="0.000365">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:24:25.352102" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:24:25.352148" 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-19T03:24:25.351258" elapsed="0.000913"/>
</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-19T03:24:25.352462" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:25.352247" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:25.352229" elapsed="0.000330"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:25.353302" level="INFO">${ip_address} = 10.30.171.9</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-19T03:24:25.353020" elapsed="0.000308"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:24:25.353375" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:24:25.353523" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:24:25.352751" 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-19T03:24:25.353738" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:25.354432" level="INFO">index=10
host=10.30.171.9
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-19T03:24:25.354532" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:24:25.354324" 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-19T03:24:25.354696" elapsed="0.002036"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:24:25.357170" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:24:26.280710" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:24:25.356889" elapsed="0.923986"/>
</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-19T03:24:26.284495" 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-19T03:24:26.285055" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:26.285366" 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-19T03:24:26.282015" elapsed="0.003506"/>
</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-19T03:24:26.281309" elapsed="0.004259"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:24:25.349305" elapsed="0.936314"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:24:25.337837" elapsed="0.947831"/>
</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-19T03:24:25.337475" elapsed="0.948245"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:24:25.337343" elapsed="0.948420"/>
</iter>
<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-19T03:24:26.297832" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:26.297713" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:26.297689" elapsed="0.000219"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:26.298206" 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-19T03:24:26.298313" 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-19T03:24:26.298069" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:26.298749" 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-19T03:24:26.298485" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:26.299197" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:26.298934" elapsed="0.000307"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:26.299991" level="FAIL">Dictionary does not contain key '2'.</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-19T03:24:26.299737" elapsed="0.000380">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:24:26.300225" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:24:26.300335" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:24:26.299390" elapsed="0.000970"/>
</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-19T03:24:26.300659" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:26.300438" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:26.300419" elapsed="0.000342"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:26.301508" level="INFO">${ip_address} = 10.30.171.128</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-19T03:24:26.301239" elapsed="0.000296"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:24:26.301584" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:24:26.301740" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:24:26.300955" elapsed="0.000810"/>
</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-19T03:24:26.301911" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:26.302605" level="INFO">index=12
host=10.30.171.128
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-19T03:24:26.302706" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T03:24:26.302497" elapsed="0.000236"/>
</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-19T03:24:26.302871" elapsed="0.001946"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:24:26.305247" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:24:27.209109" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:24:26.304971" elapsed="0.904299"/>
</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-19T03:24:27.212449" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T03:24:27.213002" elapsed="0.000196"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:27.213338" 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-19T03:24:27.210369" elapsed="0.003125"/>
</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-19T03:24:27.209671" elapsed="0.003870"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:24:26.297419" elapsed="0.916177"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:24:26.286380" elapsed="0.927267"/>
</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-19T03:24:26.285999" elapsed="0.927702"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:24:26.285866" elapsed="0.927877"/>
</iter>
<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-19T03:24:27.225744" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:27.225626" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:27.225604" elapsed="0.000214"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:27.226187" 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-19T03:24:27.226295" 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-19T03:24:27.226047" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:27.226731" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:27.226466" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:27.227178" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:27.226918" elapsed="0.000304"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:27.227956" level="FAIL">Dictionary does not contain key '3'.</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-19T03:24:27.227723" elapsed="0.000353">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:24:27.228185" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:24:27.228231" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:24:27.227371" elapsed="0.000884"/>
</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-19T03:24:27.228546" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:27.228331" elapsed="0.000289"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:27.228313" elapsed="0.000331"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:27.229395" level="INFO">${ip_address} = 10.30.171.206</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-19T03:24:27.229128" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:24:27.229469" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:24:27.229621" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:24:27.228848" elapsed="0.000798"/>
</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-19T03:24:27.229790" elapsed="0.000416"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:27.230472" level="INFO">index=14
host=10.30.171.206
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-19T03:24:27.230571" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T03:24:27.230366" elapsed="0.000232"/>
</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-19T03:24:27.230735" elapsed="0.001920"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:24:27.233106" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:24:37.339462" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:24:27.232832" elapsed="10.107566">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:24:37.343799" elapsed="0.000424"/>
</kw>
<kw name="Open 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-19T03:24:37.344386" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:37.344703" elapsed="0.000105"/>
</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-19T03:24:37.341693" elapsed="0.003170"/>
</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-19T03:24:37.340947" elapsed="0.003967"/>
</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-19T03:24:27.225337" elapsed="10.119711">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:24:37.345171" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:24:27.214356" elapsed="10.130913">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:24:27.213977" elapsed="10.131474"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:24:27.213845" elapsed="10.131656"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:24:25.337193" elapsed="12.008347"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:24:24.183901" elapsed="13.161703"/>
</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-19T03:24:37.348149" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.348012" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.347988" elapsed="0.000235"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:24:37.352557" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.352445" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.352427" elapsed="0.000202"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:24:37.353672" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:24:37.353246" elapsed="0.000455"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:24:37.354252" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:24:37.353907" elapsed="0.000371"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:24:37.354326" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:24:37.354486" level="INFO">${index_list} = [1, 2, 3]</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-19T03:24:37.352884" elapsed="0.001628"/>
</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-19T03:24:37.359565" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.359455" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.359436" elapsed="0.000199"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:24:37.360893" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.360756" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.360735" elapsed="0.000228"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:37.361477" 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-19T03:24:37.361126" elapsed="0.000379"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:37.361907" 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-19T03:24:37.361665" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:24:37.445419" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:24:37.362645" elapsed="0.082957"/>
</kw>
<msg time="2026-04-19T03:24:37.445769" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:24:37.445817" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.362105" elapsed="0.083749"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:24:37.577411" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:24:37.446691" elapsed="0.130909"/>
</kw>
<msg time="2026-04-19T03:24:37.577746" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:24:37.577791" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.446103" elapsed="0.131725"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:37.578220" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:37.577923" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.577896" elapsed="0.000602"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:37.579191" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:37.578645" elapsed="0.000643"/>
</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-19T03:24:37.579589" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:37.579356" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.579337" elapsed="0.000439"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:24:37.579817" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:37.581941" 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-19T03:24:37.582788" elapsed="0.000716"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:37.583851" elapsed="0.000270"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:37.581105" elapsed="0.003112"/>
</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-19T03:24:37.580125" elapsed="0.004240"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:24:37.360424" elapsed="0.224044"/>
</kw>
<msg time="2026-04-19T03:24:37.584561" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:24:37.584617" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.359779" elapsed="0.224877"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:24:37.584847" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:24:37.584733" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.584714" elapsed="0.000218"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:37.585350" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:37.585689" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:24:37.585760" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:24:37.359160" elapsed="0.226708"/>
</kw>
<msg time="2026-04-19T03:24:37.585963" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:24:37.586007" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.354892" elapsed="0.231168"/>
</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-19T03:24:37.586382" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:37.586139" elapsed="0.000297"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.586121" elapsed="0.000338"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:24:37.354746" elapsed="0.231736"/>
</iter>
<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-19T03:24:37.593272" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.593163" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.593144" 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-19T03:24:37.594528" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.594401" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.594382" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:37.595167" level="INFO">${karaf_connection_index} = 12</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-19T03:24:37.594733" elapsed="0.000462"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:37.595577" 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-19T03:24:37.595346" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:24:37.681749" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:24:37.596325" elapsed="0.085579"/>
</kw>
<msg time="2026-04-19T03:24:37.682057" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:24:37.682106" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.595798" elapsed="0.086346"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:24:37.818477" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:24:37.682879" elapsed="0.135840"/>
</kw>
<msg time="2026-04-19T03:24:37.818913" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:24:37.818980" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.682313" elapsed="0.136737"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:37.819521" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:37.819168" elapsed="0.000583"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.819137" elapsed="0.000650"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:37.820601" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "s "i "n "g "l "[78Ce "[A[78Ct
 "o "n "_ "s "e "r "v "i "c "e "/ "g "l "o "b "a "l "_ "r "p "c "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:37.820008" elapsed="0.000686"/>
</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-19T03:24:37.820994" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:37.820761" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.820743" elapsed="0.000461"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:24:37.821242" elapsed="0.000037"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:24:37.823534" elapsed="0.000472"/>
</kw>
<kw name="Open 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-19T03:24:37.824413" elapsed="0.000324"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:37.825113" elapsed="0.000259"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:37.822681" elapsed="0.002787"/>
</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-19T03:24:37.821522" elapsed="0.004094"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:24:37.594110" elapsed="0.231609"/>
</kw>
<msg time="2026-04-19T03:24:37.825812" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:24:37.825856" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.593486" elapsed="0.232408"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:24:37.826261" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:24:37.825970" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.825952" elapsed="0.000396"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:37.826741" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:24:37.827087" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:24:37.827159" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:24:37.592841" elapsed="0.234473"/>
</kw>
<msg time="2026-04-19T03:24:37.827410" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:24:37.827454" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:24:37.586751" elapsed="0.240740"/>
</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-19T03:24:37.827808" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:37.827568" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.827550" elapsed="0.000335"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:24:37.586618" elapsed="0.241291"/>
</iter>
<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-19T03:24:37.833021" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.832914" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.832896" 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-19T03:24:37.834457" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:37.834326" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:37.834307" elapsed="0.000218"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:24:37.834995" level="INFO">${karaf_connection_index} = 14</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-19T03:24:37.834659" elapsed="0.000363"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:37.835419" 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-19T03:24:37.835188" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:24:47.837056" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:24:37.836126" elapsed="10.002024">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:24:47.838393" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:24:47.838443" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:24:37.835595" elapsed="10.002872"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:24:57.840230" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:24:47.839390" elapsed="10.001755">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:24:57.841422" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:24:57.841479" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:24:47.838728" elapsed="10.002777"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:24:57.842853" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_isolate.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-19T03:24:57.842015" elapsed="0.000923">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_isolate.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:24:57.841644" elapsed="0.001485">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_isolate.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:24:57.841604" elapsed="0.001563">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_isolate.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-19T03:24:57.843337" elapsed="0.000024"/>
</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-19T03:24:57.843560" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:24:57.843425" elapsed="0.000294"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:24:57.843408" elapsed="0.000336"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:24:57.843782" 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-19T03:24:57.846060" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T03:24:57.846898" elapsed="0.000482"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:24:57.847826" elapsed="0.000277"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:24:57.845186" elapsed="0.003013"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T03:24:57.844203" elapsed="0.004144"/>
</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-19T03:24:37.833846" elapsed="20.014589">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_isolate.robot"</status>
</kw>
<msg time="2026-04-19T03:24:57.848542" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:24:57.848589" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/singleton_service/global_rpc_isolate.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-19T03:24:37.833251" elapsed="20.015363"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:24:57.848802" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:57.848693" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:57.848674" elapsed="0.000194"/>
</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-19T03:24:57.849652" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:24:57.849547" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:57.849530" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:24:57.850008" 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-19T03:24:57.850127" 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-19T03:24:57.849861" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:57.850769" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:57.850296" elapsed="0.000519"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:24:57.851341" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:24:57.850960" elapsed="0.000425"/>
</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-19T03:24:57.851883" elapsed="0.000317"/>
</kw>
<msg time="2026-04-19T03:24:57.852299" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:24:57.852346" level="INFO">${old_connection_index} = 14</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-19T03:24:57.851537" elapsed="0.000832"/>
</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-19T03:24:57.853541" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:25:07.856014" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:24:57.854921" elapsed="10.001881">No match found for '
' in 10 seconds
Output:
.</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-19T03:24:57.854069" elapsed="10.002876"/>
</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-19T03:25:07.858325" elapsed="0.000350"/>
</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-19T03:25:07.857383" elapsed="0.001371"/>
</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-19T03:24:57.852659" elapsed="10.006185"/>
</kw>
<status status="PASS" start="2026-04-19T03:24:57.852446" elapsed="10.006453"/>
</branch>
<status status="PASS" start="2026-04-19T03:24:57.852428" elapsed="10.006506"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:07.860041" level="INFO">${ip_address} = 10.30.171.206</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-19T03:25:07.859526" elapsed="0.000546"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:25:07.860126" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:25:07.860290" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:25:07.859193" elapsed="0.001123"/>
</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-19T03:25:07.860480" elapsed="0.000428"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:07.861232" level="INFO">index=19
host=10.30.171.206
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-19T03:25:07.861434" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T03:25:07.861102" elapsed="0.000360"/>
</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-19T03:25:07.861604" elapsed="0.002143"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:25:07.864185" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:25:17.929001" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:07.863904" elapsed="10.066808">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:17.937498" elapsed="0.001036"/>
</kw>
<kw name="Open 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-19T03:25:17.938800" elapsed="0.000546"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:17.939572" elapsed="0.000223"/>
</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-19T03:25:17.933146" elapsed="0.006748"/>
</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-19T03:25:17.931696" elapsed="0.008248"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:24:57.849296" elapsed="20.090764">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:17.940433" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:25:17.940512" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T03:24:37.832621" elapsed="40.108007">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:25:17.940749" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:25:17.940795" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:24:37.828210" elapsed="40.112609"/>
</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-19T03:25:17.941194" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:17.940905" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:17.940884" elapsed="0.000390"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:24:37.828049" elapsed="40.113258"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:24:37.354566" elapsed="40.586775"/>
</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-19T03:24:37.352146" elapsed="40.589255"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:24:37.346241" elapsed="40.595218"/>
</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-19T03:24:37.345763" elapsed="40.595739"/>
</kw>
<arg>http_timeout=30</arg>
<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-19T03:24:24.179253" elapsed="53.762302"/>
</kw>
<kw name="Setup_Logging_For_Debug_Purposes_On_List_Or_All" owner="SetupUtils">
<for flavor="IN">
<iter>
<kw name="Run_Karaf_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-19T03:25:17.945274" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:25:17.944844" elapsed="0.000458"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:25:17.945771" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:25:17.945456" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:25:17.945846" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:25:17.946011" level="INFO">${index_list} = [1, 2, 3]</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-19T03:25:17.944525" elapsed="0.001530"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:17.946744" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:25:17.946471" elapsed="0.000300"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:17.947677" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:17.947540" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:17.947521" elapsed="0.000225"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:17.948941" 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-19T03:25:17.949059" 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-19T03:25:17.948786" elapsed="0.000302"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:17.953412" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:17.953274" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:17.953254" elapsed="0.000227"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T03:25:17.953620" elapsed="0.000971"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:25:17.955521" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:25:18.158445" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:25:17.954859" elapsed="0.203767"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.224632" level="INFO">@root&gt;log:set info org.opendaylight.controller.remote.rpc</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:25:18.158860" elapsed="0.065834"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.226313" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-19T03:25:18.226405" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:25:18.224853" elapsed="0.001581"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-19T03:25:18.226581" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:18.226920" elapsed="0.000208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:18.227849" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:18.227278" elapsed="0.000623"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:25:18.227949" elapsed="0.000047"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-19T03:25:17.952903" elapsed="0.275225"/>
</kw>
<msg time="2026-04-19T03:25:18.228181" 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-19T03:25:17.949242" elapsed="0.278997"/>
</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-19T03:25:18.230913" 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-19T03:25:18.231433" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:18.231748" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:18.228558" elapsed="0.003341"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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-19T03:25:17.948350" elapsed="0.283617"/>
</kw>
<msg time="2026-04-19T03:25:18.232282" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:17.947887" elapsed="0.284455"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="PASS" start="2026-04-19T03:25:17.947009" elapsed="0.285429"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:25:17.946342" elapsed="0.286136"/>
</iter>
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:18.233000" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:25:18.232717" elapsed="0.000310"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:18.233827" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:18.233712" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:18.233691" elapsed="0.000205"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.235373" 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-19T03:25:18.235490" 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-19T03:25:18.234924" elapsed="0.000594"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:18.240079" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:18.239905" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:18.239886" elapsed="0.000266"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T03:25:18.240314" elapsed="0.000970"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.242084" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:25:18.415266" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:25:18.241441" elapsed="0.174006"/>
</kw>
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.482312" level="INFO">@root&gt;log:set info org.opendaylight.controller.remote.rpc</msg>
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:25:18.415671" elapsed="0.066711"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.484094" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<msg time="2026-04-19T03:25:18.484196" level="INFO">${output} = [?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:25:18.482552" elapsed="0.001682"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="PASS" start="2026-04-19T03:25:18.484391" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:18.484744" elapsed="0.000176"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:18.485641" level="INFO">[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:18.485090" elapsed="0.000604"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:25:18.485745" elapsed="0.000047"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="PASS" start="2026-04-19T03:25:18.239563" elapsed="0.246347"/>
</kw>
<msg time="2026-04-19T03:25:18.485963" 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-19T03:25:18.235667" elapsed="0.250353"/>
</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-19T03:25:18.488954" 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-19T03:25:18.489498" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:18.490085" 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-19T03:25:18.486370" elapsed="0.003880"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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-19T03:25:18.234494" elapsed="0.255832"/>
</kw>
<msg time="2026-04-19T03:25:18.490386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:18.234057" elapsed="0.256381"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="PASS" start="2026-04-19T03:25:18.233311" elapsed="0.257218"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:25:18.232586" elapsed="0.257981"/>
</iter>
<iter>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:18.491128" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:25:18.490810" elapsed="0.000345"/>
</kw>
<kw name="Safe_Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:18.491953" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:18.491833" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:18.491812" elapsed="0.000214"/>
</if>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.493235" 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-19T03:25:18.493336" 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-19T03:25:18.493094" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Issue_Command_On_Karaf_Console" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:18.497510" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:18.497363" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:18.497343" elapsed="0.000238"/>
</if>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${controller}</arg>
<arg>port=${karaf_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-19T03:25:18.497722" elapsed="0.001005"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:25:18.499562" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:25:28.564878" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:18.498886" elapsed="10.066863">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<kw name="Write" owner="SSHLibrary">
<arg>${cmd}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:28.566218" elapsed="0.000039"/>
</kw>
<kw name="Read Until Regexp" owner="SSHLibrary">
<var>${output}</var>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:28.566417" elapsed="0.000021"/>
</kw>
<kw name="Write Bare" owner="SSHLibrary">
<arg>logout\n</arg>
<doc>Writes the given ``text`` on the remote machine without appending a newline.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:28.566585" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:28.566763" elapsed="0.000023"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:28.566929" elapsed="0.000021"/>
</kw>
<return>
<value>${output}</value>
<status status="NOT RUN" start="2026-04-19T03:25:28.567002" elapsed="0.000375"/>
</return>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Will execute the given ${cmd} by ssh'ing to the karaf console running on 10.30.171.9
Note that this keyword will open&amp;close new SSH connection, without switching back to previously current session.</doc>
<status status="FAIL" start="2026-04-19T03:25:18.497013" elapsed="10.070487">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:25:28.567560" 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="FAIL" start="2026-04-19T03:25:18.493517" elapsed="10.074096"/>
</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-19T03:25:28.570627" elapsed="0.000429"/>
</kw>
<kw name="Open 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-19T03:25:28.571216" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:28.571542" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:28.568316" elapsed="0.003382"/>
</kw>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</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="FAIL" start="2026-04-19T03:25:18.492646" elapsed="10.079129">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:25:28.571896" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Issue_Command_On_Karaf_Console</arg>
<arg>${cmd}</arg>
<arg>${controller}</arg>
<arg>${karaf_port}</arg>
<arg>${timeout}</arg>
<arg>${loglevel}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-19T03:25:18.492188" elapsed="10.079757"/>
</kw>
<arg>${command}</arg>
<arg>${member_ip}</arg>
<arg>timeout=${timeout}</arg>
<doc>Run Issue_Command_On_Karaf_Console but restore previous connection afterwards.</doc>
<status status="FAIL" start="2026-04-19T03:25:18.491431" elapsed="10.080780">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:25:18.490678" elapsed="10.081603">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:25:17.946115" elapsed="10.626239">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</for>
<arg>log:set ${log_level} ${logger}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run karaf command on each.</doc>
<status status="FAIL" start="2026-04-19T03:25:17.944046" elapsed="10.628405">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<var name="${logger}">org.opendaylight.controller.remote.rpc</var>
<status status="FAIL" start="2026-04-19T03:25:17.943810" elapsed="10.628701">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</iter>
<var>${logger}</var>
<value>@{loggers_list}</value>
<status status="FAIL" start="2026-04-19T03:25:17.943670" elapsed="10.628893">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</for>
<arg>${TEST_LOG_LEVEL}</arg>
<arg>${TEST_LOG_COMPONENTS}</arg>
<doc>Set the log level for given loggers on node nodes of the cluster</doc>
<status status="FAIL" start="2026-04-19T03:25:17.941772" elapsed="10.630879">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<doc>FIXME: Add a documentation.</doc>
<status status="FAIL" start="2026-04-19T03:24:24.178948" elapsed="64.393791">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<test id="s1-s20-t1" name="Get_Basic_Rpc_Test_Owner" line="37">
<doc>Find a service owner and successors.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.572822" elapsed="0.000555">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t2" name="Rpc_Before_Isolation_On_Owner" line="41">
<doc>Run rpc on the service owner.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.573842" elapsed="0.000590">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t3" name="Rpc_Before_Isolation_On_Successors" line="45">
<doc>Run rpc on non owher cluster nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.574727" elapsed="0.000761">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t4" name="Isolate_Current_Owner_Member" line="51">
<doc>Isolating cluster node which is the owner.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.576268" elapsed="0.000735">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t5" name="Verify_New_Basic_Rpc_Test_Owner_Elected" line="57">
<doc>Verify new owner of the service is elected.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.577224" elapsed="0.000420">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t6" name="Rpc_On_Isolated_Node" line="69">
<doc>Run rpc on isolated cluster node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.577830" elapsed="0.002813">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t7" name="Rpc_On_Non_Isolated_Cluster_Nodes" line="77">
<doc>Run rpc on remained cluster nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.581160" elapsed="0.000734">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t8" name="Rejoin_Isolated_Member" line="83">
<doc>Rejoin isolated node</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.582536" elapsed="0.000443">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t9" name="Rpc_After_Rejoin_On_New_Owner" line="92">
<doc>Run rpc on the new service owner node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.583210" elapsed="0.000365">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t10" name="Rpc_After_Rejoin_On_Old_Owner" line="96">
<doc>Run rpc on rejoined cluster node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.583754" elapsed="0.000552">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<test id="s1-s20-t11" name="Rpc_After_Rejoin_On_All" line="100">
<doc>Run rpc again on all nodes.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:25:28.584807" elapsed="0.001118">Parent suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T03:25:28.586677" elapsed="0.000680"/>
</kw>
<doc>Controller functional HA testing of global singleton rpcs.

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html</doc>
<status status="FAIL" start="2026-04-19T03:24:24.110463" elapsed="64.476935">Suite setup failed:
No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</suite>
<suite id="s1-s21" name="Restart Odl With Tell Based False" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot">
<kw name="Setup_Utils_For_Setup_And_Teardown" owner="SetupUtils" type="SETUP">
<kw name="Do_Not_Fail_Fast_From_Now_On" owner="FailFast">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.707943" 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-19T03:25:28.703400" elapsed="0.004601"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:25:28.702901" elapsed="0.005189"/>
</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-19T03:25:28.713461" 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-19T03:25:28.709245" elapsed="0.004246"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:25:28.713704" elapsed="0.000097"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:28.713581" elapsed="0.000252"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:28.713555" elapsed="0.000301"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.714407" 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-19T03:25:28.714019" elapsed="0.000432"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.714962" level="INFO">${cluster_size} = 3</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-19T03:25:28.714649" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-19T03:25:28.715517" elapsed="0.000288"/>
</kw>
<msg time="2026-04-19T03:25:28.715903" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:25:28.715950" level="INFO">${possibly_int_of_members} = 3</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-19T03:25:28.715172" elapsed="0.000801"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.716548" level="INFO">${int_of_members} = 3</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-19T03:25:28.716173" elapsed="0.000401"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.717570" 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-19T03:25:28.717307" elapsed="0.000289"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.717992" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:25:28.717743" elapsed="0.000275"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.718512" 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-19T03:25:28.718207" 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-19T03:25:28.721880" elapsed="0.000267"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.722660" level="INFO">${member_ip} = 10.30.171.9</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-19T03:25:28.722312" elapsed="0.000375"/>
</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-19T03:25:28.722843" elapsed="0.000268"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.723938" 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-19T03:25:28.723628" elapsed="0.000339"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:25:28.724016" elapsed="0.000052"/>
</return>
<msg time="2026-04-19T03:25:28.724197" 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-19T03:25:28.723323" elapsed="0.000901"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:25:28.724825" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7e33d50&gt;, timeout=125, 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-19T03:25:28.724388" elapsed="0.000582"/>
</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-19T03:25:28.725164" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-19T03:25:28.721309" elapsed="0.004109"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:25:28.721106" elapsed="0.004357"/>
</iter>
<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-19T03:25:28.726994" elapsed="0.000248"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.727725" level="INFO">${member_ip} = 10.30.171.128</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-19T03:25:28.727402" elapsed="0.000349"/>
</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-19T03:25:28.727902" elapsed="0.000251"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.728941" level="INFO">${session} = ClusterManagement__session_2</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-19T03:25:28.728647" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:25:28.729012" elapsed="0.000062"/>
</return>
<msg time="2026-04-19T03:25:28.729199" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:25:28.728357" elapsed="0.000867"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:25:28.729842" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706e6f7d0&gt;, timeout=125, 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-19T03:25:28.729437" elapsed="0.000508"/>
</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-19T03:25:28.730123" 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-19T03:25:28.726124" elapsed="0.004248"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:25:28.725551" elapsed="0.004865"/>
</iter>
<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-19T03:25:28.731313" elapsed="0.000214"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.732003" level="INFO">${member_ip} = 10.30.171.206</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-19T03:25:28.731683" elapsed="0.000361"/>
</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-19T03:25:28.732214" elapsed="0.000221"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.733243" level="INFO">${session} = ClusterManagement__session_3</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-19T03:25:28.732915" elapsed="0.000354"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:25:28.733315" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:25:28.733462" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:25:28.732625" elapsed="0.000861"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:25:28.734067" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f74e2bd0&gt;, timeout=125, 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-19T03:25:28.733639" elapsed="0.000534"/>
</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-19T03:25:28.734333" 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-19T03:25:28.730712" elapsed="0.003880"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:25:28.730531" elapsed="0.004104"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:25:28.718594" elapsed="0.016071"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.735228" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:25:28.734826" elapsed="0.000445"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.735815" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:25:28.735434" elapsed="0.000422"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.736422" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:25:28.736017" elapsed="0.000446"/>
</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-19T03:25:28.716835" elapsed="0.019684"/>
</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-19T03:25:28.708871" elapsed="0.027703"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:28.736760" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:28.736642" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:28.736623" elapsed="0.000202"/>
</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-19T03:25:28.741506" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:25:28.741122" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.741995" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:25:28.741691" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:25:28.742134" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:25:28.742293" level="INFO">${index_list} = [1, 2, 3]</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-19T03:25:28.740776" elapsed="0.001541"/>
</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-19T03:25:28.743340" level="INFO">${member_ip} = 10.30.171.9</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-19T03:25:28.743065" elapsed="0.000307"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:28.744145" 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-19T03:25:28.744248" 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-19T03:25:28.743951" elapsed="0.000323"/>
</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-19T03:25:28.746965" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:28.746646" elapsed="0.000515"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:28.746627" elapsed="0.000561"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:28.747467" 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-19T03:25:28.747588" 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-19T03:25:28.747339" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.748678" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:28.747766" elapsed="0.000960"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:28.749548" 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-19T03:25:28.748884" elapsed="0.000691"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:25:28.750899" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:25:28.751179" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:25:28.750347" elapsed="0.000880"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:28.751503" elapsed="0.000647"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:25:28.753762" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:25:29.330141" 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 Sun Apr 19 03:25:28 UTC 2026

  System load:  0.13               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:24:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:25:28.753239" elapsed="0.577103"/>
</kw>
<msg time="2026-04-19T03:25:29.330451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:28.752468" elapsed="0.578155"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:25:28.749791" elapsed="0.581075"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:25:29.331455" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:25:29.344437" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:25:29.344659" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:25:29.344723" 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-19T03:25:29.331145" elapsed="0.013681"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:29.345100" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:29.347080" 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-19T03:25:29.345888" elapsed="0.001306"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:25:29.347710" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:29.347371" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:29.347319" elapsed="0.000550"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:25:29.348392" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T03:25:29.347992" elapsed="0.000547"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:29.347956" elapsed="0.000639"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:25:29.348671" 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-19T03:25:29.355540" elapsed="0.000744"/>
</kw>
<kw name="Open 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-19T03:25:29.356517" elapsed="0.000409"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:29.357133" elapsed="0.000199"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:29.349466" elapsed="0.007951"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:25:28.746140" elapsed="0.611372"/>
</kw>
<msg time="2026-04-19T03:25:29.357566" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:28.745455" elapsed="0.612164"/>
</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-19T03:25:28.744939" elapsed="0.612760"/>
</kw>
<msg time="2026-04-19T03:25:29.357740" 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-19T03:25:28.744431" elapsed="0.613354"/>
</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-19T03:25:29.360749" 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-19T03:25:29.361241" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:29.361576" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:29.358092" elapsed="0.003636"/>
</kw>
<msg time="2026-04-19T03:25:29.361820" 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-19T03:25:28.743598" elapsed="0.618246"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:29.362302" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:29.362041" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:25:29.362386" 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-19T03:25:28.742699" elapsed="0.619811"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:25:28.742522" elapsed="0.620028"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:29.363486" level="INFO">${member_ip} = 10.30.171.128</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-19T03:25:29.363213" elapsed="0.000301"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:29.364335" 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-19T03:25:29.364437" 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-19T03:25:29.364196" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:29.367494" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:29.367143" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:29.367123" elapsed="0.000620"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:29.368149" 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-19T03:25:29.368316" 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-19T03:25:29.367951" elapsed="0.000404"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:29.369603" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:29.368572" elapsed="0.001082"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:29.370527" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:25:29.369831" elapsed="0.000723"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:25:29.371900" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:25:29.372118" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:25:29.371342" elapsed="0.000824"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:29.372445" elapsed="0.000609"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:25:29.374563" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:25:29.967202" 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 Sun Apr 19 03:25:29 UTC 2026

  System load:  0.02               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:24:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:25:29.374159" elapsed="0.593261"/>
</kw>
<msg time="2026-04-19T03:25:29.967528" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:29.373373" elapsed="0.594336"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:25:29.370789" elapsed="0.597160"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:25:29.968567" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:25:29.981043" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:25:29.981262" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:25:29.981326" 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-19T03:25:29.968233" elapsed="0.013128"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:29.981595" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:29.982941" 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-19T03:25:29.982258" elapsed="0.000749"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:25:29.983418" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:29.983178" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:29.983141" elapsed="0.000378"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:25:29.983772" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T03:25:29.983595" elapsed="0.000263"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:29.983573" elapsed="0.000322"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:25:29.983942" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:29.988612" elapsed="0.001015"/>
</kw>
<kw name="Open 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-19T03:25:29.990043" elapsed="0.000575"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:29.990888" elapsed="0.000307"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:29.984417" elapsed="0.006894"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:25:29.366604" elapsed="0.624839"/>
</kw>
<msg time="2026-04-19T03:25:29.991518" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:29.365901" elapsed="0.625688"/>
</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-19T03:25:29.365152" elapsed="0.626551"/>
</kw>
<msg time="2026-04-19T03:25:29.991761" 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-19T03:25:29.364623" elapsed="0.627199"/>
</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-19T03:25:29.995920" elapsed="0.000555"/>
</kw>
<kw name="Open 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-19T03:25:29.996704" elapsed="0.000212"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:29.997143" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:29.992262" elapsed="0.005091"/>
</kw>
<msg time="2026-04-19T03:25:29.997478" 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-19T03:25:29.363752" elapsed="0.633761"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:29.998185" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:29.997763" elapsed="0.000481"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:25:29.998305" elapsed="0.000041"/>
</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-19T03:25:29.362826" elapsed="0.635617"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:25:29.362645" elapsed="0.635835"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:29.999415" level="INFO">${member_ip} = 10.30.171.206</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-19T03:25:29.999142" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.000171" 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-19T03:25:30.000270" 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-19T03:25:30.000015" elapsed="0.000282"/>
</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-19T03:25:30.002924" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:30.002621" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:30.002602" elapsed="0.000528"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.003417" 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-19T03:25:30.003539" 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-19T03:25:30.003281" elapsed="0.000285"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.004629" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:30.003717" elapsed="0.000959"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.005488" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:25:30.004834" elapsed="0.000719"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.006901" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:25:30.007234" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:25:30.006337" elapsed="0.000948"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:30.007584" elapsed="0.000803"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.009895" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:25:30.597098" 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 Sun Apr 19 03:25:30 UTC 2026

  System load:  0.16               Processes:             119
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:24:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:25:30.009474" elapsed="0.587816"/>
</kw>
<msg time="2026-04-19T03:25:30.597394" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:30.008712" elapsed="0.588856"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:25:30.005773" elapsed="0.592040"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.598395" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:25:30.610709" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:25:30.611101" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:25:30.611208" 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-19T03:25:30.598078" elapsed="0.013185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:30.611634" elapsed="0.000516"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.613690" 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-19T03:25:30.612567" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:25:30.614347" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:30.613975" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:30.613920" elapsed="0.000588"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:25:30.614912" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T03:25:30.614629" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:30.614594" elapsed="0.000542"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:25:30.615213" 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-19T03:25:30.620663" elapsed="0.001044"/>
</kw>
<kw name="Open 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-19T03:25:30.622043" elapsed="0.000558"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:30.622861" elapsed="0.000289"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:30.615922" elapsed="0.007343"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:25:30.002139" elapsed="0.621258"/>
</kw>
<msg time="2026-04-19T03:25:30.623470" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:30.001460" elapsed="0.622082"/>
</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-19T03:25:30.000957" elapsed="0.622697"/>
</kw>
<msg time="2026-04-19T03:25:30.623710" 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-19T03:25:30.000456" elapsed="0.623386"/>
</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-19T03:25:30.627974" elapsed="0.000482"/>
</kw>
<kw name="Open 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-19T03:25:30.628683" elapsed="0.000201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:30.629112" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:30.624342" elapsed="0.004980"/>
</kw>
<msg time="2026-04-19T03:25:30.629449" 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-19T03:25:29.999657" elapsed="0.629826"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.630129" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:30.629758" elapsed="0.000428"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:25:30.630246" 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-19T03:25:29.998757" elapsed="0.631644"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:25:29.998574" elapsed="0.631865"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:25:28.742369" elapsed="1.888107"/>
</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-19T03:25:28.737057" elapsed="1.893477"/>
</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-19T03:25:30.630790" elapsed="0.000211"/>
</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-19T03:25:30.645563" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:30.645441" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:30.645422" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.646087" 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-19T03:25:30.646192" 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-19T03:25:30.645934" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.646632" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:30.646375" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.647082" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:30.646827" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:30.647868" 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-19T03:25:30.647644" elapsed="0.000333">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:25:30.648098" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:25:30.648144" 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-19T03:25:30.647283" elapsed="0.000884"/>
</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-19T03:25:30.648466" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:30.648240" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:30.648222" elapsed="0.000340"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:30.649319" level="INFO">${ip_address} = 10.30.171.9</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-19T03:25:30.649052" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:25:30.649392" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:25:30.649551" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:25:30.648762" elapsed="0.000815"/>
</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-19T03:25:30.649733" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.650430" level="INFO">index=10
host=10.30.171.9
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-19T03:25:30.650581" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:25:30.650324" elapsed="0.000284"/>
</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-19T03:25:30.650760" elapsed="0.002395"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.653865" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:25:30.850802" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:25:30.653320" elapsed="0.197605"/>
</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-19T03:25:30.854627" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:25:30.855120" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:30.855432" 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-19T03:25:30.851937" elapsed="0.003648"/>
</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-19T03:25:30.851293" elapsed="0.004339"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:25:30.645157" elapsed="0.210527"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:25:30.631849" elapsed="0.223884"/>
</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-19T03:25:30.631478" elapsed="0.224306"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:25:30.631319" elapsed="0.224507"/>
</iter>
<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-19T03:25:30.869818" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:30.869689" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:30.869662" elapsed="0.000238"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.870235" 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-19T03:25:30.870344" 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-19T03:25:30.870077" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.870796" 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-19T03:25:30.870526" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:30.871256" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:30.870994" elapsed="0.000306"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:30.872072" level="FAIL">Dictionary does not contain key '2'.</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-19T03:25:30.871825" elapsed="0.000357">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:25:30.872298" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:25:30.872345" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:25:30.871463" elapsed="0.000907"/>
</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-19T03:25:30.872675" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:30.872450" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:30.872432" elapsed="0.000418"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:30.873657" level="INFO">${ip_address} = 10.30.171.128</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-19T03:25:30.873351" elapsed="0.000341"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:25:30.873756" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:25:30.873933" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:25:30.873072" elapsed="0.000886"/>
</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-19T03:25:30.874132" elapsed="0.000410"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.874818" level="INFO">index=12
host=10.30.171.128
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-19T03:25:30.874917" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T03:25:30.874712" elapsed="0.000232"/>
</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-19T03:25:30.875108" elapsed="0.002610"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:25:30.878174" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:25:31.102061" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:25:30.877887" elapsed="0.224333"/>
</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-19T03:25:31.105926" 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-19T03:25:31.106427" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:31.106746" 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-19T03:25:31.103416" elapsed="0.003483"/>
</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-19T03:25:31.102658" elapsed="0.004289"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:25:30.869211" elapsed="0.237788"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:25:30.856463" elapsed="0.250602"/>
</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-19T03:25:30.856090" elapsed="0.251029"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:25:30.855934" elapsed="0.251227"/>
</iter>
<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-19T03:25:31.121025" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:31.120907" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:31.120884" elapsed="0.000232"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:31.121425" 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-19T03:25:31.121532" 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-19T03:25:31.121272" elapsed="0.000286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:31.122086" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:31.121710" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:31.122568" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:31.122287" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:31.123385" level="FAIL">Dictionary does not contain key '3'.</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-19T03:25:31.123148" elapsed="0.000347">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:25:31.123602" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:25:31.123648" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:25:31.122770" elapsed="0.000900"/>
</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-19T03:25:31.123969" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:31.123747" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:31.123728" elapsed="0.000355"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:31.125024" level="INFO">${ip_address} = 10.30.171.206</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-19T03:25:31.124754" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:25:31.125116" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:25:31.125273" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:25:31.124285" elapsed="0.001013"/>
</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-19T03:25:31.125481" elapsed="0.000413"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:31.126186" level="INFO">index=14
host=10.30.171.206
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-19T03:25:31.126285" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T03:25:31.126076" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:25:31.126458" elapsed="0.002362"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:25:31.129286" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:25:41.192755" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:31.128984" elapsed="10.064632">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:41.197546" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:25:41.198070" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:41.198393" 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-19T03:25:41.194883" elapsed="0.003669"/>
</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-19T03:25:41.194156" elapsed="0.004445"/>
</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-19T03:25:31.120616" elapsed="10.078097">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:25:41.198820" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:31.107782" elapsed="10.091135">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:31.107410" elapsed="10.091573"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:25:31.107267" elapsed="10.091765"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:25:30.631165" elapsed="10.568022"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:25:28.708421" elapsed="12.490836"/>
</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-19T03:25:41.202015" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.201894" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.201871" elapsed="0.000235"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:41.207279" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.207171" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.207153" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:25:41.208315" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:25:41.207909" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:25:41.208964" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:25:41.208655" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:25:41.209055" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:25:41.209217" level="INFO">${index_list} = [1, 2, 3]</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-19T03:25:41.207575" elapsed="0.001666"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:41.214700" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.214593" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.214574" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:25:41.215848" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.215744" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.215726" elapsed="0.000188"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:41.216379" 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-19T03:25:41.216074" elapsed="0.000332"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:41.216760" 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-19T03:25:41.216564" elapsed="0.000222"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:25:41.274857" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:25:41.217303" elapsed="0.057695"/>
</kw>
<msg time="2026-04-19T03:25:41.275123" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:25:41.275169" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.216943" elapsed="0.058283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:25:41.348864" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:25:41.275743" elapsed="0.073483"/>
</kw>
<msg time="2026-04-19T03:25:41.349422" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:25:41.349468" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.275397" elapsed="0.074109"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:41.350237" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:41.349650" elapsed="0.000654"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.349600" elapsed="0.000734"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:41.350901" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:41.350486" elapsed="0.000617"/>
</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-19T03:25:41.351744" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:41.351175" elapsed="0.000627"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.351154" elapsed="0.000672"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:25:41.351868" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:41.353333" elapsed="0.000663"/>
</kw>
<kw name="Open 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-19T03:25:41.354348" elapsed="0.000542"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:41.355195" elapsed="0.000215"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:41.352847" elapsed="0.002713"/>
</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-19T03:25:41.352235" elapsed="0.003376"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:25:41.215493" elapsed="0.140218"/>
</kw>
<msg time="2026-04-19T03:25:41.355803" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:25:41.355848" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.214918" elapsed="0.140967"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:25:41.356088" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:25:41.355961" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.355942" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:41.356592" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:41.356938" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:25:41.357009" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:25:41.214305" elapsed="0.142829"/>
</kw>
<msg time="2026-04-19T03:25:41.357229" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:25:41.357273" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.209615" elapsed="0.147694"/>
</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-19T03:25:41.357635" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:41.357384" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.357367" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:25:41.209472" elapsed="0.148263"/>
</iter>
<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-19T03:25:41.363466" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.363358" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.363338" 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-19T03:25:41.364579" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.364472" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.364455" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:41.365080" level="INFO">${karaf_connection_index} = 12</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-19T03:25:41.364789" elapsed="0.000320"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:41.365470" 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-19T03:25:41.365272" elapsed="0.000224"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:25:41.417232" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:25:41.365986" elapsed="0.051432"/>
</kw>
<msg time="2026-04-19T03:25:41.417633" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:25:41.417681" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.365654" elapsed="0.052065"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:25:41.487799" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:25:41.418349" elapsed="0.069662"/>
</kw>
<msg time="2026-04-19T03:25:41.488143" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:25:41.488188" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.417926" elapsed="0.070301"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:41.488623" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:41.488327" elapsed="0.000355"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.488297" elapsed="0.000411"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:25:41.489168" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "d "o "m "_ "d "[78Ca "[A[78Ct
 "a "_ "b "r "o "k "e "r "/ "r "e "s "t "a "r "t "_ "o "d "l "_ "w "i "t "h "_ "t "e "l "l "_ "b "a "s "e "d "_ "f "a "l "s "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:25:41.488852" elapsed="0.000412"/>
</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-19T03:25:41.489547" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:41.489330" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.489312" elapsed="0.000313"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:25:41.489664" elapsed="0.000043"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:25:41.491376" elapsed="0.000660"/>
</kw>
<kw name="Open 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-19T03:25:41.492379" elapsed="0.000551"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:25:41.493241" elapsed="0.000213"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:25:41.490598" elapsed="0.003004"/>
</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-19T03:25:41.490000" elapsed="0.003651"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:25:41.364215" elapsed="0.129534"/>
</kw>
<msg time="2026-04-19T03:25:41.493840" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:25:41.493883" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.363685" elapsed="0.130236"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:25:41.494122" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:25:41.493996" elapsed="0.000186"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.493978" elapsed="0.000228"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:41.494610" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:25:41.495001" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:25:41.495109" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:25:41.363044" elapsed="0.132175"/>
</kw>
<msg time="2026-04-19T03:25:41.495311" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:25:41.495354" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:25:41.358042" elapsed="0.137350"/>
</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-19T03:25:41.495764" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:25:41.495511" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.495493" elapsed="0.000348"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:25:41.357869" elapsed="0.137996"/>
</iter>
<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-19T03:25:41.501531" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.501423" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.501403" 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-19T03:25:41.502632" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:25:41.502527" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:25:41.502509" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:25:41.503135" level="INFO">${karaf_connection_index} = 14</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-19T03:25:41.502843" elapsed="0.000319"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:25:41.503516" 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-19T03:25:41.503320" elapsed="0.000222"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:25:51.504741" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:25:41.504035" elapsed="10.001423">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:25:51.505664" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:25:51.505714" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:25:41.503700" elapsed="10.002038"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:26:01.507249" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:25:51.506540" elapsed="10.001350">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:26:01.508115" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:26:01.508166" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:25:51.506025" elapsed="10.002166"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:26:01.509418" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T03:26:01.508721" elapsed="0.000763">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:26:01.508321" elapsed="0.001235">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:26:01.508285" elapsed="0.001306">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.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-19T03:26:01.509759" 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-19T03:26:01.512157" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:01.509927" elapsed="0.002292"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:26:01.509829" elapsed="0.002415"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:26:01.512281" 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-19T03:26:01.513677" elapsed="0.000700"/>
</kw>
<kw name="Open 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-19T03:26:01.514730" elapsed="0.000583"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:01.515607" elapsed="0.000222"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:01.513196" elapsed="0.002785"/>
</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-19T03:26:01.512591" elapsed="0.003460"/>
</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-19T03:25:41.502276" elapsed="20.013926">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_based_false.robot"</status>
</kw>
<msg time="2026-04-19T03:26:01.516313" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:26:01.516360" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/dom_data_broker/restart_odl_with_tell_base...</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-19T03:25:41.501752" elapsed="20.014633"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:26:01.516575" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:01.516463" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:01.516444" elapsed="0.000198"/>
</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-19T03:26:01.517424" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:01.517317" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:01.517299" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:01.517790" 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-19T03:26:01.517895" 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-19T03:26:01.517646" elapsed="0.000275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:01.518433" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:01.518149" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:01.518946" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:01.518688" elapsed="0.000302"/>
</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-19T03:26:01.519537" elapsed="0.000239"/>
</kw>
<msg time="2026-04-19T03:26:01.519877" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:26:01.519925" level="INFO">${old_connection_index} = 14</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-19T03:26:01.519168" 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-19T03:26:01.520891" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:26:11.522880" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:26:01.521884" elapsed="10.002701">No match found for '
' in 10 seconds
Output:
.</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-19T03:26:01.521335" elapsed="10.003461"/>
</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-19T03:26:11.525825" elapsed="0.000486"/>
</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-19T03:26:11.525168" elapsed="0.001284"/>
</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-19T03:26:01.520364" elapsed="10.006138"/>
</kw>
<status status="PASS" start="2026-04-19T03:26:01.520130" elapsed="10.006423"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:01.520010" elapsed="10.006579"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:11.527501" level="INFO">${ip_address} = 10.30.171.206</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-19T03:26:11.527212" elapsed="0.000316"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:26:11.527581" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:26:11.527741" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:26:11.526846" elapsed="0.000921"/>
</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-19T03:26:11.527940" elapsed="0.000456"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:11.528720" level="INFO">index=19
host=10.30.171.206
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-19T03:26:11.528826" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T03:26:11.528571" elapsed="0.000282"/>
</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-19T03:26:11.529006" elapsed="0.002880"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:26:11.532700" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:26:21.596356" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:26:11.532417" elapsed="10.064817">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:26:21.601196" elapsed="0.000617"/>
</kw>
<kw name="Open 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-19T03:26:21.601984" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:21.602340" elapsed="0.000105"/>
</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-19T03:26:21.598495" elapsed="0.004004"/>
</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-19T03:26:21.597775" elapsed="0.004772"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:26:01.517063" elapsed="20.085572">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:26:21.603010" elapsed="0.000044"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:26:21.603108" elapsed="0.000022"/>
</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-19T03:25:41.500981" elapsed="40.102239">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:26:21.603337" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:26:21.603383" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:25:41.496159" elapsed="40.107247"/>
</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-19T03:26:21.603750" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:21.603490" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:21.603469" elapsed="0.000359"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:25:41.496000" elapsed="40.107859"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:25:41.209295" elapsed="40.394598"/>
</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-19T03:25:41.206841" elapsed="40.397111"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:25:41.199886" elapsed="40.404125"/>
</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-19T03:25:41.199422" elapsed="40.404651"/>
</kw>
<arg>http_timeout=125</arg>
<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-19T03:25:28.702487" elapsed="52.901640"/>
</kw>
<test id="s1-s21-t1" name="Stop_All_Members" line="30">
<kw name="Stop_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:26:21.610238" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:26:21.609826" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:26:21.610732" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:26:21.610425" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:26:21.610803" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:26:21.610961" level="INFO">${stop_index_list} = [1, 2, 3]</msg>
<var>${stop_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-19T03:26:21.609441" elapsed="0.001546"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:26:21.612004" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:26:21.611631" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:26:21.612523" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:26:21.612217" elapsed="0.000409"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:26:21.612675" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:21.612832" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${original_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-19T03:26:21.611257" elapsed="0.001600"/>
</kw>
<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-19T03:26:21.614364" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:26:21.613964" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:26:21.614849" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:26:21.614549" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:26:21.614919" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:26:21.615098" level="INFO">${index_list} = [1, 2, 3]</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-19T03:26:21.613598" elapsed="0.001525"/>
</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-19T03:26:21.616192" level="INFO">${member_ip} = 10.30.171.9</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-19T03:26:21.615884" elapsed="0.000335"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:21.617009" 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-19T03:26:21.617129" 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-19T03:26:21.616870" 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-19T03:26:21.619952" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:21.619671" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:21.619493" elapsed="0.000558"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:21.620348" 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-19T03:26:21.620449" 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-19T03:26:21.620206" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:21.621133" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:21.620631" elapsed="0.000551"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:21.621765" 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-19T03:26:21.621341" elapsed="0.000452"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:21.623071" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:21.623212" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:21.622463" elapsed="0.000775"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:21.623430" elapsed="0.000752"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:21.626553" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:21.941546" 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 Sun Apr 19 03:25:28 UTC 2026

  System load:  0.13               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:25:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:26:21.625933" elapsed="0.315828"/>
</kw>
<msg time="2026-04-19T03:26:21.941873" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:21.624449" elapsed="0.317608"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:21.622010" elapsed="0.320203"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:21.942605" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T03:26:22.320996" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:22.321275" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:26:22.321355" 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-19T03:26:21.942405" elapsed="0.378992"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:22.321753" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:22.322974" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:22.322480" elapsed="0.000596"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:22.323415" elapsed="0.000026"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:22.323205" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:22.323166" elapsed="0.000360"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:22.323764" elapsed="0.000046"/>
</return>
<status status="PASS" start="2026-04-19T03:26:22.323605" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:22.323583" elapsed="0.000310"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:22.323944" elapsed="0.000021"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:22.341571" elapsed="0.000735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:22.342474" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:22.342790" 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-19T03:26:22.324452" elapsed="0.018490"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:21.618950" elapsed="0.724103"/>
</kw>
<msg time="2026-04-19T03:26:22.343113" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:21.618370" elapsed="0.724801"/>
</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-19T03:26:21.617816" elapsed="0.725436"/>
</kw>
<msg time="2026-04-19T03:26:22.343291" 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-19T03:26:21.617312" elapsed="0.726024"/>
</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-19T03:26:22.346679" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:26:22.347181" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:22.347473" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:22.343632" elapsed="0.003990"/>
</kw>
<msg time="2026-04-19T03:26:22.347714" 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-19T03:26:21.616464" elapsed="0.731275"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:22.348194" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:22.347922" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:22.348280" 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-19T03:26:21.615482" elapsed="0.732926"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:26:21.615309" elapsed="0.733135"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:22.349460" level="INFO">${member_ip} = 10.30.171.128</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-19T03:26:22.349184" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:22.350592" 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-19T03:26:22.350692" 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-19T03:26:22.350450" elapsed="0.000272"/>
</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-19T03:26:22.353488" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:22.353188" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:22.353168" elapsed="0.000402"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:22.353850" 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-19T03:26:22.353952" 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-19T03:26:22.353719" elapsed="0.000260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:22.354640" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:22.354159" elapsed="0.000528"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:22.355289" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:22.354844" elapsed="0.000471"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:22.356615" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:22.356773" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:22.355967" elapsed="0.000833"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:22.357005" elapsed="0.000983"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:22.360545" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:22.672902" 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 Sun Apr 19 03:25:29 UTC 2026

  System load:  0.02               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:25:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:26:22.359855" elapsed="0.313247"/>
</kw>
<msg time="2026-04-19T03:26:22.673223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:22.358308" elapsed="0.315080"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:22.355530" elapsed="0.318015"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:22.673942" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T03:26:23.042311" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:23.042718" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:26:23.042816" 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-19T03:26:22.673731" elapsed="0.369137"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:23.043422" elapsed="0.000652"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.045329" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:23.044509" elapsed="0.000915"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:23.045910" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:23.045604" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:23.045550" elapsed="0.000564"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:23.046473" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:26:23.046238" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:23.046204" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:23.046863" 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-19T03:26:23.065761" elapsed="0.000569"/>
</kw>
<kw name="Open 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-19T03:26:23.066497" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:23.066811" 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-19T03:26:23.047612" elapsed="0.019351"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:22.352562" elapsed="0.714540"/>
</kw>
<msg time="2026-04-19T03:26:23.067161" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:22.351949" elapsed="0.715268"/>
</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-19T03:26:22.351410" elapsed="0.715888"/>
</kw>
<msg time="2026-04-19T03:26:23.067340" 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-19T03:26:22.350881" elapsed="0.716504"/>
</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-19T03:26:23.070507" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T03:26:23.070975" elapsed="0.000503"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:23.071626" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:23.067676" elapsed="0.004097"/>
</kw>
<msg time="2026-04-19T03:26:23.071866" 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-19T03:26:22.349765" elapsed="0.722126"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.072328" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:23.072083" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:23.072411" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:22.348754" elapsed="0.723780"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:26:22.348544" elapsed="0.724028"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:23.073571" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:23.073299" elapsed="0.000298"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.074371" 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-19T03:26:23.074468" 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-19T03:26:23.074233" elapsed="0.000261"/>
</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-19T03:26:23.077593" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:23.077323" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:23.077304" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.077946" 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-19T03:26:23.078065" 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-19T03:26:23.077819" elapsed="0.000274"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.078716" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/stop" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:23.078244" elapsed="0.000553"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.079403" 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-19T03:26:23.078957" elapsed="0.000473"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.080665" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:23.080817" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:23.080094" elapsed="0.000749"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:23.081048" elapsed="0.000718"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.084060" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:23.382739" 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 Sun Apr 19 03:25:30 UTC 2026

  System load:  0.16               Processes:             119
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:25:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:23.083453" elapsed="0.299490"/>
</kw>
<msg time="2026-04-19T03:26:23.383091" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:23.082004" elapsed="0.301270"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:23.079644" elapsed="0.303804"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.383903" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/stop'.</msg>
<msg time="2026-04-19T03:26:23.732000" level="INFO">Command exited with return code 3.</msg>
<msg time="2026-04-19T03:26:23.732427" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:26:23.732529" level="INFO">${stderr} = /tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:26:23.383665" elapsed="0.348920"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:23.733084" elapsed="0.000580"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.734878" level="INFO">/tmp/karaf-0.24.0-SNAPSHOT/data/port shutdown port file doesn't exist. The container is not running.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:23.734124" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:23.735502" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:23.735198" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:23.735143" 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-19T03:26:23.736010" elapsed="0.000146"/>
</return>
<status status="PASS" start="2026-04-19T03:26:23.735779" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:23.735746" elapsed="0.000540"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:23.736363" 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-19T03:26:23.754692" elapsed="0.000578"/>
</kw>
<kw name="Open 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-19T03:26:23.755437" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:23.755749" 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-19T03:26:23.737093" elapsed="0.018809"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:23.076772" elapsed="0.679223"/>
</kw>
<msg time="2026-04-19T03:26:23.756068" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:23.076167" elapsed="0.679956"/>
</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-19T03:26:23.075615" elapsed="0.680604"/>
</kw>
<msg time="2026-04-19T03:26:23.756316" 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-19T03:26:23.074647" elapsed="0.681717"/>
</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-19T03:26:23.759571" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:26:23.760061" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:23.760388" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:23.756658" elapsed="0.003881"/>
</kw>
<msg time="2026-04-19T03:26:23.760629" 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-19T03:26:23.073810" elapsed="0.686845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.761188" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:23.760834" elapsed="0.000396"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:23.761273" 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-19T03:26:23.072868" elapsed="0.688529"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:26:23.072670" elapsed="0.688765"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:26:21.615178" elapsed="2.146291"/>
</for>
<arg>command=${NODE_STOP_COMMAND}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:26:21.613095" elapsed="2.148433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.762000" level="INFO">${updated_index_list} = [1, 2, 3]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:26:23.761687" elapsed="0.000339"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{stop_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:26:23.762198" elapsed="0.000218"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:26:23.762593" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:23.762487" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:23.762469" elapsed="0.000189"/>
</if>
<for flavor="IN">
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.764597" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:23.764303" elapsed="0.000321"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:23.766072" level="INFO">${member_ip} = 10.30.171.9</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-19T03:26:23.765786" elapsed="0.000314"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.766856" 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-19T03:26:23.766954" 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-19T03:26:23.766723" elapsed="0.000257"/>
</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-19T03:26:23.771111" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:23.770631" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:23.770572" elapsed="0.000687"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.772896" 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-19T03:26:23.773191" 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-19T03:26:23.772409" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.775536" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:23.774950" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.777664" level="INFO">${conn_id} = 30</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:23.776904" elapsed="0.000871"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:23.780418" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:23.780494" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:23.780135" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:23.780738" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:23.781987" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:24.094933" 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 Sun Apr 19 03:25:28 UTC 2026

  System load:  0.13               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:26:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:26:23.781667" elapsed="0.313381"/>
</kw>
<msg time="2026-04-19T03:26:24.095118" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:23.781311" elapsed="0.313878"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:23.779303" elapsed="0.316151"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:24.097020" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:24.119622" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:24.120205" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:24.120587" 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-19T03:26:24.096653" elapsed="0.024178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:24.123468" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:24.126668" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:24.125859" elapsed="0.000971"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:24.127420" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:24.127090" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:24.126981" elapsed="0.000637"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:24.128168" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T03:26:24.127843" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:24.127767" elapsed="0.000640"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:24.128529" elapsed="0.000058"/>
</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-19T03:26:24.135505" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:24.136060" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:24.136416" 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-19T03:26:24.130781" elapsed="0.005850"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:23.768874" elapsed="0.368000"/>
</kw>
<msg time="2026-04-19T03:26:24.137347" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:23.768222" elapsed="0.369182"/>
</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-19T03:26:23.767651" elapsed="0.369834"/>
</kw>
<msg time="2026-04-19T03:26:24.137526" 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-19T03:26:23.767151" elapsed="0.370419"/>
</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-19T03:26:24.140539" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T03:26:24.141382" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:24.141684" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:24.137858" elapsed="0.003975"/>
</kw>
<msg time="2026-04-19T03:26:24.141923" level="INFO">${output} = 1</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-19T03:26:23.766315" elapsed="0.375632"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:24.142420" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:24.142170" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:24.142507" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:24.142658" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:23.764821" elapsed="0.377861"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:24.142728" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:24.142870" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:23.763917" elapsed="0.378978"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:24.143465" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:24.143070" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:23.763531" elapsed="0.380141">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:26.147305" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:26.146542" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:26.149413" level="INFO">${member_ip} = 10.30.171.9</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-19T03:26:26.148776" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:26.151412" 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-19T03:26:26.151637" 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-19T03:26:26.151081" elapsed="0.000615"/>
</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-19T03:26:26.158133" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:26.157612" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:26.157321" elapsed="0.000967"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:26.159996" 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-19T03:26:26.160301" 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-19T03:26:26.159493" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:26.162189" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:26.161604" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:26.164279" level="INFO">${conn_id} = 33</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:26.163501" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:26.167358" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:26.167438" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:26.166781" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:26.167685" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:26.169096" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:26.476981" 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 Sun Apr 19 03:25:28 UTC 2026

  System load:  0.13               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:26:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:26:26.168710" elapsed="0.308430"/>
</kw>
<msg time="2026-04-19T03:26:26.477223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:26.168342" elapsed="0.308968"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:26.165826" elapsed="0.311979"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:26.479521" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:26.502491" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:26.503075" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:26.503461" 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-19T03:26:26.479085" elapsed="0.024650"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:26.506341" elapsed="0.000964"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:26.509788" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:26.508757" elapsed="0.001316"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:26.511010" elapsed="0.000101"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:26.510467" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:26.510330" elapsed="0.001024"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:26.512376" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T03:26:26.511759" elapsed="0.000738"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:26.511591" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:26.512652" 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-19T03:26:26.517718" 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-19T03:26:26.518291" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:26.518652" 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-19T03:26:26.514205" elapsed="0.004665"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:26.155783" elapsed="0.363354"/>
</kw>
<msg time="2026-04-19T03:26:26.519644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:26.154487" elapsed="0.365247"/>
</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-19T03:26:26.153245" elapsed="0.366725"/>
</kw>
<msg time="2026-04-19T03:26:26.520015" 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-19T03:26:26.152079" elapsed="0.368064"/>
</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-19T03:26:26.523101" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:26.523586" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:26.523912" 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-19T03:26:26.520439" elapsed="0.003797"/>
</kw>
<msg time="2026-04-19T03:26:26.524331" level="INFO">${output} = 1</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-19T03:26:26.149951" elapsed="0.374406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:26.524848" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:26.524599" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:26.524936" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:26.525106" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:26.147824" elapsed="0.377311"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:26.525182" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:26.525326" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:26.145668" elapsed="0.379682"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:26.525898" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:26.525506" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:26.144605" elapsed="0.381498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:28.528408" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:28.528029" elapsed="0.000414"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:28.529355" level="INFO">${member_ip} = 10.30.171.9</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-19T03:26:28.529078" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:28.530220" 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-19T03:26:28.530329" 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-19T03:26:28.530020" elapsed="0.000336"/>
</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-19T03:26:28.535991" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:28.535500" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:28.533620" elapsed="0.002530"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:28.537619" 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-19T03:26:28.537868" 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-19T03:26:28.537168" elapsed="0.000802"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:28.539562" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:28.538984" elapsed="0.000691"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:28.541469" level="INFO">${conn_id} = 36</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:28.540687" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:28.543882" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:28.543961" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:28.543598" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:28.544218" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:28.545637" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:28.887123" 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 Sun Apr 19 03:25:28 UTC 2026

  System load:  0.13               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:26:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:26:28.545313" elapsed="0.342057"/>
</kw>
<msg time="2026-04-19T03:26:28.887456" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:28.544771" elapsed="0.342774"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:28.542810" elapsed="0.345028"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:28.889375" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:28.912234" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:28.912746" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:28.913142" 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-19T03:26:28.888941" elapsed="0.024419"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:28.916268" elapsed="0.000603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:28.918330" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:28.917680" elapsed="0.000799"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:28.919104" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:28.918704" elapsed="0.000535"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:28.918625" 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-19T03:26:28.919807" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:26:28.919522" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:28.919454" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:28.920165" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:28.978433" elapsed="0.000413"/>
</kw>
<kw name="Open 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-19T03:26:28.979095" elapsed="0.000275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:28.979578" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:28.922014" elapsed="0.057780"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:28.532296" elapsed="0.447750"/>
</kw>
<msg time="2026-04-19T03:26:28.980372" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:28.531595" elapsed="0.448844"/>
</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-19T03:26:28.531050" elapsed="0.449484"/>
</kw>
<msg time="2026-04-19T03:26:28.980581" 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-19T03:26:28.530517" elapsed="0.450111"/>
</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-19T03:26:28.983770" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:26:28.984268" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:28.984565" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:28.980950" elapsed="0.003762"/>
</kw>
<msg time="2026-04-19T03:26:28.984807" level="INFO">${output} = 1</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-19T03:26:28.529598" elapsed="0.455233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:28.985298" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:28.985026" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:28.985394" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:26:28.985553" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:28.528652" elapsed="0.456926"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:28.985624" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:26:28.985765" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:28.527634" elapsed="0.458156"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:28.986446" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:28.986016" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:28.526873" elapsed="0.459758">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:30.990268" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:30.989477" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:30.992406" level="INFO">${member_ip} = 10.30.171.9</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-19T03:26:30.991746" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:30.994257" 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-19T03:26:30.994492" 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-19T03:26:30.993889" elapsed="0.000662"/>
</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-19T03:26:31.000280" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:30.999783" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:30.999726" elapsed="0.000694"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.001825" 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-19T03:26:31.002080" 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-19T03:26:31.001392" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:31.003698" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:31.003162" elapsed="0.000644"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.005539" level="INFO">${conn_id} = 39</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:31.004831" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:31.007892" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:31.007969" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:31.007609" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:31.008409" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.009665" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:31.590658" 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 Sun Apr 19 03:26:31 UTC 2026

  System load:  0.12               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:26:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:26:31.009340" elapsed="0.581466"/>
</kw>
<msg time="2026-04-19T03:26:31.590892" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:31.008961" elapsed="0.582025"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:31.006828" elapsed="0.584453"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.592810" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:31.615563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:31.616105" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T03:26:31.616439" 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-19T03:26:31.592412" elapsed="0.024236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:31.618848" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:31.621985" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:31.620978" elapsed="0.001268"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:31.623117" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:31.622593" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:31.622473" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:31.624206" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:26:31.623726" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:31.623620" elapsed="0.000940"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:31.624733" 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-19T03:26:31.630400" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:26:31.630944" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:31.631317" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:31.627070" elapsed="0.004453"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:30.998395" elapsed="0.633349"/>
</kw>
<msg time="2026-04-19T03:26:31.632063" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:30.997371" elapsed="0.634749"/>
</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-19T03:26:30.996097" elapsed="0.636104"/>
</kw>
<msg time="2026-04-19T03:26:31.632242" 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-19T03:26:30.994901" elapsed="0.637387"/>
</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-19T03:26:31.635325" 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-19T03:26:31.635803" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:31.636116" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:31.632577" elapsed="0.003691"/>
</kw>
<msg time="2026-04-19T03:26:31.636358" level="INFO">${output} = 0</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-19T03:26:30.992948" elapsed="0.643436"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:31.636814" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:31.636565" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:31.636903" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:31.637146" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:30.990801" elapsed="0.646373"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:31.637221" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:31.637365" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:30.988628" elapsed="0.648762"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T03:26:31.637556" elapsed="0.000361"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T03:26:30.987471" elapsed="0.650509"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:26:23.762976" elapsed="7.875052"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:26:23.762833" elapsed="7.875250"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:31.639912" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:31.639623" elapsed="0.000316"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:31.640824" level="INFO">${member_ip} = 10.30.171.128</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-19T03:26:31.640554" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.641714" 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-19T03:26:31.641815" 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-19T03:26:31.641579" elapsed="0.000262"/>
</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-19T03:26:31.645625" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:31.645182" elapsed="0.000522"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:31.644949" elapsed="0.000812"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.647155" 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-19T03:26:31.647393" 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-19T03:26:31.646713" elapsed="0.000789"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:31.649002" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:31.648468" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.650792" level="INFO">${conn_id} = 42</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:31.650115" elapsed="0.000775"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:31.653203" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:31.653281" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:31.652909" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:31.653519" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:31.654788" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:32.252884" 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 Sun Apr 19 03:26:31 UTC 2026

  System load:  0.23               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:26:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:26:31.654464" elapsed="0.598606"/>
</kw>
<msg time="2026-04-19T03:26:32.253163" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:31.654100" elapsed="0.599159"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:31.652157" elapsed="0.601402"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:32.255130" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:32.277858" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:32.278402" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-19T03:26:32.278737" 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-19T03:26:32.254676" elapsed="0.024303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:32.281282" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.284474" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:32.283453" elapsed="0.001358"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:32.285704" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:32.285207" elapsed="0.000662"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:32.285080" elapsed="0.000914"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:32.286984" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T03:26:32.286487" elapsed="0.000757"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:32.286380" elapsed="0.000997"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:32.287577" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:32.292241" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:26:32.292787" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:32.293162" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:32.288889" elapsed="0.004481"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:31.643682" elapsed="0.649910"/>
</kw>
<msg time="2026-04-19T03:26:32.293895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:31.643054" elapsed="0.650896"/>
</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-19T03:26:31.642516" elapsed="0.651542"/>
</kw>
<msg time="2026-04-19T03:26:32.294103" 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-19T03:26:31.641997" elapsed="0.652153"/>
</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-19T03:26:32.297122" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:26:32.297598" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:32.297890" 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-19T03:26:32.294441" elapsed="0.003709"/>
</kw>
<msg time="2026-04-19T03:26:32.298244" level="INFO">${output} = 0</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-19T03:26:31.641145" elapsed="0.657124"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.298693" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:32.298446" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:32.298779" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:32.298944" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:31.640152" elapsed="0.658822"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:32.299021" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T03:26:32.299182" level="INFO">${count} = 0</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:31.639279" elapsed="0.659927"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="PASS" start="2026-04-19T03:26:32.299364" elapsed="0.000350"/>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="PASS" start="2026-04-19T03:26:31.638828" elapsed="0.660952"/>
</kw>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:26:31.638324" elapsed="0.661503"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:26:31.638180" elapsed="0.661686"/>
</iter>
<iter>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.301739" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:32.301449" elapsed="0.000322"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:32.302738" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:32.302468" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:32.303616" 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-19T03:26:32.303714" 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-19T03:26:32.303482" elapsed="0.000259"/>
</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-19T03:26:32.307530" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:32.307102" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:32.306856" elapsed="0.000808"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:32.309077" 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-19T03:26:32.309312" 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-19T03:26:32.308615" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.310938" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:32.310376" elapsed="0.000690"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:32.312731" 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-19T03:26:32.312048" elapsed="0.000780"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.316146" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:32.316224" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:32.315840" 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-19T03:26:32.316456" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:32.317798" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:32.893156" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:32.317477" elapsed="0.575825"/>
</kw>
<msg time="2026-04-19T03:26:32.893389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:32.316999" elapsed="0.576477"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:32.314318" elapsed="0.579437"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:32.895259" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:32.918097" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:32.918594" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:32.918920" 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-19T03:26:32.894846" elapsed="0.024325"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:32.921386" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.924485" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:32.923487" elapsed="0.001229"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:32.925593" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:32.925086" elapsed="0.000871"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:32.924935" elapsed="0.001184"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:32.926888" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:26:32.926440" elapsed="0.001058"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:32.926334" elapsed="0.001305"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:32.927818" 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-19T03:26:32.932975" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:26:32.933538" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:32.933899" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:32.929547" elapsed="0.004577"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:32.305580" elapsed="0.628767"/>
</kw>
<msg time="2026-04-19T03:26:32.934660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:32.304928" elapsed="0.629788"/>
</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-19T03:26:32.304406" elapsed="0.630393"/>
</kw>
<msg time="2026-04-19T03:26:32.934840" 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-19T03:26:32.303893" elapsed="0.630993"/>
</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-19T03:26:32.937968" 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-19T03:26:32.938556" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:32.938859" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:32.935240" elapsed="0.003771"/>
</kw>
<msg time="2026-04-19T03:26:32.939215" level="INFO">${output} = 1</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-19T03:26:32.303070" elapsed="0.636171"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.939677" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:32.939425" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:32.939766" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:32.939917" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:32.301972" elapsed="0.637971"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:32.939991" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:32.940177" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:32.301097" elapsed="0.639104"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:32.940767" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:32.940365" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:32.300683" elapsed="0.640273">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:34.944801" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:34.943961" elapsed="0.000913"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:34.947159" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:34.946427" elapsed="0.000801"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:34.949448" 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-19T03:26:34.949700" 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-19T03:26:34.949087" elapsed="0.000823"/>
</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-19T03:26:34.958025" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:34.957554" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:34.957273" elapsed="0.000909"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:34.959626" 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-19T03:26:34.959871" 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-19T03:26:34.959159" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:34.961497" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:34.960942" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:34.963283" level="INFO">${conn_id} = 48</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:34.962578" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:34.965684" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:34.965762" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:34.965402" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:34.966025" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:34.967290" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:35.321935" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:34.966953" elapsed="0.355136"/>
</kw>
<msg time="2026-04-19T03:26:35.322172" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:34.966596" elapsed="0.355661"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:34.964630" elapsed="0.357922"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:35.324104" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:35.346726" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:35.347271" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:35.347616" 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-19T03:26:35.323665" elapsed="0.024187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:35.350305" elapsed="0.000922"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:35.353512" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:35.352537" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:35.354629" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:35.354124" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:35.353970" elapsed="0.000947"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:35.355719" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:26:35.355270" elapsed="0.000672"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:35.355161" elapsed="0.001114"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:35.356455" 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-19T03:26:35.362158" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:26:35.362728" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:35.363113" elapsed="0.000219"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:35.358269" elapsed="0.005180"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:34.954925" elapsed="0.408750"/>
</kw>
<msg time="2026-04-19T03:26:35.364025" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:34.953286" elapsed="0.410869"/>
</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-19T03:26:34.951909" elapsed="0.412337"/>
</kw>
<msg time="2026-04-19T03:26:35.364296" 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-19T03:26:34.950528" elapsed="0.413816"/>
</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-19T03:26:35.367479" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:35.367967" elapsed="0.000277"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:35.368397" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:35.364640" elapsed="0.003910"/>
</kw>
<msg time="2026-04-19T03:26:35.368642" level="INFO">${output} = 1</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-19T03:26:34.947986" elapsed="0.420681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:35.369111" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:35.368847" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:35.369198" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:26:35.369351" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:34.945401" elapsed="0.423975"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:35.369422" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:35.369567" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:34.942986" elapsed="0.426608"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:35.370165" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:35.369750" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:34.941793" elapsed="0.428561">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:37.373811" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:37.373077" elapsed="0.000800"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:37.376027" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:37.375422" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:37.377876" 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-19T03:26:37.378134" 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-19T03:26:37.377553" elapsed="0.000644"/>
</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-19T03:26:37.385386" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:37.384902" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:37.384614" elapsed="0.000912"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:37.386967" 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-19T03:26:37.387299" 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-19T03:26:37.386501" elapsed="0.000898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:37.388914" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:37.388372" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:37.390734" 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-19T03:26:37.389995" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:37.393177" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:37.393277" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:37.392844" 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-19T03:26:37.393522" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:37.395537" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:37.713118" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:37.394827" elapsed="0.318431"/>
</kw>
<msg time="2026-04-19T03:26:37.713341" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:37.394313" elapsed="0.319109"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:37.392079" elapsed="0.321617"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:37.715198" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:37.737714" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:37.738380" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:37.738708" 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-19T03:26:37.714777" elapsed="0.024135"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:37.741134" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:37.744055" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:37.743330" elapsed="0.000923"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:37.744879" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:37.744487" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:37.744408" elapsed="0.000680"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:37.745569" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:26:37.745287" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:37.745222" elapsed="0.000568"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:37.745898" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:37.752267" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:26:37.752815" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:37.753190" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:37.747837" elapsed="0.005561"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:37.382644" elapsed="0.370974"/>
</kw>
<msg time="2026-04-19T03:26:37.754015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:37.381095" elapsed="0.372993"/>
</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-19T03:26:37.379791" elapsed="0.374382"/>
</kw>
<msg time="2026-04-19T03:26:37.754214" 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-19T03:26:37.378545" elapsed="0.375715"/>
</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-19T03:26:37.757314" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:26:37.757790" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:37.758097" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:37.754552" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T03:26:37.758337" level="INFO">${output} = 1</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-19T03:26:37.376604" elapsed="0.381758"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:37.758781" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:37.758537" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:37.758867" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:37.759015" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:37.374433" elapsed="0.384662"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:37.759170" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:26:37.759329" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:37.372236" elapsed="0.387120"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:37.759906" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:37.759513" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:37.371165" elapsed="0.388943">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:39.762667" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:39.762183" elapsed="0.000536"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:39.764004" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:39.763615" elapsed="0.000447"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:39.765203" 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-19T03:26:39.765349" 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-19T03:26:39.764961" elapsed="0.000461"/>
</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-19T03:26:39.771105" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:39.770436" elapsed="0.000782"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:39.770059" elapsed="0.001243"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:39.773317" 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-19T03:26:39.773716" 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-19T03:26:39.772677" elapsed="0.001162"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:39.775391" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:39.774828" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:39.777344" level="INFO">${conn_id} = 54</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:39.776561" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:39.779736" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:39.779815" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:39.779453" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:39.780069" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:39.781482" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:40.098233" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:39.780993" elapsed="0.317382"/>
</kw>
<msg time="2026-04-19T03:26:40.098457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:39.780630" elapsed="0.317916"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:39.778662" elapsed="0.320164"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:40.100326" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:40.114025" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:40.114496" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:40.114719" 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-19T03:26:40.099909" elapsed="0.014947"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:40.116375" elapsed="0.000628"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:40.118513" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:40.117862" elapsed="0.000794"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:40.119264" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:40.118895" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:40.118814" elapsed="0.000636"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:40.119942" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:26:40.119657" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:40.119588" elapsed="0.000637"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:40.120335" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:40.129045" elapsed="0.000503"/>
</kw>
<kw name="Open 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-19T03:26:40.129846" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:40.130219" 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-19T03:26:40.122219" elapsed="0.008208"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:39.768168" elapsed="0.362504"/>
</kw>
<msg time="2026-04-19T03:26:40.130976" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:39.767199" elapsed="0.363849"/>
</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-19T03:26:39.766426" elapsed="0.364706"/>
</kw>
<msg time="2026-04-19T03:26:40.131173" 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-19T03:26:39.765658" elapsed="0.365561"/>
</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-19T03:26:40.134357" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:26:40.134831" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:40.135141" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:40.131508" elapsed="0.003782"/>
</kw>
<msg time="2026-04-19T03:26:40.135380" level="INFO">${output} = 1</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-19T03:26:39.764368" elapsed="0.371036"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:40.135824" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:40.135578" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:40.135911" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:40.136085" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:39.763008" elapsed="0.373103"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:40.136158" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:40.136299" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:39.761637" elapsed="0.374687"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:40.136879" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:40.136475" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:39.760708" elapsed="0.376379">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:42.140579" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:42.139777" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:42.142680" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:42.142080" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:42.144576" 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-19T03:26:42.144810" 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-19T03:26:42.144230" elapsed="0.000641"/>
</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-19T03:26:42.151474" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:42.150984" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:42.150928" elapsed="0.000684"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:42.153352" 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-19T03:26:42.153607" 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-19T03:26:42.152624" elapsed="0.001086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:42.155270" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:42.154702" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:42.157133" 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-19T03:26:42.156351" elapsed="0.000884"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:42.159587" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:42.159669" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:42.159287" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:42.159907" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:42.161996" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:42.479726" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:42.161264" elapsed="0.318623"/>
</kw>
<msg time="2026-04-19T03:26:42.479971" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:42.160570" elapsed="0.319511"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:42.158501" elapsed="0.321865"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:42.481874" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:42.504408" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:42.504633" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:42.504781" 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-19T03:26:42.481468" elapsed="0.023408"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:42.505863" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:42.507324" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:42.506862" elapsed="0.000564"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:42.507863" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:42.507592" elapsed="0.000350"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:42.507534" elapsed="0.000466"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:42.508370" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-19T03:26:42.508166" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:42.508117" elapsed="0.000409"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:42.508603" 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-19T03:26:42.513386" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:42.513928" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:42.514320" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:42.509913" elapsed="0.004614"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:42.149354" elapsed="0.365393"/>
</kw>
<msg time="2026-04-19T03:26:42.515094" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:42.147646" elapsed="0.367508"/>
</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-19T03:26:42.146422" elapsed="0.368814"/>
</kw>
<msg time="2026-04-19T03:26:42.515277" 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-19T03:26:42.145258" elapsed="0.370065"/>
</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-19T03:26:42.518461" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T03:26:42.518947" elapsed="0.000198"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:42.519297" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:42.515612" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T03:26:42.519536" level="INFO">${output} = 1</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-19T03:26:42.143271" elapsed="0.376347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:42.520099" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:42.519830" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:42.520191" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:26:42.520347" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:42.141139" elapsed="0.379234"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:42.520420" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:26:42.520565" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:42.138927" elapsed="0.381664"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:42.521168" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:42.520749" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:42.137864" elapsed="0.383487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:44.524889" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:44.524156" elapsed="0.000806"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:44.527089" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:44.526457" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:44.528562" 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-19T03:26:44.528704" 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-19T03:26:44.528342" elapsed="0.000399"/>
</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-19T03:26:44.534163" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:44.533512" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:44.533435" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:44.536689" 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-19T03:26:44.537061" 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-19T03:26:44.535742" elapsed="0.001466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:44.539364" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:44.538582" elapsed="0.000971"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:44.541392" level="INFO">${conn_id} = 60</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:44.540672" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:44.543924" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:44.544002" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:44.543639" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:44.544258" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:44.545502" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:44.883179" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:44.545180" elapsed="0.338282"/>
</kw>
<msg time="2026-04-19T03:26:44.883556" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:44.544805" elapsed="0.338855"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:44.542767" elapsed="0.341187"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:44.885451" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:44.908699" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:44.909252" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:44.909587" 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-19T03:26:44.885055" elapsed="0.024748"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:44.912145" elapsed="0.000881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:44.915343" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:44.914335" elapsed="0.001243"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:44.916479" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:44.915939" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:44.915813" elapsed="0.000965"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:44.917610" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:26:44.917155" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:44.917003" elapsed="0.000969"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:44.918307" elapsed="0.000086"/>
</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-19T03:26:44.924125" 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-19T03:26:44.924663" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:44.925021" elapsed="0.000131"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:44.920569" elapsed="0.004693"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:44.531551" elapsed="0.393935"/>
</kw>
<msg time="2026-04-19T03:26:44.925798" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:44.530461" elapsed="0.395394"/>
</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-19T03:26:44.529697" elapsed="0.396240"/>
</kw>
<msg time="2026-04-19T03:26:44.925977" 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-19T03:26:44.528960" elapsed="0.397062"/>
</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-19T03:26:44.929054" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:44.929532" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:44.929827" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:44.926378" elapsed="0.003597"/>
</kw>
<msg time="2026-04-19T03:26:44.930166" level="INFO">${output} = 1</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-19T03:26:44.527682" elapsed="0.402512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:44.930624" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:44.930375" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:44.930739" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:26:44.930893" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:44.525497" elapsed="0.405422"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:44.930965" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:44.931127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:44.523278" elapsed="0.407874"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:44.931760" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:44.931357" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:44.522228" elapsed="0.409721">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:46.934375" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:46.933862" elapsed="0.000560"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:46.935750" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:46.935366" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:46.937509" 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-19T03:26:46.937742" 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-19T03:26:46.937178" elapsed="0.000625"/>
</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-19T03:26:46.943900" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:46.943269" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:46.943194" elapsed="0.000920"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:46.946398" 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-19T03:26:46.946738" 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-19T03:26:46.945459" elapsed="0.001419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:46.948999" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:46.948245" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:46.951624" level="INFO">${conn_id} = 63</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:46.950598" elapsed="0.001162"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:46.954249" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:46.954329" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:46.953815" elapsed="0.000538"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:46.954562" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:46.955828" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:47.276678" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:46.955502" elapsed="0.321281"/>
</kw>
<msg time="2026-04-19T03:26:47.276856" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:46.955137" elapsed="0.321799"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:46.953057" elapsed="0.324145"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:47.278624" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:47.301888" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:47.302432" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:47.302809" 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-19T03:26:47.278245" elapsed="0.024776"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:47.305454" elapsed="0.000897"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:47.308609" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:47.307654" elapsed="0.001182"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:47.309747" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:47.309223" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:47.309096" elapsed="0.000978"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:47.310914" elapsed="0.000203"/>
</return>
<status status="PASS" start="2026-04-19T03:26:47.310404" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:47.310296" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:47.311310" 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-19T03:26:47.316187" 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-19T03:26:47.316726" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:47.317102" 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-19T03:26:47.312674" elapsed="0.004637"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:46.941349" elapsed="0.376189"/>
</kw>
<msg time="2026-04-19T03:26:47.317848" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:46.940374" elapsed="0.377532"/>
</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-19T03:26:46.939405" elapsed="0.378582"/>
</kw>
<msg time="2026-04-19T03:26:47.318042" 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-19T03:26:46.938192" elapsed="0.379899"/>
</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-19T03:26:47.321581" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:26:47.322071" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:47.322369" 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-19T03:26:47.318564" elapsed="0.003974"/>
</kw>
<msg time="2026-04-19T03:26:47.322632" level="INFO">${output} = 1</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-19T03:26:46.936233" elapsed="0.386424"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:47.323156" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:47.322843" elapsed="0.000358"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:47.323245" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:26:47.323400" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:46.934723" elapsed="0.388703"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:47.323472" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:26:47.323623" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:46.933333" elapsed="0.390315"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:47.324217" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:47.323805" elapsed="0.000491">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:46.932568" elapsed="0.391838">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:49.328124" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:49.327282" elapsed="0.000917"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:49.330435" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:49.329785" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:49.332314" 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-19T03:26:49.332543" 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-19T03:26:49.331947" elapsed="0.000660"/>
</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-19T03:26:49.338614" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:49.338132" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:49.337810" elapsed="0.000945"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:49.340224" 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-19T03:26:49.340470" 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-19T03:26:49.339764" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:49.342111" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:49.341539" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:49.343962" level="INFO">${conn_id} = 66</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:49.343261" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:49.346336" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:49.346416" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:49.346026" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:49.346653" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:49.348120" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:49.679908" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:49.347775" elapsed="0.332318"/>
</kw>
<msg time="2026-04-19T03:26:49.680182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:49.347396" elapsed="0.332884"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:49.345259" elapsed="0.335314"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:49.682189" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:49.705238" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:49.705747" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:49.706165" 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-19T03:26:49.681747" elapsed="0.024635"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:49.708702" elapsed="0.000962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:49.712012" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:49.710943" elapsed="0.001462"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:49.713464" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:49.712754" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:49.712631" elapsed="0.001139"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:49.714606" elapsed="0.000150"/>
</return>
<status status="PASS" start="2026-04-19T03:26:49.714121" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:49.713978" elapsed="0.001184"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:49.715415" elapsed="0.000091"/>
</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-19T03:26:49.720923" 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-19T03:26:49.721701" elapsed="0.000227"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:49.722205" 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-19T03:26:49.717284" elapsed="0.005189"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:49.336502" elapsed="0.386250"/>
</kw>
<msg time="2026-04-19T03:26:49.723186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:49.335386" elapsed="0.387882"/>
</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-19T03:26:49.334164" elapsed="0.389221"/>
</kw>
<msg time="2026-04-19T03:26:49.723442" 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-19T03:26:49.332962" elapsed="0.390542"/>
</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-19T03:26:49.727711" elapsed="0.000539"/>
</kw>
<kw name="Open 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-19T03:26:49.728469" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:49.728866" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:49.723908" elapsed="0.005169"/>
</kw>
<msg time="2026-04-19T03:26:49.729197" level="INFO">${output} = 1</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-19T03:26:49.330980" elapsed="0.398249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:49.729814" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:49.729495" elapsed="0.000375"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:49.729927" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T03:26:49.730144" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:49.328821" elapsed="0.401355"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:49.730234" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:26:49.730414" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:49.326419" elapsed="0.404026"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:49.731193" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:49.730648" elapsed="0.000640">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:49.325272" elapsed="0.406161">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:51.734931" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:51.734198" elapsed="0.000805"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:51.737089" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:51.736433" elapsed="0.000719"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:51.738901" 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-19T03:26:51.739295" 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-19T03:26:51.738579" elapsed="0.000778"/>
</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-19T03:26:51.745743" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:51.745098" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:51.744714" elapsed="0.001221"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:51.747903" 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-19T03:26:51.748280" 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-19T03:26:51.747300" elapsed="0.001121"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:51.750601" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:51.749828" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:51.753238" level="INFO">${conn_id} = 69</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:51.752130" elapsed="0.001205"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:51.755581" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:51.755663" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:51.755283" 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-19T03:26:51.755897" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:51.757343" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:52.057461" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:51.756861" elapsed="0.300717"/>
</kw>
<msg time="2026-04-19T03:26:52.057655" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:51.756498" elapsed="0.301241"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:51.754509" elapsed="0.303490"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:52.059516" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:52.082208" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:52.082710" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:52.083117" 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-19T03:26:52.059126" elapsed="0.024219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:52.085585" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:52.088786" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:52.087779" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:52.089972" elapsed="0.000095"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:52.089488" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:52.089367" elapsed="0.000930"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:52.091082" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:26:52.090610" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:52.090504" elapsed="0.000929"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:52.091606" elapsed="0.000081"/>
</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-19T03:26:52.099455" 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-19T03:26:52.100108" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:52.100477" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:52.094816" elapsed="0.005874"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:51.742700" elapsed="0.358211"/>
</kw>
<msg time="2026-04-19T03:26:52.101299" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:51.741752" elapsed="0.359607"/>
</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-19T03:26:51.740924" elapsed="0.360518"/>
</kw>
<msg time="2026-04-19T03:26:52.101483" 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-19T03:26:51.739709" elapsed="0.361820"/>
</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-19T03:26:52.104520" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:26:52.105003" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:52.105352" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:52.101821" elapsed="0.003680"/>
</kw>
<msg time="2026-04-19T03:26:52.105591" level="INFO">${output} = 1</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-19T03:26:51.737633" elapsed="0.367984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:52.106061" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:52.105800" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:52.106149" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:52.106300" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:51.735489" elapsed="0.370836"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:52.106370" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:26:52.106511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:51.733364" elapsed="0.373172"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:52.107096" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:52.106691" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:51.732299" elapsed="0.374981">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:54.111009" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:54.110262" elapsed="0.000849"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:54.113177" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:54.112538" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:54.114767" 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-19T03:26:54.114912" 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-19T03:26:54.114533" elapsed="0.000416"/>
</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-19T03:26:54.120756" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:54.120021" elapsed="0.000940"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:54.119634" elapsed="0.001437"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:54.123151" 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-19T03:26:54.123493" 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-19T03:26:54.122494" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:54.125816" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:54.125055" elapsed="0.000963"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:54.127888" level="INFO">${conn_id} = 72</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:54.127183" elapsed="0.000817"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:54.130314" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:54.130393" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:54.130011" 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-19T03:26:54.130630" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:54.131905" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:54.440767" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:54.131581" elapsed="0.309336"/>
</kw>
<msg time="2026-04-19T03:26:54.441000" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:54.131219" elapsed="0.309882"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:54.129241" elapsed="0.312141"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:54.442875" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:54.465563" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:54.466138" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:54.466476" 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-19T03:26:54.442491" elapsed="0.024197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:54.468923" elapsed="0.000935"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:54.472212" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:54.471163" elapsed="0.001286"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:54.473325" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:54.472796" elapsed="0.000694"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:54.472674" elapsed="0.000987"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:54.474365" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:26:54.473987" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:54.473880" elapsed="0.000643"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:54.474602" 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-19T03:26:54.481007" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:26:54.481568" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:54.481934" 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-19T03:26:54.475922" elapsed="0.006236"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:54.117696" elapsed="0.364683"/>
</kw>
<msg time="2026-04-19T03:26:54.482744" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:54.116726" elapsed="0.366075"/>
</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-19T03:26:54.115948" elapsed="0.366941"/>
</kw>
<msg time="2026-04-19T03:26:54.482943" 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-19T03:26:54.115224" elapsed="0.367770"/>
</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-19T03:26:54.486096" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:26:54.486577" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:54.486873" 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-19T03:26:54.483327" elapsed="0.003695"/>
</kw>
<msg time="2026-04-19T03:26:54.487143" level="INFO">${output} = 1</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-19T03:26:54.113721" elapsed="0.373447"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:54.487600" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:54.487355" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:54.487686" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:26:54.487835" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:54.111589" elapsed="0.376272"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:54.487905" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:26:54.488128" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:54.109388" elapsed="0.378768"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:54.488695" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:54.488310" elapsed="0.000457">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:54.108131" elapsed="0.380745">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:56.492741" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:56.491920" elapsed="0.000898"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:56.494884" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:56.494274" elapsed="0.000672"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:56.496769" 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-19T03:26:56.497003" 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-19T03:26:56.496445" elapsed="0.000649"/>
</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-19T03:26:56.503454" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:56.502766" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:56.502687" elapsed="0.000986"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:56.505736" 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-19T03:26:56.505991" 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-19T03:26:56.504982" elapsed="0.001139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:56.507652" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:56.507115" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:56.509575" 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-19T03:26:56.508834" elapsed="0.000852"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:56.512134" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:56.512219" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:56.511794" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:56.512462" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:56.513751" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:56.873531" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:56.513425" elapsed="0.360261"/>
</kw>
<msg time="2026-04-19T03:26:56.873774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:56.513060" elapsed="0.360805"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:56.510993" elapsed="0.363182"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:56.875695" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:56.898191" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:56.898690" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:56.899022" 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-19T03:26:56.875286" elapsed="0.023995"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:56.901591" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:56.904773" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:56.903759" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:56.906019" elapsed="0.000098"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:56.905388" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:56.905263" elapsed="0.001084"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:56.907160" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:26:56.906674" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:56.906565" elapsed="0.000971"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:56.907722" elapsed="0.000084"/>
</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-19T03:26:56.915110" elapsed="0.000488"/>
</kw>
<kw name="Open 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-19T03:26:56.915821" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:56.916264" 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-19T03:26:56.910815" elapsed="0.005662"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:56.500823" elapsed="0.415879"/>
</kw>
<msg time="2026-04-19T03:26:56.917013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:56.499842" elapsed="0.417249"/>
</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-19T03:26:56.498766" elapsed="0.418409"/>
</kw>
<msg time="2026-04-19T03:26:56.917216" 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-19T03:26:56.497456" elapsed="0.419807"/>
</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-19T03:26:56.920427" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:26:56.920940" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:56.921266" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:56.917630" elapsed="0.003784"/>
</kw>
<msg time="2026-04-19T03:26:56.921507" level="INFO">${output} = 1</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-19T03:26:56.495463" elapsed="0.426070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:56.921987" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:56.921735" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:56.922093" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:26:56.922251" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:56.493321" elapsed="0.428959"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:56.922328" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:26:56.922473" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:56.490980" elapsed="0.431517"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:56.923070" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:56.922655" elapsed="0.000495">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:56.489763" elapsed="0.433502">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:26:58.926884" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:26:58.926132" elapsed="0.000824"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:26:58.929063" level="INFO">${member_ip} = 10.30.171.206</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-19T03:26:58.928410" elapsed="0.000718"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:58.930914" 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-19T03:26:58.931175" 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-19T03:26:58.930584" elapsed="0.000653"/>
</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-19T03:26:58.936804" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:26:58.936341" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:58.936286" elapsed="0.000656"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:58.938773" 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-19T03:26:58.939056" 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-19T03:26:58.937939" elapsed="0.001220"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:58.940690" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:58.940136" elapsed="0.000661"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:26:58.942486" level="INFO">${conn_id} = 78</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:26:58.941772" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:26:58.945067" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:26:58.945148" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:26:58.944762" 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-19T03:26:58.945399" elapsed="0.000421"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:26:58.946778" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:26:59.264713" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:26:58.946453" elapsed="0.318510"/>
</kw>
<msg time="2026-04-19T03:26:59.265142" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:58.946083" elapsed="0.319216"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:26:58.943832" elapsed="0.322258"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:26:59.269279" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:26:59.292518" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:26:59.293121" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:26:59.293489" 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-19T03:26:59.268473" elapsed="0.025247"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:59.296216" elapsed="0.000979"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:59.299619" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:59.298575" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:59.300845" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:26:59.300287" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:59.300152" elapsed="0.001040"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:26:59.302192" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T03:26:59.301564" elapsed="0.000819"/>
</branch>
<status status="PASS" start="2026-04-19T03:26:59.301445" elapsed="0.000998"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:26:59.302523" 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-19T03:26:59.307341" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:26:59.307890" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:59.308266" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:59.303880" elapsed="0.004598"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:26:58.934934" elapsed="0.373768"/>
</kw>
<msg time="2026-04-19T03:26:59.309120" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:26:58.933976" elapsed="0.375207"/>
</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-19T03:26:58.932760" elapsed="0.376506"/>
</kw>
<msg time="2026-04-19T03:26:59.309308" 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-19T03:26:58.931593" elapsed="0.377761"/>
</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-19T03:26:59.312463" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:26:59.312941" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:26:59.313253" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:26:59.309650" elapsed="0.003752"/>
</kw>
<msg time="2026-04-19T03:26:59.313556" level="INFO">${output} = 1</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-19T03:26:58.929621" elapsed="0.383962"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:26:59.314047" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:26:59.313763" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:26:59.314137" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:26:59.314291" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:26:58.927451" elapsed="0.386865"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:26:59.314364" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:26:59.314508" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:26:58.925247" elapsed="0.389286"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:26:59.315164" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:26:59.314689" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:26:58.924086" elapsed="0.391273">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:01.318967" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:01.318182" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:01.321243" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:01.320549" elapsed="0.000755"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:01.322533" 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-19T03:27:01.322675" 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-19T03:27:01.322310" elapsed="0.000402"/>
</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-19T03:27:01.328105" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:01.327455" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:01.327378" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:01.330639" 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-19T03:27:01.330988" 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-19T03:27:01.329689" elapsed="0.001487"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:01.333532" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:01.332557" elapsed="0.001101"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:01.335421" 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-19T03:27:01.334650" elapsed="0.000868"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:01.337799" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:01.337875" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:01.337516" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:01.338125" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:01.339526" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:01.653586" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:26:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:01.339191" elapsed="0.314584"/>
</kw>
<msg time="2026-04-19T03:27:01.653847" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:01.338679" elapsed="0.315252"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:01.336740" elapsed="0.317469"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:01.655635" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:01.678240" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:01.678752" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:01.679165" 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-19T03:27:01.655278" elapsed="0.024106"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:01.681689" elapsed="0.000986"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:01.684923" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:01.683911" elapsed="0.001285"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:01.686080" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:01.685542" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:01.685421" elapsed="0.000953"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:01.687166" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:27:01.686693" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:01.686587" elapsed="0.000933"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:01.687690" elapsed="0.000084"/>
</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-19T03:27:01.693563" 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-19T03:27:01.694119" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:01.694472" 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-19T03:27:01.690102" elapsed="0.004576"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:01.325509" elapsed="0.369387"/>
</kw>
<msg time="2026-04-19T03:27:01.695212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:01.324463" elapsed="0.370807"/>
</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-19T03:27:01.323671" elapsed="0.371682"/>
</kw>
<msg time="2026-04-19T03:27:01.695394" 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-19T03:27:01.322933" elapsed="0.372507"/>
</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-19T03:27:01.698514" elapsed="0.000307"/>
</kw>
<kw name="Open 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-19T03:27:01.698984" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:01.699298" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:01.695728" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T03:27:01.699547" level="INFO">${output} = 1</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-19T03:27:01.321690" elapsed="0.377882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:01.699994" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:01.699748" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:01.700111" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:01.700264" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:01.319592" elapsed="0.380697"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:01.700336" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:01.700511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:01.317340" elapsed="0.383196"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:01.701239" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:01.700756" elapsed="0.000558">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:01.316230" elapsed="0.385198">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:03.705637" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:03.704600" elapsed="0.001129"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:03.707975" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:03.707297" elapsed="0.000767"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:03.709351" 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-19T03:27:03.709494" 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-19T03:27:03.709119" elapsed="0.000416"/>
</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-19T03:27:03.715723" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:03.714560" elapsed="0.001289"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:03.714477" elapsed="0.001461"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:03.718174" 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-19T03:27:03.718528" 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-19T03:27:03.717453" elapsed="0.001231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:03.720876" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:03.720195" elapsed="0.000791"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:03.722881" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:03.722019" elapsed="0.000963"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:03.725754" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:03.725841" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:03.725445" 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-19T03:27:03.726228" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:03.727535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:04.028359" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:03.727187" elapsed="0.301332"/>
</kw>
<msg time="2026-04-19T03:27:04.028607" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:03.726799" elapsed="0.301913"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:03.724576" elapsed="0.304420"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:04.030479" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:04.052310" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:04.052806" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:04.053180" 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-19T03:27:04.030086" elapsed="0.023304"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:04.055592" elapsed="0.000876"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:04.058869" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:04.057705" elapsed="0.001423"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:04.060097" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:04.059560" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:04.059430" elapsed="0.000967"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:04.060910" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:27:04.060630" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:04.060562" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:04.061265" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:04.067930" elapsed="0.000569"/>
</kw>
<kw name="Open 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-19T03:27:04.068835" elapsed="0.000254"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:04.069362" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:04.063229" elapsed="0.006424"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:03.712427" elapsed="0.357545"/>
</kw>
<msg time="2026-04-19T03:27:04.070593" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:03.711402" elapsed="0.359279"/>
</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-19T03:27:03.710491" elapsed="0.360309"/>
</kw>
<msg time="2026-04-19T03:27:04.070859" 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-19T03:27:03.709756" elapsed="0.361183"/>
</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-19T03:27:04.074300" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:27:04.074781" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:04.075093" 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-19T03:27:04.071422" elapsed="0.003823"/>
</kw>
<msg time="2026-04-19T03:27:04.075355" level="INFO">${output} = 1</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-19T03:27:03.708523" elapsed="0.366858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:04.075825" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:04.075575" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:04.075912" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:04.076086" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:03.706242" elapsed="0.369869"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:04.076160" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:27:04.076319" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:03.703406" elapsed="0.372938"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:04.076905" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:04.076502" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:03.702276" elapsed="0.374839">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:06.080495" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:06.079740" elapsed="0.000822"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:06.082740" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:06.082126" elapsed="0.000673"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:06.084553" 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-19T03:27:06.084776" 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-19T03:27:06.084229" elapsed="0.000605"/>
</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-19T03:27:06.090585" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:06.090077" elapsed="0.000597"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:06.089720" elapsed="0.001016"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:06.092229" 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-19T03:27:06.092489" 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-19T03:27:06.091732" elapsed="0.000860"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:06.094466" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:06.093578" elapsed="0.001017"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:06.096427" 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-19T03:27:06.095674" elapsed="0.000853"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:06.098962" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:06.099284" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:06.098640" elapsed="0.000671"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:06.099530" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:06.100837" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:06.417669" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:03 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:06.100495" elapsed="0.317351"/>
</kw>
<msg time="2026-04-19T03:27:06.417939" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:06.100131" elapsed="0.317934"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:06.097768" elapsed="0.320612"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:06.419944" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:06.443017" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:06.443584" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:06.443939" 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-19T03:27:06.419530" elapsed="0.024677"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:06.446618" elapsed="0.000947"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:06.449969" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:06.448919" 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-19T03:27:06.451354" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:06.450636" elapsed="0.000907"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:06.450507" elapsed="0.001170"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:06.452677" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T03:27:06.452178" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:06.451921" elapsed="0.001168"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:06.453286" elapsed="0.000089"/>
</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-19T03:27:06.459428" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:06.459969" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:06.460383" 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-19T03:27:06.456134" elapsed="0.004459"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:06.088364" elapsed="0.372449"/>
</kw>
<msg time="2026-04-19T03:27:06.461135" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:06.087606" elapsed="0.373585"/>
</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-19T03:27:06.086390" elapsed="0.374883"/>
</kw>
<msg time="2026-04-19T03:27:06.461314" 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-19T03:27:06.085224" elapsed="0.376136"/>
</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-19T03:27:06.464414" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:27:06.464886" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:06.465197" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:06.461645" elapsed="0.003700"/>
</kw>
<msg time="2026-04-19T03:27:06.465436" level="INFO">${output} = 1</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-19T03:27:06.083308" elapsed="0.382154"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:06.465884" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:06.465636" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:06.465971" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:06.466139" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:06.081190" elapsed="0.384975"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:06.466213" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:06.466357" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:06.078925" elapsed="0.387480"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:06.466950" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:06.466563" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:06.077869" elapsed="0.389288">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:08.470870" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:08.470138" elapsed="0.000802"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:08.472957" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:08.472356" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:08.474813" 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-19T03:27:08.475216" 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-19T03:27:08.474483" elapsed="0.000795"/>
</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-19T03:27:08.481365" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:08.480879" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:08.480604" elapsed="0.000900"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:08.482961" 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-19T03:27:08.483223" 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-19T03:27:08.482518" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:08.485009" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:08.484477" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:08.487089" level="INFO">${conn_id} = 90</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:08.486200" elapsed="0.000985"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:08.489412" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:08.489491" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:08.489132" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:08.489727" elapsed="0.000542"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:08.491372" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:08.841427" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:08.490853" elapsed="0.350722"/>
</kw>
<msg time="2026-04-19T03:27:08.841713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:08.490491" elapsed="0.351336"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:08.488364" elapsed="0.353775"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:08.843640" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:08.866406" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:08.866632" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:08.866780" 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-19T03:27:08.843237" elapsed="0.023638"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:08.867869" elapsed="0.000431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:08.869324" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:08.868870" elapsed="0.000556"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:08.869863" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:08.869593" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:08.869533" elapsed="0.000462"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:08.870369" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:27:08.870166" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:08.870111" elapsed="0.000415"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:08.870606" 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-19T03:27:08.876971" 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-19T03:27:08.877600" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:08.877990" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:08.871903" elapsed="0.006313"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:08.479094" elapsed="0.399340"/>
</kw>
<msg time="2026-04-19T03:27:08.878739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:08.478110" elapsed="0.400686"/>
</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-19T03:27:08.476817" elapsed="0.402059"/>
</kw>
<msg time="2026-04-19T03:27:08.878916" 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-19T03:27:08.475637" elapsed="0.403325"/>
</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-19T03:27:08.882072" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:27:08.882545" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:08.882840" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:08.879267" elapsed="0.003720"/>
</kw>
<msg time="2026-04-19T03:27:08.883091" level="INFO">${output} = 1</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-19T03:27:08.473528" elapsed="0.409588"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:08.883538" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:08.883294" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:08.883624" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:27:08.883772" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:08.471423" elapsed="0.412373"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:08.883841" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:27:08.883980" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:08.469279" elapsed="0.414725"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:08.884561" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:08.884174" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:08.468206" elapsed="0.416537">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:10.888409" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:10.887618" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:10.890288" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:10.889881" elapsed="0.000446"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:10.891486" 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-19T03:27:10.891631" 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-19T03:27:10.891265" elapsed="0.000404"/>
</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-19T03:27:10.897076" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:10.896307" elapsed="0.000994"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:10.896230" elapsed="0.001157"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:10.899701" 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-19T03:27:10.900071" 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-19T03:27:10.898772" elapsed="0.001442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:10.902207" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:10.901617" elapsed="0.000700"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:10.904575" 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-19T03:27:10.903660" elapsed="0.001015"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:10.906965" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:10.907175" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:10.906683" elapsed="0.000519"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:10.907413" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:10.908692" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:11.219693" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:08 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:10.908366" elapsed="0.311521"/>
</kw>
<msg time="2026-04-19T03:27:11.219997" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:10.907971" elapsed="0.312176"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:10.905902" elapsed="0.314632"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:11.222185" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:11.245301" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:11.245866" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:11.246291" 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-19T03:27:11.221759" elapsed="0.024768"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:11.249262" elapsed="0.000883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:11.251610" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:11.250943" elapsed="0.000818"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:11.252352" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:11.251993" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:11.251911" elapsed="0.000629"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:11.253074" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T03:27:11.252749" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:11.252673" elapsed="0.000668"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:11.253461" elapsed="0.000055"/>
</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-19T03:27:11.260594" elapsed="0.000525"/>
</kw>
<kw name="Open 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-19T03:27:11.261430" elapsed="0.000243"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:11.262122" elapsed="0.000162"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:11.255532" elapsed="0.006903"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:10.894396" elapsed="0.368356"/>
</kw>
<msg time="2026-04-19T03:27:11.263540" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:10.893419" elapsed="0.370211"/>
</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-19T03:27:10.892636" elapsed="0.371112"/>
</kw>
<msg time="2026-04-19T03:27:11.263806" 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-19T03:27:10.891892" elapsed="0.371980"/>
</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-19T03:27:11.268215" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:11.268911" elapsed="0.000289"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:11.269416" elapsed="0.000138"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:11.264451" elapsed="0.005175"/>
</kw>
<msg time="2026-04-19T03:27:11.269749" level="INFO">${output} = 1</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-19T03:27:10.890658" elapsed="0.379116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:11.270235" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:11.269967" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:11.270323" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:11.270475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:10.888938" elapsed="0.381563"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:11.270547" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:11.270691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:10.886713" elapsed="0.384007"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:11.271382" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:11.270905" elapsed="0.000552">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:10.885625" elapsed="0.385943">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:13.275230" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:13.274451" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:13.277394" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:13.276705" elapsed="0.000750"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:13.278722" 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-19T03:27:13.278867" 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-19T03:27:13.278485" elapsed="0.000419"/>
</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-19T03:27:13.284160" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:13.283508" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:13.283431" elapsed="0.000923"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:13.286682" 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-19T03:27:13.287021" 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-19T03:27:13.285722" elapsed="0.001459"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:13.289340" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:13.288529" elapsed="0.000963"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:13.291404" level="INFO">${conn_id} = 96</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:13.290691" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:13.293763" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:13.293842" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:13.293485" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:13.294122" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:13.295412" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:13.651555" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:13.295083" elapsed="0.356632"/>
</kw>
<msg time="2026-04-19T03:27:13.651805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:13.294677" elapsed="0.357223"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:13.292688" elapsed="0.359536"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:13.653778" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:13.677077" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:13.677583" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:13.677913" 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-19T03:27:13.653371" elapsed="0.024794"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:13.680346" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:13.683584" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:13.682562" elapsed="0.001247"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:13.684725" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:13.684200" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:13.684073" elapsed="0.001049"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:13.685909" elapsed="0.000202"/>
</return>
<status status="PASS" start="2026-04-19T03:27:13.685459" elapsed="0.000903"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:13.685351" elapsed="0.001140"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:13.686668" elapsed="0.000085"/>
</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-19T03:27:13.693434" 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-19T03:27:13.693981" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:13.694358" 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-19T03:27:13.689878" elapsed="0.004690"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:13.281581" elapsed="0.413223"/>
</kw>
<msg time="2026-04-19T03:27:13.695231" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:13.280618" elapsed="0.414673"/>
</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-19T03:27:13.279862" elapsed="0.415512"/>
</kw>
<msg time="2026-04-19T03:27:13.695414" 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-19T03:27:13.279148" elapsed="0.416312"/>
</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-19T03:27:13.698495" 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-19T03:27:13.698979" elapsed="0.000207"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:13.699338" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:13.695817" elapsed="0.003669"/>
</kw>
<msg time="2026-04-19T03:27:13.699576" level="INFO">${output} = 1</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-19T03:27:13.277887" elapsed="0.421714"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:13.700041" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:13.699778" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:13.700132" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:13.700286" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:13.275760" elapsed="0.424551"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:13.700359" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:27:13.700504" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:13.273590" elapsed="0.426938"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:13.701136" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:13.700685" elapsed="0.000526">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:13.272479" elapsed="0.428845">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:15.704910" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:15.704123" elapsed="0.000858"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:15.707025" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:15.706420" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:15.708909" 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-19T03:27:15.709012" 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-19T03:27:15.708582" elapsed="0.000477"/>
</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-19T03:27:15.712832" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:15.712355" elapsed="0.000555"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:15.712297" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:15.714651" 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-19T03:27:15.714895" 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-19T03:27:15.713950" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:15.716524" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:15.715958" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:15.718322" level="INFO">${conn_id} = 99</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:15.717611" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:15.720765" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:15.720844" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:15.720481" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:15.721093" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:15.722415" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:16.046419" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:15.722089" elapsed="0.324463"/>
</kw>
<msg time="2026-04-19T03:27:16.046631" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:15.721713" elapsed="0.325001"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:15.719607" elapsed="0.327373"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:16.048474" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:16.072125" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:16.072650" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:16.072987" 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-19T03:27:16.048063" elapsed="0.025185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:16.075450" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:16.078649" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:16.077657" elapsed="0.001226"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:16.079878" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:16.079379" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:16.079253" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:16.080971" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T03:27:16.080578" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:16.080460" elapsed="0.000687"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:16.081226" elapsed="0.000097"/>
</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-19T03:27:16.086104" 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-19T03:27:16.086650" elapsed="0.000203"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:16.087196" 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-19T03:27:16.082634" elapsed="0.004779"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:15.710973" elapsed="0.376663"/>
</kw>
<msg time="2026-04-19T03:27:16.087940" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:15.710286" elapsed="0.377718"/>
</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-19T03:27:15.709735" elapsed="0.378367"/>
</kw>
<msg time="2026-04-19T03:27:16.088144" 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-19T03:27:15.709220" elapsed="0.378970"/>
</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-19T03:27:16.091227" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:27:16.091705" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:16.092003" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:16.088503" elapsed="0.003667"/>
</kw>
<msg time="2026-04-19T03:27:16.092327" level="INFO">${output} = 1</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-19T03:27:15.707600" elapsed="0.384754"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:16.092832" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:16.092577" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:16.092922" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:16.093095" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:15.705473" elapsed="0.387649"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:16.093171" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:27:16.093320" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:15.703272" elapsed="0.390073"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:16.093898" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:16.093503" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:15.702186" elapsed="0.391913">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:18.097599" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:18.096835" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:18.099763" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:18.099141" elapsed="0.000682"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:18.101449" 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-19T03:27:18.101591" 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-19T03:27:18.101221" elapsed="0.000407"/>
</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-19T03:27:18.107194" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:18.106235" elapsed="0.001072"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:18.106159" elapsed="0.001231"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:18.109396" 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-19T03:27:18.109731" 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-19T03:27:18.108766" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:18.111977" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:18.111222" elapsed="0.000927"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:18.114343" level="INFO">${conn_id} = 102</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:18.113612" elapsed="0.000829"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:18.116737" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:18.116815" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:18.116453" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:18.117237" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:18.118501" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:18.437854" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:15 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:18.118175" elapsed="0.319958"/>
</kw>
<msg time="2026-04-19T03:27:18.438225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:18.117790" elapsed="0.320529"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:18.115639" elapsed="0.322968"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:18.440143" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:18.463473" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:18.463964" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:18.464364" 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-19T03:27:18.439717" elapsed="0.024859"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:18.466784" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:18.469965" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:18.468953" elapsed="0.001364"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:18.471206" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:18.470662" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:18.470541" elapsed="0.000957"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:18.472361" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:27:18.471811" elapsed="0.000785"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:18.471705" elapsed="0.001021"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:18.472899" elapsed="0.000078"/>
</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-19T03:27:18.479710" 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-19T03:27:18.480511" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:18.481007" elapsed="0.000184"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:18.474939" elapsed="0.006404"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:18.104330" elapsed="0.377321"/>
</kw>
<msg time="2026-04-19T03:27:18.482207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:18.103349" elapsed="0.378942"/>
</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-19T03:27:18.102577" elapsed="0.379830"/>
</kw>
<msg time="2026-04-19T03:27:18.482463" 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-19T03:27:18.101849" elapsed="0.380677"/>
</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-19T03:27:18.486262" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:27:18.486738" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:18.487047" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:18.482933" elapsed="0.004264"/>
</kw>
<msg time="2026-04-19T03:27:18.487288" level="INFO">${output} = 1</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-19T03:27:18.100394" elapsed="0.386919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:18.487747" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:18.487499" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:18.487834" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:18.487989" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:18.098158" elapsed="0.389857"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:18.488078" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:27:18.488245" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:18.095973" elapsed="0.392299"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:18.488882" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:18.488484" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:18.094904" elapsed="0.394193">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:20.492640" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:20.491823" elapsed="0.000888"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:20.494746" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:20.494143" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:20.496605" 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-19T03:27:20.496836" 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-19T03:27:20.496277" elapsed="0.000618"/>
</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-19T03:27:20.505564" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:20.504806" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:20.504246" elapsed="0.001511"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:20.507749" 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-19T03:27:20.508110" 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-19T03:27:20.507144" elapsed="0.001137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:20.510015" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:20.509474" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:20.512005" level="INFO">${conn_id} = 105</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:20.511311" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:20.514365" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:20.514442" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:20.514077" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:20.514675" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:20.515938" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:20.823127" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:20.515616" elapsed="0.307643"/>
</kw>
<msg time="2026-04-19T03:27:20.823340" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:20.515257" elapsed="0.308167"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:20.513315" elapsed="0.310378"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:20.825232" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:20.848250" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:20.848744" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:20.849115" 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-19T03:27:20.824804" elapsed="0.024525"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:20.851500" elapsed="0.000919"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:20.854654" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:20.853653" elapsed="0.001225"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:20.855757" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:20.855260" elapsed="0.000665"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:20.855135" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:20.856921" elapsed="0.000146"/>
</return>
<status status="PASS" start="2026-04-19T03:27:20.856468" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:20.856361" elapsed="0.000953"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:20.857491" elapsed="0.000086"/>
</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-19T03:27:20.864221" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:27:20.864766" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:20.865144" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:20.860597" elapsed="0.004758"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:20.501269" elapsed="0.364310"/>
</kw>
<msg time="2026-04-19T03:27:20.865889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:20.499672" elapsed="0.366275"/>
</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-19T03:27:20.498448" elapsed="0.367642"/>
</kw>
<msg time="2026-04-19T03:27:20.866135" 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-19T03:27:20.497280" elapsed="0.368902"/>
</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-19T03:27:20.869146" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:27:20.869621" elapsed="0.000214"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:20.869986" elapsed="0.000248"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:20.866472" elapsed="0.003815"/>
</kw>
<msg time="2026-04-19T03:27:20.870380" level="INFO">${output} = 1</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-19T03:27:20.495319" elapsed="0.375087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:20.870863" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:20.870586" elapsed="0.000322"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:20.870952" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:27:20.871127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:20.493201" elapsed="0.377952"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:20.871200" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:20.871354" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:20.490965" elapsed="0.380414"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:20.871926" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:20.871535" elapsed="0.000463">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:20.489877" elapsed="0.382265">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:22.876494" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:22.875463" elapsed="0.001124"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:22.879603" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:22.878753" elapsed="0.000934"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:22.882208" 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-19T03:27:22.882499" 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-19T03:27:22.881719" elapsed="0.000858"/>
</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-19T03:27:22.889432" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:22.888727" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:22.888327" elapsed="0.001309"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:22.891552" 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-19T03:27:22.891896" 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-19T03:27:22.890908" elapsed="0.001167"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:22.894108" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:22.893349" elapsed="0.000909"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:22.896414" level="INFO">${conn_id} = 108</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:22.895459" elapsed="0.001055"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:22.898927" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:22.899007" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:22.898590" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:22.899269" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:22.900809" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:23.262825" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:20 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:22.900467" elapsed="0.362514"/>
</kw>
<msg time="2026-04-19T03:27:23.263086" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:22.899861" elapsed="0.363318"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:22.897785" elapsed="0.365834"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:23.265160" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:23.288658" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:23.289201" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:23.289527" 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-19T03:27:23.264742" elapsed="0.024995"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:23.291912" elapsed="0.000925"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:23.295104" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:23.294131" elapsed="0.001203"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:23.296396" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:23.295682" elapsed="0.000894"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:23.295559" elapsed="0.001140"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:23.297519" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:27:23.297020" elapsed="0.000725"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:23.296914" elapsed="0.000959"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:23.298202" elapsed="0.000090"/>
</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-19T03:27:23.306535" elapsed="0.000366"/>
</kw>
<kw name="Open 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-19T03:27:23.307136" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:23.307507" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:23.301191" elapsed="0.006525"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:22.886511" elapsed="0.421429"/>
</kw>
<msg time="2026-04-19T03:27:23.308314" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:22.885607" elapsed="0.422772"/>
</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-19T03:27:22.884660" elapsed="0.423801"/>
</kw>
<msg time="2026-04-19T03:27:23.308501" 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-19T03:27:22.883077" elapsed="0.425470"/>
</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-19T03:27:23.311769" 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-19T03:27:23.312301" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:23.312599" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:23.308854" elapsed="0.003893"/>
</kw>
<msg time="2026-04-19T03:27:23.312839" level="INFO">${output} = 1</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-19T03:27:22.880414" elapsed="0.432450"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:23.313378" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:23.313086" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:23.313470" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:27:23.313628" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:22.877476" elapsed="0.436176"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:23.313698" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:23.313840" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:22.874416" elapsed="0.439449"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:23.314441" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:23.314017" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:22.873145" elapsed="0.441482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:25.318099" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:25.317339" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:25.320267" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:25.319576" elapsed="0.000753"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:25.321894" 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-19T03:27:25.322171" 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-19T03:27:25.321663" elapsed="0.000547"/>
</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-19T03:27:25.327982" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:25.327349" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:25.327272" elapsed="0.001016"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:25.330595" 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-19T03:27:25.330947" 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-19T03:27:25.329652" elapsed="0.001464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:25.333386" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:25.332656" elapsed="0.000841"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:25.335242" level="INFO">${conn_id} = 111</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:25.334527" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:25.337646" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:25.337724" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:25.337358" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:25.337963" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:25.339376" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:25.672969" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:25.339045" elapsed="0.334093"/>
</kw>
<msg time="2026-04-19T03:27:25.673223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:25.338663" elapsed="0.334655"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:25.336548" elapsed="0.337057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:25.675152" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:25.698172" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:25.698711" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:25.699082" 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-19T03:27:25.674726" elapsed="0.024588"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:25.701576" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:25.704765" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:25.703729" elapsed="0.001269"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:25.705908" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:25.705385" elapsed="0.000721"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:25.705262" elapsed="0.000971"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:25.707007" elapsed="0.000149"/>
</return>
<status status="PASS" start="2026-04-19T03:27:25.706556" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:25.706447" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:25.707573" elapsed="0.000081"/>
</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-19T03:27:25.713294" 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-19T03:27:25.713908" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:25.714285" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:25.709901" elapsed="0.004593"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:25.325447" elapsed="0.389269"/>
</kw>
<msg time="2026-04-19T03:27:25.715020" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:25.324279" elapsed="0.390813"/>
</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-19T03:27:25.323219" elapsed="0.391958"/>
</kw>
<msg time="2026-04-19T03:27:25.715220" 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-19T03:27:25.322433" elapsed="0.392833"/>
</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-19T03:27:25.718298" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T03:27:25.718784" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:25.719099" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:25.715559" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T03:27:25.719350" level="INFO">${output} = 1</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-19T03:27:25.320810" elapsed="0.398565"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:25.719806" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:25.719557" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:25.719895" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:25.720158" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:25.318635" elapsed="0.401553"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:25.720237" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:27:25.720384" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:25.316499" elapsed="0.403910"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:25.720965" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:25.720569" elapsed="0.000484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:25.315432" elapsed="0.405732">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:27.724654" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:27.723862" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:27.726762" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:27.726156" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:27.728702" 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-19T03:27:27.728928" 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-19T03:27:27.728370" elapsed="0.000618"/>
</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-19T03:27:27.734440" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:27.733789" elapsed="0.000877"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:27.733712" elapsed="0.001041"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:27.737080" 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-19T03:27:27.737472" 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-19T03:27:27.736143" elapsed="0.001478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:27.739771" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:27.738970" elapsed="0.000952"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:27.742126" level="INFO">${conn_id} = 114</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:27.741399" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:27.744573" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:27.744650" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:27.744261" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:27.744886" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:27.746160" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:28.065724" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:27.745820" elapsed="0.320035"/>
</kw>
<msg time="2026-04-19T03:27:28.065931" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:27.745457" elapsed="0.320560"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:27.743488" elapsed="0.322809"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:28.067743" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:28.090957" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:28.091491" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:28.091821" 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-19T03:27:28.067365" elapsed="0.024706"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:28.094329" elapsed="0.000884"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:28.097410" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:28.096463" elapsed="0.001172"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:28.098516" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:28.097980" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:28.097855" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:28.099585" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T03:27:28.099146" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:28.099010" elapsed="0.000918"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:28.100296" elapsed="0.000096"/>
</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-19T03:27:28.105928" 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-19T03:27:28.106631" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:28.106987" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:28.102167" elapsed="0.005047"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:27.731847" elapsed="0.375592"/>
</kw>
<msg time="2026-04-19T03:27:28.107820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:27.730896" elapsed="0.376983"/>
</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-19T03:27:27.730151" elapsed="0.377811"/>
</kw>
<msg time="2026-04-19T03:27:28.108003" 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-19T03:27:27.729395" elapsed="0.378719"/>
</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-19T03:27:28.111513" 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-19T03:27:28.112004" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:28.112352" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:28.108679" elapsed="0.003826"/>
</kw>
<msg time="2026-04-19T03:27:28.112596" level="INFO">${output} = 1</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-19T03:27:27.727357" elapsed="0.385265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:28.113067" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:28.112801" elapsed="0.000312"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:28.113164" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:28.113320" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:27.725212" elapsed="0.388134"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:28.113394" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:27:28.113539" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:27.723010" elapsed="0.390554"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:28.114126" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:28.113720" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:27.721943" elapsed="0.392371">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:30.117798" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:30.117060" elapsed="0.000809"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:30.119902" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:30.119299" elapsed="0.000663"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:30.121775" 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-19T03:27:30.122007" 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-19T03:27:30.121445" elapsed="0.000655"/>
</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-19T03:27:30.127779" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:30.127309" elapsed="0.000546"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:30.127253" elapsed="0.000662"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:30.129606" 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-19T03:27:30.129849" 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-19T03:27:30.128904" elapsed="0.001045"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:30.131481" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:30.130915" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:30.133359" 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-19T03:27:30.132646" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:30.135774" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:30.135852" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:30.135495" elapsed="0.000381"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:30.136101" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:30.137394" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:30.446673" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:30.137069" elapsed="0.309776"/>
</kw>
<msg time="2026-04-19T03:27:30.446932" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:30.136692" elapsed="0.310353"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:30.134645" elapsed="0.312713"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:30.448884" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:30.461348" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:30.461660" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:30.461872" 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-19T03:27:30.448474" elapsed="0.013530"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:30.463402" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:30.465403" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:30.464774" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:30.466113" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:30.465771" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:30.465690" elapsed="0.000608"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:30.466799" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:27:30.466514" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:30.466443" elapsed="0.000576"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:30.467181" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:30.473687" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T03:27:30.474453" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:30.474941" elapsed="0.000312"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:30.468995" elapsed="0.006407"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:30.125909" elapsed="0.349797"/>
</kw>
<msg time="2026-04-19T03:27:30.476144" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:30.124890" elapsed="0.351334"/>
</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-19T03:27:30.123617" elapsed="0.352721"/>
</kw>
<msg time="2026-04-19T03:27:30.476434" 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-19T03:27:30.122454" elapsed="0.354050"/>
</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-19T03:27:30.479873" 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-19T03:27:30.480364" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:30.480673" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:30.477010" elapsed="0.003811"/>
</kw>
<msg time="2026-04-19T03:27:30.480911" level="INFO">${output} = 1</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-19T03:27:30.120496" elapsed="0.360440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:30.481375" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:30.481126" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:30.481462" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:30.481616" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:30.118359" elapsed="0.363282"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:30.481688" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:30.481834" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:30.116200" elapsed="0.365659"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:30.482428" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:30.482016" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:30.115167" elapsed="0.367446">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:32.486323" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:32.485508" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:32.488659" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:32.487865" elapsed="0.000862"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:32.490216" 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-19T03:27:32.490365" 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-19T03:27:32.489958" elapsed="0.000446"/>
</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-19T03:27:32.496284" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:32.495277" elapsed="0.001127"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:32.495186" elapsed="0.001303"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:32.498613" 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-19T03:27:32.498861" 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-19T03:27:32.497913" elapsed="0.001049"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:32.500665" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:32.499974" elapsed="0.000805"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:32.502512" level="INFO">${conn_id} = 120</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:32.501782" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:32.505063" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:32.505153" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:32.504753" 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-19T03:27:32.505398" elapsed="0.000418"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:32.506779" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:32.826570" 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 Sun Apr 19 03:26:32 UTC 2026

  System load:  0.08               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:32.506444" elapsed="0.320290"/>
</kw>
<msg time="2026-04-19T03:27:32.826825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:32.506058" elapsed="0.320867"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:32.503834" elapsed="0.323415"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:32.828802" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:32.851390" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:32.851887" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:32.852268" 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-19T03:27:32.828368" elapsed="0.024111"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:32.854756" elapsed="0.000866"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:32.857915" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:32.856913" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:32.859018" elapsed="0.000092"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:32.858518" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:32.858397" elapsed="0.000935"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:32.860265" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T03:27:32.859649" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:32.859546" elapsed="0.001114"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:32.860907" elapsed="0.000115"/>
</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-19T03:27:32.866146" 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-19T03:27:32.866686" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:32.867054" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:32.862732" elapsed="0.004532"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:32.493264" elapsed="0.374225"/>
</kw>
<msg time="2026-04-19T03:27:32.867802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:32.492211" elapsed="0.375650"/>
</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-19T03:27:32.491408" elapsed="0.376536"/>
</kw>
<msg time="2026-04-19T03:27:32.867986" 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-19T03:27:32.490631" elapsed="0.377415"/>
</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-19T03:27:32.871081" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:27:32.871561" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:32.871855" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:32.868343" elapsed="0.003660"/>
</kw>
<msg time="2026-04-19T03:27:32.872187" level="INFO">${output} = 1</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-19T03:27:32.489316" elapsed="0.382898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:32.872685" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:32.872396" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:32.872775" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:32.872930" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:32.486871" elapsed="0.386085"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:32.873003" elapsed="0.000122"/>
</return>
<msg time="2026-04-19T03:27:32.873250" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:32.484607" elapsed="0.388669"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:32.873827" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:32.873434" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:32.483462" elapsed="0.390554">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:34.876615" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:34.876051" elapsed="0.000640"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:34.878851" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:34.878214" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:34.880814" 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-19T03:27:34.881090" 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-19T03:27:34.880408" elapsed="0.000744"/>
</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-19T03:27:34.887120" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:34.886433" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:34.886017" elapsed="0.001305"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:34.889440" 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-19T03:27:34.889790" 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-19T03:27:34.888720" elapsed="0.001225"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:34.892299" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:34.891444" elapsed="0.001015"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:34.894580" 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-19T03:27:34.893839" elapsed="0.000843"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:34.897168" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:34.897254" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:34.896707" elapsed="0.000572"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:34.897505" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:34.898815" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:35.539255" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:34.898490" elapsed="0.641043"/>
</kw>
<msg time="2026-04-19T03:27:35.539623" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:34.898122" elapsed="0.641597"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:34.895891" elapsed="0.644112"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:35.541583" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:35.564707" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:35.565273" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:35.565605" 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-19T03:27:35.541164" elapsed="0.024650"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:35.568069" elapsed="0.000895"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:35.571224" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:35.570250" elapsed="0.001199"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:35.572323" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:35.571797" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:35.571674" elapsed="0.000936"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:35.573455" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T03:27:35.572982" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:35.572869" elapsed="0.000784"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:35.573733" 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-19T03:27:35.578606" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:27:35.579166" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:35.579529" 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-19T03:27:35.575135" elapsed="0.004602"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:34.884087" elapsed="0.695872"/>
</kw>
<msg time="2026-04-19T03:27:35.580284" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:34.883083" elapsed="0.697261"/>
</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-19T03:27:34.882304" elapsed="0.698121"/>
</kw>
<msg time="2026-04-19T03:27:35.580466" 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-19T03:27:34.881517" elapsed="0.698995"/>
</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-19T03:27:35.583529" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:27:35.584004" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:35.584314" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:35.580802" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T03:27:35.584550" level="INFO">${output} = 1</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-19T03:27:34.879435" elapsed="0.705141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:35.585041" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:35.584752" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:35.585132" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:35.585285" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:34.877231" elapsed="0.708080"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:35.585357" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:27:35.585501" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:34.875474" elapsed="0.710052"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:35.586230" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:35.585737" elapsed="0.000571">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:34.874703" elapsed="0.711718">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:37.589925" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:37.589184" elapsed="0.000812"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:37.592058" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:37.591432" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:37.593905" 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-19T03:27:37.594169" 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-19T03:27:37.593578" elapsed="0.000652"/>
</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-19T03:27:37.600161" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:37.599671" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:37.599393" elapsed="0.000908"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:37.601740" 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-19T03:27:37.601980" 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-19T03:27:37.601304" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:37.603618" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:37.603079" elapsed="0.000647"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:37.605492" level="INFO">${conn_id} = 126</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:37.604709" elapsed="0.000899"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:37.608113" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:37.608190" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:37.607815" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:37.608421" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:37.609700" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:37.969781" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:37.609377" elapsed="0.360553"/>
</kw>
<msg time="2026-04-19T03:27:37.970015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:37.608969" elapsed="0.361156"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:37.606974" elapsed="0.363453"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:37.971914" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:37.994867" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:37.995389" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:37.995718" 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-19T03:27:37.971520" elapsed="0.024403"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:37.998164" elapsed="0.000837"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:38.001222" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:38.000263" elapsed="0.001182"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:38.002314" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:38.001792" elapsed="0.000686"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:38.001669" elapsed="0.000936"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:38.003395" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T03:27:38.002922" elapsed="0.000690"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:38.002815" elapsed="0.000929"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:38.003919" 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-19T03:27:38.011409" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:27:38.011956" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:38.012381" 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-19T03:27:38.006288" elapsed="0.006298"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:37.598067" elapsed="0.414742"/>
</kw>
<msg time="2026-04-19T03:27:38.013145" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:37.596967" elapsed="0.416235"/>
</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-19T03:27:37.595747" elapsed="0.417536"/>
</kw>
<msg time="2026-04-19T03:27:38.013323" 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-19T03:27:37.594581" elapsed="0.418788"/>
</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-19T03:27:38.016544" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:27:38.017015" elapsed="0.000188"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:38.017352" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:38.013665" elapsed="0.003835"/>
</kw>
<msg time="2026-04-19T03:27:38.017588" level="INFO">${output} = 1</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-19T03:27:37.592602" elapsed="0.425010"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:38.018044" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:38.017787" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:38.018133" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:27:38.018282" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:37.590485" elapsed="0.427821"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:38.018351" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:38.018491" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:37.588308" elapsed="0.430207"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:38.019071" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:38.018667" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:37.587243" elapsed="0.432012">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:40.022783" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:40.022022" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:40.025092" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:40.024458" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:40.026933" 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-19T03:27:40.027194" 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-19T03:27:40.026603" elapsed="0.000653"/>
</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-19T03:27:40.032850" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:40.032381" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:40.032323" elapsed="0.000666"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:40.034696" 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-19T03:27:40.034944" 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-19T03:27:40.034011" elapsed="0.001196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:40.036854" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:40.036313" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:40.038688" level="INFO">${conn_id} = 129</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:40.037978" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:40.041131" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:40.041210" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:40.040835" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:40.041455" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:40.042706" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:40.387253" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:40.042381" elapsed="0.345017"/>
</kw>
<msg time="2026-04-19T03:27:40.387480" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:40.042008" elapsed="0.345559"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:40.039992" elapsed="0.347853"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:40.389372" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:40.412319" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:40.412839" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:40.413226" 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-19T03:27:40.388933" elapsed="0.024565"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:40.415771" elapsed="0.000900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:40.418958" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:40.417947" elapsed="0.001334"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:40.420323" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:40.419633" elapsed="0.000864"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:40.419508" elapsed="0.001116"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:40.421490" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:27:40.420949" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:40.420839" elapsed="0.000955"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:40.421905" elapsed="0.000318"/>
</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-19T03:27:40.428944" elapsed="0.000501"/>
</kw>
<kw name="Open 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-19T03:27:40.429742" elapsed="0.000224"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:40.430277" 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-19T03:27:40.424267" elapsed="0.006308"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:40.030986" elapsed="0.399906"/>
</kw>
<msg time="2026-04-19T03:27:40.431461" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:40.030145" elapsed="0.401400"/>
</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-19T03:27:40.028991" elapsed="0.402668"/>
</kw>
<msg time="2026-04-19T03:27:40.431716" 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-19T03:27:40.027609" elapsed="0.404172"/>
</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-19T03:27:40.435391" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:27:40.435868" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:40.436182" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:40.432210" elapsed="0.004120"/>
</kw>
<msg time="2026-04-19T03:27:40.436422" level="INFO">${output} = 1</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-19T03:27:40.025653" elapsed="0.410795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:40.436882" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:40.436628" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:40.436970" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:40.437138" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:40.023501" elapsed="0.413663"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:40.437212" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:27:40.437366" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:40.021189" elapsed="0.416202"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:40.437943" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:40.437549" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:40.020125" elapsed="0.418031">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:42.441714" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:42.440827" elapsed="0.000986"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:42.443945" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:42.443339" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:42.445830" 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-19T03:27:42.446236" 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-19T03:27:42.445466" elapsed="0.000833"/>
</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-19T03:27:42.454820" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:42.453836" elapsed="0.001094"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:42.453711" elapsed="0.001334"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:42.457427" 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-19T03:27:42.457807" 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-19T03:27:42.456442" elapsed="0.001505"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:42.459711" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:42.459163" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:42.461890" level="INFO">${conn_id} = 132</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:42.460950" elapsed="0.001038"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:42.464249" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:42.464329" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:42.463933" 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-19T03:27:42.464569" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:42.466002" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:42.795522" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:42.465665" elapsed="0.329992"/>
</kw>
<msg time="2026-04-19T03:27:42.795739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:42.465272" elapsed="0.330552"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:42.463180" elapsed="0.332940"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:42.797605" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:42.820663" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:42.821212" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:42.821547" 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-19T03:27:42.797212" elapsed="0.024585"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:42.824131" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:42.827284" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:42.826510" elapsed="0.000927"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:42.828014" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:42.827671" elapsed="0.000478"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:42.827589" elapsed="0.000641"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:42.828737" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T03:27:42.828442" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:42.828370" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:42.829110" elapsed="0.000056"/>
</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-19T03:27:42.835678" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:27:42.836297" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:42.836659" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:42.831119" elapsed="0.005751"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:42.450642" elapsed="0.386470"/>
</kw>
<msg time="2026-04-19T03:27:42.837425" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:42.449096" elapsed="0.388386"/>
</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-19T03:27:42.447832" elapsed="0.389732"/>
</kw>
<msg time="2026-04-19T03:27:42.837606" 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-19T03:27:42.446657" elapsed="0.390996"/>
</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-19T03:27:42.840906" elapsed="0.000389"/>
</kw>
<kw name="Open 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-19T03:27:42.841465" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:42.841779" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:42.837965" elapsed="0.003967"/>
</kw>
<msg time="2026-04-19T03:27:42.842025" level="INFO">${output} = 1</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-19T03:27:42.444519" elapsed="0.397564"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:42.842524" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:42.842271" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:42.842619" elapsed="0.000040"/>
</return>
<msg time="2026-04-19T03:27:42.842815" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:42.442341" elapsed="0.400499"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:42.842888" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:27:42.843126" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:42.439978" elapsed="0.403176"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:42.843716" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:42.843317" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:42.438914" elapsed="0.404988">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:44.847711" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:44.846910" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:44.849831" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:44.849221" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:44.851751" 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-19T03:27:44.851986" 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-19T03:27:44.851421" elapsed="0.000658"/>
</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-19T03:27:44.858448" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:44.857787" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:44.857711" elapsed="0.001023"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:44.861064" 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-19T03:27:44.861408" 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-19T03:27:44.860110" elapsed="0.001438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:44.863749" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:44.862902" elapsed="0.001000"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:44.866382" level="INFO">${conn_id} = 135</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:44.865355" elapsed="0.001166"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:44.868915" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:44.868995" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:44.868633" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:44.869374" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:44.870679" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:45.205423" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:44.870349" elapsed="0.335219"/>
</kw>
<msg time="2026-04-19T03:27:45.205651" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:44.869932" elapsed="0.335806"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:44.867854" elapsed="0.338162"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:45.207850" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:45.230861" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:45.231412" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:45.231747" 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-19T03:27:45.207442" elapsed="0.024514"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:45.234279" elapsed="0.000791"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:45.236499" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:45.235869" 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-19T03:27:45.237254" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:45.236890" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:45.236802" elapsed="0.000642"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:45.237951" elapsed="0.000108"/>
</return>
<status status="PASS" start="2026-04-19T03:27:45.237664" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:45.237596" elapsed="0.000617"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:45.238324" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:45.245124" elapsed="0.000455"/>
</kw>
<kw name="Open 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-19T03:27:45.245871" elapsed="0.000272"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:45.246416" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:45.240217" elapsed="0.006488"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:44.855859" elapsed="0.391134"/>
</kw>
<msg time="2026-04-19T03:27:45.247399" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:44.854897" elapsed="0.392564"/>
</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-19T03:27:44.853599" elapsed="0.393945"/>
</kw>
<msg time="2026-04-19T03:27:45.247585" 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-19T03:27:44.852433" elapsed="0.395198"/>
</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-19T03:27:45.250714" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:27:45.251215" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:45.251512" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:45.247922" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T03:27:45.251751" level="INFO">${output} = 1</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-19T03:27:44.850437" elapsed="0.401339"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:45.252226" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:45.251954" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:45.252319" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:27:45.252474" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:44.848274" elapsed="0.404226"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:45.252547" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:27:45.252691" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:44.845914" elapsed="0.406802"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:45.253290" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:45.252873" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:44.844711" elapsed="0.408769">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:47.257063" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:47.256303" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:47.259120" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:47.258576" elapsed="0.000582"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:47.260283" 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-19T03:27:47.260430" 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-19T03:27:47.260060" elapsed="0.000407"/>
</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-19T03:27:47.266077" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:47.265105" elapsed="0.001085"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:47.265007" elapsed="0.001266"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:47.268267" 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-19T03:27:47.268600" 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-19T03:27:47.267635" elapsed="0.001103"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:47.270885" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:47.270100" elapsed="0.000907"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:47.272803" level="INFO">${conn_id} = 138</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:47.272114" elapsed="0.000786"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:47.275178" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:47.275257" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:47.274875" 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-19T03:27:47.275496" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:47.276877" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:47.599606" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:47.276552" elapsed="0.323195"/>
</kw>
<msg time="2026-04-19T03:27:47.599832" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:47.276185" elapsed="0.323734"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:47.274099" elapsed="0.326267"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:47.601829" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:47.625069" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:47.625566" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:47.626134" 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-19T03:27:47.601445" elapsed="0.024908"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:47.628598" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:47.631782" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:47.630795" elapsed="0.001218"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:47.633012" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:47.632497" elapsed="0.000720"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:47.632372" elapsed="0.000968"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:47.634154" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:27:47.633667" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:47.633558" elapsed="0.001010"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:47.634753" 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-19T03:27:47.641821" 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-19T03:27:47.642628" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:47.643152" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:47.636962" elapsed="0.006483"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:47.263198" elapsed="0.380556"/>
</kw>
<msg time="2026-04-19T03:27:47.644200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:47.262189" elapsed="0.382091"/>
</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-19T03:27:47.261425" elapsed="0.382970"/>
</kw>
<msg time="2026-04-19T03:27:47.644454" 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-19T03:27:47.260691" elapsed="0.383828"/>
</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-19T03:27:47.648318" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:27:47.648798" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:47.649116" 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-19T03:27:47.645002" elapsed="0.004268"/>
</kw>
<msg time="2026-04-19T03:27:47.649363" level="INFO">${output} = 1</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-19T03:27:47.259460" elapsed="0.389929"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:47.649821" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:47.649569" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:47.649911" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:47.650082" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:47.257589" elapsed="0.392520"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:47.650158" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:47.650306" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:47.255457" elapsed="0.394874"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:47.650894" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:47.650499" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:47.254353" elapsed="0.396798">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:49.654773" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:49.653986" elapsed="0.000889"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:49.656912" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:49.656310" elapsed="0.000662"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:49.658771" 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-19T03:27:49.659020" 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-19T03:27:49.658428" elapsed="0.000682"/>
</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-19T03:27:49.665956" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:49.665477" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:49.665166" elapsed="0.000946"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:49.667567" 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-19T03:27:49.667809" 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-19T03:27:49.667125" elapsed="0.000784"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:49.669505" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:49.668920" elapsed="0.000704"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:49.671469" 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-19T03:27:49.670711" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:49.675189" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:49.675457" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:49.674444" elapsed="0.001095"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:49.676214" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:49.677573" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:49.999383" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:49.677242" elapsed="0.322279"/>
</kw>
<msg time="2026-04-19T03:27:49.999601" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:49.676853" elapsed="0.322831"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:49.672826" elapsed="0.327141"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:50.001450" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:50.024382" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:50.024876" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:50.025262" 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-19T03:27:50.001063" elapsed="0.024412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:50.027671" elapsed="0.000874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:50.030797" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:50.029768" elapsed="0.001309"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:50.031927" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:50.031428" elapsed="0.000698"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:50.031308" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:50.033019" elapsed="0.000151"/>
</return>
<status status="PASS" start="2026-04-19T03:27:50.032573" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:50.032464" elapsed="0.000943"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:50.033585" elapsed="0.000082"/>
</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-19T03:27:50.039854" 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-19T03:27:50.040422" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:50.040779" 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-19T03:27:50.036449" elapsed="0.004538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:49.663552" elapsed="0.377722"/>
</kw>
<msg time="2026-04-19T03:27:50.041587" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:49.661863" elapsed="0.379781"/>
</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-19T03:27:49.660639" elapsed="0.381087"/>
</kw>
<msg time="2026-04-19T03:27:50.041767" 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-19T03:27:49.659466" elapsed="0.382348"/>
</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-19T03:27:50.044847" 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-19T03:27:50.045339" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:50.045633" 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-19T03:27:50.042124" elapsed="0.003657"/>
</kw>
<msg time="2026-04-19T03:27:50.045929" level="INFO">${output} = 1</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-19T03:27:49.657484" elapsed="0.388471"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:50.046397" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:50.046147" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:50.046487" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:50.046639" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:49.655369" elapsed="0.391295"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:50.046711" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:27:50.046857" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:49.653158" elapsed="0.393724"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:50.047476" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:50.047080" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:49.651975" elapsed="0.395682">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:52.051098" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:52.050332" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:52.053271" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:52.052597" elapsed="0.000736"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:52.055122" 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-19T03:27:52.055401" 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-19T03:27:52.054765" elapsed="0.000701"/>
</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-19T03:27:52.061350" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:52.060684" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:52.060312" elapsed="0.001233"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:52.063650" 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-19T03:27:52.063991" 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-19T03:27:52.062919" elapsed="0.001268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:52.066354" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:52.065552" elapsed="0.000969"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:52.068762" level="INFO">${conn_id} = 144</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:52.067934" elapsed="0.000926"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:52.071162" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:52.071241" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:52.070854" 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-19T03:27:52.071492" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:52.072909" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:52.409317" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:49 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:52.072587" elapsed="0.337231"/>
</kw>
<msg time="2026-04-19T03:27:52.409907" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:52.072223" elapsed="0.337773"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:52.070086" elapsed="0.340205"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:52.411793" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:52.435436" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:52.435941" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:52.436325" 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-19T03:27:52.411389" elapsed="0.025146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:52.438726" elapsed="0.000920"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:52.441889" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:52.440891" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:52.443005" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:52.442504" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:52.442379" elapsed="0.000993"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:52.444144" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:27:52.443699" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:52.443594" elapsed="0.000775"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:52.444478" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:52.453354" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T03:27:52.454154" elapsed="0.000232"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:52.454656" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:52.446428" elapsed="0.008517"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:52.058443" elapsed="0.396835"/>
</kw>
<msg time="2026-04-19T03:27:52.455736" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:52.057496" elapsed="0.398321"/>
</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-19T03:27:52.056704" elapsed="0.399225"/>
</kw>
<msg time="2026-04-19T03:27:52.455986" 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-19T03:27:52.055826" elapsed="0.400243"/>
</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-19T03:27:52.459267" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:27:52.459770" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:52.460092" 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-19T03:27:52.456478" elapsed="0.003767"/>
</kw>
<msg time="2026-04-19T03:27:52.460338" level="INFO">${output} = 1</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-19T03:27:52.053814" elapsed="0.406549"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:52.460811" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:52.460560" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:52.460901" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:27:52.461074" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:52.051649" elapsed="0.409454"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:52.461151" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:52.461293" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:52.049495" elapsed="0.411823"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:52.461930" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:52.461538" elapsed="0.000465">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:52.048460" elapsed="0.413667">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:54.464676" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:54.464192" elapsed="0.000530"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:54.465985" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:54.465607" elapsed="0.000416"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:54.467154" 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-19T03:27:54.467298" 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-19T03:27:54.466920" elapsed="0.000416"/>
</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-19T03:27:54.473557" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:54.472745" elapsed="0.000950"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:54.472654" elapsed="0.001139"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:54.476517" 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-19T03:27:54.476811" 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-19T03:27:54.475440" elapsed="0.001489"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:54.478749" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:54.478086" elapsed="0.000792"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:54.480920" 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-19T03:27:54.480090" elapsed="0.000969"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:54.483859" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:54.483950" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:54.483497" elapsed="0.000481"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:54.484251" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:54.485964" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:54.807706" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:54.485577" elapsed="0.322333"/>
</kw>
<msg time="2026-04-19T03:27:54.807995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:54.484977" elapsed="0.323131"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:54.482472" elapsed="0.325934"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:54.809898" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:54.832875" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:54.833427" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:54.833758" 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-19T03:27:54.809501" elapsed="0.024469"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:54.836258" elapsed="0.000615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:54.838398" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:54.837725" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:54.839152" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:54.838786" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:54.838702" elapsed="0.000649"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:54.839917" elapsed="0.000085"/>
</return>
<status status="PASS" start="2026-04-19T03:27:54.839600" elapsed="0.000499"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:54.839492" elapsed="0.000707"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:54.840316" elapsed="0.000055"/>
</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-19T03:27:54.847479" 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-19T03:27:54.848280" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:54.848644" 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-19T03:27:54.842444" elapsed="0.006408"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:54.470246" elapsed="0.378846"/>
</kw>
<msg time="2026-04-19T03:27:54.849406" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:54.469091" elapsed="0.380375"/>
</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-19T03:27:54.468328" elapsed="0.381219"/>
</kw>
<msg time="2026-04-19T03:27:54.849588" 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-19T03:27:54.467558" elapsed="0.382076"/>
</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-19T03:27:54.852797" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:27:54.853300" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:54.853594" 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-19T03:27:54.849922" elapsed="0.003819"/>
</kw>
<msg time="2026-04-19T03:27:54.853833" level="INFO">${output} = 1</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-19T03:27:54.466346" elapsed="0.387513"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:54.854336" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:54.854081" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:54.854423" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:27:54.854576" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:54.465010" elapsed="0.389591"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:54.854649" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:27:54.854794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:54.463635" elapsed="0.391184"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:54.855389" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:54.854976" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:54.462844" elapsed="0.392735">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:56.859172" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:56.858376" elapsed="0.000870"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:56.861498" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:56.860855" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:56.863372" 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-19T03:27:56.863599" 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-19T03:27:56.862999" elapsed="0.000661"/>
</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-19T03:27:56.868494" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:56.867966" elapsed="0.000608"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:56.867907" elapsed="0.000729"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:56.870371" 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-19T03:27:56.870621" 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-19T03:27:56.869665" elapsed="0.001057"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:56.872304" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:56.871705" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:56.874121" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:27:56.873404" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:56.876704" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:56.876783" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:56.876394" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:56.877021" elapsed="0.000360"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:56.878315" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:57.200938" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:56.877965" elapsed="0.323149"/>
</kw>
<msg time="2026-04-19T03:27:57.201204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:56.877603" elapsed="0.323708"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:56.875435" elapsed="0.326168"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:57.203112" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:57.226164" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:57.226659" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:57.226985" 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-19T03:27:57.202700" elapsed="0.024536"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:57.229466" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:57.232598" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:57.231563" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:57.233626" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:57.233191" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:57.233067" elapsed="0.000755"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:57.234353" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:27:57.234052" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:57.233961" elapsed="0.000630"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:57.234707" elapsed="0.000057"/>
</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-19T03:27:57.241783" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T03:27:57.242343" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:57.242698" 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-19T03:27:57.236800" elapsed="0.006106"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:56.866578" elapsed="0.376570"/>
</kw>
<msg time="2026-04-19T03:27:57.243462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:56.865875" elapsed="0.377651"/>
</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-19T03:27:56.865327" elapsed="0.378284"/>
</kw>
<msg time="2026-04-19T03:27:57.243652" 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-19T03:27:56.864010" elapsed="0.379688"/>
</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-19T03:27:57.246774" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:27:57.247292" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:57.247608" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:57.244005" elapsed="0.003751"/>
</kw>
<msg time="2026-04-19T03:27:57.247850" level="INFO">${output} = 1</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-19T03:27:56.862077" elapsed="0.385798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:57.248373" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:57.248089" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:57.248465" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:27:57.248624" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:56.859882" elapsed="0.388768"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:57.248698" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:57.248864" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:56.857523" elapsed="0.391368"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:57.249480" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:57.249069" elapsed="0.000490">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:56.856429" elapsed="0.393248">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:27:59.253487" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:27:59.252700" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:27:59.255736" level="INFO">${member_ip} = 10.30.171.206</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-19T03:27:59.255132" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:59.257723" 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-19T03:27:59.258000" 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-19T03:27:59.257319" elapsed="0.000739"/>
</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-19T03:27:59.263402" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:27:59.262754" elapsed="0.000759"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:59.262675" elapsed="0.000918"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:59.265894" 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-19T03:27:59.266270" 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-19T03:27:59.264957" elapsed="0.001451"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:59.268534" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:59.267758" elapsed="0.000967"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:27:59.270699" 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-19T03:27:59.269866" elapsed="0.000930"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:27:59.273094" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:27:59.273175" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:27:59.272800" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:59.273439" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:27:59.274733" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:27:59.611748" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:27:59.274410" elapsed="0.337515"/>
</kw>
<msg time="2026-04-19T03:27:59.612015" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:59.273998" elapsed="0.338145"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:27:59.271976" elapsed="0.340487"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:27:59.614014" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:27:59.637106" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:27:59.637645" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:27:59.637978" 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-19T03:27:59.613611" elapsed="0.024627"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:59.640441" elapsed="0.000966"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:59.643716" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:59.642723" elapsed="0.001223"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:59.644856" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:27:59.644334" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:59.644209" elapsed="0.000988"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:27:59.645991" elapsed="0.000206"/>
</return>
<status status="PASS" start="2026-04-19T03:27:59.645539" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T03:27:59.645428" elapsed="0.001009"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:27:59.646611" elapsed="0.000084"/>
</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-19T03:27:59.652939" 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-19T03:27:59.653596" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:59.653957" elapsed="0.000189"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:59.649506" elapsed="0.004747"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:27:59.260792" elapsed="0.393680"/>
</kw>
<msg time="2026-04-19T03:27:59.654776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:27:59.259809" elapsed="0.395024"/>
</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-19T03:27:59.259049" elapsed="0.395867"/>
</kw>
<msg time="2026-04-19T03:27:59.654957" 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-19T03:27:59.258295" elapsed="0.396709"/>
</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-19T03:27:59.657977" elapsed="0.000411"/>
</kw>
<kw name="Open 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-19T03:27:59.658560" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:27:59.658856" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:27:59.655312" elapsed="0.003694"/>
</kw>
<msg time="2026-04-19T03:27:59.659116" level="INFO">${output} = 1</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-19T03:27:59.256309" elapsed="0.402834"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:27:59.659576" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:27:59.659327" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:27:59.659664" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:27:59.659818" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:27:59.254053" elapsed="0.405791"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:27:59.659891" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:27:59.660050" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:27:59.251821" elapsed="0.408255"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:27:59.660647" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:27:59.660234" elapsed="0.000645">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:27:59.250740" elapsed="0.410253">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:01.663333" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:01.662829" elapsed="0.000550"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:01.664654" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:01.664271" elapsed="0.000420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:01.665852" 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-19T03:28:01.665993" 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-19T03:28:01.665635" elapsed="0.000415"/>
</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-19T03:28:01.671661" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:01.670666" elapsed="0.001174"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:01.670589" elapsed="0.001336"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:01.673924" 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-19T03:28:01.674306" 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-19T03:28:01.673317" elapsed="0.001133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:01.676561" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:01.675789" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:01.678660" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:01.677898" elapsed="0.000859"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:01.681090" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:01.681178" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:01.680725" elapsed="0.000479"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:01.681417" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:01.682821" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:02.005318" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:27:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:01.682493" elapsed="0.322978"/>
</kw>
<msg time="2026-04-19T03:28:02.005557" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:01.681974" elapsed="0.323672"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:01.679951" elapsed="0.325983"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:02.007427" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:02.030603" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:02.031172" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:02.031511" 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-19T03:28:02.007017" elapsed="0.024712"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:02.034054" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:02.037260" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:02.036262" elapsed="0.001227"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:02.038377" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:02.037840" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:02.037718" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:02.039475" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:28:02.038994" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:02.038883" elapsed="0.000948"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:02.040010" elapsed="0.000240"/>
</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-19T03:28:02.046202" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:02.046745" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:02.047119" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:02.042816" elapsed="0.004513"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:01.668714" elapsed="0.378840"/>
</kw>
<msg time="2026-04-19T03:28:02.047926" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:01.667755" elapsed="0.380232"/>
</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-19T03:28:01.666989" elapsed="0.381148"/>
</kw>
<msg time="2026-04-19T03:28:02.048179" 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-19T03:28:01.666275" elapsed="0.381951"/>
</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-19T03:28:02.051305" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:28:02.051786" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:02.052181" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:02.048535" elapsed="0.003798"/>
</kw>
<msg time="2026-04-19T03:28:02.052423" level="INFO">${output} = 1</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-19T03:28:01.665048" elapsed="0.387400"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:02.052871" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:02.052624" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:02.052958" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:02.053146" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:01.663668" elapsed="0.389504"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:02.053219" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:02.053364" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:01.662302" elapsed="0.391086"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:02.053933" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:02.053545" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:01.661579" elapsed="0.392579">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:04.057655" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:04.056872" elapsed="0.000853"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:04.059753" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:04.059144" elapsed="0.000670"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:04.061670" 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-19T03:28:04.061902" 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-19T03:28:04.061270" elapsed="0.000691"/>
</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-19T03:28:04.066356" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:04.065871" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:04.065581" elapsed="0.000913"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:04.067900" 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-19T03:28:04.068157" 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-19T03:28:04.067466" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:04.069802" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:04.069247" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:04.071656" level="INFO">${conn_id} = 159</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:04.070948" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:04.074101" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:04.074181" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:04.073805" 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-19T03:28:04.074416" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:04.075675" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:04.393253" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:01 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:04.075343" elapsed="0.318059"/>
</kw>
<msg time="2026-04-19T03:28:04.393516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:04.074967" elapsed="0.318642"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:04.072945" elapsed="0.320936"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:04.395370" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:04.418298" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:04.418789" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:04.419168" 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-19T03:28:04.394955" elapsed="0.024424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:04.421607" elapsed="0.000881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:04.424813" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:04.423727" elapsed="0.001367"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:04.426007" elapsed="0.000103"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:04.425456" elapsed="0.000760"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:04.425330" elapsed="0.001013"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:04.427173" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:28:04.426672" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:04.426562" elapsed="0.001051"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:04.427857" elapsed="0.000115"/>
</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-19T03:28:04.434644" 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-19T03:28:04.435227" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:04.435601" 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-19T03:28:04.431185" elapsed="0.004633"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:04.064231" elapsed="0.371877"/>
</kw>
<msg time="2026-04-19T03:28:04.436491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:04.063525" elapsed="0.373048"/>
</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-19T03:28:04.062976" elapsed="0.373708"/>
</kw>
<msg time="2026-04-19T03:28:04.436737" 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-19T03:28:04.062349" elapsed="0.374447"/>
</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-19T03:28:04.440430" elapsed="0.000422"/>
</kw>
<kw name="Open 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-19T03:28:04.441048" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:04.441358" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:04.437302" elapsed="0.004305"/>
</kw>
<msg time="2026-04-19T03:28:04.441708" level="INFO">${output} = 1</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-19T03:28:04.060325" elapsed="0.381408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:04.442245" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:04.441936" elapsed="0.000355"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:04.442336" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T03:28:04.442538" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:04.058209" elapsed="0.384362"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:04.442631" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:28:04.442822" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:04.056056" elapsed="0.386798"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:04.443462" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:04.443049" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:04.054939" elapsed="0.388713">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:06.447229" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:06.446423" elapsed="0.000878"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:06.449408" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:06.448742" elapsed="0.000728"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:06.451362" 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-19T03:28:06.451591" 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-19T03:28:06.450999" elapsed="0.000653"/>
</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-19T03:28:06.459690" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:06.459211" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:06.458908" elapsed="0.000925"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:06.461294" 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-19T03:28:06.461542" 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-19T03:28:06.460825" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:06.463222" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:06.462662" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:06.465021" level="INFO">${conn_id} = 162</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:06.464320" elapsed="0.000857"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:06.467450" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:06.467528" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:06.467169" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:06.467770" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:06.469304" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:06.779533" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:06.468769" elapsed="0.310959"/>
</kw>
<msg time="2026-04-19T03:28:06.779841" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:06.468407" elapsed="0.311552"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:06.466388" elapsed="0.314003"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:06.782559" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:06.806199" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:06.806692" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:06.807020" 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-19T03:28:06.781989" elapsed="0.025285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:06.809480" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:06.812632" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:06.811635" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:06.813723" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:06.813232" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:06.813110" elapsed="0.000975"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:06.814743" elapsed="0.000051"/>
</return>
<status status="PASS" start="2026-04-19T03:28:06.814407" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:06.814301" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:06.814979" 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-19T03:28:06.821555" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:28:06.822131" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:06.822491" 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-19T03:28:06.816362" elapsed="0.006337"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:06.456196" elapsed="0.366723"/>
</kw>
<msg time="2026-04-19T03:28:06.823244" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:06.454581" elapsed="0.368719"/>
</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-19T03:28:06.453290" elapsed="0.370090"/>
</kw>
<msg time="2026-04-19T03:28:06.823419" 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-19T03:28:06.452071" elapsed="0.371392"/>
</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-19T03:28:06.826535" 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-19T03:28:06.827011" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:06.827324" elapsed="0.000203"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:06.823751" elapsed="0.003831"/>
</kw>
<msg time="2026-04-19T03:28:06.827747" level="INFO">${output} = 1</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-19T03:28:06.450005" elapsed="0.377768"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:06.828239" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:06.827954" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:06.828326" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:06.828475" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:06.447771" elapsed="0.380728"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:06.828545" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:28:06.828685" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:06.445521" elapsed="0.383188"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:06.829266" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:06.828862" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:06.444440" elapsed="0.385008">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:08.833024" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:08.832290" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:08.835227" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:08.834813" elapsed="0.000453"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:08.836391" 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-19T03:28:08.836535" 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-19T03:28:08.836170" elapsed="0.000402"/>
</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-19T03:28:08.841947" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:08.841310" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:08.841231" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:08.843996" 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-19T03:28:08.844261" 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-19T03:28:08.843323" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:08.845903" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:08.845351" elapsed="0.000663"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:08.847727" level="INFO">${conn_id} = 165</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:08.847013" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:08.850185" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:08.850263" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:08.849882" 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-19T03:28:08.850517" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:08.851795" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:09.162291" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:06 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:08.851464" elapsed="0.311080"/>
</kw>
<msg time="2026-04-19T03:28:09.162624" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:08.851097" elapsed="0.311610"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:08.849115" elapsed="0.313864"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:09.164456" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:09.187962" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:09.188499" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:09.188830" 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-19T03:28:09.164072" elapsed="0.025004"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:09.191351" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:09.194519" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:09.193511" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:09.195767" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:09.195257" elapsed="0.000678"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:09.194980" elapsed="0.001111"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:09.196871" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:28:09.196419" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:09.196312" elapsed="0.000947"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:09.197436" 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-19T03:28:09.202944" elapsed="0.000403"/>
</kw>
<kw name="Open 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-19T03:28:09.203558" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:09.203917" 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-19T03:28:09.199561" elapsed="0.004585"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:08.839367" elapsed="0.365002"/>
</kw>
<msg time="2026-04-19T03:28:09.204677" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:08.838408" elapsed="0.366325"/>
</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-19T03:28:08.837618" elapsed="0.367196"/>
</kw>
<msg time="2026-04-19T03:28:09.204855" 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-19T03:28:08.836874" elapsed="0.368027"/>
</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-19T03:28:09.207963" 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-19T03:28:09.208456" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:09.208752" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:09.205209" elapsed="0.003692"/>
</kw>
<msg time="2026-04-19T03:28:09.208991" level="INFO">${output} = 1</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-19T03:28:08.835571" elapsed="0.373445"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:09.209459" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:09.209210" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:09.209549" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:28:09.209704" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:08.833725" elapsed="0.376005"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:09.209775" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:28:09.209918" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:08.831438" elapsed="0.378505"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:09.210596" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:09.210170" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:08.830354" elapsed="0.380424">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:11.214481" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:11.213694" elapsed="0.000859"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:11.216654" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:11.216008" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:11.218528" 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-19T03:28:11.218778" 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-19T03:28:11.218184" elapsed="0.000655"/>
</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-19T03:28:11.225474" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:11.224985" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:11.224926" elapsed="0.000686"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:11.227324" 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-19T03:28:11.227569" 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-19T03:28:11.226607" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:11.229219" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:11.228654" elapsed="0.000674"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:11.231019" level="INFO">${conn_id} = 168</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:11.230307" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:11.233472" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:11.233550" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:11.233183" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:11.233786" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:11.235130" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:11.540775" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:11.234741" elapsed="0.306182"/>
</kw>
<msg time="2026-04-19T03:28:11.541009" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:11.234358" elapsed="0.306761"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:11.232413" elapsed="0.308987"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:11.542909" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:11.565950" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:11.566490" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:11.566849" 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-19T03:28:11.542496" elapsed="0.024606"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:11.569311" elapsed="0.000913"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:11.572250" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:11.571539" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:11.572948" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:11.572621" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:11.572540" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:11.573641" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:28:11.573357" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:11.573288" elapsed="0.000583"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:11.573984" elapsed="0.000073"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:11.580630" elapsed="0.000482"/>
</kw>
<kw name="Open 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-19T03:28:11.581409" elapsed="0.000221"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:11.581903" elapsed="0.000162"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:11.575921" elapsed="0.006295"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:11.223348" elapsed="0.359183"/>
</kw>
<msg time="2026-04-19T03:28:11.583001" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:11.221760" elapsed="0.361461"/>
</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-19T03:28:11.220403" elapsed="0.362937"/>
</kw>
<msg time="2026-04-19T03:28:11.583399" 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-19T03:28:11.219223" elapsed="0.364242"/>
</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-19T03:28:11.586517" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:11.587004" elapsed="0.000209"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:11.587363" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:11.583843" elapsed="0.003685"/>
</kw>
<msg time="2026-04-19T03:28:11.587621" level="INFO">${output} = 1</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-19T03:28:11.217228" elapsed="0.370418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:11.588135" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:11.587848" elapsed="0.000333"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:11.588224" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:11.588378" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:11.215092" elapsed="0.373312"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:11.588452" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:11.588595" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:11.212840" elapsed="0.375780"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:11.589188" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:11.588776" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:11.211713" elapsed="0.377660">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:13.592956" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:13.592171" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:13.595456" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:13.594767" elapsed="0.000752"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:13.597362" 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-19T03:28:13.597596" 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-19T03:28:13.596975" elapsed="0.000683"/>
</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-19T03:28:13.603007" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:13.602516" elapsed="0.000590"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:13.602458" elapsed="0.000726"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:13.604886" 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-19T03:28:13.605156" 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-19T03:28:13.604187" elapsed="0.001074"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:13.606819" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:13.606254" elapsed="0.000683"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:13.608674" 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-19T03:28:13.607944" elapsed="0.000831"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:13.611212" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:13.611298" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:13.610856" elapsed="0.000467"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:13.611541" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:13.612825" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:13.910942" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:13.612496" elapsed="0.298566"/>
</kw>
<msg time="2026-04-19T03:28:13.911127" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:13.612126" elapsed="0.299101"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:13.610000" elapsed="0.301471"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:13.912831" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:13.935611" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:13.936326" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:13.936662" 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-19T03:28:13.912494" elapsed="0.024384"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:13.939309" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:13.942406" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:13.941453" elapsed="0.001181"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:13.943622" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:13.942972" elapsed="0.000825"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:13.942852" elapsed="0.001072"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:13.944740" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:28:13.944291" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:13.944180" elapsed="0.001051"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:13.945410" elapsed="0.000082"/>
</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-19T03:28:13.951460" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:28:13.951998" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:13.952364" 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-19T03:28:13.948066" elapsed="0.004501"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:13.601074" elapsed="0.351712"/>
</kw>
<msg time="2026-04-19T03:28:13.953150" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:13.600243" elapsed="0.352965"/>
</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-19T03:28:13.599422" elapsed="0.353870"/>
</kw>
<msg time="2026-04-19T03:28:13.953333" 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-19T03:28:13.598014" elapsed="0.355365"/>
</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-19T03:28:13.956348" elapsed="0.000306"/>
</kw>
<kw name="Open 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-19T03:28:13.956816" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:13.957209" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:13.953667" elapsed="0.003691"/>
</kw>
<msg time="2026-04-19T03:28:13.957449" level="INFO">${output} = 1</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-19T03:28:13.596020" elapsed="0.361454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:13.957894" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:13.957649" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:13.957980" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:28:13.958147" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:13.593791" elapsed="0.364382"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:13.958220" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:13.958363" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:13.591297" elapsed="0.367091"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:13.958935" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:13.958541" elapsed="0.000469">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:13.590175" elapsed="0.368961">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:15.962604" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:15.961841" elapsed="0.000831"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:15.964691" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:15.964093" elapsed="0.000656"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:15.966519" 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-19T03:28:15.966899" 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-19T03:28:15.966180" elapsed="0.000778"/>
</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-19T03:28:15.971946" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:15.971110" elapsed="0.000937"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:15.971048" elapsed="0.001064"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:15.973559" 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-19T03:28:15.973802" 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-19T03:28:15.973112" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:15.975458" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:15.974882" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:15.977283" level="INFO">${conn_id} = 174</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:15.976573" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:15.979732" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:15.979810" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:15.979433" 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-19T03:28:15.980062" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:15.981321" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:16.352856" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:13 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:15.980979" elapsed="0.372042"/>
</kw>
<msg time="2026-04-19T03:28:16.353139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:15.980619" elapsed="0.372613"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:15.978585" elapsed="0.374949"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:16.355054" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:16.378329" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:16.378673" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:16.378828" 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-19T03:28:16.354642" elapsed="0.024285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:16.380099" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:16.381740" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:16.381271" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:16.382288" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:16.382015" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:16.381956" elapsed="0.000470"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:16.382780" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:28:16.382574" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:16.382524" elapsed="0.000425"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:16.383047" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:16.387905" elapsed="0.000574"/>
</kw>
<kw name="Open 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-19T03:28:16.388773" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:16.389168" 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-19T03:28:16.384439" elapsed="0.004949"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:15.969708" elapsed="0.419906"/>
</kw>
<msg time="2026-04-19T03:28:16.389933" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:15.969011" elapsed="0.420991"/>
</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-19T03:28:15.968476" elapsed="0.421630"/>
</kw>
<msg time="2026-04-19T03:28:16.390149" 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-19T03:28:15.967338" elapsed="0.422859"/>
</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-19T03:28:16.393476" 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-19T03:28:16.393987" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:16.394321" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:16.390510" elapsed="0.003965"/>
</kw>
<msg time="2026-04-19T03:28:16.394570" level="INFO">${output} = 1</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-19T03:28:15.965253" elapsed="0.429344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:16.395081" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:16.394809" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:16.395174" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:28:16.395371" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:15.963147" elapsed="0.432251"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:16.395446" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:28:16.395594" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:15.961013" elapsed="0.434646"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:16.396282" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:16.395821" elapsed="0.000536">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:15.959951" elapsed="0.436517">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:18.399951" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:18.399217" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:18.402155" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:18.401523" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:18.403971" 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-19T03:28:18.404279" 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-19T03:28:18.403640" elapsed="0.000698"/>
</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-19T03:28:18.408763" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:18.408277" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:18.407951" elapsed="0.001015"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:18.410387" 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-19T03:28:18.410627" 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-19T03:28:18.409939" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:18.412279" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:18.411688" elapsed="0.000699"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:18.414072" 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-19T03:28:18.413357" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:18.416535" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:18.416613" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:18.416229" 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-19T03:28:18.416855" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:18.418131" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:18.731745" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:18.417786" elapsed="0.314118"/>
</kw>
<msg time="2026-04-19T03:28:18.731992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:18.417426" elapsed="0.314703"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:18.415355" elapsed="0.317057"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:18.733898" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:18.757154" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:18.757683" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:18.758076" 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-19T03:28:18.733506" elapsed="0.024805"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:18.760689" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:18.764074" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:18.762974" elapsed="0.001349"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:18.765244" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:18.764685" elapsed="0.000737"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:18.764556" elapsed="0.001000"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:18.766411" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:28:18.765897" elapsed="0.000748"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:18.765783" elapsed="0.001002"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:18.766973" elapsed="0.000258"/>
</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-19T03:28:18.773296" 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-19T03:28:18.773840" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:18.774217" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:18.769661" elapsed="0.004765"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:18.406645" elapsed="0.368004"/>
</kw>
<msg time="2026-04-19T03:28:18.775021" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:18.405949" elapsed="0.369194"/>
</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-19T03:28:18.405416" elapsed="0.369810"/>
</kw>
<msg time="2026-04-19T03:28:18.775268" 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-19T03:28:18.404691" elapsed="0.370623"/>
</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-19T03:28:18.778424" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:28:18.778900" elapsed="0.000251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:18.779305" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:18.775608" elapsed="0.003846"/>
</kw>
<msg time="2026-04-19T03:28:18.779546" level="INFO">${output} = 1</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-19T03:28:18.402697" elapsed="0.376874"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:18.779998" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:18.779750" elapsed="0.000356"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:18.780153" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:28:18.780307" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:18.400578" elapsed="0.379755"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:18.780379" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:28:18.780521" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:18.398378" elapsed="0.382167"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:18.781109" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:18.780702" elapsed="0.000483">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:18.397314" elapsed="0.383981">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:20.785095" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:20.784258" elapsed="0.000913"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:20.787310" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:20.786652" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:20.789226" 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-19T03:28:20.789333" 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-19T03:28:20.788957" elapsed="0.000403"/>
</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-19T03:28:20.793626" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:20.793101" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:20.792746" elapsed="0.001029"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:20.795286" 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-19T03:28:20.795541" 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-19T03:28:20.794798" elapsed="0.000844"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:20.797251" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:20.796654" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:20.799272" level="INFO">${conn_id} = 180</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:20.798538" elapsed="0.000835"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:20.801751" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:20.801833" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:20.801456" 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-19T03:28:20.802275" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:20.803600" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:21.124414" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:18 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:20.803256" elapsed="0.321336"/>
</kw>
<msg time="2026-04-19T03:28:21.124676" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:20.802870" elapsed="0.321893"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:20.800635" elapsed="0.324450"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:21.126666" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:21.149618" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:21.149869" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:21.150020" 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-19T03:28:21.126235" elapsed="0.023909"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:21.151179" elapsed="0.000443"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:21.152685" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:21.152218" elapsed="0.000573"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:21.153220" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:21.152958" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:21.152898" elapsed="0.000457"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:21.153707" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T03:28:21.153502" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:21.153453" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:21.153953" 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-19T03:28:21.160690" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T03:28:21.161255" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:21.161613" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:21.155313" elapsed="0.006510"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:20.791376" elapsed="0.370684"/>
</kw>
<msg time="2026-04-19T03:28:21.162371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:20.790651" elapsed="0.371780"/>
</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-19T03:28:20.790096" elapsed="0.372415"/>
</kw>
<msg time="2026-04-19T03:28:21.162550" 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-19T03:28:20.789526" elapsed="0.373069"/>
</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-19T03:28:21.165714" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:28:21.166204" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:21.166498" 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-19T03:28:21.162979" elapsed="0.003666"/>
</kw>
<msg time="2026-04-19T03:28:21.166734" level="INFO">${output} = 1</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-19T03:28:20.787910" elapsed="0.378849"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:21.167234" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:21.166947" elapsed="0.000332"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:21.167323" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:28:21.167476" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:20.785647" elapsed="0.381854"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:21.167547" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:21.167690" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:20.783346" elapsed="0.384368"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:21.168370" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:21.167937" elapsed="0.000508">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:20.782185" elapsed="0.386389">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:23.172242" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:23.171462" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:23.173922" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:23.173539" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:23.175259" 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-19T03:28:23.175402" 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-19T03:28:23.175003" elapsed="0.000436"/>
</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-19T03:28:23.181175" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:23.180459" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:23.180379" elapsed="0.001001"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:23.183249" 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-19T03:28:23.183509" 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-19T03:28:23.182501" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:23.185213" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:23.184614" elapsed="0.000714"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:23.187215" 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-19T03:28:23.186329" elapsed="0.000991"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:23.189663" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:23.189743" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:23.189369" elapsed="0.000399"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:23.189983" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:23.191516" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:23.510895" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:23.191021" elapsed="0.320060"/>
</kw>
<msg time="2026-04-19T03:28:23.511168" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:23.190633" elapsed="0.320634"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:23.188551" elapsed="0.323013"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:23.513130" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:23.535668" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:23.536248" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:23.536585" 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-19T03:28:23.512667" elapsed="0.024133"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:23.539099" elapsed="0.000875"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:23.542339" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:23.541344" elapsed="0.001260"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:23.543546" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:23.542973" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:23.542847" elapsed="0.001003"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:23.544726" elapsed="0.000123"/>
</return>
<status status="PASS" start="2026-04-19T03:28:23.544251" elapsed="0.000767"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:23.544121" elapsed="0.001102"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:23.545306" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:23.550191" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T03:28:23.550760" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:23.551148" 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-19T03:28:23.546673" elapsed="0.004694"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:23.178393" elapsed="0.373202"/>
</kw>
<msg time="2026-04-19T03:28:23.551909" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:23.177395" elapsed="0.374574"/>
</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-19T03:28:23.176473" elapsed="0.375607"/>
</kw>
<msg time="2026-04-19T03:28:23.552133" 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-19T03:28:23.175660" elapsed="0.376525"/>
</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-19T03:28:23.555256" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:28:23.555754" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:23.556087" elapsed="0.000107"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:23.552489" elapsed="0.003758"/>
</kw>
<msg time="2026-04-19T03:28:23.556403" level="INFO">${output} = 1</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-19T03:28:23.174293" elapsed="0.382137"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:23.556868" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:23.556613" elapsed="0.000329"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:23.556989" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:23.557256" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:23.172772" elapsed="0.384510"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:23.557330" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:28:23.557479" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:23.170591" elapsed="0.386913"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:23.558084" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:23.557664" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:23.169464" elapsed="0.388810">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:25.561726" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:25.560934" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:25.563851" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:25.563239" elapsed="0.000674"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:25.565763" 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-19T03:28:25.565993" 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-19T03:28:25.565434" elapsed="0.000651"/>
</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-19T03:28:25.571368" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:25.570714" elapsed="0.000764"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:25.570638" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:25.573908" 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-19T03:28:25.574287" 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-19T03:28:25.572937" elapsed="0.001491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:25.576545" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:25.575775" elapsed="0.000921"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:25.578872" level="INFO">${conn_id} = 186</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:25.578173" elapsed="0.000794"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:25.581260" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:25.581349" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:25.580927" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:25.581587" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:25.582975" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:25.888916" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:25.582649" elapsed="0.306509"/>
</kw>
<msg time="2026-04-19T03:28:25.889239" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:25.582285" elapsed="0.307069"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:25.580167" elapsed="0.309463"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:25.891126" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:25.914083" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:25.914711" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:25.915129" 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-19T03:28:25.890726" elapsed="0.024632"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:25.917660" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:25.919922" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:25.919304" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:25.920688" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:25.920353" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:25.920271" elapsed="0.000609"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:25.921430" elapsed="0.000082"/>
</return>
<status status="PASS" start="2026-04-19T03:28:25.921114" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:25.921020" elapsed="0.000653"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:25.921791" elapsed="0.000055"/>
</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-19T03:28:25.928559" elapsed="0.000496"/>
</kw>
<kw name="Open 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-19T03:28:25.929389" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:25.929900" elapsed="0.000177"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:25.923689" elapsed="0.006544"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:25.568776" elapsed="0.361681"/>
</kw>
<msg time="2026-04-19T03:28:25.930780" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:25.567831" elapsed="0.363010"/>
</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-19T03:28:25.567085" elapsed="0.363841"/>
</kw>
<msg time="2026-04-19T03:28:25.930967" 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-19T03:28:25.566354" elapsed="0.364660"/>
</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-19T03:28:25.934157" 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-19T03:28:25.934660" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:25.934967" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:25.931327" elapsed="0.003813"/>
</kw>
<msg time="2026-04-19T03:28:25.935235" level="INFO">${output} = 1</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-19T03:28:25.564431" elapsed="0.370830"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:25.935786" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:25.935446" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:25.935878" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:28:25.936067" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:25.562287" elapsed="0.373807"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:25.936142" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:28:25.936292" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:25.560109" elapsed="0.376208"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:25.936936" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:25.936533" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:25.559020" elapsed="0.378122">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:27.940709" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:27.939936" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:27.942855" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:27.942245" elapsed="0.000671"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:27.944806" 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-19T03:28:27.945080" 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-19T03:28:27.944378" elapsed="0.000765"/>
</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-19T03:28:27.949630" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:27.949162" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:27.949104" elapsed="0.000679"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:27.951488" 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-19T03:28:27.951737" 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-19T03:28:27.950782" elapsed="0.001056"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:27.953391" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:27.952819" elapsed="0.000681"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:27.955236" 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-19T03:28:27.954514" elapsed="0.000822"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:27.957731" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:27.957811" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:27.957422" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:27.958060" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:27.959359" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:28.308351" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:25 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:27.959021" elapsed="0.349520"/>
</kw>
<msg time="2026-04-19T03:28:28.308654" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:27.958658" elapsed="0.350121"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:27.956548" elapsed="0.352640"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:28.311013" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:28.324109" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:28.324611" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:28.324945" 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-19T03:28:28.310614" elapsed="0.014588"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:28.327459" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:28.330622" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:28.329612" elapsed="0.001153"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:28.331374" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:28.331005" elapsed="0.000498"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:28.330922" elapsed="0.000666"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:28.332086" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:28:28.331787" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:28.331720" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:28.332423" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:28.339082" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T03:28:28.339853" elapsed="0.000324"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:28.340468" elapsed="0.000148"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:28.334303" elapsed="0.006461"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:27.947755" elapsed="0.393343"/>
</kw>
<msg time="2026-04-19T03:28:28.341525" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:27.947064" elapsed="0.394544"/>
</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-19T03:28:27.946511" elapsed="0.395213"/>
</kw>
<msg time="2026-04-19T03:28:28.341817" 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-19T03:28:27.945500" elapsed="0.396386"/>
</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-19T03:28:28.345153" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T03:28:28.345636" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:28.345949" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:28.342450" elapsed="0.003666"/>
</kw>
<msg time="2026-04-19T03:28:28.346209" level="INFO">${output} = 1</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-19T03:28:27.943429" elapsed="0.402806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:28.346689" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:28.346435" elapsed="0.000299"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:28.346777" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:28:28.346937" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:27.941269" elapsed="0.405694"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:28.347010" elapsed="0.000108"/>
</return>
<msg time="2026-04-19T03:28:28.347245" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:27.939115" elapsed="0.408156"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:28.347831" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:28.347431" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:27.938001" elapsed="0.410046">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:30.351676" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:30.350893" elapsed="0.000852"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:30.353915" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:30.353314" elapsed="0.000660"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:30.355865" 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-19T03:28:30.356146" 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-19T03:28:30.355527" elapsed="0.000730"/>
</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-19T03:28:30.361679" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:30.360924" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:30.360864" elapsed="0.000958"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:30.363401" 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-19T03:28:30.363658" 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-19T03:28:30.362904" elapsed="0.000859"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:30.365442" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:30.364824" elapsed="0.000732"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:30.367416" level="INFO">${conn_id} = 192</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:30.366633" elapsed="0.000890"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:30.369992" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:30.370088" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:30.369695" 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-19T03:28:30.370367" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:30.371697" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:30.686052" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:30.371365" elapsed="0.314850"/>
</kw>
<msg time="2026-04-19T03:28:30.686306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:30.370974" elapsed="0.315427"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:30.368792" elapsed="0.317897"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:30.688259" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:30.711451" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:30.711948" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:30.712344" 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-19T03:28:30.687827" elapsed="0.024735"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:30.714833" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:30.718148" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:30.717125" elapsed="0.001337"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:30.719471" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:30.718820" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:30.718693" elapsed="0.000921"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:30.719974" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:28:30.719765" elapsed="0.000333"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:30.719715" elapsed="0.000441"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:30.720241" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:30.724982" elapsed="0.000446"/>
</kw>
<kw name="Open 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-19T03:28:30.725642" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:30.726007" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:30.721639" elapsed="0.004620"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:30.359427" elapsed="0.367067"/>
</kw>
<msg time="2026-04-19T03:28:30.726801" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:30.358716" elapsed="0.368143"/>
</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-19T03:28:30.357894" elapsed="0.369047"/>
</kw>
<msg time="2026-04-19T03:28:30.726983" 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-19T03:28:30.356661" elapsed="0.370383"/>
</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-19T03:28:30.730213" 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-19T03:28:30.730711" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:30.731011" elapsed="0.000118"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:30.727348" elapsed="0.003834"/>
</kw>
<msg time="2026-04-19T03:28:30.731275" level="INFO">${output} = 1</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-19T03:28:30.354496" elapsed="0.376805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:30.731742" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:30.731484" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:30.731832" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:30.731987" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:30.352371" elapsed="0.379642"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:30.732078" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:28:30.732229" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:30.349992" elapsed="0.382262"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:30.732826" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:30.732412" elapsed="0.000489">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:30.348928" elapsed="0.384084">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:32.736521" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:32.735758" elapsed="0.000833"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:32.738651" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:32.737976" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:32.740705" 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-19T03:28:32.741169" 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-19T03:28:32.740379" elapsed="0.000854"/>
</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-19T03:28:32.746575" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:32.746089" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:32.745793" elapsed="0.000929"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:32.748149" 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-19T03:28:32.748392" 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-19T03:28:32.747698" elapsed="0.000793"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:32.750004" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:32.749455" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:32.752020" level="INFO">${conn_id} = 195</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:32.751328" elapsed="0.000814"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:32.754507" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:32.754621" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:32.754224" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:32.754862" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:32.756127" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:33.080716" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:30 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:32.755787" elapsed="0.325067"/>
</kw>
<msg time="2026-04-19T03:28:33.080937" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:32.755428" elapsed="0.325592"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:32.753453" elapsed="0.327868"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:33.082823" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:33.106504" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:33.107086" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:33.107428" 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-19T03:28:33.082404" elapsed="0.025235"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:33.109826" elapsed="0.000953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:33.112488" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:33.111846" elapsed="0.000786"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:33.113201" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:33.112856" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:33.112777" elapsed="0.000604"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:33.113866" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:28:33.113586" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:33.113520" elapsed="0.000583"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:33.114215" elapsed="0.000051"/>
</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-19T03:28:33.120532" 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-19T03:28:33.121159" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:33.121521" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:33.116204" elapsed="0.005526"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:32.744480" elapsed="0.377475"/>
</kw>
<msg time="2026-04-19T03:28:33.122280" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:32.743792" elapsed="0.378546"/>
</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-19T03:28:32.742823" elapsed="0.379598"/>
</kw>
<msg time="2026-04-19T03:28:33.122464" 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-19T03:28:32.741594" elapsed="0.380917"/>
</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-19T03:28:33.125616" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:28:33.126109" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:33.126407" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:33.122833" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T03:28:33.126668" level="INFO">${output} = 1</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-19T03:28:32.739240" elapsed="0.387453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:33.127135" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:33.126870" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:33.127229" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:28:33.127380" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:32.737073" elapsed="0.390332"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:33.127450" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:33.127592" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:32.734924" elapsed="0.392692"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:33.128195" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:33.127771" elapsed="0.000499">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:32.733837" elapsed="0.394541">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:35.131804" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:35.131059" elapsed="0.000816"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:35.133945" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:35.133340" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:35.135765" 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-19T03:28:35.135905" 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-19T03:28:35.135534" elapsed="0.000408"/>
</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-19T03:28:35.141536" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:35.140870" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:35.140493" elapsed="0.001331"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:35.143871" 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-19T03:28:35.144253" 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-19T03:28:35.143251" elapsed="0.001141"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:35.146541" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:35.145767" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:35.148721" level="INFO">${conn_id} = 198</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:35.147958" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:35.151110" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:35.151190" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:35.150806" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:35.151427" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:35.152830" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:35.525270" 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 Sun Apr 19 03:27:35 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:35.152498" elapsed="0.372924"/>
</kw>
<msg time="2026-04-19T03:28:35.525507" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:35.151983" elapsed="0.373612"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:35.150049" elapsed="0.375830"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:35.527390" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:35.550679" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:35.551325" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:35.551666" 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-19T03:28:35.526969" elapsed="0.024912"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:35.554210" elapsed="0.001021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:35.557671" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:35.556546" elapsed="0.001371"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:35.559254" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:35.558397" elapsed="0.001040"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:35.558232" elapsed="0.001338"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:35.560361" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T03:28:35.559965" elapsed="0.000559"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:35.559710" elapsed="0.000898"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:35.560723" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:35.569925" elapsed="0.000515"/>
</kw>
<kw name="Open 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-19T03:28:35.570760" elapsed="0.000237"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:35.571329" elapsed="0.000150"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:35.562601" elapsed="0.009007"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:35.138605" elapsed="0.433240"/>
</kw>
<msg time="2026-04-19T03:28:35.572337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:35.137657" elapsed="0.434744"/>
</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-19T03:28:35.136895" elapsed="0.435588"/>
</kw>
<msg time="2026-04-19T03:28:35.572524" 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-19T03:28:35.136189" elapsed="0.436385"/>
</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-19T03:28:35.575599" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:28:35.576112" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:35.576413" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:35.572887" elapsed="0.003678"/>
</kw>
<msg time="2026-04-19T03:28:35.576656" level="INFO">${output} = 1</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-19T03:28:35.134521" elapsed="0.442161"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:35.577240" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:35.576886" elapsed="0.000401"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:35.577331" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:28:35.577482" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:35.132393" elapsed="0.445115"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:35.577555" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:35.577698" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:35.130205" elapsed="0.447517"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:35.578312" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:35.577891" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:35.129157" elapsed="0.449348">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:37.582100" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:37.581335" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:37.584225" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:37.583585" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:37.586129" 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-19T03:28:37.586360" 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-19T03:28:37.585776" elapsed="0.000643"/>
</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-19T03:28:37.591587" elapsed="0.000045"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:37.591092" elapsed="0.000594"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:37.591019" elapsed="0.000740"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:37.593472" 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-19T03:28:37.593720" 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-19T03:28:37.592748" elapsed="0.001093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:37.595557" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:37.594948" elapsed="0.000723"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:37.597563" level="INFO">${conn_id} = 201</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:37.596709" elapsed="0.000954"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:37.600188" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:37.600268" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:37.599877" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:37.600506" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:37.602276" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:38.241700" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:37.601795" elapsed="0.640063"/>
</kw>
<msg time="2026-04-19T03:28:38.241945" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:37.601282" elapsed="0.640773"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:37.598995" elapsed="0.643350"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:38.244004" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:38.267306" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:38.267972" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:38.268410" 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-19T03:28:38.243512" elapsed="0.025151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:38.271806" elapsed="0.000871"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:38.273741" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:38.273280" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:38.274282" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:38.274015" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:38.273954" elapsed="0.000465"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:38.274773" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T03:28:38.274567" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:38.274517" elapsed="0.000418"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:38.275016" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:38.279772" 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-19T03:28:38.280344" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:38.280709" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:38.276388" elapsed="0.004528"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:37.589655" elapsed="0.691597"/>
</kw>
<msg time="2026-04-19T03:28:38.281560" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:37.588935" elapsed="0.692686"/>
</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-19T03:28:37.588120" elapsed="0.693583"/>
</kw>
<msg time="2026-04-19T03:28:38.281743" 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-19T03:28:37.586768" elapsed="0.695021"/>
</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-19T03:28:38.284931" 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-19T03:28:38.285544" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:38.285843" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:38.282161" elapsed="0.003831"/>
</kw>
<msg time="2026-04-19T03:28:38.286101" level="INFO">${output} = 1</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-19T03:28:37.584822" elapsed="0.701305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:38.286554" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:38.286306" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:38.286643" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:38.286796" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:37.582626" elapsed="0.704195"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:38.286868" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:38.287013" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:37.580469" elapsed="0.706584"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:38.287618" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:38.287210" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:37.579363" elapsed="0.708436">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:40.290886" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:40.289966" elapsed="0.000990"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:40.293071" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:40.292435" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:40.294916" 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-19T03:28:40.295175" 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-19T03:28:40.294572" elapsed="0.000664"/>
</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-19T03:28:40.301237" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:40.300581" elapsed="0.000768"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:40.300503" elapsed="0.000928"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:40.303731" 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-19T03:28:40.304131" 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-19T03:28:40.302788" elapsed="0.001481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:40.306380" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:40.305604" elapsed="0.000926"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:40.308977" level="INFO">${conn_id} = 204</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:40.307880" elapsed="0.001215"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:40.311350" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:40.311429" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:40.311065" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:40.311665" elapsed="0.000610"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:40.313221" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:40.642070" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:40.312874" elapsed="0.329312"/>
</kw>
<msg time="2026-04-19T03:28:40.642260" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:40.312504" elapsed="0.329841"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:40.310288" elapsed="0.332307"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:40.644080" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:40.666990" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:40.667528" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:40.667865" 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-19T03:28:40.643656" elapsed="0.024483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:40.670380" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:40.673275" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:40.672563" 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-19T03:28:40.673950" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:40.673637" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:40.673562" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:40.674638" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T03:28:40.674356" elapsed="0.000418"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:40.674289" elapsed="0.000566"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:40.674964" elapsed="0.000056"/>
</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-19T03:28:40.681608" 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-19T03:28:40.682380" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:40.682871" 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-19T03:28:40.676838" elapsed="0.006345"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:40.298575" elapsed="0.384918"/>
</kw>
<msg time="2026-04-19T03:28:40.683916" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:40.297611" elapsed="0.386415"/>
</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-19T03:28:40.296831" elapsed="0.387333"/>
</kw>
<msg time="2026-04-19T03:28:40.684221" 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-19T03:28:40.295594" elapsed="0.388692"/>
</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-19T03:28:40.687610" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:28:40.688114" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:40.688412" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:40.684762" elapsed="0.003800"/>
</kw>
<msg time="2026-04-19T03:28:40.688709" level="INFO">${output} = 1</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-19T03:28:40.293616" elapsed="0.395120"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:40.689205" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:40.688917" elapsed="0.000334"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:40.689295" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:28:40.689450" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:40.291456" elapsed="0.398019"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:40.689524" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:40.689671" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:40.289137" elapsed="0.400559"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:40.690269" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:40.689859" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:40.288357" elapsed="0.402102">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:42.694172" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:42.693255" elapsed="0.000989"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:42.696452" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:42.695646" elapsed="0.000868"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:42.698313" 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-19T03:28:42.698539" 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-19T03:28:42.697957" elapsed="0.000642"/>
</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-19T03:28:42.704702" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:42.704051" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:42.703956" elapsed="0.000938"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:42.707219" 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-19T03:28:42.707562" 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-19T03:28:42.706257" elapsed="0.001444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:42.710104" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:42.709323" elapsed="0.000935"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:42.712704" level="INFO">${conn_id} = 207</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:42.711680" elapsed="0.001150"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:42.715086" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:42.715164" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:42.714788" 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-19T03:28:42.715399" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:42.716772" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:43.051601" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:42.716443" elapsed="0.335428"/>
</kw>
<msg time="2026-04-19T03:28:43.051958" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:42.715979" elapsed="0.336089"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:42.714016" elapsed="0.338344"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:43.053913" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:43.076969" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:43.077553" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:43.077893" 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-19T03:28:43.053506" elapsed="0.024693"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:43.080641" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:43.082816" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:43.082199" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:43.083619" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:43.083291" elapsed="0.000435"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:43.083209" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:43.084308" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:28:43.084005" elapsed="0.000464"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:43.083936" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:43.084664" elapsed="0.000051"/>
</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-19T03:28:43.093137" 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-19T03:28:43.093726" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:43.094109" 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-19T03:28:43.086542" elapsed="0.007778"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:42.702150" elapsed="0.392398"/>
</kw>
<msg time="2026-04-19T03:28:43.094860" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:42.701186" elapsed="0.393735"/>
</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-19T03:28:42.700150" elapsed="0.394855"/>
</kw>
<msg time="2026-04-19T03:28:43.095062" 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-19T03:28:42.698950" elapsed="0.396162"/>
</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-19T03:28:43.098243" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:28:43.098737" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:43.099058" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:43.095433" elapsed="0.003779"/>
</kw>
<msg time="2026-04-19T03:28:43.099306" level="INFO">${output} = 1</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-19T03:28:42.697007" elapsed="0.402324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:43.099781" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:43.099529" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:43.099870" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:28:43.100043" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:42.694701" elapsed="0.405370"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:43.100119" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:43.100267" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:42.692403" elapsed="0.407889"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:43.100934" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:43.100528" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:42.691317" elapsed="0.409853">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:45.104942" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:45.104110" elapsed="0.000904"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:45.107169" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:45.106487" elapsed="0.000747"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:45.109162" 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-19T03:28:45.109400" 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-19T03:28:45.108733" elapsed="0.000728"/>
</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-19T03:28:45.115402" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:45.114396" elapsed="0.001119"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:45.114317" elapsed="0.001283"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:45.117695" 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-19T03:28:45.118105" 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-19T03:28:45.117072" elapsed="0.001173"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:45.120537" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:45.119755" elapsed="0.000935"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:45.122957" level="INFO">${conn_id} = 210</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:45.122245" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:45.125530" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:45.125607" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:45.125240" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:45.125841" elapsed="0.000401"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:45.127226" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:45.458694" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:45.126844" elapsed="0.331964"/>
</kw>
<msg time="2026-04-19T03:28:45.458882" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:45.126466" elapsed="0.332499"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:45.124324" elapsed="0.334910"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:45.460647" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:45.483625" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:45.484219" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:45.484555" 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-19T03:28:45.460282" elapsed="0.024480"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:45.487086" elapsed="0.000891"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:45.490320" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:45.489349" elapsed="0.001196"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:45.491427" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:45.490890" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:45.490768" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:45.492518" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:28:45.492071" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:45.491937" elapsed="0.000994"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:45.493330" elapsed="0.000088"/>
</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-19T03:28:45.500000" elapsed="0.000479"/>
</kw>
<kw name="Open 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-19T03:28:45.500795" elapsed="0.000347"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:45.501414" 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-19T03:28:45.495375" elapsed="0.006329"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:45.112388" elapsed="0.389622"/>
</kw>
<msg time="2026-04-19T03:28:45.502449" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:45.111402" elapsed="0.391128"/>
</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-19T03:28:45.110588" elapsed="0.392058"/>
</kw>
<msg time="2026-04-19T03:28:45.502703" 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-19T03:28:45.109819" elapsed="0.392948"/>
</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-19T03:28:45.506766" 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-19T03:28:45.507261" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:45.507555" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:45.503204" elapsed="0.004501"/>
</kw>
<msg time="2026-04-19T03:28:45.507798" level="INFO">${output} = 1</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-19T03:28:45.107729" elapsed="0.400095"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:45.508270" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:45.508007" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:45.508358" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:45.508511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:45.105515" elapsed="0.403022"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:45.508585" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:45.508730" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:45.103218" elapsed="0.405537"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:45.509375" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:45.508925" elapsed="0.000525">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:45.101986" elapsed="0.407575">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:47.512981" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:47.512243" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:47.515379" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:47.514677" elapsed="0.000766"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:47.517269" 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-19T03:28:47.517500" 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-19T03:28:47.516889" elapsed="0.000672"/>
</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-19T03:28:47.526386" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:47.525705" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:47.524774" elapsed="0.001749"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:47.527953" 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-19T03:28:47.528213" 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-19T03:28:47.527513" elapsed="0.000801"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:47.529842" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:47.529302" elapsed="0.000649"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:47.531717" level="INFO">${conn_id} = 213</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:47.530960" elapsed="0.000854"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:47.534143" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:47.534223" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:47.533815" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:47.534457" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:47.535977" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:47.860663" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:47.535651" elapsed="0.325158"/>
</kw>
<msg time="2026-04-19T03:28:47.860889" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:47.535008" elapsed="0.325984"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:47.533015" elapsed="0.328323"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:47.862869" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:47.885607" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:47.886148" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:47.886482" 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-19T03:28:47.862475" elapsed="0.024215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:47.888915" elapsed="0.000948"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:47.891387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:47.890738" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:47.892272" elapsed="0.000051"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:47.891751" elapsed="0.000642"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:47.891674" elapsed="0.000801"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:47.892969" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T03:28:47.892678" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:47.892609" elapsed="0.000609"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:47.893352" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:47.899436" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:28:47.899994" elapsed="0.000317"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:47.900516" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:47.895211" elapsed="0.005521"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:47.521826" elapsed="0.379131"/>
</kw>
<msg time="2026-04-19T03:28:47.901296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:47.520339" elapsed="0.381018"/>
</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-19T03:28:47.519122" elapsed="0.382318"/>
</kw>
<msg time="2026-04-19T03:28:47.901483" 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-19T03:28:47.517916" elapsed="0.383615"/>
</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-19T03:28:47.904598" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:28:47.905091" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:47.905416" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:47.901863" elapsed="0.003704"/>
</kw>
<msg time="2026-04-19T03:28:47.905658" level="INFO">${output} = 1</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-19T03:28:47.515934" elapsed="0.389750"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:47.906134" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:47.905865" elapsed="0.000314"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:47.906222" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:28:47.906376" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:47.513722" elapsed="0.392679"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:47.906448" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:28:47.906593" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:47.511400" elapsed="0.395218"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:47.907198" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:47.906775" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:47.510353" elapsed="0.397032">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:49.910739" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:49.909985" elapsed="0.000823"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:49.913069" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:49.912283" elapsed="0.000861"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:49.914923" 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-19T03:28:49.915320" 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-19T03:28:49.914592" elapsed="0.000846"/>
</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-19T03:28:49.919863" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:49.919381" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:49.919070" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:49.921464" 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-19T03:28:49.921710" 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-19T03:28:49.921004" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:49.923386" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:49.922803" elapsed="0.000694"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:49.925207" level="INFO">${conn_id} = 216</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:49.924484" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:49.927704" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:49.927783" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:49.927419" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:49.928016" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:49.929278" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:50.259509" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:47 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:49.928940" elapsed="0.330723"/>
</kw>
<msg time="2026-04-19T03:28:50.259765" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:49.928581" elapsed="0.331276"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:49.926525" elapsed="0.333643"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:50.261685" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:50.284875" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:50.285468" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:50.285796" 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-19T03:28:50.261298" elapsed="0.024704"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:50.288295" elapsed="0.000971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:50.291153" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:50.290448" elapsed="0.000858"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:50.291903" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:50.291549" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:50.291459" elapsed="0.000666"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:50.292631" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T03:28:50.292335" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:50.292265" elapsed="0.000622"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:50.293004" elapsed="0.000091"/>
</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-19T03:28:50.302483" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:28:50.303126" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:50.303490" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:50.295092" elapsed="0.008605"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:49.917712" elapsed="0.386204"/>
</kw>
<msg time="2026-04-19T03:28:50.304236" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:49.917005" elapsed="0.387291"/>
</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-19T03:28:49.916468" elapsed="0.387928"/>
</kw>
<msg time="2026-04-19T03:28:50.304439" 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-19T03:28:49.915800" elapsed="0.388686"/>
</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-19T03:28:50.307601" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:28:50.308095" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:50.308395" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:50.304780" elapsed="0.003783"/>
</kw>
<msg time="2026-04-19T03:28:50.308653" level="INFO">${output} = 1</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-19T03:28:49.913640" elapsed="0.395039"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:50.309158" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:50.308864" elapsed="0.000340"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:50.309247" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:50.309398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:49.911289" elapsed="0.398134"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:50.309468" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:50.309631" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:49.909178" elapsed="0.400479"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:50.310362" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:50.309814" elapsed="0.000654">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:49.908154" elapsed="0.402482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:52.314201" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:52.313431" elapsed="0.000842"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:52.316344" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:52.315707" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:52.318198" 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-19T03:28:52.318443" 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-19T03:28:52.317834" elapsed="0.000668"/>
</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-19T03:28:52.324834" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:52.324361" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:52.324305" elapsed="0.000762"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:52.326729" 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-19T03:28:52.326972" 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-19T03:28:52.326041" elapsed="0.001048"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:52.328604" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:52.328062" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:52.330684" level="INFO">${conn_id} = 219</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:52.329824" elapsed="0.000957"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:52.333111" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:52.333189" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:52.332810" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:52.333425" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:52.334732" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:52.673566" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:52.334405" elapsed="0.339303"/>
</kw>
<msg time="2026-04-19T03:28:52.673794" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:52.333995" elapsed="0.339889"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:52.331968" elapsed="0.342213"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:52.675657" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:52.698712" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:52.699256" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:52.699583" 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-19T03:28:52.675273" elapsed="0.024518"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:52.701993" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:52.705141" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:52.704156" elapsed="0.001211"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:52.706259" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:52.705733" elapsed="0.000693"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:52.705608" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:52.707344" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:28:52.706869" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:52.706763" elapsed="0.000929"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:52.707865" elapsed="0.000080"/>
</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-19T03:28:52.715087" elapsed="0.000466"/>
</kw>
<kw name="Open 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-19T03:28:52.715857" elapsed="0.000317"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:52.716448" 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-19T03:28:52.710329" elapsed="0.006434"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:52.322810" elapsed="0.394283"/>
</kw>
<msg time="2026-04-19T03:28:52.717594" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:52.321272" elapsed="0.396403"/>
</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-19T03:28:52.320023" elapsed="0.397767"/>
</kw>
<msg time="2026-04-19T03:28:52.717847" 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-19T03:28:52.318852" elapsed="0.399060"/>
</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-19T03:28:52.721974" elapsed="0.000372"/>
</kw>
<kw name="Open 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-19T03:28:52.722510" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:52.722805" 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-19T03:28:52.718356" elapsed="0.004597"/>
</kw>
<msg time="2026-04-19T03:28:52.723060" level="INFO">${output} = 1</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-19T03:28:52.316891" elapsed="0.406196"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:52.723565" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:52.723278" elapsed="0.000334"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:52.723655" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:52.723809" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:52.314761" elapsed="0.409074"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:52.723882" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:28:52.724041" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:52.312579" elapsed="0.411489"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:52.724627" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:52.724225" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:52.311487" elapsed="0.413328">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:54.728453" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:54.727637" elapsed="0.000891"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:54.730120" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:54.729715" elapsed="0.000444"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:54.731294" 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-19T03:28:54.731439" 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-19T03:28:54.731062" elapsed="0.000413"/>
</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-19T03:28:54.736705" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:54.736065" elapsed="0.000750"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:54.735969" elapsed="0.000940"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:54.739241" 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-19T03:28:54.739584" 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-19T03:28:54.738281" elapsed="0.001441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:54.741684" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:54.741114" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:54.743633" level="INFO">${conn_id} = 222</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:54.742859" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:54.745967" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:54.746060" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:54.745684" 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-19T03:28:54.746302" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:54.747726" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:55.073177" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:54.747401" elapsed="0.325930"/>
</kw>
<msg time="2026-04-19T03:28:55.073416" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:54.746857" elapsed="0.326650"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:54.744918" elapsed="0.328873"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:55.075298" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:55.098208" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:55.098448" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:55.098602" 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-19T03:28:55.074885" elapsed="0.023813"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:55.099799" elapsed="0.000481"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:55.101336" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:55.100865" elapsed="0.000577"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:55.101862" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:55.101611" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:55.101550" elapsed="0.000448"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:55.102370" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T03:28:55.102165" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:55.102116" elapsed="0.000418"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:55.102615" 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-19T03:28:55.107506" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:28:55.108177" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:55.108541" 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-19T03:28:55.103961" elapsed="0.004790"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:54.734177" elapsed="0.374799"/>
</kw>
<msg time="2026-04-19T03:28:55.109303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:54.733211" elapsed="0.376153"/>
</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-19T03:28:54.732429" elapsed="0.377018"/>
</kw>
<msg time="2026-04-19T03:28:55.109490" 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-19T03:28:54.731697" elapsed="0.377840"/>
</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-19T03:28:55.112700" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:28:55.113192" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:55.113489" 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-19T03:28:55.109895" elapsed="0.003741"/>
</kw>
<msg time="2026-04-19T03:28:55.113727" level="INFO">${output} = 1</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-19T03:28:54.730462" elapsed="0.383290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:55.114196" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:55.113929" elapsed="0.000315"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:55.114288" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:28:55.114441" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:54.729102" elapsed="0.385364"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:55.114512" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:55.114659" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:54.726739" elapsed="0.387944"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:55.115288" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:55.114847" elapsed="0.000531">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:54.725646" elapsed="0.389846">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:57.119133" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:57.118350" elapsed="0.000855"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:57.121230" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:57.120595" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:57.123116" 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-19T03:28:57.123346" 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-19T03:28:57.122747" elapsed="0.000657"/>
</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-19T03:28:57.129683" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:57.129170" elapsed="0.000596"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:57.129110" elapsed="0.000717"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:57.131618" 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-19T03:28:57.131882" 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-19T03:28:57.130871" elapsed="0.001133"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:57.133614" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:57.133018" elapsed="0.000721"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:57.135519" level="INFO">${conn_id} = 225</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:57.134795" elapsed="0.000824"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:57.138207" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:57.138313" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:57.137794" elapsed="0.000552"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:57.138581" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:57.140012" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:57.460133" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:57.139661" elapsed="0.320637"/>
</kw>
<msg time="2026-04-19T03:28:57.460389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:57.139271" elapsed="0.321217"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:57.136860" elapsed="0.323924"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:57.462346" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:57.485359" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:57.485873" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:57.486253" 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-19T03:28:57.461914" elapsed="0.024551"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:57.488653" elapsed="0.000940"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:57.491863" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:57.490832" elapsed="0.001290"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:57.492980" elapsed="0.000122"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:57.492477" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:57.492351" elapsed="0.000985"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:57.494199" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T03:28:57.493711" elapsed="0.000649"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:57.493602" elapsed="0.000817"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:57.494500" 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-19T03:28:57.499329" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:28:57.499874" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:57.500252" elapsed="0.000127"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:57.495865" elapsed="0.004622"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:57.127722" elapsed="0.372984"/>
</kw>
<msg time="2026-04-19T03:28:57.501013" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:57.126528" elapsed="0.374558"/>
</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-19T03:28:57.125189" elapsed="0.375979"/>
</kw>
<msg time="2026-04-19T03:28:57.501209" 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-19T03:28:57.123820" elapsed="0.377440"/>
</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-19T03:28:57.504337" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:28:57.504810" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:57.505120" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:57.501594" elapsed="0.003674"/>
</kw>
<msg time="2026-04-19T03:28:57.505443" level="INFO">${output} = 1</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-19T03:28:57.121774" elapsed="0.383696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:57.505898" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:57.505648" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:57.505985" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:57.506156" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:57.119656" elapsed="0.386526"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:57.506230" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:28:57.506376" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:57.117481" elapsed="0.388920"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:57.506950" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:57.506557" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:57.116380" elapsed="0.390849">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:28:59.510747" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:28:59.509981" elapsed="0.000836"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:28:59.512849" level="INFO">${member_ip} = 10.30.171.206</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-19T03:28:59.512244" elapsed="0.000665"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:59.514718" 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-19T03:28:59.514946" 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-19T03:28:59.514390" elapsed="0.000616"/>
</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-19T03:28:59.520991" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:28:59.520230" elapsed="0.000865"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:59.520173" elapsed="0.000984"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:59.522632" 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-19T03:28:59.522887" 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-19T03:28:59.522175" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:59.524552" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:59.523964" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:28:59.526446" level="INFO">${conn_id} = 228</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:28:59.525687" elapsed="0.000861"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:28:59.529191" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:28:59.529271" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:28:59.528879" 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-19T03:28:59.529538" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:28:59.530872" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:28:59.857947" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:28:59.530534" elapsed="0.327698"/>
</kw>
<msg time="2026-04-19T03:28:59.858323" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:59.530160" elapsed="0.328254"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:28:59.527776" elapsed="0.330925"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:28:59.860270" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:28:59.882878" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:28:59.883478" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:28:59.883830" 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-19T03:28:59.859819" elapsed="0.024258"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:59.886334" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:59.889547" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:59.888532" elapsed="0.001246"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:59.890935" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:28:59.890278" elapsed="0.000863"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:59.890009" elapsed="0.001260"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:28:59.892313" elapsed="0.000111"/>
</return>
<status status="PASS" start="2026-04-19T03:28:59.891731" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-19T03:28:59.891481" elapsed="0.001092"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:28:59.892684" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:59.899362" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T03:28:59.900147" elapsed="0.000230"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:59.900653" elapsed="0.000141"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:59.894644" elapsed="0.006403"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:28:59.518831" elapsed="0.382536"/>
</kw>
<msg time="2026-04-19T03:28:59.901713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:28:59.517828" elapsed="0.383947"/>
</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-19T03:28:59.516561" elapsed="0.385299"/>
</kw>
<msg time="2026-04-19T03:28:59.901901" 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-19T03:28:59.515393" elapsed="0.386555"/>
</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-19T03:28:59.905171" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:28:59.905647" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:28:59.905940" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:28:59.902382" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T03:28:59.906201" level="INFO">${output} = 1</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-19T03:28:59.513419" elapsed="0.392808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:28:59.906651" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:28:59.906404" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:28:59.906737" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:28:59.906890" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:28:59.511303" elapsed="0.395612"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:28:59.906962" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:28:59.907131" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:28:59.509131" elapsed="0.398026"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:28:59.907774" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:28:59.907369" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:28:59.508084" elapsed="0.399879">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:01.911438" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:01.910671" elapsed="0.000839"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:01.913554" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:01.912914" elapsed="0.000700"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:01.915409" 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-19T03:29:01.915641" 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-19T03:29:01.915083" elapsed="0.000618"/>
</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-19T03:29:01.921314" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:01.920828" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:01.920541" elapsed="0.000913"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:01.922873" 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-19T03:29:01.923134" 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-19T03:29:01.922443" elapsed="0.000790"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:01.924749" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:01.924206" elapsed="0.000651"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:01.926543" level="INFO">${conn_id} = 231</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:01.925820" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:01.928949" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:01.929042" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:01.928668" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:01.929279" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:01.930566" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:02.265860" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:28:59 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:01.930230" elapsed="0.335747"/>
</kw>
<msg time="2026-04-19T03:29:02.266067" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:01.929829" elapsed="0.336318"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:01.927832" elapsed="0.338571"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:02.267854" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:02.291231" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:02.291742" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:02.292124" 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-19T03:29:02.267476" elapsed="0.024863"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:02.294595" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:02.297757" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:02.296750" elapsed="0.001316"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:02.298924" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:02.298426" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:02.298301" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:02.300024" elapsed="0.000153"/>
</return>
<status status="PASS" start="2026-04-19T03:29:02.299580" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:02.299471" elapsed="0.000943"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:02.300595" 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-19T03:29:02.306448" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:29:02.306988" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:02.307361" 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-19T03:29:02.303073" elapsed="0.004494"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:01.919234" elapsed="0.388555"/>
</kw>
<msg time="2026-04-19T03:29:02.308110" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:01.918529" elapsed="0.389640"/>
</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-19T03:29:01.917252" elapsed="0.390997"/>
</kw>
<msg time="2026-04-19T03:29:02.308289" 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-19T03:29:01.916082" elapsed="0.392253"/>
</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-19T03:29:02.311338" 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-19T03:29:02.311850" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:02.312160" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:02.308624" elapsed="0.003682"/>
</kw>
<msg time="2026-04-19T03:29:02.312397" level="INFO">${output} = 1</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-19T03:29:01.914124" elapsed="0.398298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:02.312850" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:02.312604" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:02.312936" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:02.313179" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:01.911965" elapsed="0.401240"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:02.313252" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:29:02.313398" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:01.909804" elapsed="0.403618"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:02.313999" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:02.313578" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:01.908720" elapsed="0.405484">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:04.317800" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:04.317062" elapsed="0.000807"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:04.320096" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:04.319453" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:04.321888" 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-19T03:29:04.322140" 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-19T03:29:04.321564" elapsed="0.000636"/>
</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-19T03:29:04.329700" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:04.329211" elapsed="0.000567"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:04.328887" elapsed="0.000952"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:04.331299" 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-19T03:29:04.331539" 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-19T03:29:04.330833" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:04.333185" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:04.332633" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:04.334944" level="INFO">${conn_id} = 234</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:04.334258" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:04.337363" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:04.337440" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:04.337076" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:04.337674" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:04.338929" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:04.678050" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:04.338606" elapsed="0.339616"/>
</kw>
<msg time="2026-04-19T03:29:04.678312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:04.338241" elapsed="0.340172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:04.336314" elapsed="0.342403"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:04.680494" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:04.703938" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:04.704597" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:04.704929" 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-19T03:29:04.680079" elapsed="0.025106"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:04.707755" elapsed="0.001005"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:04.711326" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:04.710151" elapsed="0.001401"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:04.712748" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:04.711921" elapsed="0.000996"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:04.711797" elapsed="0.001273"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:04.713834" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:29:04.713392" elapsed="0.000834"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:04.713286" elapsed="0.001075"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:04.714537" elapsed="0.000082"/>
</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-19T03:29:04.724737" elapsed="0.000428"/>
</kw>
<kw name="Open 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-19T03:29:04.725390" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:04.725768" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:04.717511" elapsed="0.008471"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:04.326432" elapsed="0.399847"/>
</kw>
<msg time="2026-04-19T03:29:04.726590" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:04.324917" elapsed="0.401742"/>
</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-19T03:29:04.323696" elapsed="0.403045"/>
</kw>
<msg time="2026-04-19T03:29:04.726780" 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-19T03:29:04.322548" elapsed="0.404278"/>
</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-19T03:29:04.729949" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:04.730451" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:04.730748" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:04.727199" elapsed="0.003698"/>
</kw>
<msg time="2026-04-19T03:29:04.730990" level="INFO">${output} = 1</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-19T03:29:04.320636" elapsed="0.410378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:04.731550" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:04.731297" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:04.731678" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:29:04.731848" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:04.318523" elapsed="0.413349"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:04.731919" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:04.732085" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:04.316214" elapsed="0.415896"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:04.732672" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:04.732268" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:04.314984" elapsed="0.417884">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:06.735538" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:06.734879" elapsed="0.000712"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:06.736963" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:06.736574" elapsed="0.000428"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:06.738234" 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-19T03:29:06.738526" 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-19T03:29:06.737955" elapsed="0.000612"/>
</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-19T03:29:06.744062" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:06.743408" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:06.743332" elapsed="0.000936"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:06.799678" 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-19T03:29:06.800070" 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-19T03:29:06.745562" elapsed="0.054615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:06.801913" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:06.801243" elapsed="0.000798"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:06.803814" level="INFO">${conn_id} = 237</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:06.803079" elapsed="0.000837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:06.806413" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:06.806494" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:06.806104" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:06.806751" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:06.808095" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:07.117883" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:04 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:06.807746" elapsed="0.310254"/>
</kw>
<msg time="2026-04-19T03:29:07.118095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:06.807366" elapsed="0.310809"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:06.805277" elapsed="0.313156"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:07.119861" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:07.142344" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:07.142887" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:07.143290" 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-19T03:29:07.119488" elapsed="0.024030"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:07.145805" elapsed="0.000969"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:07.149165" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:07.148123" elapsed="0.001280"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:07.150394" elapsed="0.000073"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:07.149789" elapsed="0.000805"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:07.149660" elapsed="0.001049"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:07.151089" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T03:29:07.150862" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:07.150813" elapsed="0.000443"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:07.151338" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:07.156231" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T03:29:07.156861" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:07.157247" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:07.152747" elapsed="0.004716"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:06.741366" elapsed="0.416339"/>
</kw>
<msg time="2026-04-19T03:29:07.158016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:06.740379" elapsed="0.417714"/>
</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-19T03:29:06.739582" elapsed="0.418610"/>
</kw>
<msg time="2026-04-19T03:29:07.158236" 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-19T03:29:06.738803" elapsed="0.419481"/>
</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-19T03:29:07.161391" elapsed="0.000338"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:07.161902" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:07.162249" 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-19T03:29:07.158581" elapsed="0.003824"/>
</kw>
<msg time="2026-04-19T03:29:07.162497" level="INFO">${output} = 1</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-19T03:29:06.737357" elapsed="0.425165"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:07.162968" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:07.162713" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:07.163145" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:29:07.163305" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:06.735900" elapsed="0.427431"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:07.163378" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:07.163524" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:06.734305" elapsed="0.429244"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:07.164139" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:07.163716" elapsed="0.000503">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:06.733551" elapsed="0.430780">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:09.167997" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:09.167227" elapsed="0.000884"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:09.170070" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:09.169645" elapsed="0.000466"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:09.171469" 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-19T03:29:09.171614" 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-19T03:29:09.171233" elapsed="0.000418"/>
</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-19T03:29:09.177690" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:09.176959" elapsed="0.000885"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:09.176877" elapsed="0.001030"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:09.179403" 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-19T03:29:09.179657" 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-19T03:29:09.178917" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:09.181331" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:09.180760" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:09.183217" level="INFO">${conn_id} = 240</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:09.182483" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:09.185729" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:09.185807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:09.185421" 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-19T03:29:09.186089" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:09.187399" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:09.503895" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:09.187067" elapsed="0.317004"/>
</kw>
<msg time="2026-04-19T03:29:09.504159" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:09.186677" elapsed="0.317572"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:09.184603" elapsed="0.319934"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:09.506077" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:09.529251" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:09.529786" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:09.530177" 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-19T03:29:09.505655" elapsed="0.024735"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:09.532610" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:09.535015" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:09.534409" elapsed="0.000796"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:09.535762" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:09.535436" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:09.535355" elapsed="0.000593"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:09.536462" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:29:09.536179" elapsed="0.000480"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:09.536110" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:09.536863" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:09.544002" elapsed="0.000510"/>
</kw>
<kw name="Open 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-19T03:29:09.544811" elapsed="0.000275"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:09.545401" 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-19T03:29:09.538740" elapsed="0.006953"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:09.174600" elapsed="0.371317"/>
</kw>
<msg time="2026-04-19T03:29:09.546312" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:09.173477" elapsed="0.372898"/>
</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-19T03:29:09.172652" elapsed="0.373809"/>
</kw>
<msg time="2026-04-19T03:29:09.546502" 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-19T03:29:09.171875" elapsed="0.374673"/>
</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-19T03:29:09.549517" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:29:09.549994" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:09.550325" 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-19T03:29:09.546843" elapsed="0.003630"/>
</kw>
<msg time="2026-04-19T03:29:09.550565" level="INFO">${output} = 1</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-19T03:29:09.170599" elapsed="0.379992"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:09.551054" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:09.550791" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:09.551143" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:09.551295" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:09.168588" elapsed="0.382733"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:09.551367" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:09.551511" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:09.166333" elapsed="0.385203"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:09.552102" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:09.551692" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:09.165209" elapsed="0.387082">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:11.555848" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:11.555091" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:11.557936" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:11.557409" elapsed="0.000564"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:11.559124" 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-19T03:29:11.559268" 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-19T03:29:11.558872" elapsed="0.000432"/>
</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-19T03:29:11.564958" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:11.564304" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:11.564225" elapsed="0.000945"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:11.567159" 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-19T03:29:11.567497" 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-19T03:29:11.566528" elapsed="0.001108"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:11.569817" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:11.569091" elapsed="0.000835"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:11.571712" level="INFO">${conn_id} = 243</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:11.570958" elapsed="0.000856"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:11.574084" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:11.574163" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:11.573786" 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-19T03:29:11.574405" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:11.575791" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:11.904146" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:11.575466" elapsed="0.328819"/>
</kw>
<msg time="2026-04-19T03:29:11.904368" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:11.574954" elapsed="0.329498"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:11.573018" elapsed="0.331726"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:11.906249" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:11.929276" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:11.929792" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:11.930174" 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-19T03:29:11.905844" elapsed="0.024545"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:11.932598" elapsed="0.001014"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:11.935878" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:11.934878" elapsed="0.001264"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:11.937022" elapsed="0.000097"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:11.936493" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:11.936370" elapsed="0.000978"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:11.938157" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T03:29:11.937671" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:11.937564" elapsed="0.001072"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:11.938800" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:11.943653" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:29:11.944239" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:11.944602" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:11.940193" elapsed="0.004650"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:11.562065" elapsed="0.383017"/>
</kw>
<msg time="2026-04-19T03:29:11.945389" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:11.561110" elapsed="0.384341"/>
</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-19T03:29:11.560299" elapsed="0.385234"/>
</kw>
<msg time="2026-04-19T03:29:11.945574" 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-19T03:29:11.559528" elapsed="0.386093"/>
</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-19T03:29:11.948761" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:29:11.949266" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:11.949563" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:11.945999" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T03:29:11.949807" level="INFO">${output} = 1</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-19T03:29:11.558295" elapsed="0.391538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:11.950302" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:11.950049" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:11.950402" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:29:11.950557" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:11.556402" elapsed="0.394181"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:11.950631" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:11.950775" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:11.554259" elapsed="0.396541"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:11.951465" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:11.950958" elapsed="0.000577">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:11.553171" elapsed="0.398475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:13.955240" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:13.954451" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:13.957354" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:13.956718" elapsed="0.000695"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:13.959209" 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-19T03:29:13.959437" 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-19T03:29:13.958836" elapsed="0.000660"/>
</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-19T03:29:13.965685" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:13.965025" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:13.964948" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:13.967854" 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-19T03:29:13.968227" 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-19T03:29:13.967251" elapsed="0.001114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:13.970498" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:13.969720" elapsed="0.000929"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:13.973012" level="INFO">${conn_id} = 246</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:13.971991" elapsed="0.001133"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:13.975353" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:13.975430" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:13.975068" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:13.975663" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:13.977158" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:14.297872" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:11 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:13.976816" elapsed="0.321228"/>
</kw>
<msg time="2026-04-19T03:29:14.298136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:13.976442" elapsed="0.321787"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:13.974308" elapsed="0.324201"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:14.299973" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:14.322609" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:14.323174" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:14.323505" 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-19T03:29:14.299586" elapsed="0.024132"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:14.326016" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:14.329163" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:14.328198" elapsed="0.001194"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:14.330318" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:14.329737" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:14.329614" elapsed="0.000998"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:14.331446" elapsed="0.000112"/>
</return>
<status status="PASS" start="2026-04-19T03:29:14.330950" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:14.330828" elapsed="0.000962"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:14.331971" elapsed="0.000233"/>
</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-19T03:29:14.338458" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:29:14.339008" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:14.339383" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:14.335002" elapsed="0.004589"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:13.962752" elapsed="0.377063"/>
</kw>
<msg time="2026-04-19T03:29:14.340188" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:13.961799" elapsed="0.378446"/>
</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-19T03:29:13.961060" elapsed="0.379268"/>
</kw>
<msg time="2026-04-19T03:29:14.340369" 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-19T03:29:13.959851" elapsed="0.380565"/>
</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-19T03:29:14.343378" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:29:14.343852" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:14.344416" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:14.340717" elapsed="0.003872"/>
</kw>
<msg time="2026-04-19T03:29:14.344745" level="INFO">${output} = 1</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-19T03:29:13.957891" elapsed="0.386881"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:14.345217" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:14.344951" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:14.345305" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:14.345457" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:13.955766" elapsed="0.389716"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:14.345530" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:14.345673" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:13.953610" elapsed="0.392088"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:14.346268" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:14.345854" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:13.952530" elapsed="0.393955">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:16.349937" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:16.349218" elapsed="0.000788"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:16.352075" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:16.351455" elapsed="0.000680"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:16.353881" 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-19T03:29:16.354133" 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-19T03:29:16.353555" elapsed="0.000638"/>
</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-19T03:29:16.359728" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:16.359257" elapsed="0.000549"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:16.358935" elapsed="0.000930"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:16.361309" 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-19T03:29:16.361548" 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-19T03:29:16.360854" elapsed="0.000792"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:16.363172" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:16.362605" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:16.364948" level="INFO">${conn_id} = 249</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:16.364239" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:16.367543" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:16.367621" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:16.367258" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:16.367856" elapsed="0.000345"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:16.369200" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:16.688698" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:16.368814" elapsed="0.320137"/>
</kw>
<msg time="2026-04-19T03:29:16.689059" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:16.368449" elapsed="0.320710"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:16.366361" elapsed="0.323082"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:16.690926" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:16.713698" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:16.714279" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:16.714639" 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-19T03:29:16.690532" elapsed="0.024335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:16.717169" elapsed="0.000565"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:16.719180" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:16.718536" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:16.719878" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:16.719555" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:16.719475" elapsed="0.000614"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:16.720594" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:29:16.720294" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:16.720224" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:16.720928" elapsed="0.000051"/>
</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-19T03:29:16.727677" 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-19T03:29:16.728482" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:16.728977" elapsed="0.000163"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:16.722779" elapsed="0.006508"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:16.357626" elapsed="0.372006"/>
</kw>
<msg time="2026-04-19T03:29:16.729957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:16.356923" elapsed="0.373092"/>
</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-19T03:29:16.355689" elapsed="0.374522"/>
</kw>
<msg time="2026-04-19T03:29:16.730255" 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-19T03:29:16.354541" elapsed="0.375761"/>
</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-19T03:29:16.733360" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:29:16.733840" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:16.734155" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:16.730592" elapsed="0.003714"/>
</kw>
<msg time="2026-04-19T03:29:16.734398" level="INFO">${output} = 1</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-19T03:29:16.352628" elapsed="0.381796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:16.734848" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:16.734600" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:16.734938" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:29:16.735127" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:16.350521" elapsed="0.384632"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:16.735201" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:16.735347" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:16.348385" elapsed="0.386995"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:16.735981" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:16.735583" elapsed="0.000492">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:16.347306" elapsed="0.388880">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:18.739651" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:18.738884" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:18.741866" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:18.741215" elapsed="0.000716"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:18.743742" 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-19T03:29:18.743971" 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-19T03:29:18.743419" elapsed="0.000640"/>
</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-19T03:29:18.750078" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:18.749387" elapsed="0.000821"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:18.748969" elapsed="0.001320"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:18.752264" 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-19T03:29:18.752614" 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-19T03:29:18.751636" elapsed="0.001119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:18.754879" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:18.754123" elapsed="0.001227"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:18.757508" level="INFO">${conn_id} = 252</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:18.756723" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:18.759956" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:18.760070" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:18.759639" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:18.760318" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:18.761602" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:19.086753" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:18.761277" elapsed="0.325599"/>
</kw>
<msg time="2026-04-19T03:29:19.086951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:18.760882" elapsed="0.326172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:18.758819" elapsed="0.328487"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:19.088765" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:19.111710" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:19.111940" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:19.112117" 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-19T03:29:19.088370" elapsed="0.023845"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:19.113224" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:19.114643" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:19.114212" elapsed="0.000532"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:19.115159" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:19.114905" elapsed="0.000330"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:19.114848" elapsed="0.000443"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:19.115634" elapsed="0.000050"/>
</return>
<status status="PASS" start="2026-04-19T03:29:19.115434" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:19.115385" elapsed="0.000404"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:19.115868" 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-19T03:29:19.120583" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:19.121169" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:19.121526" 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-19T03:29:19.117250" elapsed="0.004482"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:18.747118" elapsed="0.374836"/>
</kw>
<msg time="2026-04-19T03:29:19.122458" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:18.746154" elapsed="0.376364"/>
</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-19T03:29:18.745384" elapsed="0.377218"/>
</kw>
<msg time="2026-04-19T03:29:19.122643" 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-19T03:29:18.744453" elapsed="0.378236"/>
</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-19T03:29:19.125796" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:29:19.126286" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:19.126579" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:19.122979" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T03:29:19.126814" level="INFO">${output} = 1</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-19T03:29:18.742475" elapsed="0.384364"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:19.127285" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:19.127023" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:19.127372" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:29:19.127524" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:18.740204" elapsed="0.387346"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:19.127596" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:19.127739" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:18.738074" elapsed="0.389690"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:19.128327" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:19.127919" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:18.736992" elapsed="0.391549">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:21.131168" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:21.130605" elapsed="0.000615"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:21.132826" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:21.132415" elapsed="0.000448"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:21.134076" 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-19T03:29:21.134225" 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-19T03:29:21.133782" elapsed="0.000485"/>
</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-19T03:29:21.142644" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:21.141839" elapsed="0.000967"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:21.139132" elapsed="0.003772"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:21.144949" 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-19T03:29:21.145378" 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-19T03:29:21.144298" elapsed="0.001218"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:21.147796" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:21.146981" elapsed="0.000962"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:21.150349" level="INFO">${conn_id} = 255</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:21.149266" elapsed="0.001221"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:21.153701" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:21.153791" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:21.153301" elapsed="0.000515"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:21.154199" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:21.155535" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:21.472022" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:21.155204" elapsed="0.316969"/>
</kw>
<msg time="2026-04-19T03:29:21.472254" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:21.154788" elapsed="0.317569"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:21.152132" elapsed="0.320505"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:21.474120" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:21.497071" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:21.497569" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:21.497904" 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-19T03:29:21.473719" elapsed="0.024438"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:21.500403" elapsed="0.000858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:21.502676" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:21.502066" elapsed="0.000755"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:21.503507" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:21.503097" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:21.502967" elapsed="0.000727"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:21.504213" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:29:21.503898" elapsed="0.000456"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:21.503828" elapsed="0.000609"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:21.504616" elapsed="0.000057"/>
</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-19T03:29:21.510609" 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-19T03:29:21.511326" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:21.511710" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:21.506516" elapsed="0.005405"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:21.137191" elapsed="0.374983"/>
</kw>
<msg time="2026-04-19T03:29:21.512491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:21.136132" elapsed="0.376422"/>
</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-19T03:29:21.135319" elapsed="0.377339"/>
</kw>
<msg time="2026-04-19T03:29:21.512700" 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-19T03:29:21.134511" elapsed="0.378235"/>
</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-19T03:29:21.515945" 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-19T03:29:21.516462" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:21.516799" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:21.513062" elapsed="0.003890"/>
</kw>
<msg time="2026-04-19T03:29:21.517066" level="INFO">${output} = 1</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-19T03:29:21.133216" elapsed="0.383883"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:21.517579" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:21.517319" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:21.517669" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:29:21.517825" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:21.131804" elapsed="0.386047"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:21.517899" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:29:21.518063" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:21.130024" elapsed="0.388065"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:21.518648" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:21.518250" elapsed="0.000470">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:21.129236" elapsed="0.389594">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:23.522479" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:23.521688" elapsed="0.000863"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:23.524589" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:23.523952" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:23.526386" 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-19T03:29:23.526741" 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-19T03:29:23.526149" elapsed="0.000632"/>
</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-19T03:29:23.532071" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:23.531418" elapsed="0.000769"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:23.531341" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:23.534489" 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-19T03:29:23.534734" 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-19T03:29:23.533656" elapsed="0.001176"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:23.536377" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:23.535817" elapsed="0.000670"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:23.538186" level="INFO">${conn_id} = 258</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:23.537456" elapsed="0.000827"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:23.540607" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:23.540685" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:23.540327" elapsed="0.000382"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:23.540919" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:23.542233" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:23.908789" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:23.541887" elapsed="0.367027"/>
</kw>
<msg time="2026-04-19T03:29:23.908992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:23.541492" elapsed="0.367600"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:23.539561" elapsed="0.369789"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:23.910793" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:23.933539" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:23.934065" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:23.934404" 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-19T03:29:23.910421" elapsed="0.024190"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:23.937194" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:23.940429" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:23.939406" elapsed="0.001258"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:23.941551" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:23.941015" elapsed="0.000702"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:23.940892" elapsed="0.000950"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:23.942657" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:29:23.942201" elapsed="0.000681"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:23.942089" elapsed="0.001145"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:23.943422" elapsed="0.000086"/>
</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-19T03:29:23.950861" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T03:29:23.951532" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:23.951891" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:23.946413" elapsed="0.005714"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:23.529482" elapsed="0.422874"/>
</kw>
<msg time="2026-04-19T03:29:23.952661" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:23.528528" elapsed="0.424190"/>
</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-19T03:29:23.527757" elapsed="0.425044"/>
</kw>
<msg time="2026-04-19T03:29:23.952843" 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-19T03:29:23.527008" elapsed="0.425882"/>
</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-19T03:29:23.955969" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:29:23.956490" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:23.956786" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:23.953207" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T03:29:23.957026" level="INFO">${output} = 1</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-19T03:29:23.525162" elapsed="0.431908"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:23.957505" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:23.957256" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:23.957592" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:23.957746" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:23.523003" elapsed="0.434769"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:23.957819" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:23.957964" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:23.520777" elapsed="0.437212"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:23.958555" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:23.958165" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:23.519692" elapsed="0.439047">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:25.962417" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:25.961613" elapsed="0.000875"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:25.964536" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:25.963896" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:25.966408" 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-19T03:29:25.966560" 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-19T03:29:25.966132" elapsed="0.000467"/>
</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-19T03:29:25.972157" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:25.971474" elapsed="0.000900"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:25.971394" elapsed="0.001069"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:25.974930" 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-19T03:29:25.975191" 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-19T03:29:25.973936" elapsed="0.001354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:25.976793" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:25.976258" elapsed="0.000642"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:25.978661" level="INFO">${conn_id} = 261</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:25.977877" elapsed="0.000879"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:25.981001" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:25.981096" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:25.980706" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:25.981334" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:25.982731" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:26.303004" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:23 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:25.982404" elapsed="0.320809"/>
</kw>
<msg time="2026-04-19T03:29:26.303304" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:25.981919" elapsed="0.321482"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:25.979936" elapsed="0.323767"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:26.305236" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:26.328297" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:26.328901" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:26.329286" 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-19T03:29:26.304813" elapsed="0.024687"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:26.331834" elapsed="0.001003"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:26.335335" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:26.334143" elapsed="0.001569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:26.336468" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:26.336094" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:26.335937" elapsed="0.000668"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:26.336957" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-19T03:29:26.336752" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:26.336703" elapsed="0.000443"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:26.337228" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:26.342216" 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-19T03:29:26.342770" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:26.343152" 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-19T03:29:26.338639" elapsed="0.004758"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:25.969437" elapsed="0.374186"/>
</kw>
<msg time="2026-04-19T03:29:26.344007" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:25.968424" elapsed="0.375666"/>
</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-19T03:29:25.967614" elapsed="0.376563"/>
</kw>
<msg time="2026-04-19T03:29:26.344225" 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-19T03:29:25.966835" elapsed="0.377437"/>
</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-19T03:29:26.347371" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:29:26.347896" elapsed="0.000253"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:26.348305" 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-19T03:29:26.344571" elapsed="0.003889"/>
</kw>
<msg time="2026-04-19T03:29:26.348559" level="INFO">${output} = 1</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-19T03:29:25.965132" elapsed="0.383454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:26.349091" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:26.348814" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:26.349187" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:29:26.349360" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:25.962944" elapsed="0.386443"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:26.349436" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:26.349587" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:25.960763" elapsed="0.388850"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:26.350302" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:26.349776" elapsed="0.000608">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:25.959689" elapsed="0.390815">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:28.354331" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:28.353549" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:28.356083" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:28.355663" elapsed="0.000460"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:28.357306" 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-19T03:29:28.357461" 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-19T03:29:28.357067" elapsed="0.000432"/>
</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-19T03:29:28.363090" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:28.362362" elapsed="0.000843"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:28.362280" elapsed="0.001016"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:28.365002" 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-19T03:29:28.365268" 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-19T03:29:28.364306" elapsed="0.001063"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:28.366896" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:28.366340" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:28.368776" level="INFO">${conn_id} = 264</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:28.368078" elapsed="0.000797"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:28.371223" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:28.371301" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:28.370916" elapsed="0.000409"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:28.371538" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:28.372789" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:28.739352" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:28.372463" elapsed="0.367030"/>
</kw>
<msg time="2026-04-19T03:29:28.739576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:28.372104" elapsed="0.367558"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:28.370133" elapsed="0.369824"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:28.741446" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:28.764280" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:28.764778" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:28.765150" 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-19T03:29:28.741059" elapsed="0.024300"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:28.767556" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:28.769907" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:28.769295" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:28.770650" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:28.770309" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:28.770223" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:28.771352" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:29:28.771064" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:28.770970" elapsed="0.000603"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:28.771683" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:28.777787" 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-19T03:29:28.778347" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:28.778705" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:28.773646" elapsed="0.005270"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:28.360357" elapsed="0.418799"/>
</kw>
<msg time="2026-04-19T03:29:28.779462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:28.359334" elapsed="0.420186"/>
</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-19T03:29:28.358524" elapsed="0.421080"/>
</kw>
<msg time="2026-04-19T03:29:28.779645" 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-19T03:29:28.357731" elapsed="0.421961"/>
</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-19T03:29:28.782851" 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-19T03:29:28.783345" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:28.783642" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:28.780085" elapsed="0.003708"/>
</kw>
<msg time="2026-04-19T03:29:28.783917" level="INFO">${output} = 1</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-19T03:29:28.356440" elapsed="0.427506"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:28.784393" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:28.784143" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:28.784480" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:29:28.784630" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:28.354903" elapsed="0.429752"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:28.784702" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:28.784848" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:28.352702" elapsed="0.432170"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:28.785462" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:28.785031" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:28.351613" elapsed="0.434032">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:30.790410" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:30.789221" elapsed="0.001282"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:30.792579" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:30.791948" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:30.794508" 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-19T03:29:30.794736" 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-19T03:29:30.794144" elapsed="0.000651"/>
</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-19T03:29:30.801050" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:30.800564" elapsed="0.000568"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:30.800248" elapsed="0.000945"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:30.802636" 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-19T03:29:30.802887" 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-19T03:29:30.802191" elapsed="0.000798"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:30.804550" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:30.803982" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:30.806389" level="INFO">${conn_id} = 267</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:30.805675" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:30.808837" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:30.808916" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:30.808549" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:30.809167" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:30.810538" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:31.131575" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:28 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:30.810214" elapsed="0.321506"/>
</kw>
<msg time="2026-04-19T03:29:31.131803" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:30.809836" elapsed="0.322057"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:30.807686" elapsed="0.324514"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:31.133678" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:31.156503" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:31.156988" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:31.157365" 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-19T03:29:31.133290" elapsed="0.024284"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:31.159800" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:31.162938" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:31.161927" elapsed="0.001274"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:31.164078" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:31.163549" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:31.163428" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:31.165170" elapsed="0.000116"/>
</return>
<status status="PASS" start="2026-04-19T03:29:31.164689" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:31.164581" elapsed="0.000944"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:31.165702" elapsed="0.000086"/>
</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-19T03:29:31.171580" 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-19T03:29:31.172141" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:31.172502" 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-19T03:29:31.168068" elapsed="0.004644"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:30.798875" elapsed="0.374060"/>
</kw>
<msg time="2026-04-19T03:29:31.173264" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:30.797647" elapsed="0.375675"/>
</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-19T03:29:30.796373" elapsed="0.377033"/>
</kw>
<msg time="2026-04-19T03:29:31.173447" 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-19T03:29:30.795185" elapsed="0.378308"/>
</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-19T03:29:31.176528" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:29:31.177002" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:31.177313" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:31.173785" elapsed="0.003676"/>
</kw>
<msg time="2026-04-19T03:29:31.177613" level="INFO">${output} = 1</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-19T03:29:30.793162" elapsed="0.384478"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:31.178161" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:31.177819" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:31.178251" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:29:31.178418" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:30.791003" elapsed="0.387441"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:31.178492" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:31.178639" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:30.788350" elapsed="0.390314"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:31.179232" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:31.178821" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:30.787205" elapsed="0.392239">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:33.182934" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:33.182164" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:33.185066" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:33.184433" elapsed="0.000697"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:33.186900" 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-19T03:29:33.187157" 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-19T03:29:33.186555" elapsed="0.000663"/>
</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-19T03:29:33.194017" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:33.193539" elapsed="0.000575"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:33.193237" elapsed="0.000935"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:33.195915" 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-19T03:29:33.196192" 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-19T03:29:33.195403" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:33.197833" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:33.197286" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:33.199634" level="INFO">${conn_id} = 270</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:33.198917" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:33.202043" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:33.202126" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:33.201737" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:33.202361" elapsed="0.000343"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:33.203675" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:33.523732" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:33.203350" elapsed="0.320572"/>
</kw>
<msg time="2026-04-19T03:29:33.523992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:33.202951" elapsed="0.321137"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:33.200967" elapsed="0.323359"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:33.525704" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:33.548810" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:33.549341" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:33.549680" 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-19T03:29:33.525351" elapsed="0.024539"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:33.552169" elapsed="0.000672"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:33.554226" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:33.553620" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:33.554898" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:33.554589" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:33.554511" elapsed="0.000596"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:33.555635" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:29:33.555308" elapsed="0.000467"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:33.555240" elapsed="0.000618"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:33.555965" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:33.562066" 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-19T03:29:33.562612" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:33.562962" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:33.557839" elapsed="0.005348"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:33.191636" elapsed="0.371771"/>
</kw>
<msg time="2026-04-19T03:29:33.563729" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:33.189968" elapsed="0.373817"/>
</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-19T03:29:33.188744" elapsed="0.375124"/>
</kw>
<msg time="2026-04-19T03:29:33.563909" 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-19T03:29:33.187570" elapsed="0.376385"/>
</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-19T03:29:33.567130" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:29:33.567638" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:33.567934" elapsed="0.000111"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:33.564457" elapsed="0.003642"/>
</kw>
<msg time="2026-04-19T03:29:33.568191" level="INFO">${output} = 1</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-19T03:29:33.185613" elapsed="0.382603"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:33.568640" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:33.568389" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:33.568727" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:29:33.568878" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:33.183494" elapsed="0.385408"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:33.568948" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:33.569176" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:33.181326" elapsed="0.387876"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:33.569800" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:33.569405" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:33.180283" elapsed="0.389702">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:35.573784" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:35.573011" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:35.575921" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:35.575314" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:35.577766" 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-19T03:29:35.577992" 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-19T03:29:35.577443" elapsed="0.000639"/>
</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-19T03:29:35.586435" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:35.585741" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:35.583193" elapsed="0.003446"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:35.588362" 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-19T03:29:35.588603" 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-19T03:29:35.587899" elapsed="0.000803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:35.590294" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:35.589672" elapsed="0.000730"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:35.592078" level="INFO">${conn_id} = 273</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:35.591374" elapsed="0.000805"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:35.594531" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:35.594610" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:35.594243" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:35.594845" elapsed="0.000378"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:35.596144" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:35.908576" 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 Sun Apr 19 03:28:37 UTC 2026

  System load:  0.15               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:35.595805" elapsed="0.312892"/>
</kw>
<msg time="2026-04-19T03:29:35.908776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:35.595444" elapsed="0.313418"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:35.593378" elapsed="0.315773"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:35.910590" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:35.933015" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:35.933546" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:35.933870" 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-19T03:29:35.910204" elapsed="0.023915"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:35.936332" elapsed="0.000890"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:35.939428" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:35.938463" elapsed="0.001217"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:35.940552" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:35.940052" elapsed="0.000669"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:35.939903" elapsed="0.000942"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:35.941645" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:29:35.941199" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:35.941085" elapsed="0.000909"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:35.942322" elapsed="0.000086"/>
</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-19T03:29:35.948389" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:29:35.948940" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:35.949311" 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-19T03:29:35.944905" elapsed="0.004611"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:35.581350" elapsed="0.368393"/>
</kw>
<msg time="2026-04-19T03:29:35.950107" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:35.580385" elapsed="0.369781"/>
</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-19T03:29:35.579620" elapsed="0.370629"/>
</kw>
<msg time="2026-04-19T03:29:35.950291" 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-19T03:29:35.578436" elapsed="0.371901"/>
</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-19T03:29:35.953324" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:29:35.953799" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:35.954207" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:35.950627" elapsed="0.003731"/>
</kw>
<msg time="2026-04-19T03:29:35.954449" level="INFO">${output} = 1</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-19T03:29:35.576496" elapsed="0.377978"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:35.954900" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:35.954653" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:35.954987" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:29:35.955156" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:35.574351" elapsed="0.380830"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:35.955228" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:35.955372" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:35.572194" elapsed="0.383203"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:35.956048" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:35.955567" elapsed="0.000568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:35.571108" elapsed="0.385142">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:37.959814" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:37.959066" elapsed="0.000818"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:37.962138" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:37.961502" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:37.963522" 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-19T03:29:37.963670" 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-19T03:29:37.963304" elapsed="0.000404"/>
</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-19T03:29:37.969122" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:37.968461" elapsed="0.000774"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:37.968383" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:37.971393" 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-19T03:29:37.971646" 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-19T03:29:37.970693" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:37.973318" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:37.972754" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:37.975153" level="INFO">${conn_id} = 276</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:37.974434" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:37.977564" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:37.977642" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:37.977277" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:37.977876" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:37.979180" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:38.582139" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:37.978837" elapsed="0.603516"/>
</kw>
<msg time="2026-04-19T03:29:38.582451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:37.978472" elapsed="0.604103"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:37.976508" elapsed="0.606383"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:38.584482" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:38.607607" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:38.608162" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:38.608498" 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-19T03:29:38.584071" elapsed="0.024640"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:38.610940" elapsed="0.000956"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:38.614261" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:38.613256" elapsed="0.001236"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:38.615640" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:38.614862" elapsed="0.000906"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:38.614730" elapsed="0.001101"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:38.616208" elapsed="0.000056"/>
</return>
<status status="PASS" start="2026-04-19T03:29:38.615983" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:38.615933" elapsed="0.000479"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:38.616497" 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-19T03:29:38.621334" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:29:38.621889" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:38.622271" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:38.617926" elapsed="0.004556"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:37.966513" elapsed="0.656196"/>
</kw>
<msg time="2026-04-19T03:29:38.623016" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:37.965434" elapsed="0.657676"/>
</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-19T03:29:37.964668" elapsed="0.658535"/>
</kw>
<msg time="2026-04-19T03:29:38.623245" 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-19T03:29:37.963930" elapsed="0.659362"/>
</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-19T03:29:38.626340" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:29:38.626820" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:38.627137" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:38.623585" elapsed="0.003706"/>
</kw>
<msg time="2026-04-19T03:29:38.627384" level="INFO">${output} = 1</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-19T03:29:37.962703" elapsed="0.664706"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:38.627836" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:38.627590" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:38.627923" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:38.628091" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:37.960536" elapsed="0.667580"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:38.628165" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:38.628310" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:37.958187" elapsed="0.670147"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:38.628880" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:38.628490" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:37.957085" elapsed="0.672091">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:40.632665" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:40.631899" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:40.634478" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:40.634075" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:40.635641" 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-19T03:29:40.635897" 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-19T03:29:40.635420" elapsed="0.000515"/>
</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-19T03:29:40.641286" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:40.640636" elapsed="0.000811"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:40.640560" elapsed="0.000975"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:40.643426" 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-19T03:29:40.643676" 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-19T03:29:40.642613" elapsed="0.001165"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:40.645397" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:40.644781" elapsed="0.000740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:40.647336" level="INFO">${conn_id} = 279</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:40.646527" elapsed="0.000914"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:40.649778" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:40.649858" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:40.649481" 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-19T03:29:40.650124" elapsed="0.000336"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:40.651557" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:40.977062" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:40.651226" elapsed="0.326030"/>
</kw>
<msg time="2026-04-19T03:29:40.977366" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:40.650685" elapsed="0.326795"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:40.648650" elapsed="0.329252"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:40.979933" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:41.002875" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:41.003503" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:41.003831" 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-19T03:29:40.979411" elapsed="0.024659"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:41.006378" elapsed="0.000987"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:41.009619" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:41.008636" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:41.010846" elapsed="0.000114"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:41.010286" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:41.010161" elapsed="0.001152"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:41.012509" elapsed="0.000152"/>
</return>
<status status="PASS" start="2026-04-19T03:29:41.011654" elapsed="0.001133"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:41.011539" elapsed="0.001393"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:41.013178" elapsed="0.000102"/>
</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-19T03:29:41.024332" elapsed="0.000780"/>
</kw>
<kw name="Open 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-19T03:29:41.025712" elapsed="0.000473"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:41.026635" elapsed="0.000189"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:41.016503" elapsed="0.010475"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:40.638670" elapsed="0.388655"/>
</kw>
<msg time="2026-04-19T03:29:41.027764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:40.637701" elapsed="0.390149"/>
</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-19T03:29:40.636909" elapsed="0.391059"/>
</kw>
<msg time="2026-04-19T03:29:41.028061" 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-19T03:29:40.636182" elapsed="0.391950"/>
</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-19T03:29:41.031939" 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-19T03:29:41.032481" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:41.032780" 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-19T03:29:41.028541" elapsed="0.004393"/>
</kw>
<msg time="2026-04-19T03:29:41.033043" level="INFO">${output} = 1</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-19T03:29:40.634822" elapsed="0.398249"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:41.033513" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:41.033260" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:41.033601" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:29:41.033757" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:40.633226" elapsed="0.400575"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:41.033856" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:29:41.034007" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:40.631088" elapsed="0.402960"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:41.034614" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:41.034210" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:40.629995" elapsed="0.404813">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:43.038545" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:43.037726" elapsed="0.000892"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:43.040841" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:43.040212" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:43.042002" 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-19T03:29:43.042169" 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-19T03:29:43.041780" elapsed="0.000427"/>
</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-19T03:29:43.047486" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:43.046836" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:43.046760" elapsed="0.001105"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:43.049831" 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-19T03:29:43.050103" 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-19T03:29:43.049144" elapsed="0.001058"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:43.051704" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:43.051165" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:43.053522" level="INFO">${conn_id} = 282</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:43.052807" elapsed="0.000815"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:43.055956" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:43.056050" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:43.055636" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:43.056291" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:43.057570" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:43.361971" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:43.057244" elapsed="0.304931"/>
</kw>
<msg time="2026-04-19T03:29:43.362269" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:43.056862" elapsed="0.305515"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:43.054865" elapsed="0.307850"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:43.364321" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:43.387454" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:43.388100" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:43.388450" 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-19T03:29:43.363861" elapsed="0.024802"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:43.391150" elapsed="0.001111"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:43.394019" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:43.393336" elapsed="0.000857"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:43.394802" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:43.394440" elapsed="0.000472"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:43.394356" 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-19T03:29:43.395534" elapsed="0.000084"/>
</return>
<status status="PASS" start="2026-04-19T03:29:43.395235" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:43.395163" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:43.395891" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:43.402464" 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-19T03:29:43.403354" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:43.403749" elapsed="0.000113"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:43.397973" elapsed="0.005998"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:43.044919" elapsed="0.359342"/>
</kw>
<msg time="2026-04-19T03:29:43.404897" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:43.043927" elapsed="0.361044"/>
</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-19T03:29:43.043163" elapsed="0.361911"/>
</kw>
<msg time="2026-04-19T03:29:43.405117" 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-19T03:29:43.042429" elapsed="0.362737"/>
</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-19T03:29:43.408368" 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-19T03:29:43.408883" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:43.409200" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:43.405485" elapsed="0.003867"/>
</kw>
<msg time="2026-04-19T03:29:43.409449" level="INFO">${output} = 1</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-19T03:29:43.041201" elapsed="0.368273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:43.409943" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:43.409683" elapsed="0.000306"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:43.410051" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:29:43.410215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:43.039136" elapsed="0.371105"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:43.410290" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:43.410438" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:43.036820" elapsed="0.373643"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:43.411020" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:43.410621" elapsed="0.000546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:43.035662" elapsed="0.375617">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:45.414905" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:45.414133" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:45.417109" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:45.416464" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:45.419102" 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-19T03:29:45.419373" 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-19T03:29:45.418718" elapsed="0.000733"/>
</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-19T03:29:45.425101" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:45.424598" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:45.424277" elapsed="0.000968"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:45.426722" 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-19T03:29:45.426967" 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-19T03:29:45.426269" elapsed="0.000817"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:45.428634" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:45.428072" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:45.430534" level="INFO">${conn_id} = 285</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:45.429817" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:45.433040" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:45.433120" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:45.432724" 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-19T03:29:45.433352" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:45.434611" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:45.763062" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:45.434289" elapsed="0.328932"/>
</kw>
<msg time="2026-04-19T03:29:45.763313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:45.433912" elapsed="0.329518"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:45.431960" elapsed="0.331770"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:45.765244" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:45.787832" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:45.788370" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:45.788696" 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-19T03:29:45.764832" elapsed="0.024071"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:45.791182" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:45.794380" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:45.793385" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:45.795490" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:45.794956" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:45.794832" elapsed="0.000946"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:45.796579" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:29:45.796131" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:45.795991" elapsed="0.001025"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:45.797354" elapsed="0.000085"/>
</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-19T03:29:45.803039" 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-19T03:29:45.803585" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:45.803940" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:45.799563" elapsed="0.004606"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:45.422893" elapsed="0.381501"/>
</kw>
<msg time="2026-04-19T03:29:45.804702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:45.422182" elapsed="0.382577"/>
</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-19T03:29:45.421189" elapsed="0.383654"/>
</kw>
<msg time="2026-04-19T03:29:45.804885" 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-19T03:29:45.419816" elapsed="0.385116"/>
</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-19T03:29:45.808599" 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-19T03:29:45.809107" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:45.809411" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:45.805557" elapsed="0.004003"/>
</kw>
<msg time="2026-04-19T03:29:45.809654" level="INFO">${output} = 1</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-19T03:29:45.417671" elapsed="0.392009"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:45.810167" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:45.809875" elapsed="0.000337"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:45.810256" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:29:45.810412" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:45.415487" elapsed="0.394951"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:45.810484" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:45.810630" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:45.413257" elapsed="0.397398"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:45.811232" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:45.810812" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:45.412138" elapsed="0.399286">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:47.815490" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:47.814517" elapsed="0.001070"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:47.817649" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:47.817013" elapsed="0.000696"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:47.819517" 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-19T03:29:47.819796" 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-19T03:29:47.819172" elapsed="0.000683"/>
</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-19T03:29:47.823986" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:47.823498" elapsed="0.000584"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:47.823197" elapsed="0.000945"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:47.825556" 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-19T03:29:47.825798" 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-19T03:29:47.825116" elapsed="0.000781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:47.827424" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:47.826859" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:47.829234" level="INFO">${conn_id} = 288</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:47.828524" elapsed="0.000810"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:47.831672" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:47.831751" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:47.831362" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:47.831985" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:47.833324" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:48.151772" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:47.832985" elapsed="0.318908"/>
</kw>
<msg time="2026-04-19T03:29:48.151964" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:47.832619" elapsed="0.319442"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:47.830523" elapsed="0.321788"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:48.153713" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:48.177087" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:48.177584" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:48.177918" 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-19T03:29:48.153354" elapsed="0.024820"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:48.180486" elapsed="0.000756"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:48.182641" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:48.182046" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:48.183379" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:48.183014" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:48.182929" elapsed="0.000631"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:48.184108" elapsed="0.000074"/>
</return>
<status status="PASS" start="2026-04-19T03:29:48.183759" elapsed="0.000491"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:48.183693" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:48.184440" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:48.190467" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:29:48.191001" elapsed="0.000266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:48.191464" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:48.186318" elapsed="0.005356"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:47.821859" elapsed="0.370061"/>
</kw>
<msg time="2026-04-19T03:29:48.192249" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:47.821172" elapsed="0.371135"/>
</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-19T03:29:47.820617" elapsed="0.371774"/>
</kw>
<msg time="2026-04-19T03:29:48.192432" 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-19T03:29:47.820100" elapsed="0.372378"/>
</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-19T03:29:48.195641" 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-19T03:29:48.196182" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:48.196478" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:48.192771" elapsed="0.003856"/>
</kw>
<msg time="2026-04-19T03:29:48.196774" level="INFO">${output} = 1</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-19T03:29:47.818224" elapsed="0.378577"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:48.197252" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:48.196981" elapsed="0.000317"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:48.197341" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:48.197494" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:47.816096" elapsed="0.381423"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:48.197566" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:48.197711" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:47.813337" elapsed="0.384399"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:48.198503" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:48.198089" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:47.812292" elapsed="0.386395">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:50.202398" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:50.201603" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:50.204517" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:50.203876" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:50.206370" 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-19T03:29:50.206596" 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-19T03:29:50.206012" elapsed="0.000643"/>
</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-19T03:29:50.216768" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:50.216273" elapsed="0.000576"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:50.214055" elapsed="0.002853"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:50.218402" 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-19T03:29:50.218647" 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-19T03:29:50.217926" elapsed="0.000830"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:50.220337" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:50.219768" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:50.222159" level="INFO">${conn_id} = 291</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:50.221444" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:50.224844" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:50.224922" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:50.224558" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:50.225174" elapsed="0.000344"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:50.226443" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:50.544468" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:50.226120" elapsed="0.318557"/>
</kw>
<msg time="2026-04-19T03:29:50.544756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:50.225745" elapsed="0.319098"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:50.223646" elapsed="0.321483"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:50.546650" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:50.569556" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:50.570194" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:50.570566" 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-19T03:29:50.546252" elapsed="0.024556"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:50.573132" elapsed="0.001087"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:50.575681" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:50.575013" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:50.576413" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:50.576081" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:50.575976" elapsed="0.000628"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:50.577116" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T03:29:50.576804" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:50.576737" elapsed="0.000605"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:50.577454" elapsed="0.000081"/>
</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-19T03:29:50.583628" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T03:29:50.584204" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:50.584566" 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-19T03:29:50.579401" elapsed="0.005378"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:50.210971" elapsed="0.374036"/>
</kw>
<msg time="2026-04-19T03:29:50.585342" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:50.209440" elapsed="0.375961"/>
</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-19T03:29:50.208221" elapsed="0.377283"/>
</kw>
<msg time="2026-04-19T03:29:50.585551" 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-19T03:29:50.207006" elapsed="0.378596"/>
</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-19T03:29:50.588786" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:50.589284" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:50.589614" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:50.585908" elapsed="0.003859"/>
</kw>
<msg time="2026-04-19T03:29:50.589859" level="INFO">${output} = 1</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-19T03:29:50.205081" elapsed="0.384803"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:50.590326" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:50.590078" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:50.590414" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:50.590565" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:50.202925" elapsed="0.387665"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:50.590637" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:29:50.590779" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:50.200673" elapsed="0.390131"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:50.591438" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:50.591006" elapsed="0.000511">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:50.199568" elapsed="0.392065">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:52.595140" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:52.594344" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:52.597252" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:52.596598" elapsed="0.000741"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:52.599224" 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-19T03:29:52.599328" 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-19T03:29:52.598949" elapsed="0.000406"/>
</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-19T03:29:52.603386" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:52.602697" elapsed="0.000770"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:52.602638" elapsed="0.000888"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:52.605319" 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-19T03:29:52.605570" 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-19T03:29:52.604537" elapsed="0.001134"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:52.607265" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:52.606665" elapsed="0.000710"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:52.609074" level="INFO">${conn_id} = 294</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:52.608359" elapsed="0.000816"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:52.611570" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:52.611647" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:52.611280" elapsed="0.000391"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:52.611881" elapsed="0.000356"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:52.613168" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:53.115344" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:52.612825" elapsed="0.502672"/>
</kw>
<msg time="2026-04-19T03:29:53.115584" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:52.612459" elapsed="0.503216"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:52.610472" elapsed="0.505490"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:53.117468" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:53.140496" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:53.141022" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:53.141416" 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-19T03:29:53.117079" elapsed="0.024552"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:53.143934" elapsed="0.000989"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:53.147523" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:53.146335" elapsed="0.001434"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:53.148405" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:53.148152" elapsed="0.000331"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:53.148010" 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-19T03:29:53.148891" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T03:29:53.148687" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:53.148637" elapsed="0.000437"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:53.149156" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:53.153927" 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-19T03:29:53.154505" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:53.154861" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:53.150507" elapsed="0.004797"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:52.601315" elapsed="0.554239"/>
</kw>
<msg time="2026-04-19T03:29:53.155859" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:52.600588" elapsed="0.555340"/>
</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-19T03:29:52.600048" elapsed="0.555963"/>
</kw>
<msg time="2026-04-19T03:29:53.156067" 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-19T03:29:52.599515" elapsed="0.556600"/>
</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-19T03:29:53.159195" elapsed="0.000321"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:53.159680" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:53.159973" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:53.156418" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T03:29:53.160244" level="INFO">${output} = 1</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-19T03:29:52.597939" elapsed="0.562331"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:53.160705" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:53.160457" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:53.160799" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:29:53.160953" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:52.595661" elapsed="0.565321"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:53.161044" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:29:53.161193" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:52.593509" elapsed="0.567709"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:53.161767" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:53.161373" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:52.592465" elapsed="0.569487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:55.165669" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:55.164806" elapsed="0.000935"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:55.167996" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:55.167389" elapsed="0.000760"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:55.169722" 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-19T03:29:55.169865" 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-19T03:29:55.169501" elapsed="0.000402"/>
</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-19T03:29:55.175413" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:55.174758" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:55.174678" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:55.177881" 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-19T03:29:55.178164" 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-19T03:29:55.177057" elapsed="0.001208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:55.179822" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:55.179277" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:55.181796" level="INFO">${conn_id} = 297</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:55.181101" elapsed="0.000794"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:55.184341" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:55.184423" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:55.183996" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:55.184664" elapsed="0.000339"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:55.185943" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:55.503572" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:55.185614" elapsed="0.318113"/>
</kw>
<msg time="2026-04-19T03:29:55.503811" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:55.185246" elapsed="0.318658"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:55.183243" elapsed="0.320978"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:55.505769" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:55.528973" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:55.529525" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:55.529861" 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-19T03:29:55.505368" elapsed="0.024751"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:55.532377" elapsed="0.000934"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:55.534749" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:55.534120" 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-19T03:29:55.535607" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:55.535194" elapsed="0.000526"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:55.535109" elapsed="0.000692"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:55.536329" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:29:55.536010" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:55.535939" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:55.536675" elapsed="0.000055"/>
</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-19T03:29:55.542829" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:29:55.543511" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:55.543876" 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-19T03:29:55.538606" elapsed="0.005538"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:55.172641" elapsed="0.371738"/>
</kw>
<msg time="2026-04-19T03:29:55.544680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:55.171670" elapsed="0.373070"/>
</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-19T03:29:55.170871" elapsed="0.373953"/>
</kw>
<msg time="2026-04-19T03:29:55.544867" 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-19T03:29:55.170150" elapsed="0.374782"/>
</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-19T03:29:55.548198" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:55.548687" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:55.549026" elapsed="0.000122"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:55.545259" elapsed="0.003942"/>
</kw>
<msg time="2026-04-19T03:29:55.549298" level="INFO">${output} = 1</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-19T03:29:55.168648" elapsed="0.380676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:55.549779" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:55.549525" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:55.549868" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:29:55.550029" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:55.166434" elapsed="0.383636"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:55.550120" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:29:55.550268" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:55.163905" elapsed="0.386389"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:55.550879" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:55.550453" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:55.162788" elapsed="0.388307">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:57.554766" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:57.553968" elapsed="0.000868"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:57.556713" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:57.556327" elapsed="0.000422"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:57.558002" 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-19T03:29:57.558286" 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-19T03:29:57.557657" elapsed="0.000667"/>
</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-19T03:29:57.563632" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:57.562967" elapsed="0.000773"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:57.562889" elapsed="0.000934"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:57.565689" 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-19T03:29:57.565937" 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-19T03:29:57.564978" elapsed="0.001082"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:57.567599" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:57.567050" elapsed="0.000658"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:57.569427" level="INFO">${conn_id} = 300</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:57.568709" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:57.571929" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:57.572008" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:57.571648" 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-19T03:29:57.572306" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:57.573595" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:29:57.898668" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:57.573271" elapsed="0.325586"/>
</kw>
<msg time="2026-04-19T03:29:57.898957" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:57.572890" elapsed="0.326194"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:57.570871" elapsed="0.328556"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:29:57.901110" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:29:57.924201" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:29:57.924742" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:29:57.925129" 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-19T03:29:57.900617" elapsed="0.024727"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:57.927682" elapsed="0.000918"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:57.930230" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:57.929501" elapsed="0.000887"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:57.930997" elapsed="0.000136"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:29:57.930639" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:57.930548" elapsed="0.000746"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:29:57.931826" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T03:29:57.931509" elapsed="0.000466"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:57.931440" elapsed="0.000640"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:29:57.932197" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:57.938533" 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-19T03:29:57.939242" elapsed="0.000185"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:57.939621" elapsed="0.000122"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:29:57.934294" elapsed="0.005557"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:57.561065" elapsed="0.379134"/>
</kw>
<msg time="2026-04-19T03:29:57.940514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:57.560093" elapsed="0.380489"/>
</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-19T03:29:57.559303" elapsed="0.381368"/>
</kw>
<msg time="2026-04-19T03:29:57.940714" 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-19T03:29:57.558551" elapsed="0.382213"/>
</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-19T03:29:57.943829" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:29:57.944340" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:29:57.944638" 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-19T03:29:57.941083" elapsed="0.003703"/>
</kw>
<msg time="2026-04-19T03:29:57.944885" level="INFO">${output} = 1</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-19T03:29:57.557070" elapsed="0.387841"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:57.945405" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:57.945148" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:29:57.945494" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:29:57.945657" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:57.555327" elapsed="0.390356"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:29:57.945732" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:29:57.945883" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:57.553144" elapsed="0.392763"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:29:57.946518" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:29:57.946094" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:57.551984" elapsed="0.394734">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:29:59.950301" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:29:59.949535" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:29:59.952406" level="INFO">${member_ip} = 10.30.171.206</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-19T03:29:59.951764" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:59.954319" 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-19T03:29:59.954547" 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-19T03:29:59.953959" elapsed="0.000648"/>
</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-19T03:29:59.960277" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:29:59.959784" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T03:29:59.959471" elapsed="0.001047"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:59.962018" 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-19T03:29:59.962280" 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-19T03:29:59.961574" elapsed="0.000807"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:29:59.963933" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:29:59.963392" elapsed="0.000718"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:29:59.965809" level="INFO">${conn_id} = 303</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:29:59.965118" elapsed="0.000790"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:29:59.968386" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:29:59.968468" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:29:59.967889" elapsed="0.000605"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:59.968713" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:29:59.970197" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:00.288128" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:29:57 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:29:59.969845" elapsed="0.318431"/>
</kw>
<msg time="2026-04-19T03:30:00.288363" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:59.969353" elapsed="0.319100"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:29:59.967130" elapsed="0.321602"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:00.290254" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:00.313170" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:00.313678" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:00.314017" 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-19T03:30:00.289827" elapsed="0.024444"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:00.316559" elapsed="0.000916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:00.319736" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:00.318716" elapsed="0.001252"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:00.320949" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:00.320460" elapsed="0.000689"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:00.320334" elapsed="0.000941"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:00.322069" elapsed="0.000122"/>
</return>
<status status="PASS" start="2026-04-19T03:30:00.321595" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:00.321488" elapsed="0.000939"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:00.322600" 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-19T03:30:00.328589" 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-19T03:30:00.329295" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:00.329684" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:00.325025" elapsed="0.004872"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:29:59.958130" elapsed="0.372008"/>
</kw>
<msg time="2026-04-19T03:30:00.330551" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:29:59.957419" elapsed="0.373193"/>
</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-19T03:29:59.956161" elapsed="0.374534"/>
</kw>
<msg time="2026-04-19T03:30:00.330736" 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-19T03:29:59.954956" elapsed="0.375825"/>
</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-19T03:30:00.333856" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:30:00.334349" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:00.334644" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:00.331104" elapsed="0.003689"/>
</kw>
<msg time="2026-04-19T03:30:00.334883" level="INFO">${output} = 1</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-19T03:29:59.953008" elapsed="0.381900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:00.335364" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:00.335112" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:00.335456" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T03:30:00.335625" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:29:59.950824" elapsed="0.384826"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:00.335697" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:00.335841" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:29:59.948650" elapsed="0.387216"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:00.336496" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:00.336022" elapsed="0.000548">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:29:59.947533" elapsed="0.389148">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:02.340223" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:02.339431" elapsed="0.000862"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:02.342299" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:02.341668" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:02.344111" 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-19T03:30:02.344356" 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-19T03:30:02.343754" elapsed="0.000658"/>
</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-19T03:30:02.351337" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:02.350835" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:02.350487" elapsed="0.000998"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:02.352978" 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-19T03:30:02.353263" 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-19T03:30:02.352502" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:02.354905" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:02.354358" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:02.356805" level="INFO">${conn_id} = 306</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:02.356088" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:02.359445" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:02.359524" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:02.358965" elapsed="0.000583"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:02.359763" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:02.361198" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:02.678443" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:02.360829" elapsed="0.317789"/>
</kw>
<msg time="2026-04-19T03:30:02.678712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:02.360448" elapsed="0.318367"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:02.358198" elapsed="0.320944"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:02.680680" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:02.703592" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:02.704133" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:02.704463" 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-19T03:30:02.680260" elapsed="0.024413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:02.706977" elapsed="0.000904"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:02.710272" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:02.709204" elapsed="0.001295"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:02.711392" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:02.710847" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:02.710722" elapsed="0.000964"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:02.712476" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:30:02.712000" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:02.711895" elapsed="0.000927"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:02.712992" elapsed="0.000142"/>
</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-19T03:30:02.718808" 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-19T03:30:02.719384" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:02.719815" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:02.715278" elapsed="0.004747"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:02.348783" elapsed="0.371486"/>
</kw>
<msg time="2026-04-19T03:30:02.720580" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:02.347128" elapsed="0.373513"/>
</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-19T03:30:02.345894" elapsed="0.374828"/>
</kw>
<msg time="2026-04-19T03:30:02.720763" 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-19T03:30:02.344755" elapsed="0.376053"/>
</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-19T03:30:02.723972" elapsed="0.000335"/>
</kw>
<kw name="Open 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-19T03:30:02.724477" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:02.724772" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:02.721202" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T03:30:02.725011" level="INFO">${output} = 1</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-19T03:30:02.342825" elapsed="0.382240"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:02.725496" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:02.725249" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:02.725583" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:30:02.725733" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:02.340743" elapsed="0.385015"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:02.725804" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:02.725950" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:02.338602" elapsed="0.387373"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:02.726627" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:02.726223" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:02.337563" elapsed="0.389259">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:04.730362" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:04.729600" elapsed="0.000832"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:04.732585" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:04.731953" elapsed="0.000679"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:04.733762" 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-19T03:30:04.733906" 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-19T03:30:04.733524" elapsed="0.000420"/>
</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-19T03:30:04.741526" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:04.741026" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:04.738494" elapsed="0.003171"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:04.743108" 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-19T03:30:04.743350" 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-19T03:30:04.742636" elapsed="0.000812"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:04.745066" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:04.744502" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:04.746833" level="INFO">${conn_id} = 309</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:04.746145" elapsed="0.000785"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:04.749342" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:04.749419" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:04.749015" 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-19T03:30:04.749650" elapsed="0.000407"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:04.750964" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:05.071202" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:04.750641" elapsed="0.320683"/>
</kw>
<msg time="2026-04-19T03:30:05.071398" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:04.750280" elapsed="0.321198"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:04.748274" elapsed="0.323451"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:05.073332" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:05.096391" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:05.096882" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:05.097339" 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-19T03:30:05.072773" elapsed="0.024792"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:05.099794" elapsed="0.000894"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:05.102922" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:05.101945" elapsed="0.001327"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:05.104150" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:05.103626" elapsed="0.000695"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:05.103503" elapsed="0.000940"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:05.105238" elapsed="0.000165"/>
</return>
<status status="PASS" start="2026-04-19T03:30:05.104759" elapsed="0.000754"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:05.104653" elapsed="0.000992"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:05.105789" 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-19T03:30:05.110882" elapsed="0.000417"/>
</kw>
<kw name="Open 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-19T03:30:05.111507" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:05.111859" 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-19T03:30:05.107229" elapsed="0.004856"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:04.736660" elapsed="0.375652"/>
</kw>
<msg time="2026-04-19T03:30:05.112620" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:04.735672" elapsed="0.377004"/>
</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-19T03:30:04.734898" elapsed="0.377860"/>
</kw>
<msg time="2026-04-19T03:30:05.112800" 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-19T03:30:04.734186" elapsed="0.378661"/>
</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-19T03:30:05.115956" 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-19T03:30:05.116452" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:05.116747" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:05.113157" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T03:30:05.117059" level="INFO">${output} = 1</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-19T03:30:04.732931" elapsed="0.384155"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:05.117538" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:05.117263" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:05.117628" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:30:05.117785" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:04.730926" elapsed="0.386885"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:05.117859" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:05.118018" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:04.728757" elapsed="0.389316"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:05.118625" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:05.118234" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:04.727702" elapsed="0.391109">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:07.122435" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:07.121662" elapsed="0.000844"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:07.124670" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:07.123949" elapsed="0.000784"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:07.126216" 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-19T03:30:07.126361" 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-19T03:30:07.125974" elapsed="0.000424"/>
</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-19T03:30:07.131809" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:07.131179" elapsed="0.000739"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:07.131102" elapsed="0.000898"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:07.134218" 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-19T03:30:07.134463" 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-19T03:30:07.133466" elapsed="0.001098"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:07.136119" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:07.135561" elapsed="0.000669"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:07.137906" level="INFO">${conn_id} = 312</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:07.137209" elapsed="0.000795"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:07.140304" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:07.140383" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:07.140009" 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-19T03:30:07.140643" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:07.141919" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:07.456669" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:07.141592" elapsed="0.315484"/>
</kw>
<msg time="2026-04-19T03:30:07.457159" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:07.141213" elapsed="0.316033"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:07.139261" elapsed="0.318278"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:07.459074" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:07.482142" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:07.482659" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:07.482993" 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-19T03:30:07.458636" elapsed="0.024618"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:07.485487" elapsed="0.000987"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:07.487963" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:07.487358" 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-19T03:30:07.488688" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:07.488362" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:07.488280" elapsed="0.000595"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:07.489387" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T03:30:07.489102" elapsed="0.000432"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:07.489011" elapsed="0.000620"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:07.489744" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:07.495954" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:30:07.496520" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:07.496877" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:07.491713" elapsed="0.005391"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:07.129219" elapsed="0.368108"/>
</kw>
<msg time="2026-04-19T03:30:07.497651" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:07.128233" elapsed="0.369479"/>
</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-19T03:30:07.127421" elapsed="0.370375"/>
</kw>
<msg time="2026-04-19T03:30:07.497836" 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-19T03:30:07.126623" elapsed="0.371260"/>
</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-19T03:30:07.500947" 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-19T03:30:07.501446" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:07.501772" elapsed="0.000302"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:07.498192" elapsed="0.003938"/>
</kw>
<msg time="2026-04-19T03:30:07.502223" level="INFO">${output} = 1</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-19T03:30:07.125257" elapsed="0.376991"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:07.502678" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:07.502429" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:07.502766" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:07.502921" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:07.122962" elapsed="0.379985"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:07.502994" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:07.503189" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:07.120813" elapsed="0.382401"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:07.503833" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:07.503435" elapsed="0.000472">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:07.119693" elapsed="0.384325">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:09.507420" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:09.506648" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:09.509468" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:09.508849" elapsed="0.000676"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:09.511313" 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-19T03:30:09.511542" 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-19T03:30:09.510920" elapsed="0.000682"/>
</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-19T03:30:09.515595" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:09.515120" elapsed="0.000554"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:09.515062" elapsed="0.000672"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:09.517454" 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-19T03:30:09.517702" 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-19T03:30:09.516721" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:09.519376" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:09.518770" elapsed="0.000713"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:09.521164" level="INFO">${conn_id} = 315</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:09.520453" elapsed="0.000811"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:09.523595" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:09.523673" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:09.523304" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:09.523908" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:09.525405" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:09.850934" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:09.525026" elapsed="0.326102"/>
</kw>
<msg time="2026-04-19T03:30:09.851222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:09.524597" elapsed="0.326739"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:09.522460" elapsed="0.329176"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:09.853192" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:09.876660" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:09.877166" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:09.877393" 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-19T03:30:09.852763" elapsed="0.024776"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:09.879140" elapsed="0.000706"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:09.881484" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:09.880755" elapsed="0.000881"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:09.882279" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:09.881888" elapsed="0.000506"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:09.881803" elapsed="0.000675"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:09.882988" elapsed="0.000110"/>
</return>
<status status="PASS" start="2026-04-19T03:30:09.882688" elapsed="0.000482"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:09.882618" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:09.883374" elapsed="0.000057"/>
</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-19T03:30:09.890260" 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-19T03:30:09.890894" elapsed="0.000367"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:09.891460" 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-19T03:30:09.885391" elapsed="0.006287"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:09.513661" elapsed="0.378241"/>
</kw>
<msg time="2026-04-19T03:30:09.892251" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:09.512900" elapsed="0.379424"/>
</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-19T03:30:09.512358" elapsed="0.380052"/>
</kw>
<msg time="2026-04-19T03:30:09.892452" 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-19T03:30:09.511823" elapsed="0.380676"/>
</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-19T03:30:09.895553" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:30:09.896174" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:09.896485" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:09.892813" elapsed="0.003823"/>
</kw>
<msg time="2026-04-19T03:30:09.896736" level="INFO">${output} = 1</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-19T03:30:09.509993" elapsed="0.386769"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:09.897268" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:09.896990" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:09.897366" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T03:30:09.897571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:09.507932" elapsed="0.389672"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:09.897667" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:30:09.897860" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:09.505819" elapsed="0.392076"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:09.898496" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:09.898080" elapsed="0.000529">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:09.504780" elapsed="0.393947">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:11.902242" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:11.901474" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:11.904592" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:11.903896" elapsed="0.000758"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:11.905817" 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-19T03:30:11.905962" 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-19T03:30:11.905598" elapsed="0.000402"/>
</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-19T03:30:11.911350" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:11.910698" elapsed="0.000763"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:11.910622" elapsed="0.000919"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:11.913579" 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-19T03:30:11.913830" 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-19T03:30:11.912879" elapsed="0.001053"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:11.915464" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:11.914908" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:11.917267" level="INFO">${conn_id} = 318</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:11.916559" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:11.919656" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:11.919735" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:11.919371" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:11.919975" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:11.921288" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:12.235365" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:09 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:11.920940" elapsed="0.314580"/>
</kw>
<msg time="2026-04-19T03:30:12.235602" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:11.920575" elapsed="0.315122"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:11.918604" elapsed="0.317381"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:12.237553" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:12.260332" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:12.260824" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:12.261244" 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-19T03:30:12.237141" elapsed="0.024316"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:12.263652" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:12.266868" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:12.265865" elapsed="0.001262"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:12.268158" elapsed="0.000071"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:12.267478" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:12.267354" elapsed="0.001102"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:12.269378" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:30:12.268790" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:12.268678" elapsed="0.001056"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:12.269845" 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-19T03:30:12.274966" elapsed="0.000418"/>
</kw>
<kw name="Open 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-19T03:30:12.275607" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:12.275969" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:12.271265" elapsed="0.004931"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:11.908789" elapsed="0.367635"/>
</kw>
<msg time="2026-04-19T03:30:12.276726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:11.907743" elapsed="0.369049"/>
</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-19T03:30:11.906962" elapsed="0.369917"/>
</kw>
<msg time="2026-04-19T03:30:12.276920" 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-19T03:30:11.906246" elapsed="0.370721"/>
</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-19T03:30:12.280038" elapsed="0.000319"/>
</kw>
<kw name="Open 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-19T03:30:12.280522" elapsed="0.000197"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:12.280870" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:12.277297" elapsed="0.003723"/>
</kw>
<msg time="2026-04-19T03:30:12.281148" level="INFO">${output} = 1</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-19T03:30:11.905001" elapsed="0.376174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:12.281608" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:12.281359" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:12.281694" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:12.281848" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:11.902923" elapsed="0.378949"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:12.281920" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:12.282083" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:11.900618" elapsed="0.381491"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:12.282665" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:12.282267" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:11.899532" elapsed="0.383322">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:14.286431" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:14.285649" elapsed="0.000856"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:14.288597" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:14.287913" elapsed="0.000749"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:14.289860" 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-19T03:30:14.290222" 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-19T03:30:14.289630" elapsed="0.000632"/>
</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-19T03:30:14.295870" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:14.295226" elapsed="0.000756"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:14.294813" elapsed="0.001277"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:14.297764" 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-19T03:30:14.298017" 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-19T03:30:14.297319" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:14.299666" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:14.299120" elapsed="0.000657"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:14.301490" level="INFO">${conn_id} = 321</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:14.300771" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:14.303933" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:14.304013" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:14.303646" 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-19T03:30:14.304264" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:14.305556" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:14.619238" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:14.305230" elapsed="0.314165"/>
</kw>
<msg time="2026-04-19T03:30:14.619476" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:14.304846" elapsed="0.314718"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:14.302861" elapsed="0.316985"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:14.621356" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:14.644541" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:14.645305" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:14.645653" 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-19T03:30:14.620926" elapsed="0.024948"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:14.648348" elapsed="0.001099"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:14.651901" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:14.650781" elapsed="0.001399"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:14.653149" elapsed="0.000070"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:14.652584" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:14.652447" elapsed="0.001004"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:14.654290" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T03:30:14.653776" elapsed="0.000751"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:14.653669" elapsed="0.000990"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:14.654836" 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-19T03:30:14.662738" elapsed="0.000454"/>
</kw>
<kw name="Open 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-19T03:30:14.663485" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:14.663861" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:14.658089" elapsed="0.006001"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:14.292951" elapsed="0.371384"/>
</kw>
<msg time="2026-04-19T03:30:14.664652" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:14.291988" elapsed="0.372730"/>
</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-19T03:30:14.291238" elapsed="0.373566"/>
</kw>
<msg time="2026-04-19T03:30:14.664846" 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-19T03:30:14.290490" elapsed="0.374404"/>
</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-19T03:30:14.667884" 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-19T03:30:14.668375" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:14.668670" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:14.665221" elapsed="0.003596"/>
</kw>
<msg time="2026-04-19T03:30:14.668914" level="INFO">${output} = 1</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-19T03:30:14.289055" elapsed="0.379885"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:14.669457" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:14.669198" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:14.669546" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:14.669702" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:14.286961" elapsed="0.382767"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:14.669776" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:30:14.669922" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:14.284791" elapsed="0.385157"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:14.670538" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:14.670135" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:14.283694" elapsed="0.387045">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:16.674252" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:16.673494" elapsed="0.000827"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:16.676530" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:16.675819" elapsed="0.000774"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:16.677906" 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-19T03:30:16.678111" 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-19T03:30:16.677671" elapsed="0.000480"/>
</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-19T03:30:16.684155" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:16.683414" elapsed="0.000936"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:16.682999" elapsed="0.001439"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:16.686008" 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-19T03:30:16.686266" 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-19T03:30:16.685568" elapsed="0.000795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:16.687942" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:16.687382" elapsed="0.000697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:16.689798" level="INFO">${conn_id} = 324</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:16.689068" elapsed="0.000832"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:16.692311" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:16.692402" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:16.692004" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:16.692716" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:16.694048" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:17.019009" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:16.693695" elapsed="0.325440"/>
</kw>
<msg time="2026-04-19T03:30:17.019209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:16.693313" elapsed="0.325975"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:16.691181" elapsed="0.328360"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:17.020983" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:17.044171" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:17.044705" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:17.045075" 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-19T03:30:17.020619" elapsed="0.024827"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:17.047655" elapsed="0.000924"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:17.050849" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:17.049879" elapsed="0.001233"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:17.051955" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:17.051462" elapsed="0.000817"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:17.051340" elapsed="0.001117"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:17.053095" elapsed="0.000052"/>
</return>
<status status="PASS" start="2026-04-19T03:30:17.052788" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:17.052679" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:17.053331" 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-19T03:30:17.058096" 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-19T03:30:17.058643" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:17.058995" elapsed="0.000177"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:17.054726" elapsed="0.004553"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:16.680938" elapsed="0.378561"/>
</kw>
<msg time="2026-04-19T03:30:17.059855" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:16.679932" elapsed="0.379981"/>
</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-19T03:30:16.679147" elapsed="0.380853"/>
</kw>
<msg time="2026-04-19T03:30:17.060056" 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-19T03:30:16.678383" elapsed="0.381721"/>
</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-19T03:30:17.063206" 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-19T03:30:17.063682" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:17.063976" elapsed="0.000114"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:17.060421" elapsed="0.003722"/>
</kw>
<msg time="2026-04-19T03:30:17.064235" level="INFO">${output} = 1</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-19T03:30:16.677066" elapsed="0.387194"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:17.064700" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:17.064451" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:17.064789" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:17.064942" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:16.674798" elapsed="0.390170"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:17.065015" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:30:17.065187" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:16.672647" elapsed="0.392565"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:17.065808" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:17.065369" elapsed="0.000519">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:16.671581" elapsed="0.394418">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:19.069476" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:19.068720" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:19.071581" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:19.070950" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:19.073446" 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-19T03:30:19.073671" 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-19T03:30:19.073113" elapsed="0.000616"/>
</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-19T03:30:19.080794" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:19.080295" elapsed="0.000581"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:19.078072" elapsed="0.002864"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:19.082415" 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-19T03:30:19.082660" 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-19T03:30:19.081928" elapsed="0.000858"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:19.084318" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:19.083753" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:19.086204" level="INFO">${conn_id} = 327</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:19.085471" elapsed="0.000834"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:19.088769" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:19.088847" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:19.088478" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:19.089099" elapsed="0.000353"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:19.090401" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:19.415281" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:16 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:19.090073" elapsed="0.325354"/>
</kw>
<msg time="2026-04-19T03:30:19.415510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:19.089678" elapsed="0.325919"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:19.087697" elapsed="0.328178"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:19.417385" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:19.440704" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:19.441331" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:19.441665" 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-19T03:30:19.416965" elapsed="0.024911"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:19.444323" elapsed="0.001088"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:19.447789" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:19.446720" elapsed="0.001297"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:19.448883" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:19.448394" elapsed="0.000679"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:19.448271" elapsed="0.000931"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:19.449964" elapsed="0.000174"/>
</return>
<status status="PASS" start="2026-04-19T03:30:19.449520" elapsed="0.000806"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:19.449414" elapsed="0.001048"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:19.450638" elapsed="0.000084"/>
</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-19T03:30:19.456649" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:30:19.457212" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:19.457572" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:19.453161" elapsed="0.004620"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:19.076381" elapsed="0.381624"/>
</kw>
<msg time="2026-04-19T03:30:19.458349" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:19.075674" elapsed="0.382737"/>
</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-19T03:30:19.075136" elapsed="0.383357"/>
</kw>
<msg time="2026-04-19T03:30:19.458534" 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-19T03:30:19.074105" elapsed="0.384475"/>
</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-19T03:30:19.461719" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T03:30:19.462291" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:19.462598" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:19.458933" elapsed="0.003816"/>
</kw>
<msg time="2026-04-19T03:30:19.462840" level="INFO">${output} = 1</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-19T03:30:19.072148" elapsed="0.390718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:19.463397" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:19.463130" elapsed="0.000313"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:19.463487" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:19.463640" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:19.069997" elapsed="0.393669"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:19.463713" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:19.463858" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:19.067894" elapsed="0.395990"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:19.464460" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:19.464057" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:19.066836" elapsed="0.397811">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:21.468157" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:21.467402" elapsed="0.000825"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:21.470284" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:21.469654" elapsed="0.000690"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:21.472109" 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-19T03:30:21.472332" 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-19T03:30:21.471762" elapsed="0.000629"/>
</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-19T03:30:21.478633" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:21.477940" elapsed="0.000808"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:21.477860" elapsed="0.000976"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:21.481424" 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-19T03:30:21.481786" 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-19T03:30:21.480375" elapsed="0.001558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:21.483561" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:21.482977" elapsed="0.000695"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:21.485404" level="INFO">${conn_id} = 330</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:21.484664" elapsed="0.000840"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:21.487859" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:21.487937" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:21.487578" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:21.488191" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:21.489620" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:21.846628" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:21.489289" elapsed="0.357494"/>
</kw>
<msg time="2026-04-19T03:30:21.846870" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:21.488833" elapsed="0.358129"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:21.486800" elapsed="0.360473"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:21.848782" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:21.871354" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:21.871858" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:21.872252" 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-19T03:30:21.848379" elapsed="0.024092"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:21.874774" elapsed="0.000955"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:21.878212" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:21.876988" elapsed="0.001379"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:21.878955" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:21.878607" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:21.878521" elapsed="0.000655"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:21.879691" elapsed="0.000083"/>
</return>
<status status="PASS" start="2026-04-19T03:30:21.879392" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:21.879319" elapsed="0.000616"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:21.880074" elapsed="0.000061"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:21.887104" 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-19T03:30:21.887676" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:21.888057" 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-19T03:30:21.882276" elapsed="0.005999"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:21.475849" elapsed="0.412654"/>
</kw>
<msg time="2026-04-19T03:30:21.888817" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:21.474777" elapsed="0.414104"/>
</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-19T03:30:21.473925" elapsed="0.415041"/>
</kw>
<msg time="2026-04-19T03:30:21.889007" 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-19T03:30:21.472735" elapsed="0.416348"/>
</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-19T03:30:21.892176" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:30:21.892656" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:21.892952" elapsed="0.000127"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:21.889384" elapsed="0.003753"/>
</kw>
<msg time="2026-04-19T03:30:21.893299" level="INFO">${output} = 1</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-19T03:30:21.470826" elapsed="0.422498"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:21.893808" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:21.893552" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:21.893897" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:30:21.894132" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:21.468679" elapsed="0.425481"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:21.894209" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:30:21.894357" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:21.466572" elapsed="0.427809"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:21.894939" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:21.894539" elapsed="0.000475">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:21.465521" elapsed="0.429623">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:23.898675" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:23.897910" elapsed="0.000834"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:23.900844" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:23.900236" elapsed="0.000669"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:23.902706" 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-19T03:30:23.902934" 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-19T03:30:23.902378" elapsed="0.000615"/>
</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-19T03:30:23.908850" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:23.908228" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:23.908148" elapsed="0.000913"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:23.911434" 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-19T03:30:23.911777" 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-19T03:30:23.910407" elapsed="0.001509"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:23.913536" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:23.912980" elapsed="0.000665"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:23.915369" level="INFO">${conn_id} = 333</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:23.914619" elapsed="0.000850"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:23.917812" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:23.917889" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:23.917531" elapsed="0.000383"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:23.918139" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:23.919432" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:24.274925" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:23.919078" elapsed="0.356107"/>
</kw>
<msg time="2026-04-19T03:30:24.275271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:23.918689" elapsed="0.356666"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:23.916763" elapsed="0.358892"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:24.277141" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:24.299718" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:24.300281" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:24.300613" 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-19T03:30:24.276738" elapsed="0.024083"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:24.303193" elapsed="0.000959"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:24.305582" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:24.304944" elapsed="0.000782"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:24.306300" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:24.305949" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:24.305869" elapsed="0.000614"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:24.306964" elapsed="0.000091"/>
</return>
<status status="PASS" start="2026-04-19T03:30:24.306684" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:24.306615" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:24.307315" elapsed="0.000051"/>
</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-19T03:30:24.313565" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:30:24.314129" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:24.314490" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:24.309275" elapsed="0.005426"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:23.906310" elapsed="0.408616"/>
</kw>
<msg time="2026-04-19T03:30:24.315255" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:23.905344" elapsed="0.409970"/>
</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-19T03:30:23.904455" elapsed="0.410942"/>
</kw>
<msg time="2026-04-19T03:30:24.315438" 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-19T03:30:23.903424" elapsed="0.412072"/>
</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-19T03:30:24.318573" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:30:24.319065" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:24.319466" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:24.315790" elapsed="0.003862"/>
</kw>
<msg time="2026-04-19T03:30:24.319745" level="INFO">${output} = 1</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-19T03:30:23.901423" elapsed="0.418348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:24.320222" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:24.319952" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:24.320311" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:30:24.320464" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:23.899292" elapsed="0.421199"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:24.320538" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:24.320685" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:23.897099" elapsed="0.423612"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:24.321352" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:24.320917" elapsed="0.000510">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:23.895972" elapsed="0.425568">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:26.325002" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:26.324241" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:26.327158" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:26.326520" elapsed="0.000699"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:26.329294" 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-19T03:30:26.329446" 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-19T03:30:26.328748" elapsed="0.000736"/>
</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-19T03:30:26.334787" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:26.334153" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:26.334073" elapsed="0.000915"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:26.337369" 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-19T03:30:26.337715" 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-19T03:30:26.336378" elapsed="0.001476"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:26.339995" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:26.339240" elapsed="0.000932"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:26.342269" level="INFO">${conn_id} = 336</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:26.341558" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:26.344641" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:26.344719" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:26.344360" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:26.344967" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:26.346345" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:26.665387" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:26.346002" elapsed="0.319500"/>
</kw>
<msg time="2026-04-19T03:30:26.665576" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:26.345641" elapsed="0.320016"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:26.343577" elapsed="0.322353"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:26.667397" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:26.690564" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:26.691122" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:26.691460" 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-19T03:30:26.667000" elapsed="0.024670"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:26.694011" elapsed="0.000910"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:26.697314" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:26.696216" 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-19T03:30:26.698446" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:26.697918" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:26.697798" elapsed="0.000938"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:26.699535" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:30:26.699083" elapsed="0.000680"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:26.698943" elapsed="0.000949"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:26.700131" elapsed="0.000091"/>
</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-19T03:30:26.705802" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T03:30:26.706364" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:26.706902" 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-19T03:30:26.702317" elapsed="0.004811"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:26.332197" elapsed="0.375154"/>
</kw>
<msg time="2026-04-19T03:30:26.707659" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:26.331216" elapsed="0.376502"/>
</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-19T03:30:26.330450" elapsed="0.377351"/>
</kw>
<msg time="2026-04-19T03:30:26.707842" 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-19T03:30:26.329708" elapsed="0.378181"/>
</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-19T03:30:26.710956" 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-19T03:30:26.711453" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:26.711748" 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-19T03:30:26.708209" elapsed="0.003686"/>
</kw>
<msg time="2026-04-19T03:30:26.711985" level="INFO">${output} = 1</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-19T03:30:26.327707" elapsed="0.384304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:26.712463" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:26.712215" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:26.712550" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:26.712703" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:26.325566" elapsed="0.387162"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:26.712775" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:26.712921" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:26.323393" elapsed="0.389553"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:26.713612" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:26.713166" elapsed="0.000520">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:26.322350" elapsed="0.391448">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:28.717617" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:28.716775" elapsed="0.000927"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:28.720259" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:28.719427" elapsed="0.000895"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:28.722421" 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-19T03:30:28.722552" 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-19T03:30:28.721946" elapsed="0.000635"/>
</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-19T03:30:28.727499" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:28.726856" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:28.726496" elapsed="0.001162"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:28.729382" 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-19T03:30:28.729652" 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-19T03:30:28.728831" elapsed="0.000949"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:28.731413" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:28.730850" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:28.733212" level="INFO">${conn_id} = 339</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:28.732489" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:28.735625" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:28.735702" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:28.735338" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:28.735935" elapsed="0.000440"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:28.737307" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:29.059083" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:28.736954" elapsed="0.322283"/>
</kw>
<msg time="2026-04-19T03:30:29.059323" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:28.736595" elapsed="0.322824"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:28.734541" elapsed="0.325167"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:29.061268" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:29.083820" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:29.084398" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:29.084755" 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-19T03:30:29.060850" elapsed="0.024133"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:29.087825" elapsed="0.001153"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:29.092261" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:29.090894" elapsed="0.001605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:29.093501" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:29.092850" elapsed="0.000822"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:29.092727" elapsed="0.001070"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:29.094680" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:30:29.094150" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:29.094009" elapsed="0.001184"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:29.095362" 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-19T03:30:29.100060" elapsed="0.000485"/>
</kw>
<kw name="Open 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-19T03:30:29.100763" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:29.101144" 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-19T03:30:29.096694" elapsed="0.004664"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:28.724933" elapsed="0.376646"/>
</kw>
<msg time="2026-04-19T03:30:29.101891" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:28.723974" elapsed="0.377980"/>
</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-19T03:30:28.723341" elapsed="0.378710"/>
</kw>
<msg time="2026-04-19T03:30:29.102094" 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-19T03:30:28.722748" elapsed="0.379393"/>
</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-19T03:30:29.105285" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:30:29.105758" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:29.106064" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:29.102519" elapsed="0.003695"/>
</kw>
<msg time="2026-04-19T03:30:29.106325" level="INFO">${output} = 1</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-19T03:30:28.720853" elapsed="0.385499"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:29.106796" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:29.106546" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:29.106883" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:30:29.107140" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:28.718387" elapsed="0.388782"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:29.107218" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:30:29.107371" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:28.715823" elapsed="0.391573"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:29.107949" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:29.107554" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:28.714722" elapsed="0.393444">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:31.110572" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:31.110090" elapsed="0.000529"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:31.112047" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:31.111654" elapsed="0.000441"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:31.113268" 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-19T03:30:31.113523" 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-19T03:30:31.113018" elapsed="0.000543"/>
</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-19T03:30:31.119259" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:31.118589" elapsed="0.000826"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:31.118219" elapsed="0.001286"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:31.121222" 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-19T03:30:31.121467" 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-19T03:30:31.120756" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:31.123119" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:31.122557" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:31.124948" level="INFO">${conn_id} = 342</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:31.124244" elapsed="0.000882"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:31.127403" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:31.127483" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:31.127094" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:31.127718" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:31.128968" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:31.447303" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:31.128645" elapsed="0.318806"/>
</kw>
<msg time="2026-04-19T03:30:31.447558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:31.128285" elapsed="0.319363"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:31.126320" elapsed="0.321613"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:31.449445" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:31.471821" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:31.472353" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:31.472682" 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-19T03:30:31.449044" elapsed="0.023844"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:31.475125" elapsed="0.000942"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:31.477611" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:31.476982" elapsed="0.000773"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:31.478334" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:31.477980" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:31.477900" 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-19T03:30:31.478998" elapsed="0.000093"/>
</return>
<status status="PASS" start="2026-04-19T03:30:31.478719" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:31.478653" elapsed="0.000588"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:31.479349" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:31.485552" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:30:31.486183" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:31.486542" 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-19T03:30:31.481276" elapsed="0.005472"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:31.116372" elapsed="0.370595"/>
</kw>
<msg time="2026-04-19T03:30:31.487396" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:31.115355" elapsed="0.372104"/>
</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-19T03:30:31.114553" elapsed="0.373001"/>
</kw>
<msg time="2026-04-19T03:30:31.487598" 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-19T03:30:31.113808" elapsed="0.373837"/>
</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-19T03:30:31.490572" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:30:31.491081" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:31.491474" elapsed="0.000126"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:31.487932" elapsed="0.003721"/>
</kw>
<msg time="2026-04-19T03:30:31.491743" level="INFO">${output} = 1</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-19T03:30:31.112445" elapsed="0.379323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:31.492210" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:31.491945" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:31.492297" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:31.492448" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:31.111067" elapsed="0.381407"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:31.492521" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:31.492663" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:31.109549" elapsed="0.383138"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:31.493250" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:31.492844" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:31.108837" elapsed="0.384595">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:33.497212" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:33.496278" elapsed="0.001007"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:33.499368" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:33.498688" elapsed="0.000758"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:33.501666" 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-19T03:30:33.501863" 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-19T03:30:33.501133" elapsed="0.000777"/>
</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-19T03:30:33.510147" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:33.509618" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:33.506859" elapsed="0.003498"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:33.511892" 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-19T03:30:33.512165" 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-19T03:30:33.511423" elapsed="0.000844"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:33.514018" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:33.513282" elapsed="0.000936"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:33.515910" level="INFO">${conn_id} = 345</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:33.515206" elapsed="0.000803"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:33.518601" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:33.518696" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:33.518269" elapsed="0.000456"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:33.518979" elapsed="0.000364"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:33.520278" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:33.838780" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:33.519935" elapsed="0.318996"/>
</kw>
<msg time="2026-04-19T03:30:33.839043" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:33.519569" elapsed="0.319571"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:33.517338" elapsed="0.322086"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:33.840969" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:33.863953" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:33.864507" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:33.864884" 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-19T03:30:33.840533" elapsed="0.024608"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:33.867393" elapsed="0.000968"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:33.870689" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:33.869676" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:33.871853" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:33.871313" elapsed="0.000744"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:33.871188" elapsed="0.001012"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:33.873245" elapsed="0.000142"/>
</return>
<status status="PASS" start="2026-04-19T03:30:33.872528" elapsed="0.000976"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:33.872417" elapsed="0.001196"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:33.873729" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:33.880593" elapsed="0.000609"/>
</kw>
<kw name="Open 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-19T03:30:33.881512" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:33.881883" 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-19T03:30:33.875678" elapsed="0.006437"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:33.504969" elapsed="0.377374"/>
</kw>
<msg time="2026-04-19T03:30:33.882721" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:33.503935" elapsed="0.378847"/>
</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-19T03:30:33.503121" elapsed="0.379746"/>
</kw>
<msg time="2026-04-19T03:30:33.882910" 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-19T03:30:33.502217" elapsed="0.380742"/>
</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-19T03:30:33.886273" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:30:33.886769" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:33.887162" elapsed="0.000103"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:33.883374" elapsed="0.003944"/>
</kw>
<msg time="2026-04-19T03:30:33.887412" level="INFO">${output} = 1</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-19T03:30:33.499974" elapsed="0.387464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:33.887885" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:33.887630" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:33.887975" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:33.888148" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:33.497743" elapsed="0.390431"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:33.888222" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:33.888369" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:33.495430" elapsed="0.392965"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:33.888988" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:33.888553" elapsed="0.000528">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:33.494323" elapsed="0.394872">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:35.892685" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:35.891910" elapsed="0.000845"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:35.894796" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:35.894190" elapsed="0.000667"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:35.896633" 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-19T03:30:35.896858" 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-19T03:30:35.896304" elapsed="0.000612"/>
</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-19T03:30:35.903306" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:35.902611" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:35.902528" elapsed="0.000980"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:35.905966" 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-19T03:30:35.906347" 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-19T03:30:35.904949" elapsed="0.001542"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:35.908736" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:35.907922" elapsed="0.000974"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:35.911585" level="INFO">${conn_id} = 348</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:35.910536" elapsed="0.001193"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:35.915115" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:35.915194" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:35.914805" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:35.915427" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:35.916698" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:36.239529" 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 Sun Apr 19 03:29:38 UTC 2026

  System load:  0.12               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:35.916372" elapsed="0.323308"/>
</kw>
<msg time="2026-04-19T03:30:36.239764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:35.915979" elapsed="0.323871"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:35.913706" elapsed="0.326454"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:36.241644" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:36.264289" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:36.264780" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:36.265155" 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-19T03:30:36.241249" elapsed="0.024117"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:36.267596" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:36.270741" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:36.269709" elapsed="0.001256"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:36.271844" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:36.271346" elapsed="0.000660"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:36.271225" elapsed="0.000966"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:36.272960" elapsed="0.000149"/>
</return>
<status status="PASS" start="2026-04-19T03:30:36.272514" elapsed="0.000703"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:36.272406" elapsed="0.000936"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:36.273516" elapsed="0.000082"/>
</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-19T03:30:36.280007" elapsed="0.000453"/>
</kw>
<kw name="Open 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-19T03:30:36.280758" elapsed="0.000213"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:36.281194" 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-19T03:30:36.275545" elapsed="0.005870"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:35.900423" elapsed="0.381221"/>
</kw>
<msg time="2026-04-19T03:30:36.282207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:35.899403" elapsed="0.382872"/>
</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-19T03:30:35.898573" elapsed="0.383786"/>
</kw>
<msg time="2026-04-19T03:30:36.282400" 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-19T03:30:35.897292" elapsed="0.385153"/>
</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-19T03:30:36.285561" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:30:36.286205" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:36.286510" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:36.282818" elapsed="0.003842"/>
</kw>
<msg time="2026-04-19T03:30:36.286756" level="INFO">${output} = 1</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-19T03:30:35.895364" elapsed="0.391417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:36.287269" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:36.286994" elapsed="0.000320"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:36.287358" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:30:36.287516" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:35.893236" elapsed="0.394305"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:36.287589" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:36.287736" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:35.891101" elapsed="0.396659"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:36.288343" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:36.287918" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:35.889996" elapsed="0.398539">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:38.292192" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:38.291412" elapsed="0.000851"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:38.294362" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:38.293712" elapsed="0.000711"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:38.296232" 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-19T03:30:38.296463" 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-19T03:30:38.295873" elapsed="0.000650"/>
</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-19T03:30:38.302103" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:38.301623" elapsed="0.000560"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:38.301567" elapsed="0.000675"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:38.303921" 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-19T03:30:38.304184" 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-19T03:30:38.303225" elapsed="0.001059"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:38.305800" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:38.305257" elapsed="0.000652"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:38.307606" level="INFO">${conn_id} = 351</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:38.306885" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:38.310105" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:38.310184" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:38.309806" 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-19T03:30:38.310420" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:38.311774" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:38.916055" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:38.311445" elapsed="0.604777"/>
</kw>
<msg time="2026-04-19T03:30:38.916313" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:38.311054" elapsed="0.605355"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:38.308893" elapsed="0.607833"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:38.918356" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:38.941459" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:38.941952" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:38.942331" 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-19T03:30:38.917894" elapsed="0.024651"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:38.944801" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:38.947876" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:38.946945" elapsed="0.001108"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:38.948642" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:38.948296" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:38.948211" elapsed="0.000627"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:38.949374" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:30:38.949074" elapsed="0.000446"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:38.948979" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:38.949727" elapsed="0.000055"/>
</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-19T03:30:38.956475" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:30:38.957019" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:38.957394" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:38.951848" elapsed="0.005754"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:38.300271" elapsed="0.657560"/>
</kw>
<msg time="2026-04-19T03:30:38.958157" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:38.299364" elapsed="0.658852"/>
</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-19T03:30:38.298088" elapsed="0.660210"/>
</kw>
<msg time="2026-04-19T03:30:38.958340" 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-19T03:30:38.296877" elapsed="0.661510"/>
</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-19T03:30:38.961472" 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-19T03:30:38.961949" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:38.962263" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:38.958681" elapsed="0.003731"/>
</kw>
<msg time="2026-04-19T03:30:38.962567" level="INFO">${output} = 1</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-19T03:30:38.294909" elapsed="0.667684"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:38.963077" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:38.962775" elapsed="0.000351"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:38.963169" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:30:38.963324" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:38.292722" elapsed="0.670627"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:38.963398" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T03:30:38.963571" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:38.290460" elapsed="0.673136"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:38.964170" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:38.963758" elapsed="0.000486">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:38.289362" elapsed="0.674994">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:40.968122" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:40.967286" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:40.969799" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:40.969413" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:40.970979" 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-19T03:30:40.971144" 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-19T03:30:40.970740" elapsed="0.000441"/>
</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-19T03:30:40.976492" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:40.975826" elapsed="0.000794"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:40.975751" elapsed="0.000952"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:40.980818" 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-19T03:30:40.981092" 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-19T03:30:40.979086" elapsed="0.002105"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:40.982753" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:40.982152" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:40.984655" level="INFO">${conn_id} = 354</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:40.983916" elapsed="0.000836"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:40.987017" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:40.987207" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:40.986735" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:40.987445" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:40.988753" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:41.307196" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:40.988401" elapsed="0.319069"/>
</kw>
<msg time="2026-04-19T03:30:41.307558" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:40.988021" elapsed="0.319628"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:40.985951" elapsed="0.321978"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:41.309456" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:41.332343" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:41.332870" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:41.333253" 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-19T03:30:41.309060" elapsed="0.024407"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:41.335699" elapsed="0.000911"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:41.338511" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:41.337863" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:41.339239" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:41.338882" elapsed="0.000465"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:41.338800" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:41.339916" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:30:41.339628" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:41.339560" elapsed="0.000599"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:41.340273" elapsed="0.000068"/>
</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-19T03:30:41.347160" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:30:41.347931" elapsed="0.000308"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:41.348523" elapsed="0.000179"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:41.342323" elapsed="0.006534"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:40.973894" elapsed="0.375299"/>
</kw>
<msg time="2026-04-19T03:30:41.349624" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:40.972934" elapsed="0.376768"/>
</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-19T03:30:40.972143" elapsed="0.377661"/>
</kw>
<msg time="2026-04-19T03:30:41.349845" 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-19T03:30:40.971404" elapsed="0.378487"/>
</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-19T03:30:41.352979" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:30:41.353475" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:41.353769" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:41.350303" elapsed="0.003614"/>
</kw>
<msg time="2026-04-19T03:30:41.354009" level="INFO">${output} = 1</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-19T03:30:40.970162" elapsed="0.383902"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:41.354496" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:41.354247" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:41.354584" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:41.354738" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:40.968779" elapsed="0.385984"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:41.354811" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:41.354956" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:40.966366" elapsed="0.388614"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:41.355601" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:41.355203" elapsed="0.000473">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:40.965221" elapsed="0.390569">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:43.359426" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:43.358631" elapsed="0.000866"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:43.361541" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:43.360904" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:43.363417" 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-19T03:30:43.363646" 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-19T03:30:43.363083" elapsed="0.000622"/>
</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-19T03:30:43.369530" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:43.369048" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:43.368727" elapsed="0.000944"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:43.371143" 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-19T03:30:43.371388" 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-19T03:30:43.370681" elapsed="0.000806"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:43.373092" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:43.372506" elapsed="0.000698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:43.374924" level="INFO">${conn_id} = 357</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:43.374221" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:43.377583" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:43.377659" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:43.377023" elapsed="0.000660"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:43.377924" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:43.379200" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:43.710412" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:43.378855" elapsed="0.331695"/>
</kw>
<msg time="2026-04-19T03:30:43.710633" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:43.378496" elapsed="0.332224"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:43.376255" elapsed="0.334738"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:43.712492" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:43.735209" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:43.735700" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:43.736069" 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-19T03:30:43.712097" elapsed="0.024201"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:43.738533" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:43.741669" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:43.740663" elapsed="0.001238"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:43.742816" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:43.742313" elapsed="0.000673"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:43.742186" elapsed="0.000961"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:43.743923" elapsed="0.000145"/>
</return>
<status status="PASS" start="2026-04-19T03:30:43.743471" elapsed="0.000716"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:43.743362" elapsed="0.000960"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:43.744494" elapsed="0.000086"/>
</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-19T03:30:43.750727" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:30:43.751292" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:43.751653" 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-19T03:30:43.747322" elapsed="0.004551"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:43.367399" elapsed="0.384733"/>
</kw>
<msg time="2026-04-19T03:30:43.752434" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:43.366536" elapsed="0.385954"/>
</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-19T03:30:43.365276" elapsed="0.387296"/>
</kw>
<msg time="2026-04-19T03:30:43.752612" 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-19T03:30:43.364106" elapsed="0.388551"/>
</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-19T03:30:43.755670" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:30:43.756158" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:43.756450" 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-19T03:30:43.752945" elapsed="0.003651"/>
</kw>
<msg time="2026-04-19T03:30:43.756688" level="INFO">${output} = 1</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-19T03:30:43.362130" elapsed="0.394583"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:43.757238" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:43.756899" elapsed="0.000384"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:43.757326" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:43.757478" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:43.359952" elapsed="0.397552"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:43.757551" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:43.757696" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:43.357773" elapsed="0.399948"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:43.758331" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:43.757877" elapsed="0.000530">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:43.356644" elapsed="0.401875">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:45.762550" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:45.761760" elapsed="0.000861"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:45.764855" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:45.764254" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:45.766877" 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-19T03:30:45.767167" 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-19T03:30:45.766529" elapsed="0.000701"/>
</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-19T03:30:45.776007" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:45.775102" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:45.774460" elapsed="0.001708"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:45.777583" 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-19T03:30:45.777818" 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-19T03:30:45.777147" elapsed="0.000774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:45.779448" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:45.778883" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:45.781280" level="INFO">${conn_id} = 360</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:45.780567" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:45.783731" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:45.783807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:45.783447" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:45.784052" elapsed="0.000330"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:45.785339" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:46.106437" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:45.785001" elapsed="0.321548"/>
</kw>
<msg time="2026-04-19T03:30:46.106622" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:45.784636" elapsed="0.322073"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:45.782567" elapsed="0.324392"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:46.108409" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:46.131355" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:46.131869" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:46.132252" 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-19T03:30:46.108043" elapsed="0.024422"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:46.134690" elapsed="0.000971"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:46.137245" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:46.136557" elapsed="0.000831"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:46.138074" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:46.137614" elapsed="0.000573"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:46.137533" elapsed="0.000744"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:46.138762" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:30:46.138479" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:46.138410" elapsed="0.000575"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:46.139124" elapsed="0.000065"/>
</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-19T03:30:46.145324" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:30:46.145872" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:46.146245" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:46.140950" elapsed="0.005505"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:45.771547" elapsed="0.375133"/>
</kw>
<msg time="2026-04-19T03:30:46.146991" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:45.769993" elapsed="0.377073"/>
</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-19T03:30:45.768782" elapsed="0.378368"/>
</kw>
<msg time="2026-04-19T03:30:46.147213" 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-19T03:30:45.767589" elapsed="0.379670"/>
</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-19T03:30:46.150306" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:46.150778" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:46.151088" elapsed="0.000121"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:46.147550" elapsed="0.003712"/>
</kw>
<msg time="2026-04-19T03:30:46.151353" level="INFO">${output} = 1</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-19T03:30:45.765508" elapsed="0.385870"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:46.151807" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:46.151559" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:46.151893" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:30:46.152066" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:45.763306" elapsed="0.388786"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:46.152140" elapsed="0.000164"/>
</return>
<msg time="2026-04-19T03:30:46.152422" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:45.760903" elapsed="0.391543"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:46.152992" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:46.152600" elapsed="0.000509">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:45.759627" elapsed="0.393593">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:48.156995" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:48.156001" elapsed="0.001094"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:48.159173" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:48.158532" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:48.161120" 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-19T03:30:48.161313" 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-19T03:30:48.160873" elapsed="0.000468"/>
</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-19T03:30:48.167089" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:48.166583" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:48.164570" elapsed="0.002657"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:48.168715" 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-19T03:30:48.168956" 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-19T03:30:48.168264" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:48.170663" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:48.170104" elapsed="0.000677"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:48.172544" level="INFO">${conn_id} = 363</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:48.171745" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:48.174910" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:48.174989" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:48.174618" 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-19T03:30:48.175248" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:48.176630" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:48.504082" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:48.176306" elapsed="0.327931"/>
</kw>
<msg time="2026-04-19T03:30:48.504324" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:48.175804" elapsed="0.328620"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:48.173828" elapsed="0.330882"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:48.506216" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:48.528962" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:48.529653" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:48.529986" 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-19T03:30:48.505800" elapsed="0.024436"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:48.532501" elapsed="0.000788"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:48.534698" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:48.534091" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:48.535446" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:48.535113" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:48.534987" elapsed="0.000644"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:48.536139" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T03:30:48.535831" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:48.535764" elapsed="0.000621"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:48.536558" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:48.542821" 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-19T03:30:48.543536" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:48.543899" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:48.538567" elapsed="0.005559"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:48.163261" elapsed="0.381089"/>
</kw>
<msg time="2026-04-19T03:30:48.544674" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:48.162565" elapsed="0.382168"/>
</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-19T03:30:48.162018" elapsed="0.382796"/>
</kw>
<msg time="2026-04-19T03:30:48.544856" 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-19T03:30:48.161504" elapsed="0.383398"/>
</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-19T03:30:48.547977" 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-19T03:30:48.548494" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:48.548791" 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-19T03:30:48.545213" elapsed="0.003726"/>
</kw>
<msg time="2026-04-19T03:30:48.549043" level="INFO">${output} = 1</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-19T03:30:48.159711" elapsed="0.389359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:48.549507" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:48.549259" elapsed="0.000292"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:48.549594" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:48.549744" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:48.157567" elapsed="0.392201"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:48.549820" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:30:48.549986" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:48.155186" elapsed="0.394826"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:48.550591" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:48.550188" elapsed="0.000477">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:48.154076" elapsed="0.396697">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:50.554654" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:50.553763" elapsed="0.000965"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:50.556870" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:50.556242" elapsed="0.000689"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:50.558933" 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-19T03:30:50.559249" 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-19T03:30:50.558579" elapsed="0.000743"/>
</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-19T03:30:50.567060" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:50.566561" elapsed="0.000667"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:50.566500" elapsed="0.000792"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:50.568980" 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-19T03:30:50.569251" 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-19T03:30:50.568281" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:50.570878" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:50.570334" elapsed="0.000655"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:50.572669" level="INFO">${conn_id} = 366</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:50.571956" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:50.575105" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:50.575184" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:50.574793" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:50.575421" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:50.576680" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:50.875293" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:50.576355" elapsed="0.299094"/>
</kw>
<msg time="2026-04-19T03:30:50.875537" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:50.575977" elapsed="0.299653"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:50.574008" elapsed="0.301911"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:50.877431" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:50.900305" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:50.900814" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:50.901213" 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-19T03:30:50.877014" elapsed="0.024415"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:50.903748" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:50.907020" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:50.905992" elapsed="0.001410"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:50.908326" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:50.907761" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:50.907635" elapsed="0.000988"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:50.909446" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T03:30:50.908944" elapsed="0.000778"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:50.908837" elapsed="0.001027"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:50.910144" elapsed="0.000043"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:50.915088" elapsed="0.000369"/>
</kw>
<kw name="Open 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-19T03:30:50.915679" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:50.916064" 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-19T03:30:50.911508" elapsed="0.004777"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:50.563791" elapsed="0.352734"/>
</kw>
<msg time="2026-04-19T03:30:50.916909" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:50.562239" elapsed="0.354734"/>
</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-19T03:30:50.560909" elapsed="0.356165"/>
</kw>
<msg time="2026-04-19T03:30:50.917119" 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-19T03:30:50.559686" elapsed="0.357481"/>
</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-19T03:30:50.920308" elapsed="0.000361"/>
</kw>
<kw name="Open 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-19T03:30:50.920838" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:50.921155" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:50.917487" elapsed="0.003821"/>
</kw>
<msg time="2026-04-19T03:30:50.921644" level="INFO">${output} = 1</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-19T03:30:50.557476" elapsed="0.364359"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:50.922447" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:50.922172" elapsed="0.000330"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:50.922548" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:30:50.922707" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:50.555253" elapsed="0.367480"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:50.922781" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:50.922929" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:50.552770" elapsed="0.370185"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:50.923553" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:50.923130" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:50.551654" elapsed="0.372099">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:52.927346" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:52.926545" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:52.929461" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:52.928822" elapsed="0.000701"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:52.931302" 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-19T03:30:52.931449" 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-19T03:30:52.931006" elapsed="0.000481"/>
</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-19T03:30:52.936882" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:52.936248" elapsed="0.000745"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:52.936168" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:52.939433" 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-19T03:30:52.939683" 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-19T03:30:52.938473" elapsed="0.001313"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:52.941337" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:52.940771" elapsed="0.000678"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:52.943306" level="INFO">${conn_id} = 369</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:52.942501" elapsed="0.000904"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:52.945687" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:52.945767" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:52.945395" 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-19T03:30:52.946002" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:52.947431" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:53.280266" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:52.946961" elapsed="0.333447"/>
</kw>
<msg time="2026-04-19T03:30:53.280491" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:52.946573" elapsed="0.334004"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:52.944608" elapsed="0.336248"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:53.282356" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:53.304980" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:53.305519" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:53.305849" 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-19T03:30:53.281944" elapsed="0.024158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:53.308340" elapsed="0.000886"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:53.311399" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:53.310484" elapsed="0.001063"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:53.312124" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:53.311770" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:53.311691" elapsed="0.000618"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:53.312795" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:30:53.312515" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:53.312444" elapsed="0.000573"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:53.313154" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:53.319661" elapsed="0.000337"/>
</kw>
<kw name="Open 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-19T03:30:53.320225" elapsed="0.000178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:53.320600" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:53.315121" 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-19T03:30:52.934248" elapsed="0.386806"/>
</kw>
<msg time="2026-04-19T03:30:53.321364" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:52.933284" elapsed="0.388138"/>
</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-19T03:30:52.932443" elapsed="0.389062"/>
</kw>
<msg time="2026-04-19T03:30:53.321546" 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-19T03:30:52.931708" elapsed="0.389884"/>
</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-19T03:30:53.324736" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:53.325235" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:53.325535" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:53.321947" elapsed="0.003739"/>
</kw>
<msg time="2026-04-19T03:30:53.325778" level="INFO">${output} = 1</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-19T03:30:52.930004" elapsed="0.395800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:53.326305" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:53.325983" elapsed="0.000368"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:53.326395" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:30:53.326549" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:52.927873" elapsed="0.398702"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:53.326622" elapsed="0.000059"/>
</return>
<msg time="2026-04-19T03:30:53.326807" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:52.925703" elapsed="0.401130"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:53.327426" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:53.327013" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:52.924601" elapsed="0.403005">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:55.331282" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:55.330479" elapsed="0.000876"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:55.333598" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:55.332940" elapsed="0.000721"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:55.335543" 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-19T03:30:55.335791" 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-19T03:30:55.335201" elapsed="0.000668"/>
</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-19T03:30:55.340026" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:55.339529" elapsed="0.000601"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:55.339470" elapsed="0.000720"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:55.341882" 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-19T03:30:55.342148" 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-19T03:30:55.341171" elapsed="0.001079"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:55.343790" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:55.343225" elapsed="0.000680"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:55.345647" level="INFO">${conn_id} = 372</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:55.344927" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:55.348121" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:55.348202" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:55.347802" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:55.348442" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:55.349788" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:55.672199" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:55.349461" elapsed="0.322904"/>
</kw>
<msg time="2026-04-19T03:30:55.672453" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:55.349086" elapsed="0.323466"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:55.346946" elapsed="0.325898"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:55.674398" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:55.697313" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:55.697811" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:55.698192" 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-19T03:30:55.673973" elapsed="0.024429"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:55.700589" elapsed="0.000901"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:55.703733" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:55.702726" elapsed="0.001234"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:55.704972" elapsed="0.000099"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:55.704408" elapsed="0.000771"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:55.704282" elapsed="0.001022"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:55.705669" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:30:55.705464" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:55.705417" elapsed="0.000412"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:55.705909" 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-19T03:30:55.710733" elapsed="0.000428"/>
</kw>
<kw name="Open 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-19T03:30:55.711373" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:55.711729" 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-19T03:30:55.707320" elapsed="0.004621"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:55.338163" elapsed="0.374042"/>
</kw>
<msg time="2026-04-19T03:30:55.712519" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:55.337369" elapsed="0.375207"/>
</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-19T03:30:55.336806" elapsed="0.375852"/>
</kw>
<msg time="2026-04-19T03:30:55.712700" 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-19T03:30:55.336279" elapsed="0.376467"/>
</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-19T03:30:55.715797" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:30:55.716329" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:55.716632" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:55.713052" elapsed="0.003728"/>
</kw>
<msg time="2026-04-19T03:30:55.716933" level="INFO">${output} = 1</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-19T03:30:55.334231" elapsed="0.382729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:55.717408" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:55.717157" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:55.717496" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:30:55.717649" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:55.331879" elapsed="0.385795"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:55.717722" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:30:55.717868" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:55.329596" elapsed="0.388297"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:55.718466" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:55.718065" elapsed="0.000479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:55.328492" elapsed="0.390168">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:30:57.722264" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:30:57.721491" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:30:57.724416" level="INFO">${member_ip} = 10.30.171.206</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-19T03:30:57.723767" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:57.726314" 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-19T03:30:57.726464" 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-19T03:30:57.725941" elapsed="0.000559"/>
</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-19T03:30:57.732058" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:30:57.731394" elapsed="0.000776"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:57.730987" elapsed="0.001263"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:57.734316" 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-19T03:30:57.734563" 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-19T03:30:57.733679" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:57.736180" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:57.735627" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:30:57.737961" level="INFO">${conn_id} = 375</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:30:57.737269" elapsed="0.000868"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:30:57.740453" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:30:57.740532" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:30:57.740160" 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-19T03:30:57.740769" elapsed="0.000348"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:30:57.742234" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:30:58.066068" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:30:57.741725" elapsed="0.324605"/>
</kw>
<msg time="2026-04-19T03:30:58.066420" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:57.741364" elapsed="0.325152"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:30:57.739355" elapsed="0.327442"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:30:58.068354" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:30:58.090789" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:30:58.091472" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:30:58.091805" 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-19T03:30:58.067926" elapsed="0.024085"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:58.094413" elapsed="0.001072"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:58.097831" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:58.096778" elapsed="0.001317"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:58.098969" elapsed="0.000103"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:30:58.098456" elapsed="0.000755"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:58.098326" elapsed="0.001012"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:30:58.100281" elapsed="0.000126"/>
</return>
<status status="PASS" start="2026-04-19T03:30:58.099665" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-19T03:30:58.099557" elapsed="0.001085"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:30:58.100818" 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-19T03:30:58.108830" 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-19T03:30:58.109500" elapsed="0.000206"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:58.109909" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:58.103854" elapsed="0.006289"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:30:57.729177" elapsed="0.381198"/>
</kw>
<msg time="2026-04-19T03:30:58.110694" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:30:57.728210" elapsed="0.382551"/>
</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-19T03:30:57.727455" elapsed="0.383389"/>
</kw>
<msg time="2026-04-19T03:30:58.110885" 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-19T03:30:57.726723" elapsed="0.384209"/>
</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-19T03:30:58.114121" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:30:58.114622" elapsed="0.000152"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:30:58.114925" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:30:58.111267" elapsed="0.003841"/>
</kw>
<msg time="2026-04-19T03:30:58.115209" level="INFO">${output} = 1</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-19T03:30:57.724956" elapsed="0.390278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:30:58.115711" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:30:58.115453" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:30:58.115803" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:30:58.115970" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:30:57.722788" elapsed="0.393207"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:30:58.116064" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:30:58.116215" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:30:57.720618" elapsed="0.395623"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:30:58.116901" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:30:58.116483" elapsed="0.000501">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:30:57.719520" elapsed="0.397600">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:00.120617" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:00.119814" elapsed="0.000872"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:00.122719" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:00.122097" elapsed="0.000681"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:00.124658" 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-19T03:31:00.124900" 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-19T03:31:00.124297" elapsed="0.000664"/>
</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-19T03:31:00.131650" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:00.130972" elapsed="0.000788"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:00.130585" elapsed="0.001256"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:00.133832" 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-19T03:31:00.134200" 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-19T03:31:00.133233" elapsed="0.001102"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:00.136383" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:00.135826" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:00.138155" level="INFO">${conn_id} = 378</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:00.137450" elapsed="0.000802"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:00.140569" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:00.140646" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:00.140282" elapsed="0.000388"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:00.140881" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:00.142151" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:00.461983" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:30:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:00.141813" elapsed="0.320357"/>
</kw>
<msg time="2026-04-19T03:31:00.462261" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:00.141454" elapsed="0.320906"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:00.139457" elapsed="0.323200"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:00.464212" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:00.487584" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:00.488226" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:00.488552" 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-19T03:31:00.463795" elapsed="0.024966"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:00.491214" elapsed="0.000783"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:00.493560" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:00.492852" elapsed="0.000858"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:00.494323" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:00.493952" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:00.493863" elapsed="0.000655"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:00.495107" elapsed="0.000088"/>
</return>
<status status="PASS" start="2026-04-19T03:31:00.494778" elapsed="0.000489"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:00.494656" elapsed="0.000697"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:00.495474" elapsed="0.000056"/>
</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-19T03:31:00.502743" elapsed="0.000519"/>
</kw>
<kw name="Open 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-19T03:31:00.503545" elapsed="0.000173"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:00.503912" 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-19T03:31:00.497592" elapsed="0.006553"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:00.128705" elapsed="0.375665"/>
</kw>
<msg time="2026-04-19T03:31:00.504679" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:00.127734" elapsed="0.377008"/>
</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-19T03:31:00.126664" elapsed="0.378160"/>
</kw>
<msg time="2026-04-19T03:31:00.504865" 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-19T03:31:00.125373" elapsed="0.379538"/>
</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-19T03:31:00.507985" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:31:00.508475" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:00.508768" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:00.505316" elapsed="0.003597"/>
</kw>
<msg time="2026-04-19T03:31:00.509003" level="INFO">${output} = 1</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-19T03:31:00.123281" elapsed="0.385781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:00.509506" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:00.509254" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:00.509592" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:00.509743" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:00.121170" elapsed="0.388598"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:00.509815" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:31:00.509959" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:00.118986" elapsed="0.390997"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:00.510563" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:00.510161" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:00.117879" elapsed="0.392905">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:02.513126" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:02.512685" elapsed="0.000479"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:02.514238" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:02.513936" elapsed="0.000330"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:02.515088" 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-19T03:31:02.515194" 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-19T03:31:02.514903" elapsed="0.000318"/>
</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-19T03:31:02.521152" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:02.520638" elapsed="0.000599"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:02.518560" elapsed="0.002738"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:02.522759" 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-19T03:31:02.523007" 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-19T03:31:02.522307" elapsed="0.000825"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:02.524679" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:02.524131" elapsed="0.000659"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:02.526484" level="INFO">${conn_id} = 381</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:02.525772" elapsed="0.000813"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:02.528922" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:02.529000" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:02.528632" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:02.529257" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:02.530526" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:02.859710" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:02.530200" elapsed="0.329690"/>
</kw>
<msg time="2026-04-19T03:31:02.859995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:02.529820" elapsed="0.330294"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:02.527839" elapsed="0.332561"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:02.861889" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:02.884588" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:02.885147" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:02.885476" 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-19T03:31:02.861497" elapsed="0.024219"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:02.888013" elapsed="0.000975"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:02.891247" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:02.890284" elapsed="0.001188"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:02.892512" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:02.891816" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:02.891693" elapsed="0.001111"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:02.893774" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T03:31:02.893328" elapsed="0.000668"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:02.893013" elapsed="0.001143"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:02.894332" elapsed="0.000081"/>
</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-19T03:31:02.900343" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:31:02.900896" elapsed="0.000234"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:02.901325" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:02.896912" elapsed="0.004623"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:02.517212" elapsed="0.384544"/>
</kw>
<msg time="2026-04-19T03:31:02.902080" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:02.516488" elapsed="0.385655"/>
</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-19T03:31:02.515926" elapsed="0.386299"/>
</kw>
<msg time="2026-04-19T03:31:02.902265" 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-19T03:31:02.515384" elapsed="0.386927"/>
</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-19T03:31:02.905450" 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-19T03:31:02.905937" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:02.906254" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:02.902602" elapsed="0.003801"/>
</kw>
<msg time="2026-04-19T03:31:02.906497" level="INFO">${output} = 1</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-19T03:31:02.514487" elapsed="0.392035"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:02.906974" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:02.906723" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:02.907077" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:31:02.907233" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:02.513487" elapsed="0.393771"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:02.907304" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:02.907446" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:02.512192" elapsed="0.395279"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:02.908123" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:02.907647" elapsed="0.000555">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:02.511556" elapsed="0.396762">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:04.911936" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:04.911167" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:04.913923" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:04.913536" elapsed="0.000426"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:04.915129" 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-19T03:31:04.915385" 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-19T03:31:04.914873" elapsed="0.000550"/>
</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-19T03:31:04.920860" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:04.920186" elapsed="0.000790"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:04.920105" elapsed="0.001026"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:04.922967" 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-19T03:31:04.923246" 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-19T03:31:04.922268" elapsed="0.001081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:04.924925" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:04.924369" elapsed="0.000705"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:04.926854" level="INFO">${conn_id} = 384</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:04.926090" elapsed="0.000865"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:04.929392" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:04.929474" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:04.929071" 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-19T03:31:04.929714" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:04.931020" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:05.258262" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:04.930688" elapsed="0.327723"/>
</kw>
<msg time="2026-04-19T03:31:05.258496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:04.930310" elapsed="0.328278"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:04.928258" elapsed="0.330613"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:05.260365" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:05.283703" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:05.284247" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:05.284583" 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-19T03:31:05.259960" elapsed="0.024832"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:05.287628" elapsed="0.001170"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:05.290566" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:05.289934" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:05.291290" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:05.290937" elapsed="0.000457"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:05.290855" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:05.291956" elapsed="0.000135"/>
</return>
<status status="PASS" start="2026-04-19T03:31:05.291673" elapsed="0.000490"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:05.291606" elapsed="0.000638"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:05.292356" elapsed="0.000051"/>
</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-19T03:31:05.298659" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:31:05.299292" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:05.299655" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:05.294373" elapsed="0.005493"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:04.918213" elapsed="0.381992"/>
</kw>
<msg time="2026-04-19T03:31:05.300514" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:04.917233" elapsed="0.383340"/>
</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-19T03:31:04.916443" elapsed="0.384214"/>
</kw>
<msg time="2026-04-19T03:31:05.300698" 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-19T03:31:04.915657" elapsed="0.385088"/>
</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-19T03:31:05.303866" 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-19T03:31:05.304391" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:05.304700" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:05.301053" elapsed="0.003798"/>
</kw>
<msg time="2026-04-19T03:31:05.304943" level="INFO">${output} = 1</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-19T03:31:04.914285" elapsed="0.390684"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:05.305476" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:05.305188" elapsed="0.000332"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:05.305564" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:31:05.305723" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:04.912509" elapsed="0.393239"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:05.305795" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:05.305941" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:04.910308" elapsed="0.395657"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:05.306535" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:05.306136" elapsed="0.000474">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:04.909222" elapsed="0.397500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:07.311423" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:07.310399" elapsed="0.001116"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:07.313645" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:07.313011" elapsed="0.000693"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:07.315574" 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-19T03:31:07.315810" 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-19T03:31:07.315210" elapsed="0.000658"/>
</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-19T03:31:07.323766" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:07.323088" elapsed="0.000919"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:07.322989" elapsed="0.001130"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:07.326641" 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-19T03:31:07.326894" 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-19T03:31:07.325574" elapsed="0.001419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:07.328515" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:07.327952" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:07.330352" level="INFO">${conn_id} = 387</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:07.329631" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:07.332729" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:07.332808" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:07.332433" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:07.333175" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:07.334479" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:07.654485" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:07.334111" elapsed="0.320514"/>
</kw>
<msg time="2026-04-19T03:31:07.654705" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:07.333736" elapsed="0.321055"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:07.331649" elapsed="0.323443"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:07.656554" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:07.679373" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:07.679874" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:07.680257" 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-19T03:31:07.656172" elapsed="0.024301"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:07.682746" elapsed="0.000892"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:07.685094" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:07.684450" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:07.685791" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:07.685468" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:07.685386" 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-19T03:31:07.686539" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T03:31:07.686201" elapsed="0.000485"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:07.686133" elapsed="0.000634"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:07.686881" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:07.693250" 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-19T03:31:07.693815" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:07.694196" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:07.688819" elapsed="0.005590"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:07.320235" elapsed="0.374418"/>
</kw>
<msg time="2026-04-19T03:31:07.695076" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:07.318688" elapsed="0.376455"/>
</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-19T03:31:07.317440" elapsed="0.377787"/>
</kw>
<msg time="2026-04-19T03:31:07.695269" 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-19T03:31:07.316250" elapsed="0.379066"/>
</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-19T03:31:07.698373" 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-19T03:31:07.698885" elapsed="0.000252"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:07.699292" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:07.695620" elapsed="0.003824"/>
</kw>
<msg time="2026-04-19T03:31:07.699539" level="INFO">${output} = 1</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-19T03:31:07.314230" elapsed="0.385335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:07.700018" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:07.699764" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:07.700125" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:31:07.700281" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:07.312104" elapsed="0.388204"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:07.700355" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:07.700501" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:07.309506" elapsed="0.391020"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:07.701101" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:07.700682" elapsed="0.000544">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:07.308347" elapsed="0.393023">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:09.705741" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:09.704766" elapsed="0.001062"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:09.708547" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:09.707728" elapsed="0.000897"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:09.710975" 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-19T03:31:09.711303" 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-19T03:31:09.710558" elapsed="0.000824"/>
</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-19T03:31:09.716620" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:09.716009" elapsed="0.000718"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:09.715940" elapsed="0.000866"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:09.718586" 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-19T03:31:09.718838" 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-19T03:31:09.717844" elapsed="0.001096"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:09.722093" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:09.720656" elapsed="0.001732"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:09.725704" level="INFO">${conn_id} = 390</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:09.724649" elapsed="0.001202"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:09.729368" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:09.729485" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:09.728925" elapsed="0.000595"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:09.729837" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:09.732008" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:10.051140" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:09.731325" elapsed="0.319991"/>
</kw>
<msg time="2026-04-19T03:31:10.051422" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:09.730695" elapsed="0.320837"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:09.727661" elapsed="0.324269"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:10.053824" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:10.076742" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:10.077283" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:10.077613" 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-19T03:31:10.053434" elapsed="0.024387"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:10.080082" elapsed="0.000865"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:10.083374" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:10.082229" elapsed="0.001371"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:10.084526" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:10.083993" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:10.083869" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:10.085612" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:31:10.085164" elapsed="0.000671"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:10.085026" elapsed="0.000937"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:10.086231" elapsed="0.000084"/>
</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-19T03:31:10.093510" 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-19T03:31:10.094087" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:10.094456" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:10.089845" elapsed="0.004825"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:09.714186" elapsed="0.380710"/>
</kw>
<msg time="2026-04-19T03:31:10.095222" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:09.713248" elapsed="0.382037"/>
</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-19T03:31:09.712519" elapsed="0.382851"/>
</kw>
<msg time="2026-04-19T03:31:10.095411" 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-19T03:31:09.711800" elapsed="0.383657"/>
</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-19T03:31:10.098639" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:31:10.099129" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:10.099424" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:10.095878" elapsed="0.003693"/>
</kw>
<msg time="2026-04-19T03:31:10.099664" level="INFO">${output} = 1</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-19T03:31:09.709310" elapsed="0.390379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:10.100159" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:10.099893" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:10.100251" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:31:10.100406" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:09.706460" elapsed="0.393970"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:10.100477" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:10.100628" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:09.703645" elapsed="0.397008"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:10.101227" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:10.100810" elapsed="0.000498">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:09.702343" elapsed="0.399080">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:12.104862" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:12.104085" elapsed="0.000850"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:12.106961" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:12.106362" elapsed="0.000658"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:12.108867" 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-19T03:31:12.109134" 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-19T03:31:12.108478" elapsed="0.000718"/>
</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-19T03:31:12.115217" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:12.114509" elapsed="0.000831"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:12.114120" elapsed="0.001304"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:12.117481" 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-19T03:31:12.117835" 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-19T03:31:12.116837" elapsed="0.001116"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:12.119499" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:12.118938" elapsed="0.000671"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:12.121332" level="INFO">${conn_id} = 393</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:12.120587" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:12.123716" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:12.123795" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:12.123426" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:12.124047" elapsed="0.000400"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:12.125405" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:12.444898" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:12.125080" elapsed="0.320058"/>
</kw>
<msg time="2026-04-19T03:31:12.445243" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:12.124672" elapsed="0.320684"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:12.122647" elapsed="0.323025"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:12.447310" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:12.470328" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:12.470934" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:12.471361" 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-19T03:31:12.446844" elapsed="0.024735"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:12.473992" elapsed="0.001135"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:12.477720" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:12.476542" elapsed="0.001425"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:12.478979" elapsed="0.000105"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:12.478402" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:12.478266" elapsed="0.001108"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:12.480442" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T03:31:12.479764" elapsed="0.000922"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:12.479649" elapsed="0.001168"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:12.481082" elapsed="0.000089"/>
</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-19T03:31:12.487304" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T03:31:12.488012" elapsed="0.000215"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:12.488428" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:12.483071" elapsed="0.005591"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:12.112242" elapsed="0.376655"/>
</kw>
<msg time="2026-04-19T03:31:12.489278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:12.111201" elapsed="0.378154"/>
</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-19T03:31:12.110432" elapsed="0.379009"/>
</kw>
<msg time="2026-04-19T03:31:12.489504" 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-19T03:31:12.109550" elapsed="0.380024"/>
</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-19T03:31:12.493182" elapsed="0.000416"/>
</kw>
<kw name="Open 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-19T03:31:12.493787" elapsed="0.000195"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:12.494160" elapsed="0.000105"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:12.489925" elapsed="0.004394"/>
</kw>
<msg time="2026-04-19T03:31:12.494565" level="INFO">${output} = 1</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-19T03:31:12.107533" elapsed="0.387061"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:12.495184" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:12.494843" elapsed="0.000388"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:12.495279" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:31:12.495454" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:12.105419" elapsed="0.390061"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:12.495528" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:31:12.495672" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:12.103255" elapsed="0.392442"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:12.496285" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:12.495856" elapsed="0.000505">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:12.102224" elapsed="0.394251">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:14.499978" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:14.499249" elapsed="0.000829"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:14.502131" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:14.501480" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:14.503940" 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-19T03:31:14.504203" 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-19T03:31:14.503617" elapsed="0.000647"/>
</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-19T03:31:14.509747" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:14.509276" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:14.508976" elapsed="0.000911"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:14.511358" 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-19T03:31:14.511597" 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-19T03:31:14.510889" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:14.513213" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:14.512659" elapsed="0.000662"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:14.515121" level="INFO">${conn_id} = 396</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:14.514339" elapsed="0.000883"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:14.517847" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:14.517927" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:14.517559" elapsed="0.000392"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:14.518205" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:14.519519" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:14.843991" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:14.519193" elapsed="0.325217"/>
</kw>
<msg time="2026-04-19T03:31:14.844485" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:14.518760" elapsed="0.325810"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:14.516465" elapsed="0.328362"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:14.846523" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:14.869056" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:14.869546" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:14.869876" 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-19T03:31:14.846122" elapsed="0.024004"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:14.872416" elapsed="0.000879"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:14.875526" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:14.874558" elapsed="0.001202"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:14.876773" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:14.876251" elapsed="0.000692"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:14.875993" elapsed="0.001110"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:14.877882" elapsed="0.000115"/>
</return>
<status status="PASS" start="2026-04-19T03:31:14.877437" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:14.877326" elapsed="0.000987"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:14.878491" elapsed="0.000084"/>
</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-19T03:31:14.883423" elapsed="0.000323"/>
</kw>
<kw name="Open 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-19T03:31:14.883954" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:14.884377" 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-19T03:31:14.880160" elapsed="0.004423"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:14.507642" elapsed="0.377161"/>
</kw>
<msg time="2026-04-19T03:31:14.885124" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:14.506948" elapsed="0.378232"/>
</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-19T03:31:14.505771" elapsed="0.379489"/>
</kw>
<msg time="2026-04-19T03:31:14.885301" 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-19T03:31:14.504614" elapsed="0.380732"/>
</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-19T03:31:14.888432" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:31:14.888907" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:14.889235" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:14.885637" elapsed="0.003749"/>
</kw>
<msg time="2026-04-19T03:31:14.889481" level="INFO">${output} = 1</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-19T03:31:14.502672" elapsed="0.386835"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:14.889933" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:14.889685" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:14.890021" elapsed="0.000047"/>
</return>
<msg time="2026-04-19T03:31:14.890191" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:14.500535" elapsed="0.389691"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:14.890281" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:14.890423" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:14.498403" elapsed="0.392044"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:14.891111" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:14.890656" elapsed="0.000541">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:14.497343" elapsed="0.393968">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:16.894851" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:16.894109" elapsed="0.000811"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:16.896705" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:16.896322" elapsed="0.000421"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:16.897868" 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-19T03:31:16.898012" 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-19T03:31:16.897646" elapsed="0.000424"/>
</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-19T03:31:16.907086" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:16.905972" elapsed="0.001350"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:16.902601" elapsed="0.004861"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:16.909190" 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-19T03:31:16.909433" 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-19T03:31:16.908722" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:16.911119" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:16.910505" elapsed="0.000725"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:16.912896" level="INFO">${conn_id} = 399</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:16.912211" elapsed="0.000790"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:16.915440" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:16.915518" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:16.914984" elapsed="0.000558"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:16.915751" elapsed="0.000350"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:16.917003" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:17.236130" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:16.916681" elapsed="0.319550"/>
</kw>
<msg time="2026-04-19T03:31:17.236303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:16.916323" elapsed="0.320057"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:16.914233" elapsed="0.322387"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:17.238014" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:17.260895" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:17.261442" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:17.261776" 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-19T03:31:17.237662" elapsed="0.024327"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:17.264139" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:17.266059" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:17.265452" elapsed="0.000756"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:17.266729" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:17.266423" elapsed="0.000410"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:17.266347" 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-19T03:31:17.267439" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T03:31:17.267162" elapsed="0.000431"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:17.267093" elapsed="0.000585"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:17.267785" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:17.273651" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:31:17.274205" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:17.274557" 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-19T03:31:17.269663" elapsed="0.005101"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:16.900769" elapsed="0.374216"/>
</kw>
<msg time="2026-04-19T03:31:17.275475" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:16.899810" elapsed="0.375725"/>
</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-19T03:31:16.899007" elapsed="0.376617"/>
</kw>
<msg time="2026-04-19T03:31:17.275664" 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-19T03:31:16.898294" elapsed="0.377415"/>
</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-19T03:31:17.278774" 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-19T03:31:17.279275" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:17.279598" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:17.276004" elapsed="0.003745"/>
</kw>
<msg time="2026-04-19T03:31:17.279839" level="INFO">${output} = 1</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-19T03:31:16.897068" elapsed="0.382795"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:17.280366" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:17.280107" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:17.280454" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:17.280605" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:16.895525" elapsed="0.385105"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:17.280677" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:31:17.280819" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:16.893259" elapsed="0.387584"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:17.281400" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:17.280997" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:16.892189" elapsed="0.389403">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:19.285220" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:19.284397" elapsed="0.000894"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:19.287537" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:19.286875" elapsed="0.000722"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:19.289422" 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-19T03:31:19.289649" 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-19T03:31:19.289081" elapsed="0.000626"/>
</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-19T03:31:19.295814" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:19.295345" elapsed="0.000548"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:19.295286" elapsed="0.000669"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:19.297647" 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-19T03:31:19.297893" 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-19T03:31:19.296954" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:19.299542" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:19.298965" elapsed="0.000686"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:19.301361" level="INFO">${conn_id} = 402</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:19.300653" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:19.303794" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:19.303872" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:19.303510" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:19.304123" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:19.305415" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:19.615900" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:19.305086" elapsed="0.310988"/>
</kw>
<msg time="2026-04-19T03:31:19.616169" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:19.304705" elapsed="0.311568"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:19.302662" elapsed="0.313897"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:19.618129" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:19.640685" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:19.641266" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:19.641603" 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-19T03:31:19.617698" elapsed="0.024117"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:19.644134" elapsed="0.000953"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:19.647369" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:19.646359" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:19.648632" elapsed="0.000110"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:19.647954" elapsed="0.000905"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:19.647829" elapsed="0.001156"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:19.649436" elapsed="0.000055"/>
</return>
<status status="PASS" start="2026-04-19T03:31:19.649222" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:19.649170" elapsed="0.000434"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:19.649685" 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-19T03:31:19.654743" elapsed="0.000526"/>
</kw>
<kw name="Open 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-19T03:31:19.655503" elapsed="0.000182"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:19.655892" 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-19T03:31:19.651104" elapsed="0.005034"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:19.293846" elapsed="0.362529"/>
</kw>
<msg time="2026-04-19T03:31:19.656698" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:19.292555" elapsed="0.364244"/>
</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-19T03:31:19.291312" elapsed="0.365584"/>
</kw>
<msg time="2026-04-19T03:31:19.656940" 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-19T03:31:19.290091" elapsed="0.366899"/>
</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-19T03:31:19.660349" elapsed="0.000317"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:19.660852" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:19.661188" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:19.657336" elapsed="0.004003"/>
</kw>
<msg time="2026-04-19T03:31:19.661434" level="INFO">${output} = 1</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-19T03:31:19.288115" elapsed="0.373344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:19.661913" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:19.661660" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:19.662001" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T03:31:19.662178" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:19.285921" elapsed="0.376283"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:19.662251" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:19.662396" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:19.283549" elapsed="0.378871"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:19.662971" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:19.662575" elapsed="0.000488">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:19.282462" elapsed="0.380714">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:21.666978" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:21.666222" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:21.669492" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:21.668643" elapsed="0.001062"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:21.671508" 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-19T03:31:21.671797" 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-19T03:31:21.671273" elapsed="0.000566"/>
</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-19T03:31:21.677403" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:21.676700" elapsed="0.000816"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:21.676621" elapsed="0.000976"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:21.679531" 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-19T03:31:21.679782" 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-19T03:31:21.678815" elapsed="0.001067"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:21.681473" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:21.680901" elapsed="0.000685"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:21.683308" level="INFO">${conn_id} = 405</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:21.682587" elapsed="0.000823"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:21.685742" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:21.685837" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:21.685460" 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-19T03:31:21.686095" elapsed="0.000340"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:21.687541" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:22.013566" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:21.687209" elapsed="0.326523"/>
</kw>
<msg time="2026-04-19T03:31:22.013820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:21.686660" elapsed="0.327254"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:21.684678" elapsed="0.329581"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:22.015769" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:22.038954" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:22.039546" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:22.039882" 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-19T03:31:22.015372" elapsed="0.024792"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:22.042487" elapsed="0.000861"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:22.044790" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:22.044165" elapsed="0.000771"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:22.045521" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:22.045189" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:22.045106" 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-19T03:31:22.046232" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:31:22.045909" elapsed="0.000469"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:22.045841" elapsed="0.000617"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:22.046572" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:22.053328" 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-19T03:31:22.053999" elapsed="0.000231"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:22.054437" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:22.048641" elapsed="0.006009"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:21.674698" elapsed="0.380179"/>
</kw>
<msg time="2026-04-19T03:31:22.055207" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:21.673637" elapsed="0.381635"/>
</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-19T03:31:21.672850" elapsed="0.382507"/>
</kw>
<msg time="2026-04-19T03:31:22.055401" 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-19T03:31:21.672097" elapsed="0.383351"/>
</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-19T03:31:22.058729" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T03:31:22.059238" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:22.059538" elapsed="0.000215"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:22.055744" elapsed="0.004062"/>
</kw>
<msg time="2026-04-19T03:31:22.059900" level="INFO">${output} = 1</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-19T03:31:21.670516" elapsed="0.389409"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:22.060411" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:22.060152" elapsed="0.000305"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:22.060501" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:31:22.060658" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:21.667541" elapsed="0.393143"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:22.060732" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:22.060880" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:21.665245" elapsed="0.395659"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:22.061492" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:22.061083" elapsed="0.000485">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:21.663991" elapsed="0.397691">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:24.065285" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:24.064486" elapsed="0.000879"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:24.067437" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:24.066784" elapsed="0.000713"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:24.069285" 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-19T03:31:24.069510" 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-19T03:31:24.068925" elapsed="0.000645"/>
</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-19T03:31:24.074966" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:24.074501" elapsed="0.000648"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:24.074445" elapsed="0.000768"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:24.076874" 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-19T03:31:24.077138" 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-19T03:31:24.076191" elapsed="0.001055"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:24.078757" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:24.078217" elapsed="0.000650"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:24.080575" level="INFO">${conn_id} = 408</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:24.079862" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:24.082983" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:24.083089" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:24.082697" 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-19T03:31:24.083326" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:24.084580" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:24.396248" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:21 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:24.084256" elapsed="0.312130"/>
</kw>
<msg time="2026-04-19T03:31:24.396468" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:24.083880" elapsed="0.312673"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:24.081866" elapsed="0.314964"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:24.398385" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:24.421241" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:24.421737" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:24.422122" 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-19T03:31:24.397924" elapsed="0.024426"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:24.424627" elapsed="0.000907"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:24.427923" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:24.426825" elapsed="0.001469"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:24.428876" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:24.428545" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:24.428464" elapsed="0.000626"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:24.429599" elapsed="0.000077"/>
</return>
<status status="PASS" start="2026-04-19T03:31:24.429299" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:24.429229" elapsed="0.000600"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:24.429942" elapsed="0.000056"/>
</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-19T03:31:24.436655" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:31:24.437222" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:24.437587" 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-19T03:31:24.431856" elapsed="0.005943"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:24.073103" elapsed="0.364937"/>
</kw>
<msg time="2026-04-19T03:31:24.438417" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:24.072363" elapsed="0.366114"/>
</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-19T03:31:24.071150" elapsed="0.367416"/>
</kw>
<msg time="2026-04-19T03:31:24.438612" 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-19T03:31:24.069920" elapsed="0.368741"/>
</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-19T03:31:24.441768" 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-19T03:31:24.442277" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:24.442587" elapsed="0.000115"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:24.438987" elapsed="0.003772"/>
</kw>
<msg time="2026-04-19T03:31:24.442855" level="INFO">${output} = 1</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-19T03:31:24.067983" elapsed="0.374898"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:24.443382" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:24.443092" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:24.443471" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:24.443623" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:24.065818" elapsed="0.377837"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:24.443705" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:31:24.443854" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:24.063619" elapsed="0.380260"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:24.444577" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:24.444117" elapsed="0.000537">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:24.062525" elapsed="0.382253">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:26.448459" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:26.447600" elapsed="0.000930"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:26.450102" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:26.449697" elapsed="0.000443"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:26.451261" 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-19T03:31:26.451419" 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-19T03:31:26.451016" elapsed="0.000444"/>
</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-19T03:31:26.457196" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:26.456527" elapsed="0.000795"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:26.456112" elapsed="0.001314"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:26.459452" 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-19T03:31:26.459796" 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-19T03:31:26.458815" elapsed="0.001123"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:26.461915" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:26.461373" elapsed="0.000667"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:26.463837" level="INFO">${conn_id} = 411</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:26.463132" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:26.466278" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:26.466355" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:26.465978" 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-19T03:31:26.466592" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:26.467841" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:26.788471" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:26.467518" elapsed="0.321110"/>
</kw>
<msg time="2026-04-19T03:31:26.788715" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:26.467158" elapsed="0.321647"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:26.465210" elapsed="0.323918"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:26.790728" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:26.813311" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:26.813836" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:26.814243" 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-19T03:31:26.790312" elapsed="0.024154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:26.817272" elapsed="0.000983"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:26.820680" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:26.819631" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:26.821865" elapsed="0.000114"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:26.821330" elapsed="0.000804"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:26.821197" elapsed="0.001071"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:26.823197" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T03:31:26.822610" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:26.822497" elapsed="0.001075"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:26.823755" elapsed="0.000087"/>
</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-19T03:31:26.829625" elapsed="0.000360"/>
</kw>
<kw name="Open 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-19T03:31:26.830221" elapsed="0.000239"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:26.830667" 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-19T03:31:26.826094" elapsed="0.004794"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:26.454248" elapsed="0.376963"/>
</kw>
<msg time="2026-04-19T03:31:26.831536" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:26.453199" elapsed="0.378402"/>
</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-19T03:31:26.452443" elapsed="0.379240"/>
</kw>
<msg time="2026-04-19T03:31:26.831725" 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-19T03:31:26.451690" elapsed="0.380082"/>
</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-19T03:31:26.834915" elapsed="0.000426"/>
</kw>
<kw name="Open 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-19T03:31:26.835506" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:26.835802" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:26.832180" elapsed="0.003774"/>
</kw>
<msg time="2026-04-19T03:31:26.836065" level="INFO">${output} = 1</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-19T03:31:26.450442" elapsed="0.385650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:26.836567" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:26.836293" elapsed="0.000319"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:26.836658" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:31:26.836816" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:26.448992" elapsed="0.387850"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:26.836890" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:26.837053" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:26.446757" elapsed="0.390323"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:26.837646" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:26.837237" elapsed="0.000487">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:26.445623" elapsed="0.392218">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:28.841604" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:28.840759" elapsed="0.001097"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:28.844231" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:28.843520" elapsed="0.000777"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:28.846534" 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-19T03:31:28.846670" 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-19T03:31:28.846134" elapsed="0.000571"/>
</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-19T03:31:28.851197" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:28.850692" elapsed="0.000589"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:28.850401" elapsed="0.000942"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:28.852787" 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-19T03:31:28.853056" 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-19T03:31:28.852334" elapsed="0.000867"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:28.855626" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:28.854543" elapsed="0.001298"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:28.859205" level="INFO">${conn_id} = 414</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:28.857719" elapsed="0.001662"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:28.863517" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:28.863597" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:28.863205" elapsed="0.000416"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:28.863841" elapsed="0.000497"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:28.865323" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:29.187544" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:28.864965" elapsed="0.322720"/>
</kw>
<msg time="2026-04-19T03:31:29.187766" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:28.864578" elapsed="0.323276"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:28.861701" elapsed="0.326472"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:29.189649" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:29.212591" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:29.213141" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:29.213481" 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-19T03:31:29.189259" elapsed="0.024434"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:29.215962" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:29.218880" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:29.218207" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:29.219656" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:29.219322" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:29.219241" 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-19T03:31:29.220348" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:31:29.220064" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:29.219975" elapsed="0.000593"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:29.220678" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:29.227241" 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-19T03:31:29.227802" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:29.228182" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:29.222591" elapsed="0.005805"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:28.849015" elapsed="0.379603"/>
</kw>
<msg time="2026-04-19T03:31:29.228928" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:28.848301" elapsed="0.380688"/>
</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-19T03:31:28.847668" elapsed="0.381538"/>
</kw>
<msg time="2026-04-19T03:31:29.229247" 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-19T03:31:28.846928" elapsed="0.382366"/>
</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-19T03:31:29.232312" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:31:29.232785" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:29.233096" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:29.229589" elapsed="0.003658"/>
</kw>
<msg time="2026-04-19T03:31:29.233397" level="INFO">${output} = 1</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-19T03:31:28.844820" elapsed="0.388604"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:29.233905" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:29.233622" elapsed="0.000328"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:29.233993" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:31:29.234176" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:28.842365" elapsed="0.391836"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:29.234248" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:29.234394" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:28.839858" elapsed="0.394563"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:29.234971" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:29.234576" elapsed="0.000548">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:28.838707" elapsed="0.396532">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:31.238999" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:31.238056" elapsed="0.001042"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:31.241147" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:31.240514" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:31.242970" 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-19T03:31:31.243229" 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-19T03:31:31.242637" elapsed="0.000652"/>
</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-19T03:31:31.249750" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:31.249266" elapsed="0.000565"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:31.247321" elapsed="0.002569"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:31.251343" 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-19T03:31:31.251595" 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-19T03:31:31.250880" elapsed="0.000818"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:31.253209" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:31.252662" elapsed="0.000653"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:31.254963" level="INFO">${conn_id} = 417</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:31.254280" elapsed="0.000858"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:31.257459" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:31.257537" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:31.257167" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:31.257770" elapsed="0.000349"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:31.259176" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:31.574167" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:31.258711" elapsed="0.315663"/>
</kw>
<msg time="2026-04-19T03:31:31.574454" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:31.258349" elapsed="0.316187"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:31.256397" elapsed="0.318399"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:31.576270" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:31.598839" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:31.599376" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:31.599708" 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-19T03:31:31.575852" elapsed="0.024064"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:31.602148" elapsed="0.000839"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:31.604953" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:31.604301" elapsed="0.000817"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:31.605659" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:31.605338" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:31.605260" elapsed="0.000582"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:31.606340" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:31:31.606061" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:31.605972" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:31.606668" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:31.613066" elapsed="0.000333"/>
</kw>
<kw name="Open 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-19T03:31:31.613609" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:31.613963" 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-19T03:31:31.608587" elapsed="0.005601"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:31.245990" elapsed="0.368424"/>
</kw>
<msg time="2026-04-19T03:31:31.614725" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:31.245303" elapsed="0.369478"/>
</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-19T03:31:31.244750" elapsed="0.370112"/>
</kw>
<msg time="2026-04-19T03:31:31.614904" 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-19T03:31:31.243661" elapsed="0.371289"/>
</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-19T03:31:31.618124" 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-19T03:31:31.618606" elapsed="0.000153"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:31.618910" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:31.615257" elapsed="0.003819"/>
</kw>
<msg time="2026-04-19T03:31:31.619168" level="INFO">${output} = 1</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-19T03:31:31.241691" elapsed="0.377503"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:31.619622" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:31.619372" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:31.619711" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:31.619862" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:31.239572" elapsed="0.380316"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:31.619934" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:31:31.620147" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:31.237197" elapsed="0.382976"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:31.620769" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:31.620373" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:31.236129" elapsed="0.384822">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:33.624624" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:33.623862" elapsed="0.000830"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:33.626718" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:33.626100" elapsed="0.000677"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:33.628537" 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-19T03:31:33.628759" 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-19T03:31:33.628209" elapsed="0.000606"/>
</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-19T03:31:33.634295" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:33.633751" elapsed="0.000641"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:33.633692" elapsed="0.000763"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:33.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-19T03:31:33.636510" 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-19T03:31:33.635473" elapsed="0.001139"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:33.638295" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:33.637631" elapsed="0.000787"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:33.641105" level="INFO">${conn_id} = 420</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:33.639464" elapsed="0.001862"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:33.644694" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:33.644782" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:33.644327" elapsed="0.000479"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:33.645047" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:33.646581" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:33.966054" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:33.646202" elapsed="0.320011"/>
</kw>
<msg time="2026-04-19T03:31:33.966301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:33.645656" elapsed="0.320740"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:33.643430" elapsed="0.323298"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:33.968300" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:33.991102" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:33.991606" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:33.991936" 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-19T03:31:33.967854" elapsed="0.024330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:33.994350" elapsed="0.000944"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:33.996839" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:33.996228" elapsed="0.000753"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:33.997574" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:33.997237" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:33.997153" elapsed="0.000611"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:33.998268" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:31:33.997965" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:33.997898" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:33.998596" elapsed="0.000067"/>
</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-19T03:31:34.004776" 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-19T03:31:34.005346" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:34.005709" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:34.000439" elapsed="0.005480"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:33.632356" elapsed="0.373998"/>
</kw>
<msg time="2026-04-19T03:31:34.006704" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:33.631635" elapsed="0.375133"/>
</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-19T03:31:33.630358" elapsed="0.376494"/>
</kw>
<msg time="2026-04-19T03:31:34.006893" 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-19T03:31:33.629189" elapsed="0.377751"/>
</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-19T03:31:34.010012" elapsed="0.000328"/>
</kw>
<kw name="Open 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-19T03:31:34.010505" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:34.010836" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:34.007266" elapsed="0.003718"/>
</kw>
<msg time="2026-04-19T03:31:34.011139" level="INFO">${output} = 1</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-19T03:31:33.627278" elapsed="0.383887"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:34.011604" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:34.011354" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:34.011691" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:34.011843" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:33.625169" elapsed="0.386699"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:34.011916" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:34.012081" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:33.623011" elapsed="0.389095"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:34.012667" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:34.012265" elapsed="0.000480">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:33.621813" elapsed="0.391048">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:36.016316" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:36.015563" elapsed="0.000822"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:36.018709" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:36.018100" elapsed="0.000668"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:36.020557" 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-19T03:31:36.020831" 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-19T03:31:36.020234" elapsed="0.000658"/>
</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-19T03:31:36.025262" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:36.024756" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:36.024672" elapsed="0.000729"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:36.027096" 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-19T03:31:36.027345" 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-19T03:31:36.026377" elapsed="0.001070"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:36.029014" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:36.028412" elapsed="0.000743"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:36.030897" level="INFO">${conn_id} = 423</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:36.030206" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:36.033448" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:36.033545" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:36.033096" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:36.033833" elapsed="0.000533"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:36.035611" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:36.350531" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:33 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:36.035244" elapsed="0.315432"/>
</kw>
<msg time="2026-04-19T03:31:36.350756" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:36.034655" elapsed="0.316186"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:36.032197" elapsed="0.318950"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:36.352632" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:36.375825" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:36.376073" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:36.376229" 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-19T03:31:36.352250" elapsed="0.024075"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:36.377338" elapsed="0.000392"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:36.378772" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:36.378322" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:36.379371" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:36.379059" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:36.378985" elapsed="0.000524"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:36.379862" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:31:36.379656" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:36.379607" elapsed="0.000419"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:36.380124" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:36.384850" 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-19T03:31:36.385425" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:36.385782" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:36.381483" elapsed="0.004506"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:36.023375" elapsed="0.362935"/>
</kw>
<msg time="2026-04-19T03:31:36.386613" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:36.022667" elapsed="0.364004"/>
</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-19T03:31:36.022135" elapsed="0.364617"/>
</kw>
<msg time="2026-04-19T03:31:36.386793" 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-19T03:31:36.021550" elapsed="0.365289"/>
</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-19T03:31:36.389835" elapsed="0.000436"/>
</kw>
<kw name="Open 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-19T03:31:36.390437" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:36.390735" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:36.387144" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T03:31:36.390975" level="INFO">${output} = 1</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-19T03:31:36.019279" elapsed="0.371722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:36.391447" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:36.391197" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:36.391535" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:36.391687" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:36.017157" elapsed="0.374555"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:36.391760" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:31:36.391906" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:36.014732" elapsed="0.377199"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:36.392499" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:36.392103" elapsed="0.000471">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:36.013688" elapsed="0.378998">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:38.396212" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:38.395440" elapsed="0.000847"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:38.398372" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:38.397700" elapsed="0.000732"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:38.400308" 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-19T03:31:38.400709" 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-19T03:31:38.399947" elapsed="0.000825"/>
</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-19T03:31:38.406421" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:38.405930" elapsed="0.000572"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:38.405873" elapsed="0.000688"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:38.408296" 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-19T03:31:38.408547" 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-19T03:31:38.407587" elapsed="0.001062"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:38.410233" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:38.409633" elapsed="0.000711"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:38.412115" level="INFO">${conn_id} = 426</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:38.411346" elapsed="0.000871"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:38.414735" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:38.414822" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:38.414451" 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-19T03:31:38.415091" elapsed="0.000404"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:38.416431" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:38.728953" 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 Sun Apr 19 03:30:38 UTC 2026

  System load:  0.04               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:38.416106" elapsed="0.313064"/>
</kw>
<msg time="2026-04-19T03:31:38.729286" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:38.415723" elapsed="0.313678"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:38.413583" elapsed="0.316206"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:38.731915" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:38.755242" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:38.755761" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:38.756136" 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-19T03:31:38.731431" elapsed="0.024913"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:38.758525" elapsed="0.000936"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:38.761678" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:38.760686" elapsed="0.001216"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:38.762757" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:38.762274" elapsed="0.000646"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:38.762153" elapsed="0.000919"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:38.763767" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:31:38.763435" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:38.763284" elapsed="0.000641"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:38.764003" elapsed="0.000055"/>
</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-19T03:31:38.768746" elapsed="0.000418"/>
</kw>
<kw name="Open 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-19T03:31:38.769458" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:38.769816" 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-19T03:31:38.765419" elapsed="0.004604"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:38.404453" elapsed="0.365812"/>
</kw>
<msg time="2026-04-19T03:31:38.770577" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:38.403743" elapsed="0.366891"/>
</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-19T03:31:38.402348" elapsed="0.368371"/>
</kw>
<msg time="2026-04-19T03:31:38.770761" 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-19T03:31:38.401163" elapsed="0.369645"/>
</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-19T03:31:38.774089" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:31:38.774700" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:38.775010" elapsed="0.000117"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:38.771115" elapsed="0.004065"/>
</kw>
<msg time="2026-04-19T03:31:38.775271" level="INFO">${output} = 1</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-19T03:31:38.398978" elapsed="0.376318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:38.775736" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:38.775487" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:38.775823" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:31:38.775975" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:38.396743" elapsed="0.379257"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:38.776061" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:31:38.776207" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:38.394564" elapsed="0.381668"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:38.776776" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:38.776388" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:38.393491" elapsed="0.383468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:40.780475" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:40.779708" elapsed="0.000837"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:40.782597" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:40.781967" elapsed="0.000692"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:40.784545" 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-19T03:31:40.784770" 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-19T03:31:40.784109" elapsed="0.000704"/>
</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-19T03:31:40.790477" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:40.789813" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:40.789427" elapsed="0.001327"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:40.792780" 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-19T03:31:40.793190" 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-19T03:31:40.792164" elapsed="0.001173"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:40.795004" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:40.794465" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:40.796825" level="INFO">${conn_id} = 429</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:40.796128" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:40.799279" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:40.799357" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:40.798978" 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-19T03:31:40.799598" elapsed="0.000346"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:40.800872" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:41.409437" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:40.800547" elapsed="0.609039"/>
</kw>
<msg time="2026-04-19T03:31:41.409667" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:40.800186" elapsed="0.609591"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:40.798211" elapsed="0.611872"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:41.411566" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:41.434824" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:41.435372" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:41.435704" 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-19T03:31:41.411175" elapsed="0.024740"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:41.438226" elapsed="0.000909"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:41.441379" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:41.440393" elapsed="0.001222"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:41.442518" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:41.441986" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:41.441863" elapsed="0.000948"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:41.443614" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T03:31:41.443163" elapsed="0.000670"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:41.443023" elapsed="0.000938"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:41.444296" elapsed="0.000086"/>
</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-19T03:31:41.450405" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:41.450949" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:41.451326" elapsed="0.000111"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:41.447011" elapsed="0.004532"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:40.787534" elapsed="0.664233"/>
</kw>
<msg time="2026-04-19T03:31:41.452206" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:40.786567" elapsed="0.665700"/>
</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-19T03:31:40.785796" elapsed="0.666556"/>
</kw>
<msg time="2026-04-19T03:31:41.452393" 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-19T03:31:40.785061" elapsed="0.667379"/>
</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-19T03:31:41.455428" 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-19T03:31:41.455907" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:41.456312" elapsed="0.000108"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:41.452734" elapsed="0.003739"/>
</kw>
<msg time="2026-04-19T03:31:41.456564" level="INFO">${output} = 1</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-19T03:31:40.783172" elapsed="0.673417"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:41.457023" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:41.456769" elapsed="0.000316"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:41.457129" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:41.457283" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:40.780999" elapsed="0.676310"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:41.457355" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:41.457499" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:40.778862" elapsed="0.678662"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:41.458102" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:41.457681" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:40.777802" elapsed="0.680479">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:43.461925" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:43.461107" elapsed="0.000893"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:43.464128" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:43.463575" elapsed="0.000591"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:43.465305" 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-19T03:31:43.465453" 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-19T03:31:43.465075" elapsed="0.000414"/>
</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-19T03:31:43.471841" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:43.471126" elapsed="0.000849"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:43.470704" elapsed="0.001379"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:43.473543" 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-19T03:31:43.473787" 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-19T03:31:43.473081" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:43.475431" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:43.474876" elapsed="0.000708"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:43.477464" level="INFO">${conn_id} = 432</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:43.476715" elapsed="0.000848"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:43.479861" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:43.479939" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:43.479575" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:43.480428" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:43.481681" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:43.802144" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:43.481361" elapsed="0.320928"/>
</kw>
<msg time="2026-04-19T03:31:43.802373" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:43.480985" elapsed="0.321479"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:43.478776" elapsed="0.323962"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:43.804282" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:43.827618" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:43.828196" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:43.828522" 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-19T03:31:43.803856" elapsed="0.024875"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:43.830907" elapsed="0.000943"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:43.833637" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:43.833002" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:43.834370" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:43.834021" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:43.833926" elapsed="0.000631"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:43.835074" elapsed="0.000078"/>
</return>
<status status="PASS" start="2026-04-19T03:31:43.834759" elapsed="0.000461"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:43.834691" elapsed="0.000610"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:43.835413" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:43.841867" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:31:43.842433" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:43.842804" elapsed="0.000104"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:43.837400" elapsed="0.005616"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:43.468686" elapsed="0.374568"/>
</kw>
<msg time="2026-04-19T03:31:43.843561" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:43.467662" elapsed="0.375957"/>
</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-19T03:31:43.466527" elapsed="0.377173"/>
</kw>
<msg time="2026-04-19T03:31:43.843752" 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-19T03:31:43.465757" elapsed="0.378049"/>
</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-19T03:31:43.846997" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:31:43.847494" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:43.847812" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:43.844189" elapsed="0.003775"/>
</kw>
<msg time="2026-04-19T03:31:43.848070" level="INFO">${output} = 1</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-19T03:31:43.464466" elapsed="0.383631"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:43.848546" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:43.848290" elapsed="0.000301"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:43.848635" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:43.848787" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:43.462510" elapsed="0.386303"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:43.848860" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:31:43.849005" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:43.460272" elapsed="0.388786"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:43.849649" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:43.849223" elapsed="0.000513">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:43.459171" elapsed="0.390689">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:45.853329" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:45.852566" elapsed="0.000857"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:45.855461" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:45.854820" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:45.857311" 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-19T03:31:45.857593" 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-19T03:31:45.856955" elapsed="0.000698"/>
</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-19T03:31:45.865460" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:45.864743" elapsed="0.000831"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:45.862286" elapsed="0.003368"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:45.867156" 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-19T03:31:45.867399" 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-19T03:31:45.866703" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:45.869062" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:45.868507" elapsed="0.000664"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:45.870842" level="INFO">${conn_id} = 435</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:45.870153" elapsed="0.000789"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:45.873216" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:45.873294" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:45.872917" 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-19T03:31:45.873558" elapsed="0.000395"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:45.874876" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:46.203132" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:45.874554" elapsed="0.328705"/>
</kw>
<msg time="2026-04-19T03:31:46.203338" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:45.874194" elapsed="0.329229"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:45.872153" elapsed="0.331533"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:46.205167" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:46.228373" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:46.228872" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:46.229333" 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-19T03:31:46.204763" elapsed="0.024858"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:46.231988" elapsed="0.000937"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:46.235243" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:46.234270" elapsed="0.001205"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:46.236362" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:46.235825" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:46.235701" elapsed="0.000955"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:46.237459" elapsed="0.000114"/>
</return>
<status status="PASS" start="2026-04-19T03:31:46.236978" elapsed="0.000901"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:46.236871" elapsed="0.001305"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:46.238261" 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-19T03:31:46.243111" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:31:46.243672" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:46.244053" 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-19T03:31:46.239581" elapsed="0.004693"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:45.860424" elapsed="0.384083"/>
</kw>
<msg time="2026-04-19T03:31:46.244820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:45.859474" elapsed="0.385405"/>
</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-19T03:31:45.858715" elapsed="0.386249"/>
</kw>
<msg time="2026-04-19T03:31:46.245008" 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-19T03:31:45.857981" elapsed="0.387089"/>
</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-19T03:31:46.248161" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:31:46.248651" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:46.249005" elapsed="0.000125"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:46.245372" elapsed="0.003813"/>
</kw>
<msg time="2026-04-19T03:31:46.249334" level="INFO">${output} = 1</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-19T03:31:45.856005" elapsed="0.393354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:46.249801" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:46.249535" elapsed="0.000311"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:46.249889" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:31:46.250143" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:45.853878" elapsed="0.396291"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:46.250217" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:46.250363" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:45.851722" elapsed="0.398665"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:46.250937" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:46.250544" elapsed="0.000467">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:45.850685" elapsed="0.400453">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:48.254728" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:48.253941" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:48.256849" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:48.256248" elapsed="0.000661"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:48.258716" 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-19T03:31:48.258945" 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-19T03:31:48.258360" elapsed="0.000648"/>
</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-19T03:31:48.264752" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:48.264109" elapsed="0.000752"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:48.264011" elapsed="0.000933"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:48.267332" 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-19T03:31:48.267680" 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-19T03:31:48.266342" elapsed="0.001480"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:48.269430" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:48.268869" elapsed="0.000672"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:48.271501" level="INFO">${conn_id} = 438</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:48.270592" elapsed="0.001016"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:48.274253" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:48.274348" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:48.273906" elapsed="0.000469"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:48.274627" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:48.276297" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:48.592140" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:48.275895" elapsed="0.316480"/>
</kw>
<msg time="2026-04-19T03:31:48.592460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:48.275459" elapsed="0.317090"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:48.273003" elapsed="0.319821"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:48.594329" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:48.617456" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:48.617957" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:48.618345" 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-19T03:31:48.593924" elapsed="0.024632"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:48.620864" elapsed="0.000905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:48.624173" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:48.623082" elapsed="0.001241"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:48.624873" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:48.624550" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:48.624468" elapsed="0.000612"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:48.625571" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:31:48.625287" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:48.625218" elapsed="0.000577"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:48.625908" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:48.632615" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:31:48.633180" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:48.633539" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:48.627797" elapsed="0.005949"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:48.262156" elapsed="0.371810"/>
</kw>
<msg time="2026-04-19T03:31:48.634280" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:48.261166" elapsed="0.373172"/>
</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-19T03:31:48.260392" elapsed="0.374029"/>
</kw>
<msg time="2026-04-19T03:31:48.634462" 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-19T03:31:48.259444" elapsed="0.375065"/>
</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-19T03:31:48.637529" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:31:48.638005" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:48.638324" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:48.634799" elapsed="0.003673"/>
</kw>
<msg time="2026-04-19T03:31:48.638562" level="INFO">${output} = 1</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-19T03:31:48.257418" elapsed="0.381169"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:48.639014" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:48.638765" elapsed="0.000323"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:48.639132" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:48.639428" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:48.255313" elapsed="0.384165"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:48.639527" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:48.639674" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:48.253114" elapsed="0.386584"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:48.640494" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:48.639899" elapsed="0.000672">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:48.251967" elapsed="0.388718">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:50.644502" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:50.643697" elapsed="0.000890"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:50.646778" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:50.646135" elapsed="0.000708"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:50.648724" 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-19T03:31:50.649121" 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-19T03:31:50.648369" elapsed="0.000822"/>
</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-19T03:31:50.655020" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:50.654359" elapsed="0.000797"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:50.654279" elapsed="0.000961"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:50.657693" 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-19T03:31:50.658121" 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-19T03:31:50.656652" elapsed="0.001600"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:50.659807" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:50.659260" elapsed="0.000666"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:50.661679" level="INFO">${conn_id} = 441</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:50.660932" elapsed="0.000847"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:50.664241" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:50.664321" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:50.663921" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:50.664563" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:50.665906" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:50.984721" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:48 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:50.665576" elapsed="0.319279"/>
</kw>
<msg time="2026-04-19T03:31:50.984937" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:50.665203" elapsed="0.319822"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:50.663150" elapsed="0.322185"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:50.986836" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:51.010111" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:51.010657" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:51.011006" 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-19T03:31:50.986444" elapsed="0.024846"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:51.013654" elapsed="0.001000"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:51.017084" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:51.015967" elapsed="0.001508"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:51.018303" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:51.017851" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:51.017723" elapsed="0.000717"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:51.018788" elapsed="0.000058"/>
</return>
<status status="PASS" start="2026-04-19T03:31:51.018584" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:51.018536" elapsed="0.000418"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:51.019050" 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-19T03:31:51.023835" elapsed="0.000498"/>
</kw>
<kw name="Open 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-19T03:31:51.024551" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:51.024912" 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-19T03:31:51.020459" elapsed="0.004684"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:50.652339" elapsed="0.373047"/>
</kw>
<msg time="2026-04-19T03:31:51.025696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:50.651335" elapsed="0.374422"/>
</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-19T03:31:50.650525" elapsed="0.375315"/>
</kw>
<msg time="2026-04-19T03:31:51.025882" 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-19T03:31:50.649554" elapsed="0.376376"/>
</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-19T03:31:51.029022" 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-19T03:31:51.029556" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:51.029853" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:51.026244" elapsed="0.003758"/>
</kw>
<msg time="2026-04-19T03:31:51.030113" level="INFO">${output} = 1</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-19T03:31:50.647374" elapsed="0.382765"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:51.030577" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:51.030327" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:51.030665" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:31:51.030817" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:50.645127" elapsed="0.385716"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:51.030891" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:31:51.031049" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:50.642721" elapsed="0.388354"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:51.031625" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:51.031232" elapsed="0.000466">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:50.641558" elapsed="0.390251">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:53.035540" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:53.034704" elapsed="0.000910"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:53.037963" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:53.037310" elapsed="0.000746"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:53.040009" 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-19T03:31:53.040362" 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-19T03:31:53.039646" elapsed="0.000798"/>
</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-19T03:31:53.045978" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:53.045512" elapsed="0.000563"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:53.045453" elapsed="0.000682"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:53.047920" 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-19T03:31:53.048191" 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-19T03:31:53.047227" elapsed="0.001068"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:53.049803" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:53.049263" elapsed="0.000648"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:53.051640" level="INFO">${conn_id} = 444</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:53.050921" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:53.054099" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:53.054183" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:53.053742" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:53.054421" elapsed="0.000368"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:53.055724" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:53.384269" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:50 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:53.055397" elapsed="0.329037"/>
</kw>
<msg time="2026-04-19T03:31:53.384524" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:53.055015" elapsed="0.329608"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:53.052936" elapsed="0.331987"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:53.386468" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:53.409480" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:53.409974" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:53.410350" 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-19T03:31:53.386063" elapsed="0.024498"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:53.412854" elapsed="0.000899"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:53.416002" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:53.415019" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:53.417257" elapsed="0.000067"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:53.416625" elapsed="0.000802"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:53.416503" elapsed="0.001050"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:53.418350" elapsed="0.000119"/>
</return>
<status status="PASS" start="2026-04-19T03:31:53.417875" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:53.417766" elapsed="0.000935"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:53.418924" elapsed="0.000086"/>
</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-19T03:31:53.423974" elapsed="0.000374"/>
</kw>
<kw name="Open 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-19T03:31:53.424562" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:53.424929" elapsed="0.000125"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:53.420548" elapsed="0.004616"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:53.044128" elapsed="0.381263"/>
</kw>
<msg time="2026-04-19T03:31:53.425706" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:53.043420" elapsed="0.382352"/>
</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-19T03:31:53.042205" elapsed="0.383651"/>
</kw>
<msg time="2026-04-19T03:31:53.425898" 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-19T03:31:53.040875" elapsed="0.385069"/>
</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-19T03:31:53.429224" elapsed="0.000316"/>
</kw>
<kw name="Open 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-19T03:31:53.429704" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:53.430002" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:53.426258" elapsed="0.003911"/>
</kw>
<msg time="2026-04-19T03:31:53.430270" level="INFO">${output} = 1</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-19T03:31:53.038604" elapsed="0.391691"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:53.430766" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:53.430513" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:53.430866" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:31:53.431153" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:53.036290" elapsed="0.394892"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:53.431231" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:53.431378" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:53.033760" elapsed="0.397643"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:53.431959" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:53.431560" elapsed="0.000494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:53.032666" elapsed="0.399506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:55.436130" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:55.435370" elapsed="0.000860"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:55.438323" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:55.437676" elapsed="0.000709"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:55.440207" 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-19T03:31:55.440582" 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-19T03:31:55.439828" elapsed="0.000817"/>
</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-19T03:31:55.448091" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:55.447430" elapsed="0.000807"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:55.447061" elapsed="0.001267"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:55.450088" 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-19T03:31:55.450333" 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-19T03:31:55.449620" elapsed="0.000813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:55.451976" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:55.451426" elapsed="0.000706"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:55.453892" level="INFO">${conn_id} = 447</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:55.453185" elapsed="0.000809"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:55.456391" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:55.456472" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:55.456072" 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-19T03:31:55.456712" elapsed="0.000361"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:55.457977" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:55.779359" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:55.457655" elapsed="0.321852"/>
</kw>
<msg time="2026-04-19T03:31:55.779591" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:55.457299" elapsed="0.322377"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:55.455301" elapsed="0.324658"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:55.781471" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:55.803892" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:55.804473" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:55.804823" 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-19T03:31:55.781077" elapsed="0.024007"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:55.807304" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:55.810005" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:55.809408" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:55.810749" elapsed="0.000052"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:55.810419" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:55.810343" elapsed="0.000599"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:55.811449" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:31:55.811168" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:55.811101" elapsed="0.000566"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:55.811776" elapsed="0.000051"/>
</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-19T03:31:55.818326" elapsed="0.000455"/>
</kw>
<kw name="Open 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-19T03:31:55.819205" elapsed="0.000228"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:55.819705" elapsed="0.000143"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:55.813611" elapsed="0.006386"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:55.444966" elapsed="0.375366"/>
</kw>
<msg time="2026-04-19T03:31:55.820799" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:55.443437" elapsed="0.377443"/>
</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-19T03:31:55.442209" elapsed="0.378785"/>
</kw>
<msg time="2026-04-19T03:31:55.821073" 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-19T03:31:55.441004" elapsed="0.380137"/>
</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-19T03:31:55.824257" 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-19T03:31:55.824748" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:55.825058" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:55.821472" elapsed="0.003738"/>
</kw>
<msg time="2026-04-19T03:31:55.825302" level="INFO">${output} = 1</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-19T03:31:55.438876" elapsed="0.386452"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:55.825754" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:55.825506" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:55.825842" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:55.825994" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:55.436692" elapsed="0.389328"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:55.826083" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:31:55.826248" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:55.434537" elapsed="0.391741"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:55.826831" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:55.826439" elapsed="0.000464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:55.433466" elapsed="0.393546">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:31:57.830622" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:31:57.829853" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:31:57.832721" level="INFO">${member_ip} = 10.30.171.206</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-19T03:31:57.832118" elapsed="0.000664"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:57.834571" 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-19T03:31:57.834730" 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-19T03:31:57.834343" elapsed="0.000442"/>
</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-19T03:31:57.840385" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:31:57.839721" elapsed="0.000857"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:57.839346" elapsed="0.001318"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:57.842705" 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-19T03:31:57.843091" 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-19T03:31:57.842086" elapsed="0.001145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:57.845375" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:57.844592" elapsed="0.000937"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:31:57.847574" level="INFO">${conn_id} = 450</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:31:57.846777" elapsed="0.000895"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:31:57.850018" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:31:57.850114" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:31:57.849708" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:57.850352" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:31:57.851757" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:31:58.181869" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:31:57.851433" elapsed="0.330615"/>
</kw>
<msg time="2026-04-19T03:31:58.182137" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:57.850909" elapsed="0.331317"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:31:57.848914" elapsed="0.333591"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:31:58.183987" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:31:58.206934" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:31:58.207496" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:31:58.207841" 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-19T03:31:58.183599" elapsed="0.024490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:58.210404" elapsed="0.000930"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:58.213649" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:58.212660" elapsed="0.001219"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:58.214772" elapsed="0.000065"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:31:58.214278" elapsed="0.000658"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:58.214155" elapsed="0.000937"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:31:58.215857" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T03:31:58.215414" elapsed="0.000890"/>
</branch>
<status status="PASS" start="2026-04-19T03:31:58.215308" elapsed="0.001160"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:31:58.216651" elapsed="0.000085"/>
</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-19T03:31:58.222482" elapsed="0.000336"/>
</kw>
<kw name="Open 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-19T03:31:58.223042" elapsed="0.000165"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:58.223407" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:58.219054" elapsed="0.004563"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:31:57.837475" elapsed="0.386364"/>
</kw>
<msg time="2026-04-19T03:31:58.224271" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:31:57.836517" elapsed="0.387813"/>
</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-19T03:31:57.835749" elapsed="0.388664"/>
</kw>
<msg time="2026-04-19T03:31:58.224454" 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-19T03:31:57.835012" elapsed="0.389489"/>
</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-19T03:31:58.227456" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:31:58.227932" elapsed="0.000251"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:31:58.228336" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:31:58.224792" elapsed="0.003695"/>
</kw>
<msg time="2026-04-19T03:31:58.228577" level="INFO">${output} = 1</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-19T03:31:57.833291" elapsed="0.395312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:31:58.229043" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:31:58.228781" elapsed="0.000310"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:31:58.229135" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:31:58.229286" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:31:57.831174" elapsed="0.398137"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:31:58.229359" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:31:58.229508" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:31:57.828990" elapsed="0.400543"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:31:58.230172" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:31:58.229690" elapsed="0.000563">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:31:57.827911" elapsed="0.402464">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:00.232743" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:00.232259" elapsed="0.000530"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:00.234076" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:00.233678" elapsed="0.000437"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:00.235229" 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-19T03:32:00.235403" 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-19T03:32:00.234989" elapsed="0.000453"/>
</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-19T03:32:00.243129" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:00.242433" elapsed="0.000810"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:00.239985" elapsed="0.003373"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:00.245119" 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-19T03:32:00.245365" 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-19T03:32:00.244662" elapsed="0.000808"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:00.247005" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:00.246456" elapsed="0.000739"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:00.248954" level="INFO">${conn_id} = 453</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:00.248251" elapsed="0.000821"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:00.251429" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:00.251510" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:00.251122" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:00.251747" elapsed="0.000351"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:00.253004" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:00.545241" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:31:58 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:00.252683" elapsed="0.292687"/>
</kw>
<msg time="2026-04-19T03:32:00.545447" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:00.252323" elapsed="0.293207"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:00.250290" elapsed="0.295504"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:00.547258" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:00.570074" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:00.570390" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:00.570599" 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-19T03:32:00.546860" elapsed="0.023868"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:00.572129" elapsed="0.000592"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:00.574135" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:00.573513" elapsed="0.000764"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:00.574822" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:00.574500" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:00.574421" elapsed="0.000582"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:00.575526" elapsed="0.000072"/>
</return>
<status status="PASS" start="2026-04-19T03:32:00.575233" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:00.575167" elapsed="0.000580"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:00.575859" elapsed="0.000051"/>
</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-19T03:32:00.581962" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:32:00.582523" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:00.582879" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:00.577687" elapsed="0.005472"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:00.238131" elapsed="0.345248"/>
</kw>
<msg time="2026-04-19T03:32:00.583696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:00.237159" elapsed="0.346596"/>
</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-19T03:32:00.236400" elapsed="0.347436"/>
</kw>
<msg time="2026-04-19T03:32:00.583876" 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-19T03:32:00.235665" elapsed="0.348257"/>
</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-19T03:32:00.587226" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:32:00.587732" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:00.588044" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:00.584286" elapsed="0.003910"/>
</kw>
<msg time="2026-04-19T03:32:00.588289" level="INFO">${output} = 1</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-19T03:32:00.234415" elapsed="0.353900"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:00.588745" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:00.588496" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:00.588832" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:00.588983" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:00.233102" elapsed="0.355907"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:00.589071" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:00.589217" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:00.231712" elapsed="0.357530"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:00.589788" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:00.589399" elapsed="0.000461">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:00.230977" elapsed="0.358992">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:02.593468" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:02.592674" elapsed="0.000865"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:02.595575" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:02.594944" elapsed="0.000691"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:02.597498" 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-19T03:32:02.597644" 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-19T03:32:02.597169" elapsed="0.000512"/>
</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-19T03:32:02.603146" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:02.602475" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:02.602397" elapsed="0.000949"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:02.605666" 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-19T03:32:02.605913" 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-19T03:32:02.604764" elapsed="0.001248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:02.607612" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:02.607000" elapsed="0.000719"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:02.609465" level="INFO">${conn_id} = 456</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:02.608681" elapsed="0.000888"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:02.611930" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:02.612008" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:02.611649" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:02.612259" elapsed="0.000397"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:02.613617" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:02.933697" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:00 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:02.613289" elapsed="0.320573"/>
</kw>
<msg time="2026-04-19T03:32:02.933953" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:02.612896" elapsed="0.321172"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:02.610772" elapsed="0.323592"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:02.935864" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:02.958712" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:02.959280" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:02.959616" 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-19T03:32:02.935470" elapsed="0.024361"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:02.962139" elapsed="0.000859"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:02.965500" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:02.964480" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:02.966589" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:02.966098" elapsed="0.000700"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:02.965946" elapsed="0.000981"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:02.967727" elapsed="0.000113"/>
</return>
<status status="PASS" start="2026-04-19T03:32:02.967282" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:02.967175" elapsed="0.000959"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:02.968313" elapsed="0.000082"/>
</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-19T03:32:02.973911" elapsed="0.000389"/>
</kw>
<kw name="Open 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-19T03:32:02.974516" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:02.974896" 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-19T03:32:02.970466" elapsed="0.004658"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:02.600441" elapsed="0.374906"/>
</kw>
<msg time="2026-04-19T03:32:02.975656" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:02.599465" elapsed="0.376251"/>
</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-19T03:32:02.598683" elapsed="0.377117"/>
</kw>
<msg time="2026-04-19T03:32:02.975842" 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-19T03:32:02.597906" elapsed="0.377983"/>
</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-19T03:32:02.979077" elapsed="0.000315"/>
</kw>
<kw name="Open 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-19T03:32:02.979558" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:02.979853" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:02.976233" elapsed="0.003770"/>
</kw>
<msg time="2026-04-19T03:32:02.980191" level="INFO">${output} = 1</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-19T03:32:02.596145" elapsed="0.384073"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:02.980650" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:02.980400" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:02.980738" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:02.980889" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:02.593991" elapsed="0.386923"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:02.980975" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:32:02.981203" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:02.591804" elapsed="0.389424"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:02.981794" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:02.981387" elapsed="0.000482">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:02.590751" elapsed="0.391232">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:04.985491" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:04.984721" elapsed="0.000840"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:04.987661" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:04.987015" elapsed="0.000707"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:04.989535" 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-19T03:32:04.989767" 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-19T03:32:04.989203" elapsed="0.000624"/>
</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-19T03:32:04.994103" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:04.993624" elapsed="0.000571"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:04.993567" elapsed="0.000688"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:04.995923" 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-19T03:32:04.996186" 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-19T03:32:04.995244" elapsed="0.001043"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:04.997809" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:04.997259" elapsed="0.000660"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:04.999639" level="INFO">${conn_id} = 459</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:04.998918" elapsed="0.000819"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:05.002542" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:05.002622" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:05.002260" elapsed="0.000387"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:05.002859" elapsed="0.000352"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:05.004138" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:05.324885" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:02 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:05.003795" elapsed="0.321465"/>
</kw>
<msg time="2026-04-19T03:32:05.325413" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:05.003432" elapsed="0.322131"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:05.001462" elapsed="0.324677"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:05.327902" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:05.350717" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:05.351280" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:05.351621" 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-19T03:32:05.327509" elapsed="0.024326"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:05.354102" elapsed="0.000791"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:05.356334" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:05.355698" 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-19T03:32:05.357062" elapsed="0.000044"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:05.356712" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:05.356632" elapsed="0.000617"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:05.357737" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T03:32:05.357453" elapsed="0.000428"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:05.357383" elapsed="0.000580"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:05.358104" elapsed="0.000054"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:05.364781" elapsed="0.000509"/>
</kw>
<kw name="Open 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-19T03:32:05.365504" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:05.365859" 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-19T03:32:05.359967" elapsed="0.006117"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:04.992258" elapsed="0.374054"/>
</kw>
<msg time="2026-04-19T03:32:05.366639" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:04.991513" elapsed="0.375184"/>
</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-19T03:32:04.990964" elapsed="0.375815"/>
</kw>
<msg time="2026-04-19T03:32:05.366820" 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-19T03:32:04.990254" elapsed="0.376612"/>
</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-19T03:32:05.370073" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:32:05.370562" elapsed="0.000155"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:05.370871" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:05.367175" elapsed="0.003845"/>
</kw>
<msg time="2026-04-19T03:32:05.371128" level="INFO">${output} = 1</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-19T03:32:04.988242" elapsed="0.382912"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:05.371581" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:05.371332" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:05.371671" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:05.371825" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:04.986021" elapsed="0.385829"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:05.371897" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:32:05.372074" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:04.983868" elapsed="0.388232"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:05.372713" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:05.372308" elapsed="0.000478">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:04.982807" elapsed="0.390088">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:07.376402" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:07.375619" elapsed="0.000854"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:07.378505" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:07.377868" elapsed="0.000698"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:07.380377" 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-19T03:32:07.380610" 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-19T03:32:07.380018" elapsed="0.000653"/>
</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-19T03:32:07.386683" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:07.386220" elapsed="0.000542"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:07.386165" elapsed="0.000657"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:07.388515" 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-19T03:32:07.388762" 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-19T03:32:07.387811" elapsed="0.001051"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:07.390395" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:07.389830" elapsed="0.000673"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:07.392198" level="INFO">${conn_id} = 462</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:07.391477" elapsed="0.000820"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:07.394621" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:07.394705" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:07.394339" 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-19T03:32:07.394939" elapsed="0.000347"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:07.396231" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:07.720992" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:05 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:07.395888" elapsed="0.325344"/>
</kw>
<msg time="2026-04-19T03:32:07.721378" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:07.395506" elapsed="0.326018"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:07.393481" elapsed="0.328612"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:07.725536" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:07.748581" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:07.749113" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:07.749444" 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-19T03:32:07.724898" elapsed="0.024755"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:07.751920" elapsed="0.000872"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:07.754317" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:07.753648" elapsed="0.000822"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:07.755067" elapsed="0.000045"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:07.754706" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:07.754622" elapsed="0.000643"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:07.755768" elapsed="0.000109"/>
</return>
<status status="PASS" start="2026-04-19T03:32:07.755475" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:07.755404" elapsed="0.000656"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:07.756183" elapsed="0.000066"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:07.762481" 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-19T03:32:07.763078" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:07.763442" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:07.758351" elapsed="0.005299"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:07.384832" elapsed="0.379074"/>
</kw>
<msg time="2026-04-19T03:32:07.764233" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:07.383441" elapsed="0.380853"/>
</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-19T03:32:07.382215" elapsed="0.382164"/>
</kw>
<msg time="2026-04-19T03:32:07.764420" 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-19T03:32:07.381025" elapsed="0.383442"/>
</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-19T03:32:07.767505" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:32:07.768021" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:07.768341" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:07.764764" elapsed="0.003727"/>
</kw>
<msg time="2026-04-19T03:32:07.768583" level="INFO">${output} = 1</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-19T03:32:07.379079" elapsed="0.389529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:07.769205" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:07.768789" elapsed="0.000461"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:07.769293" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:07.769446" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:07.376925" elapsed="0.392546"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:07.769518" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:07.769662" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:07.374748" elapsed="0.394940"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:07.770438" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:07.769845" elapsed="0.000668">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:07.373689" elapsed="0.396938">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:09.774125" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:09.773354" elapsed="0.000843"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:09.776437" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:09.775795" elapsed="0.000703"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:09.778315" 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-19T03:32:09.778546" 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-19T03:32:09.777959" elapsed="0.000647"/>
</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-19T03:32:09.784648" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:09.784173" elapsed="0.000556"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:09.783866" elapsed="0.000922"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:09.786271" 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-19T03:32:09.786518" 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-19T03:32:09.785810" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:09.788200" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:09.787600" elapsed="0.000712"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:09.790007" level="INFO">${conn_id} = 465</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:09.789305" elapsed="0.000818"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:09.792455" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:09.792533" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:09.792174" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:09.792770" elapsed="0.000374"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:09.794072" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:10.126080" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:07 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:09.793734" elapsed="0.332462"/>
</kw>
<msg time="2026-04-19T03:32:10.126272" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:09.793367" elapsed="0.332987"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:09.791338" elapsed="0.335278"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:10.128115" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:10.150736" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:10.151304" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:10.151652" 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-19T03:32:10.127677" elapsed="0.024183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:10.154114" elapsed="0.000893"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:10.157353" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:10.156303" elapsed="0.001284"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:10.158443" elapsed="0.000046"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:10.157938" elapsed="0.000618"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:10.157821" elapsed="0.000817"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:10.159156" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T03:32:10.158845" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:10.158776" elapsed="0.000611"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:10.159502" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:10.166020" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:32:10.166588" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:10.166952" elapsed="0.000118"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:10.161456" elapsed="0.005723"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:09.782379" elapsed="0.385025"/>
</kw>
<msg time="2026-04-19T03:32:10.167712" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:09.781515" elapsed="0.386258"/>
</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-19T03:32:09.780169" elapsed="0.387692"/>
</kw>
<msg time="2026-04-19T03:32:10.167902" 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-19T03:32:09.778959" elapsed="0.388990"/>
</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-19T03:32:10.170975" 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-19T03:32:10.171476" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:10.171771" 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-19T03:32:10.168307" elapsed="0.003616"/>
</kw>
<msg time="2026-04-19T03:32:10.172014" level="INFO">${output} = 1</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-19T03:32:09.777009" elapsed="0.395112"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:10.172554" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:10.172303" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:10.172641" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:10.172794" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:09.774809" elapsed="0.398012"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:10.172868" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:10.173014" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:09.772484" elapsed="0.400569"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:10.173635" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:10.173213" elapsed="0.000493">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:09.771451" elapsed="0.402379">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:12.175798" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:12.175423" elapsed="0.000411"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:12.176758" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:12.176480" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:12.177614" 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-19T03:32:12.177815" 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-19T03:32:12.177437" elapsed="0.000406"/>
</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-19T03:32:12.183424" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:12.182750" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:12.182380" elapsed="0.001236"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:12.185623" 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-19T03:32:12.185962" 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-19T03:32:12.184994" elapsed="0.001157"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:12.187962" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:12.187415" elapsed="0.000675"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:12.189788" level="INFO">${conn_id} = 468</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:12.189089" elapsed="0.000799"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:12.192255" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:12.192335" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:12.191942" 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-19T03:32:12.192572" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:12.193826" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:12.509547" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:10 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:12.193504" elapsed="0.316160"/>
</kw>
<msg time="2026-04-19T03:32:12.509739" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:12.193142" elapsed="0.316676"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:12.191175" elapsed="0.318920"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:12.511762" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:12.534616" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:12.535168" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:12.535509" 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-19T03:32:12.511385" elapsed="0.024336"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:12.537998" elapsed="0.000933"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:12.540519" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:12.539903" elapsed="0.000760"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:12.541280" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:12.540891" elapsed="0.000495"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:12.540807" elapsed="0.000658"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:12.541950" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T03:32:12.541672" elapsed="0.000443"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:12.541604" elapsed="0.000592"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:12.542306" elapsed="0.000053"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:12.548778" elapsed="0.000568"/>
</kw>
<kw name="Open 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-19T03:32:12.549730" elapsed="0.000225"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:12.550253" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:12.544188" elapsed="0.006360"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:12.180473" elapsed="0.370416"/>
</kw>
<msg time="2026-04-19T03:32:12.551212" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:12.179524" elapsed="0.371746"/>
</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-19T03:32:12.178670" elapsed="0.372684"/>
</kw>
<msg time="2026-04-19T03:32:12.551396" 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-19T03:32:12.178009" elapsed="0.373434"/>
</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-19T03:32:12.554531" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T03:32:12.555100" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:12.555397" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:12.551736" elapsed="0.003811"/>
</kw>
<msg time="2026-04-19T03:32:12.555637" level="INFO">${output} = 1</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-19T03:32:12.177006" elapsed="0.378657"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:12.556102" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:12.555839" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:12.556199" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:12.556351" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:12.176064" elapsed="0.380312"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:12.556422" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:32:12.556564" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:12.175015" elapsed="0.381574"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:12.557171" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:12.556744" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:12.174428" elapsed="0.382925">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:14.561346" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:14.560515" elapsed="0.000901"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:14.563667" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:14.562982" elapsed="0.000784"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:14.565829" 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-19T03:32:14.566167" 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-19T03:32:14.565490" elapsed="0.000751"/>
</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-19T03:32:14.576834" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:14.576212" elapsed="0.000791"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:14.573397" elapsed="0.003693"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:14.578714" 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-19T03:32:14.578992" 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-19T03:32:14.578158" elapsed="0.000960"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:14.580893" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:14.580248" elapsed="0.000768"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:14.582931" level="INFO">${conn_id} = 471</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:14.582136" elapsed="0.000921"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:14.585796" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:14.585889" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:14.585455" 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-19T03:32:14.586162" elapsed="0.000389"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:14.587545" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:14.918814" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:12 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:14.587182" elapsed="0.331781"/>
</kw>
<msg time="2026-04-19T03:32:14.919070" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:14.586785" elapsed="0.332391"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:14.584553" elapsed="0.334904"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:14.920966" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:14.944012" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:14.944558" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:14.944893" 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-19T03:32:14.920570" elapsed="0.024580"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:14.947362" elapsed="0.000923"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:14.950617" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:14.949537" elapsed="0.001316"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:14.951733" elapsed="0.000066"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:14.951238" elapsed="0.000664"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:14.951113" elapsed="0.001001"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:14.952917" elapsed="0.000197"/>
</return>
<status status="PASS" start="2026-04-19T03:32:14.952461" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:14.952351" elapsed="0.000875"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:14.953306" 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-19T03:32:15.015730" elapsed="0.000453"/>
</kw>
<kw name="Open 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-19T03:32:15.016413" elapsed="0.000180"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:15.016789" 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-19T03:32:14.954683" elapsed="0.062320"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:14.570824" elapsed="0.446436"/>
</kw>
<msg time="2026-04-19T03:32:15.017675" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:14.569255" elapsed="0.448486"/>
</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-19T03:32:14.567902" elapsed="0.449921"/>
</kw>
<msg time="2026-04-19T03:32:15.017864" 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-19T03:32:14.566629" elapsed="0.451282"/>
</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-19T03:32:15.020986" 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-19T03:32:15.021480" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:15.021775" elapsed="0.000106"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:15.018253" elapsed="0.003679"/>
</kw>
<msg time="2026-04-19T03:32:15.022038" level="INFO">${output} = 1</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-19T03:32:14.564441" elapsed="0.457625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:15.022518" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:15.022265" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:15.022610" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:32:15.022770" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:14.561936" elapsed="0.460859"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:15.022841" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:32:15.022983" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:14.559535" elapsed="0.463473"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:15.023633" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:15.023231" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:14.558330" elapsed="0.465494">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:17.027554" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:17.026800" elapsed="0.000823"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:17.029730" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:17.029061" elapsed="0.000727"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:17.031566" 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-19T03:32:17.031786" 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-19T03:32:17.031231" elapsed="0.000612"/>
</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-19T03:32:17.037159" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:17.036665" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:17.036609" elapsed="0.000694"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:17.038725" 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-19T03:32:17.038963" 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-19T03:32:17.038291" elapsed="0.000787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:17.040582" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:17.040023" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:17.042440" level="INFO">${conn_id} = 474</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:17.041732" elapsed="0.000806"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:17.044848" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:17.044925" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:17.044564" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:17.045200" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:17.046464" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:17.356442" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:14 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:17.046141" elapsed="0.310503"/>
</kw>
<msg time="2026-04-19T03:32:17.356734" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:17.045759" elapsed="0.311074"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:17.043726" elapsed="0.313435"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:17.358706" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:17.381618" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:17.382264" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:17.382594" 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-19T03:32:17.358288" elapsed="0.024514"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:17.385097" elapsed="0.001047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:17.388373" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:17.387391" elapsed="0.001204"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:17.389482" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:17.388938" elapsed="0.000708"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:17.388816" elapsed="0.000951"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:17.390569" elapsed="0.000120"/>
</return>
<status status="PASS" start="2026-04-19T03:32:17.390130" elapsed="0.000663"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:17.389993" elapsed="0.000925"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:17.391261" elapsed="0.000084"/>
</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-19T03:32:17.397690" 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-19T03:32:17.398299" elapsed="0.000176"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:17.398667" elapsed="0.000106"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:17.394120" elapsed="0.004761"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:17.035288" elapsed="0.363906"/>
</kw>
<msg time="2026-04-19T03:32:17.399510" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:17.034306" elapsed="0.365270"/>
</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-19T03:32:17.033430" elapsed="0.366230"/>
</kw>
<msg time="2026-04-19T03:32:17.399702" 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-19T03:32:17.032222" elapsed="0.367526"/>
</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-19T03:32:17.402854" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T03:32:17.403486" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:17.403787" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:17.400146" elapsed="0.003791"/>
</kw>
<msg time="2026-04-19T03:32:17.404046" level="INFO">${output} = 1</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-19T03:32:17.030303" elapsed="0.373770"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:17.404542" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:17.404290" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:17.404634" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:32:17.404797" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:17.028113" elapsed="0.376710"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:17.404871" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:32:17.405110" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:17.025969" elapsed="0.379167"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:17.405725" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:17.405296" elapsed="0.000506">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:17.024881" elapsed="0.381033">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:19.409599" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:19.408640" elapsed="0.001030"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:19.411523" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:19.411138" elapsed="0.000423"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:19.412698" 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-19T03:32:19.412842" 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-19T03:32:19.412462" elapsed="0.000416"/>
</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-19T03:32:19.418702" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:19.418002" elapsed="0.000814"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:19.417921" elapsed="0.000977"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:19.420414" 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-19T03:32:19.420659" 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-19T03:32:19.419953" elapsed="0.000810"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:19.422361" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:19.421759" elapsed="0.000735"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:19.424217" level="INFO">${conn_id} = 477</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:19.423475" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:19.426670" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:19.426745" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:19.426357" elapsed="0.000412"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:19.426980" elapsed="0.000423"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:19.428327" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:19.793415" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:17 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:19.427987" elapsed="0.365586"/>
</kw>
<msg time="2026-04-19T03:32:19.793663" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:19.427626" elapsed="0.366130"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:19.425535" elapsed="0.368528"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:19.795627" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:19.818527" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:19.819159" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:19.819530" 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-19T03:32:19.795198" elapsed="0.024566"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:19.822222" elapsed="0.001040"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:19.825650" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:19.824624" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:19.826895" elapsed="0.000089"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:19.826258" elapsed="0.000923"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:19.826132" elapsed="0.001108"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:19.827594" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:32:19.827386" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:19.827337" elapsed="0.000414"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:19.827828" 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-19T03:32:19.832815" elapsed="0.000355"/>
</kw>
<kw name="Open 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-19T03:32:19.833381" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:19.833744" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:19.829292" elapsed="0.004661"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:19.415732" elapsed="0.418466"/>
</kw>
<msg time="2026-04-19T03:32:19.834511" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:19.414747" elapsed="0.419822"/>
</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-19T03:32:19.413846" elapsed="0.420805"/>
</kw>
<msg time="2026-04-19T03:32:19.834712" 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-19T03:32:19.413128" elapsed="0.421632"/>
</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-19T03:32:19.837788" 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-19T03:32:19.838282" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:19.838578" elapsed="0.000123"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:19.835114" elapsed="0.003643"/>
</kw>
<msg time="2026-04-19T03:32:19.838917" level="INFO">${output} = 1</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-19T03:32:19.411863" elapsed="0.427081"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:19.839497" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:19.839241" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:19.839586" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:19.839740" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:19.410162" elapsed="0.429604"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:19.839814" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:19.839962" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:19.407799" elapsed="0.432188"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:19.840617" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:19.840163" elapsed="0.000528">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:19.406736" elapsed="0.434068">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:21.844598" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:21.843716" elapsed="0.000953"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:21.846833" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:21.846191" elapsed="0.000704"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:21.848843" 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-19T03:32:21.849117" 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-19T03:32:21.848503" elapsed="0.000679"/>
</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-19T03:32:21.857862" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:21.857189" elapsed="0.000786"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:21.857108" elapsed="0.000972"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:21.860172" 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-19T03:32:21.860528" 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-19T03:32:21.859477" elapsed="0.001208"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:21.862294" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:21.861707" elapsed="0.000701"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:21.864204" level="INFO">${conn_id} = 480</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:21.863437" elapsed="0.000869"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:21.866700" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:21.866780" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:21.866396" 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-19T03:32:21.867020" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:21.868478" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:22.194069" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:19 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:21.868144" elapsed="0.326162"/>
</kw>
<msg time="2026-04-19T03:32:22.194386" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:21.867723" elapsed="0.326753"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:21.865537" elapsed="0.329215"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:22.196370" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:22.218645" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:22.219267" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:22.219620" 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-19T03:32:22.195888" elapsed="0.023950"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:22.222307" elapsed="0.000984"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:22.225670" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:22.224641" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:22.226877" elapsed="0.000068"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:22.226335" elapsed="0.000766"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:22.226206" elapsed="0.001052"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:22.228300" elapsed="0.000129"/>
</return>
<status status="PASS" start="2026-04-19T03:32:22.227631" elapsed="0.000916"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:22.227488" elapsed="0.001200"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:22.228877" elapsed="0.000085"/>
</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-19T03:32:22.235747" elapsed="0.000420"/>
</kw>
<kw name="Open 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-19T03:32:22.236385" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:22.236755" 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-19T03:32:22.231962" elapsed="0.005017"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:21.853873" elapsed="0.383352"/>
</kw>
<msg time="2026-04-19T03:32:22.237548" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:21.852269" elapsed="0.385344"/>
</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-19T03:32:21.850873" elapsed="0.386827"/>
</kw>
<msg time="2026-04-19T03:32:22.237743" 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-19T03:32:21.849582" elapsed="0.388209"/>
</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-19T03:32:22.240918" elapsed="0.000344"/>
</kw>
<kw name="Open 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-19T03:32:22.241430" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:22.241731" 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-19T03:32:22.238107" elapsed="0.003777"/>
</kw>
<msg time="2026-04-19T03:32:22.241977" level="INFO">${output} = 1</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-19T03:32:21.847465" elapsed="0.394538"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:22.242462" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:22.242204" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:22.242550" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:22.242707" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:21.845194" elapsed="0.397539"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:22.242780" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:22.242928" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:21.842816" elapsed="0.400138"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:22.243608" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:22.243201" elapsed="0.000481">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:21.841695" elapsed="0.402100">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:24.247591" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:24.246768" elapsed="0.000897"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:24.249864" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:24.249257" elapsed="0.000666"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:24.251719" 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-19T03:32:24.251949" 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-19T03:32:24.251378" elapsed="0.000630"/>
</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-19T03:32:24.257460" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:24.256947" elapsed="0.000593"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:24.256889" elapsed="0.000708"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:24.259014" 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-19T03:32:24.259277" 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-19T03:32:24.258575" elapsed="0.000799"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:24.260889" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:24.260345" elapsed="0.000656"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:24.262722" level="INFO">${conn_id} = 483</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:24.262008" elapsed="0.000812"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:24.265177" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:24.265263" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:24.264840" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:24.265498" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:24.266750" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:24.590583" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:22 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:24.266424" elapsed="0.324306"/>
</kw>
<msg time="2026-04-19T03:32:24.590815" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:24.266065" elapsed="0.324838"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:24.264010" elapsed="0.327200"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:24.592687" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:24.615609" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:24.616161" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:24.616499" 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-19T03:32:24.592295" elapsed="0.024418"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:24.618994" elapsed="0.000889"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:24.622343" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:24.621194" elapsed="0.001329"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:24.623105" elapsed="0.000042"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:24.622758" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:24.622678" elapsed="0.000613"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:24.623778" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:32:24.623492" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:24.623423" elapsed="0.000579"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:24.624138" elapsed="0.000055"/>
</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-19T03:32:24.630854" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:32:24.631420" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:24.631775" 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-19T03:32:24.626176" elapsed="0.005804"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:24.255296" elapsed="0.376924"/>
</kw>
<msg time="2026-04-19T03:32:24.632523" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:24.254571" elapsed="0.378009"/>
</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-19T03:32:24.253611" elapsed="0.379053"/>
</kw>
<msg time="2026-04-19T03:32:24.632706" 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-19T03:32:24.252402" elapsed="0.380351"/>
</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-19T03:32:24.635815" elapsed="0.000331"/>
</kw>
<kw name="Open 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-19T03:32:24.636313" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:24.636609" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:24.633075" elapsed="0.003684"/>
</kw>
<msg time="2026-04-19T03:32:24.636850" level="INFO">${output} = 1</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-19T03:32:24.250436" elapsed="0.386440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:24.637374" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:24.637086" elapsed="0.000335"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:24.637465" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:24.637621" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:24.248190" elapsed="0.389458"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:24.637695" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:24.637842" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:24.245861" elapsed="0.392007"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:24.638501" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:24.638026" elapsed="0.000547">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:24.244612" elapsed="0.394070">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:26.642187" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:26.641419" elapsed="0.000838"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:26.644501" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:26.643857" elapsed="0.000705"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:26.646377" 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-19T03:32:26.646796" 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-19T03:32:26.646018" elapsed="0.000838"/>
</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-19T03:32:26.652640" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:26.651968" elapsed="0.000784"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:26.651585" elapsed="0.001249"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:26.654859" 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-19T03:32:26.655235" 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-19T03:32:26.654202" elapsed="0.001174"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:26.656946" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:26.656402" elapsed="0.000668"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:26.658753" level="INFO">${conn_id} = 486</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:26.658024" elapsed="0.000828"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:26.661371" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:26.661450" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:26.661090" elapsed="0.000384"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:26.661684" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:26.662986" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:26.972321" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:24 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:26.662661" elapsed="0.309797"/>
</kw>
<msg time="2026-04-19T03:32:26.972542" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:26.662255" elapsed="0.310371"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:26.660324" elapsed="0.312574"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:26.974399" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:26.997011" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:26.998116" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:26.998756" 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-19T03:32:26.973982" elapsed="0.025112"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:27.001727" elapsed="0.001143"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:27.005170" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:27.004168" elapsed="0.001237"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:27.006411" elapsed="0.000069"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:27.005755" elapsed="0.000832"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:27.005633" elapsed="0.001129"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:27.007876" elapsed="0.000121"/>
</return>
<status status="PASS" start="2026-04-19T03:32:27.007414" elapsed="0.000729"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:27.007302" elapsed="0.000978"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:27.008461" elapsed="0.000085"/>
</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-19T03:32:27.014944" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T03:32:27.015563" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:27.015927" elapsed="0.000119"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:27.011562" elapsed="0.004595"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:26.649724" elapsed="0.366676"/>
</kw>
<msg time="2026-04-19T03:32:27.016713" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:26.648779" elapsed="0.367994"/>
</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-19T03:32:26.648013" elapsed="0.368846"/>
</kw>
<msg time="2026-04-19T03:32:27.016900" 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-19T03:32:26.647242" elapsed="0.369705"/>
</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-19T03:32:27.020095" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:32:27.020588" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:27.020889" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:27.017262" elapsed="0.003796"/>
</kw>
<msg time="2026-04-19T03:32:27.021154" level="INFO">${output} = 1</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-19T03:32:26.645087" elapsed="0.376093"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:27.021701" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:27.021364" elapsed="0.000384"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:27.021792" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:27.021949" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:26.642900" elapsed="0.379076"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:27.022023" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:32:27.022192" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:26.640547" elapsed="0.381670"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:27.022807" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:27.022377" elapsed="0.000504">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:26.639497" elapsed="0.383497">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:29.025501" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:29.024968" elapsed="0.000600"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:29.026932" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:29.026521" elapsed="0.000450"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:29.028219" 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-19T03:32:29.028522" 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-19T03:32:29.027956" elapsed="0.000606"/>
</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-19T03:32:29.034569" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:29.033858" elapsed="0.000829"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:29.033450" elapsed="0.001324"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:29.036896" 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-19T03:32:29.037188" 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-19T03:32:29.036335" elapsed="0.000952"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:29.038990" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:29.038345" elapsed="0.000780"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:29.040919" level="INFO">${conn_id} = 489</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:29.040178" elapsed="0.000844"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:29.043499" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:29.043580" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:29.043199" 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-19T03:32:29.043862" elapsed="0.000386"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:29.045372" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:29.358293" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:26 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:29.044847" elapsed="0.313607"/>
</kw>
<msg time="2026-04-19T03:32:29.358541" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:29.044477" elapsed="0.314159"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:29.042389" elapsed="0.316541"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:29.360649" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:29.383873" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:29.384458" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:29.384784" 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-19T03:32:29.360150" elapsed="0.024840"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:29.387199" elapsed="0.000928"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:29.390387" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:29.389363" elapsed="0.001251"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:29.391493" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:29.390959" elapsed="0.000699"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:29.390837" elapsed="0.000945"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:29.392625" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:32:29.392258" elapsed="0.000470"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:29.392104" elapsed="0.000683"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:29.392867" 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-19T03:32:29.399488" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:32:29.400231" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:29.400611" elapsed="0.000286"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:29.394274" elapsed="0.006733"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:29.031397" elapsed="0.369984"/>
</kw>
<msg time="2026-04-19T03:32:29.401689" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:29.030397" elapsed="0.371351"/>
</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-19T03:32:29.029590" elapsed="0.372237"/>
</kw>
<msg time="2026-04-19T03:32:29.401868" 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-19T03:32:29.028806" elapsed="0.373107"/>
</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-19T03:32:29.404910" elapsed="0.000347"/>
</kw>
<kw name="Open 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-19T03:32:29.405423" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:29.405722" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:29.402225" elapsed="0.003647"/>
</kw>
<msg time="2026-04-19T03:32:29.405963" level="INFO">${output} = 1</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-19T03:32:29.027310" elapsed="0.378678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:29.406448" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:29.406195" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:29.406536" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:29.406689" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:29.025872" elapsed="0.380842"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:29.406760" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:29.406903" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:29.024417" elapsed="0.382511"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:29.407493" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:29.407098" elapsed="0.000468">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:29.023653" elapsed="0.384023">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:31.411557" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:31.410758" elapsed="0.000869"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:31.413663" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:31.413124" elapsed="0.000577"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:31.414848" 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-19T03:32:31.415001" 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-19T03:32:31.414606" elapsed="0.000464"/>
</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-19T03:32:31.420504" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:31.419842" elapsed="0.000866"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:31.419764" elapsed="0.001031"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:31.423106" 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-19T03:32:31.423428" 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-19T03:32:31.422150" elapsed="0.001385"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:31.425206" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:31.424531" elapsed="0.000821"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:31.427376" level="INFO">${conn_id} = 492</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:31.426577" elapsed="0.000898"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:31.429949" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:31.430043" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:31.429654" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:31.430289" elapsed="0.000369"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:31.431773" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:31.746722" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:29 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:31.431438" elapsed="0.315442"/>
</kw>
<msg time="2026-04-19T03:32:31.746969" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:31.430899" elapsed="0.316183"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:31.428815" elapsed="0.318556"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:31.748859" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:31.771665" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:31.772215" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:31.772554" 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-19T03:32:31.748465" elapsed="0.024300"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:31.775009" elapsed="0.000903"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:31.777984" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:31.777284" elapsed="0.000872"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:31.778710" elapsed="0.000043"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:31.778383" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:31.778303" elapsed="0.000592"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:31.779405" elapsed="0.000076"/>
</return>
<status status="PASS" start="2026-04-19T03:32:31.779122" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:31.779051" elapsed="0.000577"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:31.779740" elapsed="0.000052"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:31.786221" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T03:32:31.786772" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:31.787146" 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-19T03:32:31.781684" elapsed="0.005676"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:31.417837" elapsed="0.369750"/>
</kw>
<msg time="2026-04-19T03:32:31.787998" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:31.416827" elapsed="0.371252"/>
</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-19T03:32:31.416012" elapsed="0.372153"/>
</kw>
<msg time="2026-04-19T03:32:31.788206" 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-19T03:32:31.415298" elapsed="0.372955"/>
</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-19T03:32:31.791502" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:32:31.791979" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:31.792294" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:31.788551" elapsed="0.003891"/>
</kw>
<msg time="2026-04-19T03:32:31.792535" level="INFO">${output} = 1</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-19T03:32:31.414005" elapsed="0.378559"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:31.792997" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:31.792748" elapsed="0.000408"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:31.793229" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:32:31.793391" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:31.412125" elapsed="0.381292"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:31.793465" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:32:31.793612" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:31.409888" elapsed="0.383748"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:31.794215" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:31.793795" elapsed="0.000496">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:31.408780" elapsed="0.385622">Found running Karaf count: 1: 0 != 1</status>
</kw>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:33.797866" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:32:33.797126" elapsed="0.000809"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:33.800089" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:33.799458" elapsed="0.000694"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:33.801932" 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-19T03:32:33.802198" 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-19T03:32:33.801597" elapsed="0.000661"/>
</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-19T03:32:33.807852" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:33.807216" elapsed="0.000746"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:33.807139" elapsed="0.000926"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:33.810461" 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-19T03:32:33.810759" 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-19T03:32:33.809445" elapsed="0.001421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:33.812422" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:33.811857" elapsed="0.000676"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:33.814374" level="INFO">${conn_id} = 495</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:33.813580" elapsed="0.000891"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:33.816716" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:33.816794" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:33.816425" elapsed="0.000393"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:33.817042" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:33.818492" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:34.174255" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:33.817963" elapsed="0.356487"/>
</kw>
<msg time="2026-04-19T03:32:34.174568" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:33.817602" elapsed="0.357081"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:33.815654" elapsed="0.359340"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.176727" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-19T03:32:34.199936" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:34.200560" level="INFO">${stdout} = 1</msg>
<msg time="2026-04-19T03:32:34.200893" 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-19T03:32:34.176125" elapsed="0.025024"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:34.203470" elapsed="0.001031"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.206804" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:34.205763" elapsed="0.001297"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:34.207784" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:34.207430" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:34.207303" elapsed="0.000616"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:34.208292" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-19T03:32:34.208082" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:34.208016" elapsed="0.000448"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:34.208546" 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-19T03:32:34.213600" elapsed="0.000364"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:34.214256" elapsed="0.000187"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:34.214677" 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-19T03:32:34.209941" elapsed="0.004953"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:33.805225" elapsed="0.409918"/>
</kw>
<msg time="2026-04-19T03:32:34.215457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:33.804241" elapsed="0.411286"/>
</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-19T03:32:33.803468" elapsed="0.412144"/>
</kw>
<msg time="2026-04-19T03:32:34.215654" 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-19T03:32:33.802717" elapsed="0.412984"/>
</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-19T03:32:34.219000" 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-19T03:32:34.219499" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:34.219798" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:34.216186" elapsed="0.003762"/>
</kw>
<msg time="2026-04-19T03:32:34.220061" level="INFO">${output} = 1</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-19T03:32:33.800637" elapsed="0.419452"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.220568" level="INFO">1</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:34.220310" elapsed="0.000302"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:34.220662" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:32:34.220826" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>command=${command}</arg>
<arg>member_index=${member_index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:32:33.798460" elapsed="0.422392"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-19T03:32:34.220901" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:32:34.221158" level="INFO">${count} = 1</msg>
<var>${count}</var>
<arg>member_index=${member_index}</arg>
<doc>Remotely execute grep for karaf process, return count as string.</doc>
<status status="PASS" start="2026-04-19T03:32:33.796267" elapsed="0.424918"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.221756" level="FAIL">Found running Karaf count: 1: 0 != 1</msg>
<arg>0</arg>
<arg>${count}</arg>
<arg>Found running Karaf count: ${count}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="FAIL" start="2026-04-19T03:32:34.221348" elapsed="0.000500">Found running Karaf count: 1: 0 != 1</status>
</kw>
<arg>member_index=${index}</arg>
<doc>Fail if non-zero karaf instances are counted on member of given index.</doc>
<status status="FAIL" start="2026-04-19T03:32:33.795203" elapsed="0.426759">Found running Karaf count: 1: 0 != 1</status>
</kw>
<msg time="2026-04-19T03:32:34.222069" level="FAIL">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</msg>
<arg>${timeout}</arg>
<arg>2s</arg>
<arg>Verify_Karaf_Is_Not_Running_On_Member</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T03:26:32.300149" elapsed="361.922017">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:26:32.299961" elapsed="361.922276">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</iter>
<var>${index}</var>
<value>@{stop_index_list}</value>
<status status="FAIL" start="2026-04-19T03:26:23.762699" elapsed="370.459605">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</for>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:34.222563" elapsed="0.000025"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:32:34.222630" elapsed="0.000015"/>
</return>
<doc>If the list is empty, stops all ODL instances. Otherwise stop members based on ${stop_index_list}
If ${confirm} is True, verify stopped instances are not there anymore.
The KW will return a list of available members: ${updated index_list}=${original_index_list}-${member_index_list}</doc>
<status status="FAIL" start="2026-04-19T03:26:21.604940" elapsed="372.617787">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</kw>
<doc>Stop every odl node.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:26:21.604209" elapsed="372.618675">Keyword 'Verify_Karaf_Is_Not_Running_On_Member' failed after retrying for 6 minutes. The last error was: Found running Karaf count: 1: 0 != 1</status>
</test>
<test id="s1-s21-t2" name="Unset_Tell_Based_Protocol_Usage" line="34">
<kw name="Change_Use_Tell_Based_Protocol" owner="DdbCommons">
<kw name="Check_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-19T03:32:34.227631" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:34.227220" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.228148" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:34.227821" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:34.228220" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:32:34.228376" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:34.226817" elapsed="0.001584"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.230760" 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-19T03:32:34.230862" 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-19T03:32:34.230595" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:34.233130" level="INFO">${ip_address} = 10.30.171.9</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-19T03:32:34.232764" elapsed="0.000393"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:34.233207" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:34.233359" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:34.232439" elapsed="0.000945"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.236927" level="INFO">${odl_connection} = 498</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:34.236195" elapsed="0.000847"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.239751" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:34.239828" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:34.239457" elapsed="0.000394"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.240013" elapsed="0.000493"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.241385" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:34.931394" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:26:31 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:34.241060" elapsed="0.690503"/>
</kw>
<msg time="2026-04-19T03:32:34.931653" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.240678" elapsed="0.691072"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:34.238943" elapsed="0.692933"/>
</kw>
<msg time="2026-04-19T03:32:34.931929" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.238549" elapsed="0.693431"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:34.237615" elapsed="0.694586"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:34.932303" elapsed="0.000062"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:34.235052" elapsed="0.697575"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.936062" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:34.949139" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:34.949408" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:34.949510" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:34.949605" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:34.935694" elapsed="0.013966"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.951848" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:34.951189" elapsed="0.000767"/>
</kw>
<msg time="2026-04-19T03:32:34.952216" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:34.952323" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:34.950258" elapsed="0.002119"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.953971" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:34.952903" elapsed="0.001162"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.956387" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:34.956015" elapsed="0.000518"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.957110" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:34.956751" elapsed="0.000416"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.957712" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:34.957380" elapsed="0.000391"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:34.955310" elapsed="0.002535"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:34.954382" elapsed="0.003511"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:34.954329" elapsed="0.003599"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:34.958250" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:34.958105" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:34.958077" elapsed="0.000267"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:34.958617" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T03:32:34.958487" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:34.958461" elapsed="0.000297"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:34.959102" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:34.934733" elapsed="0.024714"/>
</kw>
<msg time="2026-04-19T03:32:34.959664" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:34.959784" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:34.932962" elapsed="0.026885"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:34.960245" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:34.960982" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:32:34.960734" elapsed="0.000451"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:34.960706" elapsed="0.000518"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:34.961429" elapsed="0.000030"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:34.234105" elapsed="0.727598"/>
</kw>
<msg time="2026-04-19T03:32:34.961787" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.233542" elapsed="0.728315"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:34.231602" elapsed="0.730375"/>
</kw>
<msg time="2026-04-19T03:32:34.962060" 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-19T03:32:34.231135" elapsed="0.730993"/>
</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-19T03:32:34.966583" 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-19T03:32:34.967322" elapsed="0.000220"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:34.967729" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:34.962542" elapsed="0.005335"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:34.229922" elapsed="0.738014"/>
</kw>
<msg time="2026-04-19T03:32:34.967992" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.229474" elapsed="0.738582"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:34.228761" elapsed="0.739385"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:32:34.228604" elapsed="0.739626"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.970441" 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-19T03:32:34.970542" 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-19T03:32:34.970304" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:34.972632" level="INFO">${ip_address} = 10.30.171.128</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-19T03:32:34.972319" elapsed="0.000344"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:34.972715" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:34.972865" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:34.971979" elapsed="0.000910"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.976435" level="INFO">${odl_connection} = 500</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:34.975720" elapsed="0.000812"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:34.979200" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:34.979277" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:34.978916" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.979457" elapsed="0.000320"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:34.980633" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:35.653020" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:26:32 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:34.980318" elapsed="0.672880"/>
</kw>
<msg time="2026-04-19T03:32:35.653289" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.979945" elapsed="0.673439"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:34.978368" elapsed="0.675133"/>
</kw>
<msg time="2026-04-19T03:32:35.653552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.977956" elapsed="0.675646"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:34.977085" elapsed="0.676714"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:35.653898" elapsed="0.000057"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:34.974510" elapsed="0.679729"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:35.657804" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:35.670858" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:35.671100" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:35.671167" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:35.671227" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:35.657594" elapsed="0.013699"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:35.673271" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:35.672605" elapsed="0.000768"/>
</kw>
<msg time="2026-04-19T03:32:35.673581" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:35.673678" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:35.671723" elapsed="0.002005"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:35.675485" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:35.674393" elapsed="0.001151"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:35.678222" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:35.677637" elapsed="0.000678"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:35.679206" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:35.678652" elapsed="0.000691"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:35.679923" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:35.679677" elapsed="0.000290"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:35.676679" elapsed="0.003341"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:35.675846" elapsed="0.004227"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:35.675790" elapsed="0.004312"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:35.680321" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:35.680212" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:35.680193" elapsed="0.000200"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:35.680589" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T03:32:35.680496" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:35.680478" elapsed="0.000203"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:35.680878" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:35.656616" elapsed="0.024526"/>
</kw>
<msg time="2026-04-19T03:32:35.681295" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:35.681365" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:35.654536" elapsed="0.026864"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:35.681655" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:35.682275" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:32:35.682095" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:35.682075" elapsed="0.000355"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:35.682577" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:34.973592" elapsed="0.709167"/>
</kw>
<msg time="2026-04-19T03:32:35.682820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.973069" elapsed="0.709807"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:34.971451" elapsed="0.711514"/>
</kw>
<msg time="2026-04-19T03:32:35.683006" 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-19T03:32:34.970721" elapsed="0.712348"/>
</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-19T03:32:35.686228" 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-19T03:32:35.686712" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:35.687023" elapsed="0.000171"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:35.683397" elapsed="0.003849"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:34.969669" elapsed="0.717658"/>
</kw>
<msg time="2026-04-19T03:32:35.687383" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:34.969221" elapsed="0.718212"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:34.968489" elapsed="0.719084"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:32:34.968331" elapsed="0.719290"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:35.689843" 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-19T03:32:35.689943" 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-19T03:32:35.689703" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:35.692122" level="INFO">${ip_address} = 10.30.171.206</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-19T03:32:35.691786" elapsed="0.000362"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:35.692197" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:35.692350" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:35.691463" elapsed="0.000912"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:35.696012" level="INFO">${odl_connection} = 502</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:35.695318" elapsed="0.000812"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:35.698874" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:35.698950" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:35.698595" 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-19T03:32:35.699147" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:35.700339" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:36.026716" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:35.700003" elapsed="0.326878"/>
</kw>
<msg time="2026-04-19T03:32:36.026967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:35.699649" elapsed="0.327435"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:35.698107" elapsed="0.329098"/>
</kw>
<msg time="2026-04-19T03:32:36.027257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:35.697556" elapsed="0.329751"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:35.696664" elapsed="0.330896"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:36.027662" elapsed="0.000063"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:35.693990" elapsed="0.333998"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.031302" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:36.044001" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:36.044436" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:36.044700" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:36.044808" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:36.031077" elapsed="0.013789"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.047294" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:36.046574" elapsed="0.000832"/>
</kw>
<msg time="2026-04-19T03:32:36.047682" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:36.047793" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:36.045601" elapsed="0.002247"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.049512" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:36.048426" elapsed="0.001149"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.052071" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.051798" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.052507" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.052267" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.052933" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.052698" elapsed="0.000278"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:36.050841" elapsed="0.002206"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:36.049908" elapsed="0.003178"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.049847" elapsed="0.003269"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:36.053341" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:36.053233" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.053213" elapsed="0.000199"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:36.053611" elapsed="0.000036"/>
</return>
<status status="PASS" start="2026-04-19T03:32:36.053516" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.053497" elapsed="0.000211"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:36.053905" elapsed="0.000023"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:36.030093" elapsed="0.024088"/>
</kw>
<msg time="2026-04-19T03:32:36.054334" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:36.054405" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:36.028317" elapsed="0.026126"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:36.054705" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:36.055335" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:32:36.055149" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.055129" elapsed="0.000377"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:36.055653" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:35.693080" elapsed="0.362762"/>
</kw>
<msg time="2026-04-19T03:32:36.055904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:35.692532" elapsed="0.363428"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:35.690885" elapsed="0.365181"/>
</kw>
<msg time="2026-04-19T03:32:36.056112" 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-19T03:32:35.690139" elapsed="0.366020"/>
</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-19T03:32:36.059298" elapsed="0.000371"/>
</kw>
<kw name="Open 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-19T03:32:36.059838" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:36.060178" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:36.056476" elapsed="0.003856"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:35.689080" elapsed="0.371449"/>
</kw>
<msg time="2026-04-19T03:32:36.060589" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:35.688612" elapsed="0.372031"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:35.687890" elapsed="0.372843"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:32:35.687724" elapsed="0.373059"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:34.228462" elapsed="1.832357"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=true/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:32:34.224314" elapsed="1.836566"/>
</kw>
<kw name="Check_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-19T03:32:36.064901" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:36.064460" elapsed="0.000470"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.065418" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:36.065110" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:36.065493" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:32:36.065659" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:36.064060" elapsed="0.001624"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.068080" 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-19T03:32:36.068183" 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-19T03:32:36.067893" elapsed="0.000316"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:36.070069" level="INFO">${ip_address} = 10.30.171.9</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-19T03:32:36.069687" elapsed="0.000411"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:36.070150" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:32:36.070313" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:36.069360" elapsed="0.000978"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.073910" level="INFO">${odl_connection} = 504</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:36.073182" elapsed="0.000829"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.079237" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:36.079331" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:36.078899" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.079611" elapsed="0.000367"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.080885" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:36.442462" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:34 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:36.080544" elapsed="0.362175"/>
</kw>
<msg time="2026-04-19T03:32:36.442802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.080176" elapsed="0.362715"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:36.078356" elapsed="0.364648"/>
</kw>
<msg time="2026-04-19T03:32:36.443072" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.075581" elapsed="0.367544"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:36.074576" elapsed="0.368734"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:36.443410" elapsed="0.000054"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:36.072021" elapsed="0.371723"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.446895" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:36.460021" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:36.460261" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:36.460341" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:36.460418" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:36.446687" elapsed="0.013773"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.462501" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:36.461813" elapsed="0.000795"/>
</kw>
<msg time="2026-04-19T03:32:36.462831" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:36.462934" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:36.460947" elapsed="0.002041"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.464637" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:36.463546" elapsed="0.001153"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.467539" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.466903" elapsed="0.000738"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.468638" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.468058" elapsed="0.000676"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.469695" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.469129" elapsed="0.000668"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:36.465868" elapsed="0.004058"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:36.465014" elapsed="0.004997"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.464962" elapsed="0.005141"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:36.470614" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:36.470368" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.470323" elapsed="0.000451"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:36.471300" elapsed="0.000066"/>
</return>
<status status="PASS" start="2026-04-19T03:32:36.471017" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.470975" elapsed="0.000532"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:36.472505" elapsed="0.000071"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:36.445753" elapsed="0.027146"/>
</kw>
<msg time="2026-04-19T03:32:36.473062" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:36.473143" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:36.444057" elapsed="0.029123"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:36.473443" elapsed="0.000498"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:36.474276" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:32:36.474089" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.474069" elapsed="0.000364"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:36.474583" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:36.071054" elapsed="0.403711"/>
</kw>
<msg time="2026-04-19T03:32:36.474880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.070497" elapsed="0.404435"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:36.068819" elapsed="0.406201"/>
</kw>
<msg time="2026-04-19T03:32:36.475088" 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-19T03:32:36.068363" elapsed="0.406771"/>
</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-19T03:32:36.478219" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:32:36.478701" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:36.479008" elapsed="0.000132"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:36.475445" elapsed="0.003747"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:36.067250" elapsed="0.412001"/>
</kw>
<msg time="2026-04-19T03:32:36.479306" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.066787" elapsed="0.412568"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:36.066082" elapsed="0.413360"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:32:36.065878" elapsed="0.413610"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.481853" 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-19T03:32:36.481954" 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-19T03:32:36.481718" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:36.483797" level="INFO">${ip_address} = 10.30.171.128</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-19T03:32:36.483472" elapsed="0.000352"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:36.483874" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:36.484047" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:36.483148" elapsed="0.000927"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.487556" level="INFO">${odl_connection} = 506</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:36.486838" elapsed="0.000817"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.490504" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:36.490583" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:36.490237" elapsed="0.000370"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.490773" elapsed="0.000358"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.492011" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:36.809243" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:36.491664" elapsed="0.317849"/>
</kw>
<msg time="2026-04-19T03:32:36.809601" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.491302" elapsed="0.318392"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:36.489716" elapsed="0.320097"/>
</kw>
<msg time="2026-04-19T03:32:36.809868" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.489120" elapsed="0.320799"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:36.488232" elapsed="0.321904"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:36.810238" elapsed="0.000056"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:36.485698" elapsed="0.324850"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.813748" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:36.826548" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:36.826711" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:36.826774" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:36.826830" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:36.813547" elapsed="0.013314"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.828150" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:36.827699" elapsed="0.000516"/>
</kw>
<msg time="2026-04-19T03:32:36.828347" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:36.828408" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:36.827214" elapsed="0.001224"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.829381" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:36.828742" elapsed="0.000677"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.831064" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.830688" elapsed="0.000437"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.831675" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.831338" elapsed="0.000394"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.832639" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:36.831977" elapsed="0.000724"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:36.830108" elapsed="0.002670"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:36.829605" elapsed="0.003222"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.829572" elapsed="0.003291"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:36.833187" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:36.833014" elapsed="0.000237"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.832987" elapsed="0.000295"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:36.833554" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-19T03:32:36.833424" elapsed="0.000215"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.833398" elapsed="0.000275"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:36.833953" elapsed="0.000033"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:36.812604" elapsed="0.021712"/>
</kw>
<msg time="2026-04-19T03:32:36.834523" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:36.834620" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:36.810841" elapsed="0.023829"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:36.835023" elapsed="0.000326"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:36.835768" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T03:32:36.835513" elapsed="0.000445"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:36.835486" elapsed="0.000512"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:36.836240" elapsed="0.000032"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:36.484765" elapsed="0.351729"/>
</kw>
<msg time="2026-04-19T03:32:36.836637" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.484236" elapsed="0.352472"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:36.482614" elapsed="0.354216"/>
</kw>
<msg time="2026-04-19T03:32:36.836888" 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-19T03:32:36.482151" elapsed="0.354802"/>
</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-19T03:32:36.841183" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T03:32:36.841670" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:36.841979" elapsed="0.000116"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:36.837405" elapsed="0.004743"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:36.481098" elapsed="0.361108"/>
</kw>
<msg time="2026-04-19T03:32:36.842262" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.480595" elapsed="0.361716"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:36.479755" elapsed="0.362642"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:32:36.479584" elapsed="0.362860"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.844678" 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-19T03:32:36.844779" 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-19T03:32:36.844541" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:36.846634" level="INFO">${ip_address} = 10.30.171.206</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-19T03:32:36.846323" elapsed="0.000338"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:36.846710" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:36.846862" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:36.845979" elapsed="0.000908"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.850502" level="INFO">${odl_connection} = 508</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:36.849721" elapsed="0.000882"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:36.853502" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:36.853581" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:36.853233" elapsed="0.000373"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.853766" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:36.854956" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:37.179921" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:35 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:36.854635" elapsed="0.325511"/>
</kw>
<msg time="2026-04-19T03:32:37.180220" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.854271" elapsed="0.326024"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:36.852718" elapsed="0.327676"/>
</kw>
<msg time="2026-04-19T03:32:37.180445" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.852101" elapsed="0.328393"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:36.851180" elapsed="0.329476"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:37.180749" elapsed="0.000057"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:36.848573" elapsed="0.332491"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.184122" level="INFO">Executing command 'sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:37.197060" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:37.197220" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:37.197281" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:37.197338" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:37.183893" elapsed="0.013477"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.198588" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:37.198201" elapsed="0.000457"/>
</kw>
<msg time="2026-04-19T03:32:37.198788" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:37.198849" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:37.197692" elapsed="0.001188"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.199836" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:37.199226" elapsed="0.000647"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.201991" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.201443" elapsed="0.000675"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.202991" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.202457" elapsed="0.000685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.204503" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.203476" elapsed="0.001129"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:37.200590" elapsed="0.004139"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:37.200110" elapsed="0.004698"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.200050" elapsed="0.004817"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:37.205379" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:37.205145" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.205101" elapsed="0.000429"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:37.205966" elapsed="0.000096"/>
</return>
<status status="PASS" start="2026-04-19T03:32:37.205757" elapsed="0.000383"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.205718" elapsed="0.000476"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:37.206627" elapsed="0.000050"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:37.182970" elapsed="0.024264"/>
</kw>
<msg time="2026-04-19T03:32:37.207561" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:37.207714" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:37.181327" elapsed="0.026470"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:37.208448" elapsed="0.000396"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:37.209155" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:32:37.208960" elapsed="0.000320"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.208941" elapsed="0.000366"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:37.209452" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:36.847604" elapsed="0.362026"/>
</kw>
<msg time="2026-04-19T03:32:37.209728" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.847070" elapsed="0.362710"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:36.845451" elapsed="0.364415"/>
</kw>
<msg time="2026-04-19T03:32:37.209908" 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-19T03:32:36.844958" elapsed="0.364995"/>
</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-19T03:32:37.213072" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:32:37.213549" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:37.213852" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:37.210264" elapsed="0.003738"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:36.843879" elapsed="0.370200"/>
</kw>
<msg time="2026-04-19T03:32:37.214136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:36.843411" elapsed="0.370774"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:36.842697" elapsed="0.371574"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:32:36.842538" elapsed="0.371779"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:36.065742" elapsed="1.148610"/>
</for>
<arg>sed -ie "s/^#use-tell-based-protocol=false/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:32:36.061151" elapsed="1.153259"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"${status}" == "True"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=false/use-tell-based-protocol=true/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.214569" elapsed="0.000315"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Check_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-19T03:32:37.219242" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:37.218839" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.219737" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:37.219432" elapsed="0.000332"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:37.219808" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:37.219962" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:37.218454" elapsed="0.001533"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.222321" 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-19T03:32:37.222425" 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-19T03:32:37.222177" elapsed="0.000274"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:37.224489" level="INFO">${ip_address} = 10.30.171.9</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-19T03:32:37.223989" elapsed="0.000599"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:37.224823" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T03:32:37.224992" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:37.223592" elapsed="0.001425"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.228948" level="INFO">${odl_connection} = 510</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:37.228565" elapsed="0.000410"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.230747" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:37.230829" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:37.230482" elapsed="0.000372"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.231012" elapsed="0.000337"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.232275" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:37.563678" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:37.231878" elapsed="0.331947"/>
</kw>
<msg time="2026-04-19T03:32:37.563906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.231518" elapsed="0.332476"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:37.229971" elapsed="0.334160"/>
</kw>
<msg time="2026-04-19T03:32:37.564185" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.229580" elapsed="0.334657"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:37.229198" elapsed="0.335137"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:37.564440" elapsed="0.000048"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:37.227847" elapsed="0.336884"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.567529" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:37.580451" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:37.580577" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:37.580623" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:37.580672" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:37.567329" elapsed="0.013372"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.582532" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:37.581865" elapsed="0.000771"/>
</kw>
<msg time="2026-04-19T03:32:37.582872" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:37.582970" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:37.581003" elapsed="0.002017"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.584448" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:37.583431" elapsed="0.001076"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.587084" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.586409" elapsed="0.000778"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.588153" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.587556" elapsed="0.000692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.589068" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.588727" elapsed="0.000513"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:37.585481" elapsed="0.003817"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:37.584690" elapsed="0.004644"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.584642" elapsed="0.004720"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:37.589524" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:37.589420" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.589403" elapsed="0.000189"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:37.589733" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T03:32:37.589644" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.589628" elapsed="0.000190"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:37.589964" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:37.566758" elapsed="0.023349"/>
</kw>
<msg time="2026-04-19T03:32:37.590351" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:37.590434" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:37.565863" elapsed="0.024613"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:37.591496" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:37.592239" elapsed="0.000079"/>
</return>
<status status="PASS" start="2026-04-19T03:32:37.592053" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.591975" elapsed="0.000432"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:37.593413" elapsed="0.000037"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:37.225956" elapsed="0.367667"/>
</kw>
<msg time="2026-04-19T03:32:37.594014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.225193" elapsed="0.368891"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:37.223074" elapsed="0.371101"/>
</kw>
<msg time="2026-04-19T03:32:37.594216" 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-19T03:32:37.222604" elapsed="0.371659"/>
</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-19T03:32:37.597441" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:32:37.597915" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:37.598241" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:37.594564" elapsed="0.003827"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:37.221508" elapsed="0.376943"/>
</kw>
<msg time="2026-04-19T03:32:37.598506" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.221063" elapsed="0.377492"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:37.220356" elapsed="0.378285"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:32:37.220200" elapsed="0.378488"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.600999" 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-19T03:32:37.601157" 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-19T03:32:37.600863" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:37.603218" level="INFO">${ip_address} = 10.30.171.128</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-19T03:32:37.602752" elapsed="0.000527"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:37.603507" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:32:37.603665" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:37.602352" elapsed="0.001338"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.607678" level="INFO">${odl_connection} = 512</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:37.607297" elapsed="0.000408"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.609554" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:37.609635" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:37.609281" 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-19T03:32:37.609824" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.611002" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:37.923670" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:36 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:37.610683" elapsed="0.313140"/>
</kw>
<msg time="2026-04-19T03:32:37.923912" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.610328" elapsed="0.313679"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:37.608730" elapsed="0.315423"/>
</kw>
<msg time="2026-04-19T03:32:37.924208" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.608330" elapsed="0.315931"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:37.607912" elapsed="0.316429"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:37.924459" elapsed="0.000051"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:37.606601" elapsed="0.318173"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.927555" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:37.940378" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:37.940520" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:37.940569" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:37.940610" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:37.927358" elapsed="0.013274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.941717" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:37.941436" elapsed="0.000326"/>
</kw>
<msg time="2026-04-19T03:32:37.941856" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:37.941899" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:37.940816" elapsed="0.001105"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.942549" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:37.942107" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.943750" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.943499" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.944209" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.943950" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.944657" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:37.944402" elapsed="0.000298"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:37.943095" elapsed="0.001659"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:37.942729" elapsed="0.002061"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.942706" elapsed="0.002111"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:37.944978" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:37.944875" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.944858" elapsed="0.000203"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:37.945207" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:32:37.945116" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.945100" elapsed="0.000192"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:37.945441" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:37.926799" elapsed="0.018759"/>
</kw>
<msg time="2026-04-19T03:32:37.945799" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:37.945881" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:37.925911" elapsed="0.020012"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:37.946967" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:37.947706" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T03:32:37.947522" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:37.947462" elapsed="0.000391"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:37.948853" elapsed="0.000038"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:37.604473" elapsed="0.344606"/>
</kw>
<msg time="2026-04-19T03:32:37.949460" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.603848" elapsed="0.345666"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:37.601812" elapsed="0.347790"/>
</kw>
<msg time="2026-04-19T03:32:37.949644" 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-19T03:32:37.601341" elapsed="0.348348"/>
</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-19T03:32:37.952785" elapsed="0.000354"/>
</kw>
<kw name="Open 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-19T03:32:37.953307" elapsed="0.000156"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:37.953614" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:37.949990" elapsed="0.003772"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:37.600219" elapsed="0.353601"/>
</kw>
<msg time="2026-04-19T03:32:37.953876" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.599655" elapsed="0.354270"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:37.598943" elapsed="0.355067"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:32:37.598786" elapsed="0.355326"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.956322" 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-19T03:32:37.956423" 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-19T03:32:37.956185" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:37.958684" level="INFO">${ip_address} = 10.30.171.206</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-19T03:32:37.958236" elapsed="0.000508"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:37.958965" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:32:37.959140" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:37.957811" elapsed="0.001354"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.963090" level="INFO">${odl_connection} = 514</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:37.962677" elapsed="0.000440"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:37.964875" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:37.964953" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:37.964612" elapsed="0.000366"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.965152" elapsed="0.000323"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:37.966355" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:38.292814" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:37.966007" elapsed="0.326973"/>
</kw>
<msg time="2026-04-19T03:32:38.293102" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.965644" elapsed="0.327562"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:37.964112" elapsed="0.329217"/>
</kw>
<msg time="2026-04-19T03:32:38.293382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.963701" elapsed="0.329732"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:37.963319" elapsed="0.330191"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:38.293624" elapsed="0.000047"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:37.961975" elapsed="0.331953"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.296759" level="INFO">Executing command 'sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:38.311072" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:38.311333" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:38.311430" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:38.311520" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:38.296546" elapsed="0.015024"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.313935" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:38.312810" elapsed="0.001256"/>
</kw>
<msg time="2026-04-19T03:32:38.314433" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:38.314534" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:38.311976" elapsed="0.002609"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.316090" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:38.314975" elapsed="0.001180"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.318421" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:38.318060" elapsed="0.000422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.319085" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:38.318718" elapsed="0.000430"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.319794" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:38.319362" elapsed="0.000496"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:38.317253" elapsed="0.002684"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:38.316354" elapsed="0.003635"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.316302" elapsed="0.003724"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:38.320288" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:38.320141" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.320116" elapsed="0.000266"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:38.320590" elapsed="0.000048"/>
</return>
<status status="PASS" start="2026-04-19T03:32:38.320457" elapsed="0.000264"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.320435" elapsed="0.000320"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:38.320965" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:38.295982" elapsed="0.025178"/>
</kw>
<msg time="2026-04-19T03:32:38.321506" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:38.321633" level="INFO">${result} = </msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:38.295091" elapsed="0.026608"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:38.323151" elapsed="0.000574"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:38.324266" elapsed="0.000087"/>
</return>
<status status="PASS" start="2026-04-19T03:32:38.323954" elapsed="0.000468"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.323838" elapsed="0.000638"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:38.325900" elapsed="0.000040"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:37.959855" elapsed="0.366281"/>
</kw>
<msg time="2026-04-19T03:32:38.326535" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.959324" elapsed="0.367269"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:37.957285" elapsed="0.369398"/>
</kw>
<msg time="2026-04-19T03:32:38.326736" 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-19T03:32:37.956631" elapsed="0.370164"/>
</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-19T03:32:38.330059" elapsed="0.000325"/>
</kw>
<kw name="Open 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-19T03:32:38.330552" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:38.330886" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:38.327135" elapsed="0.003935"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:37.955539" elapsed="0.375594"/>
</kw>
<msg time="2026-04-19T03:32:38.331231" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.955088" elapsed="0.376197"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:37.954371" elapsed="0.377005"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:32:37.954211" elapsed="0.377215"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:37.220056" elapsed="1.111408"/>
</for>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:32:37.215574" elapsed="1.115954"/>
</kw>
<msg time="2026-04-19T03:32:38.331568" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>"${status}" == "False"</arg>
<arg>ClusterManagement.Check_Bash_Command_On_List_Or_All</arg>
<arg>sed -ie "s/^use-tell-based-protocol=true/use-tell-based-protocol=false/g" ${DATASTORE_CFG}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:37.215078" elapsed="1.116537"/>
</kw>
<kw name="Fail" owner="BuiltIn">
<arg>Failure in status. Status can be True or False.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:38.331779" elapsed="0.000026"/>
</kw>
<arg>False</arg>
<arg>${DATASTORE_CFG}</arg>
<doc>Change status use-tell-based-protocol to True or False</doc>
<status status="PASS" start="2026-04-19T03:32:34.223734" elapsed="4.108149"/>
</kw>
<kw name="Check_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-19T03:32:38.335601" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:38.335207" elapsed="0.000421"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.336174" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:38.335794" elapsed="0.000407"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:38.336247" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:38.336405" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:38.334790" elapsed="0.001640"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.338790" 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-19T03:32:38.338892" 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-19T03:32:38.338650" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:38.342974" level="INFO">${ip_address} = 10.30.171.9</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-19T03:32:38.342642" elapsed="0.000361"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:38.343073" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:32:38.343231" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:38.340114" elapsed="0.003142"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.345887" level="INFO">${odl_connection} = 516</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:38.345155" elapsed="0.000772"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.349051" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:38.349132" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:38.348751" 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-19T03:32:38.349319" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.350527" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:38.674357" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:38.350206" elapsed="0.324405"/>
</kw>
<msg time="2026-04-19T03:32:38.674697" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.349827" elapsed="0.324958"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:38.348238" elapsed="0.326659"/>
</kw>
<msg time="2026-04-19T03:32:38.674995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.347492" elapsed="0.327596"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:38.346209" elapsed="0.329010"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:38.675321" elapsed="0.000040"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:38.344722" elapsed="0.330768"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.679128" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:38.691365" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:38.691734" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:32:38.691943" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:38.692185" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:38.678767" elapsed="0.013553"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.695877" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:38.695252" elapsed="0.000728"/>
</kw>
<msg time="2026-04-19T03:32:38.696533" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:38.696890" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:38.693742" elapsed="0.003393"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.701252" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:38.699525" elapsed="0.001945"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.703566" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:38.703307" elapsed="0.000398"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.704149" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:38.703863" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.704588" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:38.704345" elapsed="0.000287"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:38.702784" elapsed="0.001943"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:38.701829" elapsed="0.002942"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.701709" elapsed="0.003127"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:38.705237" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:38.705008" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.704959" elapsed="0.000406"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:38.705714" elapsed="0.000053"/>
</return>
<status status="PASS" start="2026-04-19T03:32:38.705514" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.705465" elapsed="0.000409"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:38.706838" elapsed="0.000057"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:38.676898" elapsed="0.030310"/>
</kw>
<msg time="2026-04-19T03:32:38.707503" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:38.707548" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:38.675725" elapsed="0.031847"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:38.707734" elapsed="0.000228"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:38.708159" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:32:38.708044" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:38.708010" elapsed="0.000231"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:38.708384" elapsed="0.000022"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:38.343969" elapsed="0.364532"/>
</kw>
<msg time="2026-04-19T03:32:38.708594" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.343418" elapsed="0.365225"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:38.339561" elapsed="0.369327"/>
</kw>
<msg time="2026-04-19T03:32:38.708970" 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-19T03:32:38.339098" elapsed="0.369918"/>
</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-19T03:32:38.712254" 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-19T03:32:38.712731" elapsed="0.000172"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:38.713065" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:38.709331" elapsed="0.003885"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:38.338012" elapsed="0.375392"/>
</kw>
<msg time="2026-04-19T03:32:38.713496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.337544" elapsed="0.376000"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:38.336807" elapsed="0.376951"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:32:38.336621" elapsed="0.377228"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.716191" 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-19T03:32:38.716293" 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-19T03:32:38.716053" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:38.718167" level="INFO">${ip_address} = 10.30.171.128</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-19T03:32:38.717864" elapsed="0.000330"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:38.718245" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:38.718399" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:38.717519" elapsed="0.000906"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.721566" level="INFO">${odl_connection} = 518</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:38.720796" elapsed="0.000811"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:38.724696" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:38.724773" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:38.724423" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.724984" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:38.726391" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:39.054286" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:37 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:38.725999" elapsed="0.328446"/>
</kw>
<msg time="2026-04-19T03:32:39.054533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.725494" elapsed="0.329131"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:38.723916" elapsed="0.330829"/>
</kw>
<msg time="2026-04-19T03:32:39.054846" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.723187" elapsed="0.331731"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:38.721871" elapsed="0.333222"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:39.055202" elapsed="0.000047"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:38.720383" elapsed="0.335005"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.059197" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:39.071838" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:39.072136" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:32:39.072291" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:39.072441" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:39.058568" elapsed="0.013969"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.076496" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:39.075754" elapsed="0.000964"/>
</kw>
<msg time="2026-04-19T03:32:39.077325" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:39.077680" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:39.074531" elapsed="0.003534"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.082194" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:39.080433" elapsed="0.001862"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.084180" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.083894" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.084689" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.084440" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.085301" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.084930" elapsed="0.000418"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:39.083424" elapsed="0.002025"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:39.082469" elapsed="0.003027"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.082410" elapsed="0.003148"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:39.086924" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:39.086689" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.085669" elapsed="0.001408"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:39.087449" elapsed="0.000057"/>
</return>
<status status="PASS" start="2026-04-19T03:32:39.087239" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.087188" elapsed="0.000429"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:39.088613" elapsed="0.000060"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:39.056550" elapsed="0.032354"/>
</kw>
<msg time="2026-04-19T03:32:39.089245" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:39.089296" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:39.055630" elapsed="0.033692"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:39.089490" elapsed="0.000244"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:39.089918" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:32:39.089804" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.089786" elapsed="0.000220"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:39.090174" elapsed="0.000023"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:38.719508" elapsed="0.370790"/>
</kw>
<msg time="2026-04-19T03:32:39.090397" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.718583" elapsed="0.371865"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:38.716978" elapsed="0.373696"/>
</kw>
<msg time="2026-04-19T03:32:39.090756" 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-19T03:32:38.716475" elapsed="0.374328"/>
</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-19T03:32:39.094093" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:32:39.094572" elapsed="0.000157"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:39.094966" elapsed="0.000120"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:39.091124" elapsed="0.004016"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:38.715414" elapsed="0.379916"/>
</kw>
<msg time="2026-04-19T03:32:39.095426" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:38.714832" elapsed="0.380643"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:38.714123" elapsed="0.381568"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:32:38.713948" elapsed="0.381828"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.098150" 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-19T03:32:39.098252" 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-19T03:32:39.097998" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:39.100057" level="INFO">${ip_address} = 10.30.171.206</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-19T03:32:39.099770" elapsed="0.000315"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:39.100135" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:39.100288" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:39.099446" elapsed="0.000868"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.103178" level="INFO">${odl_connection} = 520</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:39.102429" elapsed="0.000790"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.106319" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:39.106398" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:39.106044" 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-19T03:32:39.106583" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.107773" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:39.431471" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:39.107454" elapsed="0.324162"/>
</kw>
<msg time="2026-04-19T03:32:39.431699" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.107094" elapsed="0.324692"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:39.105529" elapsed="0.326374"/>
</kw>
<msg time="2026-04-19T03:32:39.432006" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.104786" elapsed="0.327322"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:39.103488" elapsed="0.328752"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:39.432344" elapsed="0.000043"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:39.101985" elapsed="0.330529"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.435958" level="INFO">Executing command 'cat //tmp/karaf-0.24.0-SNAPSHOT/etc/org.opendaylight.controller.cluster.datastore.cfg'.</msg>
<msg time="2026-04-19T03:32:39.449105" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:39.449518" level="INFO">${stdout} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<msg time="2026-04-19T03:32:39.449734" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:39.450013" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:39.435611" elapsed="0.014660"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.454455" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:39.453792" elapsed="0.000768"/>
</kw>
<msg time="2026-04-19T03:32:39.455082" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:39.455541" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:39.452551" elapsed="0.003207"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.458779" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:39.457964" elapsed="0.000913"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.460727" level="INFO"># This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# differently for each data store type by prefixing the data store type + '.'. For example, specifying
# the "shard-election-timeout-factor" property would be applied to both data stores whereas specifying
# "operational.shard-election-timeout-factor" would only apply to the "operational" data store. Similarly,
# specifying "config.shard-election-timeout-factor" would only apply to the "config" data store.
# Overall flexibility goes even further, as these overrides can also be combined with per-shard specification,
# so that you can also use:
#   &lt;shard-name&gt;.&lt;setting&gt;
#   &lt;datastore-name&gt;.&lt;shard-name&gt;.&lt;setting&gt;
# for example:
#   topology.shard-election-timeout-factor=2             # override both config/operational for topology shard
#   config.topology.shard-election-timeout-factor=5      # override config for topology shard
#   operational.topology.shard-election-timeout-factor=7 # override operational for topology shard
#

# The multiplication factor to be used to determine shard election timeout. The shard election timeout
# is determined by multiplying shardHeartbeatIntervalInMillis with the shardElectionTimeoutFactor.
shard-election-timeout-factor=20

# The interval at which a shard will send a heart beat message to its remote shard.
#shard-heartbeat-interval-in-millis=500

# The amount by which to divide election timeout in case of a candidate. This serves as a counter-balance
# to shard-election-timeout-factor. The default value is 1, i.e. election timeout is the same in all
# situations.
#shard-candidate-election-timeout-divisor=1

# The maximum amount of time to wait for a shard to elect a leader before failing an operation (eg transaction create).
#shard-leader-election-timeout-in-seconds=30

# Enable or disable data persistence.
#persistent=true

# Disable persistence for the operational data store by default.
operational.persistent=false

# The maximum amount of time a shard transaction can be idle without receiving any messages before it self-destructs.
#shard-transaction-idle-timeout-in-minutes=10

# The maximum amount of time a shard transaction three-phase commit can be idle without receiving the
# next messages before it aborts the transaction.
#shard-transaction-commit-timeout-in-seconds=30

# The maximum allowed capacity for each shard's transaction commit queue.
#shard-transaction-commit-queue-capacity=20000

# The maximum amount of time to wait for a shard to initialize from persistence on startup before
# failing an operation (eg transaction create and change listener registration).
#shard-initialization-timeout-in-seconds=300

# The minimum number of entries to be present in the in-memory journal log before a snapshot is to be taken.
#shard-snapshot-batch-count=20000

# The percentage of Runtime.totalMemory() used by the in-memory journal log before a snapshot is to be taken.
# Disabled, if direct threshold is enabled.
#shard-snapshot-data-threshold-percentage=12

# The max size of in-memory journal(in MB), after reaching the limit, snapshot will be taken. Should be not less then 1.
# If set to 0, direct threshold is disabled and percentage is used instead.
#shard-snapshot-data-threshold=0

# The interval at which the leader of the shard will check if its majority followers are active and
# term itself as isolated.
#shard-isolated-leader-check-interval-in-millis=5000

# The number of transaction modification operations (put, merge, delete) to batch before sending to the
# shard transaction actor. Batching improves performance as less modifications messages are sent to the
# actor and thus lessens the chance that the transaction actor's mailbox queue could get full.
#shard-batched-modification-count=1000

# The maximum amount of time for akka operations (remote or local) to complete before failing.
#operation-timeout-in-seconds=5

# Obsolete: this knob will be removed in a future release.
#
# The initial number of transactions per second that are allowed before the data store should begin
# applying back pressure. This number is only used as an initial guidance, subsequently the datastore
# measures the latency for a commit and auto-adjusts the rate limit.
#transaction-creation-initial-rate-limit=100

# A symbolic name for the RaftPolicy implementation to use. An instance with this name should
# be made available as a service. If this property is set to a name that cannot be resolved,
# then the normal RAFT behavior will be used. Symbolic names recognized out of the box are:
# - normal
# - disable-elections
# - two-node-cluster
#custom-raft-policy-implementation=

# When fragmenting messages thru the akka remoting framework, this is the maximum size in bytes
# for a message slice. This needs to be below Akka's maximum-frame-size and defaults to 480KiB.
maximum-message-slice-size=491520

# Tune the maximum number of entries a follower is allowed to lag behind the leader before it is
# considered out-of-sync. This flag may require tuning in face of a large number of small transactions.
#sync-index-threshold=10

# Record new transaction allocation stack trace, useful for debugging.  This makes the log include
# the stack trace of the creator of the Tx when there is an exception when the transaction is submitted 
# (e.g. for a failed validation).  Defaults to false due to performance impact.
#transaction-debug-context-enabled=true

# Multiplicator of shard-leader-election-timeout-in-seconds for the purposes of initial datastore
# convergence. Each frontend datastore instance will wait specified amount of time before becoming
# exposed as a service. A value of 0 indicates waiting forever. Defaults to 3.
#initial-settle-timeout-multiplier=3

#Interval after which a snapshot should be taken during the recovery process.
#recovery-snapshot-interval-seconds=0

# Option to take a snapshot when the entire DataTree root or top-level container is overwritten
snapshot-on-root-overwrite=false

# Enable lz4 compression for snapshots sent from leader to followers
#use-lz4-compression=true

# Export snapshot and journal content after recovery, possible modes: off, json
#
# Journal Json structure:
#       Entries : [
#            Entry : [
#                Node: [
#                   Path : {},
#                   ModificationType : {},
#                   Data : {}
#                ]
#            ]
#        ]
#
# Snapshot Json structure:
#       RootNode : {}
#
export-on-recovery=off

# Directory name for export files
#recovery-export-base-dir=persistence-export</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.460467" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.461257" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.460983" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.461972" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.461520" elapsed="0.000609"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:39.459984" elapsed="0.002251"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:39.459062" elapsed="0.003218"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.458991" elapsed="0.003347"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:39.462708" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:39.462496" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.462444" elapsed="0.000395"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:39.463209" elapsed="0.000054"/>
</return>
<status status="PASS" start="2026-04-19T03:32:39.462990" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.462941" elapsed="0.000429"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:39.464356" elapsed="0.000087"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:39.433685" elapsed="0.030980"/>
</kw>
<msg time="2026-04-19T03:32:39.464907" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:39.464953" level="INFO">${result} = # This file specifies property settings for the clustered data store to control its behavior. A
# property may be applied to every data store type ("config" and "operational") or can be customized
# d...</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:39.432749" elapsed="0.032229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:39.465154" elapsed="0.000281"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:39.465616" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:32:39.465502" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.465484" elapsed="0.000215"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:39.465844" elapsed="0.000021"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:39.101268" elapsed="0.364694"/>
</kw>
<msg time="2026-04-19T03:32:39.466156" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.100471" elapsed="0.365739"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:39.098904" elapsed="0.367528"/>
</kw>
<msg time="2026-04-19T03:32:39.466513" 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-19T03:32:39.098436" elapsed="0.368123"/>
</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-19T03:32:39.469764" 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-19T03:32:39.470337" elapsed="0.000233"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:39.470728" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:39.466854" elapsed="0.004029"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:39.097373" elapsed="0.373717"/>
</kw>
<msg time="2026-04-19T03:32:39.471186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.096761" elapsed="0.374474"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:39.096054" elapsed="0.375397"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:32:39.095880" elapsed="0.375619"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:38.336485" elapsed="1.135049"/>
</for>
<arg>cat ${DATASTORE_CFG}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:32:38.332266" elapsed="1.139365"/>
</kw>
<kw name="Clean_Directories_On_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.481597" level="INFO">${path_list} = ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key']</msg>
<var>${path_list}</var>
<arg>"${directory_list}" == "${EMPTY}"</arg>
<arg>${ODL_DEFAULT_DATA_PATHS}</arg>
<arg>${directory_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:39.479299" elapsed="0.002326"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T03:32:39.483404" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:39.483007" elapsed="0.000425"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.483897" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:39.483593" elapsed="0.000330"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:39.483968" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:39.484143" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:39.482626" elapsed="0.001542"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.486552" 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-19T03:32:39.486653" 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-19T03:32:39.486411" elapsed="0.000269"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:39.488946" level="INFO">${ip_address} = 10.30.171.9</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-19T03:32:39.488495" elapsed="0.000479"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:39.489044" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:32:39.489201" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:39.488171" elapsed="0.001056"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.493116" level="INFO">${odl_connection} = 522</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:39.492498" elapsed="0.000664"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.495772" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:39.495850" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:39.495499" elapsed="0.000375"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.496158" elapsed="0.000328"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.497398" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:39.825857" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:38 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:39.497016" elapsed="0.328993"/>
</kw>
<msg time="2026-04-19T03:32:39.826116" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.496656" elapsed="0.329552"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:39.494943" elapsed="0.331380"/>
</kw>
<msg time="2026-04-19T03:32:39.826482" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.494276" elapsed="0.332262"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:39.493626" elapsed="0.333076"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:39.826853" elapsed="0.000092"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:39.491480" elapsed="0.335686"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.829590" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:32:39.842695" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:39.842957" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:32:39.843107" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:39.843242" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:39.829363" elapsed="0.013954"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.845193" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:39.844551" elapsed="0.000747"/>
</kw>
<msg time="2026-04-19T03:32:39.845547" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:39.845652" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:39.843726" elapsed="0.001976"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.847251" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:39.846247" elapsed="0.001068"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.849840" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.849213" elapsed="0.000692"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.850485" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.850140" elapsed="0.000403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.851119" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:39.850756" elapsed="0.000426"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:39.848288" elapsed="0.002969"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:39.847497" elapsed="0.003809"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.847449" elapsed="0.003894"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:39.851563" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:39.851421" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.851397" elapsed="0.000257"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:39.851851" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:32:39.851726" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.851704" elapsed="0.000263"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:39.852193" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:39.828761" elapsed="0.023686"/>
</kw>
<msg time="2026-04-19T03:32:39.852681" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:39.852849" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:39.827535" elapsed="0.025401"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:39.853335" elapsed="0.000941"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:39.854802" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-19T03:32:39.854474" elapsed="0.000544"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.854445" elapsed="0.000667"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:39.855381" elapsed="0.000068"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:39.489951" elapsed="0.365790"/>
</kw>
<msg time="2026-04-19T03:32:39.855827" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.489418" elapsed="0.366481"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:39.487620" elapsed="0.368521"/>
</kw>
<msg time="2026-04-19T03:32:39.856205" 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-19T03:32:39.486839" elapsed="0.369433"/>
</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-19T03:32:39.860755" elapsed="0.000577"/>
</kw>
<kw name="Open 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-19T03:32:39.861615" elapsed="0.000226"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:39.861994" elapsed="0.000119"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:39.856735" elapsed="0.005432"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:39.485741" elapsed="0.376486"/>
</kw>
<msg time="2026-04-19T03:32:39.862285" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.485242" elapsed="0.377093"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:39.484511" elapsed="0.377912"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:32:39.484357" elapsed="0.378115"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.864671" 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-19T03:32:39.864773" 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-19T03:32:39.864528" elapsed="0.000271"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:39.867066" level="INFO">${ip_address} = 10.30.171.128</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-19T03:32:39.866590" elapsed="0.000504"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:39.867144" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:39.867297" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:39.866268" elapsed="0.001053"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.871174" level="INFO">${odl_connection} = 524</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:39.870563" elapsed="0.000659"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:39.873585" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:39.873663" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:39.873286" 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-19T03:32:39.873845" elapsed="0.000335"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:39.875048" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:40.193606" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:39.874706" elapsed="0.319162"/>
</kw>
<msg time="2026-04-19T03:32:40.193951" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.874350" elapsed="0.319709"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:39.872611" elapsed="0.321561"/>
</kw>
<msg time="2026-04-19T03:32:40.194225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.872217" elapsed="0.322059"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:39.871682" elapsed="0.322748"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:40.194578" elapsed="0.000090"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:39.869571" elapsed="0.325294"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.197292" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:32:40.209491" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:40.209681" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:32:40.209752" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:40.209809" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:40.197087" elapsed="0.012753"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.211675" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:40.211072" elapsed="0.000705"/>
</kw>
<msg time="2026-04-19T03:32:40.211986" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:40.212118" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:40.210277" elapsed="0.001893"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.213531" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:40.212549" elapsed="0.001041"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.216101" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:40.215516" elapsed="0.000689"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.217107" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:40.216540" elapsed="0.000660"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.218073" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:40.217535" elapsed="0.000582"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:40.214588" elapsed="0.003582"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:40.213796" elapsed="0.004410"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.213748" elapsed="0.004482"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:40.218386" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:40.218286" elapsed="0.000143"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.218269" elapsed="0.000181"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:40.218589" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:32:40.218501" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.218486" elapsed="0.000185"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:40.218814" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:40.196478" elapsed="0.022498"/>
</kw>
<msg time="2026-04-19T03:32:40.219141" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:40.219250" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:40.195252" elapsed="0.024055"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:40.219555" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:40.220402" elapsed="0.000070"/>
</return>
<status status="PASS" start="2026-04-19T03:32:40.220179" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.220159" elapsed="0.000430"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:40.220772" elapsed="0.000045"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:39.868007" elapsed="0.353010"/>
</kw>
<msg time="2026-04-19T03:32:40.221136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.867477" elapsed="0.353712"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:39.865720" elapsed="0.355560"/>
</kw>
<msg time="2026-04-19T03:32:40.221323" 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-19T03:32:39.864952" elapsed="0.356417"/>
</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-19T03:32:40.224397" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:32:40.224874" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:40.225196" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:40.221679" elapsed="0.003665"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:39.863886" elapsed="0.361515"/>
</kw>
<msg time="2026-04-19T03:32:40.225457" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:39.863445" elapsed="0.362060"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:39.862728" elapsed="0.362860"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:32:39.862569" elapsed="0.363065"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.227847" 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-19T03:32:40.227947" 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-19T03:32:40.227712" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:40.230283" level="INFO">${ip_address} = 10.30.171.206</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-19T03:32:40.229802" elapsed="0.000508"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:40.230359" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:40.230513" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:40.229466" elapsed="0.001072"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.234485" level="INFO">${odl_connection} = 526</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:40.233734" elapsed="0.000796"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.236730" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:40.236807" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:40.236468" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.236992" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.238232" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:40.562635" 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 Sun Apr 19 03:31:40 UTC 2026

  System load:  0.09               Processes:             126
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:40.237879" elapsed="0.324869"/>
</kw>
<msg time="2026-04-19T03:32:40.562820" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.237488" elapsed="0.325409"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:40.235963" elapsed="0.327034"/>
</kw>
<msg time="2026-04-19T03:32:40.563069" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.235568" elapsed="0.327552"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:40.234977" elapsed="0.328289"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:40.563406" elapsed="0.000080"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:40.232713" elapsed="0.330950"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.566002" level="INFO">Executing command 'mkdir -p '/tmp' &amp;&amp; rm -vrf '/tmp/log' &amp;&amp; mv -vf '/tmp/karaf-0.24.0-SNAPSHOT/data/log' '/tmp/''.</msg>
<msg time="2026-04-19T03:32:40.578891" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:40.579180" level="INFO">${stdout} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<msg time="2026-04-19T03:32:40.579283" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:40.579373" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:40.565779" elapsed="0.013643"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.581238" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:40.580616" elapsed="0.000722"/>
</kw>
<msg time="2026-04-19T03:32:40.581545" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:40.581642" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:40.579820" elapsed="0.001871"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.583089" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:40.582119" elapsed="0.001031"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.585809" level="INFO">renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:40.585258" elapsed="0.000702"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.586862" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:40.586330" elapsed="0.000596"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.587326" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:40.587089" elapsed="0.000280"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:40.584325" elapsed="0.003096"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:40.583328" elapsed="0.004127"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.583283" elapsed="0.004198"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:40.587637" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:40.587536" elapsed="0.000144"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.587520" elapsed="0.000182"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:40.587840" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:32:40.587752" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.587737" elapsed="0.000187"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:40.588084" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:40.565191" elapsed="0.023054"/>
</kw>
<msg time="2026-04-19T03:32:40.588383" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:40.588495" level="INFO">${result} = renamed '/tmp/karaf-0.24.0-SNAPSHOT/data/log' -&gt; '/tmp/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:40.564003" elapsed="0.024550"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:40.588852" elapsed="0.000516"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:40.589729" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:32:40.589502" elapsed="0.000389"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:40.589482" elapsed="0.000450"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:40.590139" elapsed="0.000049"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:40.231245" elapsed="0.359145"/>
</kw>
<msg time="2026-04-19T03:32:40.590451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.230695" elapsed="0.359807"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:40.228918" elapsed="0.361672"/>
</kw>
<msg time="2026-04-19T03:32:40.590633" 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-19T03:32:40.228212" elapsed="0.362467"/>
</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-19T03:32:40.593729" 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-19T03:32:40.594278" elapsed="0.000159"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:40.594585" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:40.590981" elapsed="0.003752"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:40.227091" elapsed="0.367701"/>
</kw>
<msg time="2026-04-19T03:32:40.594847" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.226630" elapsed="0.368265"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:40.225919" elapsed="0.369059"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:32:40.225760" elapsed="0.369279"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:39.484223" elapsed="1.110853"/>
</for>
<arg>mkdir -p '${tmp_dir}' &amp;&amp; rm -vrf '${tmp_dir}/log' &amp;&amp; mv -vf '${karaf_home}/data/log' '${tmp_dir}/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:32:39.481979" elapsed="1.113158"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:39.481703" elapsed="1.113471"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:39.481684" elapsed="1.113516"/>
</if>
<kw name="Safe_With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.596500" 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-19T03:32:40.596599" 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-19T03:32:40.596366" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="With_Ssh_To_List_Or_All_Run_Keyword" owner="ClusterManagement">
<kw name="Comment" owner="BuiltIn">
<arg>This keyword is experimental and there is high risk of being replaced by another approach.</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-19T03:32:40.599951" elapsed="0.000239"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.601195" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:40.600799" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.601687" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:40.601382" elapsed="0.000367"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:40.601796" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:32:40.601984" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:40.600417" elapsed="0.001592"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:40.602994" level="INFO">${ip_address} = 10.30.171.9</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-19T03:32:40.602713" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:40.603086" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:40.603237" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:40.602391" elapsed="0.000871"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.604830" level="INFO">${odl_connection} = 528</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:40.604454" elapsed="0.000403"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:40.607310" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:40.607568" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:40.606766" elapsed="0.000898"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.607953" elapsed="0.000625"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.609896" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:40.942344" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:39 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:40.609548" elapsed="0.332964"/>
</kw>
<msg time="2026-04-19T03:32:40.942669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.608891" elapsed="0.333910"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:40.605811" elapsed="0.337164"/>
</kw>
<msg time="2026-04-19T03:32:40.943093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:40.605426" elapsed="0.337721"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:40.605051" elapsed="0.338188"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:40.943310" elapsed="0.000046"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:40.604095" elapsed="0.339396"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.945581" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:32:40.958731" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:40.945173" elapsed="0.013791"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:32:40.945001" elapsed="0.014104"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:40.960662" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:32:41.090147" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:40.959635" elapsed="0.130843"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:32:40.959314" elapsed="0.131271"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.092215" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:32:41.141734" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.091277" elapsed="0.050911"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:32:41.090847" elapsed="0.051637"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.144526" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:32:41.192922" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.143346" elapsed="0.049874"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:32:41.142805" elapsed="0.050506"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.194820" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:32:41.240957" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.193866" elapsed="0.047396"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:32:41.193526" elapsed="0.047822"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.242786" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:32:41.288912" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.241863" elapsed="0.047338"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:32:41.241546" elapsed="0.047745"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.290726" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:32:41.337181" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.289809" elapsed="0.047647"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:32:41.289491" elapsed="0.048062"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.339088" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:32:41.385113" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.338163" elapsed="0.047225"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:32:41.337773" elapsed="0.047712"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:32:40.944848" elapsed="0.440711"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:32:40.944491" elapsed="0.441216"/>
</kw>
<msg time="2026-04-19T03:32:41.385954" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:41.386102" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:40.943742" elapsed="0.442416"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:41.386593" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:41.387622" elapsed="0.000073"/>
</return>
<status status="PASS" start="2026-04-19T03:32:41.387332" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:41.387283" elapsed="0.000545"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:41.388194" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:40.603526" elapsed="0.784943"/>
</kw>
<var name="${member_index}">1</var>
<status status="PASS" start="2026-04-19T03:32:40.602221" elapsed="0.786346"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:41.390677" level="INFO">${ip_address} = 10.30.171.128</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-19T03:32:41.389992" elapsed="0.000746"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:41.390852" elapsed="0.000068"/>
</return>
<msg time="2026-04-19T03:32:41.391244" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:41.389227" elapsed="0.002073"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.394947" level="INFO">${odl_connection} = 529</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:41.394059" elapsed="0.000922"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:41.397773" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:41.398057" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:41.397234" elapsed="0.000924"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:41.398466" elapsed="0.000664"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.400446" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:41.723066" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:41.400119" elapsed="0.323181"/>
</kw>
<msg time="2026-04-19T03:32:41.723435" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:41.399435" elapsed="0.324105"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:41.396004" elapsed="0.327696"/>
</kw>
<msg time="2026-04-19T03:32:41.723797" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:41.395574" elapsed="0.328274"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:41.395186" elapsed="0.328740"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:41.723979" elapsed="0.000069"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:41.393219" elapsed="0.330959"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.726110" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:32:41.739111" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.725693" elapsed="0.013662"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:32:41.725547" elapsed="0.013892"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.740836" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:32:41.859850" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.739953" elapsed="0.120198"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:32:41.739637" elapsed="0.120605"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.861711" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:32:41.908973" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.860778" elapsed="0.048479"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:32:41.860453" elapsed="0.048889"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.910842" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:32:41.957210" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.909862" elapsed="0.047594"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:32:41.909543" elapsed="0.047997"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:41.959106" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:32:42.005148" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:41.958139" elapsed="0.047253"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:32:41.957736" elapsed="0.047739"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.006946" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:32:42.053155" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.005988" elapsed="0.047414"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:32:42.005673" elapsed="0.047812"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.054993" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:32:42.101221" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.054015" elapsed="0.047452"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:32:42.053682" elapsed="0.047870"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.103133" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:32:42.149287" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.102109" elapsed="0.047424"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:32:42.101748" elapsed="0.047868"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:32:41.725405" elapsed="0.424279"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:32:41.725084" elapsed="0.424736"/>
</kw>
<msg time="2026-04-19T03:32:42.150098" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:42.150204" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:41.724405" elapsed="0.425851"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:42.150625" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:42.151725" elapsed="0.000109"/>
</return>
<status status="PASS" start="2026-04-19T03:32:42.151357" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:42.151310" elapsed="0.000822"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:42.152490" elapsed="0.000050"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:41.391901" elapsed="0.760868"/>
</kw>
<var name="${member_index}">2</var>
<status status="PASS" start="2026-04-19T03:32:41.388781" elapsed="0.764134"/>
</iter>
<iter>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:42.155100" level="INFO">${ip_address} = 10.30.171.206</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-19T03:32:42.154410" elapsed="0.000752"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:42.155274" elapsed="0.000065"/>
</return>
<msg time="2026-04-19T03:32:42.155616" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:42.153617" elapsed="0.002054"/>
</kw>
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.159395" level="INFO">${odl_connection} = 530</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:42.158982" elapsed="0.000440"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:42.161959" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:42.162236" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:42.161413" elapsed="0.000921"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:42.162627" elapsed="0.000641"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.164557" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:42.767519" 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 Sun Apr 19 03:32:42 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:42.164235" elapsed="0.603436"/>
</kw>
<msg time="2026-04-19T03:32:42.767815" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:42.163573" elapsed="0.604353"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:42.160439" elapsed="0.607674"/>
</kw>
<msg time="2026-04-19T03:32:42.768204" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:42.159992" elapsed="0.608266"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:42.159605" elapsed="0.608734"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:42.768392" elapsed="0.000040"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:42.158131" elapsed="0.610434"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="ClusterManagement__Clean_Directories" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.770614" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/tmp/'.</msg>
<msg time="2026-04-19T03:32:42.783979" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.770208" elapsed="0.014091"/>
</kw>
<var name="${relative_path}">tmp/</var>
<status status="PASS" start="2026-04-19T03:32:42.770051" elapsed="0.014350"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.786013" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/data/'.</msg>
<msg time="2026-04-19T03:32:42.832487" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.785017" elapsed="0.047776"/>
</kw>
<var name="${relative_path}">data/</var>
<status status="PASS" start="2026-04-19T03:32:42.784643" elapsed="0.048264"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.834625" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/cache/'.</msg>
<msg time="2026-04-19T03:32:42.880379" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.833620" elapsed="0.047007"/>
</kw>
<var name="${relative_path}">cache/</var>
<status status="PASS" start="2026-04-19T03:32:42.833221" elapsed="0.047490"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.882333" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/snapshots/'.</msg>
<msg time="2026-04-19T03:32:42.928464" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.881418" elapsed="0.047292"/>
</kw>
<var name="${relative_path}">snapshots/</var>
<status status="PASS" start="2026-04-19T03:32:42.881089" elapsed="0.047705"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.930271" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/journal/'.</msg>
<msg time="2026-04-19T03:32:42.977121" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.929362" elapsed="0.048068"/>
</kw>
<var name="${relative_path}">journal/</var>
<status status="PASS" start="2026-04-19T03:32:42.928994" elapsed="0.048521"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:42.979077" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/segmented-journal/'.</msg>
<msg time="2026-04-19T03:32:43.024164" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:42.978134" elapsed="0.046309"/>
</kw>
<var name="${relative_path}">segmented-journal/</var>
<status status="PASS" start="2026-04-19T03:32:42.977715" elapsed="0.046828"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.026103" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/opendaylight/current/'.</msg>
<msg time="2026-04-19T03:32:43.076533" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:43.025199" elapsed="0.051634"/>
</kw>
<var name="${relative_path}">etc/opendaylight/current/</var>
<status status="PASS" start="2026-04-19T03:32:43.024784" elapsed="0.052153"/>
</iter>
<iter>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.078827" level="INFO">Executing command 'rm -rf /tmp/karaf-0.24.0-SNAPSHOT/etc/host.key'.</msg>
<msg time="2026-04-19T03:32:43.124865" level="INFO">Command exited with return code 0.</msg>
<arg>rm -rf ${karaf_home}${/}${relative_path}</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:43.077639" elapsed="0.047512"/>
</kw>
<var name="${relative_path}">etc/host.key</var>
<status status="PASS" start="2026-04-19T03:32:43.077249" elapsed="0.047991"/>
</iter>
<var>${relative_path}</var>
<value>@{relative_path_list}</value>
<status status="PASS" start="2026-04-19T03:32:42.769884" elapsed="0.355427"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each relative path, remove files with respect to /tmp/karaf-0.24.0-SNAPSHOT. Return None.</doc>
<status status="PASS" start="2026-04-19T03:32:42.769543" elapsed="0.355914"/>
</kw>
<msg time="2026-04-19T03:32:43.125689" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:43.125790" level="INFO">${result} = None</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:42.768812" elapsed="0.357031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:43.126259" elapsed="0.000486"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:43.127291" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-04-19T03:32:43.126918" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.126868" elapsed="0.000635"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:43.127837" elapsed="0.000048"/>
</kw>
<arg>${member_ip}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:42.156301" elapsed="0.971844"/>
</kw>
<var name="${member_index}">3</var>
<status status="PASS" start="2026-04-19T03:32:42.153189" elapsed="0.975055"/>
</iter>
<var>${member_index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:40.602078" elapsed="2.526235"/>
</for>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>For each index in given list (or all): activate SSH connection, run given Keyword, close active connection. Return None.
Beware that in order to avoid "got positional argument after named arguments", first two arguments in the call should not be named.</doc>
<status status="PASS" start="2026-04-19T03:32:40.597300" elapsed="2.531132"/>
</kw>
<msg time="2026-04-19T03:32:43.128527" 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-19T03:32:40.596780" elapsed="2.531857"/>
</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-19T03:32:43.135629" elapsed="0.000581"/>
</kw>
<kw name="Open 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-19T03:32:43.136380" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:43.136690" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:43.129358" elapsed="0.007482"/>
</kw>
<arg>With_Ssh_To_List_Or_All_Run_Keyword</arg>
<arg>${member_index_list}</arg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</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-19T03:32:40.595877" elapsed="2.541020"/>
</kw>
<arg>${member_index_list}</arg>
<arg>ClusterManagement__Clean_Directories</arg>
<arg>${path_list}</arg>
<arg>${karaf_home}</arg>
<doc>Remember active ssh connection index, call With_Ssh_To_List_Or_All_Run_Keyword, return None. Restore the conection index on teardown.</doc>
<status status="PASS" start="2026-04-19T03:32:40.595372" elapsed="2.541591"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${tmp_dir}&quot;&quot;&quot; != &quot;&quot;">
<kw name="Check_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-19T03:32:43.138824" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:43.138438" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.139546" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:43.139012" elapsed="0.000560"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:43.139618" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:43.139773" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:43.138056" elapsed="0.001741"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.142209" 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-19T03:32:43.142310" 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-19T03:32:43.142069" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:43.144304" level="INFO">${ip_address} = 10.30.171.9</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-19T03:32:43.143828" elapsed="0.000504"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:43.144383" elapsed="0.000266"/>
</return>
<msg time="2026-04-19T03:32:43.144782" level="INFO">${member_ip} = 10.30.171.9</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:43.143505" elapsed="0.001302"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.148690" level="INFO">${odl_connection} = 532</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:43.148091" elapsed="0.000643"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.150911" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:43.150993" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:43.150631" elapsed="0.000385"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.151211" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.152402" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:43.471580" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:40 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:43.152074" elapsed="0.319644"/>
</kw>
<msg time="2026-04-19T03:32:43.471802" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.151702" elapsed="0.320187"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:43.150145" elapsed="0.321860"/>
</kw>
<msg time="2026-04-19T03:32:43.472080" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.149704" elapsed="0.322430"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:43.149206" elapsed="0.323100"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:43.472458" elapsed="0.000089"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.9 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:43.147085" elapsed="0.325658"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.475513" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:32:43.488155" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:43.488406" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:32:43.488507" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:43.488598" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:43.475275" elapsed="0.013374"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.490517" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:43.489864" elapsed="0.000753"/>
</kw>
<msg time="2026-04-19T03:32:43.490825" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:43.490922" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:43.489078" elapsed="0.001894"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.492421" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:43.491440" elapsed="0.001041"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.495060" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:43.494474" elapsed="0.000695"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.496069" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:43.495556" elapsed="0.000571"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.496667" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:43.496339" elapsed="0.000388"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:43.493456" elapsed="0.003344"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:43.492662" elapsed="0.004187"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.492615" elapsed="0.004270"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:43.497125" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:43.496963" elapsed="0.000225"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.496939" elapsed="0.000279"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:43.497415" elapsed="0.000040"/>
</return>
<status status="PASS" start="2026-04-19T03:32:43.497290" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.497269" elapsed="0.000265"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:43.497741" elapsed="0.000031"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:43.474419" elapsed="0.023546"/>
</kw>
<msg time="2026-04-19T03:32:43.498191" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:43.498343" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:43.473129" elapsed="0.025295"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:43.498771" elapsed="0.000702"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:43.499971" elapsed="0.000118"/>
</return>
<status status="PASS" start="2026-04-19T03:32:43.499661" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.499634" elapsed="0.000622"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:43.500514" elapsed="0.000064"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:43.145528" elapsed="0.355323"/>
</kw>
<msg time="2026-04-19T03:32:43.500933" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.144967" elapsed="0.356036"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:43.142948" elapsed="0.358199"/>
</kw>
<msg time="2026-04-19T03:32:43.501206" 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-19T03:32:43.142489" elapsed="0.358781"/>
</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-19T03:32:43.505568" 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-19T03:32:43.506323" elapsed="0.000218"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:43.506750" elapsed="0.000137"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:43.501681" elapsed="0.005279"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:43.141368" elapsed="0.365772"/>
</kw>
<msg time="2026-04-19T03:32:43.507223" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.140895" elapsed="0.366397"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:43.140193" elapsed="0.367255"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:32:43.139984" elapsed="0.367531"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.509858" 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-19T03:32:43.509958" 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-19T03:32:43.509723" elapsed="0.000265"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:43.511954" level="INFO">${ip_address} = 10.30.171.128</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-19T03:32:43.511512" elapsed="0.000469"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:43.512051" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:32:43.512205" level="INFO">${member_ip} = 10.30.171.128</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:43.511178" elapsed="0.001052"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.516306" level="INFO">${odl_connection} = 534</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:43.515695" elapsed="0.000656"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.518530" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:43.518606" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:43.518267" elapsed="0.000363"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.518787" elapsed="0.000332"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.519984" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:43.832314" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:41 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:43.519657" elapsed="0.312806"/>
</kw>
<msg time="2026-04-19T03:32:43.832552" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.519288" elapsed="0.313353"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:43.517732" elapsed="0.315025"/>
</kw>
<msg time="2026-04-19T03:32:43.832901" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.517334" elapsed="0.315621"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:43.516802" elapsed="0.316334"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:43.833287" elapsed="0.000087"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.128 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:43.514630" elapsed="0.318943"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.836374" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:32:43.849420" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:43.849742" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:32:43.849845" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:43.849939" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:43.835867" elapsed="0.014128"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.852061" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:43.851371" elapsed="0.000796"/>
</kw>
<msg time="2026-04-19T03:32:43.852378" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:43.852476" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:43.850508" elapsed="0.002018"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.853880" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:43.852905" elapsed="0.001033"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.856515" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:43.855922" elapsed="0.000696"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.857517" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:43.856956" elapsed="0.000650"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.858500" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:43.857943" elapsed="0.000653"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:43.854933" elapsed="0.003782"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:43.854154" elapsed="0.004638"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.854104" elapsed="0.004746"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:43.859240" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:43.858977" elapsed="0.000365"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.858939" elapsed="0.000451"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:43.859732" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:32:43.859503" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.859469" elapsed="0.000458"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:43.860395" elapsed="0.000061"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:43.835222" elapsed="0.025610"/>
</kw>
<msg time="2026-04-19T03:32:43.861225" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:43.861497" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:43.833934" elapsed="0.027705"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:43.862278" elapsed="0.001212"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:43.864253" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T03:32:43.863886" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.863836" elapsed="0.000680"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:43.864780" elapsed="0.000064"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:43.513160" elapsed="0.351987"/>
</kw>
<msg time="2026-04-19T03:32:43.865235" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.512387" elapsed="0.352925"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:43.510633" elapsed="0.354884"/>
</kw>
<msg time="2026-04-19T03:32:43.865577" 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-19T03:32:43.510174" elapsed="0.355468"/>
</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-19T03:32:43.869413" elapsed="0.000322"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:43.869903" elapsed="0.000229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:43.870284" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:43.866097" elapsed="0.004340"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:43.509095" elapsed="0.361402"/>
</kw>
<msg time="2026-04-19T03:32:43.870553" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.508635" elapsed="0.361969"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:43.507861" elapsed="0.362830"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:32:43.507646" elapsed="0.363093"/>
</iter>
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.872971" 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-19T03:32:43.873123" 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-19T03:32:43.872823" elapsed="0.000331"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Check_Unsafely_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:43.875237" level="INFO">${ip_address} = 10.30.171.206</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-19T03:32:43.874746" elapsed="0.000520"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:32:43.875317" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:43.875470" level="INFO">${member_ip} = 10.30.171.206</msg>
<var>${member_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:43.874419" elapsed="0.001077"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Unsafely_Keyword_Over_Temporary_Odl_Session" owner="SSHKeywords">
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.879891" level="INFO">${odl_connection} = 536</msg>
<var>${odl_connection}</var>
<arg>${ip_address}</arg>
<arg>prompt=${ODL_SYSTEM_PROMPT}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:43.879244" elapsed="0.000696"/>
</kw>
<kw name="Flexible_Controller_Login" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:43.882210" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:43.882289" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:43.881908" 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-19T03:32:43.882474" elapsed="0.000342"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:43.883733" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:44.202935" 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 Sun Apr 19 03:32:42 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:42 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:43.883366" elapsed="0.319903"/>
</kw>
<msg time="2026-04-19T03:32:44.203382" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.882983" elapsed="0.320520"/>
</kw>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:43.881413" elapsed="0.322240"/>
</kw>
<msg time="2026-04-19T03:32:44.203745" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Flexible SSH Login</arg>
<arg>user=${user}</arg>
<arg>password=${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.880985" elapsed="0.322842"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-19T03:32:43.880472" elapsed="0.323620"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-19T03:32:44.204312" elapsed="0.000120"/>
</return>
<arg>${ip_address}</arg>
<doc>Open a connection to the ODL system at 10.30.171.206 and return its identifier.</doc>
<status status="PASS" start="2026-04-19T03:32:43.878155" elapsed="0.326545"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.208085" level="INFO">Executing command 'mkdir -p '/tmp/karaf-0.24.0-SNAPSHOT/data' &amp;&amp; rm -vrf '/tmp/karaf-0.24.0-SNAPSHOT/log' &amp;&amp; mv -vf '/tmp/log' '/tmp/karaf-0.24.0-SNAPSHOT/data/''.</msg>
<msg time="2026-04-19T03:32:44.220886" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:44.221182" level="INFO">${stdout} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<msg time="2026-04-19T03:32:44.221287" level="INFO">${stderr} = </msg>
<msg time="2026-04-19T03:32:44.221377" level="INFO">${rc} = 0</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<var>${rc}</var>
<arg>${command}</arg>
<arg>return_stderr=True</arg>
<arg>return_rc=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:32:44.207764" elapsed="0.013662"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.223264" level="INFO">Length is 0.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="PASS" start="2026-04-19T03:32:44.222627" elapsed="0.000739"/>
</kw>
<msg time="2026-04-19T03:32:44.223577" level="INFO">${emptiness_status} = PASS</msg>
<msg time="2026-04-19T03:32:44.223674" level="INFO">${result} = None</msg>
<var>${emptiness_status}</var>
<var>${result}</var>
<arg>BuiltIn.Should_Be_Empty</arg>
<arg>${stderr}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:44.221820" elapsed="0.001903"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.225132" level="INFO">${success} = True</msg>
<var>${success}</var>
<arg>(${rc} == 0) and (("${emptiness_status}" == "PASS") or not ${stderr_must_be_empty})</arg>
<arg>True</arg>
<arg>False</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:44.224155" elapsed="0.001037"/>
</kw>
<if>
<branch type="IF" condition="(${log_on_success} and ${success}) or (${log_on_failure} and not ${success})">
<kw name="Log_Command_Results" owner="SSHKeywords">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.227641" level="INFO">renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:44.227077" elapsed="0.000717"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.228413" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:44.228162" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.228838" level="INFO">0</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:44.228604" elapsed="0.000277"/>
</kw>
<arg>${stdout}</arg>
<arg>${stderr}</arg>
<arg>${rc}</arg>
<doc>Log everything returned by SSHLibrary.Execute_Command</doc>
<status status="PASS" start="2026-04-19T03:32:44.226159" elapsed="0.002774"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:44.225375" elapsed="0.003593"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.225328" elapsed="0.003666"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-19T03:32:44.229166" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:44.229065" elapsed="0.000145"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.229047" elapsed="0.000185"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:44.229372" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:32:44.229282" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.229267" elapsed="0.000189"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Got rc: ${rc} or stderr was not empty: ${stderr}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:44.229601" elapsed="0.000022"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Execute command via the active SSH connection. For success, rc has to be zero and optionally stderr has to be empty.
Log everything, depending on arguments and success. Return either success string or stdout.
TODO: Do we want to support customizing return values the same way as SSHLibrary.Execute_Command does?</doc>
<status status="PASS" start="2026-04-19T03:32:44.206872" elapsed="0.022889"/>
</kw>
<msg time="2026-04-19T03:32:44.230065" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:32:44.230179" level="INFO">${result} = renamed '/tmp/log' -&gt; '/tmp/karaf-0.24.0-SNAPSHOT/data/log'</msg>
<var>${status}</var>
<var>${result}</var>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:32:44.205217" elapsed="0.025022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:44.230491" elapsed="0.000466"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status}&quot; == &quot;PASS&quot;">
<return>
<value>${result}</value>
<status status="PASS" start="2026-04-19T03:32:44.231336" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:32:44.231107" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.231087" elapsed="0.000435"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>${result}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:44.231706" elapsed="0.000057"/>
</kw>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open connection to given IP address, run keyword, close connection, return result.
This is unsafe in the sense that previously active session will be switched out off, but safe in the sense only the temporary connection is closed.</doc>
<status status="PASS" start="2026-04-19T03:32:43.876502" elapsed="0.355464"/>
</kw>
<msg time="2026-04-19T03:32:44.232089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Unsafely_Keyword_Over_Temporary_Odl_Session</arg>
<arg>${member_ip}</arg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.875678" elapsed="0.356464"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Obtain Ip address, open session, call SSHKeywords.Execute_Command_Passes, close session and return output. This affects which SSH session is active.</doc>
<status status="PASS" start="2026-04-19T03:32:43.873803" elapsed="0.358428"/>
</kw>
<msg time="2026-04-19T03:32:44.232274" 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-19T03:32:43.873316" elapsed="0.359003"/>
</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-19T03:32:44.235373" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:32:44.235861" elapsed="0.000160"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:44.236197" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:44.232619" elapsed="0.003728"/>
</kw>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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-19T03:32:43.872202" elapsed="0.364203"/>
</kw>
<msg time="2026-04-19T03:32:44.236462" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHKeywords.Run_Keyword_Preserve_Connection</arg>
<arg>Check_Unsafely_Bash_Command_On_Member</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:43.871738" elapsed="0.364773"/>
</kw>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<arg>return_success_only=${return_success_only}</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="PASS" start="2026-04-19T03:32:43.871008" elapsed="0.365587"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:32:43.870838" elapsed="0.365805"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:43.139851" elapsed="1.096826"/>
</for>
<arg>mkdir -p '${karaf_home}/data' &amp;&amp; rm -vrf '${karaf_home}/log' &amp;&amp; mv -vf '${tmp_dir}/log' '${karaf_home}/data/'</arg>
<arg>${member_index_list}</arg>
<doc>Cycle through indices (or all), run bash command on each, using temporary SSH session and restoring the previously active one.</doc>
<status status="PASS" start="2026-04-19T03:32:43.137424" elapsed="1.099313"/>
</kw>
<status status="PASS" start="2026-04-19T03:32:43.137052" elapsed="1.099723"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:43.137019" elapsed="1.099782"/>
</if>
<arg>tmp_dir=/tmp</arg>
<doc>Clear @{directory_list} or ['tmp/', 'data/', 'cache/', 'snapshots/', 'journal/', 'segmented-journal/', 'etc/opendaylight/current/', 'etc/host.key'] for members in given list or all. Return None.
If ${tmp_dir} is nonempty, use that location to preserve data/log/.
This is intended to return Karaf (offline) to the state it was upon the first boot.</doc>
<status status="PASS" start="2026-04-19T03:32:39.475091" elapsed="4.761760"/>
</kw>
<doc>Comment out the flag usage in config file. Also clean most data except data/log/.</doc>
<tag>critical</tag>
<status status="PASS" start="2026-04-19T03:32:34.223150" elapsed="10.013822"/>
</test>
<test id="s1-s21-t3" name="Start_All_And_Sync" line="40">
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.250347" level="INFO">${base_command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${base_command}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/bin/start</arg>
<arg>${NODE_START_COMMAND}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:44.249948" elapsed="0.000427"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.250901" level="INFO">${command} = /tmp/karaf-0.24.0-SNAPSHOT/bin/start</msg>
<var>${command}</var>
<arg>"""${export_java_home}""" != ""</arg>
<arg>export JAVA_HOME="${export_java_home}"; ${base_command}</arg>
<arg>${base_command}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:44.250543" elapsed="0.000384"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-19T03:32:44.251392" level="INFO">${epoch} = 1776569564.251295</msg>
<var>${epoch}</var>
<arg>time_zone=UTC</arg>
<arg>result_format=epoch</arg>
<arg>exclude_millis=False</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-04-19T03:32:44.251105" elapsed="0.000314"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.252002" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log</msg>
<var>${gc_filepath}</var>
<arg>"""${karaf_home}""" != ""</arg>
<arg>${karaf_home}/data/log/gc_${epoch}.log</arg>
<arg>${GC_LOG_PATH}/gc_${epoch}.log</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:44.251584" elapsed="0.000459"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.252581" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log</msg>
<var>${gc_options}</var>
<arg>"docker" not in """${node_start_command}"""</arg>
<arg>-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:${gc_filepath}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:32:44.252212" elapsed="0.000396"/>
</kw>
<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-19T03:32:44.254217" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:44.253821" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.254711" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:44.254405" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:44.254783" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:44.254938" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:44.253413" elapsed="0.001550"/>
</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-19T03:32:44.256052" level="INFO">${member_ip} = 10.30.171.9</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-19T03:32:44.255740" elapsed="0.000339"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.257079" 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-19T03:32:44.257184" 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-19T03:32:44.256695" elapsed="0.000516"/>
</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-19T03:32:44.259884" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:44.259588" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.259568" elapsed="0.000398"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.260263" 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-19T03:32:44.260364" 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-19T03:32:44.260133" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.261008" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:44.260542" elapsed="0.000532"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.261643" level="INFO">${conn_id} = 538</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:44.261232" elapsed="0.000437"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.262928" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:44.263118" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:44.262419" elapsed="0.000726"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:44.263333" elapsed="0.000746"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.266218" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:44.592620" 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 Sun Apr 19 03:32:34 UTC 2026

  System load:  0.0                Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:32:44.265641" elapsed="0.327436"/>
</kw>
<msg time="2026-04-19T03:32:44.593277" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:44.264307" elapsed="0.329208"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:44.261971" elapsed="0.331878"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.594586" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log'.</msg>
<msg time="2026-04-19T03:32:44.620635" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:44.620939" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:44.621107" 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-19T03:32:44.594225" elapsed="0.026950"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:44.621559" elapsed="0.000521"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.623234" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:44.622509" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:44.623802" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:44.623506" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.623455" elapsed="0.000541"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:44.624522" elapsed="0.000067"/>
</return>
<status status="PASS" start="2026-04-19T03:32:44.624267" elapsed="0.000397"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.624220" elapsed="0.000497"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:44.624792" 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-19T03:32:44.640734" elapsed="0.000861"/>
</kw>
<kw name="Open 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-19T03:32:44.641783" elapsed="0.000179"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:44.642172" 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-19T03:32:44.625598" elapsed="0.016737"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:44.259039" elapsed="0.383391"/>
</kw>
<msg time="2026-04-19T03:32:44.642489" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:44.258437" elapsed="0.384111"/>
</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-19T03:32:44.257883" elapsed="0.384747"/>
</kw>
<msg time="2026-04-19T03:32:44.642672" 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-19T03:32:44.257371" elapsed="0.385348"/>
</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-19T03:32:44.646252" 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-19T03:32:44.646756" elapsed="0.000151"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:44.647074" elapsed="0.000102"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:44.643043" elapsed="0.004186"/>
</kw>
<msg time="2026-04-19T03:32:44.647324" 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-19T03:32:44.256294" elapsed="0.391054"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.647815" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:44.647558" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:44.647903" elapsed="0.000032"/>
</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-19T03:32:44.255340" elapsed="0.392765"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:32:44.255166" elapsed="0.392988"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:44.649220" level="INFO">${member_ip} = 10.30.171.128</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-19T03:32:44.648886" elapsed="0.000360"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.650145" 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-19T03:32:44.650317" 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-19T03:32:44.649978" elapsed="0.000367"/>
</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-19T03:32:44.653101" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:44.652779" elapsed="0.000382"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:44.652758" elapsed="0.000429"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.653474" 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-19T03:32:44.653579" 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-19T03:32:44.653340" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.654263" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:44.653762" elapsed="0.000550"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.655110" level="INFO">${conn_id} = 541</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:44.654473" elapsed="0.000665"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:44.656375" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:44.656502" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:44.655799" elapsed="0.000729"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:44.656717" elapsed="0.000762"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.659606" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:44.978568" 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 Sun Apr 19 03:32:35 UTC 2026

  System load:  0.0                Processes:             118
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 2%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:32:44.659045" elapsed="0.319814"/>
</kw>
<msg time="2026-04-19T03:32:44.979004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:44.657712" elapsed="0.321493"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:44.655360" elapsed="0.324025"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:44.979893" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log'.</msg>
<msg time="2026-04-19T03:32:45.002569" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:45.002831" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:45.002931" 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-19T03:32:44.979631" elapsed="0.023353"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:45.003436" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.005154" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:45.004411" 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-19T03:32:45.005757" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:45.005446" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:45.005392" 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-19T03:32:45.006383" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:32:45.006120" elapsed="0.000414"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:45.006021" elapsed="0.000571"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:45.006785" 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-19T03:32:45.025711" elapsed="0.000557"/>
</kw>
<kw name="Open 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-19T03:32:45.026439" elapsed="0.000167"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:45.026757" elapsed="0.000102"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:45.007587" elapsed="0.019325"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:44.652228" elapsed="0.374781"/>
</kw>
<msg time="2026-04-19T03:32:45.027299" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:44.651587" elapsed="0.375772"/>
</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-19T03:32:44.651042" elapsed="0.376400"/>
</kw>
<msg time="2026-04-19T03:32:45.027485" 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-19T03:32:44.650505" elapsed="0.377026"/>
</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-19T03:32:45.030927" elapsed="0.000532"/>
</kw>
<kw name="Open 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-19T03:32:45.031627" elapsed="0.000147"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:45.031923" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:45.027828" elapsed="0.004261"/>
</kw>
<msg time="2026-04-19T03:32:45.032204" 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-19T03:32:44.649466" elapsed="0.382770"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.032698" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:45.032446" elapsed="0.000295"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:45.032785" 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-19T03:32:44.648449" elapsed="0.384466"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:32:44.648259" elapsed="0.384694"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:32:45.033931" level="INFO">${member_ip} = 10.30.171.206</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-19T03:32:45.033657" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:45.034752" 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-19T03:32:45.034853" 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-19T03:32:45.034612" elapsed="0.000267"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.037536" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:45.037264" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:45.037244" elapsed="0.000372"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:45.037936" 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-19T03:32:45.038053" 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-19T03:32:45.037767" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.038698" level="INFO">Attempting to execute command "/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:45.038234" elapsed="0.000562"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:32:45.039394" level="INFO">${conn_id} = 544</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:32:45.038959" elapsed="0.000462"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.040631" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:32:45.040756" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:32:45.040095" elapsed="0.000687"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:45.040973" elapsed="0.000700"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:32:45.043743" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:32:45.365430" 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 Sun Apr 19 03:32:42 UTC 2026

  System load:  0.03               Processes:             124
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:32:45.043183" elapsed="0.322460"/>
</kw>
<msg time="2026-04-19T03:32:45.365774" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:45.041903" elapsed="0.324043"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:32:45.039641" elapsed="0.326499"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:32:45.366641" level="INFO">Executing command '/tmp/karaf-0.24.0-SNAPSHOT/bin/start -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1776569564.251295.log'.</msg>
<msg time="2026-04-19T03:32:45.389326" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:32:45.389569" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:32:45.389667" 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-19T03:32:45.366384" elapsed="0.023334"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:45.390121" elapsed="0.000453"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.391708" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:45.391002" 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-19T03:32:45.392427" elapsed="0.000064"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:45.391976" elapsed="0.000598"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:45.391926" elapsed="0.000701"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:32:45.393023" elapsed="0.000098"/>
</return>
<status status="PASS" start="2026-04-19T03:32:45.392754" elapsed="0.000444"/>
</branch>
<status status="PASS" start="2026-04-19T03:32:45.392718" elapsed="0.000533"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:32:45.393326" 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-19T03:32:45.408629" elapsed="0.000535"/>
</kw>
<kw name="Open 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-19T03:32:45.409333" elapsed="0.000161"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:45.409643" 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-19T03:32:45.394092" elapsed="0.015705"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:32:45.036706" elapsed="0.373185"/>
</kw>
<msg time="2026-04-19T03:32:45.409959" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:32:45.036102" elapsed="0.373914"/>
</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-19T03:32:45.035557" elapsed="0.374737"/>
</kw>
<msg time="2026-04-19T03:32:45.410403" 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-19T03:32:45.035053" elapsed="0.375401"/>
</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-19T03:32:45.413470" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:32:45.413980" elapsed="0.000458"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:32:45.414591" elapsed="0.000099"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:32:45.410758" elapsed="0.003984"/>
</kw>
<msg time="2026-04-19T03:32:45.414835" 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-19T03:32:45.034199" elapsed="0.380661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.415316" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:45.415064" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:32:45.415402" 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-19T03:32:45.033249" elapsed="0.382281"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:32:45.033063" elapsed="0.382505"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:32:44.255017" elapsed="1.160586"/>
</for>
<arg>command=${command} ${gc_options}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:32:44.252870" elapsed="1.162791"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.427639" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:45.427255" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.428148" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:45.427826" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:45.428219" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:32:45.428393" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:45.426859" elapsed="0.001562"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.430665" 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-19T03:32:45.430356" elapsed="0.000335"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:32:45.430738" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:32:45.430889" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:45.429824" elapsed="0.001090"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.438553" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:45.438300" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:45.438995" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:45.438753" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:32:45.444839" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:32:45.441344" elapsed="0.005523">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:32:45.439122" elapsed="0.007838">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.447188" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:45.446995" elapsed="0.000315"/>
</branch>
<status status="FAIL" start="2026-04-19T03:32:45.439103" elapsed="0.008232">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.447870" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:32:45.448006" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:45.447969" elapsed="0.000098"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:45.447951" elapsed="0.000138"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.448236" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:32:45.448306" elapsed="0.000015"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:32:45.433663" elapsed="0.014772">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:32:45.448512" elapsed="0.000016"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:32:45.431146" elapsed="0.017470">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.448848" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:32:45.448990" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:45.448952" elapsed="0.000097"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:45.448934" elapsed="0.000141"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.449275" elapsed="0.000024"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.449495" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:32:45.449562" elapsed="0.000014"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:32:45.429175" elapsed="0.020490">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:32:45.449785" elapsed="0.000017"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:32:45.449745" elapsed="0.000082"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:45.449728" elapsed="0.000119"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.449991" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:32:45.428660" elapsed="0.021418">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:32:45.428475" elapsed="0.021666">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:32:45.426462" elapsed="0.023778">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:32:45.426148" elapsed="0.024153">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T03:32:45.426128" elapsed="0.024241">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:32:45.450647" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:45.450442" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:45.450424" elapsed="0.000300"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:32:45.451011" elapsed="0.000070"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:45.450787" elapsed="0.000331"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:45.450765" elapsed="0.000377"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:32:45.425713" elapsed="0.025513">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:32:55.470148" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:32:55.469594" elapsed="0.000588"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:32:55.470686" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:32:55.470365" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:32:55.470764" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:32:55.470933" level="INFO">${index_list} = [1, 2, 3]</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-19T03:32:55.469169" elapsed="0.001790"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:32:55.472490" 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-19T03:32:55.472191" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:32:55.472564" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:32:55.472711" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:32:55.471828" elapsed="0.000908"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:55.480546" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:55.480276" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:32:55.481012" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:32:55.480761" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:32:55.486997" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:32:55.483312" elapsed="0.005458">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:32:55.481144" elapsed="0.007717">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.489076" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:55.488895" elapsed="0.000249"/>
</branch>
<status status="FAIL" start="2026-04-19T03:32:55.481126" elapsed="0.008042">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.489812" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:32:55.489959" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:55.489919" elapsed="0.000083"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:55.489898" elapsed="0.000143"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.490195" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:32:55.490268" elapsed="0.000014"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:32:55.475572" elapsed="0.014806">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:32:55.490453" elapsed="0.000015"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:32:55.472948" elapsed="0.017605">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.490786" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:32:55.490921" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:32:55.490885" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:55.490868" elapsed="0.000118"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.491202" elapsed="0.000025"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.491426" elapsed="0.000024"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:32:55.491494" elapsed="0.000015"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:32:55.471450" elapsed="0.020146">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:32:55.491714" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:32:55.491677" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:55.491660" elapsed="0.000125"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.491969" elapsed="0.000026"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:32:55.471222" elapsed="0.020868">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:32:55.471018" elapsed="0.021136">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:32:55.468730" elapsed="0.023523">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-19T03:32:55.468379" elapsed="0.023936">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-19T03:32:55.468352" elapsed="0.023996">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:32:55.492653" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:55.492417" elapsed="0.000294"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:55.492400" elapsed="0.000342"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:32:55.493059" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:32:55.492822" elapsed="0.000298"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:32:55.492798" elapsed="0.000345"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:32:55.467831" elapsed="0.025396">ConnectionError: HTTPConnectionPool(host='10.30.171.9', port=8181): Max retries exceeded with url: /jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore (Caused by NewConnectionError("HTTPConnection(host='10.30.171.9', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:33:05.511613" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:33:05.511155" elapsed="0.000491"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:33:05.512149" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:33:05.511820" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:33:05.512227" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:33:05.512393" level="INFO">${index_list} = [1, 2, 3]</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-19T03:33:05.510652" elapsed="0.001768"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:05.513947" 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-19T03:33:05.513639" elapsed="0.000336"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:33:05.514022" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T03:33:05.514186" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:33:05.513293" elapsed="0.000919"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:05.522827" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:05.522472" elapsed="0.000421"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:05.523525" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:05.523182" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:33:05.649801" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:33:05.649970" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '477'} 
 body=&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/&gt;
&lt;title&gt;Error 404 Not Found&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;h2&gt;HTTP ERROR 404 Not Found&lt;/h2&gt;
&lt;table&gt;
&lt;tr&gt;&lt;th&gt;URI:&lt;/th&gt;&lt;td&gt;/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;STATUS:&lt;/th&gt;&lt;td&gt;404&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;MESSAGE:&lt;/th&gt;&lt;td&gt;Not Found&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;th&gt;SERVLET:&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-04-19T03:33:05.650338" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:33:05.525814" elapsed="0.125548">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:33:05.523680" elapsed="0.127882">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.651991" elapsed="0.000088"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:05.651639" elapsed="0.000642"/>
</branch>
<status status="FAIL" start="2026-04-19T03:33:05.523655" elapsed="0.128682">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.653529" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:33:05.653830" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:05.653749" elapsed="0.000171"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:33:05.653710" elapsed="0.000258"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.654363" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:33:05.654525" elapsed="0.000033"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:33:05.516953" elapsed="0.137813">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:33:05.654922" elapsed="0.000034"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:33:05.514427" elapsed="0.140785">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.655701" elapsed="0.000054"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:33:05.655981" elapsed="0.000028"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:05.655904" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:33:05.655866" elapsed="0.000286"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.656589" elapsed="0.000052"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.657100" elapsed="0.000054"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:33:05.657255" elapsed="0.000032"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:33:05.512889" elapsed="0.144626">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:33:05.657774" elapsed="0.000038"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:33:05.657693" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:33:05.657656" elapsed="0.000256"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.658258" elapsed="0.000049"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:33:05.512660" elapsed="0.145756">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:33:05.512476" elapsed="0.146065">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:33:05.510224" elapsed="0.148521">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-19T03:33:05.509710" elapsed="0.149163">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-19T03:33:05.509685" elapsed="0.149254">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:33:05.659629" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:05.659187" elapsed="0.000558"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:33:05.659146" elapsed="0.000625"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:33:05.660046" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:05.659822" elapsed="0.000313"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:33:05.659808" elapsed="0.000353"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:33:05.509190" elapsed="0.151053">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.677155" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:33:15.676686" elapsed="0.000501"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.677671" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:33:15.677359" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:33:15.677748" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:33:15.677913" level="INFO">${index_list} = [1, 2, 3]</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-19T03:33:15.676280" elapsed="0.001658"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.679464" 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-19T03:33:15.679164" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:33:15.679538" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:33:15.679710" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:33:15.678802" elapsed="0.000936"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.687500" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:15.687240" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.687945" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:15.687701" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:33:15.953569" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:33:15.953780" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:33:15 GMT', 'Expires': 'Sun, 19 Apr 2026 02:33:15 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569595,"status":200} 
 </msg>
<msg time="2026-04-19T03:33:15.954126" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:33:15.690369" elapsed="0.263824"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:15.688071" elapsed="0.266239"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:15.954795" elapsed="0.000058"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:15.954380" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.688051" elapsed="0.266946"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.963107" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569595,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:15.957944" elapsed="0.005263"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:15.957363" elapsed="0.005954"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.957315" elapsed="0.006029"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.966382" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:15.963644" elapsed="0.002910"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:15.963400" elapsed="0.003264"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.963384" elapsed="0.003310"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.967461" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:15.966879" elapsed="0.000611"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:15.967824" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:15.967562" elapsed="0.000437"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.968859" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:15.968213" elapsed="0.000731"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:15.968025" elapsed="0.001098"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.967543" elapsed="0.001622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.969921" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:15.969372" elapsed="0.000577"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:15.970305" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:15.970020" elapsed="0.000456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.971260" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:15.970666" elapsed="0.000673"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:15.970503" elapsed="0.000982"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.970002" elapsed="0.001507"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:33:15.971667" elapsed="0.000737"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:33:15.973457" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:15.972576" elapsed="0.000909"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:33:15.973646" elapsed="0.003271"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:33:15.956233" elapsed="0.020751"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:33:15.977190" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:15.977073" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.977040" elapsed="0.000219"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:33:15.980254" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569595,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:33:15.977441" elapsed="0.002843"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:33:15.980336" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:33:15.980500" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569595,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:33:15.682471" elapsed="0.298056"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:33:15.980585" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:33:15.980732" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569595,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:33:15.679951" elapsed="0.300807"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.981625" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569595,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:15.981346" elapsed="0.000329"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.982668" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569595, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:15.982263" elapsed="0.000469"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:33:15.982785" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:33:15.982950" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569595, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:33:15.981894" elapsed="0.001084"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:15.983401" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:15.983153" elapsed="0.000277"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:15.983805" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:15.983590" elapsed="0.000241"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:33:15.983880" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:33:15.984032" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:33:15.980974" elapsed="0.003140"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:33:15.984296" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:15.984186" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.984168" elapsed="0.000194"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.991933" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:15.991684" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:15.992397" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:15.992151" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:33:16.004672" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:33:16.004799" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:33:15 GMT', 'Expires': 'Sun, 19 Apr 2026 02:33:15 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569595,"status":200} 
 </msg>
<msg time="2026-04-19T03:33:16.004981" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:33:15.996669" elapsed="0.008363"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:15.992507" elapsed="0.012614"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.005375" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.005159" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:15.992489" elapsed="0.013006"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.011533" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569595,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.007433" elapsed="0.004238"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.007084" elapsed="0.004758"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.007035" elapsed="0.004847"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.016277" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.012334" elapsed="0.004075"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.011964" elapsed="0.004597"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.011940" elapsed="0.004659"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.017637" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.016851" elapsed="0.000824"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.018308" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.017846" elapsed="0.000712"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.019562" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:16.018844" elapsed="0.000801"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.018596" elapsed="0.001196"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.017818" elapsed="0.001999"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.020521" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.019980" elapsed="0.000568"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.020895" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.020619" elapsed="0.000483"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.021863" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:16.021292" elapsed="0.000651"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.021129" elapsed="0.001017"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.020601" elapsed="0.001570"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:33:16.022331" elapsed="0.000656"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:33:16.023970" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.023178" elapsed="0.000819"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.024170" elapsed="0.003148"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:33:16.006413" elapsed="0.020972"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:33:16.027567" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:16.027455" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.027436" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:33:16.030646" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:33:16.027797" elapsed="0.002878"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:33:16.030727" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:33:16.030889" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:33:15.987215" elapsed="0.043700"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:33:16.030972" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:33:16.031156" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:33:15.984588" elapsed="0.046596"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.031999" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569595,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.031748" elapsed="0.000315"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.033005" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569595, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.032612" elapsed="0.000425"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:33:16.033099" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:33:16.033298" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569595, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:33:16.032277" elapsed="0.001047"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:16.033701" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.033478" elapsed="0.000249"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:16.034169" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.033881" elapsed="0.000313"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:33:16.034243" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:33:16.034436" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:33:16.031399" elapsed="0.003062"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:33:16.034505" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:33:16.034677" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:33:15.678426" elapsed="0.356276"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:33:16.034899" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-19T03:33:16.034770" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.034752" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.035153" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:33:15.678197" elapsed="0.357012"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.036804" level="INFO">${session} = ClusterManagement__session_2</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-19T03:33:16.036506" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:33:16.036876" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:33:16.037022" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:33:16.036158" elapsed="0.000910"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.044609" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.044355" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.045083" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.044809" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:33:16.383333" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:33:16.383539" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:33:16 GMT', 'Expires': 'Sun, 19 Apr 2026 02:33:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569596,"status":200} 
 </msg>
<msg time="2026-04-19T03:33:16.383835" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:33:16.047385" elapsed="0.336513"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.045201" elapsed="0.338811"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.384582" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.384128" elapsed="0.000604"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.045182" elapsed="0.339600"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.393754" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569596,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.387644" elapsed="0.006361"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.387071" elapsed="0.007072"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.386995" elapsed="0.007177"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.397409" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.394485" elapsed="0.003019"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.394232" elapsed="0.003384"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.394214" elapsed="0.003430"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.398407" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.397826" elapsed="0.000609"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.398773" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.398507" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.399860" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:16.399273" elapsed="0.000670"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.398981" elapsed="0.001169"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.398488" elapsed="0.001689"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.400921" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.400345" elapsed="0.000603"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.401445" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.401019" elapsed="0.000671"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.402780" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:16.401954" elapsed="0.000937"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.401727" elapsed="0.001398"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.401000" elapsed="0.002160"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:33:16.403381" elapsed="0.000961"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:33:16.405895" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.404598" elapsed="0.001335"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.406192" elapsed="0.004051"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:33:16.385995" elapsed="0.024315"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:33:16.410495" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:16.410381" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.410362" elapsed="0.000203"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:33:16.413593" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569596,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:33:16.410709" elapsed="0.002913"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:33:16.413674" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:33:16.413838" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569596,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:33:16.039868" elapsed="0.373997"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:33:16.413921" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:33:16.414084" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569596,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:33:16.037292" elapsed="0.376819"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.414939" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569596,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.414688" elapsed="0.000344"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.416009" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569596, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.415606" elapsed="0.000435"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:33:16.416106" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:33:16.416270" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569596, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:33:16.415265" elapsed="0.001032"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:16.416680" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.416454" elapsed="0.000255"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:16.417168" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.416916" elapsed="0.000278"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:33:16.417244" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:33:16.417394" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:33:16.414331" elapsed="0.003088"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:33:16.417597" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:16.417488" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.417470" elapsed="0.000192"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.425402" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.425150" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.425843" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.425602" elapsed="0.000284"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:33:16.435253" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:33:16.435360" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:33:16 GMT', 'Expires': 'Sun, 19 Apr 2026 02:33:16 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569596,"status":200} 
 </msg>
<msg time="2026-04-19T03:33:16.435516" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:33:16.428168" elapsed="0.007385"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.425951" elapsed="0.009661"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.435861" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.435648" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.425933" elapsed="0.010046"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.441530" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569596,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.437687" elapsed="0.003979"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.437345" elapsed="0.004485"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.437319" elapsed="0.004552"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.446203" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.442326" elapsed="0.004004"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.441951" elapsed="0.004529"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.441928" elapsed="0.004634"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.447595" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.446821" elapsed="0.000813"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.448124" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.447735" elapsed="0.000631"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.449522" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:16.448633" elapsed="0.001010"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.448404" elapsed="0.001445"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.447709" elapsed="0.002175"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.450716" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.450188" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.451107" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:33:16.450823" elapsed="0.000458"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.452036" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:33:16.451471" elapsed="0.000657"/>
</kw>
<status status="PASS" start="2026-04-19T03:33:16.451307" elapsed="0.000966"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.450802" elapsed="0.001496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:33:16.452452" elapsed="0.000674"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:33:16.454137" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.453299" elapsed="0.000865"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.454320" elapsed="0.003361"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:33:16.436698" elapsed="0.021077"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:33:16.457986" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:33:16.457873" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.457830" elapsed="0.000300"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:33:16.460995" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:33:16.458279" elapsed="0.002746"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:33:16.461095" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:33:16.461255" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:33:16.420549" elapsed="0.040732"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:33:16.461339" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:33:16.461483" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:33:16.417865" elapsed="0.043644"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.462466" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569596,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.462212" elapsed="0.000302"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.463497" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569596, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:33:16.463080" elapsed="0.000481"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:33:16.463613" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:33:16.463785" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569596, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:33:16.462723" elapsed="0.001089"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:16.464211" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.463968" elapsed="0.000270"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:33:16.464606" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:33:16.464394" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:33:16.464687" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:33:16.464837" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:33:16.461734" elapsed="0.003127"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:33:16.464904" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:33:16.465064" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:33:16.035576" elapsed="0.429513"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:33:16.465269" elapsed="0.000029"/>
</continue>
<status status="PASS" start="2026-04-19T03:33:16.465159" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:33:16.465142" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:33:16.465499" elapsed="0.000020"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:33:16.035352" elapsed="0.430202"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.467026" level="INFO">${session} = ClusterManagement__session_3</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-19T03:33:16.466723" elapsed="0.000359"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:33:16.467130" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:33:16.467279" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:33:16.466380" elapsed="0.000923"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.475001" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.474748" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:33:16.475462" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:33:16.475219" elapsed="0.000286"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:35:21.558733" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:33:16.477718" elapsed="125.084917">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:33:16.475570" elapsed="125.087274">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.563389" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:21.562927" elapsed="0.000614"/>
</branch>
<status status="FAIL" start="2026-04-19T03:33:16.475552" elapsed="125.088047">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.565016" elapsed="0.000111"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:35:21.565394" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:21.565306" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:35:21.565262" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.565737" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:35:21.565834" elapsed="0.000021"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:33:16.470235" elapsed="125.095758">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:35:21.566209" elapsed="0.000023"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:33:16.467513" elapsed="125.098838">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.566666" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:35:21.566848" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:21.566797" elapsed="0.000126"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:35:21.566773" elapsed="0.000187"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.567277" elapsed="0.000036"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.567590" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:35:21.567684" elapsed="0.000022"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:33:16.465958" elapsed="125.101868">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:35:21.567992" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:35:21.567939" elapsed="0.000129"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:35:21.567915" elapsed="0.000183"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.568302" elapsed="0.000030"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:33:16.465731" elapsed="125.102689">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:33:15.677994" elapsed="125.890509">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:33:15.675823" elapsed="125.892815">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:33:15.675490" elapsed="125.893229">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:33:15.675466" elapsed="125.893296">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:35:21.569210" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:21.568856" elapsed="0.000438"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:35:21.568833" elapsed="0.000494"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:35:21.569701" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:21.569403" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:35:21.569382" elapsed="0.000431"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:33:15.674971" elapsed="125.894954">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.587119" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:35:31.586632" elapsed="0.000531"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.587676" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:35:31.587358" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:35:31.587752" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:35:31.587996" level="INFO">${index_list} = [1, 2, 3]</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-19T03:35:31.586210" elapsed="0.001880"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.591200" 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-19T03:35:31.590880" elapsed="0.000347"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:35:31.591353" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:35:31.591506" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:35:31.590020" elapsed="0.001512"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.599233" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.598957" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.599686" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.599438" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:35:31.610590" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:35:31.610670" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:35:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:35:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569731,"status":200} 
 </msg>
<msg time="2026-04-19T03:35:31.610783" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:35:31.601978" elapsed="0.008832"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.599799" elapsed="0.011064"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.611306" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.610927" elapsed="0.000528"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.599780" elapsed="0.011724"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.619515" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569731,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.614272" elapsed="0.005338"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.613661" elapsed="0.006056"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.613617" elapsed="0.006127"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.622746" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.620058" elapsed="0.002780"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.619801" elapsed="0.003143"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.619784" elapsed="0.003187"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.623754" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.623205" elapsed="0.000577"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.624131" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.623852" elapsed="0.000456"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.625094" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.624500" elapsed="0.000675"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.624333" elapsed="0.000992"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.623833" elapsed="0.001517"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.626044" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.625514" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.626431" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.626143" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.627392" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.626797" elapsed="0.000675"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.626634" elapsed="0.001032"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.626125" elapsed="0.001567"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:35:31.627852" elapsed="0.000682"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:35:31.629544" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.628703" elapsed="0.000869"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.629731" elapsed="0.003173"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:35:31.612657" elapsed="0.020314"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:35:31.633170" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:31.633057" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.633023" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:35:31.636262" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:35:31.633386" elapsed="0.002905"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:35:31.636346" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:35:31.636505" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:35:31.594312" elapsed="0.042220"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:35:31.636590" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:35:31.636739" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:35:31.591745" elapsed="0.045021"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.637602" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.637348" elapsed="0.000303"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.638628" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.638217" elapsed="0.000440"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:35:31.638708" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:35:31.638868" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:35:31.637859" elapsed="0.001035"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.639364" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.639136" elapsed="0.000256"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.639929" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.639548" elapsed="0.000407"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:35:31.640005" elapsed="0.000043"/>
</return>
<msg time="2026-04-19T03:35:31.640173" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:35:31.636977" elapsed="0.003221"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:35:31.640376" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:31.640267" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.640248" elapsed="0.000196"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.648004" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.647754" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.648474" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.648222" elapsed="0.000297"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:35:31.656589" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:35:31.656680" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:35:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:35:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569731,"status":200} 
 </msg>
<msg time="2026-04-19T03:35:31.656808" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:35:31.650747" elapsed="0.006088"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.648586" elapsed="0.008297"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.657084" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.656910" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.648567" elapsed="0.008605"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.661991" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569731,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.658377" elapsed="0.003771"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.658103" elapsed="0.004222"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.658083" elapsed="0.004284"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.666704" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.662791" elapsed="0.004044"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.662448" elapsed="0.004565"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.662424" elapsed="0.004670"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.667791" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.667264" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.668166" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.667890" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.669165" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.668532" elapsed="0.000715"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.668368" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.667871" elapsed="0.001548"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.670123" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.669582" elapsed="0.000570"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.670506" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.670222" elapsed="0.000461"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.671492" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.670875" elapsed="0.000699"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.670710" elapsed="0.001028"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.670204" elapsed="0.001560"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:35:31.671923" elapsed="0.000816"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:35:31.673792" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.672968" elapsed="0.000852"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.673980" elapsed="0.003235"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:35:31.657661" elapsed="0.019622"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:35:31.677467" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:31.677354" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.677334" elapsed="0.000202"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:35:31.680526" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:35:31.677683" elapsed="0.002873"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:35:31.680611" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:35:31.680774" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:35:31.643250" elapsed="0.037552"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:35:31.680862" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:35:31.681014" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:35:31.640646" elapsed="0.040411"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.681904" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.681643" elapsed="0.000312"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.682963" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.682559" elapsed="0.000434"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:35:31.683134" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:35:31.683300" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:35:31.682182" elapsed="0.001145"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.683711" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.683485" elapsed="0.000254"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.684125" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.683895" elapsed="0.000257"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:35:31.684200" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:35:31.684352" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:35:31.681282" elapsed="0.003096"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:35:31.684423" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:35:31.684573" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:35:31.589171" elapsed="0.095427"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:35:31.684779" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T03:35:31.684668" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.684651" elapsed="0.000209"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.685010" elapsed="0.000035"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:35:31.588628" elapsed="0.096490"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.686701" level="INFO">${session} = ClusterManagement__session_2</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-19T03:35:31.686335" elapsed="0.000398"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:35:31.686790" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:35:31.686967" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:35:31.685893" elapsed="0.001108"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.697656" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.697382" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.698131" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.697864" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:35:31.712234" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:35:31.712345" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:35:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:35:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569731,"status":200} 
 </msg>
<msg time="2026-04-19T03:35:31.712506" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:35:31.700578" elapsed="0.011966"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.698245" elapsed="0.014361"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.712860" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.712643" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.698225" elapsed="0.014754"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.720576" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569731,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.714713" elapsed="0.006077"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.714369" elapsed="0.006655"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.714341" elapsed="0.006801"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.725125" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.721811" elapsed="0.003406"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.721270" elapsed="0.004053"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.721232" elapsed="0.004117"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.726077" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.725525" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.726465" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.726177" elapsed="0.000465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.727433" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.726837" elapsed="0.000679"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.726668" elapsed="0.000995"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.726158" elapsed="0.001529"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.728392" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.727852" elapsed="0.000569"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.728753" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.728492" elapsed="0.000488"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.729786" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.729209" elapsed="0.000658"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.729009" elapsed="0.001006"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.728473" elapsed="0.001583"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:35:31.730260" elapsed="0.000726"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:35:31.732011" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.731219" elapsed="0.000835"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.732214" elapsed="0.003199"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:35:31.713715" elapsed="0.021765"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:35:31.735664" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:31.735551" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.735532" elapsed="0.000199"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:35:31.738658" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:35:31.735877" elapsed="0.002811"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:35:31.738740" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:35:31.738902" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:35:31.690968" elapsed="0.047960"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:35:31.738985" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:35:31.739176" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:35:31.687357" elapsed="0.051846"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.740022" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.739772" elapsed="0.000316"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.741048" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.740636" elapsed="0.000443"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:35:31.741129" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:35:31.741289" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:35:31.740297" elapsed="0.001019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.741694" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.741471" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.742100" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.741875" elapsed="0.000251"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:35:31.742172" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:35:31.742343" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:35:31.739419" elapsed="0.002950"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:35:31.742597" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:31.742485" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.742466" elapsed="0.000195"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.750212" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.749935" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.750668" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.750425" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:35:31.761191" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:35:31.761274" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:35:31 GMT', 'Expires': 'Sun, 19 Apr 2026 02:35:31 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569731,"status":200} 
 </msg>
<msg time="2026-04-19T03:35:31.761405" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:35:31.754572" elapsed="0.006860"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.750780" elapsed="0.010701"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.761666" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.761510" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.750761" elapsed="0.010992"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.766937" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569731,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.763182" elapsed="0.003914"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.762812" elapsed="0.004433"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.762792" elapsed="0.004492"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.771331" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.767699" elapsed="0.003724"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.767364" elapsed="0.004168"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.767340" elapsed="0.004220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.772302" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.771742" elapsed="0.000588"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.772661" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.772401" elapsed="0.000435"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.773620" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.773049" elapsed="0.000651"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.772863" elapsed="0.000985"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.772383" elapsed="0.001489"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.774582" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.774049" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.774939" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:35:31.774681" elapsed="0.000463"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.775898" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:35:31.775338" elapsed="0.000640"/>
</kw>
<status status="PASS" start="2026-04-19T03:35:31.775171" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.774663" elapsed="0.001559"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:35:31.776389" elapsed="0.000681"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:35:31.778054" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.777239" elapsed="0.000843"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.778241" elapsed="0.003134"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:35:31.762300" elapsed="0.019148"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:35:31.781641" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:35:31.781525" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.781505" elapsed="0.000206"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:35:31.784740" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:35:31.781858" elapsed="0.002912"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:35:31.784823" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:35:31.784990" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:35:31.745464" elapsed="0.039554"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:35:31.785093" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:35:31.785244" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:35:31.742866" elapsed="0.042405"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.786165" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569731,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.785880" elapsed="0.000334"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.787327" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:35:31.786800" elapsed="0.000556"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:35:31.787406" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:35:31.787567" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569731, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:35:31.786450" elapsed="0.001144"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.787973" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.787748" elapsed="0.000252"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:35:31.788388" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:35:31.788176" elapsed="0.000238"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:35:31.788461" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:35:31.788609" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:35:31.785506" elapsed="0.003128"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:35:31.788676" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:35:31.788823" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:35:31.685506" elapsed="0.103342"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:35:31.789170" elapsed="0.000032"/>
</continue>
<status status="PASS" start="2026-04-19T03:35:31.788979" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-04-19T03:35:31.788960" elapsed="0.000297"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:35:31.789408" elapsed="0.000022"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:35:31.685269" elapsed="0.104195"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.791334" level="INFO">${session} = ClusterManagement__session_3</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-19T03:35:31.790945" elapsed="0.000419"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:35:31.791412" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:35:31.791566" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:35:31.790569" elapsed="0.001023"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.799235" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.798944" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:35:31.799732" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:35:31.799479" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:37:36.900756" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:35:31.801977" elapsed="125.102775">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:35:31.799848" elapsed="125.105113">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.905507" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:36.905074" elapsed="0.000583"/>
</branch>
<status status="FAIL" start="2026-04-19T03:35:31.799828" elapsed="125.105883">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.907000" elapsed="0.000106"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:37:36.907374" elapsed="0.000033"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:36.907284" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:37:36.907240" elapsed="0.000278"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.907906" elapsed="0.000051"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:37:36.908105" elapsed="0.000036"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:35:31.794413" elapsed="125.113905">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:37:36.908420" elapsed="0.000023"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:35:31.791810" elapsed="125.116749">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.908875" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:37:36.909079" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:36.909005" elapsed="0.000134"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:37:36.908980" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.909509" elapsed="0.000039"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.909833" elapsed="0.000034"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:37:36.909929" elapsed="0.000023"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:35:31.789854" elapsed="125.120246">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:37:36.910355" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:37:36.910301" elapsed="0.000112"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:37:36.910275" elapsed="0.000169"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.910649" elapsed="0.000029"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:35:31.789619" elapsed="125.121133">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:35:31.588217" elapsed="125.322619">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:35:31.585779" elapsed="125.325199">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:35:31.585435" elapsed="125.325649">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:35:31.585409" elapsed="125.325722">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:37:36.911514" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:36.911229" elapsed="0.000381"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:37:36.911203" elapsed="0.000449"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:37:36.912059" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:36.911731" elapsed="0.000412"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:37:36.911707" elapsed="0.000470"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:35:31.584909" elapsed="125.327404">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Verify_Members_Are_Ready" owner="ClusterManagement">
<if>
<branch type="IF" condition="${verify_cluster_sync}">
<kw name="Check_Cluster_Is_In_Sync" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.933301" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:37:46.932669" elapsed="0.000676"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.934069" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:37:46.933582" elapsed="0.000526"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:37:46.934175" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T03:37:46.934410" level="INFO">${index_list} = [1, 2, 3]</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-19T03:37:46.932101" elapsed="0.002344"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.936585" 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-19T03:37:46.936161" elapsed="0.000463"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:37:46.936691" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T03:37:46.936898" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:37:46.935654" elapsed="0.001279"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.945122" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:46.944845" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.945576" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:46.945325" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:37:46.956530" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:37:46.956701" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:37:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:37:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569866,"status":200} 
 </msg>
<msg time="2026-04-19T03:37:46.957094" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:37:46.947829" elapsed="0.009345"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:46.945688" elapsed="0.011589"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:46.957691" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:46.957338" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.945669" elapsed="0.012261"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.965405" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config","member-1-shard-car-config","member-1-shard-topology-config","member-1-shard-inventory-config","member-1-shard-toaster-config","member-1-shard-people-config","member-1-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569866,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:46.960653" elapsed="0.004893"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:46.960079" elapsed="0.005627"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.960007" elapsed="0.005760"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.970373" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:46.966264" elapsed="0.004244"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:46.965855" elapsed="0.004810"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.965830" elapsed="0.004876"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.971799" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:46.970967" elapsed="0.000872"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:46.972410" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:46.971944" elapsed="0.000723"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.973847" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:46.972947" elapsed="0.001019"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:46.972705" elapsed="0.001501"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.971917" elapsed="0.002326"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.975037" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:46.974484" elapsed="0.000583"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:46.975400" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:46.975138" elapsed="0.000433"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.976353" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:46.975759" elapsed="0.000673"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:46.975597" elapsed="0.000981"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.975120" elapsed="0.001482"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:37:46.976758" elapsed="0.000692"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:37:46.978457" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:46.977625" elapsed="0.000859"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:37:46.978645" elapsed="0.003102"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:37:46.959098" elapsed="0.022716"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:37:46.982000" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:46.981887" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.981867" elapsed="0.000222"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:37:46.984959" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569866,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:37:46.982240" elapsed="0.002748"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:37:46.985169" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:37:46.985333" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569866,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:37:46.940225" elapsed="0.045170"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:37:46.985457" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:37:46.985612" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569866,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:37:46.937252" elapsed="0.048389"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.986537" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569866,
 "value": {
  "LocalShards": [
   "member-1-shard-car-config",
   "member-1-shard-car-people-config",
   "member-1-shard-default-config",
   "member-1-shard-inventory-config",
   "member-1-shard-people-config",
   "member-1-shard-toaster-config",
   "member-1-shard-topology-config"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:46.986272" elapsed="0.000316"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.987582" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569866, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:46.987172" elapsed="0.000438"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:37:46.987662" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:37:46.987823" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569866, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:37:46.986809" elapsed="0.001041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:46.988270" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-config', 'member-1-shard-car-people-config', 'member-1-shard-default-config', 'member-1-shard-inventory-config', 'member-1-shard-people-config', 'member-1-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:46.988009" elapsed="0.000289"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:46.988852" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:46.988459" elapsed="0.000420"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:37:46.988929" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:37:46.989162" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:37:46.985886" elapsed="0.003302"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:37:46.989370" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:46.989258" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.989240" elapsed="0.000196"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.996931" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:46.996679" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:46.997423" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:46.997150" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:37:47.004817" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:37:47.004894" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:37:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:37:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569866,"status":200} 
 </msg>
<msg time="2026-04-19T03:37:47.005006" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:37:46.999717" elapsed="0.005343"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:46.997534" elapsed="0.007571"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.005284" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.005130" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:46.997515" elapsed="0.007892"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.009564" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational","member-1-shard-car-operational","member-1-shard-topology-operational","member-1-shard-inventory-operational","member-1-shard-toaster-operational","member-1-shard-people-operational","member-1-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1776569866,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.006789" elapsed="0.002900"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.006513" elapsed="0.003284"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.006494" elapsed="0.003330"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.013823" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.010144" elapsed="0.003807"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.009881" elapsed="0.004246"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.009864" elapsed="0.004302"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.015149" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.014399" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.015651" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.015287" elapsed="0.000604"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.016996" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:47.016200" elapsed="0.000962"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.015928" elapsed="0.001434"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.015261" elapsed="0.002135"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.018384" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.017641" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.018881" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.018522" elapsed="0.000622"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.020237" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:47.019410" elapsed="0.000937"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.019181" elapsed="0.001368"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.018496" elapsed="0.002091"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:37:47.020801" elapsed="0.001036"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:37:47.023010" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.022092" elapsed="0.000966"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.023219" elapsed="0.003210"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:37:47.005928" elapsed="0.020569"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:37:47.026677" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:47.026568" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.026549" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:37:47.029669" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:37:47.026888" elapsed="0.002810"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:37:47.029750" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:37:47.029909" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:37:46.992207" elapsed="0.037728"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:37:47.029993" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:37:47.030194" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:37:46.989640" elapsed="0.040581"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.031053" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569866,
 "value": {
  "LocalShards": [
   "member-1-shard-car-operational",
   "member-1-shard-car-people-operational",
   "member-1-shard-default-operational",
   "member-1-shard-inventory-operational",
   "member-1-shard-people-operational",
   "member-1-shard-toaster-operational",
   "member-1-shard-topology-operational"
  ],
  "MemberName": "member-1",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.030785" elapsed="0.000320"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.032073" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569866, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.031652" elapsed="0.000457"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:37:47.032159" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:37:47.032322" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569866, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:37:47.031314" elapsed="0.001034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:47.032729" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-car-operational', 'member-1-shard-car-people-operational', 'member-1-shard-default-operational', 'member-1-shard-inventory-operational', 'member-1-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.032505" elapsed="0.000251"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:47.033270" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.032930" elapsed="0.000367"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:37:47.033346" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:37:47.033498" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:37:47.030433" elapsed="0.003090"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:37:47.033599" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:37:47.033752" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:37:46.935122" elapsed="0.098654"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:37:47.033955" elapsed="0.000030"/>
</continue>
<status status="PASS" start="2026-04-19T03:37:47.033845" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.033828" elapsed="0.000226"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.034205" elapsed="0.000023"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:37:46.934781" elapsed="0.099481"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.035676" level="INFO">${session} = ClusterManagement__session_2</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-19T03:37:47.035368" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:37:47.035759" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:37:47.035912" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:37:47.035006" elapsed="0.000930"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.043742" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.043490" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.044209" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.043943" elapsed="0.000311"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:37:47.054746" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:37:47.054855" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:37:47 GMT', 'Expires': 'Sun, 19 Apr 2026 02:37:47 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569867,"status":200} 
 </msg>
<msg time="2026-04-19T03:37:47.055106" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:37:47.046488" elapsed="0.008665"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.044322" elapsed="0.010893"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.055470" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.055253" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.044302" elapsed="0.011287"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.061055" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-config","member-2-shard-car-config","member-2-shard-topology-config","member-2-shard-inventory-config","member-2-shard-toaster-config","member-2-shard-people-config","member-2-shard-car-people-config"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569867,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.057309" elapsed="0.003883"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.056945" elapsed="0.004396"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.056918" elapsed="0.004462"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.065717" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.061849" elapsed="0.004000"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.061482" elapsed="0.004519"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.061453" elapsed="0.004620"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.066942" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.066321" elapsed="0.000649"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.067336" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.067065" elapsed="0.000446"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.068304" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:47.067701" elapsed="0.000684"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.067536" elapsed="0.000994"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.067023" elapsed="0.001533"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.069255" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.068716" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.069622" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.069351" elapsed="0.000447"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.070567" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:47.069986" elapsed="0.000659"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.069823" elapsed="0.000968"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.069333" elapsed="0.001481"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:37:47.070970" elapsed="0.000708"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:37:47.072677" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.071847" elapsed="0.000856"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.072859" elapsed="0.003133"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:37:47.056348" elapsed="0.019797"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:37:47.076326" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:47.076217" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.076198" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:37:47.079293" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569867,...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:37:47.076539" elapsed="0.002783"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:37:47.079375" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:37:47.079533" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569867,...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:37:47.038955" elapsed="0.040644"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:37:47.079659" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:37:47.079809" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569867,...</msg>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:37:47.036190" elapsed="0.043646"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.080776" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569867,
 "value": {
  "LocalShards": [
   "member-2-shard-car-config",
   "member-2-shard-car-people-config",
   "member-2-shard-default-config",
   "member-2-shard-inventory-config",
   "member-2-shard-people-config",
   "member-2-shard-toaster-config",
   "member-2-shard-topology-config"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.080526" elapsed="0.000298"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.081810" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569867, 'value': {...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.081385" elapsed="0.000453"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:37:47.081887" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:37:47.082060" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569867, 'value': {...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:37:47.081046" elapsed="0.001041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:47.082461" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-config', 'member-2-shard-car-people-config', 'member-2-shard-default-config', 'member-2-shard-inventory-config', 'member-2-shard-people-config', 'member-2-shard-to...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.082241" elapsed="0.000247"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:47.082850" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.082643" elapsed="0.000233"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:37:47.082922" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:37:47.083086" level="INFO">${conf_status} = True</msg>
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:37:47.080163" elapsed="0.002948"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:37:47.083294" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:47.083187" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.083169" elapsed="0.000189"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.090774" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.090527" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.091232" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.090972" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:37:47.099938" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:37:47.100013" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:37:47 GMT', 'Expires': 'Sun, 19 Apr 2026 02:37:47 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569867,"status":200} 
 </msg>
<msg time="2026-04-19T03:37:47.100141" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:37:47.093605" elapsed="0.006562"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.091340" elapsed="0.008868"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.100385" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.100234" elapsed="0.000247"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.091322" elapsed="0.009181"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.104370" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-2-shard-default-operational","member-2-shard-car-operational","member-2-shard-topology-operational","member-2-shard-inventory-operational","member-2-shard-toaster-operational","member-2-shard-people-operational","member-2-shard-car-people-operational"],"SyncStatus":true,"MemberName":"member-2"},"timestamp":1776569867,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.101728" elapsed="0.002736"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.101481" elapsed="0.003087"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.101452" elapsed="0.003143"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.107664" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.104889" elapsed="0.002865"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.104651" elapsed="0.003418"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.104634" elapsed="0.003463"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.108776" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.108266" elapsed="0.000537"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.109167" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.108873" elapsed="0.000462"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.110106" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:47.109535" elapsed="0.000649"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.109362" elapsed="0.000965"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.108854" elapsed="0.001497"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.111012" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.110510" elapsed="0.000544"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.111378" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:37:47.111124" elapsed="0.000423"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.112311" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:37:47.111734" elapsed="0.000657"/>
</kw>
<status status="PASS" start="2026-04-19T03:37:47.111573" elapsed="0.000961"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.111106" elapsed="0.001452"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:37:47.112710" elapsed="0.000714"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:37:47.114380" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.113593" elapsed="0.000814"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.114563" elapsed="0.003145"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:37:47.100991" elapsed="0.016782"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:37:47.117952" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:37:47.117843" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.117825" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:37:47.120937" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:37:47.118183" elapsed="0.002784"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:37:47.121018" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T03:37:47.121191" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:37:47.086100" elapsed="0.035118"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:37:47.121275" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:37:47.121473" level="INFO">${oper_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1...</msg>
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:37:47.083558" elapsed="0.037943"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.122363" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776569867,
 "value": {
  "LocalShards": [
   "member-2-shard-car-operational",
   "member-2-shard-car-people-operational",
   "member-2-shard-default-operational",
   "member-2-shard-inventory-operational",
   "member-2-shard-people-operational",
   "member-2-shard-toaster-operational",
   "member-2-shard-topology-operational"
  ],
  "MemberName": "member-2",
  "SyncStatus": true
 }
}
</msg>
<arg>${shard_manager_text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.122104" elapsed="0.000308"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.123439" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569867, ...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:37:47.122957" elapsed="0.000510"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:37:47.123517" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:37:47.123677" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776569867, ...</msg>
<var>${manager_object}</var>
<arg>${shard_manager_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:37:47.122620" elapsed="0.001083"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:47.124094" level="INFO">${value_object} = {'LocalShards': ['member-2-shard-car-operational', 'member-2-shard-car-people-operational', 'member-2-shard-default-operational', 'member-2-shard-inventory-operational', 'member-2-shard-people-operati...</msg>
<var>${value_object}</var>
<arg>dictionary=${manager_object}</arg>
<arg>key=value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.123856" elapsed="0.000265"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:37:47.124489" level="INFO">${sync_status} = True</msg>
<var>${sync_status}</var>
<arg>dictionary=${value_object}</arg>
<arg>key=SyncStatus</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:37:47.124274" elapsed="0.000240"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-19T03:37:47.124560" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:37:47.124706" level="INFO">${oper_status} = True</msg>
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="PASS" start="2026-04-19T03:37:47.121710" elapsed="0.003020"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-19T03:37:47.124773" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:37:47.124916" level="INFO">${status} = True</msg>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="PASS" start="2026-04-19T03:37:47.034629" elapsed="0.090311"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-19T03:37:47.125130" elapsed="0.000028"/>
</continue>
<status status="PASS" start="2026-04-19T03:37:47.125006" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T03:37:47.124989" elapsed="0.000221"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:37:47.125357" elapsed="0.000037"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:37:47.034403" elapsed="0.091027"/>
</iter>
<iter>
<kw name="Get_Sync_Status_Of_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.127085" level="INFO">${session} = ClusterManagement__session_3</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-19T03:37:47.126741" elapsed="0.000373"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:37:47.127159" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:37:47.127307" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:37:47.126401" elapsed="0.000931"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.134773" level="INFO">jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.134525" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:37:47.135227" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:37:47.134969" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:39:52.238697" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:37:47.137439" elapsed="125.105188">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:37:47.135335" elapsed="125.107497">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.243414" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:52.242920" elapsed="0.000774"/>
</branch>
<status status="FAIL" start="2026-04-19T03:37:47.135317" elapsed="125.108439">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.245095" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:39:52.245460" elapsed="0.000034"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:52.245345" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:39:52.245291" elapsed="0.000319"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.245940" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:39:52.246166" elapsed="0.000046"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:37:47.130078" elapsed="125.116356">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:39:52.246592" elapsed="0.000036"/>
</return>
<var>${conf_text}</var>
<arg>uri=${JOLOKIA_CONF_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="FAIL" start="2026-04-19T03:37:47.127541" elapsed="125.119271">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${conf_status}</var>
<arg>shard_manager_text=${conf_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.247389" elapsed="0.000058"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-19T03:39:52.247683" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:52.247603" elapsed="0.000171"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:39:52.247563" elapsed="0.000258"/>
</if>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${oper_text}</var>
<arg>uri=${JOLOKIA_OPER_SHARD_MANAGER_URI}</arg>
<arg>session=${session}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.248315" elapsed="0.000056"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<var>${oper_status}</var>
<arg>shard_manager_text=${oper_text}</arg>
<doc>Return sync status parsed out of given text. Called twice by Get_Sync_Status_Of_Member.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.248950" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-19T03:39:52.249058" elapsed="0.000017"/>
</return>
<var>${status}</var>
<arg>member_index=${index}</arg>
<doc>Obtain IP, two GETs from jolokia URIs, return combined sync status as string.</doc>
<status status="FAIL" start="2026-04-19T03:37:47.125999" elapsed="125.123166">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="NOT RUN" start="2026-04-19T03:39:52.249286" elapsed="0.000016"/>
</continue>
<status status="NOT RUN" start="2026-04-19T03:39:52.249247" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:39:52.249230" elapsed="0.000118"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Index ${index} has incorrect status: ${status}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.249496" elapsed="0.000021"/>
</kw>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:37:47.125740" elapsed="125.123827">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:37:46.934523" elapsed="125.315106">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="FAIL" start="2026-04-19T03:37:46.931491" elapsed="125.318237">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:37:46.931000" elapsed="125.318787">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:37:46.930965" elapsed="125.318853">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<arg>${member_index_list}</arg>
<status status="NOT RUN" start="2026-04-19T03:39:52.250106" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:52.249885" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:39:52.249868" elapsed="0.000315"/>
</if>
<if>
<branch type="IF" condition="${verify_system_status} and (&quot;${service_list}&quot; != &quot;[[]]&quot;)">
<kw name="Check Status Of Services Is OPERATIONAL" owner="ClusterManagement">
<arg>@{service_list}</arg>
<doc>This keyword will verify whether all the services are operational in all the ODL nodes</doc>
<status status="NOT RUN" start="2026-04-19T03:39:52.250452" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:52.250237" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:39:52.250221" elapsed="0.000310"/>
</if>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Verifies the specified readiness conditions for the given listed members after startup.
If ${verify_cluster_sync}, verifies the datastores have synced with the rest of the cluster.
If True, verifies RESTCONF is available.
If ${verify_system_status}, verifies the system services are OPERATIONAL.</doc>
<status status="FAIL" start="2026-04-19T03:37:46.930303" elapsed="125.320308">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<msg time="2026-04-19T03:39:52.250724" level="FAIL">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</msg>
<arg>${timeout}</arg>
<arg>10s</arg>
<arg>Verify_Members_Are_Ready</arg>
<arg>${member_index_list}</arg>
<arg>${wait_for_sync}</arg>
<arg>${verify_restconf}</arg>
<arg>${check_system_status}</arg>
<arg>${service_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-19T03:32:45.415827" elapsed="426.835026">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement" type="TEARDOWN">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.254715" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:39:52.254273" elapsed="0.000470"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.255235" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:39:52.254905" elapsed="0.000357"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:39:52.255308" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:39:52.255466" level="INFO">${index_list} = [1, 2, 3]</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-19T03:39:52.253834" elapsed="0.001657"/>
</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-19T03:39:52.256620" level="INFO">${member_ip} = 10.30.171.9</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-19T03:39:52.256320" elapsed="0.000333"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.257545" 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-19T03:39:52.257647" 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-19T03:39:52.257380" elapsed="0.000294"/>
</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-19T03:39:52.260364" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:52.260083" elapsed="0.000338"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:52.260064" elapsed="0.000380"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.260751" 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-19T03:39:52.260852" 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-19T03:39:52.260618" elapsed="0.000262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.261517" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:52.261047" elapsed="0.000518"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.262164" level="INFO">${conn_id} = 547</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:52.261722" elapsed="0.000477"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.263425" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:39:52.263521" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:39:52.262882" elapsed="0.000664"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:52.263708" elapsed="0.000550"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.265647" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:39:52.858256" 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 Sun Apr 19 03:39:52 UTC 2026

  System load:  0.34               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:32:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:39:52.265015" elapsed="0.593446"/>
</kw>
<msg time="2026-04-19T03:39:52.858660" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:52.264430" elapsed="0.594368"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:39:52.262416" elapsed="0.596497"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.859502" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:39:52.872200" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:39:52.872443" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:39:52.872540" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:39:52.859217" elapsed="0.013375"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:52.872961" elapsed="0.000671"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.874764" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:52.874086" elapsed="0.000780"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:52.875456" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:52.875139" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:52.874990" elapsed="0.000629"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:39:52.875960" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-19T03:39:52.875738" elapsed="0.000343"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:52.875704" elapsed="0.000413"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:52.876164" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:52.880720" elapsed="0.000799"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:52.881753" elapsed="0.000240"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:52.882254" elapsed="0.000144"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:39:52.876616" elapsed="0.005855"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:39:52.259511" elapsed="0.623088"/>
</kw>
<msg time="2026-04-19T03:39:52.882674" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:52.258931" elapsed="0.623829"/>
</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-19T03:39:52.258361" elapsed="0.624508"/>
</kw>
<msg time="2026-04-19T03:39:52.882940" 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-19T03:39:52.257839" elapsed="0.625255"/>
</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-19T03:39:52.887796" elapsed="0.000345"/>
</kw>
<kw name="Open 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-19T03:39:52.888308" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:52.888608" 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-19T03:39:52.883507" elapsed="0.005249"/>
</kw>
<msg time="2026-04-19T03:39:52.888848" 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-19T03:39:52.256872" elapsed="0.632001"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.889336" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:52.889085" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:39:52.889421" 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-19T03:39:52.255863" elapsed="0.633682"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:39:52.255677" elapsed="0.633904"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:52.890585" level="INFO">${member_ip} = 10.30.171.128</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-19T03:39:52.890313" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.891512" 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-19T03:39:52.891611" 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-19T03:39:52.891373" elapsed="0.000264"/>
</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-19T03:39:52.894287" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:52.893999" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:52.893981" elapsed="0.000385"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.894640" 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-19T03:39:52.894740" 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-19T03:39:52.894513" elapsed="0.000253"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.895409" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:52.894915" elapsed="0.000541"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.896021" level="INFO">${conn_id} = 550</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:52.895612" elapsed="0.000463"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:39:52.897160" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:39:52.897254" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:39:52.896756" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:52.897436" elapsed="0.000522"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:39:52.899343" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:39:53.546154" 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 Sun Apr 19 03:39:53 UTC 2026

  System load:  0.11               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:32:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:39:52.898692" elapsed="0.647828"/>
</kw>
<msg time="2026-04-19T03:39:53.546636" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:52.898148" elapsed="0.648619"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:39:52.896300" elapsed="0.650575"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:39:53.547393" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:39:53.559204" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:39:53.559358" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:39:53.559419" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:39:53.547130" elapsed="0.012321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:53.559682" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:53.560712" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:53.560287" elapsed="0.000488"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:53.561106" elapsed="0.000025"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:53.560884" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:53.560852" elapsed="0.000357"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:39:53.561436" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-19T03:39:53.561286" elapsed="0.000235"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:53.561264" elapsed="0.000393"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:53.561713" elapsed="0.000029"/>
</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-19T03:39:53.568390" elapsed="0.001308"/>
</kw>
<kw name="Open 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-19T03:39:53.570007" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:53.570340" 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-19T03:39:53.562339" elapsed="0.008153"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:39:52.893448" elapsed="0.677136"/>
</kw>
<msg time="2026-04-19T03:39:53.570638" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:52.892882" elapsed="0.677819"/>
</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-19T03:39:52.892324" elapsed="0.678457"/>
</kw>
<msg time="2026-04-19T03:39:53.570822" 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-19T03:39:52.891795" elapsed="0.679083"/>
</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-19T03:39:53.573887" elapsed="0.000340"/>
</kw>
<kw name="Open 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-19T03:39:53.574396" elapsed="0.000150"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:53.574694" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:39:53.571196" elapsed="0.003647"/>
</kw>
<msg time="2026-04-19T03:39:53.574935" 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-19T03:39:52.890874" elapsed="0.684086"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:53.575410" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:53.575161" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:39:53.575495" 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-19T03:39:52.889853" elapsed="0.685766"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:39:52.889671" elapsed="0.685986"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:53.576656" level="INFO">${member_ip} = 10.30.171.206</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-19T03:39:53.576386" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:53.577480" 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-19T03:39:53.577579" 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-19T03:39:53.577346" elapsed="0.000259"/>
</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-19T03:39:53.580518" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:53.580248" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:53.580228" elapsed="0.000370"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:53.580873" 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-19T03:39:53.580974" 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-19T03:39:53.580745" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:53.581637" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:53.581171" elapsed="0.000564"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:53.582349" level="INFO">${conn_id} = 553</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:53.581895" elapsed="0.000480"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:39:53.583483" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:39:53.583576" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:39:53.583089" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:53.583761" elapsed="0.000547"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:39:53.585674" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:39:54.182769" 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 Sun Apr 19 03:39:53 UTC 2026

  System load:  0.09               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:32:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:39:53.585052" elapsed="0.597925"/>
</kw>
<msg time="2026-04-19T03:39:54.183133" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:53.584481" elapsed="0.598804"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:39:53.582593" elapsed="0.600815"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.183997" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-19T03:39:54.196517" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-19T03:39:54.196761" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:39:54.196857" level="INFO">${stderr} = bash: line 1: netstat: command not found</msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-19T03:39:54.183672" elapsed="0.013236"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:54.197316" elapsed="0.000446"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.198958" level="INFO">bash: line 1: netstat: command not found</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:54.198227" elapsed="0.000904"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:54.199641" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:54.199336" elapsed="0.000412"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.199280" 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-19T03:39:54.200261" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-19T03:39:54.199988" elapsed="0.000406"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.199952" elapsed="0.000495"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:54.200521" 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-19T03:39:54.206811" elapsed="0.000791"/>
</kw>
<kw name="Open 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-19T03:39:54.207835" elapsed="0.000266"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:54.208310" 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-19T03:39:54.201278" elapsed="0.007243"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:39:53.579668" elapsed="0.628982"/>
</kw>
<msg time="2026-04-19T03:39:54.208726" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:53.578869" elapsed="0.629945"/>
</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-19T03:39:53.578307" elapsed="0.630619"/>
</kw>
<msg time="2026-04-19T03:39:54.208996" 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-19T03:39:53.577786" elapsed="0.631439"/>
</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-19T03:39:54.213356" elapsed="0.000314"/>
</kw>
<kw name="Open 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-19T03:39:54.213835" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:54.214149" elapsed="0.000100"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:39:54.209646" elapsed="0.004655"/>
</kw>
<msg time="2026-04-19T03:39:54.214395" 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-19T03:39:53.576895" elapsed="0.637525"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.214852" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:54.214603" elapsed="0.000290"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:39:54.214937" 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-19T03:39:53.575930" elapsed="0.639172"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:39:53.575749" elapsed="0.639392"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:39:52.255547" elapsed="1.959628"/>
</for>
<arg>command=netstat -pnatu | grep 2550</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:39:52.251427" elapsed="1.963806"/>
</kw>
<doc>If the list is empty, start all cluster members. Otherwise, start members based on present indices.
If ${wait_for_sync}, wait for cluster sync on listed members.
Optionally karaf_home can be overriden. Optionally specific JAVA_HOME is used for starting.
Garbage collection is unconditionally logged to files. TODO: Make that reasonable conditional?</doc>
<status status="FAIL" start="2026-04-19T03:32:44.242089" elapsed="429.973224">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ClusterManagement.Run_Bash_Command_On_List_Or_All</arg>
<arg>netstat -punta</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:54.215490" elapsed="0.000021"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<var>${index_list}</var>
<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="NOT RUN" start="2026-04-19T03:39:54.215729" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<var>${output}</var>
<arg>command=sudo netstat -punta | grep 2550 | grep LISTEN</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:54.216128" elapsed="0.000024"/>
</kw>
<kw name="Get Match">
<var>${listening}</var>
<arg>${output}</arg>
<arg>LISTEN</arg>
<doc>Wrapper around String.Get Regexp Matches to return None if not found or the first match if found.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:54.216348" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="'${listening}' == 'None'">
<kw name="Check_Bash_Command_On_Member" owner="ClusterManagement">
<arg>command=pid=$(grep org.apache.karaf.main.Main | grep -v grep | tr -s ' ' | cut -f2 -d' '); sudo /usr/lib/jvm/java-1.8.0/bin/jstack -l ${pid}</arg>
<arg>member_index=${index}</arg>
<doc>Open SSH session, call SSHKeywords.Execute_Command_Passes, close session, restore previously active session and return output.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:54.216619" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:54.216437" elapsed="0.000240"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:39:54.216420" elapsed="0.000282"/>
</if>
<var name="${index}"/>
<status status="NOT RUN" start="2026-04-19T03:39:54.215933" elapsed="0.000792"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="NOT RUN" start="2026-04-19T03:39:54.215806" elapsed="0.000944"/>
</for>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>60s</arg>
<arg>10s</arg>
<arg>ShardStability.Shards_Stability_Get_Details</arg>
<arg>${DEFAULT_SHARD_LIST}</arg>
<arg>verify_restconf=True</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-04-19T03:39:54.216909" elapsed="0.000021"/>
</kw>
<doc>Start each member and wait for sync.</doc>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:32:44.237307" elapsed="429.979801">Keyword 'Verify_Members_Are_Ready' failed after retrying for 6 minutes. The last error was: ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=125.0)</status>
</test>
<kw name="Close All Connections" owner="SSHLibrary" type="TEARDOWN">
<doc>Closes all open connections.</doc>
<status status="PASS" start="2026-04-19T03:39:54.217855" elapsed="0.000353"/>
</kw>
<doc>Unset tell-based protocol usage

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html

Suite stops all odl nodes, outcomment usage of tell-based protocol in
config file (means make it false by default) and starts all nodes again.</doc>
<status status="FAIL" start="2026-04-19T03:25:28.589005" elapsed="865.629242"/>
</suite>
<suite id="s1-s22" name="Carpeople Crud" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/carpeople_crud.robot">
<kw name="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-19T03:39:54.295793" 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-19T03:39:54.291973" elapsed="0.003876"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:39:54.291746" elapsed="0.004174"/>
</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-19T03:39:54.300457" 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-19T03:39:54.297253" elapsed="0.003232"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:39:54.300700" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:54.300573" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.300548" elapsed="0.000223"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.301287" 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-19T03:39:54.300914" elapsed="0.000415"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.301787" level="INFO">${cluster_size} = 3</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-19T03:39:54.301479" elapsed="0.000334"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-19T03:39:54.302327" elapsed="0.000282"/>
</kw>
<msg time="2026-04-19T03:39:54.302708" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:39:54.302753" level="INFO">${possibly_int_of_members} = 3</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-19T03:39:54.301969" elapsed="0.000806"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.303367" level="INFO">${int_of_members} = 3</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-19T03:39:54.302931" elapsed="0.000463"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.304430" 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-19T03:39:54.304120" elapsed="0.000339"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.304851" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:39:54.304596" elapsed="0.000281"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.305333" 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-19T03:39:54.305022" elapsed="0.000337"/>
</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-19T03:39:54.308102" elapsed="0.000245"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.308823" level="INFO">${member_ip} = 10.30.171.9</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-19T03:39:54.308496" elapsed="0.000353"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:39:54.308991" elapsed="0.000246"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.309993" 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-19T03:39:54.309700" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:39:54.310083" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:39:54.310242" 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-19T03:39:54.309419" elapsed="0.000848"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:39:54.311089" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f735d9d0&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-19T03:39:54.310440" elapsed="0.000799"/>
</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-19T03:39:54.311391" elapsed="0.000189"/>
</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-19T03:39:54.307540" elapsed="0.004100"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:39:54.307357" elapsed="0.004326"/>
</iter>
<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-19T03:39:54.312559" elapsed="0.000188"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.313231" level="INFO">${member_ip} = 10.30.171.128</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-19T03:39:54.312891" elapsed="0.000366"/>
</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-19T03:39:54.313395" elapsed="0.000223"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.314465" level="INFO">${session} = ClusterManagement__session_2</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-19T03:39:54.314120" elapsed="0.000372"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:39:54.314540" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:39:54.314698" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:39:54.313811" elapsed="0.000913"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:39:54.315310" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6fa6750&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-19T03:39:54.314866" elapsed="0.000550"/>
</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-19T03:39:54.315568" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-19T03:39:54.311942" elapsed="0.003882"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:39:54.311775" elapsed="0.004093"/>
</iter>
<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-19T03:39:54.316733" elapsed="0.000190"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.317412" level="INFO">${member_ip} = 10.30.171.206</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-19T03:39:54.317085" elapsed="0.000354"/>
</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-19T03:39:54.317577" elapsed="0.000220"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.318670" level="INFO">${session} = ClusterManagement__session_3</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-19T03:39:54.318286" elapsed="0.000412"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:39:54.318745" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:39:54.318899" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:39:54.317979" elapsed="0.000945"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:39:54.319583" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f72303d0&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-19T03:39:54.319096" elapsed="0.000596"/>
</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-19T03:39:54.319845" elapsed="0.000209"/>
</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-19T03:39:54.316150" elapsed="0.003967"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:39:54.315960" elapsed="0.004201"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:39:54.305415" elapsed="0.014775"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.320777" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:39:54.320372" elapsed="0.000448"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.321413" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:39:54.320985" elapsed="0.000473"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.321994" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:39:54.321607" elapsed="0.000450"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-19T03:39:54.303651" elapsed="0.018472"/>
</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-19T03:39:54.296756" elapsed="0.025423"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:39:54.322361" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:54.322245" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.322226" elapsed="0.000203"/>
</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-19T03:39:54.325522" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:39:54.325133" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.326006" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:39:54.325699" elapsed="0.000350"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:39:54.326107" elapsed="0.000046"/>
</return>
<msg time="2026-04-19T03:39:54.326329" level="INFO">${index_list} = [1, 2, 3]</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-19T03:39:54.324790" elapsed="0.001566"/>
</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-19T03:39:54.327366" level="INFO">${member_ip} = 10.30.171.9</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-19T03:39:54.327091" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.328143" 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-19T03:39:54.328247" 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-19T03:39:54.327955" elapsed="0.000320"/>
</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-19T03:39:54.331565" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:54.330977" elapsed="0.000675"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.330957" elapsed="0.000732"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.332388" 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-19T03:39:54.332625" 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-19T03:39:54.331882" elapsed="0.000796"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.333617" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:54.332930" elapsed="0.000794"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.334890" 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-19T03:39:54.333987" elapsed="0.000954"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.336719" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:39:54.336897" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:39:54.336353" elapsed="0.000587"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:54.337286" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.339015" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:39:54.652086" 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 Sun Apr 19 03:39:52 UTC 2026

  System load:  0.34               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:39:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:39:54.338679" elapsed="0.313562"/>
</kw>
<msg time="2026-04-19T03:39:54.652328" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:54.338106" elapsed="0.314389"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:39:54.335415" elapsed="0.317233"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.653676" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:39:54.666456" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:39:54.666640" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:39:54.666743" 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-19T03:39:54.653110" elapsed="0.013689"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:54.667142" elapsed="0.000535"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.668803" 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-19T03:39:54.668222" elapsed="0.000687"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:54.669389" elapsed="0.000054"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:54.669102" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.669074" elapsed="0.000482"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:39:54.669861" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-04-19T03:39:54.669637" elapsed="0.000372"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.669620" elapsed="0.000447"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:54.670130" 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-19T03:39:54.673080" elapsed="0.000475"/>
</kw>
<kw name="Open 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-19T03:39:54.673821" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:54.674381" elapsed="0.000225"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:39:54.670601" elapsed="0.004072"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:39:54.330049" elapsed="0.344798"/>
</kw>
<msg time="2026-04-19T03:39:54.674904" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:54.329422" elapsed="0.345538"/>
</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-19T03:39:54.328931" elapsed="0.346126"/>
</kw>
<msg time="2026-04-19T03:39:54.675100" 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-19T03:39:54.328445" elapsed="0.346701"/>
</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-19T03:39:54.677624" 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-19T03:39:54.678156" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:54.678439" 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-19T03:39:54.675426" elapsed="0.003158"/>
</kw>
<msg time="2026-04-19T03:39:54.678674" 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-19T03:39:54.327600" elapsed="0.351100"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.679127" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:54.678864" elapsed="0.000304"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:39:54.679211" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:39:54.326713" elapsed="0.352621"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:39:54.326545" elapsed="0.352826"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:54.680347" level="INFO">${member_ip} = 10.30.171.128</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-19T03:39:54.679984" elapsed="0.000390"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.681071" 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-19T03:39:54.681229" 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-19T03:39:54.680920" elapsed="0.000335"/>
</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-19T03:39:54.684731" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:54.684199" elapsed="0.000615"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:54.684180" elapsed="0.000671"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.685494" 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-19T03:39:54.685722" 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-19T03:39:54.685051" elapsed="0.000722"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.686692" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:54.686026" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.687940" level="INFO">${conn_id} = 4</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:54.687069" elapsed="0.000922"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:39:54.689744" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:39:54.689919" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:39:54.689360" elapsed="0.000602"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:54.690306" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:39:54.691858" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:39:55.023594" 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 Sun Apr 19 03:39:53 UTC 2026

  System load:  0.11               Processes:             119
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 8%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:39:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:39:54.691535" elapsed="0.332208"/>
</kw>
<msg time="2026-04-19T03:39:55.023825" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:54.691107" elapsed="0.332872"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:39:54.688428" elapsed="0.335744"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.025067" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:39:55.038584" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:39:55.038839" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:39:55.038993" 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-19T03:39:55.024550" elapsed="0.014609"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.039805" elapsed="0.001140"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.043370" 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-19T03:39:55.042102" elapsed="0.001494"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:55.044561" elapsed="0.000112"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:55.043956" elapsed="0.000883"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:55.043902" elapsed="0.001018"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:39:55.045714" elapsed="0.000135"/>
</return>
<status status="PASS" start="2026-04-19T03:39:55.045219" elapsed="0.000956"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:55.045178" elapsed="0.001091"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:55.046400" 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-19T03:39:55.051339" 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-19T03:39:55.052372" elapsed="0.000391"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.053201" elapsed="0.000305"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:39:55.047325" elapsed="0.006275"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:39:54.683213" elapsed="0.370626"/>
</kw>
<msg time="2026-04-19T03:39:55.053915" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:54.682599" elapsed="0.371386"/>
</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-19T03:39:54.682125" elapsed="0.371991"/>
</kw>
<msg time="2026-04-19T03:39:55.054173" 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-19T03:39:54.681433" elapsed="0.372801"/>
</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-19T03:39:55.056803" elapsed="0.000353"/>
</kw>
<kw name="Open 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-19T03:39:55.057307" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.057586" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:39:55.054648" elapsed="0.003093"/>
</kw>
<msg time="2026-04-19T03:39:55.057830" 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-19T03:39:54.680576" elapsed="0.377278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.058282" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:55.058019" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:39:55.058364" 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-19T03:39:54.679637" elapsed="0.378849"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:39:54.679466" elapsed="0.379057"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:55.059460" level="INFO">${member_ip} = 10.30.171.206</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-19T03:39:55.059190" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.060224" 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-19T03:39:55.060322" 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-19T03:39:55.060077" elapsed="0.000270"/>
</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-19T03:39:55.063604" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:55.063066" elapsed="0.000622"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:55.063045" elapsed="0.000680"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.064353" 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-19T03:39:55.064576" 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-19T03:39:55.063909" elapsed="0.000718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.065576" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:55.064909" elapsed="0.000770"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.066853" level="INFO">${conn_id} = 7</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:55.065934" elapsed="0.000969"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.068596" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:39:55.068771" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:39:55.068230" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:55.069149" elapsed="0.002101"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.072361" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:39:55.391318" 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 Sun Apr 19 03:39:53 UTC 2026

  System load:  0.09               Processes:             120
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:39:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:39:55.072016" elapsed="0.319468"/>
</kw>
<msg time="2026-04-19T03:39:55.391573" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:55.071583" elapsed="0.320180"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:39:55.067344" elapsed="0.324579"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.392825" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:39:55.405671" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:39:55.406077" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:39:55.406310" 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-19T03:39:55.392323" elapsed="0.014095"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.407096" elapsed="0.001158"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.410610" 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-19T03:39:55.409383" elapsed="0.001454"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:55.411813" elapsed="0.000109"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:55.411249" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:55.411193" elapsed="0.001009"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:39:55.412864" elapsed="0.000133"/>
</return>
<status status="PASS" start="2026-04-19T03:39:55.412381" elapsed="0.000824"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:55.412343" elapsed="0.000946"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:39:55.413418" 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-19T03:39:55.417847" 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-19T03:39:55.418589" elapsed="0.000283"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.419205" elapsed="0.000222"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:39:55.414472" elapsed="0.005023"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:39:55.062124" elapsed="0.357541"/>
</kw>
<msg time="2026-04-19T03:39:55.419794" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:39:55.061497" elapsed="0.358352"/>
</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-19T03:39:55.060964" elapsed="0.358965"/>
</kw>
<msg time="2026-04-19T03:39:55.419970" 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-19T03:39:55.060489" elapsed="0.359526"/>
</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-19T03:39:55.422357" elapsed="0.000308"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:55.422817" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.423162" 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-19T03:39:55.420308" elapsed="0.003007"/>
</kw>
<msg time="2026-04-19T03:39:55.423407" 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-19T03:39:55.059687" elapsed="0.363745"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.423875" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:55.423597" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:39:55.423961" 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-19T03:39:55.058815" elapsed="0.365287"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:39:55.058633" elapsed="0.365509"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:39:54.326414" elapsed="1.097763"/>
</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-19T03:39:54.322636" elapsed="1.101599"/>
</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-19T03:39:55.424379" elapsed="0.000212"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:39:55.436836" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:55.436725" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:55.436705" elapsed="0.000199"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.437202" 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-19T03:39:55.437307" 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-19T03:39:55.437063" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.437734" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:55.437474" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:55.438175" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:55.437917" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:55.438930" 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-19T03:39:55.438705" elapsed="0.000379">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:39:55.439193" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:39:55.439238" 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-19T03:39:55.438362" elapsed="0.000899"/>
</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-19T03:39:55.439547" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:55.439336" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:55.439318" elapsed="0.000327"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:55.440399" level="INFO">${ip_address} = 10.30.171.9</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-19T03:39:55.440124" elapsed="0.000301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:39:55.440474" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:39:55.440620" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:39:55.439847" elapsed="0.000797"/>
</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-19T03:39:55.440831" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.441514" level="INFO">index=10
host=10.30.171.9
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-19T03:39:55.441614" level="INFO">${karaf_connection_object} = index=10
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.441408" elapsed="0.000232"/>
</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-19T03:39:55.441777" elapsed="0.001916"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:39:55.444150" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:39:56.223709" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:39:55.443875" elapsed="0.780039"/>
</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-19T03:39:56.227543" 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-19T03:39:56.228102" elapsed="0.000169"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:56.228413" 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-19T03:39:56.225182" elapsed="0.003389"/>
</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-19T03:39:56.224422" elapsed="0.004198"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:39:55.436440" elapsed="0.792233"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:39:55.425313" elapsed="0.803411"/>
</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-19T03:39:55.424937" elapsed="0.803841"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:39:55.424811" elapsed="0.804009"/>
</iter>
<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-19T03:39:56.240642" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:56.240526" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:56.240502" elapsed="0.000213"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:56.240997" 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-19T03:39:56.241123" 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-19T03:39:56.240862" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:56.241558" 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-19T03:39:56.241293" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:56.242007" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:56.241742" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:56.242790" level="FAIL">Dictionary does not contain key '2'.</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-19T03:39:56.242562" elapsed="0.000339">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:39:56.243007" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:39:56.243131" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:39:56.242214" elapsed="0.000943"/>
</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-19T03:39:56.243451" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:56.243236" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:56.243216" elapsed="0.000335"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:56.244296" level="INFO">${ip_address} = 10.30.171.128</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-19T03:39:56.244005" elapsed="0.000318"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:39:56.244372" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:39:56.244526" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:39:56.243742" elapsed="0.000809"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:39:56.244696" elapsed="0.000418"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:56.245382" level="INFO">index=12
host=10.30.171.128
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-19T03:39:56.245481" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.128
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-19T03:39:56.245276" elapsed="0.000232"/>
</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-19T03:39:56.245644" elapsed="0.001937"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:39:56.247991" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:39:57.214059" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:39:56.247734" elapsed="0.966461"/>
</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-19T03:39:57.217363" elapsed="0.000350"/>
</kw>
<kw name="Open 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-19T03:39:57.217868" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:39:57.218188" 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-19T03:39:57.215290" elapsed="0.003053"/>
</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-19T03:39:57.214576" elapsed="0.003815"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:39:56.240236" elapsed="0.978207"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:39:56.229442" elapsed="0.989049"/>
</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-19T03:39:56.229070" elapsed="0.989472"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:39:56.228922" elapsed="0.989663"/>
</iter>
<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-19T03:39:57.230553" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:39:57.230434" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:57.230410" elapsed="0.000217"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:57.230971" 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-19T03:39:57.231100" 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-19T03:39:57.230832" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:57.231536" level="INFO">{1: 10, 2: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:57.231271" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:39:57.231963" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:39:57.231722" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:57.232770" level="FAIL">Dictionary does not contain key '3'.</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-19T03:39:57.232533" elapsed="0.000345">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:39:57.232986" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:39:57.233045" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:39:57.232171" elapsed="0.000900"/>
</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-19T03:39:57.233357" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:39:57.233147" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T03:39:57.233129" elapsed="0.000323"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:39:57.234194" level="INFO">${ip_address} = 10.30.171.206</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-19T03:39:57.233905" elapsed="0.000315"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:39:57.234268" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:39:57.234422" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:39:57.233640" elapsed="0.000807"/>
</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-19T03:39:57.234593" elapsed="0.000402"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:39:57.235302" level="INFO">index=14
host=10.30.171.206
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-19T03:39:57.235402" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.206
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-19T03:39:57.235191" 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-19T03:39:57.235566" elapsed="0.001924"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:39:57.237911" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:40:07.343087" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:39:57.237653" elapsed="10.106262">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:07.347174" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T03:40:07.347722" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:07.348053" elapsed="0.000106"/>
</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-19T03:40:07.345125" elapsed="0.003088"/>
</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-19T03:40:07.344404" elapsed="0.003858"/>
</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-19T03:39:57.230140" elapsed="10.118211">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:40:07.348454" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:39:57.219215" elapsed="10.129333">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:39:57.218817" elapsed="10.129880"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:39:57.218688" elapsed="10.130058"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:39:55.424654" elapsed="11.924131"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:39:54.296316" elapsed="13.052534"/>
</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-19T03:40:07.351383" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.351262" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.351239" elapsed="0.000221"/>
</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-19T03:40:07.355610" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.355491" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.355474" elapsed="0.000203"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:07.356739" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:40:07.356239" elapsed="0.000528"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:40:07.357246" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:40:07.356917" elapsed="0.000355"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:40:07.357318" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:40:07.357474" level="INFO">${index_list} = [1, 2, 3]</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-19T03:40:07.355897" elapsed="0.001602"/>
</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-19T03:40:07.362272" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.362165" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.362147" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:40:07.363554" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.363410" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.363392" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:07.364123" 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-19T03:40:07.363755" elapsed="0.000395"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:07.364703" 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-19T03:40:07.364298" elapsed="0.000433"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:40:07.445412" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:40:07.365440" elapsed="0.080117"/>
</kw>
<msg time="2026-04-19T03:40:07.445694" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:40:07.445741" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.364888" elapsed="0.080891"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:40:07.599370" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "p "e "o "p "l "e "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:40:07.446501" elapsed="0.153050"/>
</kw>
<msg time="2026-04-19T03:40:07.599705" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:40:07.599752" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.445939" elapsed="0.153852"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:07.600295" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:07.599872" elapsed="0.000633"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.599851" elapsed="0.000682"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:07.601068" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "p "e "o "p "l "e "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:07.600670" elapsed="0.000488"/>
</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-19T03:40:07.601459" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:07.601226" elapsed="0.000402"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.601208" elapsed="0.000445"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:40:07.601689" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:07.603806" elapsed="0.000601"/>
</kw>
<kw name="Open 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-19T03:40:07.604781" elapsed="0.000389"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:07.605529" elapsed="0.000262"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:07.602908" elapsed="0.002981"/>
</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-19T03:40:07.601953" elapsed="0.004105"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:40:07.363118" elapsed="0.243044"/>
</kw>
<msg time="2026-04-19T03:40:07.606255" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:40:07.606301" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.362478" elapsed="0.243861"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:40:07.606524" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:40:07.606416" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.606397" elapsed="0.000212"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:07.607006" elapsed="0.000039"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:07.607347" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:40:07.607419" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:40:07.361861" elapsed="0.245666"/>
</kw>
<msg time="2026-04-19T03:40:07.607620" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:40:07.607677" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.357863" elapsed="0.249858"/>
</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-19T03:40:07.608303" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:07.607798" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.607780" elapsed="0.000604"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:40:07.357731" elapsed="0.250675"/>
</iter>
<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-19T03:40:07.613341" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.613225" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.613207" elapsed="0.000203"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:40:07.614597" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.614468" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.614450" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:07.615159" level="INFO">${karaf_connection_index} = 12</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-19T03:40:07.614798" elapsed="0.000388"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:07.615572" 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-19T03:40:07.615333" elapsed="0.000297"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:40:07.698715" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:40:07.616449" elapsed="0.082411"/>
</kw>
<msg time="2026-04-19T03:40:07.698993" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:40:07.699060" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.615800" elapsed="0.083299"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:40:07.821972" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "p "e "o "p "l "e "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:40:07.699803" elapsed="0.122389"/>
</kw>
<msg time="2026-04-19T03:40:07.822334" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:40:07.822381" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.699262" elapsed="0.123156"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:07.822748" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:07.822501" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.822480" elapsed="0.000458"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:07.823726" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "p "e "o "p "l "e "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:07.823349" elapsed="0.000487"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:07.824148" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:07.823904" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.823885" elapsed="0.000454"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:40:07.824375" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:07.826476" elapsed="0.000477"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:40:07.827629" elapsed="0.000344"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:07.828343" elapsed="0.000258"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:07.825569" elapsed="0.003127"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T03:40:07.824633" elapsed="0.004214"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:40:07.614178" elapsed="0.214772"/>
</kw>
<msg time="2026-04-19T03:40:07.829058" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:40:07.829104" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.613550" elapsed="0.215592"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:40:07.829325" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:40:07.829219" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.829201" elapsed="0.000207"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:07.829788" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:07.830144" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:40:07.830215" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:40:07.612792" elapsed="0.217575"/>
</kw>
<msg time="2026-04-19T03:40:07.830477" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:40:07.830537" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:40:07.608665" elapsed="0.221917"/>
</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-19T03:40:07.830897" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:07.830660" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.830642" elapsed="0.000332"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:40:07.608536" elapsed="0.222461"/>
</iter>
<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-19T03:40:07.835969" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.835864" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.835845" elapsed="0.000207"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:40:07.837236" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:07.837106" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:07.837087" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:07.837770" level="INFO">${karaf_connection_index} = 14</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-19T03:40:07.837437" elapsed="0.000360"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:07.838193" 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-19T03:40:07.837942" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:40:17.839899" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:40:07.838871" elapsed="10.002040">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:40:17.841261" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:40:17.841312" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:40:07.838364" elapsed="10.002973"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:40:27.843555" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:40:17.842281" elapsed="10.002112">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:40:27.844609" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:40:27.844658" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:40:17.841622" elapsed="10.003060"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:40:27.845995" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/carpeople_crud.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-19T03:40:27.845160" elapsed="0.000935">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/carpeople_crud.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:40:27.844802" elapsed="0.001476">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/carpeople_crud.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:40:27.844771" elapsed="0.001551">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/carpeople_crud.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-19T03:40:27.846487" 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-19T03:40:27.846705" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:27.846574" elapsed="0.000298"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:27.846557" elapsed="0.000341"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:40:27.846935" elapsed="0.000016"/>
</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-19T03:40:27.849251" 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-19T03:40:27.850125" elapsed="0.000349"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:27.850902" elapsed="0.000288"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:27.848230" elapsed="0.003059"/>
</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-19T03:40:27.847243" elapsed="0.004201"/>
</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-19T03:40:07.836793" elapsed="20.014739">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/carpeople_crud.robot"</status>
</kw>
<msg time="2026-04-19T03:40:27.851635" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:40:27.851681" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/carpeople_crud.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-19T03:40:07.836193" elapsed="20.015515"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:40:27.851895" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:27.851787" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:27.851769" elapsed="0.000193"/>
</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-19T03:40:27.852710" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:27.852606" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:27.852588" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:27.853103" 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-19T03:40:27.853209" 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-19T03:40:27.852916" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:27.853647" level="INFO">{1: 10, 2: 12, 3: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:27.853382" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:27.854095" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:27.853830" elapsed="0.000309"/>
</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-19T03:40:27.854662" elapsed="0.000310"/>
</kw>
<msg time="2026-04-19T03:40:27.855093" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:40:27.855141" level="INFO">${old_connection_index} = 14</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-19T03:40:27.854312" 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-19T03:40:27.856312" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:40:37.858843" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:40:27.857968" elapsed="10.001604">No match found for '
' in 10 seconds
Output:
.</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-19T03:40:27.856834" elapsed="10.002870"/>
</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-19T03:40:37.861055" elapsed="0.000333"/>
</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-19T03:40:37.860114" elapsed="0.001355"/>
</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-19T03:40:27.855449" elapsed="10.006116"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:27.855240" elapsed="10.006378"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:27.855222" elapsed="10.006430"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:37.862782" level="INFO">${ip_address} = 10.30.171.206</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-19T03:40:37.862251" elapsed="0.000558"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:40:37.862862" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:40:37.863023" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:40:37.861900" elapsed="0.001175"/>
</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-19T03:40:37.863226" elapsed="0.000703"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:37.864246" level="INFO">index=19
host=10.30.171.206
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-19T03:40:37.864427" level="INFO">${karaf_connection_object} = index=19
host=10.30.171.206
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-19T03:40:37.864123" elapsed="0.000331"/>
</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-19T03:40:37.864595" elapsed="0.002252"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:40:37.867299" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:40:47.928002" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:37.867006" elapsed="10.062369">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:47.934470" elapsed="0.001069"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:40:47.935934" elapsed="0.000798"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:47.937085" elapsed="0.000344"/>
</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-19T03:40:47.930996" elapsed="0.006568"/>
</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-19T03:40:47.930015" elapsed="0.007622"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:40:27.852360" elapsed="20.085405">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:47.938303" elapsed="0.000039"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:40:47.938425" elapsed="0.000032"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T03:40:07.835553" elapsed="40.103042">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:40:47.938763" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:40:47.938828" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:07.831375" elapsed="40.107487"/>
</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-19T03:40:47.939416" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:47.938988" elapsed="0.000508"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:47.938957" elapsed="0.000575"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:40:07.831245" elapsed="40.108333"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:40:07.357554" elapsed="40.582075"/>
</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-19T03:40:07.355197" elapsed="40.584519"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:40:07.349470" elapsed="40.590377"/>
</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-19T03:40:07.349005" elapsed="40.590909"/>
</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-19T03:39:54.291414" elapsed="53.648579"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.946570" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:40:47.946164" elapsed="0.000434"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.947068" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:40:47.946747" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:40:47.947141" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:40:47.947304" level="INFO">${index_list} = [1, 2, 3]</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-19T03:40:47.945835" elapsed="0.001495"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:40:47.947471" elapsed="0.000282"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.948277" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:40:47.947910" elapsed="0.000394"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.948688" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:40:47.948450" elapsed="0.000264"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.949103" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:40:47.948849" elapsed="0.000280"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.951362" 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-19T03:40:47.951063" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:40:47.951434" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:40:47.951581" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:40:47.950765" elapsed="0.000841"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.995765" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:47.995305" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:47.996661" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:47.996345" elapsed="0.000394">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:47.996833" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:47.995990" elapsed="0.000873"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.997454" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:40:47.997054" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:40:47.997802" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:40:47.997975" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:40:47.997654" elapsed="0.000347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.998446" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:47.998185" elapsed="0.000306"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.999493" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:47.999214" elapsed="0.000325"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:40:47.999957" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:40:47.999687" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.000354" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.000551" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.000722" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:40:48.000230" elapsed="0.000550"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.000081" elapsed="0.000730"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:40:48.000860" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:40:48.001044" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:40:47.998939" elapsed="0.002133"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:47.998593" elapsed="0.002511"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.001270" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.001135" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:47.998567" elapsed="0.002833"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.002040" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.001562" elapsed="0.000509"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:40:48.002144" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:40:47.994328" elapsed="0.008051"/>
</kw>
<msg time="2026-04-19T03:40:48.002451" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:47.982423" elapsed="0.020100"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.046525" elapsed="0.000071"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.092377" elapsed="0.000079"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.143610" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.143991" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.144660" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.145492" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.145124" elapsed="0.000503"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:48.145076" elapsed="0.000627"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.145986" elapsed="0.000088"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.146338" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.146683" elapsed="0.000070"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:40:48.145018" elapsed="0.001823"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.144862" elapsed="0.002046"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.147065" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.147296" elapsed="0.000021"/>
</return>
<msg time="2026-04-19T03:40:48.147459" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:40:47.978086" elapsed="0.169401"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:48.150471" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:48.149778" elapsed="0.000824">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:48.150733" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:48.148569" elapsed="0.002205"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.151428" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.150943" elapsed="0.000668"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.153603" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:48.152423" elapsed="0.001269"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.151639" elapsed="0.002184"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.150923" elapsed="0.002925"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.156518" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:40:48.153989" elapsed="0.002572"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:40:48.156720" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:40:48.156880" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:40:48.147956" elapsed="0.008949"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:48.159232" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:48.158677" elapsed="0.000670">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:48.159473" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:48.157577" elapsed="0.001937"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:40:48.159976" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:40:48.159685" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.159665" elapsed="0.000749"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.160550" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.160801" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.160967" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:40:48.164531" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:40:48.157268" elapsed="0.007291"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.166674" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.166171" elapsed="0.000649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.167520" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.167055" elapsed="0.000607"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:48.717806" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:40:48.722400" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01js4d6n79e0i11rsqw9w0dw20x0.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:40:48 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:40:48.723388" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:40:48.170008" elapsed="0.553592"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.167804" elapsed="0.556139"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.724371" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.724000" elapsed="0.000643"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.167784" elapsed="0.556895"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.731222" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.727645" elapsed="0.004190"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.726735" elapsed="0.005181"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.726651" elapsed="0.005371"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.736253" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.733126" elapsed="0.003259"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.732271" elapsed="0.004179"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.732195" elapsed="0.004346"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.738413" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.737327" elapsed="0.001245"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.739711" elapsed="0.000111"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.738843" elapsed="0.001065"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.741943" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:48.740877" elapsed="0.001226"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.740157" elapsed="0.002057"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.738720" elapsed="0.003629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.745891" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.743840" elapsed="0.002361"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.747984" elapsed="0.000201"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.746562" elapsed="0.001731"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.750179" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:48.749236" elapsed="0.001066"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.748432" elapsed="0.001975"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.746438" elapsed="0.004102"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:48.752350" elapsed="0.000765"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:40:48.754610" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.754039" elapsed="0.000698"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:40:48.755667" elapsed="0.002424"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:40:48.725422" elapsed="0.032782"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.758586" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:48.758392" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.758371" elapsed="0.000382"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:40:48.770637" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:40:48.758897" elapsed="0.011791"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:40:48.770860" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T03:40:48.771067" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:40:48.164983" elapsed="0.606113"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:40:48.771162" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:40:48.771314" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:40:47.959014" elapsed="0.812327"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.771700" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.771427" elapsed="0.000405"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.771408" elapsed="0.000449"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:40:48.771893" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:40:47.955384" elapsed="0.816634"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:47.951675" elapsed="0.820402"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:47.951657" elapsed="0.820444"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:40:48.772671" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T03:40:48.772562" elapsed="0.000168"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.772791" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:48.772753" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.772544" elapsed="0.000308"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.772994" elapsed="0.000021"/>
</kw>
<msg time="2026-04-19T03:40:48.773159" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:40:48.772328" elapsed="0.000856"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.773746" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.773345" elapsed="0.000428"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.774397" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:48.773915" elapsed="0.000510"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.779305" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.779047" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.779743" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.779496" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:48.794523" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:40:48.794586" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:40:48 GMT', 'Expires': 'Sun, 19 Apr 2026 02:40:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"3.314 ms","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570048,"status":200} 
 </msg>
<msg time="2026-04-19T03:40:48.794691" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:40:48.781646" elapsed="0.013072"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.779855" elapsed="0.014907"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.795014" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.794788" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.779837" elapsed="0.015420"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.803120" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"3.314 ms","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570048,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.797682" elapsed="0.005644"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.797209" elapsed="0.006232"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.797167" elapsed="0.006304"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.805973" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.803752" elapsed="0.002391"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.803532" elapsed="0.002727"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.803514" elapsed="0.002775"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.807015" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.806464" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.807357" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.807132" elapsed="0.000383"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.808265" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:48.807692" elapsed="0.000616"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.807542" elapsed="0.000888"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.807113" elapsed="0.001343"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.809141" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.808603" elapsed="0.000566"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.809459" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.809240" elapsed="0.000372"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.810356" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:48.809785" elapsed="0.000620"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.809639" elapsed="0.000892"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.809222" elapsed="0.001334"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:48.810702" elapsed="0.000721"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:40:48.812255" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.811578" elapsed="0.000704"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:40:48.812426" elapsed="0.002481"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:40:48.796313" elapsed="0.018660"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.815173" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:48.815062" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.815041" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:40:48.817935" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570048,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:40:48.815375" elapsed="0.002590"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:40:48.818018" elapsed="0.000051"/>
</return>
<msg time="2026-04-19T03:40:48.818202" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570048,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:40:48.775282" elapsed="0.042947"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:40:48.818300" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:40:48.818456" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570048,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:40:48.774652" elapsed="0.043832"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.819439" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570048, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.818981" elapsed="0.000488"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:40:48.819556" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:40:48.819732" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570048, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:40:48.818697" elapsed="0.001062"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:48.820157" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:40:48.819907" elapsed="0.000279"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:48.820540" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:40:48.820333" elapsed="0.000234"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:40:48.820616" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:40:48.820770" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:40:47.950225" elapsed="0.870570"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:40:48.820853" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:40:48.820999" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:40:47.949554" elapsed="0.871514"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:40:48.821364" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.821150" elapsed="0.000447"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.821756" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.821622" elapsed="0.000190"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.821966" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.821836" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.821133" elapsed="0.000980"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:40:47.949396" elapsed="0.872743"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.824414" level="INFO">${session} = ClusterManagement__session_2</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-19T03:40:48.824101" elapsed="0.000341"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:40:48.824489" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:40:48.824639" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:40:48.823732" elapsed="0.000933"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.868418" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:48.868002" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:48.869249" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:48.868965" elapsed="0.000361">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:48.869421" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:48.868629" elapsed="0.000817"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.870045" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:40:48.869623" elapsed="0.000451"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:40:48.870396" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:40:48.870549" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:40:48.870249" elapsed="0.000369"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.871068" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.870791" elapsed="0.000324"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.872057" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:48.871784" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.872523" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:40:48.872253" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.872861" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.873068" elapsed="0.000026"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.873233" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:40:48.872740" elapsed="0.000551"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:40:48.872599" elapsed="0.000722"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:40:48.873368" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:40:48.873530" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:40:48.871512" elapsed="0.002043"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.871211" elapsed="0.002375"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.873743" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:48.873611" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.871189" elapsed="0.002630"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:48.874470" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:48.873998" elapsed="0.000499"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:40:48.874570" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:40:48.867059" elapsed="0.007741"/>
</kw>
<msg time="2026-04-19T03:40:48.874873" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:48.855305" elapsed="0.019637"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.918850" elapsed="0.000042"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:48.962940" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.006936" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.007308" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.007558" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.008667" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.008293" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:49.007997" elapsed="0.000882"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.009181" elapsed="0.000084"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.009535" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.009873" elapsed="0.000072"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:40:49.007952" elapsed="0.002091"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.007800" elapsed="0.002313"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.010255" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.010483" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:40:49.010616" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:40:48.851214" elapsed="0.159428"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:49.013506" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.012561" elapsed="0.001069">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:49.013759" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:49.011398" elapsed="0.002402"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.014442" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.013972" elapsed="0.000651"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.016562" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.015408" elapsed="0.001243"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.014651" elapsed="0.002131"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.013952" elapsed="0.002854"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.019397" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:40:49.016947" elapsed="0.002493"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:40:49.019604" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:40:49.019763" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:40:49.011061" elapsed="0.008728"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:49.022371" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.021816" elapsed="0.000671">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:49.022617" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:49.020690" elapsed="0.001968"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:40:49.023141" elapsed="0.000035"/>
</return>
<status status="PASS" start="2026-04-19T03:40:49.022831" elapsed="0.000458"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.022811" elapsed="0.000505"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.023458" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.023714" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.023887" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:40:49.026058" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:40:49.020377" elapsed="0.005709"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.028309" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.027719" elapsed="0.000737"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.029176" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.028677" elapsed="0.000647"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:49.538572" level="INFO">GET Request : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:40:49.540066" level="INFO">GET Response : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0mrci0qvhtsuxvxxsukfx2lt60.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:40:49 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:40:49.540809" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:40:49.031533" elapsed="0.509533"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.029471" elapsed="0.511942"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.542025" elapsed="0.000160"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.541494" elapsed="0.001042"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.029451" elapsed="0.513144"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.549752" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.547213" elapsed="0.003002"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.545996" elapsed="0.004270"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.545863" elapsed="0.004488"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.553377" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.551156" elapsed="0.002316"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.550518" elapsed="0.003000"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.550460" elapsed="0.003122"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.554965" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.554162" elapsed="0.000938"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.555955" elapsed="0.000190"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.555296" elapsed="0.000915"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.557170" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.556644" elapsed="0.000581"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.556298" elapsed="0.000974"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.555229" elapsed="0.002132"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.558693" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.557891" elapsed="0.000915"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.559787" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.558968" elapsed="0.000945"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.561001" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.560589" elapsed="0.000483"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.559979" elapsed="0.001143"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.558912" elapsed="0.002273"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:49.562155" elapsed="0.000702"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:40:49.564543" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.563815" elapsed="0.000847"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:40:49.565581" elapsed="0.002370"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:40:49.543784" elapsed="0.024470"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.568637" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:49.568441" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.568420" elapsed="0.000378"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:40:49.580706" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:40:49.568941" elapsed="0.011814"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:40:49.580962" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T03:40:49.581178" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:40:49.026519" elapsed="0.554685"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:40:49.581269" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:40:49.581422" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:40:48.832146" elapsed="0.749302"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.581778" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.581533" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.581515" elapsed="0.000416"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:40:49.581974" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:40:48.828418" elapsed="0.753989"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:48.824732" elapsed="0.757726"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:48.824714" elapsed="0.757769"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:40:49.583085" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:40:49.582948" elapsed="0.000197"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.583207" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:49.583169" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.582928" elapsed="0.000341"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.583407" elapsed="0.000022"/>
</kw>
<msg time="2026-04-19T03:40:49.583527" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:40:49.582714" elapsed="0.000839"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.584153" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.583709" elapsed="0.000472"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.584785" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.584325" elapsed="0.000489"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.589588" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.589337" elapsed="0.000298"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.590019" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.589775" elapsed="0.000303"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:49.606953" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:40:49.607065" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:40:49 GMT', 'Expires': 'Sun, 19 Apr 2026 02:40:49 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"3.668 ms","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570049,"status":200} 
 </msg>
<msg time="2026-04-19T03:40:49.607219" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:40:49.591906" elapsed="0.015358"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.590166" elapsed="0.017167"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.607566" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.607369" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.590147" elapsed="0.017537"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.612695" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"3.668 ms","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570049,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.609176" elapsed="0.003792"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.608863" elapsed="0.004285"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.608837" elapsed="0.004354"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.616740" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.613590" elapsed="0.003353"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.613274" elapsed="0.003848"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.613250" elapsed="0.003921"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.618183" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.617385" elapsed="0.000838"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.618644" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.618322" elapsed="0.000541"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.619931" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.619138" elapsed="0.000856"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.618901" elapsed="0.001351"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.618296" elapsed="0.001992"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.621261" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.620499" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.621723" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.621401" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.623072" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.622246" elapsed="0.000876"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.622011" elapsed="0.001243"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.621376" elapsed="0.001903"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:49.623424" elapsed="0.000842"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:40:49.625060" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.624431" elapsed="0.000658"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:40:49.625234" elapsed="0.002502"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:40:49.608339" elapsed="0.019461"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.627978" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:49.627870" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.627851" elapsed="0.000253"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:40:49.630728" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570049,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:40:49.628239" elapsed="0.002519"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:40:49.630810" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:40:49.630968" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570049,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:40:49.585632" elapsed="0.045362"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:40:49.631069" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:40:49.631232" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570049,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:40:49.585016" elapsed="0.046242"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.632315" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570049, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.631757" elapsed="0.000588"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:40:49.632430" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:40:49.632603" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570049, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:40:49.631465" elapsed="0.001165"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:49.633007" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:40:49.632802" elapsed="0.000250"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:49.633402" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:40:49.633199" elapsed="0.000230"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:40:49.633476" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:40:49.633627" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:40:48.823178" elapsed="0.810475"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:40:49.633712" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:40:49.633900" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:40:48.822489" elapsed="0.811438"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:40:49.634233" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.634008" elapsed="0.000456"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.634623" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.634489" elapsed="0.000187"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.634837" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.634700" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.633990" elapsed="0.000924"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:40:48.822326" elapsed="0.812612"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.637257" level="INFO">${session} = ClusterManagement__session_3</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-19T03:40:49.636932" elapsed="0.000353"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:40:49.637331" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:40:49.637477" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:40:49.636633" elapsed="0.000869"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.682141" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.681707" elapsed="0.000465"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:49.682965" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.682696" elapsed="0.000369">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:49.683161" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:49.682358" elapsed="0.000829"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.683774" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:40:49.683369" elapsed="0.000432"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:40:49.684159" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:40:49.684316" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:40:49.683975" elapsed="0.000434"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.684862" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.684587" elapsed="0.000322"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.685894" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.685612" elapsed="0.000338"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.686408" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:40:49.686133" elapsed="0.000302"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.686769" elapsed="0.000024"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.686970" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.687154" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:40:49.686629" elapsed="0.000585"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.686488" elapsed="0.000756"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:40:49.687292" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:40:49.687458" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:40:49.685333" elapsed="0.002152"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.685013" elapsed="0.002505"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.687687" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.687544" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.684989" elapsed="0.002783"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.688432" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:40:49.687933" elapsed="0.000528"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:40:49.688533" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:40:49.680670" elapsed="0.008127"/>
</kw>
<msg time="2026-04-19T03:40:49.688897" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:49.668716" elapsed="0.020279"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.733301" elapsed="0.000062"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.777438" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.821436" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.821801" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.822067" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.822906" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.822533" elapsed="0.000836"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:49.822489" elapsed="0.000959"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.823732" elapsed="0.000071"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.824086" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.824424" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:40:49.822453" elapsed="0.002127"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.822304" elapsed="0.002344"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.824788" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.825046" elapsed="0.000020"/>
</return>
<msg time="2026-04-19T03:40:49.825182" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:40:49.664552" elapsed="0.160657"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:49.827687" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.827120" elapsed="0.000691">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:49.827941" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:49.825943" elapsed="0.002039"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.828656" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:49.828199" elapsed="0.000651"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.830805" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:40:49.829939" elapsed="0.000958"/>
</kw>
<status status="PASS" start="2026-04-19T03:40:49.828877" elapsed="0.002431"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.828178" elapsed="0.003158"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.833809" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:40:49.831477" elapsed="0.002374"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:40:49.834014" elapsed="0.000062"/>
</return>
<msg time="2026-04-19T03:40:49.834218" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:40:49.825614" elapsed="0.008629"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:40:49.836878" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.836310" elapsed="0.000691">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:40:49.837154" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:40:49.834953" elapsed="0.002244"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:40:49.837668" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:40:49.837373" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:49.837353" elapsed="0.000484"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.837992" elapsed="0.000024"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:49.838297" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:40:49.838470" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:40:49.840648" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:40:49.834592" elapsed="0.006084"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.842855" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.842363" elapsed="0.000639"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:49.843783" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:49.843314" elapsed="0.000612"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:54.855993" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.846197" elapsed="5.015422">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:40:49.844101" elapsed="5.018030">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.863071" elapsed="0.000183"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:54.862264" elapsed="0.001324"/>
</branch>
<status status="FAIL" start="2026-04-19T03:40:49.844075" elapsed="5.019574">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.864722" elapsed="0.000046"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.865211" elapsed="0.000023"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:54.865143" elapsed="0.000249"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:54.865110" elapsed="0.000318"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.865656" elapsed="0.000033"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.865981" elapsed="0.000038"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.841158" elapsed="5.025093">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.866369" elapsed="0.000026"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.645024" elapsed="5.221501">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.866981" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:54.866671" elapsed="0.000458"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:54.866644" elapsed="0.000522"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.867246" elapsed="0.000022"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.641330" elapsed="5.226258">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:40:49.637569" elapsed="5.230127">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:40:49.637551" elapsed="5.230191">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.868137" elapsed="0.000039"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.868494" elapsed="0.000034"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.868745" elapsed="0.000030"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.869233" elapsed="0.000040"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.869671" elapsed="0.000034"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.869910" elapsed="0.000030"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.870192" elapsed="0.000033"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.870301" elapsed="0.000029"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.635979" elapsed="5.234518">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.870599" elapsed="0.000023"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:40:49.635300" elapsed="5.235441">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.871145" elapsed="0.000063"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:54.870892" elapsed="0.000371"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.871493" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:54.871298" elapsed="0.000273"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.871798" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:54.871605" elapsed="0.000271"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:54.870861" elapsed="0.001049"/>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:40:49.635138" elapsed="5.236837">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:40:47.949181" elapsed="6.922909">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.872195" elapsed="0.000036"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:40:47.945172" elapsed="6.927204">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.872634" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.872958" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:54.872770" elapsed="0.000485"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:40:54.872745" elapsed="0.000562"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.873501" elapsed="0.000031"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.873738" elapsed="0.000029"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.873833" elapsed="0.000023"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:40:47.940964" elapsed="6.933042">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.874310" elapsed="0.000034"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.874554" elapsed="0.000030"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.874779" elapsed="0.000029"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.875015" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.875587" elapsed="0.000040"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.875842" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.876304" elapsed="0.000024"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.876646" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.876807" elapsed="0.000021"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:40:54.876467" elapsed="0.000396"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:40:54.876388" elapsed="0.000503"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.877053" elapsed="0.000024"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.877213" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.877387" elapsed="0.000020"/>
</kw>
<arg>shard_name=car</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:40:47.940439" elapsed="6.937098">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<arg>shard_name=people</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.877924" elapsed="0.000026"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<arg>shard_name=car-people</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.878257" elapsed="0.000030"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${follower_number}</var>
<arg>${CARPEOPLE_ITEMS} // ${NUM_ODL_SYSTEM}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.878432" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${items_per_follower}</arg>
<arg>${follower_number}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.878593" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${leader_number}</var>
<arg>${CARPEOPLE_ITEMS} - (${NUM_ODL_SYSTEM} - 1) * ${follower_number}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.878748" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${items_per_leader}</arg>
<arg>${leader_number}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:54.878909" elapsed="0.000369"/>
</kw>
<doc>Initialize resources, memorize shard leaders, compute item distribution.</doc>
<status status="FAIL" start="2026-04-19T03:39:54.291010" elapsed="60.588391">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<test id="s1-s22-t1" name="Add_Cars_To_Leader" line="40">
<doc>Add 30 cars to car Leader by one big PUT.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.879552" elapsed="0.000760">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t2" name="See_Added_Cars_On_Leader" line="47">
<doc>GET response from Leader should match the PUT data.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.880524" elapsed="0.000366">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t3" name="See_Added_Cars_On_Followers" line="55">
<doc>The same check on other members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.881191" elapsed="0.000390">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t4" name="Add_People_To_First_Follower" line="65">
<doc>Add 30 people to people first Follower, loop of add-person.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.881905" elapsed="0.000439">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t5" name="See_Added_People_On_Leader" line="69">
<doc>GET response from Leader should match the added people.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.882623" elapsed="0.000399">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t6" name="See_Added_People_On_Followers" line="77">
<doc>The same check on other members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.883332" elapsed="0.000388">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t7" name="Buy_Cars_On_Leader" line="87">
<doc>Buy some cars on car-people Leader, loop of buy-car, ending segment of IDs.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.884016" elapsed="0.000464">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t8" name="Buy_Cars_On_Followers" line="96">
<doc>On each Follower buy corresponding ID segment of cars in buy-car loop.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.884826" elapsed="0.000445">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t9" name="See_Added_CarPeople_On_Leader" line="104">
<doc>GET car-person mappings from Leader to see all entries.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.885528" elapsed="0.000379">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t10" name="See_Added_CarPeople_On_Followers" line="112">
<doc>The same check on other members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.886110" elapsed="0.000387">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t11" name="Delete_All_CarPeople_On_Leader" line="122">
<doc>DELETE car-people container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.886678" elapsed="0.000415">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t12" name="Delete_All_People_On_Leader" line="126">
<doc>DELETE people container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.887326" elapsed="0.000372">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s22-t13" name="Delete_All_Cars_On_Leader" line="130">
<doc>DELETE cars container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:40:54.887869" elapsed="0.000459">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<doc>Suite for performing basic car/people CRUD operations on leaders and followers.

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


More precisely, Update operation is not executed, but some operations
are using specific RPCs which goes beyond "basic CRUD".

Cars are added by one big PUT to datastore on car Leader.
People are added in a loop with add-person RPC on a people Follower.
Cars are bought by chunks on each member, by loop with buy-car RPC.

All data is deleted at the end of the suite.
This suite expects car, people and car-people modules to have separate Shards.</doc>
<status status="FAIL" start="2026-04-19T03:39:54.218830" elapsed="60.669812">Suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</suite>
<suite id="s1-s23" name="Car Failover Crud" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud.robot">
<kw name="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-19T03:40:55.047759" 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-19T03:40:55.043948" elapsed="0.003866"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:40:55.043731" elapsed="0.004156"/>
</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-19T03:40:55.052171" 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-19T03:40:55.048945" elapsed="0.003253"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:40:55.052406" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:55.052282" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:55.052258" elapsed="0.000215"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.052964" 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-19T03:40:55.052612" elapsed="0.000395"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.053483" level="INFO">${cluster_size} = 3</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-19T03:40:55.053172" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-19T03:40:55.053987" elapsed="0.000293"/>
</kw>
<msg time="2026-04-19T03:40:55.054377" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:40:55.054425" level="INFO">${possibly_int_of_members} = 3</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-19T03:40:55.053661" elapsed="0.000787"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.054979" level="INFO">${int_of_members} = 3</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-19T03:40:55.054602" elapsed="0.000403"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.055955" 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-19T03:40:55.055690" elapsed="0.000292"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.056386" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:40:55.056132" elapsed="0.000280"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.056842" 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-19T03:40:55.056557" elapsed="0.000311"/>
</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-19T03:40:55.059766" elapsed="0.000284"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.060520" level="INFO">${member_ip} = 10.30.171.9</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-19T03:40:55.060198" elapsed="0.000348"/>
</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-19T03:40:55.060684" elapsed="0.000229"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.061685" 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-19T03:40:55.061393" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:40:55.061756" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:40:55.061912" 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-19T03:40:55.061115" elapsed="0.000822"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:55.062515" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7827060abd10&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-19T03:40:55.062094" elapsed="0.000554"/>
</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-19T03:40:55.062806" 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-19T03:40:55.059227" elapsed="0.003842"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:40:55.059046" elapsed="0.004069"/>
</iter>
<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-19T03:40:55.063899" elapsed="0.000201"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.064562" level="INFO">${member_ip} = 10.30.171.128</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-19T03:40:55.064243" elapsed="0.000346"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:40:55.064725" elapsed="0.000216"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.065700" level="INFO">${session} = ClusterManagement__session_2</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-19T03:40:55.065410" elapsed="0.000316"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:40:55.065770" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:40:55.065916" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:40:55.065134" elapsed="0.000807"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:55.066496" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782705f12a10&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-19T03:40:55.066096" elapsed="0.000502"/>
</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-19T03:40:55.066745" elapsed="0.000198"/>
</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-19T03:40:55.063365" elapsed="0.003635"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:40:55.063201" elapsed="0.003860"/>
</iter>
<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-19T03:40:55.067846" elapsed="0.000199"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.068508" level="INFO">${member_ip} = 10.30.171.206</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-19T03:40:55.068188" elapsed="0.000345"/>
</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-19T03:40:55.068670" elapsed="0.000215"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.069802" level="INFO">${session} = ClusterManagement__session_3</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-19T03:40:55.069510" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:40:55.069873" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:40:55.070020" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:40:55.069075" elapsed="0.000987"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:40:55.070646" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706085310&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-19T03:40:55.070245" elapsed="0.000525"/>
</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-19T03:40:55.070921" elapsed="0.000206"/>
</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-19T03:40:55.067312" elapsed="0.003874"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:40:55.067146" elapsed="0.004083"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:40:55.056919" elapsed="0.014339"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.071798" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:40:55.071403" elapsed="0.000437"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.072402" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:40:55.071986" elapsed="0.000458"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.072969" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:40:55.072590" elapsed="0.000421"/>
</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-19T03:40:55.055256" elapsed="0.017828"/>
</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-19T03:40:55.048619" elapsed="0.024520"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:40:55.073314" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:55.073202" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:55.073184" elapsed="0.000195"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.076322" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:40:55.075914" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.076795" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:40:55.076494" elapsed="0.000327"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:40:55.076865" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:40:55.077016" level="INFO">${index_list} = [1, 2, 3]</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-19T03:40:55.075603" elapsed="0.001454"/>
</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-19T03:40:55.077999" level="INFO">${member_ip} = 10.30.171.9</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-19T03:40:55.077739" elapsed="0.000300"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.078764" 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-19T03:40:55.078863" 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-19T03:40:55.078590" elapsed="0.000299"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:55.082309" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:55.081678" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:55.081659" elapsed="0.000781"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.083333" 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-19T03:40:55.083627" 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-19T03:40:55.082637" elapsed="0.001047"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.084698" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:55.083961" elapsed="0.000854"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.086168" 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-19T03:40:55.085112" elapsed="0.001112"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.088078" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:40:55.088277" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:40:55.087698" elapsed="0.000628"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:55.088690" elapsed="0.000496"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.090442" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:40:55.689139" 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 Sun Apr 19 03:40:55 UTC 2026

  System load:  0.33               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:39:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:40:55.090005" elapsed="0.599282"/>
</kw>
<msg time="2026-04-19T03:40:55.689371" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:55.089560" elapsed="0.600012"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:40:55.086689" elapsed="0.603044"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.690672" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:40:55.703595" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:40:55.703976" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:40:55.704283" 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-19T03:40:55.690145" elapsed="0.014258"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:55.705158" elapsed="0.001406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.709443" 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-19T03:40:55.707998" elapsed="0.001719"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:40:55.710614" elapsed="0.000080"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:55.710204" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:55.710160" elapsed="0.000710"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:40:55.711381" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T03:40:55.710992" elapsed="0.000612"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:55.710968" elapsed="0.000695"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:40:55.711757" 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-19T03:40:55.716372" elapsed="0.000713"/>
</kw>
<kw name="Open 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-19T03:40:55.717527" elapsed="0.000436"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:55.718549" elapsed="0.000362"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:55.712476" elapsed="0.006539"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:40:55.080626" elapsed="0.638705"/>
</kw>
<msg time="2026-04-19T03:40:55.719480" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:55.079985" elapsed="0.639570"/>
</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-19T03:40:55.079524" elapsed="0.640144"/>
</kw>
<msg time="2026-04-19T03:40:55.719727" 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-19T03:40:55.079048" elapsed="0.640742"/>
</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-19T03:40:55.722986" elapsed="0.000351"/>
</kw>
<kw name="Open 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-19T03:40:55.723499" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:55.723779" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:55.720216" elapsed="0.003719"/>
</kw>
<msg time="2026-04-19T03:40:55.724023" 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-19T03:40:55.078250" elapsed="0.645813"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.724477" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:55.724233" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:40:55.724560" 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-19T03:40:55.077402" elapsed="0.647280"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:40:55.077240" elapsed="0.647478"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:55.725649" level="INFO">${member_ip} = 10.30.171.128</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-19T03:40:55.725370" elapsed="0.000312"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.726524" 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-19T03:40:55.726623" 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-19T03:40:55.726384" elapsed="0.000265"/>
</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-19T03:40:55.730089" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:55.729473" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:55.729453" elapsed="0.000765"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.730896" 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-19T03:40:55.731166" 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-19T03:40:55.730411" elapsed="0.000809"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.732195" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:55.731487" elapsed="0.000822"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.733662" level="INFO">${conn_id} = 24</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:40:55.732582" elapsed="0.001136"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:40:55.735597" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:40:55.735789" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:40:55.735224" elapsed="0.000612"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:55.736210" elapsed="0.000633"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:40:55.738019" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:40:56.306756" 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 Sun Apr 19 03:40:55 UTC 2026

  System load:  0.17               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:39:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:40:55.737694" elapsed="0.569310"/>
</kw>
<msg time="2026-04-19T03:40:56.307114" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:55.737241" elapsed="0.570052"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:40:55.734242" elapsed="0.573230"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.308483" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:40:56.321548" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:40:56.321943" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:40:56.322255" 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-19T03:40:56.307867" elapsed="0.014516"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.323167" elapsed="0.001262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.327122" 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-19T03:40:56.325696" elapsed="0.001685"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:40:56.328582" elapsed="0.000122"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:56.327793" elapsed="0.001096"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:56.327738" elapsed="0.001237"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:40:56.329507" elapsed="0.000094"/>
</return>
<status status="PASS" start="2026-04-19T03:40:56.329168" elapsed="0.000551"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:56.329144" elapsed="0.000631"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:40:56.329861" 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-19T03:40:56.334326" elapsed="0.000666"/>
</kw>
<kw name="Open 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-19T03:40:56.335431" elapsed="0.000424"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.336311" elapsed="0.000341"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:56.330569" elapsed="0.006182"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:40:55.728438" elapsed="0.608575"/>
</kw>
<msg time="2026-04-19T03:40:56.337225" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:55.727803" elapsed="0.609495"/>
</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-19T03:40:55.727292" elapsed="0.610117"/>
</kw>
<msg time="2026-04-19T03:40:56.337464" 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-19T03:40:55.726797" elapsed="0.610730"/>
</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-19T03:40:56.341096" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T03:40:56.341565" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.341847" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:56.337923" elapsed="0.004069"/>
</kw>
<msg time="2026-04-19T03:40:56.342098" 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-19T03:40:55.725917" elapsed="0.616245"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.342573" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:56.342327" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:40:56.342656" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:40:55.724979" elapsed="0.617798"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:40:55.724811" elapsed="0.618008"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:56.343739" level="INFO">${member_ip} = 10.30.171.206</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-19T03:40:56.343470" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.344542" 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-19T03:40:56.344641" 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-19T03:40:56.344407" elapsed="0.000260"/>
</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-19T03:40:56.348239" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:56.347624" elapsed="0.000714"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:56.347605" elapsed="0.000773"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.349075" 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-19T03:40:56.349331" 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-19T03:40:56.348581" elapsed="0.000805"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.350362" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:56.349651" elapsed="0.000824"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.351751" 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-19T03:40:56.350748" elapsed="0.001058"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.353715" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:40:56.353942" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:40:56.353310" elapsed="0.000678"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:56.354362" elapsed="0.000470"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.355987" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:40:56.936374" 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 Sun Apr 19 03:40:56 UTC 2026

  System load:  0.03               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:39:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:40:56.355667" elapsed="0.580852"/>
</kw>
<msg time="2026-04-19T03:40:56.936599" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:56.355227" elapsed="0.581543"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:40:56.352341" elapsed="0.584588"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.937849" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:40:56.950459" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:40:56.950841" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:40:56.951140" 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-19T03:40:56.937331" elapsed="0.013953"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.951981" elapsed="0.001237"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.955861" 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-19T03:40:56.954485" elapsed="0.001707"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:40:56.957271" elapsed="0.000131"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:56.956612" elapsed="0.000992"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:56.956556" elapsed="0.001142"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:40:56.958510" elapsed="0.000166"/>
</return>
<status status="PASS" start="2026-04-19T03:40:56.957895" elapsed="0.000989"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:56.957856" elapsed="0.001125"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:40:56.959209" 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-19T03:40:56.964261" elapsed="0.000670"/>
</kw>
<kw name="Open 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-19T03:40:56.965348" elapsed="0.000430"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.966179" elapsed="0.000342"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:56.960391" elapsed="0.006231"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:40:56.346599" elapsed="0.620285"/>
</kw>
<msg time="2026-04-19T03:40:56.966963" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:40:56.345980" elapsed="0.621080"/>
</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-19T03:40:56.345512" elapsed="0.621679"/>
</kw>
<msg time="2026-04-19T03:40:56.967249" 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-19T03:40:56.344808" elapsed="0.622506"/>
</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-19T03:40:56.970711" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T03:40:56.971417" elapsed="0.000202"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.971807" elapsed="0.000133"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:40:56.967704" elapsed="0.004306"/>
</kw>
<msg time="2026-04-19T03:40:56.972203" 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-19T03:40:56.343967" elapsed="0.628261"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.972644" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:56.972400" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:40:56.972728" 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-19T03:40:56.343111" elapsed="0.629741"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:40:56.342914" elapsed="0.629975"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:40:55.077108" elapsed="1.895815"/>
</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-19T03:40:55.073583" elapsed="1.899396"/>
</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-19T03:40:56.973138" elapsed="0.000211"/>
</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-19T03:40:56.985513" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:56.985353" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:56.985333" elapsed="0.000252"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.985863" 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-19T03:40:56.985967" 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-19T03:40:56.985726" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.986415" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:56.986157" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:56.986840" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:56.986599" elapsed="0.000286"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:56.987693" 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-19T03:40:56.987419" elapsed="0.000395">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:40:56.987921" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:40:56.987967" 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-19T03:40:56.987044" elapsed="0.000947"/>
</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-19T03:40:56.988309" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:56.988096" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:56.988077" elapsed="0.000329"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:56.989158" level="INFO">${ip_address} = 10.30.171.9</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-19T03:40:56.988851" elapsed="0.000333"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:40:56.989232" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:40:56.989382" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:40:56.988593" elapsed="0.000814"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:40:56.989548" elapsed="0.000398"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.990294" level="INFO">index=30
host=10.30.171.9
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-19T03:40:56.990394" level="INFO">${karaf_connection_object} = index=30
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.990183" 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-19T03:40:56.990554" elapsed="0.002122"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:40:56.993104" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:40:57.223627" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:40:56.992828" elapsed="0.230944"/>
</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-19T03:40:57.226939" elapsed="0.000381"/>
</kw>
<kw name="Open 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-19T03:40:57.227470" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:57.227768" elapsed="0.000121"/>
</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-19T03:40:57.224863" elapsed="0.003080"/>
</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-19T03:40:57.224180" elapsed="0.003901"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:40:56.985071" elapsed="0.243064"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:40:56.974042" elapsed="0.254140"/>
</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-19T03:40:56.973676" elapsed="0.254558"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:40:56.973550" elapsed="0.254724"/>
</iter>
<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-19T03:40:57.240260" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:57.240142" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:57.240120" elapsed="0.000215"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:57.240612" 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-19T03:40:57.240716" 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-19T03:40:57.240478" elapsed="0.000264"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:57.241160" level="INFO">{1: 30}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:57.240883" elapsed="0.000321"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:57.241579" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:57.241341" elapsed="0.000282"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:57.242349" level="FAIL">Dictionary does not contain key '2'.</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-19T03:40:57.242119" elapsed="0.000334">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:40:57.242559" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:40:57.242604" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:40:57.241766" elapsed="0.000861"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<arg>SSHLibrary.Switch_Connection</arg>
<arg>${old_connection_index}</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Write</arg>
<arg>logout</arg>
<arg>AND</arg>
<arg>BuiltIn.Run_Keyword_And_Ignore_Error</arg>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Executes all the given keywords in a sequence.</doc>
<status status="NOT RUN" start="2026-04-19T03:40:57.242983" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:57.242702" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:57.242683" elapsed="0.000420"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:57.244043" level="INFO">${ip_address} = 10.30.171.128</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-19T03:40:57.243758" elapsed="0.000313"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:40:57.244121" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:40:57.244277" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:40:57.243300" elapsed="0.001002"/>
</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-19T03:40:57.244447" elapsed="0.000402"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:57.245136" level="INFO">index=32
host=10.30.171.128
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-19T03:40:57.245237" level="INFO">${karaf_connection_object} = index=32
host=10.30.171.128
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-19T03:40:57.245008" elapsed="0.000256"/>
</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-19T03:40:57.245405" elapsed="0.001946"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:40:57.247762" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:40:57.462560" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:40:57.247503" elapsed="0.215230"/>
</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-19T03:40:57.465851" elapsed="0.000369"/>
</kw>
<kw name="Open 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-19T03:40:57.466396" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:40:57.466695" 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-19T03:40:57.463645" elapsed="0.003201"/>
</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-19T03:40:57.463055" elapsed="0.003837"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:40:57.239837" elapsed="0.227107"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:40:57.228881" elapsed="0.238111"/>
</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-19T03:40:57.228507" elapsed="0.238561"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:40:57.228377" elapsed="0.238737"/>
</iter>
<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-19T03:40:57.479365" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:40:57.479247" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:57.479224" elapsed="0.000216"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:57.479737" 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-19T03:40:57.479843" 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-19T03:40:57.479601" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:57.480295" level="INFO">{1: 30, 2: 32}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:57.480012" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:40:57.480720" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:40:57.480479" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:57.481546" level="FAIL">Dictionary does not contain key '3'.</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-19T03:40:57.481300" elapsed="0.000354">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:40:57.481766" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:40:57.481811" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:40:57.480907" elapsed="0.000927"/>
</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-19T03:40:57.482137" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:40:57.481909" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T03:40:57.481891" elapsed="0.000349"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:40:57.482962" level="INFO">${ip_address} = 10.30.171.206</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-19T03:40:57.482700" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:40:57.483051" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:40:57.483206" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:40:57.482441" elapsed="0.000788"/>
</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-19T03:40:57.483371" elapsed="0.000400"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:40:57.484053" level="INFO">index=34
host=10.30.171.206
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-19T03:40:57.484155" level="INFO">${karaf_connection_object} = index=34
host=10.30.171.206
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-19T03:40:57.483930" elapsed="0.000289"/>
</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-19T03:40:57.484360" elapsed="0.001937"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:40:57.486719" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:41:07.549966" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:57.486459" elapsed="10.064372">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:07.554337" 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-19T03:41:07.554872" elapsed="0.000199"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:07.555219" elapsed="0.000105"/>
</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-19T03:41:07.552287" elapsed="0.003091"/>
</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-19T03:41:07.551337" elapsed="0.004089"/>
</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-19T03:40:57.478936" elapsed="10.076581">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:41:07.555610" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:57.467725" elapsed="10.087978">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:40:57.467371" elapsed="10.088398"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:40:57.467231" elapsed="10.088585"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:40:56.973404" elapsed="10.582448"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:40:55.048188" elapsed="12.507725"/>
</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-19T03:41:07.558369" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.558251" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.558230" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:41:07.562695" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.562586" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.562567" elapsed="0.000196"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:07.563699" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:41:07.563314" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:41:07.564195" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:41:07.563875" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:41:07.564267" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:41:07.564422" level="INFO">${index_list} = [1, 2, 3]</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-19T03:41:07.562977" elapsed="0.001470"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:41:07.569276" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.569169" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.569151" 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-19T03:41:07.570515" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.570390" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.570372" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:07.571055" level="INFO">${karaf_connection_index} = 30</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-19T03:41:07.570714" elapsed="0.000368"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:07.571554" 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-19T03:41:07.571312" elapsed="0.000268"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:41:07.632545" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:41:07.572238" elapsed="0.060450"/>
</kw>
<msg time="2026-04-19T03:41:07.632820" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:41:07.632866" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.571730" elapsed="0.061172"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:41:07.712074" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:41:07.633572" elapsed="0.078677"/>
</kw>
<msg time="2026-04-19T03:41:07.712392" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:41:07.712438" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.633081" elapsed="0.079392"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:07.712872" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:07.712563" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.712539" elapsed="0.000526"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:07.713571" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:07.713201" elapsed="0.000456"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:07.715591" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:07.715342" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.713706" elapsed="0.002062"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:41:07.715805" elapsed="0.000034"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:07.717847" 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-19T03:41:07.718644" elapsed="0.000292"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:07.719286" elapsed="0.000239"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:07.717102" elapsed="0.002515"/>
</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-19T03:41:07.716203" elapsed="0.003547"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:41:07.570095" elapsed="0.149756"/>
</kw>
<msg time="2026-04-19T03:41:07.719943" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:41:07.719988" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.569485" elapsed="0.150539"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:41:07.720538" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:41:07.720424" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.720405" elapsed="0.000231"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:07.721024" elapsed="0.000040"/>
</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-19T03:41:07.721366" elapsed="0.000097"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:41:07.721515" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:41:07.568867" elapsed="0.152758"/>
</kw>
<msg time="2026-04-19T03:41:07.721719" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:41:07.721763" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.564827" elapsed="0.156972"/>
</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-19T03:41:07.722129" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:07.721875" elapsed="0.000310"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.721858" elapsed="0.000350"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:41:07.564695" elapsed="0.157537"/>
</iter>
<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-19T03:41:07.727143" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.726992" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.726974" elapsed="0.000239"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:41:07.728365" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.728238" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.728220" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:07.728898" level="INFO">${karaf_connection_index} = 32</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-19T03:41:07.728564" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:07.729316" 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-19T03:41:07.729088" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:41:07.789177" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:41:07.729976" elapsed="0.059609"/>
</kw>
<msg time="2026-04-19T03:41:07.789963" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:41:07.790102" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.729491" elapsed="0.060694"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:41:07.868482" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:41:07.791963" elapsed="0.076712"/>
</kw>
<msg time="2026-04-19T03:41:07.868806" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:41:07.868852" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.790652" elapsed="0.078236"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:07.869370" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:07.868988" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.868957" elapsed="0.000590"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:07.870066" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:07.869685" elapsed="0.000476"/>
</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-19T03:41:07.870453" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:07.870227" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.870209" elapsed="0.000414"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:41:07.870664" elapsed="0.000044"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:07.872982" elapsed="0.000758"/>
</kw>
<kw name="Open 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-19T03:41:07.874090" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:07.874721" 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-19T03:41:07.871970" elapsed="0.003093"/>
</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-19T03:41:07.870980" elapsed="0.004221"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:41:07.727935" elapsed="0.147369"/>
</kw>
<msg time="2026-04-19T03:41:07.875398" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:41:07.875443" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.727352" elapsed="0.148126"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:41:07.875665" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:41:07.875556" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.875537" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:07.876356" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:07.876701" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:41:07.876774" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:41:07.726700" elapsed="0.150182"/>
</kw>
<msg time="2026-04-19T03:41:07.876975" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:41:07.877019" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:41:07.722484" elapsed="0.154584"/>
</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-19T03:41:07.877386" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:07.877146" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.877128" elapsed="0.000335"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:41:07.722356" elapsed="0.155130"/>
</iter>
<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-19T03:41:07.882590" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.882483" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.882465" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:41:07.883808" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:07.883682" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:07.883665" elapsed="0.000209"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:07.884442" level="INFO">${karaf_connection_index} = 34</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-19T03:41:07.884006" elapsed="0.000463"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:07.884866" 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-19T03:41:07.884636" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:41:17.886529" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:41:07.885535" elapsed="10.001938">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:41:17.887706" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:41:17.887756" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:41:07.885054" elapsed="10.002726"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:41:27.889525" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:41:17.888656" elapsed="10.001808">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:41:27.890830" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:41:27.890881" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:41:17.888055" elapsed="10.002852"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:41:27.892260" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud.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-19T03:41:27.891438" elapsed="0.000908">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:41:27.891074" elapsed="0.001413">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:41:27.890998" elapsed="0.001527">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud.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-19T03:41:27.892684" 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-19T03:41:27.892906" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:27.892774" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:27.892756" elapsed="0.000384"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:41:27.893186" 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-19T03:41:27.895592" elapsed="0.000478"/>
</kw>
<kw name="Open 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-19T03:41:27.896409" elapsed="0.000311"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:27.897055" elapsed="0.000247"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:27.894697" elapsed="0.002697"/>
</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-19T03:41:27.893479" elapsed="0.004056"/>
</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-19T03:41:07.883400" elapsed="20.014225">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud.robot"</status>
</kw>
<msg time="2026-04-19T03:41:27.897730" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:41:27.897776" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud.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-19T03:41:07.882798" elapsed="20.015003"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:41:27.897989" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:27.897879" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:27.897860" elapsed="0.000214"/>
</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-19T03:41:27.898875" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:27.898769" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:27.898752" elapsed="0.000188"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:27.899328" 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-19T03:41:27.899434" 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-19T03:41:27.899185" elapsed="0.000276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:27.899873" level="INFO">{1: 30, 2: 32, 3: 34}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:27.899605" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:27.900326" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:27.900077" 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-19T03:41:27.900874" elapsed="0.000308"/>
</kw>
<msg time="2026-04-19T03:41:27.901280" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:41:27.901328" 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-19T03:41:27.900524" elapsed="0.000828"/>
</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-19T03:41:27.902568" elapsed="0.000261"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:41:37.904802" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:41:27.903891" elapsed="10.001681">No match found for '
' in 10 seconds
Output:
.</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-19T03:41:27.903128" elapsed="10.002576"/>
</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-19T03:41:37.906988" elapsed="0.000349"/>
</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-19T03:41:37.906113" elapsed="0.001325"/>
</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-19T03:41:27.901696" elapsed="10.005836"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:27.901466" elapsed="10.006123"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:27.901447" elapsed="10.006177"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:37.908682" level="INFO">${ip_address} = 10.30.171.206</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-19T03:41:37.908209" elapsed="0.000501"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:41:37.908776" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:41:37.908937" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:41:37.907868" elapsed="0.001095"/>
</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-19T03:41:37.909134" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:37.909843" level="INFO">index=39
host=10.30.171.206
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-19T03:41:37.909954" level="INFO">${karaf_connection_object} = index=39
host=10.30.171.206
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-19T03:41:37.909726" elapsed="0.000255"/>
</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-19T03:41:37.910142" elapsed="0.002394"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:41:37.912956" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:41:47.977962" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:37.912692" elapsed="10.066166">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:47.982421" elapsed="0.000749"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:41:47.983430" elapsed="0.000490"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:47.984162" elapsed="0.000203"/>
</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-19T03:41:47.980048" elapsed="0.004405"/>
</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-19T03:41:47.979358" elapsed="0.005145"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:41:27.898512" elapsed="20.086079">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:47.984956" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:41:47.985038" elapsed="0.000034"/>
</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-19T03:41:07.882185" elapsed="40.102982">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:41:47.985279" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:41:47.985324" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:07.877751" elapsed="40.107596"/>
</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-19T03:41:47.985813" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:47.985559" elapsed="0.000309"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:47.985536" elapsed="0.000356"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:41:07.877621" elapsed="40.108303"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:41:07.564500" elapsed="40.421458"/>
</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-19T03:41:07.562294" elapsed="40.423721"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:41:07.556519" elapsed="40.429585"/>
</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-19T03:41:07.556078" elapsed="40.430070"/>
</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-19T03:40:55.043430" elapsed="52.942769"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:47.992362" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:41:47.991953" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:41:47.992843" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:41:47.992540" elapsed="0.000328"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:41:47.992913" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:41:47.993087" level="INFO">${index_list} = [1, 2, 3]</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-19T03:41:47.991598" elapsed="0.001515"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:41:47.993256" elapsed="0.000177"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:47.993945" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:41:47.993580" elapsed="0.000392"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:41:47.994443" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:41:47.994202" elapsed="0.000268"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:41:47.994840" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:41:47.994604" elapsed="0.000262"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:47.997260" 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-19T03:41:47.996834" elapsed="0.000454"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:41:47.997334" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:41:47.997482" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:41:47.996535" elapsed="0.000972"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.042403" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.041995" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.043237" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.042933" elapsed="0.000371">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.043398" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.042607" elapsed="0.000815"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.044005" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:41:48.043606" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.044371" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:41:48.044574" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:41:48.044222" elapsed="0.000378"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.045031" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.044770" elapsed="0.000321"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.045986" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.045732" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.046465" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.046198" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.046793" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.046985" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.047208" elapsed="0.000030"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:41:48.046672" elapsed="0.000603"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.046538" elapsed="0.000767"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:41:48.047349" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:41:48.047509" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:41:48.045472" elapsed="0.002062"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.045181" elapsed="0.002384"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.047724" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.047589" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.045161" elapsed="0.002639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.048420" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.047957" elapsed="0.000492"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.048519" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:41:48.041165" elapsed="0.007582"/>
</kw>
<msg time="2026-04-19T03:41:48.048818" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:48.029011" elapsed="0.019877"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.092943" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.137829" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.183378" elapsed="0.000029"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.183725" elapsed="0.000058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.184014" elapsed="0.000025"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.184792" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.184430" elapsed="0.000495"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:48.184388" elapsed="0.000613"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.185302" elapsed="0.000072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.185642" elapsed="0.000070"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.185978" elapsed="0.000086"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:41:48.184357" elapsed="0.001797"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.184221" elapsed="0.002003"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.186366" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.186592" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:41:48.186716" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:41:48.024748" elapsed="0.161994"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.189471" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.188914" elapsed="0.000675">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.189714" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.187813" elapsed="0.001942"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.190388" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.189924" elapsed="0.000649"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.192575" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.191712" elapsed="0.000951"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.190601" elapsed="0.002192"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.189904" elapsed="0.002913"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.195525" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:41:48.192963" elapsed="0.002604"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:41:48.195726" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:41:48.195888" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:41:48.187494" elapsed="0.008420"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.198230" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.197674" elapsed="0.000670">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.198470" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.196582" elapsed="0.001929"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:41:48.198969" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:41:48.198679" elapsed="0.000474"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.198659" elapsed="0.000522"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.199319" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.199634" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.199806" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:41:48.201950" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:41:48.196273" elapsed="0.005704"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.204244" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.203749" elapsed="0.000639"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.205096" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.204609" elapsed="0.000632"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:48.243527" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:41:48.244179" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01ne69ug3qweavt6snu5tw47mj1.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:41:48 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:41:48.244489" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:41:48.207648" elapsed="0.036931"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.205387" elapsed="0.039356"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.244977" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.244774" elapsed="0.000419"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.205367" elapsed="0.039851"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.249695" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.247194" elapsed="0.002964"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.246584" elapsed="0.003622"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.246526" elapsed="0.003745"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.253324" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.251084" elapsed="0.002333"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.250432" elapsed="0.003032"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.250376" elapsed="0.003152"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.254816" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.254066" elapsed="0.000883"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.255759" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.255155" elapsed="0.000741"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.256735" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.256327" elapsed="0.000462"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.255976" elapsed="0.000861"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.255097" elapsed="0.001801"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.258232" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.257480" elapsed="0.000867"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.259134" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.258513" elapsed="0.000747"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.260065" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.259647" elapsed="0.000476"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.259323" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.258454" elapsed="0.001778"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:48.261281" elapsed="0.000659"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:41:48.263464" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.262885" elapsed="0.000691"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.264511" elapsed="0.002465"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:41:48.245687" elapsed="0.021413"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.267474" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:48.267285" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.267264" elapsed="0.000358"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:41:48.279359" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:41:48.267761" elapsed="0.011644"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:41:48.279566" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:41:48.279732" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:41:48.202417" elapsed="0.077342"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.279821" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:41:48.279971" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:41:48.004972" elapsed="0.275025"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.280328" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.280097" elapsed="0.000339"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.280078" elapsed="0.000382"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.280494" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:41:48.001240" elapsed="0.279376"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:47.997573" elapsed="0.283085"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:47.997555" elapsed="0.283127"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:41:48.281274" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:41:48.281167" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.281394" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:48.281357" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.281149" elapsed="0.000306"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.281588" elapsed="0.000048"/>
</kw>
<msg time="2026-04-19T03:41:48.281735" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:41:48.280902" elapsed="0.000859"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.282301" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.281913" elapsed="0.000415"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.282929" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.282471" elapsed="0.000486"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.287812" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.287564" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.288268" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.287999" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:48.296198" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:41:48.296258" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:41:48 GMT', 'Expires': 'Sun, 19 Apr 2026 02:41:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"353.7 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570108,"status":200} 
 </msg>
<msg time="2026-04-19T03:41:48.296362" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:41:48.290194" elapsed="0.006193"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.288377" elapsed="0.008053"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.296594" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.296455" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.288359" elapsed="0.008318"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.300209" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"353.7 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570108,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.297708" elapsed="0.002693"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.297503" elapsed="0.003009"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.297485" elapsed="0.003056"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.303094" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.300812" elapsed="0.002428"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.300597" elapsed="0.002752"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.300581" elapsed="0.002797"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.304079" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.303527" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.304399" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.304179" elapsed="0.000371"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.305267" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.304723" elapsed="0.000587"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.304577" elapsed="0.000854"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.304161" elapsed="0.001294"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.306132" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.305600" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.306479" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.306257" elapsed="0.000373"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.307344" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.306802" elapsed="0.000584"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.306657" elapsed="0.000852"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.306214" elapsed="0.001319"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:48.307673" elapsed="0.000898"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:41:48.309333" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.308725" elapsed="0.000635"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.309501" elapsed="0.002479"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:41:48.297131" elapsed="0.015204"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.312517" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:48.312409" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.312390" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:41:48.315390" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570108,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:41:48.312711" elapsed="0.002708"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:41:48.315470" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:41:48.315627" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570108,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:41:48.283769" elapsed="0.031884"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.315709" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:41:48.315855" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570108,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:41:48.283176" elapsed="0.032707"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.316957" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570108, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.316515" elapsed="0.000470"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:41:48.317087" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:41:48.317264" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570108, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:41:48.316240" elapsed="0.001051"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:48.317636" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.317434" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:48.318004" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.317805" elapsed="0.000228"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:41:48.318093" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:41:48.318246" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:41:47.995970" elapsed="0.322300"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:41:48.318327" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:41:48.318473" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:41:47.995311" elapsed="0.323186"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.318797" elapsed="0.000193"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.318592" elapsed="0.000435"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.319201" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.319068" elapsed="0.000186"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.319404" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.319277" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.318575" elapsed="0.000901"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:41:47.995139" elapsed="0.324361"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.321697" level="INFO">${session} = ClusterManagement__session_2</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-19T03:41:48.321401" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:41:48.321768" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:41:48.321918" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:41:48.321122" elapsed="0.000821"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.366080" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.365685" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.366844" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.366607" elapsed="0.000305">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.367003" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.366283" elapsed="0.000748"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.367614" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:41:48.367226" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.367969" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:41:48.368126" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:41:48.367828" elapsed="0.000355"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.368604" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.368353" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.369560" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.369309" elapsed="0.000295"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.370017" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.369752" elapsed="0.000317"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.370377" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.370567" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.370726" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:41:48.370257" elapsed="0.000526"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.370119" elapsed="0.000692"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:41:48.370854" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:41:48.371009" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:41:48.369034" elapsed="0.002003"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.368737" elapsed="0.002346"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.371242" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.371108" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.368718" elapsed="0.002599"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.371938" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.371472" elapsed="0.000494"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.372039" elapsed="0.000045"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:41:48.364830" elapsed="0.007454"/>
</kw>
<msg time="2026-04-19T03:41:48.372354" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:48.353007" elapsed="0.019415"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.416702" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.462379" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.508462" elapsed="0.000046"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.508866" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.509132" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.509934" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.509572" elapsed="0.000512"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:48.509531" elapsed="0.000629"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.510440" elapsed="0.000071"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.510775" elapsed="0.000070"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.511476" elapsed="0.000074"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:41:48.509499" elapsed="0.002138"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.509358" elapsed="0.002346"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.511846" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.512086" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:41:48.512212" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:41:48.348797" elapsed="0.163441"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.514664" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.514104" elapsed="0.000678">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.514910" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.512963" elapsed="0.001988"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.515988" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.515537" elapsed="0.000872"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.518041" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.517183" elapsed="0.000961"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.516437" elapsed="0.001836"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.515515" elapsed="0.002784"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.520945" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:41:48.518460" elapsed="0.002528"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:41:48.521198" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:41:48.521360" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:41:48.512636" elapsed="0.008748"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.523955" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.523362" elapsed="0.000766">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.524260" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.522212" elapsed="0.002099"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:41:48.524779" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:41:48.524489" elapsed="0.000429"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.524468" elapsed="0.000477"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.525101" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.525356" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.525526" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:41:48.529071" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:41:48.521726" elapsed="0.007374"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.531364" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.530865" elapsed="0.000645"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.532378" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.531730" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:48.565659" level="INFO">GET Request : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:41:48.566305" level="INFO">GET Response : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0zcehiodh6khvwk9zodym3n371.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:41:48 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:41:48.566609" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:41:48.534724" elapsed="0.031976"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.532668" elapsed="0.034173"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.567099" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.566872" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.532648" elapsed="0.034668"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.571803" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.569303" elapsed="0.002950"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.568673" elapsed="0.003627"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.568615" elapsed="0.003752"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.575321" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.573169" elapsed="0.002244"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.572529" elapsed="0.002930"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.572473" elapsed="0.003050"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.576812" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.576047" elapsed="0.000893"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.577726" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.577122" elapsed="0.000729"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.578656" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.578253" elapsed="0.000458"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.577913" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.577051" elapsed="0.001766"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.580180" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.579438" elapsed="0.000852"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.581090" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.580453" elapsed="0.000765"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.582002" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.581600" elapsed="0.000474"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.581280" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.580397" elapsed="0.001786"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:48.583207" elapsed="0.000656"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:41:48.585382" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.584793" elapsed="0.000701"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.586415" elapsed="0.002399"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:41:48.567775" elapsed="0.021146"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.589340" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:48.589122" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.589101" elapsed="0.000388"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:41:48.601081" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:41:48.589626" elapsed="0.011504"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:41:48.601294" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:41:48.601464" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:41:48.529678" elapsed="0.071813"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.601571" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:41:48.601721" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:41:48.329370" elapsed="0.272378"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.602079" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.601832" elapsed="0.000358"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.601814" elapsed="0.000401"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.602249" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:41:48.325673" elapsed="0.276699"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.322008" elapsed="0.280408"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.321991" elapsed="0.280449"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:41:48.602982" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T03:41:48.602875" elapsed="0.000170"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.603149" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:48.603109" elapsed="0.000080"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.602858" elapsed="0.000353"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.603346" elapsed="0.000021"/>
</kw>
<msg time="2026-04-19T03:41:48.603465" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:41:48.602658" elapsed="0.000833"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.604018" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.603646" elapsed="0.000404"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.604680" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.604215" elapsed="0.000493"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.609590" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.609340" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.610038" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.609794" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:48.619709" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:41:48.619769" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:41:48 GMT', 'Expires': 'Sun, 19 Apr 2026 02:41:48 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"394.3 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570108,"status":200} 
 </msg>
<msg time="2026-04-19T03:41:48.619875" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:41:48.611959" elapsed="0.007945"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.610167" elapsed="0.009781"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.620131" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.619974" elapsed="0.000221"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.610149" elapsed="0.010068"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.623746" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"394.3 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570108,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.621252" elapsed="0.002683"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.621032" elapsed="0.003032"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.621011" elapsed="0.003084"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.626606" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.624367" elapsed="0.002382"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.624153" elapsed="0.002706"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.624136" elapsed="0.002752"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.627571" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.627039" elapsed="0.000560"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.627886" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.627668" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.628758" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.628230" elapsed="0.000571"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.628083" elapsed="0.000840"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.627650" elapsed="0.001298"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.629625" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.629114" elapsed="0.000539"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.629940" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.629723" elapsed="0.000418"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.630870" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.630344" elapsed="0.000568"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.630169" elapsed="0.000870"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.629705" elapsed="0.001372"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:48.631220" elapsed="0.000686"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:41:48.632669" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.632077" elapsed="0.000619"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.632839" elapsed="0.002715"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:41:48.620654" elapsed="0.014965"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.635796" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:48.635689" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.635670" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:41:48.638750" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570108,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:41:48.635994" elapsed="0.002785"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:41:48.638832" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:41:48.638988" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570108,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:41:48.605536" elapsed="0.033478"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.639089" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:41:48.639238" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570108,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:41:48.604920" elapsed="0.034344"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.640297" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570108, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.639744" elapsed="0.000583"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:41:48.640411" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:41:48.640587" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570108, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:41:48.639470" elapsed="0.001144"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:48.640960" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.640758" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:48.641349" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.641148" elapsed="0.000227"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:41:48.641423" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:41:48.641572" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:41:48.320561" elapsed="0.321036"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:41:48.641654" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:41:48.641798" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:41:48.319817" elapsed="0.322006"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.642213" elapsed="0.000194"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.641900" elapsed="0.000545"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.642619" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.642470" elapsed="0.000204"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.642827" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.642698" elapsed="0.000179"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.641883" elapsed="0.001016"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:41:48.319661" elapsed="0.323263"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.645074" level="INFO">${session} = ClusterManagement__session_3</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-19T03:41:48.644760" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:41:48.645149" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:41:48.645295" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:41:48.644479" elapsed="0.000842"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.689821" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.689444" elapsed="0.000405"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.690627" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.690368" elapsed="0.000331">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.690791" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.690023" elapsed="0.000792"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.691402" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:41:48.690991" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.691747" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:41:48.691909" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:41:48.691600" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.692419" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.692164" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.693376" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.693124" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.693832" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:41:48.693566" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.694207" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.694401" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.694561" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:41:48.694082" elapsed="0.000536"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.693907" elapsed="0.000740"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:41:48.694691" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:41:48.694846" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:41:48.692845" elapsed="0.002026"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.692559" elapsed="0.002343"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.695074" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.694926" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.692539" elapsed="0.002612"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.695741" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:41:48.695306" elapsed="0.000463"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:41:48.695849" elapsed="0.000054"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:41:48.688589" elapsed="0.007530"/>
</kw>
<msg time="2026-04-19T03:41:48.696191" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:48.676714" elapsed="0.019545"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.740454" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.785625" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.831295" elapsed="0.000069"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.831775" elapsed="0.000026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.832046" elapsed="0.000038"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.833013" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.832625" elapsed="0.000549"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:48.832577" elapsed="0.000678"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.833551" elapsed="0.000085"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.833917" elapsed="0.000073"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.834617" elapsed="0.000081"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:41:48.832530" elapsed="0.002259"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.832345" elapsed="0.002514"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.835006" elapsed="0.000025"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.835261" elapsed="0.000022"/>
</return>
<msg time="2026-04-19T03:41:48.835459" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:41:48.672570" elapsed="0.162918"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.838539" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.837532" elapsed="0.001143">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.838814" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.836332" elapsed="0.002527"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.839539" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:48.839036" elapsed="0.000687"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.841473" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:41:48.840523" elapsed="0.001043"/>
</kw>
<status status="PASS" start="2026-04-19T03:41:48.839751" elapsed="0.001953"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.839012" elapsed="0.002717"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.844576" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:41:48.841877" elapsed="0.002742"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:41:48.844781" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:41:48.844946" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:41:48.835954" elapsed="0.009016"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:41:48.847559" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.847000" elapsed="0.000690">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:41:48.847818" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:41:48.845646" elapsed="0.002213"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:41:48.848356" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:41:48.848032" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:48.848012" elapsed="0.000509"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.848656" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:48.848908" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:41:48.849104" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:41:48.851375" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:41:48.845335" elapsed="0.006067"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.853541" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.853048" elapsed="0.000640"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:48.854457" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:48.853908" elapsed="0.000693"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:53.866860" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.857021" elapsed="5.015108">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:41:48.854776" elapsed="5.017796">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.873285" elapsed="0.000118"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:53.872697" elapsed="0.001025"/>
</branch>
<status status="FAIL" start="2026-04-19T03:41:48.854727" elapsed="5.019055">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.875023" elapsed="0.000069"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.875348" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:53.875304" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:53.875278" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.875640" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.875834" elapsed="0.000019"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.851858" elapsed="5.024106">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.876076" elapsed="0.000020"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.653000" elapsed="5.223186">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.876464" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:53.876286" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:53.876267" elapsed="0.000295"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.876595" elapsed="0.000014"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.649147" elapsed="5.227549">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:41:48.645387" elapsed="5.231378">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:41:48.645370" elapsed="5.231426">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.877035" elapsed="0.000039"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.877251" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.877410" elapsed="0.000019"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.877624" elapsed="0.000024"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.878003" elapsed="0.000028"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.878188" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.878364" elapsed="0.000020"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.878430" elapsed="0.000016"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.643919" elapsed="5.234615">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.878606" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:41:48.643263" elapsed="5.235440">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.878925" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:53.878794" elapsed="0.000185"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.879154" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:53.879001" elapsed="0.000208"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.879360" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:53.879231" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:53.878777" elapsed="0.000656"/>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:41:48.643104" elapsed="5.236372">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:41:47.994914" elapsed="5.884625">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.879596" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:41:47.990915" elapsed="5.888780">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.879865" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.880154" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:53.879951" elapsed="0.000257"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:41:53.879934" elapsed="0.000296"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.880353" elapsed="0.000020"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.880509" elapsed="0.000020"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.880573" elapsed="0.000015"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:41:47.986875" elapsed="5.893799">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.880848" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.881009" elapsed="0.000022"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.881179" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.881339" elapsed="0.000019"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.881592" elapsed="0.000024"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.881760" elapsed="0.000019"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.881911" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.882243" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.882428" elapsed="0.000021"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:41:53.882069" elapsed="0.000415"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.881983" elapsed="0.000527"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.882650" elapsed="0.000020"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.882804" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:41:53.882966" elapsed="0.000019"/>
</kw>
<arg>shard_name=car</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:41:47.986484" elapsed="5.896611">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<doc>Initialize resources, memorize car shard leader and followers.</doc>
<status status="FAIL" start="2026-04-19T03:40:55.043106" elapsed="58.840084">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<test id="s1-s23-t1" name="Add_Original_Cars_On_Old_Leader_And_Verify" line="44">
<doc>Add initial cars on car Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.883274" elapsed="0.000660">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t2" name="Stop_Original_Car_Leader" line="63">
<doc>Stop the car Leader to cause a new leader to get elected.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.884310" elapsed="0.000464">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t3" name="Wait_For_New_Leader" line="67">
<doc>Wait until new car Leader is elected.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.885035" elapsed="0.000377">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t4" name="See_Original_Cars_On_New_Leader" line="75">
<doc>GET cars from new Leader, should be the initial ones.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.885672" elapsed="0.000425">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t5" name="See_Original_Cars_On_New_Followers" line="84">
<doc>The same check on other existing member(s).</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.886433" elapsed="0.000657">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t6" name="Delete_Original_Cars_On_New_Leader" line="95">
<doc>Delete cars on the new Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.887360" elapsed="0.000373">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t7" name="Add_Leader_Cars_On_New_Leader" line="99">
<doc>Add cars on the new Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.887980" elapsed="0.000383">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t8" name="See_Leader_Cars_On_New_Leader" line="107">
<doc>GET cars from new Leader, should be the new ones.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.888634" elapsed="0.000392">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t9" name="See_Leader_Cars_On_New_Followers" line="116">
<doc>The same check on other existing members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.889296" elapsed="0.000387">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t10" name="Delete_Leader_Cars_On_New_First_Follower" line="127">
<doc>Delete cars in new first Follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.889940" elapsed="0.000409">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t11" name="Add_Follower_Cars_On_New_First_Follower" line="131">
<doc>Add cars on the new first Follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.890652" elapsed="0.000443">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t12" name="See_Folower_Cars_On_New_Leader" line="139">
<doc>Get cars from the new Leader, should be the ones added on follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.891346" elapsed="0.000385">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t13" name="See_Follower_Cars_On_New_Followers" line="148">
<doc>The same check on other existing members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.891934" elapsed="0.000367">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t14" name="Start_Old_Car_Leader" line="159">
<doc>Start the stopped member without deleting the persisted data.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.892471" elapsed="0.000347">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t15" name="See_Folower_Cars_On_Old_Leader" line="172">
<doc>GET cars from the restarted member, should be the ones added on follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.892988" elapsed="0.000485">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s23-t16" name="Delete_Follower_Cars_On_New_Leader" line="181">
<doc>Delete cars on the last Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:41:53.893729" elapsed="0.000392">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<doc>Suite mixing basic operations with restart of car Leader.

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


This test stops the current leader of the "car" shard and then executes CRD
operations on the new leader and a new follower. The stopped member is brought back.
This suite uses 3 different car sets, same size but different starting ID.

Other models and shards (people, car-people) are not accessed by this suite.

All data is deleted at the end of the suite.
This suite expects car module to have a separate Shard.</doc>
<status status="FAIL" start="2026-04-19T03:40:54.889366" elapsed="59.005168">Suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</suite>
<suite id="s1-s24" name="Car Persistence Recovery" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_persistence_recovery.robot">
<kw name="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-19T03:41:53.964470" 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-19T03:41:53.960784" elapsed="0.003740"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:41:53.960560" elapsed="0.004037"/>
</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-19T03:41:53.968867" 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-19T03:41:53.965674" elapsed="0.003220"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:41:53.969130" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:53.968983" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:53.968958" elapsed="0.000242"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.969692" 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-19T03:41:53.969343" elapsed="0.000392"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.970208" level="INFO">${cluster_size} = 3</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-19T03:41:53.969884" elapsed="0.000350"/>
</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-19T03:41:53.970721" elapsed="0.000285"/>
</kw>
<msg time="2026-04-19T03:41:53.971126" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:41:53.971173" level="INFO">${possibly_int_of_members} = 3</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-19T03:41:53.970390" elapsed="0.000806"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.971756" level="INFO">${int_of_members} = 3</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-19T03:41:53.971355" elapsed="0.000427"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.972742" 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-19T03:41:53.972480" elapsed="0.000289"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.973177" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:41:53.972904" elapsed="0.000300"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.973641" 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-19T03:41:53.973353" elapsed="0.000314"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:41:53.976548" elapsed="0.000215"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.977256" level="INFO">${member_ip} = 10.30.171.9</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-19T03:41:53.976913" elapsed="0.000369"/>
</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-19T03:41:53.977422" elapsed="0.000230"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.978502" 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-19T03:41:53.978207" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:41:53.978575" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:41:53.978735" 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-19T03:41:53.977833" elapsed="0.000927"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:53.979514" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6e01b50&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-19T03:41:53.978906" elapsed="0.000782"/>
</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-19T03:41:53.979840" elapsed="0.000189"/>
</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-19T03:41:53.975975" elapsed="0.004138"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:41:53.975796" elapsed="0.004362"/>
</iter>
<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-19T03:41:53.980951" elapsed="0.000205"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.981618" level="INFO">${member_ip} = 10.30.171.128</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-19T03:41:53.981300" elapsed="0.000346"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${index_to_ip_mapping}</arg>
<arg>${index}</arg>
<arg>${member_ip}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:41:53.981783" elapsed="0.000217"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.982763" level="INFO">${session} = ClusterManagement__session_2</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-19T03:41:53.982472" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:41:53.982836" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:41:53.982983" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:41:53.982196" elapsed="0.000811"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:53.983656" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f71f8a90&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-19T03:41:53.983240" elapsed="0.000520"/>
</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-19T03:41:53.983908" elapsed="0.000214"/>
</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-19T03:41:53.980411" elapsed="0.003770"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:41:53.980245" elapsed="0.003980"/>
</iter>
<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-19T03:41:53.985018" elapsed="0.000213"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.985694" level="INFO">${member_ip} = 10.30.171.206</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-19T03:41:53.985375" elapsed="0.000345"/>
</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-19T03:41:53.985857" elapsed="0.000241"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.986852" level="INFO">${session} = ClusterManagement__session_3</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-19T03:41:53.986558" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:41:53.986924" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:41:53.987093" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:41:53.986279" elapsed="0.000840"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:41:53.987661" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7482f10&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-19T03:41:53.987260" elapsed="0.000540"/>
</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-19T03:41:53.988091" 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-19T03:41:53.984478" elapsed="0.003872"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:41:53.984309" elapsed="0.004085"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:41:53.973724" elapsed="0.014700"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.988970" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:41:53.988573" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.989579" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:41:53.989181" elapsed="0.000440"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.990169" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:41:53.989770" elapsed="0.000443"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-19T03:41:53.972024" elapsed="0.018246"/>
</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-19T03:41:53.965341" elapsed="0.024985"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:41:53.990503" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:53.990390" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:53.990372" 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-19T03:41:53.993554" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:41:53.993178" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:41:53.994023" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:41:53.993724" elapsed="0.000342"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:41:53.994111" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:41:53.994264" level="INFO">${index_list} = [1, 2, 3]</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-19T03:41:53.992847" elapsed="0.001441"/>
</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-19T03:41:53.995253" level="INFO">${member_ip} = 10.30.171.9</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-19T03:41:53.994969" elapsed="0.000311"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:53.996478" 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-19T03:41:53.996732" 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-19T03:41:53.996002" elapsed="0.000789"/>
</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-19T03:41:54.004496" elapsed="0.000087"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:54.003085" elapsed="0.001612"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:54.003009" elapsed="0.001774"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.005662" 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-19T03:41:54.005923" 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-19T03:41:54.005160" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.007036" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:54.006280" elapsed="0.000903"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.008628" level="INFO">${conn_id} = 41</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:41:54.007528" elapsed="0.001160"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.010697" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:41:54.010896" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:41:54.010310" elapsed="0.000638"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.011337" elapsed="0.000495"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.013207" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:41:54.317886" 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 Sun Apr 19 03:40:55 UTC 2026

  System load:  0.33               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:40:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:41:54.012857" elapsed="0.305210"/>
</kw>
<msg time="2026-04-19T03:41:54.318158" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.012266" elapsed="0.306072"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:41:54.009205" elapsed="0.309312"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.319520" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:41:54.332217" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:41:54.332496" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:41:54.332664" 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-19T03:41:54.318918" elapsed="0.013827"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:54.333373" elapsed="0.001276"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.337451" 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-19T03:41:54.335982" elapsed="0.001724"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:41:54.338856" elapsed="0.000126"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:54.338260" elapsed="0.000963"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:54.338203" elapsed="0.001114"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:41:54.340094" elapsed="0.000208"/>
</return>
<status status="PASS" start="2026-04-19T03:41:54.339506" elapsed="0.001000"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:54.339468" elapsed="0.001128"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:41:54.340737" 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-19T03:41:54.344199" elapsed="0.000528"/>
</kw>
<kw name="Open 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-19T03:41:54.345022" elapsed="0.000358"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:54.345654" elapsed="0.000249"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:54.341478" elapsed="0.004501"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:41:54.000756" elapsed="0.345538"/>
</kw>
<msg time="2026-04-19T03:41:54.346355" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:53.999354" elapsed="0.347060"/>
</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-19T03:41:53.998282" elapsed="0.348212"/>
</kw>
<msg time="2026-04-19T03:41:54.346602" 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-19T03:41:53.997166" elapsed="0.349487"/>
</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-19T03:41:54.349085" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:41:54.349564" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:54.349848" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:54.346935" elapsed="0.003062"/>
</kw>
<msg time="2026-04-19T03:41:54.350209" 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-19T03:41:53.995486" elapsed="0.354750"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.350668" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:54.350414" elapsed="0.000296"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:41:54.350754" 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-19T03:41:53.994631" elapsed="0.356250"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:41:53.994466" elapsed="0.356453"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:54.351869" level="INFO">${member_ip} = 10.30.171.128</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-19T03:41:54.351591" elapsed="0.000304"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.352645" 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-19T03:41:54.352745" 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-19T03:41:54.352501" elapsed="0.000270"/>
</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-19T03:41:54.358257" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:54.357627" elapsed="0.000722"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:54.357602" elapsed="0.000788"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.359105" 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-19T03:41:54.359359" 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-19T03:41:54.358588" elapsed="0.000828"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.360428" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:54.359695" elapsed="0.000877"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.361870" level="INFO">${conn_id} = 44</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:41:54.360856" elapsed="0.001069"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.363869" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:41:54.364080" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:41:54.363481" elapsed="0.000648"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.364485" elapsed="0.000531"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.366238" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:41:54.694693" 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 Sun Apr 19 03:40:55 UTC 2026

  System load:  0.17               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:40:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:41:54.365883" elapsed="0.329147"/>
</kw>
<msg time="2026-04-19T03:41:54.695175" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.365412" elapsed="0.330008"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:41:54.362408" elapsed="0.333250"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.697091" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:41:54.710619" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:41:54.711016" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:41:54.711232" 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-19T03:41:54.696247" elapsed="0.015071"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:54.711903" elapsed="0.001042"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.714810" 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-19T03:41:54.713825" elapsed="0.001166"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:41:54.715718" elapsed="0.000087"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:54.715294" elapsed="0.000632"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:54.715251" elapsed="0.000736"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:41:54.716534" elapsed="0.000117"/>
</return>
<status status="PASS" start="2026-04-19T03:41:54.716164" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:54.716136" elapsed="0.000714"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:41:54.716953" elapsed="0.000025"/>
</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-19T03:41:54.722032" elapsed="0.001039"/>
</kw>
<kw name="Open 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-19T03:41:54.723504" elapsed="0.000486"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:54.724417" elapsed="0.000384"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:54.717725" elapsed="0.007186"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:41:54.356602" elapsed="0.368647"/>
</kw>
<msg time="2026-04-19T03:41:54.725343" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.355914" elapsed="0.369526"/>
</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-19T03:41:54.355418" elapsed="0.370147"/>
</kw>
<msg time="2026-04-19T03:41:54.725630" 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-19T03:41:54.352914" elapsed="0.372788"/>
</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-19T03:41:54.729446" elapsed="0.000514"/>
</kw>
<kw name="Open 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-19T03:41:54.730484" elapsed="0.000250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:54.730943" elapsed="0.000182"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:54.726246" elapsed="0.004959"/>
</kw>
<msg time="2026-04-19T03:41:54.731347" 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-19T03:41:54.352120" elapsed="0.379267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.732075" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:54.731670" elapsed="0.000475"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:41:54.732216" elapsed="0.000056"/>
</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-19T03:41:54.351220" elapsed="0.381195"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:41:54.351022" elapsed="0.381543"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:54.733931" level="INFO">${member_ip} = 10.30.171.206</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-19T03:41:54.733563" elapsed="0.000405"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.735236" 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-19T03:41:54.735385" 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-19T03:41:54.734993" elapsed="0.000432"/>
</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-19T03:41:54.743631" elapsed="0.000099"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:54.741968" elapsed="0.001888"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:54.741914" elapsed="0.002035"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.745635" 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-19T03:41:54.746087" 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-19T03:41:54.744504" elapsed="0.001685"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.747952" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:54.746646" elapsed="0.001515"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.750367" 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-19T03:41:54.748629" elapsed="0.001837"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:41:54.754024" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:41:54.754282" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:41:54.753381" elapsed="0.000950"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.754728" elapsed="0.001101"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:41:54.757269" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:41:55.086506" 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 Sun Apr 19 03:40:56 UTC 2026

  System load:  0.03               Processes:             123
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:40:56 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:41:54.756757" elapsed="0.329924"/>
</kw>
<msg time="2026-04-19T03:41:55.086791" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.756266" elapsed="0.330747"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:41:54.751490" elapsed="0.335781"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.088607" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:41:55.102514" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:41:55.103008" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:41:55.103327" 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-19T03:41:55.087804" elapsed="0.015645"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.104292" elapsed="0.001454"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.107655" 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-19T03:41:55.106740" elapsed="0.001166"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:41:55.108605" elapsed="0.000080"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:55.108213" elapsed="0.000591"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.108175" elapsed="0.000686"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:41:55.109560" elapsed="0.000107"/>
</return>
<status status="PASS" start="2026-04-19T03:41:55.109002" elapsed="0.000787"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.108957" elapsed="0.000892"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:41:55.109938" 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-19T03:41:55.114460" elapsed="0.000493"/>
</kw>
<kw name="Open 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-19T03:41:55.115257" elapsed="0.000314"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.115841" elapsed="0.000454"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:55.110662" elapsed="0.005707"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:41:54.739170" elapsed="0.377388"/>
</kw>
<msg time="2026-04-19T03:41:55.116618" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:41:54.737475" elapsed="0.379202"/>
</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-19T03:41:54.736371" elapsed="0.380387"/>
</kw>
<msg time="2026-04-19T03:41:55.116800" 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-19T03:41:54.735637" elapsed="0.381209"/>
</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-19T03:41:55.119224" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:41:55.119682" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.119959" elapsed="0.000113"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:55.117154" elapsed="0.002969"/>
</kw>
<msg time="2026-04-19T03:41:55.120216" 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-19T03:41:54.734467" elapsed="0.385774"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.120647" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:55.120403" elapsed="0.000284"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:41:55.120729" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:41:54.733014" elapsed="0.387838"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:41:54.732745" elapsed="0.388145"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:41:53.994340" elapsed="1.126586"/>
</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-19T03:41:53.990773" elapsed="1.130210"/>
</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-19T03:41:55.121202" elapsed="0.000218"/>
</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-19T03:41:55.133920" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:55.133808" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.133789" elapsed="0.000198"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.134290" 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-19T03:41:55.134392" 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-19T03:41:55.134152" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.134817" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:55.134559" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.135310" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:55.135062" elapsed="0.000292"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:55.136085" 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-19T03:41:55.135845" elapsed="0.000347">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:41:55.136299" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:41:55.136343" 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-19T03:41:55.135499" elapsed="0.000867"/>
</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-19T03:41:55.136653" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:55.136441" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.136423" elapsed="0.000327"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:55.137630" level="INFO">${ip_address} = 10.30.171.9</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-19T03:41:55.137356" elapsed="0.000301"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:41:55.137705" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:41:55.137854" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:41:55.136937" elapsed="0.000942"/>
</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-19T03:41:55.138018" elapsed="0.000424"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.138705" level="INFO">index=50
host=10.30.171.9
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-19T03:41:55.138804" level="INFO">${karaf_connection_object} = index=50
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.138596" 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-19T03:41:55.138964" elapsed="0.001911"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.141304" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:41:55.357507" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:41:55.141030" elapsed="0.216712"/>
</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-19T03:41:55.361626" elapsed="0.000389"/>
</kw>
<kw name="Open 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-19T03:41:55.362198" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.362517" elapsed="0.000103"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:41:55.359107" elapsed="0.003569"/>
</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-19T03:41:55.358288" elapsed="0.004435"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.133522" elapsed="0.229253"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:41:55.122205" elapsed="0.240620"/>
</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-19T03:41:55.121757" elapsed="0.241124"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:41:55.121629" elapsed="0.241403"/>
</iter>
<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-19T03:41:55.374963" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:55.374835" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.374809" elapsed="0.000250"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.375342" 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-19T03:41:55.375450" 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-19T03:41:55.375205" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.375883" level="INFO">{1: 50}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:55.375618" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.376363" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:55.376112" elapsed="0.000296"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:55.377154" level="FAIL">Dictionary does not contain key '2'.</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-19T03:41:55.376894" elapsed="0.000388">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:41:55.377392" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:41:55.377438" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:41:55.376553" elapsed="0.000908"/>
</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-19T03:41:55.377747" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:55.377537" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.377518" elapsed="0.000326"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:55.378572" level="INFO">${ip_address} = 10.30.171.128</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-19T03:41:55.378308" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:41:55.378647" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:41:55.378801" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:41:55.378033" 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-19T03:41:55.378965" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.379661" level="INFO">index=52
host=10.30.171.128
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-19T03:41:55.379759" level="INFO">${karaf_connection_object} = index=52
host=10.30.171.128
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-19T03:41:55.379550" elapsed="0.000235"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:41:55.379919" elapsed="0.001955"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.382305" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:41:55.534656" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:41:55.382029" elapsed="0.152719"/>
</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-19T03:41:55.537590" 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-19T03:41:55.538170" elapsed="0.000154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.538460" 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-19T03:41:55.535602" elapsed="0.003008"/>
</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-19T03:41:55.535011" elapsed="0.003645"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:41:55.374537" elapsed="0.164170"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:41:55.363660" elapsed="0.175093"/>
</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-19T03:41:55.363301" elapsed="0.175502"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:41:55.363168" elapsed="0.175676"/>
</iter>
<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-19T03:41:55.550818" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:41:55.550705" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.550684" elapsed="0.000205"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.551183" 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-19T03:41:55.551286" 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-19T03:41:55.551047" elapsed="0.000267"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.551713" level="INFO">{1: 50, 2: 52}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:55.551454" elapsed="0.000304"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:41:55.552155" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:41:55.551896" elapsed="0.000303"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:55.552901" level="FAIL">Dictionary does not contain key '3'.</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-19T03:41:55.552684" elapsed="0.000310">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:41:55.553116" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:41:55.553167" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:41:55.552344" elapsed="0.000846"/>
</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-19T03:41:55.553475" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:41:55.553266" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-04-19T03:41:55.553247" elapsed="0.000325"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:41:55.554333" level="INFO">${ip_address} = 10.30.171.206</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-19T03:41:55.554060" elapsed="0.000298"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:41:55.554407" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:41:55.554556" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:41:55.553779" elapsed="0.000801"/>
</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-19T03:41:55.554722" elapsed="0.000410"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.555399" level="INFO">index=54
host=10.30.171.206
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-19T03:41:55.555497" level="INFO">${karaf_connection_object} = index=54
host=10.30.171.206
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-19T03:41:55.555290" 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-19T03:41:55.555655" elapsed="0.002124"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:41:55.558342" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:42:05.621237" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:55.557984" elapsed="10.064167">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:05.625409" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T03:42:05.625952" elapsed="0.000223"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:05.626314" 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-19T03:42:05.623356" elapsed="0.003116"/>
</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-19T03:42:05.622642" elapsed="0.003879"/>
</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-19T03:41:55.550419" elapsed="10.076191">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:42:05.626704" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:55.539446" elapsed="10.087352">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:41:55.539085" elapsed="10.087782"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:41:55.538938" elapsed="10.087977"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:41:55.121478" elapsed="10.505474"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:41:53.964888" elapsed="11.662127"/>
</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-19T03:42:05.629441" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.629323" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.629301" elapsed="0.000211"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:42:05.633625" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.633519" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.633500" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:05.634656" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:42:05.634269" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:42:05.635150" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:42:05.634829" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:42:05.635221" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:42:05.635377" level="INFO">${index_list} = [1, 2, 3]</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-19T03:42:05.633904" elapsed="0.001497"/>
</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-19T03:42:05.640287" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.640181" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.640162" elapsed="0.000191"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:42:05.641520" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.641395" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.641377" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:05.642060" level="INFO">${karaf_connection_index} = 50</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-19T03:42:05.641718" elapsed="0.000390"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:05.642487" 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-19T03:42:05.642257" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:42:05.691916" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:42:05.643317" elapsed="0.048832"/>
</kw>
<msg time="2026-04-19T03:42:05.692282" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:42:05.692329" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.642792" elapsed="0.049575"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:42:05.765122" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "p "e "r "s "i "s "t "e "n "c "e "_ "r "e "c "o "v "e "r "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:42:05.693007" elapsed="0.072278"/>
</kw>
<msg time="2026-04-19T03:42:05.765413" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:42:05.765459" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.692526" elapsed="0.072971"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:05.765807" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:05.765574" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.765554" elapsed="0.000423"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:05.766542" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "p "e "r "s "i "s "t "e "n "c "e "_ "r "e "c "o "v "e "r "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:05.766177" elapsed="0.000459"/>
</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-19T03:42:05.766926" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:05.766703" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.766685" elapsed="0.000431"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:42:05.767150" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:05.769000" elapsed="0.000460"/>
</kw>
<kw name="Open 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-19T03:42:05.769789" elapsed="0.000497"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:05.770628" elapsed="0.000232"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:42:05.768262" elapsed="0.002687"/>
</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-19T03:42:05.767400" elapsed="0.003699"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:42:05.641110" elapsed="0.130090"/>
</kw>
<msg time="2026-04-19T03:42:05.771291" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:42:05.771334" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.640492" elapsed="0.130878"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:42:05.771551" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:42:05.771445" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.771427" elapsed="0.000206"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:05.772166" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:05.772491" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:42:05.772561" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:42:05.639871" elapsed="0.132795"/>
</kw>
<msg time="2026-04-19T03:42:05.772800" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:42:05.772844" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.635757" elapsed="0.137124"/>
</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-19T03:42:05.773209" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:05.772956" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.772939" elapsed="0.000346"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:42:05.635630" elapsed="0.137678"/>
</iter>
<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-19T03:42:05.778429" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.778321" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.778301" elapsed="0.000224"/>
</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-19T03:42:05.779678" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.779553" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.779534" elapsed="0.000210"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:05.780206" level="INFO">${karaf_connection_index} = 52</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-19T03:42:05.779875" elapsed="0.000358"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:05.780597" 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-19T03:42:05.780376" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:42:05.835162" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:42:05.781258" elapsed="0.054037"/>
</kw>
<msg time="2026-04-19T03:42:05.835423" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:42:05.835471" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.780768" elapsed="0.054739"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:42:05.906665" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "p "e "r "s "i "s "t "e "n "c "e "_ "r "e "c "o "v "e "r "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:42:05.836162" elapsed="0.070667"/>
</kw>
<msg time="2026-04-19T03:42:05.906987" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:42:05.907046" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.835664" elapsed="0.071421"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:05.907394" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:05.907162" elapsed="0.000376"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.907143" elapsed="0.000420"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:05.908060" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "p "e "r "s "i "s "t "e "n "c "e "_ "r "e "c "o "v "e "r "y ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:05.907694" elapsed="0.000461"/>
</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-19T03:42:05.908442" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:05.908220" elapsed="0.000371"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.908202" elapsed="0.000414"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:42:05.908649" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:05.910835" elapsed="0.000495"/>
</kw>
<kw name="Open 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-19T03:42:05.911689" elapsed="0.000279"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:05.912346" 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-19T03:42:05.909747" elapsed="0.002920"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T03:42:05.908890" elapsed="0.003909"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:42:05.779265" elapsed="0.133635"/>
</kw>
<msg time="2026-04-19T03:42:05.912992" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:42:05.913053" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.778669" elapsed="0.134424"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:42:05.913275" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:42:05.913169" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.913151" elapsed="0.000205"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:05.913729" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:05.914067" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:42:05.914139" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:42:05.777883" elapsed="0.136362"/>
</kw>
<msg time="2026-04-19T03:42:05.914338" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:42:05.914381" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:42:05.773555" elapsed="0.140863"/>
</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-19T03:42:05.914726" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:05.914492" elapsed="0.000287"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.914475" elapsed="0.000326"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:42:05.773429" elapsed="0.141394"/>
</iter>
<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-19T03:42:05.919857" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.919751" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.919733" elapsed="0.000192"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:42:05.921081" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:05.920934" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:05.920917" elapsed="0.000232"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:05.921641" level="INFO">${karaf_connection_index} = 54</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-19T03:42:05.921279" elapsed="0.000390"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:05.922065" 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-19T03:42:05.921818" elapsed="0.000275"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:42:15.923635" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:42:05.922719" elapsed="10.001834">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:42:15.924775" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:42:15.924825" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:42:05.922243" elapsed="10.002606"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:42:25.926610" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:42:15.925794" elapsed="10.001708">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:42:25.927740" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:42:25.927788" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:42:15.925163" elapsed="10.002650"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:42:25.929259" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_persistence_recovery.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-19T03:42:25.928445" elapsed="0.000896">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_persistence_recovery.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:42:25.928080" elapsed="0.001401">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_persistence_recovery.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:42:25.928043" elapsed="0.001476">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_persistence_recovery.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-19T03:42:25.929674" 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-19T03:42:25.929891" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:25.929761" elapsed="0.000363"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:25.929744" elapsed="0.000408"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:42:25.930191" 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-19T03:42:25.932228" elapsed="0.000453"/>
</kw>
<kw name="Open 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-19T03:42:25.933010" elapsed="0.000432"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:25.933760" elapsed="0.000251"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:42:25.931447" elapsed="0.002670"/>
</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-19T03:42:25.930477" elapsed="0.003780"/>
</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-19T03:42:05.920653" elapsed="20.013690">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_persistence_recovery.robot"</status>
</kw>
<msg time="2026-04-19T03:42:25.934449" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:42:25.934494" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_persistence_recov...</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-19T03:42:05.920079" elapsed="20.014440"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:42:25.934734" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:25.934596" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:25.934578" elapsed="0.000225"/>
</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-19T03:42:25.935569" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:25.935463" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:25.935445" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:25.936117" 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-19T03:42:25.936225" 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-19T03:42:25.935777" elapsed="0.000474"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:25.936659" level="INFO">{1: 50, 2: 52, 3: 54}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:25.936392" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:25.937168" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:25.936846" elapsed="0.000370"/>
</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-19T03:42:25.937708" elapsed="0.000286"/>
</kw>
<msg time="2026-04-19T03:42:25.938108" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:42:25.938163" level="INFO">${old_connection_index} = 54</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-19T03:42:25.937363" elapsed="0.000823"/>
</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-19T03:42:25.939299" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:42:35.941378" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:42:25.940567" elapsed="10.001609">No match found for '
' in 10 seconds
Output:
.</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-19T03:42:25.939784" elapsed="10.002525"/>
</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-19T03:42:35.943521" elapsed="0.000303"/>
</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-19T03:42:35.942675" elapsed="0.001226"/>
</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-19T03:42:25.938472" elapsed="10.005542"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:25.938262" elapsed="10.005826"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:25.938244" elapsed="10.005879"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:35.945142" level="INFO">${ip_address} = 10.30.171.206</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-19T03:42:35.944666" elapsed="0.000504"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:42:35.945224" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:42:35.945383" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:42:35.944352" 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-19T03:42:35.945554" elapsed="0.000425"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:35.946282" level="INFO">index=59
host=10.30.171.206
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-19T03:42:35.946382" level="INFO">${karaf_connection_object} = index=59
host=10.30.171.206
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-19T03:42:35.946160" 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-19T03:42:35.946546" elapsed="0.002109"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:42:35.949099" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:42:46.012675" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:35.948809" elapsed="10.064745">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:46.017305" elapsed="0.000747"/>
</kw>
<kw name="Open 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-19T03:42:46.018309" elapsed="0.000489"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:46.019010" elapsed="0.000237"/>
</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-19T03:42:46.015019" elapsed="0.004319"/>
</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-19T03:42:46.014053" elapsed="0.005333"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:42:25.935216" elapsed="20.084258">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:46.019830" elapsed="0.000028"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.019911" 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-19T03:42:05.919462" elapsed="40.100560">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:42:46.020159" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:42:46.020204" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:05.915208" elapsed="40.105019"/>
</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-19T03:42:46.020564" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.020316" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.020295" elapsed="0.000353"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:42:05.914968" elapsed="40.105804"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:42:05.635455" elapsed="40.385356"/>
</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-19T03:42:05.633229" elapsed="40.387648"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:42:05.627622" elapsed="40.393313"/>
</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-19T03:42:05.627184" elapsed="40.393795"/>
</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-19T03:41:53.960257" elapsed="52.060801"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.027171" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:42:46.026769" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.027647" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:42:46.027344" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:42:46.027717" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:42:46.027872" level="INFO">${index_list} = [1, 2, 3]</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-19T03:42:46.026460" elapsed="0.001437"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:42:46.028051" elapsed="0.000184"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.028713" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:42:46.028382" elapsed="0.000357"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.029216" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:42:46.028881" elapsed="0.000362"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.029614" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:42:46.029378" elapsed="0.000261"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.031933" 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-19T03:42:46.031635" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:42:46.032007" elapsed="0.000052"/>
</return>
<msg time="2026-04-19T03:42:46.032181" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:42:46.031351" elapsed="0.000854"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.077795" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.077407" elapsed="0.000417"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.078611" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.078348" elapsed="0.000330">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.078773" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.078000" elapsed="0.000797"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.079425" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:42:46.079016" elapsed="0.000436"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.079812" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:42:46.079978" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:42:46.079625" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.080481" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.080224" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.081488" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.081186" elapsed="0.000347"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.081946" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.081680" elapsed="0.000291"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.082351" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.082546" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.082704" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:42:46.082226" elapsed="0.000534"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.082018" elapsed="0.000772"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:42:46.082833" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:42:46.082994" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:42:46.080909" elapsed="0.002110"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.080618" elapsed="0.002451"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.083230" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.083094" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.080597" elapsed="0.002709"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.083911" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.083462" elapsed="0.000477"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.084011" elapsed="0.000045"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:42:46.076519" elapsed="0.007740"/>
</kw>
<msg time="2026-04-19T03:42:46.084330" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:46.064715" elapsed="0.019683"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.129142" elapsed="0.000049"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.174191" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.219172" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.219538" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.219797" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.220976" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.220606" elapsed="0.000522"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:46.220562" elapsed="0.000643"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.221511" elapsed="0.000072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.221849" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.222201" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:42:46.220519" elapsed="0.001838"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.219997" elapsed="0.002428"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.222567" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.222796" elapsed="0.000020"/>
</return>
<msg time="2026-04-19T03:42:46.222949" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:42:46.060502" elapsed="0.162474"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.225879" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.225266" elapsed="0.000739">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.226151" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.224073" elapsed="0.002119"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.226902" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.226437" elapsed="0.001053"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.229143" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.228267" elapsed="0.000966"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.227520" elapsed="0.001860"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.226416" elapsed="0.002989"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.232168" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:42:46.229546" elapsed="0.002666"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:42:46.232376" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:42:46.232537" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:42:46.223691" elapsed="0.008872"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.234929" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.234384" elapsed="0.000711">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.235227" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.233238" elapsed="0.002030"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:42:46.235735" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:42:46.235442" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.235421" elapsed="0.000483"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.236086" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.236342" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.236515" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:42:46.238706" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:42:46.232910" elapsed="0.005824"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.241066" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.240558" elapsed="0.000658"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.242003" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.241462" elapsed="0.000706"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:46.278468" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:42:46.279964" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01k4j6mrbt95091juf26nfgoykc2.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:42:46 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:42:46.280765" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:42:46.244554" elapsed="0.036419"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.242317" elapsed="0.039037"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.281908" elapsed="0.000117"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.281436" elapsed="0.001020"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.242297" elapsed="0.040225"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.291355" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.287338" elapsed="0.004457"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.285918" elapsed="0.005926"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.285783" elapsed="0.006134"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.294908" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.292784" elapsed="0.002220"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.292175" elapsed="0.002891"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.292113" elapsed="0.003023"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.296592" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.295671" elapsed="0.001038"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.297554" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.296879" elapsed="0.000807"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.298535" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.298109" elapsed="0.000483"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.297751" elapsed="0.000891"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.296820" elapsed="0.001886"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.300006" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.299253" elapsed="0.000901"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.300940" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.300324" elapsed="0.000762"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.302058" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.301514" elapsed="0.000601"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.301152" elapsed="0.001014"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.300265" elapsed="0.001966"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:46.303211" elapsed="0.000693"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:42:46.305583" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.304962" elapsed="0.000737"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.306676" elapsed="0.002558"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:42:46.283719" elapsed="0.025638"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.309750" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:46.309554" elapsed="0.000321"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.309533" elapsed="0.000368"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:42:46.321589" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:42:46.310063" elapsed="0.011573"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:42:46.321801" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:42:46.321971" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:42:46.239359" elapsed="0.082639"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.322082" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:42:46.322236" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:42:46.040920" elapsed="0.281343"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.322580" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.322347" elapsed="0.000345"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.322329" elapsed="0.000388"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.322752" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:42:46.037281" elapsed="0.285596"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.032273" elapsed="0.290647"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.032254" elapsed="0.290689"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:42:46.323510" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T03:42:46.323402" elapsed="0.000168"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.323631" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:46.323594" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.323384" elapsed="0.000310"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.323829" elapsed="0.000022"/>
</kw>
<msg time="2026-04-19T03:42:46.323949" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:42:46.323180" elapsed="0.000795"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.324521" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.324145" elapsed="0.000404"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.325174" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.324694" elapsed="0.000508"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.330055" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.329772" elapsed="0.000332"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.330494" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.330247" elapsed="0.000292"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:46.339383" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:42:46.339467" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:42:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:42:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"279.8 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570166,"status":200} 
 </msg>
<msg time="2026-04-19T03:42:46.339613" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:42:46.332385" elapsed="0.007265"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.330606" elapsed="0.009104"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.339941" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.339747" elapsed="0.000302"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.330587" elapsed="0.009495"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.345154" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"279.8 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570166,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.341572" elapsed="0.003922"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.341252" elapsed="0.004405"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.341226" elapsed="0.004472"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.349314" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.346120" elapsed="0.003444"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.345780" elapsed="0.003945"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.345756" elapsed="0.004009"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.350909" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.349979" elapsed="0.000969"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.351394" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.351073" elapsed="0.000542"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.352652" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.351861" elapsed="0.000852"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.351653" elapsed="0.001237"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.351022" elapsed="0.001903"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.353954" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.353155" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.354369" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.354146" elapsed="0.000379"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.355256" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.354699" elapsed="0.000601"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.354552" elapsed="0.000876"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.354126" elapsed="0.001328"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:46.355597" elapsed="0.000712"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:42:46.357145" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.356464" elapsed="0.000708"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.357320" elapsed="0.002559"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:42:46.340706" elapsed="0.019241"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.360180" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:46.360018" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.359999" elapsed="0.000254"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:42:46.363090" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570166,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:42:46.360389" elapsed="0.002731"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:42:46.363175" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:42:46.363338" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570166,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:42:46.326014" elapsed="0.037353"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.363425" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:42:46.363579" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570166,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:42:46.325417" elapsed="0.038189"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.364580" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570166, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.364122" elapsed="0.000488"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:42:46.364698" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:42:46.364881" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570166, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:42:46.363820" elapsed="0.001089"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:46.365283" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.365072" elapsed="0.000239"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:46.365693" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.365483" elapsed="0.000236"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:42:46.365769" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:42:46.365926" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:42:46.030729" elapsed="0.335223"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:42:46.366011" elapsed="0.000171"/>
</return>
<msg time="2026-04-19T03:42:46.366314" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:42:46.030072" elapsed="0.336269"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.366649" elapsed="0.000199"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.366434" elapsed="0.000453"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.367067" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.366913" elapsed="0.000212"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.367281" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.367149" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.366413" elapsed="0.000943"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:42:46.029897" elapsed="0.337484"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.369610" level="INFO">${session} = ClusterManagement__session_2</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-19T03:42:46.369271" elapsed="0.000368"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:42:46.369685" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:42:46.369837" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:42:46.368965" elapsed="0.000899"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.413860" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.413475" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.414682" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.414442" elapsed="0.000310">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.414844" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.414115" elapsed="0.000753"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.415454" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:42:46.415068" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.415790" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:42:46.415938" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:42:46.415648" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.416436" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.416182" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.417391" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.417138" elapsed="0.000319"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.417869" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.417605" elapsed="0.000290"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.418212" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.418403" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.418561" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:42:46.418092" elapsed="0.000525"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.417942" elapsed="0.000703"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:42:46.418688" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:42:46.418846" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:42:46.416861" elapsed="0.002011"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.416570" elapsed="0.002334"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.419117" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.418929" elapsed="0.000246"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.416550" elapsed="0.002645"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.419784" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.419350" elapsed="0.000462"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.419883" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:42:46.412564" elapsed="0.007565"/>
</kw>
<msg time="2026-04-19T03:42:46.420200" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:46.400664" elapsed="0.019605"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.464936" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.509795" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.554587" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.554943" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.555208" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.556014" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.555646" elapsed="0.000521"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:46.555604" elapsed="0.000639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.556534" elapsed="0.000073"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.556878" elapsed="0.000073"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.557525" elapsed="0.000076"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:42:46.555573" elapsed="0.002115"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.555434" elapsed="0.002322"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.557903" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.558148" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:42:46.558272" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:42:46.396559" elapsed="0.161740"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.560719" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.560150" elapsed="0.000689">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.560966" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.559018" elapsed="0.001990"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.562115" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.561647" elapsed="0.000651"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.563957" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.563092" elapsed="0.000970"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.562325" elapsed="0.001873"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.561626" elapsed="0.002597"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.567010" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:42:46.564364" elapsed="0.002706"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:42:46.567232" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:42:46.567392" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:42:46.558703" elapsed="0.008714"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.569913" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.569345" elapsed="0.000696">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.570172" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.568084" elapsed="0.002130"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:42:46.570673" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:42:46.570386" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.570365" elapsed="0.000474"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.570974" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.571245" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.571415" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:42:46.573606" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:42:46.567760" elapsed="0.005873"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.575841" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.575369" elapsed="0.000616"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.576687" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.576221" elapsed="0.000607"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:46.607075" level="INFO">GET Request : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:42:46.607922" level="INFO">GET Response : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node03gvxpftvk7yc139x8anbonu392.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:42:46 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:42:46.608375" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:42:46.579194" elapsed="0.029306"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.576973" elapsed="0.031723"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.609016" elapsed="0.000100"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.608739" elapsed="0.000574"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.576953" elapsed="0.032393"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.615283" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.612125" elapsed="0.003623"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.611271" elapsed="0.004524"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.611191" elapsed="0.004669"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.618714" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.616680" elapsed="0.002126"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.616022" elapsed="0.002829"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.615966" elapsed="0.002950"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.620404" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.619522" elapsed="0.000994"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.621414" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.620719" elapsed="0.000843"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.622381" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.621957" elapsed="0.000478"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.621632" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.620662" elapsed="0.001882"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.623817" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.623084" elapsed="0.000846"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.624739" elapsed="0.000120"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.624133" elapsed="0.000776"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.625750" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.625316" elapsed="0.000527"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.624973" elapsed="0.000920"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.624074" elapsed="0.001880"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:46.626927" elapsed="0.000681"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:42:46.629314" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.628707" elapsed="0.000720"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.630393" elapsed="0.002516"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:42:46.610017" elapsed="0.022998"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.633404" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:46.633215" elapsed="0.000326"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.633194" elapsed="0.000374"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:42:46.644996" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:42:46.633708" elapsed="0.011348"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:42:46.645222" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:42:46.645389" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:42:46.574080" elapsed="0.071336"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.645479" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:42:46.645654" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:42:46.377419" elapsed="0.268262"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.645995" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.645766" elapsed="0.000363"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.645748" elapsed="0.000406"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.646188" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:42:46.373699" elapsed="0.272615"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.369932" elapsed="0.276426"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.369914" elapsed="0.276468"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:42:46.646964" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T03:42:46.646856" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.647103" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:46.647064" elapsed="0.000079"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.646838" elapsed="0.000328"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.647302" elapsed="0.000022"/>
</kw>
<msg time="2026-04-19T03:42:46.647422" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:42:46.646599" elapsed="0.000849"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.647971" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.647602" elapsed="0.000397"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.648643" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.648184" elapsed="0.000486"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.653891" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.653640" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.654341" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.654097" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:46.663687" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:42:46.663770" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:42:46 GMT', 'Expires': 'Sun, 19 Apr 2026 02:42:46 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"209.9 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570166,"status":200} 
 </msg>
<msg time="2026-04-19T03:42:46.663916" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:42:46.656234" elapsed="0.007719"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.654452" elapsed="0.009561"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.664268" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.664072" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.654433" elapsed="0.009954"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.669334" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"209.9 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570166,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.665842" elapsed="0.003826"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.665529" elapsed="0.004322"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.665504" elapsed="0.004390"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.673671" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.670319" elapsed="0.003559"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.669977" elapsed="0.004094"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.669953" elapsed="0.004161"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.675085" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.674327" elapsed="0.000797"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.675536" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.675225" elapsed="0.000529"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.676763" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.675997" elapsed="0.000827"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.675792" elapsed="0.001206"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.675199" elapsed="0.001852"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.678018" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.677259" elapsed="0.000866"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.678419" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.678198" elapsed="0.000376"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.679356" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.678772" elapsed="0.000626"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.678623" elapsed="0.000898"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.678180" elapsed="0.001365"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:46.679686" elapsed="0.000698"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:42:46.681137" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.680536" elapsed="0.000627"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.681306" elapsed="0.002530"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:42:46.664990" elapsed="0.018914"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.684098" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:46.683976" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.683957" elapsed="0.000207"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:42:46.686866" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570166,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:42:46.684295" elapsed="0.002604"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:42:46.686952" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:42:46.687148" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570166,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:42:46.649520" elapsed="0.037655"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.687231" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:42:46.687377" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570166,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:42:46.648871" elapsed="0.038531"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.688337" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570166, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.687879" elapsed="0.000525"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:42:46.688492" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:42:46.688670" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570166, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:42:46.687607" elapsed="0.001090"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:46.689056" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.688841" elapsed="0.000245"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:46.689427" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.689228" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:42:46.689500" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:42:46.689697" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:42:46.368399" elapsed="0.321325"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:42:46.689783" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:42:46.689930" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:42:46.367711" elapsed="0.322245"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.690254" elapsed="0.000189"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.690048" elapsed="0.000433"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.690636" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.690506" elapsed="0.000184"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.690839" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.690713" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.690017" elapsed="0.000894"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:42:46.367548" elapsed="0.323387"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.693183" level="INFO">${session} = ClusterManagement__session_3</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-19T03:42:46.692868" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:42:46.693256" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:42:46.693400" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:42:46.692587" elapsed="0.000839"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.737429" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.737047" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.738309" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.738018" elapsed="0.000361">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.738473" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.737645" elapsed="0.000852"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.739086" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:42:46.738674" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.739426" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:42:46.739565" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:42:46.739283" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.740056" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.739790" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.740988" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.740737" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.741505" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:42:46.741237" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.741863" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.742153" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.742316" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:42:46.741742" elapsed="0.000631"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.741605" elapsed="0.000797"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:42:46.742445" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:42:46.742601" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:42:46.740479" elapsed="0.002147"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.740193" elapsed="0.002465"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.742814" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.742682" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.740173" elapsed="0.002716"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.743491" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:42:46.743056" elapsed="0.000463"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:42:46.743590" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:42:46.736124" elapsed="0.007690"/>
</kw>
<msg time="2026-04-19T03:42:46.743886" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:46.724351" elapsed="0.019602"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.788405" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.833004" elapsed="0.000059"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.877888" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.878572" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.878820" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.879653" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.879286" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:46.879243" elapsed="0.000622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.880171" elapsed="0.000074"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.880514" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.880853" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:42:46.879212" elapsed="0.001799"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.879069" elapsed="0.002024"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.881232" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.881461" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:42:46.881583" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:42:46.720173" elapsed="0.161437"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.884487" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.883904" elapsed="0.000699">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.884729" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.882794" elapsed="0.001977"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.885408" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:46.884945" elapsed="0.000646"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.887774" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:42:46.886422" elapsed="0.001441"/>
</kw>
<status status="PASS" start="2026-04-19T03:42:46.885618" elapsed="0.002378"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.884924" elapsed="0.003096"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.890536" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:42:46.888177" elapsed="0.002401"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:42:46.890740" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:42:46.890897" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:42:46.882478" elapsed="0.008444"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:42:46.893515" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.892947" elapsed="0.000683">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:42:46.893788" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:42:46.891621" elapsed="0.002207"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:42:46.894301" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:42:46.893998" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:46.893978" elapsed="0.000487"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.894598" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:46.894847" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:42:46.895016" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:42:46.898303" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:42:46.891312" elapsed="0.007018"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.900535" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.899930" elapsed="0.000750"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:46.901388" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:46.900901" elapsed="0.000633"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:51.913469" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.903751" elapsed="5.014909">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:42:46.901705" elapsed="5.017427">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.919792" elapsed="0.000116"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:51.919259" elapsed="0.001006"/>
</branch>
<status status="FAIL" start="2026-04-19T03:42:46.901683" elapsed="5.018669">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.921627" elapsed="0.000067"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.922248" elapsed="0.000032"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:51.922157" elapsed="0.000361"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:51.922109" elapsed="0.000466"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.922877" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.923336" elapsed="0.000040"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.898749" elapsed="5.024849">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.923772" elapsed="0.000037"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.700880" elapsed="5.223118">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.924686" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:51.924249" elapsed="0.000602"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:51.924210" elapsed="0.000693"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.924974" elapsed="0.000032"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.697169" elapsed="5.228029">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:42:46.693492" elapsed="5.231777">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:42:46.693475" elapsed="5.231824">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.925533" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.925726" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.925884" elapsed="0.000020"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.926121" elapsed="0.000024"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.926400" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.926562" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.926720" elapsed="0.000020"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.926786" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.692045" elapsed="5.234843">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.926959" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.691379" elapsed="5.235692">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.927298" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:51.927165" elapsed="0.000188"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.927503" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:51.927376" elapsed="0.000181"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.927709" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:51.927580" elapsed="0.000181"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:51.927148" elapsed="0.000635"/>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:42:46.691222" elapsed="5.236601">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:42:46.029689" elapsed="5.898194">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.927936" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.025705" elapsed="5.902343">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.928223" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.928531" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:51.928362" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:42:51.928331" elapsed="0.000280"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.928734" elapsed="0.000020"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.928890" elapsed="0.000021"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.928957" elapsed="0.000015"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:42:46.021746" elapsed="5.907400">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.929323" elapsed="0.000022"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.929486" elapsed="0.000020"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.929637" elapsed="0.000019"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.929798" elapsed="0.000019"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.930066" elapsed="0.000026"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.930235" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.930387" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.930684" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.930840" elapsed="0.000020"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:42:51.930517" elapsed="0.000377"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:42:51.930454" elapsed="0.000465"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.931082" elapsed="0.000021"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.931238" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:42:51.931398" elapsed="0.000020"/>
</kw>
<arg>shard_name=car</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:42:46.021353" elapsed="5.910153">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<doc>Initialize resources, memorize car shard leader and followers.</doc>
<status status="FAIL" start="2026-04-19T03:41:53.959895" elapsed="57.971700">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<test id="s1-s24-t1" name="Add_Cars_On_Leader_And_Verify" line="36">
<doc>Single big PUT to datastore to add cars to car Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:42:51.931675" elapsed="0.000663">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s24-t2" name="Stop_All_Members" line="53">
<doc>Stop all controllers.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:42:51.932604" elapsed="0.000344">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s24-t3" name="Start_All_Members" line="57">
<doc>Start all controllers (should restore the persisted data).</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:42:51.933246" elapsed="0.000399">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s24-t4" name="Memorize_Leader_And_Followers" line="61">
<doc>Locate current Leader of car Shard.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:42:51.933899" elapsed="0.000402">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s24-t5" name="See_Cars_On_Leader" line="65">
<doc>GET cars from Leader, should match the PUT data.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:42:51.934574" elapsed="0.000376">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s24-t6" name="See_Cars_On_Followers" line="73">
<doc>The same check on other members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:42:51.935218" elapsed="0.000363">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s24-t7" name="Delete_Cars_On_Leader" line="83">
<doc>Delete cars on the new Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:42:51.935866" elapsed="0.000650">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<doc>This test restarts all controllers to verify recovery of car data from persistence.

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


Other models and shards (people, car-people) are not accessed by this suite.

All data is deleted at the end of the suite.
This suite expects car module to have a separate Shard.</doc>
<status status="FAIL" start="2026-04-19T03:41:53.895286" elapsed="58.041582">Suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</suite>
<suite id="s1-s25" name="Buycar Failover" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover.robot">
<kw name="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-19T03:42:52.008745" 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-19T03:42:52.004971" elapsed="0.003830"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:42:52.004747" elapsed="0.004130"/>
</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-19T03:42:52.013307" 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-19T03:42:52.009975" elapsed="0.003362"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:42:52.013684" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:52.013428" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:52.013403" elapsed="0.000354"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.014313" 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-19T03:42:52.013911" elapsed="0.000446"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.014820" level="INFO">${cluster_size} = 3</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-19T03:42:52.014511" elapsed="0.000335"/>
</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-19T03:42:52.015346" elapsed="0.000286"/>
</kw>
<msg time="2026-04-19T03:42:52.015730" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:42:52.015779" level="INFO">${possibly_int_of_members} = 3</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-19T03:42:52.014999" elapsed="0.000803"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.016384" level="INFO">${int_of_members} = 3</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-19T03:42:52.015961" elapsed="0.000451"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.017417" 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-19T03:42:52.017149" elapsed="0.000295"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.017837" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:42:52.017581" elapsed="0.000282"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.018319" 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-19T03:42:52.018011" elapsed="0.000335"/>
</kw>
<for flavor="IN RANGE">
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:42:52.021216" elapsed="0.000214"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.021912" level="INFO">${member_ip} = 10.30.171.9</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-19T03:42:52.021579" elapsed="0.000360"/>
</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-19T03:42:52.022098" elapsed="0.000233"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.023119" 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-19T03:42:52.022803" elapsed="0.000343"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:42:52.023196" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:42:52.023360" 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-19T03:42:52.022519" elapsed="0.000867"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:52.024209" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f76ad350&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-19T03:42:52.023535" elapsed="0.000850"/>
</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-19T03:42:52.024541" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-19T03:42:52.020639" elapsed="0.004155"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:42:52.020449" elapsed="0.004391"/>
</iter>
<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-19T03:42:52.025674" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.026363" level="INFO">${member_ip} = 10.30.171.128</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-19T03:42:52.026014" elapsed="0.000377"/>
</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-19T03:42:52.026532" elapsed="0.000225"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.027544" level="INFO">${session} = ClusterManagement__session_2</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-19T03:42:52.027248" elapsed="0.000323"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:42:52.027618" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:42:52.027775" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:42:52.026941" elapsed="0.000860"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:52.028487" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7e77f90&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-19T03:42:52.028043" elapsed="0.000566"/>
</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-19T03:42:52.028760" elapsed="0.000193"/>
</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-19T03:42:52.025124" elapsed="0.003889"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:42:52.024933" elapsed="0.004146"/>
</iter>
<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-19T03:42:52.029886" elapsed="0.000206"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.030560" level="INFO">${member_ip} = 10.30.171.206</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-19T03:42:52.030236" elapsed="0.000350"/>
</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-19T03:42:52.030724" elapsed="0.000222"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.031716" level="INFO">${session} = ClusterManagement__session_3</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-19T03:42:52.031422" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:42:52.031790" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:42:52.031941" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:42:52.031141" elapsed="0.000826"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:42:52.032568" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7e48310&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-19T03:42:52.032125" elapsed="0.000554"/>
</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-19T03:42:52.032830" 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-19T03:42:52.029347" elapsed="0.003747"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:42:52.029173" elapsed="0.003964"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:42:52.018399" elapsed="0.014769"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.033740" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:42:52.033326" elapsed="0.000457"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.034350" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:42:52.033933" elapsed="0.000461"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.034932" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:42:52.034543" elapsed="0.000432"/>
</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-19T03:42:52.016671" elapsed="0.018377"/>
</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-19T03:42:52.009636" elapsed="0.025475"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:42:52.035326" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:52.035187" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:52.035166" elapsed="0.000227"/>
</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-19T03:42:52.038498" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:42:52.038112" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.038982" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:42:52.038674" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:42:52.039138" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:42:52.039298" level="INFO">${index_list} = [1, 2, 3]</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-19T03:42:52.037781" elapsed="0.001543"/>
</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-19T03:42:52.040302" level="INFO">${member_ip} = 10.30.171.9</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-19T03:42:52.040018" elapsed="0.000311"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.041088" 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-19T03:42:52.041190" 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-19T03:42:52.040910" elapsed="0.000307"/>
</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-19T03:42:52.044646" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:52.044003" elapsed="0.000734"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:52.043984" elapsed="0.000793"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.045488" 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-19T03:42:52.045745" 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-19T03:42:52.044973" elapsed="0.000829"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.046802" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:52.046092" elapsed="0.000825"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.048224" level="INFO">${conn_id} = 61</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:42:52.047218" elapsed="0.001063"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.050300" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:42:52.050496" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:42:52.049818" elapsed="0.000726"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:52.050905" elapsed="0.000499"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.052703" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:42:52.660845" 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 Sun Apr 19 03:42:52 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:41:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:42:52.052373" elapsed="0.608622"/>
</kw>
<msg time="2026-04-19T03:42:52.661099" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:52.051772" elapsed="0.609501"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:42:52.048775" elapsed="0.612660"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.662383" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:42:52.675261" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:42:52.675548" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:42:52.675704" 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-19T03:42:52.661817" elapsed="0.014061"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:52.676426" elapsed="0.000888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.679006" 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-19T03:42:52.678137" elapsed="0.001061"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:42:52.679847" elapsed="0.000080"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:52.679461" elapsed="0.000609"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:52.679423" elapsed="0.000707"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:42:52.680604" elapsed="0.000136"/>
</return>
<status status="PASS" start="2026-04-19T03:42:52.680259" elapsed="0.000611"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:52.680232" elapsed="0.000701"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:42:52.681112" elapsed="0.000046"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:52.687426" elapsed="0.001031"/>
</kw>
<kw name="Open 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-19T03:42:52.689315" elapsed="0.000448"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:52.690142" elapsed="0.000323"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:42:52.682138" elapsed="0.008403"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:42:52.042956" elapsed="0.647775"/>
</kw>
<msg time="2026-04-19T03:42:52.690789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:52.042331" elapsed="0.648517"/>
</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-19T03:42:52.041843" elapsed="0.649085"/>
</kw>
<msg time="2026-04-19T03:42:52.690969" 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-19T03:42:52.041363" elapsed="0.649651"/>
</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-19T03:42:52.693446" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:42:52.693908" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:52.694213" 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-19T03:42:52.691323" elapsed="0.003036"/>
</kw>
<msg time="2026-04-19T03:42:52.694451" 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-19T03:42:52.040560" elapsed="0.653916"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.694889" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:52.694643" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:42:52.694972" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:42:52.039672" elapsed="0.655447"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:42:52.039507" elapsed="0.655651"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:52.696060" level="INFO">${member_ip} = 10.30.171.128</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-19T03:42:52.695774" elapsed="0.000313"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.696850" 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-19T03:42:52.696956" 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-19T03:42:52.696642" elapsed="0.000340"/>
</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-19T03:42:52.700668" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:52.700080" elapsed="0.000696"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:52.700059" elapsed="0.000757"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.701580" 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-19T03:42:52.701833" 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-19T03:42:52.701010" elapsed="0.000878"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.702872" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:52.702170" elapsed="0.000817"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.704260" level="INFO">${conn_id} = 64</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:42:52.703277" elapsed="0.001213"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:42:52.706672" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:42:52.706864" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:42:52.706298" elapsed="0.000613"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:52.707286" elapsed="0.000472"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:42:52.708919" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:42:53.276711" 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 Sun Apr 19 03:42:52 UTC 2026

  System load:  0.17               Processes:             123
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:41:54 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:42:52.708581" elapsed="0.568284"/>
</kw>
<msg time="2026-04-19T03:42:53.276950" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:52.708139" elapsed="0.569035"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:42:52.705081" elapsed="0.572259"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:42:53.278290" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:42:53.291120" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:42:53.291527" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:42:53.291778" 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-19T03:42:53.277719" elapsed="0.014178"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:53.292655" elapsed="0.001262"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:53.296666" 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-19T03:42:53.295297" elapsed="0.001619"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:42:53.298003" elapsed="0.000163"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:53.297409" elapsed="0.000899"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:53.297351" elapsed="0.001016"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:42:53.298854" elapsed="0.000101"/>
</return>
<status status="PASS" start="2026-04-19T03:42:53.298494" elapsed="0.000628"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:53.298469" elapsed="0.000721"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:42:53.299286" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:53.304359" elapsed="0.000761"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:42:53.305627" elapsed="0.000483"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:53.306510" elapsed="0.000360"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:42:53.300014" elapsed="0.006961"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:42:52.699073" elapsed="0.608230"/>
</kw>
<msg time="2026-04-19T03:42:53.307388" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:52.698456" elapsed="0.609012"/>
</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-19T03:42:52.697912" elapsed="0.609673"/>
</kw>
<msg time="2026-04-19T03:42:53.307645" 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-19T03:42:52.697208" elapsed="0.610502"/>
</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-19T03:42:53.311169" elapsed="0.000318"/>
</kw>
<kw name="Open 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-19T03:42:53.311636" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:53.311914" 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-19T03:42:53.308270" elapsed="0.003850"/>
</kw>
<msg time="2026-04-19T03:42:53.312216" 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-19T03:42:52.696289" elapsed="0.615951"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:53.312666" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:53.312420" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:42:53.312747" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:42:52.695424" elapsed="0.617445"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:42:52.695253" elapsed="0.617654"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:53.313847" level="INFO">${member_ip} = 10.30.171.206</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-19T03:42:53.313576" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:53.314585" 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-19T03:42:53.314684" 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-19T03:42:53.314445" elapsed="0.000265"/>
</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-19T03:42:53.318445" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:53.317803" elapsed="0.000736"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:53.317780" elapsed="0.000803"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:53.319322" 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-19T03:42:53.319588" 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-19T03:42:53.318784" elapsed="0.000862"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:53.320911" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:53.319937" elapsed="0.001124"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:53.322409" level="INFO">${conn_id} = 67</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:42:53.321363" elapsed="0.001186"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:42:53.324484" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:42:53.324678" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:42:53.324084" elapsed="0.000642"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:53.325140" elapsed="0.000765"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:42:53.327298" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:42:53.957772" 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 Sun Apr 19 03:42:53 UTC 2026

  System load:  0.1                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:41:55 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:42:53.326931" elapsed="0.630997"/>
</kw>
<msg time="2026-04-19T03:42:53.958014" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:53.326475" elapsed="0.631731"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:42:53.323058" elapsed="0.635309"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:42:53.959337" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:42:53.972395" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:42:53.972645" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:42:53.972800" 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-19T03:42:53.958762" elapsed="0.014116"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:53.973445" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:53.977488" 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-19T03:42:53.975787" elapsed="0.002075"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:42:53.979206" elapsed="0.000131"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:53.978456" elapsed="0.001072"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:53.978398" elapsed="0.001258"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:42:53.980550" elapsed="0.000205"/>
</return>
<status status="PASS" start="2026-04-19T03:42:53.979871" elapsed="0.001117"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:53.979826" elapsed="0.001312"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:42:53.981311" 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-19T03:42:53.985068" elapsed="0.000535"/>
</kw>
<kw name="Open 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-19T03:42:53.985901" elapsed="0.000413"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:53.986586" elapsed="0.000249"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:42:53.982415" elapsed="0.004493"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:42:53.316711" elapsed="0.670410"/>
</kw>
<msg time="2026-04-19T03:42:53.987179" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:42:53.315921" elapsed="0.671315"/>
</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-19T03:42:53.315374" elapsed="0.671943"/>
</kw>
<msg time="2026-04-19T03:42:53.987357" 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-19T03:42:53.314851" elapsed="0.672617"/>
</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-19T03:42:53.989875" elapsed="0.000417"/>
</kw>
<kw name="Open 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-19T03:42:53.990444" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:53.990730" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:42:53.987760" elapsed="0.003120"/>
</kw>
<msg time="2026-04-19T03:42:53.990972" 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-19T03:42:53.314092" elapsed="0.676905"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:53.991437" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:53.991182" elapsed="0.000297"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:42:53.991522" 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-19T03:42:53.313224" elapsed="0.678423"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:42:53.313007" elapsed="0.678678"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:42:52.039377" elapsed="1.952344"/>
</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-19T03:42:52.035607" elapsed="1.956176"/>
</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-19T03:42:53.991929" elapsed="0.000233"/>
</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-19T03:42:54.004622" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:54.004513" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:54.004494" elapsed="0.000196"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.004966" 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-19T03:42:54.005086" 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-19T03:42:54.004830" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:54.005531" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:54.005259" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:54.005955" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:54.005713" elapsed="0.000285"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:54.006727" 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-19T03:42:54.006503" elapsed="0.000332">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:42:54.006940" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:42:54.006985" 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-19T03:42:54.006160" elapsed="0.000848"/>
</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-19T03:42:54.007314" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:54.007100" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:54.007081" elapsed="0.000329"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:54.008135" level="INFO">${ip_address} = 10.30.171.9</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-19T03:42:54.007855" elapsed="0.000309"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:42:54.008212" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:42:54.008359" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:42:54.007598" elapsed="0.000785"/>
</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-19T03:42:54.008524" elapsed="0.000399"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.009217" level="INFO">index=70
host=10.30.171.9
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-19T03:42:54.009357" level="INFO">${karaf_connection_object} = index=70
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:42:54.009103" elapsed="0.000293"/>
</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-19T03:42:54.009539" elapsed="0.001901"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.011852" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:42:54.246106" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:42:54.011591" elapsed="0.234690"/>
</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-19T03:42:54.249946" elapsed="0.000387"/>
</kw>
<kw name="Open 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-19T03:42:54.250487" elapsed="0.000171"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:54.250795" 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-19T03:42:54.247513" elapsed="0.003437"/>
</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-19T03:42:54.246731" elapsed="0.004266"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:42:54.004231" elapsed="0.246845"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:42:53.992855" elapsed="0.258273"/>
</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-19T03:42:53.992497" elapsed="0.258685"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:42:53.992367" elapsed="0.258857"/>
</iter>
<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-19T03:42:54.263075" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:54.262937" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:54.262909" elapsed="0.000246"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.263444" 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-19T03:42:54.263554" 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-19T03:42:54.263303" elapsed="0.000277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:54.263985" level="INFO">{1: 70}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:54.263722" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:54.264427" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:54.264186" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:54.265210" level="FAIL">Dictionary does not contain key '2'.</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-19T03:42:54.264956" elapsed="0.000366">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:42:54.265430" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:42:54.265474" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:42:54.264613" elapsed="0.000884"/>
</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-19T03:42:54.265795" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:54.265584" elapsed="0.000348"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:54.265566" elapsed="0.000391"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:54.266690" level="INFO">${ip_address} = 10.30.171.128</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-19T03:42:54.266426" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:42:54.266764" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:42:54.266919" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:42:54.266164" 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-19T03:42:54.267100" elapsed="0.000410"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.267780" level="INFO">index=72
host=10.30.171.128
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-19T03:42:54.267878" level="INFO">${karaf_connection_object} = index=72
host=10.30.171.128
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-19T03:42:54.267666" 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-19T03:42:54.268055" elapsed="0.001929"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.270413" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:42:54.444221" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:42:54.270152" elapsed="0.174237"/>
</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-19T03:42:54.447767" 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-19T03:42:54.448313" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:42:54.448615" 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-19T03:42:54.445565" elapsed="0.003205"/>
</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-19T03:42:54.444809" elapsed="0.004009"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:42:54.262634" elapsed="0.186237"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:42:54.251825" elapsed="0.197098"/>
</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-19T03:42:54.251465" elapsed="0.197510"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:42:54.251336" elapsed="0.197680"/>
</iter>
<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-19T03:42:54.460936" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:42:54.460818" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:54.460795" elapsed="0.000218"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.461315" 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-19T03:42:54.461421" 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-19T03:42:54.461174" elapsed="0.000273"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:54.461947" level="INFO">{1: 70, 2: 72}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:54.461587" elapsed="0.000405"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:42:54.462393" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:42:54.462149" elapsed="0.000288"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:54.463184" level="FAIL">Dictionary does not contain key '3'.</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-19T03:42:54.462934" elapsed="0.000358">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:42:54.463398" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:42:54.463442" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:42:54.462583" elapsed="0.000881"/>
</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-19T03:42:54.463752" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:42:54.463540" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-19T03:42:54.463521" elapsed="0.000328"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:42:54.464582" level="INFO">${ip_address} = 10.30.171.206</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-19T03:42:54.464318" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:42:54.464655" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:42:54.464808" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:42:54.464051" 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-19T03:42:54.464975" elapsed="0.000427"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.465697" level="INFO">index=74
host=10.30.171.206
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-19T03:42:54.465797" level="INFO">${karaf_connection_object} = index=74
host=10.30.171.206
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-19T03:42:54.465561" elapsed="0.000262"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:42:54.465958" elapsed="0.001937"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:42:54.468320" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:43:04.532915" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:54.468060" elapsed="10.065756">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:04.537332" elapsed="0.000405"/>
</kw>
<kw name="Open 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-19T03:43:04.537898" elapsed="0.000255"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:04.538298" elapsed="0.000107"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:04.535164" elapsed="0.003296"/>
</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-19T03:43:04.534379" elapsed="0.004173"/>
</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-19T03:42:54.460522" elapsed="10.078122">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:43:04.538741" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:54.449643" elapsed="10.089193">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:42:54.449273" elapsed="10.089650"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:42:54.449143" elapsed="10.089831"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:42:53.992219" elapsed="10.546998"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:42:52.009191" elapsed="12.530098"/>
</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-19T03:43:04.541779" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.541652" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.541628" elapsed="0.000225"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:43:04.546247" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.546133" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.546080" elapsed="0.000236"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:04.547284" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:43:04.546859" elapsed="0.000492"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:43:04.547813" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:43:04.547505" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:43:04.547885" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:43:04.548059" level="INFO">${index_list} = [1, 2, 3]</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-19T03:43:04.546535" elapsed="0.001551"/>
</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-19T03:43:04.552954" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.552844" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.552826" elapsed="0.000197"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:43:04.554219" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.554088" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.554070" elapsed="0.000217"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:04.554752" level="INFO">${karaf_connection_index} = 70</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-19T03:43:04.554420" elapsed="0.000359"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:04.555190" 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-19T03:43:04.554939" elapsed="0.000276"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:43:04.600070" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:43:04.556047" elapsed="0.044223"/>
</kw>
<msg time="2026-04-19T03:43:04.600453" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:43:04.600502" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.555364" elapsed="0.045177"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:43:04.654613" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:43:04.601345" elapsed="0.053456"/>
</kw>
<msg time="2026-04-19T03:43:04.654943" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:43:04.655017" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.600767" elapsed="0.054305"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:04.655457" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:04.655172" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.655144" elapsed="0.000498"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:04.656295" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:04.655797" elapsed="0.000667"/>
</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-19T03:43:04.656773" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:04.656534" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.656515" elapsed="0.000440"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:43:04.656995" elapsed="0.000056"/>
</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-19T03:43:04.659203" elapsed="0.000478"/>
</kw>
<kw name="Open 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-19T03:43:04.660022" elapsed="0.000331"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:04.660680" elapsed="0.000244"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:04.658255" elapsed="0.002763"/>
</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-19T03:43:04.657316" elapsed="0.003858"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:43:04.553780" elapsed="0.107500"/>
</kw>
<msg time="2026-04-19T03:43:04.661377" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:43:04.661423" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.553181" elapsed="0.108280"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:43:04.661650" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:43:04.661539" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.661521" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:04.662153" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:04.662489" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:43:04.662568" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:43:04.552551" elapsed="0.110127"/>
</kw>
<msg time="2026-04-19T03:43:04.662774" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:43:04.662819" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.548452" elapsed="0.114403"/>
</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-19T03:43:04.663286" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:04.662932" elapsed="0.000411"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.662915" elapsed="0.000451"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:43:04.548319" elapsed="0.115072"/>
</iter>
<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-19T03:43:04.668614" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.668498" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.668479" elapsed="0.000206"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:43:04.669869" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.669727" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.669710" elapsed="0.000228"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:04.670524" level="INFO">${karaf_connection_index} = 72</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-19T03:43:04.670124" elapsed="0.000428"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:04.670931" 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-19T03:43:04.670702" elapsed="0.000255"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:43:04.719246" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:43:04.671712" elapsed="0.047704"/>
</kw>
<msg time="2026-04-19T03:43:04.719637" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:43:04.719686" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.671151" elapsed="0.048573"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:43:04.799057" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:43:04.720431" elapsed="0.078818"/>
</kw>
<msg time="2026-04-19T03:43:04.799394" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:43:04.799440" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.719893" elapsed="0.079584"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:04.799846" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:04.799571" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.799545" elapsed="0.000477"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:04.800565" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:04.800175" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:04.801418" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:04.800725" elapsed="0.000846"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.800707" elapsed="0.000891"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:43:04.801636" elapsed="0.000039"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:04.803592" elapsed="0.000465"/>
</kw>
<kw name="Open 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-19T03:43:04.804386" elapsed="0.000300"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:04.804998" elapsed="0.000365"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:04.802816" elapsed="0.002637"/>
</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-19T03:43:04.801925" elapsed="0.003660"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:43:04.669441" elapsed="0.136248"/>
</kw>
<msg time="2026-04-19T03:43:04.805782" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:43:04.805829" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.668828" elapsed="0.137039"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:43:04.806066" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:43:04.805944" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.805925" elapsed="0.000227"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:04.806542" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:04.806865" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:43:04.806935" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:43:04.668186" elapsed="0.138890"/>
</kw>
<msg time="2026-04-19T03:43:04.807171" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:43:04.807215" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:43:04.663655" elapsed="0.143597"/>
</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-19T03:43:04.807626" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:04.807379" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.807360" elapsed="0.000343"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:43:04.663524" elapsed="0.144203"/>
</iter>
<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-19T03:43:04.812566" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.812458" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.812439" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:43:04.813881" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:04.813754" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:04.813736" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:04.814416" level="INFO">${karaf_connection_index} = 74</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-19T03:43:04.814096" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:04.814818" 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-19T03:43:04.814593" elapsed="0.000251"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:43:14.816568" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:43:04.815544" elapsed="10.002030">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:43:14.817820" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:43:14.817871" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:43:04.814991" elapsed="10.002905"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:43:24.819714" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:43:14.818878" elapsed="10.002112">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:43:24.821230" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:43:24.821292" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:43:14.818223" elapsed="10.003094"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:43:24.822642" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover.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-19T03:43:24.821805" elapsed="0.000923">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:43:24.821440" elapsed="0.001428">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:43:24.821407" elapsed="0.001500">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover.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-19T03:43:24.823084" 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-19T03:43:24.823305" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:24.823173" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:24.823156" elapsed="0.000322"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:43:24.823515" 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-19T03:43:24.825530" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:43:24.826349" elapsed="0.000337"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:24.827005" elapsed="0.000291"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:24.824741" elapsed="0.002647"/>
</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-19T03:43:24.823805" elapsed="0.003719"/>
</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-19T03:43:04.813470" elapsed="20.014143">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover.robot"</status>
</kw>
<msg time="2026-04-19T03:43:24.827811" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:43:24.827858" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover.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-19T03:43:04.812773" elapsed="20.015111"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:43:24.828119" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:24.827962" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:24.827944" elapsed="0.000243"/>
</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-19T03:43:24.828943" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:24.828835" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:24.828816" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:24.829358" 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-19T03:43:24.829463" 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-19T03:43:24.829210" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:24.829899" level="INFO">{1: 70, 2: 72, 3: 74}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:24.829634" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:24.830354" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:24.830105" elapsed="0.000293"/>
</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-19T03:43:24.830999" elapsed="0.000336"/>
</kw>
<msg time="2026-04-19T03:43:24.831434" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:43:24.831481" level="INFO">${old_connection_index} = 74</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-19T03:43:24.830595" elapsed="0.000908"/>
</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-19T03:43:24.832581" elapsed="0.000257"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:43:34.834629" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:43:24.833813" elapsed="10.001523">No match found for '
' in 10 seconds
Output:
.</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-19T03:43:24.833070" elapsed="10.002397"/>
</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-19T03:43:34.836730" elapsed="0.000337"/>
</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-19T03:43:34.835880" elapsed="0.001264"/>
</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-19T03:43:24.831790" elapsed="10.005439"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:24.831579" elapsed="10.005710"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:24.831561" elapsed="10.005766"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:34.838371" level="INFO">${ip_address} = 10.30.171.206</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-19T03:43:34.837890" elapsed="0.000509"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:43:34.838452" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:43:34.838611" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:43:34.837567" elapsed="0.001069"/>
</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-19T03:43:34.838782" elapsed="0.000448"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:34.839748" level="INFO">index=79
host=10.30.171.206
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-19T03:43:34.839856" level="INFO">${karaf_connection_object} = index=79
host=10.30.171.206
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-19T03:43:34.839394" elapsed="0.000489"/>
</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-19T03:43:34.840023" elapsed="0.002134"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:43:34.842656" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:43:44.903774" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:34.842386" elapsed="10.062270">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:44.908204" elapsed="0.000755"/>
</kw>
<kw name="Open 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-19T03:43:44.909238" elapsed="0.000495"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:44.909947" elapsed="0.000274"/>
</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-19T03:43:44.905868" elapsed="0.004443"/>
</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-19T03:43:44.905176" elapsed="0.005184"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:43:24.828584" elapsed="20.081863">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:44.910815" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:43:44.910892" elapsed="0.000020"/>
</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-19T03:43:04.812159" elapsed="40.098846">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:43:44.911155" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:43:44.911200" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:04.807987" elapsed="40.103237"/>
</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-19T03:43:44.911564" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:44.911314" elapsed="0.000305"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:44.911293" elapsed="0.000350"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:43:04.807857" elapsed="40.103818"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:43:04.548143" elapsed="40.363567"/>
</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-19T03:43:04.545788" elapsed="40.365982"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:43:04.539895" elapsed="40.371934"/>
</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-19T03:43:04.539443" elapsed="40.372431"/>
</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-19T03:42:52.004443" elapsed="52.907483"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.918210" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:43:44.917751" elapsed="0.000486"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.918694" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:43:44.918386" elapsed="0.000334"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:43:44.918765" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:43:44.918920" level="INFO">${index_list} = [1, 2, 3]</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-19T03:43:44.917435" elapsed="0.001510"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:43:44.919269" elapsed="0.000187"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.919941" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:43:44.919606" elapsed="0.000361"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.920368" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:43:44.920128" elapsed="0.000338"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.920867" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:43:44.920621" elapsed="0.000272"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.923152" 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-19T03:43:44.922837" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:43:44.923224" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:43:44.923371" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:43:44.922555" elapsed="0.000844"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.968128" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:44.967712" elapsed="0.000447"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:44.968979" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:44.968697" elapsed="0.000370">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:44.969165" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:44.968338" elapsed="0.000852"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.969768" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:43:44.969370" elapsed="0.000425"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:43:44.970142" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:43:44.970314" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:43:44.969968" elapsed="0.000371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.970769" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:44.970510" elapsed="0.000305"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.971748" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:44.971486" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.972254" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:43:44.971945" elapsed="0.000335"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:44.972656" elapsed="0.000024"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:44.972863" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:44.973044" elapsed="0.000024"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:43:44.972500" elapsed="0.000606"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:43:44.972338" elapsed="0.000799"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:43:44.973182" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:43:44.973352" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:43:44.971221" elapsed="0.002157"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:44.970906" elapsed="0.002506"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:44.973578" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:44.973438" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:44.970885" elapsed="0.002770"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:44.974298" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:44.973814" elapsed="0.000514"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:43:44.974401" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:43:44.966802" elapsed="0.007879"/>
</kw>
<msg time="2026-04-19T03:43:44.974753" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:44.954629" elapsed="0.020196"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.019973" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.065783" elapsed="0.000035"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.110865" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.111259" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.111516" elapsed="0.000021"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.112651" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.111951" elapsed="0.000849"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:45.111907" elapsed="0.000974"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.113186" elapsed="0.000072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.113527" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.113862" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:43:45.111866" elapsed="0.002152"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.111716" elapsed="0.002387"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.114247" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.114477" elapsed="0.000020"/>
</return>
<msg time="2026-04-19T03:43:45.114630" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:43:44.950447" elapsed="0.164211"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.117870" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.117271" elapsed="0.000725">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.118208" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.115468" elapsed="0.002782"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.118894" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.118423" elapsed="0.000738"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.120890" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.119994" elapsed="0.000986"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.119196" elapsed="0.001970"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.118403" elapsed="0.002788"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.123816" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:43:45.121335" elapsed="0.002524"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:43:45.124022" elapsed="0.000048"/>
</return>
<msg time="2026-04-19T03:43:45.124199" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:43:45.115120" elapsed="0.009105"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.127082" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.126475" elapsed="0.000723">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.127326" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.124945" elapsed="0.002423"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:43:45.127826" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:43:45.127537" elapsed="0.000426"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.127517" elapsed="0.000474"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.128143" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.128400" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.128567" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:43:45.130665" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:43:45.124567" elapsed="0.006125"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.132900" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.132379" elapsed="0.000683"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.133770" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.133286" elapsed="0.000632"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:45.168225" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:43:45.169613" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0q793p2w54rf25gaxwnsv9ii13.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:43:45 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:43:45.170366" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:43:45.136515" elapsed="0.034051"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.134259" elapsed="0.036629"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.171458" elapsed="0.000109"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.170961" elapsed="0.000918"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.134234" elapsed="0.037699"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.179817" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.176520" elapsed="0.003828"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.175128" elapsed="0.005268"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.174966" elapsed="0.005495"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.183284" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.181251" elapsed="0.002125"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.180622" elapsed="0.002800"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.180567" elapsed="0.002920"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.184898" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.184014" elapsed="0.001001"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.185799" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.185195" elapsed="0.000731"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.186733" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.186326" elapsed="0.000461"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.185988" elapsed="0.000847"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.185139" elapsed="0.001755"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.188166" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.187428" elapsed="0.000852"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.189196" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.188442" elapsed="0.000880"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.190118" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.189703" elapsed="0.000470"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.189385" elapsed="0.000835"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.188386" elapsed="0.001894"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:45.191319" elapsed="0.000663"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:43:45.193523" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.192945" elapsed="0.000690"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.194805" elapsed="0.002307"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:43:45.173088" elapsed="0.024132"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.197594" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:45.197402" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.197381" elapsed="0.000361"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:43:45.209678" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:43:45.197892" elapsed="0.011833"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:43:45.209942" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:43:45.210136" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:43:45.131133" elapsed="0.079030"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.210228" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:43:45.210380" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:43:44.930767" elapsed="0.279640"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.210726" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.210491" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.210473" elapsed="0.000397"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.210905" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:43:44.927105" elapsed="0.283974"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:44.923469" elapsed="0.287656"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:44.923452" elapsed="0.287697"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:43:45.211702" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T03:43:45.211595" elapsed="0.000165"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.211821" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:45.211784" elapsed="0.000075"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.211577" elapsed="0.000304"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.212016" elapsed="0.000037"/>
</kw>
<msg time="2026-04-19T03:43:45.212153" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:43:45.211374" elapsed="0.000804"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.212700" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.212330" elapsed="0.000396"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.213364" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.212883" elapsed="0.000509"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.218461" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.218211" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.218907" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.218649" elapsed="0.000313"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:45.229708" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:43:45.229768" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:43:45 GMT', 'Expires': 'Sun, 19 Apr 2026 02:43:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"362.2 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570225,"status":200} 
 </msg>
<msg time="2026-04-19T03:43:45.229873" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:43:45.220843" elapsed="0.009058"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.219055" elapsed="0.010892"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.230136" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.229973" elapsed="0.000229"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.219021" elapsed="0.011202"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.233692" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"362.2 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570225,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.231257" elapsed="0.002628"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.231048" elapsed="0.002948"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.231014" elapsed="0.003012"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.236514" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.234316" elapsed="0.002341"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.234100" elapsed="0.002666"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.234083" elapsed="0.002712"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.237536" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.236987" elapsed="0.000576"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.237853" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.237634" elapsed="0.000371"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.238802" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.238198" elapsed="0.000646"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.238049" elapsed="0.000917"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.237616" elapsed="0.001375"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.239667" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.239156" elapsed="0.000538"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.239986" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.239764" elapsed="0.000549"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.241053" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.240488" elapsed="0.000609"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.240341" elapsed="0.000876"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.239746" elapsed="0.001496"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:45.241384" elapsed="0.000695"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:43:45.242820" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.242233" elapsed="0.000613"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.242988" elapsed="0.002576"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:43:45.230660" elapsed="0.014969"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.245806" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:45.245697" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.245679" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:43:45.248628" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570225,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:43:45.246044" elapsed="0.002613"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:43:45.248710" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:43:45.248893" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570225,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:43:45.214242" elapsed="0.034678"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.248982" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:43:45.249146" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570225,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:43:45.213595" elapsed="0.035578"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.250150" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570225, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.249653" elapsed="0.000526"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:43:45.250264" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:43:45.250440" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570225, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:43:45.249379" elapsed="0.001088"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:45.250816" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.250613" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:45.251235" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.251009" elapsed="0.000252"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:43:45.251308" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:43:45.251459" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:43:44.921995" elapsed="0.329489"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:43:45.251543" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:43:45.251689" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:43:44.921331" elapsed="0.330382"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.252147" elapsed="0.000197"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.251791" elapsed="0.000590"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.252540" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.252406" elapsed="0.000187"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.252744" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.252616" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.251774" elapsed="0.001041"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:43:44.921170" elapsed="0.331686"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.255066" level="INFO">${session} = ClusterManagement__session_2</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-19T03:43:45.254748" elapsed="0.000346"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:43:45.255139" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:43:45.255285" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:43:45.254467" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.301377" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.300960" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.302284" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.301966" elapsed="0.000394">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.302455" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.301593" elapsed="0.000887"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.303072" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:43:45.302661" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.303420" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:43:45.303576" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:43:45.303273" elapsed="0.000384"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.304099" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.303828" elapsed="0.000317"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.305108" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.304802" elapsed="0.000353"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.305576" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.305304" elapsed="0.000299"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.305915" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.306127" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.306294" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:43:45.305793" elapsed="0.000558"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.305653" elapsed="0.000728"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:43:45.306428" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:43:45.306595" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:43:45.304537" elapsed="0.002083"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.304241" elapsed="0.002412"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.306812" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.306677" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.304219" elapsed="0.002671"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.307515" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.307064" elapsed="0.000479"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.307617" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:43:45.300104" elapsed="0.007748"/>
</kw>
<msg time="2026-04-19T03:43:45.307925" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:45.288205" elapsed="0.019790"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.352679" elapsed="0.000033"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.396809" elapsed="0.000049"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.442059" elapsed="0.000032"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.442433" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.442690" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.444081" elapsed="0.000199"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.443690" elapsed="0.000666"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:45.443644" elapsed="0.000788"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.444716" elapsed="0.000072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.445081" elapsed="0.000074"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.445420" elapsed="0.000070"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:43:45.443604" elapsed="0.001970"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.442951" elapsed="0.002690"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.445785" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.446014" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:43:45.446183" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:43:45.284049" elapsed="0.162162"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.448753" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.448172" elapsed="0.000705">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.449005" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.446961" elapsed="0.002493"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.450110" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.449631" elapsed="0.000662"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.451940" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.451078" elapsed="0.000964"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.450321" elapsed="0.001856"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.449610" elapsed="0.002592"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.454978" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:43:45.452345" elapsed="0.002676"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:43:45.455197" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:43:45.455360" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:43:45.446618" elapsed="0.008767"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.457761" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.457227" elapsed="0.000649">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.458004" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.456060" elapsed="0.002000"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:43:45.458521" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:43:45.458233" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.458213" elapsed="0.000472"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.458824" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.459092" elapsed="0.000024"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.459263" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:43:45.461327" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:43:45.455730" elapsed="0.005624"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.463469" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.462974" elapsed="0.000640"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.464319" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.463835" elapsed="0.000626"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:45.500994" level="INFO">GET Request : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:43:45.501878" level="INFO">GET Response : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0mj7jke1wtkr3g73bngbmay3e3.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:43:45 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:43:45.502331" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:43:45.466980" elapsed="0.035478"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.464606" elapsed="0.038051"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.502986" elapsed="0.000093"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.502700" elapsed="0.000578"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.464586" elapsed="0.038727"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.509628" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.506112" elapsed="0.004156"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.505253" elapsed="0.005063"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.505172" elapsed="0.005211"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.513210" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.511149" elapsed="0.002155"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.510545" elapsed="0.002805"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.510489" elapsed="0.002927"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.514833" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.513943" elapsed="0.001000"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.515718" elapsed="0.000075"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.515123" elapsed="0.000719"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.516648" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.516240" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.515905" elapsed="0.000844"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.515066" elapsed="0.001742"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.518261" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.517396" elapsed="0.000975"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.519144" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.518534" elapsed="0.000735"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.520070" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.519654" elapsed="0.000473"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.519332" elapsed="0.000842"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.518477" elapsed="0.001757"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:45.521194" elapsed="0.000665"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:43:45.523566" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.522930" elapsed="0.000747"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.524598" elapsed="0.002270"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:43:45.503981" elapsed="0.022994"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.527369" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:45.527177" elapsed="0.000317"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.527156" elapsed="0.000364"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:43:45.539465" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:43:45.527659" elapsed="0.011854"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:43:45.539681" elapsed="0.000039"/>
</return>
<msg time="2026-04-19T03:43:45.539857" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:43:45.461782" elapsed="0.078102"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.539948" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:43:45.540117" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:43:45.264694" elapsed="0.275449"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.540471" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.540229" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.540211" elapsed="0.000404"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.540651" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:43:45.260883" elapsed="0.279894"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.255375" elapsed="0.285447"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.255358" elapsed="0.285487"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:43:45.541468" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T03:43:45.541359" elapsed="0.000168"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.541590" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:45.541551" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.541341" elapsed="0.000311"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.541790" elapsed="0.000022"/>
</kw>
<msg time="2026-04-19T03:43:45.541910" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:43:45.541101" elapsed="0.000835"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.542532" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.542147" elapsed="0.000413"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.543330" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.542704" elapsed="0.000655"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.548221" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.547953" elapsed="0.000314"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.548649" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.548408" elapsed="0.000285"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:45.561325" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:43:45.561474" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:43:45 GMT', 'Expires': 'Sun, 19 Apr 2026 02:43:45 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"280.8 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570225,"status":200} 
 </msg>
<msg time="2026-04-19T03:43:45.561733" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:43:45.550580" elapsed="0.011216"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.548759" elapsed="0.013143"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.562346" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.561964" elapsed="0.000541"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.548741" elapsed="0.013817"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.569010" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"280.8 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570225,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.565222" elapsed="0.004114"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.564627" elapsed="0.004866"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.564582" elapsed="0.004952"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.573025" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.569919" elapsed="0.003367"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.569616" elapsed="0.003826"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.569591" elapsed="0.003891"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.574360" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.573701" elapsed="0.000687"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.574682" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.574459" elapsed="0.000376"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.575561" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.575009" elapsed="0.000596"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.574862" elapsed="0.000869"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.574440" elapsed="0.001315"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.576437" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.575903" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.576754" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.576534" elapsed="0.000372"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.577635" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.577097" elapsed="0.000581"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.576933" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.576516" elapsed="0.001309"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:45.577969" elapsed="0.000746"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:43:45.579487" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.578870" elapsed="0.000644"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.579657" elapsed="0.002688"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:43:45.563670" elapsed="0.018742"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.582596" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:45.582484" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.582464" elapsed="0.000200"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:43:45.585345" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570225,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:43:45.582799" elapsed="0.002576"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:43:45.585428" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:43:45.585594" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570225,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:43:45.544185" elapsed="0.041435"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.585678" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:43:45.585826" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570225,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:43:45.543563" elapsed="0.042289"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.586825" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570225, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.586379" elapsed="0.000475"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:43:45.586946" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:43:45.587268" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570225, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:43:45.586093" elapsed="0.001203"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:45.587645" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.587442" elapsed="0.000231"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:45.588013" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.587815" elapsed="0.000241"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:43:45.588105" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:43:45.588258" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:43:45.253900" elapsed="0.334383"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:43:45.588341" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:43:45.588486" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:43:45.253237" elapsed="0.335274"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.588797" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.588590" elapsed="0.000436"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.589229" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.589067" elapsed="0.000219"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.589440" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.589310" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.588573" elapsed="0.000941"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:43:45.253078" elapsed="0.336460"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.591693" level="INFO">${session} = ClusterManagement__session_3</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-19T03:43:45.591394" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:43:45.591767" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:43:45.591912" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:43:45.591111" elapsed="0.000827"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.636295" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.635887" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.637105" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.636833" elapsed="0.000346">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.637300" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.636506" elapsed="0.000820"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.637899" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:43:45.637506" elapsed="0.000421"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.638261" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:43:45.638412" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:43:45.638113" elapsed="0.000372"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.638911" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.638657" elapsed="0.000300"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.639928" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.639671" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.640418" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:43:45.640147" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.640762" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.640953" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.641131" elapsed="0.000044"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:43:45.640639" elapsed="0.000575"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.640495" elapsed="0.000761"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:43:45.641302" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:43:45.641465" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:43:45.639405" elapsed="0.002085"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.639083" elapsed="0.002439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.641678" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.641546" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.639061" elapsed="0.002691"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.642368" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:43:45.641910" elapsed="0.000486"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:43:45.642468" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:43:45.635015" elapsed="0.007681"/>
</kw>
<msg time="2026-04-19T03:43:45.642768" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:45.622995" elapsed="0.019842"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.687766" elapsed="0.000055"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.732472" elapsed="0.000044"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.779413" elapsed="0.000053"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.779853" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.780129" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.781537" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.780671" elapsed="0.001013"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:45.780623" elapsed="0.001138"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.782070" elapsed="0.000073"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.782412" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.782750" elapsed="0.000072"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:43:45.780578" elapsed="0.002329"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.780404" elapsed="0.002572"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.783135" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.783365" elapsed="0.000021"/>
</return>
<msg time="2026-04-19T03:43:45.783523" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:43:45.618837" elapsed="0.164744"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.786205" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.785556" elapsed="0.000776">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.786462" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.784385" elapsed="0.002118"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.787486" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:45.786674" elapsed="0.000993"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.789337" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:43:45.788436" elapsed="0.001064"/>
</kw>
<status status="PASS" start="2026-04-19T03:43:45.787694" elapsed="0.001947"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.786654" elapsed="0.003012"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.792389" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:43:45.789811" elapsed="0.002621"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:43:45.792593" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:43:45.792755" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:43:45.784021" elapsed="0.008760"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:43:45.795171" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.794568" elapsed="0.000721">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:43:45.795418" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:43:45.793477" elapsed="0.001982"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:43:45.795916" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:43:45.795630" elapsed="0.000437"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:45.795610" elapsed="0.000485"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.796231" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:45.796482" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:43:45.796657" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:43:45.798680" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:43:45.793145" elapsed="0.005562"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.800999" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.800524" elapsed="0.000635"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:45.801899" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:45.801378" elapsed="0.000676"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:50.814148" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.804372" elapsed="5.014831">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:43:45.802201" elapsed="5.017436">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.820315" elapsed="0.000118"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:50.819759" elapsed="0.000994"/>
</branch>
<status status="FAIL" start="2026-04-19T03:43:45.802181" elapsed="5.018633">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.822086" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.822361" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:50.822318" elapsed="0.000168"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:50.822297" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.822651" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.822847" elapsed="0.000018"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.799341" elapsed="5.023629">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.823087" elapsed="0.000019"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.599488" elapsed="5.223705">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.823464" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:50.823290" elapsed="0.000247"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:50.823272" elapsed="0.000289"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.823594" elapsed="0.000015"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.595697" elapsed="5.228000">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:43:45.592005" elapsed="5.231762">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:43:45.591988" elapsed="5.231810">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.824047" elapsed="0.000026"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.824243" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.824402" elapsed="0.000021"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.824618" elapsed="0.000024"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.824901" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.825079" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.825237" elapsed="0.000020"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.825303" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.590549" elapsed="5.234857">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.825476" elapsed="0.000016"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:43:45.589866" elapsed="5.235707">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.825798" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:50.825666" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.826017" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:50.825887" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.826238" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:50.826108" elapsed="0.000187"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:50.825648" elapsed="0.000669"/>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:43:45.589707" elapsed="5.236653">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:43:44.920943" elapsed="5.905477">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.826475" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:43:44.916639" elapsed="5.909935">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.826744" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.826960" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:50.826831" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:43:50.826814" elapsed="0.000299"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.827244" elapsed="0.000021"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.827403" elapsed="0.000020"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.827469" elapsed="0.000014"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:43:44.912626" elapsed="5.914942">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.827739" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.827901" elapsed="0.000020"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.828069" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.828234" elapsed="0.000020"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.828487" elapsed="0.000024"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.828657" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.828811" elapsed="0.000020"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.829129" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.829288" elapsed="0.000021"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:43:50.828942" elapsed="0.000401"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.828879" elapsed="0.000489"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.829506" elapsed="0.000020"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.829662" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.829846" elapsed="0.000021"/>
</kw>
<arg>shard_name=car</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:43:44.912211" elapsed="5.917758">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<arg>shard_name=people</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.830252" elapsed="0.000025"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<arg>shard_name=car-people</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.830516" elapsed="0.000023"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${leader_list}</var>
<arg>${car-people_leader_index}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.830676" elapsed="0.000020"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<var>${reboot_list}</var>
<arg>${leader_list}</arg>
<arg>${car-people_follower_indices}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.830830" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${list_to_reboot}</arg>
<arg>${reboot_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:50.830997" elapsed="0.000020"/>
</kw>
<doc>Initialize resources, memorize shard leaders, compute item distribution.</doc>
<status status="FAIL" start="2026-04-19T03:42:52.004077" elapsed="58.827108">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<test id="s1-s25-t1" name="Add_Cars_To_Leader_And_Verify" line="37">
<doc>Add all needed cars to car Leader, verify on each member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.831267" elapsed="0.001004">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t2" name="Add_People_To_First_Follower_And_Verify" line="55">
<doc>Add all needed people to people first Follower, verify on each member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.832475" elapsed="0.000421">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t3" name="Buy_Cars_On_Leader_And_Verify" line="70">
<doc>Buy some cars on the leader member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.833173" elapsed="0.000454">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t4" name="Buy_Cars_On_Follower_And_Verify" line="89">
<doc>Buy some cars on the first follower member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.834078" elapsed="0.001165">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t5" name="Reboot_People_Leader" line="108">
<doc>Previous people Leader is rebooted. We should never stop the people first follower, this is where people are registered.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.835678" elapsed="0.000924">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t6" name="Buy_Cars_On_Leader_After_Reboot_And_Verify" line="122">
<doc>Buy some cars on the leader member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.837117" elapsed="0.000475">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t7" name="Buy_Cars_On_Follower_After_Reboot_And_Verify" line="141">
<doc>Buy some cars on the first follower member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.837810" elapsed="0.000494">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t8" name="Delete_All_CarPeople" line="160">
<doc>DELETE car-people container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.838479" elapsed="0.000354">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t9" name="Delete_All_People" line="164">
<doc>DELETE people container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.839115" elapsed="0.000396">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s25-t10" name="Delete_All_Cars" line="168">
<doc>DELETE cars container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:43:50.839763" elapsed="0.000398">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<doc>This test focuses on testing buy-car RPC over 3 Leader reboots.

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


All purchases are against the same node, which is the first one to get rebooted.

All data is deleted at the end of the suite.
This suite expects car, people and car-people modules to have separate Shards.</doc>
<status status="FAIL" start="2026-04-19T03:42:51.937618" elapsed="58.902913">Suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</suite>
<suite id="s1-s26" name="Entity Isolate" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/entity_isolate.robot">
<kw name="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-19T03:43:50.910832" 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-19T03:43:50.907208" elapsed="0.003678"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:43:50.906977" elapsed="0.003977"/>
</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-19T03:43:50.915214" 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-19T03:43:50.912018" elapsed="0.003224"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:43:50.915443" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:50.915325" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:50.915302" elapsed="0.000206"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.916000" 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-19T03:43:50.915649" elapsed="0.000410"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.916523" level="INFO">${cluster_size} = 3</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-19T03:43:50.916211" elapsed="0.000338"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Convert To Integer" owner="BuiltIn">
<arg>${cluster_size}</arg>
<doc>Converts the given item to an integer number.</doc>
<status status="PASS" start="2026-04-19T03:43:50.917048" elapsed="0.000280"/>
</kw>
<msg time="2026-04-19T03:43:50.917424" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:43:50.917472" level="INFO">${possibly_int_of_members} = 3</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-19T03:43:50.916703" elapsed="0.000792"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.918063" level="INFO">${int_of_members} = 3</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-19T03:43:50.917653" elapsed="0.000437"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.919044" 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-19T03:43:50.918766" elapsed="0.000307"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.919464" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:43:50.919208" elapsed="0.000282"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.919926" 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-19T03:43:50.919636" elapsed="0.000317"/>
</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-19T03:43:50.922704" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.923401" level="INFO">${member_ip} = 10.30.171.9</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-19T03:43:50.923074" elapsed="0.000354"/>
</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-19T03:43:50.923568" elapsed="0.000227"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.924576" 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-19T03:43:50.924282" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:43:50.924649" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:43:50.924806" 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-19T03:43:50.923980" elapsed="0.000851"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:50.925636" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7595b10&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-19T03:43:50.925056" elapsed="0.000717"/>
</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-19T03:43:50.925947" elapsed="0.000213"/>
</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-19T03:43:50.922156" elapsed="0.004065"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:43:50.921963" elapsed="0.004303"/>
</iter>
<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-19T03:43:50.927073" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.927726" level="INFO">${member_ip} = 10.30.171.128</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-19T03:43:50.927405" elapsed="0.000348"/>
</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-19T03:43:50.927889" elapsed="0.000233"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.928867" level="INFO">${session} = ClusterManagement__session_2</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-19T03:43:50.928576" elapsed="0.000318"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:43:50.928939" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:43:50.929104" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:43:50.928301" elapsed="0.000828"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:50.929669" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7f46a10&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-19T03:43:50.929269" elapsed="0.000502"/>
</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-19T03:43:50.929935" elapsed="0.000205"/>
</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-19T03:43:50.926518" elapsed="0.003681"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:43:50.926350" elapsed="0.003894"/>
</iter>
<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-19T03:43:50.931046" elapsed="0.000187"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.931694" level="INFO">${member_ip} = 10.30.171.206</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-19T03:43:50.931375" elapsed="0.000345"/>
</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-19T03:43:50.931856" elapsed="0.000233"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.932835" level="INFO">${session} = ClusterManagement__session_3</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-19T03:43:50.932544" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:43:50.932906" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:43:50.933070" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:43:50.932267" elapsed="0.000830"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:43:50.933677" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6df1c50&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-19T03:43:50.933236" elapsed="0.000543"/>
</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-19T03:43:50.933951" elapsed="0.000205"/>
</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-19T03:43:50.930498" elapsed="0.003717"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:43:50.930329" elapsed="0.003929"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:43:50.920005" elapsed="0.014282"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.934915" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:43:50.934513" elapsed="0.000446"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.935524" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:43:50.935123" elapsed="0.000444"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.936112" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:43:50.935715" elapsed="0.000441"/>
</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-19T03:43:50.918329" elapsed="0.017884"/>
</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-19T03:43:50.911675" elapsed="0.024594"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:43:50.936445" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:50.936333" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:50.936316" 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-19T03:43:50.940695" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:43:50.940311" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.941189" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:43:50.940868" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:43:50.941262" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:43:50.941416" level="INFO">${index_list} = [1, 2, 3]</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-19T03:43:50.939972" elapsed="0.001469"/>
</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-19T03:43:50.942433" level="INFO">${member_ip} = 10.30.171.9</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-19T03:43:50.942165" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:50.943185" 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-19T03:43:50.943287" 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-19T03:43:50.943007" elapsed="0.000306"/>
</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-19T03:43:50.946928" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:50.946313" elapsed="0.000706"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:50.946293" elapsed="0.000785"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:50.947782" 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-19T03:43:50.948055" 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-19T03:43:50.947281" elapsed="0.000833"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.949126" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:50.948391" elapsed="0.000851"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:50.950656" 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-19T03:43:50.949601" elapsed="0.001110"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:43:50.952744" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:43:50.952943" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:43:50.952365" elapsed="0.000629"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:50.953434" elapsed="0.000505"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:43:50.955565" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:43:51.268742" 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 Sun Apr 19 03:42:52 UTC 2026

  System load:  0.16               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:42:52 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:43:50.955085" elapsed="0.313808"/>
</kw>
<msg time="2026-04-19T03:43:51.268980" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:50.954452" elapsed="0.314728"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:43:50.951334" elapsed="0.318013"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.270337" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:43:51.283380" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:43:51.283646" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:43:51.283814" 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-19T03:43:51.269741" elapsed="0.014154"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:51.284615" elapsed="0.001277"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.288595" 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-19T03:43:51.287238" elapsed="0.001617"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:43:51.289956" elapsed="0.000152"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:51.289372" elapsed="0.000941"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:51.289316" elapsed="0.001085"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:43:51.291155" elapsed="0.000160"/>
</return>
<status status="PASS" start="2026-04-19T03:43:51.290589" elapsed="0.000920"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:51.290551" elapsed="0.001048"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:43:51.291738" 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-19T03:43:51.296709" elapsed="0.000537"/>
</kw>
<kw name="Open 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-19T03:43:51.297532" elapsed="0.000311"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:51.298152" elapsed="0.000259"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:51.292831" elapsed="0.005652"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:43:50.945247" elapsed="0.353426"/>
</kw>
<msg time="2026-04-19T03:43:51.298732" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:50.944566" elapsed="0.354223"/>
</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-19T03:43:50.943944" elapsed="0.354926"/>
</kw>
<msg time="2026-04-19T03:43:51.298910" 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-19T03:43:50.943458" elapsed="0.355498"/>
</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-19T03:43:51.301422" elapsed="0.000312"/>
</kw>
<kw name="Open 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-19T03:43:51.301949" elapsed="0.000166"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:51.302271" elapsed="0.000329"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:51.299261" elapsed="0.003430"/>
</kw>
<msg time="2026-04-19T03:43:51.302786" 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-19T03:43:50.942666" elapsed="0.360145"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.303258" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:51.302991" elapsed="0.000307"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:43:51.303342" 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-19T03:43:50.941783" elapsed="0.361683"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:43:50.941618" elapsed="0.361885"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:51.304527" level="INFO">${member_ip} = 10.30.171.128</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-19T03:43:51.304250" elapsed="0.000303"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.305263" 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-19T03:43:51.305362" 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-19T03:43:51.305122" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:43:51.309334" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:51.308710" elapsed="0.000713"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:51.308691" elapsed="0.000772"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.310162" 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-19T03:43:51.310450" 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-19T03:43:51.309655" elapsed="0.000851"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.311500" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:51.310774" elapsed="0.000842"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.313247" level="INFO">${conn_id} = 84</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:43:51.311896" elapsed="0.001409"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.315333" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:43:51.315525" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:43:51.314784" elapsed="0.000787"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:51.315921" elapsed="0.000490"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.317707" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:43:51.634926" 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 Sun Apr 19 03:42:52 UTC 2026

  System load:  0.17               Processes:             123
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:42:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:43:51.317380" elapsed="0.317718"/>
</kw>
<msg time="2026-04-19T03:43:51.635199" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:51.316774" elapsed="0.318604"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:43:51.313773" elapsed="0.321854"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.636628" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:43:51.649288" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:43:51.649668" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:43:51.649916" 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-19T03:43:51.636010" elapsed="0.014069"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:51.650831" elapsed="0.001259"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.654892" 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-19T03:43:51.653379" elapsed="0.001818"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:43:51.655871" elapsed="0.000080"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:51.655475" elapsed="0.000620"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:51.655436" elapsed="0.000719"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:43:51.656631" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-19T03:43:51.656281" elapsed="0.000577"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:51.656256" elapsed="0.000663"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:43:51.657009" 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-19T03:43:51.661873" elapsed="0.000769"/>
</kw>
<kw name="Open 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-19T03:43:51.663194" elapsed="0.000327"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:51.663806" elapsed="0.000275"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:51.657744" elapsed="0.006415"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:43:51.307543" elapsed="0.356813"/>
</kw>
<msg time="2026-04-19T03:43:51.664414" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:51.306910" elapsed="0.357557"/>
</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-19T03:43:51.306015" elapsed="0.358536"/>
</kw>
<msg time="2026-04-19T03:43:51.664592" 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-19T03:43:51.305531" elapsed="0.359107"/>
</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-19T03:43:51.667132" 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-19T03:43:51.667606" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:51.667888" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:51.664918" elapsed="0.003136"/>
</kw>
<msg time="2026-04-19T03:43:51.668152" 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-19T03:43:51.304756" elapsed="0.363422"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.668594" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:51.668343" elapsed="0.000294"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:43:51.668681" 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-19T03:43:51.303768" elapsed="0.365038"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:43:51.303597" elapsed="0.365246"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:51.669758" level="INFO">${member_ip} = 10.30.171.206</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-19T03:43:51.669484" elapsed="0.000302"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.670612" 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-19T03:43:51.670717" 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-19T03:43:51.670416" elapsed="0.000329"/>
</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-19T03:43:51.674310" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:51.673692" elapsed="0.000710"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:51.673672" elapsed="0.000771"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.675265" 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-19T03:43:51.675526" 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-19T03:43:51.674678" elapsed="0.000906"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.676976" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:51.675856" elapsed="0.001264"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.678434" 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-19T03:43:51.677407" elapsed="0.001134"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:43:51.680541" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:43:51.680736" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:43:51.680006" elapsed="0.000780"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:51.681161" elapsed="0.000654"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.683058" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:43:51.997341" 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 Sun Apr 19 03:42:53 UTC 2026

  System load:  0.1                Processes:             121
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:42:53 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:43:51.682708" elapsed="0.314772"/>
</kw>
<msg time="2026-04-19T03:43:51.997562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:51.682205" elapsed="0.315526"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:43:51.679010" elapsed="0.318875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:43:51.998825" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:43:52.011968" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:43:52.012398" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:43:52.012650" 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-19T03:43:51.998285" elapsed="0.014484"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.013518" elapsed="0.001255"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.017442" 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-19T03:43:52.016092" elapsed="0.001605"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:43:52.018771" elapsed="0.000131"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:52.018131" elapsed="0.001070"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.018075" elapsed="0.001171"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:43:52.019611" elapsed="0.000071"/>
</return>
<status status="PASS" start="2026-04-19T03:43:52.019338" elapsed="0.000433"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.019317" elapsed="0.000496"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:43:52.019877" elapsed="0.000016"/>
</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-19T03:43:52.023335" elapsed="0.000522"/>
</kw>
<kw name="Open 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-19T03:43:52.024170" elapsed="0.000351"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.024807" elapsed="0.000276"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:52.020397" elapsed="0.004761"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:43:51.672650" elapsed="0.352713"/>
</kw>
<msg time="2026-04-19T03:43:52.025421" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:43:51.672011" elapsed="0.353466"/>
</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-19T03:43:51.671533" elapsed="0.354026"/>
</kw>
<msg time="2026-04-19T03:43:52.025602" 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-19T03:43:51.670893" elapsed="0.354757"/>
</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-19T03:43:52.028123" 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-19T03:43:52.028594" elapsed="0.000148"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.028877" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:43:52.025933" elapsed="0.003092"/>
</kw>
<msg time="2026-04-19T03:43:52.029138" 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-19T03:43:51.670057" elapsed="0.359107"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.029576" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:52.029327" elapsed="0.000291"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:43:52.029662" 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-19T03:43:51.669133" elapsed="0.360654"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:43:51.668942" elapsed="0.360884"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:43:50.941492" elapsed="1.088369"/>
</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-19T03:43:50.936715" elapsed="1.093208"/>
</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-19T03:43:52.030086" 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-19T03:43:52.042837" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:52.042679" elapsed="0.000206"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.042658" elapsed="0.000250"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.043284" 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-19T03:43:52.043390" 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-19T03:43:52.043112" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.043857" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:52.043574" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.044337" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:52.044081" elapsed="0.000301"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:52.045177" 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-19T03:43:52.044929" elapsed="0.000358">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:43:52.045393" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:43:52.045439" 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-19T03:43:52.044577" elapsed="0.000885"/>
</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-19T03:43:52.045757" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:52.045539" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.045521" elapsed="0.000336"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:52.046609" level="INFO">${ip_address} = 10.30.171.9</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-19T03:43:52.046343" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:43:52.046685" elapsed="0.000042"/>
</return>
<msg time="2026-04-19T03:43:52.046853" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:43:52.046072" elapsed="0.000805"/>
</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-19T03:43:52.047019" elapsed="0.000423"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.048087" level="INFO">index=90
host=10.30.171.9
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-19T03:43:52.048191" level="INFO">${karaf_connection_object} = index=90
host=10.30.171.9
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_error...</msg>
<var>${karaf_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.047949" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:43:52.048486" elapsed="0.001909"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.050840" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:43:52.236047" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:43:52.050548" elapsed="0.185645"/>
</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-19T03:43:52.239661" 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-19T03:43:52.240200" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.240503" 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-19T03:43:52.237292" elapsed="0.003364"/>
</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-19T03:43:52.236580" elapsed="0.004123"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.042387" elapsed="0.198369"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:43:52.031109" elapsed="0.209695"/>
</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-19T03:43:52.030637" elapsed="0.210218"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:43:52.030507" elapsed="0.210390"/>
</iter>
<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-19T03:43:52.253165" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:52.253044" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.253009" elapsed="0.000230"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.253543" 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-19T03:43:52.253649" 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-19T03:43:52.253404" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.254091" level="INFO">{1: 90}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:52.253815" elapsed="0.000322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.254517" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:52.254277" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:52.255355" level="FAIL">Dictionary does not contain key '2'.</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-19T03:43:52.255074" elapsed="0.000387">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:43:52.255567" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:43:52.255612" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:43:52.254715" elapsed="0.000919"/>
</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-19T03:43:52.255919" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:52.255710" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.255692" elapsed="0.000324"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:52.256739" level="INFO">${ip_address} = 10.30.171.128</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-19T03:43:52.256477" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:43:52.256813" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:43:52.256965" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:43:52.256220" elapsed="0.000770"/>
</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-19T03:43:52.257148" elapsed="0.000401"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.257817" level="INFO">index=92
host=10.30.171.128
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-19T03:43:52.257916" level="INFO">${karaf_connection_object} = index=92
host=10.30.171.128
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-19T03:43:52.257704" 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-19T03:43:52.258093" elapsed="0.001907"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.260450" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:43:52.430651" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:43:52.260191" elapsed="0.170632"/>
</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-19T03:43:52.433987" elapsed="0.000561"/>
</kw>
<kw name="Open 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-19T03:43:52.434703" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.435011" 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-19T03:43:52.431938" elapsed="0.003334"/>
</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-19T03:43:52.431236" elapsed="0.004084"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:43:52.252740" elapsed="0.182633"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:43:52.241580" elapsed="0.193842"/>
</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-19T03:43:52.241219" elapsed="0.194257"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:43:52.241087" elapsed="0.194431"/>
</iter>
<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-19T03:43:52.447511" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:43:52.447393" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.447368" elapsed="0.000218"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.447863" 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-19T03:43:52.447967" 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-19T03:43:52.447728" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.448415" level="INFO">{1: 90, 2: 92}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:52.448148" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:43:52.448874" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:43:52.448633" elapsed="0.000284"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:52.449652" level="FAIL">Dictionary does not contain key '3'.</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-19T03:43:52.449420" elapsed="0.000362">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:43:52.449890" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:43:52.449939" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:43:52.449076" elapsed="0.000886"/>
</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-19T03:43:52.450267" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:43:52.450055" elapsed="0.000285"/>
</branch>
<status status="PASS" start="2026-04-19T03:43:52.450026" elapsed="0.000338"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:43:52.451091" level="INFO">${ip_address} = 10.30.171.206</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-19T03:43:52.450810" elapsed="0.000308"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:43:52.451165" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:43:52.451325" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:43:52.450553" elapsed="0.000797"/>
</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-19T03:43:52.451490" elapsed="0.000401"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.452176" level="INFO">index=94
host=10.30.171.206
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-19T03:43:52.452276" level="INFO">${karaf_connection_object} = index=94
host=10.30.171.206
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-19T03:43:52.452061" 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-19T03:43:52.452438" elapsed="0.002141"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:43:52.454996" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:44:02.517306" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:52.454732" elapsed="10.063719">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:02.522789" 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-19T03:44:02.523337" elapsed="0.000168"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:02.523643" 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-19T03:44:02.520072" elapsed="0.003727"/>
</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-19T03:44:02.519171" elapsed="0.004676"/>
</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-19T03:43:52.447093" elapsed="10.076841">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:44:02.524052" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:52.436132" elapsed="10.088016">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:43:52.435754" elapsed="10.088463"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:43:52.435624" elapsed="10.088642"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:43:52.030357" elapsed="10.493946"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:43:50.911247" elapsed="11.613116"/>
</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-19T03:44:02.526787" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.526667" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.526645" elapsed="0.000212"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:44:02.530994" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.530888" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.530870" elapsed="0.000208"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:44:02.531997" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:44:02.531613" elapsed="0.000424"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:02.532493" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:44:02.532187" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:44:02.532563" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:44:02.532719" level="INFO">${index_list} = [1, 2, 3]</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-19T03:44:02.531293" elapsed="0.001451"/>
</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-19T03:44:02.537770" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.537661" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.537643" 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-19T03:44:02.539021" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.538895" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.538878" elapsed="0.000234"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:02.539570" level="INFO">${karaf_connection_index} = 90</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-19T03:44:02.539244" elapsed="0.000353"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:02.539974" 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-19T03:44:02.539744" elapsed="0.000256"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:44:02.576485" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:44:02.540643" elapsed="0.035999"/>
</kw>
<msg time="2026-04-19T03:44:02.576827" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:44:02.576875" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.540166" elapsed="0.036747"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:44:02.627851" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "e "n "t "i "t "y "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:44:02.577627" elapsed="0.050390"/>
</kw>
<msg time="2026-04-19T03:44:02.628169" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:44:02.628216" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.577102" elapsed="0.051151"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:02.628579" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:02.628333" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.628313" elapsed="0.000440"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:02.629294" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "e "n "t "i "t "y "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:02.628886" elapsed="0.000502"/>
</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-19T03:44:02.629685" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:02.629457" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.629439" elapsed="0.000417"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:44:02.629890" elapsed="0.000030"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:02.631793" 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-19T03:44:02.632591" elapsed="0.000289"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:02.633220" elapsed="0.000250"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:02.631017" elapsed="0.002543"/>
</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-19T03:44:02.630163" elapsed="0.003528"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:44:02.538612" elapsed="0.095182"/>
</kw>
<msg time="2026-04-19T03:44:02.633886" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:02.633930" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.537990" elapsed="0.095977"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:44:02.634169" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:44:02.634059" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.634039" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:02.634652" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:02.634984" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:44:02.635409" elapsed="0.000017"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:44:02.537369" elapsed="0.098150"/>
</kw>
<msg time="2026-04-19T03:44:02.635611" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:02.635655" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.533115" elapsed="0.102577"/>
</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-19T03:44:02.636071" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:02.635814" elapsed="0.000313"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.635795" elapsed="0.000355"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:44:02.532970" elapsed="0.103204"/>
</iter>
<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-19T03:44:02.641201" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.641087" elapsed="0.000161"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.641047" elapsed="0.000224"/>
</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-19T03:44:02.642466" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.642332" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.642313" elapsed="0.000222"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:02.642982" level="INFO">${karaf_connection_index} = 92</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-19T03:44:02.642666" elapsed="0.000343"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:02.643638" 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-19T03:44:02.643407" elapsed="0.000258"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:44:02.687531" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:44:02.644322" elapsed="0.043343"/>
</kw>
<msg time="2026-04-19T03:44:02.687827" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:44:02.687873" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.643820" elapsed="0.044090"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:44:02.743920" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "e "n "t "i "t "y "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:44:02.688579" elapsed="0.055525"/>
</kw>
<msg time="2026-04-19T03:44:02.744236" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:44:02.744297" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.688087" elapsed="0.056257"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:02.744666" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:02.744422" elapsed="0.000394"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.744403" elapsed="0.000439"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:02.745355" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "e "n "t "i "t "y "_ "i "s "o "l "a "t "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:02.744977" elapsed="0.000469"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:02.745744" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:02.745513" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.745495" elapsed="0.000424"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:44:02.745954" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:02.748158" elapsed="0.000491"/>
</kw>
<kw name="Open 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-19T03:44:02.748984" elapsed="0.000312"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:02.749618" elapsed="0.000240"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:02.747384" elapsed="0.002565"/>
</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-19T03:44:02.746277" elapsed="0.003829"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:44:02.642043" elapsed="0.108211"/>
</kw>
<msg time="2026-04-19T03:44:02.750349" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:02.750395" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.641414" elapsed="0.109019"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:44:02.750622" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:44:02.750512" elapsed="0.000170"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.750492" elapsed="0.000214"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:02.751114" elapsed="0.000027"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:02.751441" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:44:02.751513" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:44:02.640699" elapsed="0.110923"/>
</kw>
<msg time="2026-04-19T03:44:02.751718" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:02.751763" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:02.636428" elapsed="0.115373"/>
</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-19T03:44:02.752292" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:02.751878" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.751859" elapsed="0.000513"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:44:02.636299" elapsed="0.116096"/>
</iter>
<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-19T03:44:02.757355" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.757247" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.757229" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:44:02.758586" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:02.758460" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:02.758442" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:02.759118" level="INFO">${karaf_connection_index} = 94</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-19T03:44:02.758784" elapsed="0.000361"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:02.759515" 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-19T03:44:02.759292" elapsed="0.000249"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:44:12.761104" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:44:02.760216" elapsed="10.001785">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:44:12.762266" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:44:12.762317" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:44:02.759688" elapsed="10.002655"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:44:22.764058" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:44:12.763267" elapsed="10.001626">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:44:22.765146" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:44:22.765196" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:44:12.762606" elapsed="10.002614"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:44:22.766466" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/entity_isolate.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-19T03:44:22.765697" elapsed="0.000851">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/entity_isolate.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:44:22.765347" elapsed="0.001451">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/entity_isolate.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:44:22.765315" elapsed="0.001521">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/entity_isolate.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-19T03:44:22.766992" 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-19T03:44:22.767257" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:22.767125" elapsed="0.000277"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:44:22.767107" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:44:22.767465" 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-19T03:44:22.769547" elapsed="0.000446"/>
</kw>
<kw name="Open 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-19T03:44:22.770334" elapsed="0.000309"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:22.770954" elapsed="0.000346"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:22.768764" elapsed="0.002624"/>
</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-19T03:44:22.767778" elapsed="0.003754"/>
</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-19T03:44:02.758176" elapsed="20.013445">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/entity_isolate.robot"</status>
</kw>
<msg time="2026-04-19T03:44:22.771725" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:44:22.771770" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/entity_isolate.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-19T03:44:02.757568" elapsed="20.014226"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:44:22.771980" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:22.771871" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:22.771853" elapsed="0.000208"/>
</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-19T03:44:22.772805" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:22.772700" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:22.772681" elapsed="0.000190"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:22.774895" 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-19T03:44:22.775021" 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-19T03:44:22.773013" elapsed="0.002142"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:22.775585" level="INFO">{1: 90, 2: 92, 3: 94}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:22.775302" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:22.776016" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:22.775771" elapsed="0.000306"/>
</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-19T03:44:22.776574" elapsed="0.000285"/>
</kw>
<msg time="2026-04-19T03:44:22.776957" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:22.777004" level="INFO">${old_connection_index} = 94</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-19T03:44:22.776226" elapsed="0.000815"/>
</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-19T03:44:22.778121" elapsed="0.000264"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:44:32.780324" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:44:22.779467" elapsed="10.001581">No match found for '
' in 10 seconds
Output:
.</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-19T03:44:22.778603" elapsed="10.002588"/>
</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-19T03:44:32.782567" elapsed="0.000318"/>
</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-19T03:44:32.781580" elapsed="0.001381"/>
</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-19T03:44:22.777332" elapsed="10.005731"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:22.777121" elapsed="10.005997"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:22.777102" elapsed="10.006050"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:32.784218" level="INFO">${ip_address} = 10.30.171.206</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-19T03:44:32.783738" elapsed="0.000507"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:44:32.784299" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:44:32.784463" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:44:32.783399" elapsed="0.001088"/>
</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-19T03:44:32.784634" elapsed="0.000449"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:32.785368" level="INFO">index=99
host=10.30.171.206
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-19T03:44:32.785472" level="INFO">${karaf_connection_object} = index=99
host=10.30.171.206
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-19T03:44:32.785244" elapsed="0.000255"/>
</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-19T03:44:32.785638" elapsed="0.002202"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:44:32.788285" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:44:42.849996" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:32.787999" elapsed="10.062858">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:42.854664" elapsed="0.000744"/>
</kw>
<kw name="Open 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-19T03:44:42.855665" elapsed="0.000511"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:42.856393" elapsed="0.000201"/>
</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-19T03:44:42.852368" elapsed="0.004315"/>
</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-19T03:44:42.851355" elapsed="0.005378"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:44:22.772454" elapsed="20.084369">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:42.857212" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:44:42.857291" elapsed="0.000021"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-19T03:44:02.756841" elapsed="40.100579">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:44:42.857537" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:44:42.857583" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:02.752646" elapsed="40.104961"/>
</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-19T03:44:42.857940" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:42.857692" elapsed="0.000301"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:42.857671" elapsed="0.000347"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:44:02.752518" elapsed="40.105556"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:44:02.532799" elapsed="40.325310"/>
</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-19T03:44:02.530598" elapsed="40.327573"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:44:02.524950" elapsed="40.333370"/>
</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-19T03:44:02.524512" elapsed="40.333852"/>
</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-19T03:43:50.906680" elapsed="51.951735"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.864353" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:44:42.863947" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.864833" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:44:42.864527" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:44:42.864909" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:44:42.865082" level="INFO">${index_list} = [1, 2, 3]</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-19T03:44:42.863636" elapsed="0.001472"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:44:42.865250" elapsed="0.000197"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.865929" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:44:42.865596" elapsed="0.000359"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.866352" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:44:42.866114" elapsed="0.000264"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.866740" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:44:42.866510" elapsed="0.000255"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.868991" 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-19T03:44:42.868694" elapsed="0.000324"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:44:42.869080" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:44:42.869228" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:44:42.868411" elapsed="0.000842"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.913841" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:42.913456" elapsed="0.000414"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:44:42.914660" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:44:42.914389" elapsed="0.000338">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:44:42.914819" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:44:42.914061" elapsed="0.000783"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.915433" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:44:42.915021" elapsed="0.000453"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:44:42.915799" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:44:42.915975" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:44:42.915649" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.916448" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:42.916195" elapsed="0.000298"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.917496" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:42.917168" elapsed="0.000372"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.917956" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:44:42.917690" elapsed="0.000292"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:42.918303" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:42.918499" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:42.918658" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:44:42.918182" elapsed="0.000534"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:44:42.918044" elapsed="0.000700"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:44:42.918787" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:44:42.918947" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:44:42.916871" elapsed="0.002101"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:42.916582" elapsed="0.002422"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:42.919180" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:42.919044" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:42.916562" elapsed="0.002695"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:44:42.919862" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:42.919413" elapsed="0.000477"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:44:42.919961" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:44:42.912556" elapsed="0.007651"/>
</kw>
<msg time="2026-04-19T03:44:42.920278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:42.900554" elapsed="0.019793"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:42.965353" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.010077" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.054992" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.055522" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.055771" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.056563" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.056196" elapsed="0.000506"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:44:43.056154" elapsed="0.000623"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.057475" elapsed="0.000075"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.057998" elapsed="0.000094"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.058364" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:44:43.056121" elapsed="0.002399"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.055965" elapsed="0.002622"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.058730" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.058960" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:44:43.059108" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:44:42.896311" elapsed="0.162823"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:44:43.062017" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:44:43.060991" elapsed="0.001162">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:44:43.062280" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:44:43.059862" elapsed="0.002458"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.062939" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.062490" elapsed="0.000644"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.064831" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:43.063960" elapsed="0.000959"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.063162" elapsed="0.002104"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.062470" elapsed="0.002828"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.067856" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:44:43.065444" elapsed="0.002456"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:44:43.068077" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:44:43.068239" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:44:43.059539" elapsed="0.008725"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:44:43.070769" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:44:43.070232" elapsed="0.000657">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:44:43.071017" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:44:43.068920" elapsed="0.002154"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:44:43.071540" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:44:43.071248" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.071228" elapsed="0.000477"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.071841" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.072110" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.072281" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:44:43.074459" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:44:43.068608" elapsed="0.005879"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.076594" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.076115" elapsed="0.000661"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.077609" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.076999" elapsed="0.000754"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:44:43.110447" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:44:43.111797" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node014xkjrkekv1er1gg3xbef2dyrx4.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:44:43 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:44:43.112542" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:44:43.079951" elapsed="0.032794"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.077901" elapsed="0.035194"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.113643" elapsed="0.000111"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.113168" elapsed="0.000929"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.077880" elapsed="0.036275"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.120833" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.118403" elapsed="0.002894"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.117372" elapsed="0.003977"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.117192" elapsed="0.004222"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.124294" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.122268" elapsed="0.002120"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.121575" elapsed="0.002858"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.121520" elapsed="0.002977"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.125812" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:43.125039" elapsed="0.000885"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.126742" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.126141" elapsed="0.000727"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.127703" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:43.127295" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.126931" elapsed="0.000874"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.126083" elapsed="0.001785"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.129157" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:43.128411" elapsed="0.000887"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.130167" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.129464" elapsed="0.000828"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.131090" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:43.130675" elapsed="0.000470"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.130354" elapsed="0.000838"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.129408" elapsed="0.001845"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.132212" elapsed="0.000745"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:44:43.134654" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:43.133928" elapsed="0.000839"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:44:43.135692" elapsed="0.002291"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:44:43.115237" elapsed="0.023236"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.138850" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:43.138659" elapsed="0.000315"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.138638" elapsed="0.000362"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:44:43.150634" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:44:43.139153" elapsed="0.011528"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:44:43.150846" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:44:43.151018" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:44:43.074916" elapsed="0.076146"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:44:43.151127" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:44:43.151287" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:44:42.876861" elapsed="0.274453"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.151631" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.151398" elapsed="0.000353"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.151381" elapsed="0.000396"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:44:43.151819" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:44:42.873047" elapsed="0.278898"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:42.869342" elapsed="0.282645"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:42.869302" elapsed="0.282709"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.152581" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:43.152473" elapsed="0.000152"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="PASS" start="2026-04-19T03:44:43.152749" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:44:43.152648" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.152455" elapsed="0.000376"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.152965" elapsed="0.000021"/>
</kw>
<msg time="2026-04-19T03:44:43.153099" level="INFO">${type_class} = DistributedOperationalDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:44:43.152250" elapsed="0.000875"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.153687" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:43.153309" elapsed="0.000405"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.154338" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:43.153858" elapsed="0.000508"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.159341" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.159089" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.159772" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.159528" elapsed="0.000289"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:44:43.168104" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:44:43.168167" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:44:43 GMT', 'Expires': 'Sun, 19 Apr 2026 02:44:43 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore","type":"read"},"stacktrace":"javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\n\tat java.management\/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\n\tat java.management\/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\n\tat java.management\/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\n\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\n\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\n\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\n\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\n\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\n\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\n\tat org.jolokia.handler.ReadHandler.fetchAttributes(ReadHandler.java:183)\n\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:118)\n\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:37)\n\tat org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:161)\n\tat org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:156)\n\tat org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99)\n\tat org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429)\n\tat org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158)\n\tat org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197)\n\tat org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:86)\n\tat org.jolokia.http.AgentServlet$4.handleRequest(AgentServlet.java:503)\n\tat org.jolokia.http.AgentServlet.handleSecurely(AgentServlet.java:383)\n\tat org.jolokia.http.AgentServlet.handle(AgentServlet.java:354)\n\tat org.jolokia.http.AgentServlet.doGet(AgentServlet.java:310)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:497)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:584)\n\tat org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102)\n\tat org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)\n\tat org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)\n\tat org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:113)\n\tat org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:334)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)\n\tat org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\n\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\n\tat java.base\/java.lang.Thread.run(Thread.java:1583)\n","error_type":"javax.management.InstanceNotFoundException","error":"javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore","status":404} 
 </msg>
<msg time="2026-04-19T03:44:43.168346" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:44:43.162341" elapsed="0.006032"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.159888" elapsed="0.008529"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.168584" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.168443" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.159868" elapsed="0.008801"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.172227" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore","type":"read"},"stacktrace":"javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\n\tat java.management\/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\n\tat java.management\/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\n\tat java.management\/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\n\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\n\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\n\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\n\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\n\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\n\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\n\tat org.jolokia.handler.ReadHandler.fetchAttributes(ReadHandler.java:183)\n\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:118)\n\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:37)\n\tat org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:161)\n\tat org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:156)\n\tat org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99)\n\tat org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429)\n\tat org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158)\n\tat org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197)\n\tat org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:86)\n\tat org.jolokia.http.AgentServlet$4.handleRequest(AgentServlet.java:503)\n\tat org.jolokia.http.AgentServlet.handleSecurely(AgentServlet.java:383)\n\tat org.jolokia.http.AgentServlet.handle(AgentServlet.java:354)\n\tat org.jolokia.http.AgentServlet.doGet(AgentServlet.java:310)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:497)\n\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:584)\n\tat org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102)\n\tat org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450)\n\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)\n\tat org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)\n\tat org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:113)\n\tat org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:334)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\n\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)\n\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\n\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)\n\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\n\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)\n\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\n\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)\n\tat org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96)\n\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\n\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\n\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\n\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\n\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\n\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\n\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\n\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\n\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\n\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\n\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\n\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\n\tat java.base\/java.lang.Thread.run(Thread.java:1583)\n","error_type":"javax.management.InstanceNotFoundException","error":"javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore","status":404}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.169757" elapsed="0.002659"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.169549" elapsed="0.002980"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.169530" elapsed="0.003027"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.175589" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.172827" elapsed="0.002967"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.172614" elapsed="0.003334"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.172598" elapsed="0.003391"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.176992" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:43.176244" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.177543" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.177219" elapsed="0.000542"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.178773" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:43.178004" elapsed="0.000829"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.177799" elapsed="0.001208"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.177166" elapsed="0.001895"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.179991" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:43.179269" elapsed="0.000809"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.180486" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.180180" elapsed="0.000520"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.181757" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:43.180960" elapsed="0.000855"/>
</kw>
<status status="PASS" start="2026-04-19T03:44:43.180736" elapsed="0.001336"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.180154" elapsed="0.001960"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.182312" elapsed="0.001010"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:44:43.184482" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:44:43.183535" elapsed="0.000984"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:44:43.184719" elapsed="0.002969"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:44:43.169150" elapsed="0.018604"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.187934" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:43.187824" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.187806" elapsed="0.000195"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:44:43.190541" level="INFO">${text_normalized} = {
 "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",
 "error_ty...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:44:43.188222" elapsed="0.002348"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:44:43.190621" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:44:43.190780" level="INFO">${response_text} = {
 "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",
 "error_ty...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:44:43.155316" elapsed="0.035491"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:44:43.190865" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:44:43.191013" level="INFO">${data_text} = {
 "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",
 "error_ty...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:44:43.154681" elapsed="0.036374"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.192494" level="FAIL">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.fetchAttributes(ReadHandler.java:183)\\n\\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:118)\\n\\tat org.jolokia.handler.ReadHandler.doHandleRequest(ReadHandler.java:37)\\n\\tat org.jolokia.handler.JsonRequestHandler.handleRequest(JsonRequestHandler.java:161)\\n\\tat org.jolokia.backend.MBeanServerHandler.dispatchRequest(MBeanServerHandler.java:156)\\n\\tat org.jolokia.backend.LocalRequestDispatcher.dispatchRequest(LocalRequestDispatcher.java:99)\\n\\tat org.jolokia.backend.BackendManager.callRequestDispatcher(BackendManager.java:429)\\n\\tat org.jolokia.backend.BackendManager.handleRequest(BackendManager.java:158)\\n\\tat org.jolokia.http.HttpRequestHandler.executeRequest(HttpRequestHandler.java:197)\\n\\tat org.jolokia.http.HttpRequestHandler.handleGetRequest(HttpRequestHandler.java:86)\\n\\tat org.jolokia.http.AgentServlet$4.handleRequest(AgentServlet.java:503)\\n\\tat org.jolokia.http.AgentServlet.handleSecurely(AgentServlet.java:383)\\n\\tat org.jolokia.http.AgentServlet.handle(AgentServlet.java:354)\\n\\tat org.jolokia.http.AgentServlet.doGet(AgentServlet.java:310)\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:497)\\n\\tat javax.servlet.http.HttpServlet.service(HttpServlet.java:584)\\n\\tat org.ops4j.pax.web.service.spi.servlet.OsgiInitializedServlet.service(OsgiInitializedServlet.java:102)\\n\\tat org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1450)\\n\\tat org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799)\\n\\tat org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1656)\\n\\tat org.ops4j.pax.web.service.spi.servlet.OsgiFilterChain.doFilter(OsgiFilterChain.java:113)\\n\\tat org.ops4j.pax.web.service.jetty.internal.PaxWebServletHandler.doHandle(PaxWebServletHandler.java:334)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)\\n\\tat org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:600)\\n\\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:235)\\n\\tat org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)\\n\\tat org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1440)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)\\n\\tat org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:505)\\n\\tat org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)\\n\\tat org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1355)\\n\\tat org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)\\n\\tat org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)\\n\\tat org.ops4j.pax.web.service.jetty.internal.PrioritizedHandlerCollection.handle(PrioritizedHandlerCollection.java:96)\\n\\tat org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="FAIL" start="2026-04-19T03:44:43.191545" elapsed="0.001160">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<return>
<value>${json_data}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.192789" elapsed="0.000018"/>
</return>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="FAIL" start="2026-04-19T03:44:43.191269" elapsed="0.001668">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.193133" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.193320" elapsed="0.000021"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.193385" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:44:42.867850" elapsed="0.325664">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.193654" elapsed="0.000017"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:44:42.867195" elapsed="0.326586">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.194042" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.193895" elapsed="0.000203"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.194247" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.194121" elapsed="0.000179"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.194448" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.194322" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:44:43.193878" elapsed="0.000642"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-19T03:44:42.867022" elapsed="0.327554">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:44:42.866816" elapsed="0.327878">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.194771" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:44:42.862960" elapsed="0.331936">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.195098" elapsed="0.000022"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.195311" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.195186" elapsed="0.000176"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:44:43.195169" elapsed="0.000215"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.195504" elapsed="0.000044"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.195690" elapsed="0.000020"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.195756" elapsed="0.000015"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:44:42.859140" elapsed="0.336742">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.196150" elapsed="0.000023"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.196315" elapsed="0.000020"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.196469" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.196630" elapsed="0.000020"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.196848" elapsed="0.000023"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.197014" elapsed="0.000034"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.197203" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.197510" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.197665" elapsed="0.000020"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:44:43.197340" elapsed="0.000378"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.197276" elapsed="0.000467"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.197880" elapsed="0.000021"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.198048" elapsed="0.000022"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:43.198213" elapsed="0.000021"/>
</kw>
<arg>shard_name=entity-ownership</arg>
<arg>shard_type=operational</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:44:42.858705" elapsed="0.339644">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<doc>Initialize resources, memorize car shard leader and followers.</doc>
<status status="FAIL" start="2026-04-19T03:43:50.906382" elapsed="52.292151">Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</kw>
<test id="s1-s26-t1" name="Check All Shards Before Isolate" line="25">
<doc>Check all shards in controller.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:44:43.198631" elapsed="0.000434">Parent suite setup failed:
Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</test>
<test id="s1-s26-t2" name="Isolate Entity Leader" line="40">
<doc>Isolate the entity-ownership Leader to cause a new leader to get elected.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:44:43.199305" elapsed="0.000387">Parent suite setup failed:
Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</test>
<test id="s1-s26-t3" name="Check All Shards After Isolate" line="44">
<doc>Check all shards in controller.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:44:43.199894" elapsed="0.000356">Parent suite setup failed:
Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</test>
<test id="s1-s26-t4" name="Rejoin Entity Leader" line="61">
<doc>Rejoin the entity-ownership Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:44:43.200450" elapsed="0.000316">Parent suite setup failed:
Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</test>
<test id="s1-s26-t5" name="Check All Shards After Rejoin" line="65">
<doc>Check all shards in controller.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:44:43.201004" elapsed="0.000356">Parent suite setup failed:
Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</test>
<kw name="Teardown" type="TEARDOWN">
<kw name="Flush_Iptables_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.204261" level="INFO">${command} = sudo iptables -v -F</msg>
<var>${command}</var>
<arg>sudo iptables -v -F</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:44:43.203978" elapsed="0.000309"/>
</kw>
<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-19T03:44:43.205643" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:44:43.205256" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.206136" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:44:43.205817" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:44:43.206207" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:44:43.206360" level="INFO">${index_list} = [1, 2, 3]</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-19T03:44:43.204913" elapsed="0.001472"/>
</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-19T03:44:43.207359" level="INFO">${member_ip} = 10.30.171.9</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-19T03:44:43.207094" elapsed="0.000291"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.208121" 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-19T03:44:43.208221" 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-19T03:44:43.207929" elapsed="0.000318"/>
</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-19T03:44:43.210771" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.210476" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.210456" elapsed="0.000523"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.211265" 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-19T03:44:43.211390" 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-19T03:44:43.211135" elapsed="0.000342"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.212572" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.211622" elapsed="0.000999"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.213568" level="INFO">${conn_id} = 101</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:44:43.212769" elapsed="0.000826"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.214921" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:44:43.215163" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:44:43.214337" elapsed="0.000867"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.215493" elapsed="0.000658"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.217683" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:44:43.800896" 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 Sun Apr 19 03:44:43 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:43:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:44:43.217285" elapsed="0.583844"/>
</kw>
<msg time="2026-04-19T03:44:43.801242" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.216488" elapsed="0.584945"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:44:43.213798" elapsed="0.587909"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.802293" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-19T03:44:43.844974" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:44:43.845402" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-19T03:44:43.845507" 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-19T03:44:43.801944" elapsed="0.043614"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:43.845906" elapsed="0.000520"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.848011" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.846814" elapsed="0.001329"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.848674" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:43.848321" elapsed="0.000462"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.848269" 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-19T03:44:43.849338" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-19T03:44:43.849008" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.848971" elapsed="0.000563"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:43.849609" 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-19T03:44:43.854886" elapsed="0.001237"/>
</kw>
<kw name="Open 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-19T03:44:43.856502" elapsed="0.000749"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:43.857573" elapsed="0.000278"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:43.850332" elapsed="0.007710"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:44:43.209972" elapsed="0.648206"/>
</kw>
<msg time="2026-04-19T03:44:43.858257" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.209370" elapsed="0.648975"/>
</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-19T03:44:43.208866" elapsed="0.649662"/>
</kw>
<msg time="2026-04-19T03:44:43.858588" 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-19T03:44:43.208390" elapsed="0.650278"/>
</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-19T03:44:43.862282" elapsed="0.000449"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:44:43.862947" elapsed="0.000321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:43.863464" elapsed="0.000140"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:43.859105" elapsed="0.004573"/>
</kw>
<msg time="2026-04-19T03:44:43.863810" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</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-19T03:44:43.207587" elapsed="0.656260"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.864469" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.864098" elapsed="0.000438"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:44:43.864598" elapsed="0.000047"/>
</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-19T03:44:43.206725" elapsed="0.658057"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:44:43.206563" elapsed="0.658273"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:43.866176" level="INFO">${member_ip} = 10.30.171.128</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-19T03:44:43.865807" elapsed="0.000397"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.866898" 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-19T03:44:43.866999" 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-19T03:44:43.866761" elapsed="0.000348"/>
</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-19T03:44:43.869763" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:43.869468" elapsed="0.000477"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:43.869449" elapsed="0.000524"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.870264" 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-19T03:44:43.870387" 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-19T03:44:43.870133" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.871517" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:43.870554" elapsed="0.001010"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.872369" level="INFO">${conn_id} = 104</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:44:43.871709" elapsed="0.000693"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:44:43.873810" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:44:43.874055" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:44:43.873189" elapsed="0.000910"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.874386" elapsed="0.000674"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:44:43.876914" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:44:44.453254" 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 Sun Apr 19 03:44:44 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:43:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:44:43.876457" elapsed="0.577015"/>
</kw>
<msg time="2026-04-19T03:44:44.453583" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.875400" elapsed="0.578374"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:44:43.872611" elapsed="0.581454"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:44:44.454614" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-19T03:44:44.497622" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:44:44.497976" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-19T03:44:44.498125" 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-19T03:44:44.454296" elapsed="0.043884"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:44.498521" elapsed="0.000461"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:44.500583" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:44.499399" elapsed="0.001282"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:44.501233" elapsed="0.000037"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:44.500853" elapsed="0.000487"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:44.500804" 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-19T03:44:44.501799" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-19T03:44:44.501511" elapsed="0.000424"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:44.501477" elapsed="0.000510"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:44.502094" 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-19T03:44:44.507797" elapsed="0.001512"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:44:44.509572" elapsed="0.000437"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:44.510251" elapsed="0.000192"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:44.502753" elapsed="0.007813"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:44:43.868960" elapsed="0.641700"/>
</kw>
<msg time="2026-04-19T03:44:44.510714" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:43.868265" elapsed="0.642510"/>
</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-19T03:44:43.867765" elapsed="0.643089"/>
</kw>
<msg time="2026-04-19T03:44:44.510896" 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-19T03:44:43.867257" elapsed="0.643696"/>
</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-19T03:44:44.513343" elapsed="0.000310"/>
</kw>
<kw name="Open 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-19T03:44:44.513803" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:44.514103" elapsed="0.000097"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:44.511271" elapsed="0.002980"/>
</kw>
<msg time="2026-04-19T03:44:44.514341" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</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-19T03:44:43.866412" elapsed="0.648008"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:44.514829" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:44.514582" elapsed="0.000293"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:44:44.514918" 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-19T03:44:43.865280" elapsed="0.649791"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:44:43.865010" elapsed="0.650100"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:44.515996" level="INFO">${member_ip} = 10.30.171.206</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-19T03:44:44.515723" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:44.516737" 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-19T03:44:44.516836" 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-19T03:44:44.516602" elapsed="0.000260"/>
</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-19T03:44:44.519719" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:44.519425" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:44.519407" elapsed="0.000524"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:44.520216" 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-19T03:44:44.520341" 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-19T03:44:44.520087" elapsed="0.000281"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:44.521489" level="INFO">Attempting to execute command "sudo iptables -v -F" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:44.520507" elapsed="0.001029"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:44.522342" level="INFO">${conn_id} = 107</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:44:44.521682" elapsed="0.000687"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:44:44.523708" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:44:44.523930" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:44:44.523113" elapsed="0.000858"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:44.524283" elapsed="0.000667"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:44:44.526495" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:44:45.102177" 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 Sun Apr 19 03:44:44 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:43:51 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:44:44.526094" elapsed="0.576229"/>
</kw>
<msg time="2026-04-19T03:44:45.102432" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:44.525303" elapsed="0.577309"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:44:44.522575" elapsed="0.580302"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.103445" level="INFO">Executing command 'sudo iptables -v -F'.</msg>
<msg time="2026-04-19T03:44:45.146332" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-19T03:44:45.146683" level="INFO">${stdout} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</msg>
<msg time="2026-04-19T03:44:45.146785" 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-19T03:44:45.103160" elapsed="0.043676"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.147228" elapsed="0.000442"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.149251" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:45.148056" elapsed="0.001293"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:45.149863" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:45.149523" elapsed="0.000447"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.149475" elapsed="0.000544"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:44:45.150468" elapsed="0.000059"/>
</return>
<status status="PASS" start="2026-04-19T03:44:45.150180" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.150144" elapsed="0.000511"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:45.150728" 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-19T03:44:45.158730" elapsed="0.001120"/>
</kw>
<kw name="Open 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-19T03:44:45.160272" elapsed="0.000613"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.161211" elapsed="0.000268"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:45.151418" elapsed="0.010233"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:44:44.518916" elapsed="0.642867"/>
</kw>
<msg time="2026-04-19T03:44:45.161860" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:44.518112" elapsed="0.643834"/>
</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-19T03:44:44.517623" elapsed="0.644453"/>
</kw>
<msg time="2026-04-19T03:44:45.162137" 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-19T03:44:44.517010" elapsed="0.645204"/>
</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-19T03:44:45.165594" elapsed="0.000431"/>
</kw>
<kw name="Open 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-19T03:44:45.166259" elapsed="0.000205"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.166654" elapsed="0.000134"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:45.162600" elapsed="0.004259"/>
</kw>
<msg time="2026-04-19T03:44:45.166989" level="INFO">${output} = Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain...</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-19T03:44:44.516244" elapsed="0.650781"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.167615" level="INFO">Flushing chain `INPUT'
Flushing chain `FORWARD'
Flushing chain `OUTPUT'
Flushing chain `DOCKER'
Flushing chain `DOCKER-BRIDGE'
Flushing chain `DOCKER-CT'
Flushing chain `DOCKER-FORWARD'
Flushing chain `DOCKER-INTERNAL'
Flushing chain `DOCKER-USER'</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:45.167271" elapsed="0.000407"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:44:45.167739" elapsed="0.000041"/>
</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-19T03:44:44.515376" elapsed="0.652532"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:44:44.515204" elapsed="0.652762"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:44:43.206436" elapsed="1.961574"/>
</for>
<msg time="2026-04-19T03:44:45.168149" level="INFO">${output} = None</msg>
<var>${output}</var>
<arg>command=${command}</arg>
<arg>member_index_list=${member_index_list}</arg>
<doc>Cycle through indices (or all), run command on each.</doc>
<status status="PASS" start="2026-04-19T03:44:43.204489" elapsed="1.963694"/>
</kw>
<doc>If the list is empty, flush IPTables in all ODL instances. Otherwise, flush member based on present indices.</doc>
<status status="PASS" start="2026-04-19T03:44:43.202222" elapsed="1.966096"/>
</kw>
<doc>Clear IPTables in all nodes.</doc>
<status status="PASS" start="2026-04-19T03:44:43.201747" elapsed="1.966695"/>
</kw>
<doc>Suite for performing member isolation and rejoin, we do with entity-ownership leader.</doc>
<status status="FAIL" start="2026-04-19T03:43:50.841258" elapsed="54.327227">Suite setup failed:
Evaluating expression 'json.loads(\'\'\'{\n "error": "javax.management.InstanceNotFoundException : org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n "error_type": "javax.management.InstanceNotFoundException",\n "request": {\n  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore",\n  "type": "read"\n },\n "stacktrace": "javax.management.InstanceNotFoundException: org.opendaylight.controller:Category=Shards,name=member-1-shard-entity-ownership-operational,type=DistributedOperationalDatastore\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1073)\\n\\tat java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBeanInfo(DefaultMBeanServerInterceptor.java:1343)\\n\\tat java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.getMBeanInfo(JmxMBeanServer.java:921)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:46)\\n\\tat org.jolokia.handler.ReadHandler$1.execute(ReadHandler.java:41)\\n\\tat org.jolokia.backend.executor.AbstractMBeanServerExecutor.call(AbstractMBeanServerExecutor.java:90)\\n\\tat org.jolokia.handler.ReadHandler.getMBeanInfo(ReadHandler.java:233)\\n\\tat org.jolokia.handler.ReadHandler.getAllAttributesNames(ReadHandler.java:245)\\n\\tat org.jolokia.handler.ReadHandler.resolveAttributes(ReadHandler.java:221)\\n\\tat org.jolokia.handler.ReadHandler.f...
    [ Message content over the limit has been removed. ]
...lipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127)\\n\\tat org.eclipse.jetty.server.Server.handle(Server.java:516)\\n\\tat org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:487)\\n\\tat org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:732)\\n\\tat org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:479)\\n\\tat org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277)\\n\\tat org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)\\n\\tat org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105)\\n\\tat org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)\\n\\tat org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)\\n\\tat org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:409)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:883)\\n\\tat org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1034)\\n\\tat java.base/java.lang.Thread.run(Thread.java:1583)\\n",\n "status": 404\n}\n\'\'\')' failed: JSONDecodeError: Invalid control character at: line 8 column 190 (char 619)</status>
</suite>
<suite id="s1-s27" name="Buycar Failover Isolation" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover_isolation.robot">
<kw name="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-19T03:44:45.241553" 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-19T03:44:45.237815" elapsed="0.003788"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:44:45.237608" elapsed="0.004059"/>
</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-19T03:44:45.245954" 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-19T03:44:45.242716" elapsed="0.003266"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:44:45.246185" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:45.246076" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.246054" elapsed="0.000195"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.246756" 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-19T03:44:45.246391" elapsed="0.000407"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.247281" level="INFO">${cluster_size} = 3</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-19T03:44:45.246948" elapsed="0.000359"/>
</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-19T03:44:45.247784" elapsed="0.000291"/>
</kw>
<msg time="2026-04-19T03:44:45.248172" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:45.248255" level="INFO">${possibly_int_of_members} = 3</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-19T03:44:45.247461" elapsed="0.000818"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.248806" level="INFO">${int_of_members} = 3</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-19T03:44:45.248438" elapsed="0.000393"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.249773" 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-19T03:44:45.249512" elapsed="0.000287"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.250202" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:44:45.249933" elapsed="0.000295"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.250657" 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-19T03:44:45.250372" elapsed="0.000311"/>
</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-19T03:44:45.253593" elapsed="0.000221"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.254311" level="INFO">${member_ip} = 10.30.171.9</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-19T03:44:45.253966" 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-19T03:44:45.254479" elapsed="0.000230"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.255524" 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-19T03:44:45.255191" elapsed="0.000359"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:44:45.255596" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:44:45.255749" 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-19T03:44:45.254893" elapsed="0.000882"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:44:45.256573" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f728e110&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-19T03:44:45.255919" elapsed="0.000797"/>
</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-19T03:44:45.256868" elapsed="0.000212"/>
</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-19T03:44:45.252951" elapsed="0.004189"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:44:45.252774" elapsed="0.004411"/>
</iter>
<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-19T03:44:45.257984" elapsed="0.000249"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.258704" level="INFO">${member_ip} = 10.30.171.128</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-19T03:44:45.258380" elapsed="0.000349"/>
</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-19T03:44:45.258901" elapsed="0.000246"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.259897" level="INFO">${session} = ClusterManagement__session_2</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-19T03:44:45.259606" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:44:45.259968" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:44:45.260133" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:44:45.259327" elapsed="0.000831"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:44:45.260736" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706749510&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-19T03:44:45.260329" elapsed="0.000508"/>
</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-19T03:44:45.260986" elapsed="0.000209"/>
</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-19T03:44:45.257442" elapsed="0.003811"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:44:45.257272" elapsed="0.004024"/>
</iter>
<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-19T03:44:45.262104" elapsed="0.000197"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.262771" level="INFO">${member_ip} = 10.30.171.206</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-19T03:44:45.262449" elapsed="0.000348"/>
</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-19T03:44:45.262937" elapsed="0.000244"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.263932" level="INFO">${session} = ClusterManagement__session_3</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-19T03:44:45.263641" elapsed="0.000317"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:44:45.264003" elapsed="0.000044"/>
</return>
<msg time="2026-04-19T03:44:45.264170" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:44:45.263363" elapsed="0.000895"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:44:45.264811" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7211f90&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-19T03:44:45.264407" elapsed="0.000513"/>
</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-19T03:44:45.265090" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-19T03:44:45.261549" elapsed="0.003794"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:44:45.261382" elapsed="0.004005"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:44:45.250735" elapsed="0.014682"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.265977" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:44:45.265568" elapsed="0.000451"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.266583" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:44:45.266186" elapsed="0.000439"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.267171" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:44:45.266772" elapsed="0.000442"/>
</kw>
<arg>int_of_members=${int_of_members}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Construct index list, session list and IP mapping, publish them as suite variables.</doc>
<status status="PASS" start="2026-04-19T03:44:45.249076" elapsed="0.018195"/>
</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-19T03:44:45.242389" elapsed="0.024938"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:44:45.267504" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:45.267391" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.267373" elapsed="0.000196"/>
</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-19T03:44:45.270663" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:44:45.270286" elapsed="0.000404"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.271156" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:44:45.270837" elapsed="0.000344"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:44:45.271226" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:44:45.271418" level="INFO">${index_list} = [1, 2, 3]</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-19T03:44:45.269956" elapsed="0.001488"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:45.272489" level="INFO">${member_ip} = 10.30.171.9</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-19T03:44:45.272210" elapsed="0.000305"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.273242" 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-19T03:44:45.273343" 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-19T03:44:45.273094" elapsed="0.000275"/>
</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-19T03:44:45.276729" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:45.276113" elapsed="0.000704"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.276094" elapsed="0.000762"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.277562" 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-19T03:44:45.277854" 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-19T03:44:45.277067" elapsed="0.000843"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.279111" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:45.278195" elapsed="0.001032"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.280538" level="INFO">${conn_id} = 110</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:44:45.279508" elapsed="0.001086"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.282404" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:44:45.282635" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:44:45.282039" elapsed="0.000646"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:45.283065" elapsed="0.000601"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.285151" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:44:45.604726" 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 Sun Apr 19 03:44:43 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:44:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:44:45.284624" elapsed="0.320196"/>
</kw>
<msg time="2026-04-19T03:44:45.604885" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:45.284149" elapsed="0.320862"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:44:45.281065" elapsed="0.324111"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.605968" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:44:45.618656" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:44:45.619073" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:44:45.619329" 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-19T03:44:45.605499" elapsed="0.013948"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.620206" elapsed="0.001223"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.623992" 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-19T03:44:45.622671" elapsed="0.001724"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:45.625228" elapsed="0.000075"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:45.624777" elapsed="0.000639"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.624727" elapsed="0.000743"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:44:45.625920" elapsed="0.000095"/>
</return>
<status status="PASS" start="2026-04-19T03:44:45.625586" elapsed="0.000570"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.625562" elapsed="0.000652"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:45.626299" 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-19T03:44:45.630472" elapsed="0.000672"/>
</kw>
<kw name="Open 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-19T03:44:45.631534" elapsed="0.000412"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.632484" elapsed="0.000337"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:45.626957" elapsed="0.005963"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:44:45.275094" elapsed="0.358106"/>
</kw>
<msg time="2026-04-19T03:44:45.633337" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:45.274465" elapsed="0.358946"/>
</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-19T03:44:45.273985" elapsed="0.359536"/>
</kw>
<msg time="2026-04-19T03:44:45.633577" 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-19T03:44:45.273510" elapsed="0.360130"/>
</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-19T03:44:45.637078" elapsed="0.000309"/>
</kw>
<kw name="Open 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-19T03:44:45.637536" elapsed="0.000144"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.637815" 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-19T03:44:45.634023" elapsed="0.003939"/>
</kw>
<msg time="2026-04-19T03:44:45.638067" 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-19T03:44:45.272719" elapsed="0.365374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.638496" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:45.638252" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:44:45.638580" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:44:45.271785" elapsed="0.366917"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:44:45.271622" elapsed="0.367116"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:45.639626" level="INFO">${member_ip} = 10.30.171.128</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-19T03:44:45.639359" elapsed="0.000292"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.640451" 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-19T03:44:45.640550" 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-19T03:44:45.640319" elapsed="0.000257"/>
</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-19T03:44:45.644582" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:45.643548" elapsed="0.001123"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.643528" elapsed="0.001184"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.645410" 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-19T03:44:45.645665" 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-19T03:44:45.644906" elapsed="0.000814"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.646717" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:45.645995" elapsed="0.000835"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.648217" 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-19T03:44:45.647125" elapsed="0.001152"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.650645" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:44:45.650846" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:44:45.650269" elapsed="0.000626"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:45.651279" elapsed="0.000483"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.652962" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:44:45.960345" 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 Sun Apr 19 03:44:44 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:44:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:44:45.652638" elapsed="0.307873"/>
</kw>
<msg time="2026-04-19T03:44:45.960581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:45.652189" elapsed="0.308522"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:44:45.648817" elapsed="0.312035"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.961701" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:44:45.974576" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:44:45.974982" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:44:45.975307" 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-19T03:44:45.961210" elapsed="0.014229"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.976257" elapsed="0.001283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.980660" 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-19T03:44:45.978894" elapsed="0.002068"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:45.981767" elapsed="0.000076"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:45.981394" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.981360" elapsed="0.000652"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:44:45.982550" elapsed="0.000097"/>
</return>
<status status="PASS" start="2026-04-19T03:44:45.982207" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:45.982182" elapsed="0.000643"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:45.982910" 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-19T03:44:45.987429" elapsed="0.000877"/>
</kw>
<kw name="Open 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-19T03:44:45.988699" elapsed="0.000497"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.989571" elapsed="0.000341"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:45.983653" elapsed="0.006360"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:44:45.642519" elapsed="0.347780"/>
</kw>
<msg time="2026-04-19T03:44:45.990379" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:45.641891" elapsed="0.348559"/>
</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-19T03:44:45.641219" elapsed="0.349339"/>
</kw>
<msg time="2026-04-19T03:44:45.990617" 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-19T03:44:45.640719" elapsed="0.349960"/>
</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-19T03:44:45.993918" elapsed="0.000326"/>
</kw>
<kw name="Open 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-19T03:44:45.994395" elapsed="0.000149"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:45.994679" 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-19T03:44:45.991084" elapsed="0.003740"/>
</kw>
<msg time="2026-04-19T03:44:45.994911" 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-19T03:44:45.639852" elapsed="0.355119"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:45.995396" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:45.995151" elapsed="0.000286"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:44:45.995480" 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-19T03:44:45.638999" elapsed="0.356602"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:44:45.638827" elapsed="0.356811"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:45.996587" level="INFO">${member_ip} = 10.30.171.206</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-19T03:44:45.996320" elapsed="0.000293"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:45.997323" 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-19T03:44:45.997421" 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-19T03:44:45.997190" elapsed="0.000258"/>
</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-19T03:44:46.000885" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:46.000255" elapsed="0.000717"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.000236" elapsed="0.000775"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.001744" 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-19T03:44:46.001994" 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-19T03:44:46.001259" elapsed="0.000811"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.003043" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.002336" elapsed="0.000824"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.004491" level="INFO">${conn_id} = 116</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:44:46.003430" elapsed="0.001116"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.006456" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:44:46.006647" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:44:46.006091" elapsed="0.000605"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:46.007064" elapsed="0.000636"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.008941" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:44:46.329255" 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 Sun Apr 19 03:44:44 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:44:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:44:46.008617" elapsed="0.320763"/>
</kw>
<msg time="2026-04-19T03:44:46.329459" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:46.008114" elapsed="0.321488"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:44:46.005118" elapsed="0.324631"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.330646" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:44:46.343306" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:44:46.343719" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:44:46.343974" 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-19T03:44:46.330130" elapsed="0.014008"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:46.345079" elapsed="0.001347"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.349474" 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-19T03:44:46.347893" elapsed="0.001838"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:46.350739" elapsed="0.000119"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:46.350158" elapsed="0.000915"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.350103" elapsed="0.001062"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:44:46.351944" elapsed="0.000127"/>
</return>
<status status="PASS" start="2026-04-19T03:44:46.351354" elapsed="0.000842"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.351317" elapsed="0.000935"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:44:46.352344" 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-19T03:44:46.356554" elapsed="0.000821"/>
</kw>
<kw name="Open 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-19T03:44:46.357816" elapsed="0.000452"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:46.358691" elapsed="0.000362"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:46.353016" elapsed="0.006140"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:44:45.999158" elapsed="0.360262"/>
</kw>
<msg time="2026-04-19T03:44:46.359498" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:45.998548" elapsed="0.361023"/>
</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-19T03:44:45.998083" elapsed="0.361611"/>
</kw>
<msg time="2026-04-19T03:44:46.359753" 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-19T03:44:45.997588" elapsed="0.362230"/>
</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-19T03:44:46.363250" elapsed="0.000467"/>
</kw>
<kw name="Open 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-19T03:44:46.363927" elapsed="0.000175"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:46.364235" 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-19T03:44:46.360259" elapsed="0.004121"/>
</kw>
<msg time="2026-04-19T03:44:46.364469" 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-19T03:44:45.996823" elapsed="0.367670"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.364913" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.364651" elapsed="0.000303"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:44:46.365009" elapsed="0.000162"/>
</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-19T03:44:45.995913" elapsed="0.369359"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:44:45.995730" elapsed="0.369579"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:44:45.271495" elapsed="1.093848"/>
</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-19T03:44:45.267777" elapsed="1.097624"/>
</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-19T03:44:46.365545" 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-19T03:44:46.378566" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:46.378384" elapsed="0.000233"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.378364" elapsed="0.000277"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.378922" 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-19T03:44:46.379041" 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-19T03:44:46.378786" elapsed="0.000283"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.379469" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.379211" elapsed="0.000302"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.379941" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.379662" elapsed="0.000325"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:46.380795" 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-19T03:44:46.380565" elapsed="0.000373">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:44:46.381083" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:44:46.381139" 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-19T03:44:46.380153" elapsed="0.001011"/>
</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-19T03:44:46.381508" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:46.381254" elapsed="0.000342"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.381232" elapsed="0.000394"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:46.382495" level="INFO">${ip_address} = 10.30.171.9</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-19T03:44:46.382181" elapsed="0.000346"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:44:46.382583" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:44:46.382763" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:44:46.381854" elapsed="0.000938"/>
</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-19T03:44:46.382966" elapsed="0.000437"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.383696" level="INFO">index=119
host=10.30.171.9
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-19T03:44:46.383803" level="INFO">${karaf_connection_object} = index=119
host=10.30.171.9
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-19T03:44:46.383563" elapsed="0.000268"/>
</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-19T03:44:46.383976" elapsed="0.001984"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.386398" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:44:46.552102" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:44:46.386135" elapsed="0.166095"/>
</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-19T03:44:46.555527" 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-19T03:44:46.556098" elapsed="0.000164"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:46.556408" 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-19T03:44:46.553278" elapsed="0.003291"/>
</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-19T03:44:46.552593" elapsed="0.004082"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:44:46.378098" elapsed="0.178631"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:44:46.366465" elapsed="0.190314"/>
</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-19T03:44:46.366104" elapsed="0.190731"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:44:46.365957" elapsed="0.190920"/>
</iter>
<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-19T03:44:46.568868" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:46.568749" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.568727" elapsed="0.000213"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.569236" 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-19T03:44:46.569340" 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-19T03:44:46.569100" elapsed="0.000266"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.569785" level="INFO">{1: 119}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.569505" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.570245" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.569967" elapsed="0.000321"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:46.570999" level="FAIL">Dictionary does not contain key '2'.</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-19T03:44:46.570772" elapsed="0.000347">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:44:46.571368" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:44:46.571412" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:44:46.570432" elapsed="0.001003"/>
</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-19T03:44:46.571743" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:46.571510" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.571492" elapsed="0.000348"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:46.573359" level="INFO">${ip_address} = 10.30.171.128</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-19T03:44:46.572702" elapsed="0.000717"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:44:46.573526" elapsed="0.000067"/>
</return>
<msg time="2026-04-19T03:44:46.573860" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:44:46.572128" elapsed="0.001787"/>
</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-19T03:44:46.574268" elapsed="0.001413"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.576149" level="INFO">index=121
host=10.30.171.128
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-19T03:44:46.576250" level="INFO">${karaf_connection_object} = index=121
host=10.30.171.128
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-19T03:44:46.576007" elapsed="0.000269"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<arg>${karaf_connection_object.index}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="PASS" start="2026-04-19T03:44:46.576414" elapsed="0.001925"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.578775" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:44:46.763999" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:44:46.578489" elapsed="0.185677"/>
</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-19T03:44:46.767044" elapsed="0.000342"/>
</kw>
<kw name="Open 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-19T03:44:46.767573" elapsed="0.000158"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:46.767868" 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-19T03:44:46.765103" elapsed="0.002918"/>
</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-19T03:44:46.764474" elapsed="0.003618"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:44:46.568459" elapsed="0.199685"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:44:46.557496" elapsed="0.210697"/>
</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-19T03:44:46.557131" elapsed="0.211114"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:44:46.556982" elapsed="0.211304"/>
</iter>
<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-19T03:44:46.780183" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:46.780068" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.780044" elapsed="0.000211"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.780527" 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-19T03:44:46.780631" 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-19T03:44:46.780395" elapsed="0.000263"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.781461" level="INFO">{1: 119, 2: 121}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.781197" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:46.781884" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:46.781644" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:46.782660" level="FAIL">Dictionary does not contain key '3'.</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-19T03:44:46.782436" elapsed="0.000328">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:44:46.782869" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:44:46.782914" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:44:46.782092" elapsed="0.000845"/>
</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-19T03:44:46.783236" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:46.783011" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:46.782993" elapsed="0.000339"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:46.784090" level="INFO">${ip_address} = 10.30.171.206</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-19T03:44:46.783809" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:44:46.784164" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:44:46.784315" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:44:46.783551" elapsed="0.000788"/>
</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-19T03:44:46.784479" elapsed="0.000393"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.785157" level="INFO">index=123
host=10.30.171.206
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-19T03:44:46.785256" level="INFO">${karaf_connection_object} = index=123
host=10.30.171.206
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-19T03:44:46.785040" elapsed="0.000280"/>
</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-19T03:44:46.785472" elapsed="0.001978"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:44:46.787880" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:44:56.851057" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:46.787620" elapsed="10.064301">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:56.855268" 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-19T03:44:56.855811" elapsed="0.000183"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:56.856159" 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-19T03:44:56.853105" elapsed="0.003212"/>
</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-19T03:44:56.852410" elapsed="0.003958"/>
</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-19T03:44:46.779765" elapsed="10.076695">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:44:56.856567" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:46.768870" elapsed="10.087796">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:46.768513" elapsed="10.088219"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:44:46.768385" elapsed="10.088398"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:44:46.365812" elapsed="10.491008"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:44:45.241946" elapsed="11.614936"/>
</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-19T03:44:56.859366" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:56.859240" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:56.859218" elapsed="0.000219"/>
</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-19T03:44:56.863654" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:56.863543" elapsed="0.000160"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:56.863525" elapsed="0.000200"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:44:56.864725" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:44:56.864303" elapsed="0.000452"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:44:56.865233" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:44:56.864902" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:44:56.865305" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:44:56.865472" level="INFO">${index_list} = [1, 2, 3]</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-19T03:44:56.863956" elapsed="0.001541"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:44:56.870500" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:56.870381" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:56.870362" elapsed="0.000208"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:44:56.871820" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:56.871691" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:56.871673" elapsed="0.000229"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:56.872485" level="INFO">${karaf_connection_index} = 119</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-19T03:44:56.872058" elapsed="0.000455"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:56.928510" 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-19T03:44:56.872769" elapsed="0.055786"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:44:56.968125" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:44:56.929379" elapsed="0.038895"/>
</kw>
<msg time="2026-04-19T03:44:56.968424" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:44:56.968470" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:56.928772" elapsed="0.039734"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:44:57.031740" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:44:56.969219" elapsed="0.062758"/>
</kw>
<msg time="2026-04-19T03:44:57.032179" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:44:57.032225" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:56.968682" elapsed="0.063578"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:57.032708" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:57.032373" elapsed="0.000486"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.032340" elapsed="0.000548"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:57.033836" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:57.033023" elapsed="0.000908"/>
</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-19T03:44:57.034245" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:57.033997" elapsed="0.000399"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.033979" elapsed="0.000443"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:44:57.034461" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:57.036499" 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-19T03:44:57.037453" elapsed="0.000303"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:57.038085" 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-19T03:44:57.035693" elapsed="0.002716"/>
</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-19T03:44:57.034780" elapsed="0.003761"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:44:56.871404" elapsed="0.167268"/>
</kw>
<msg time="2026-04-19T03:44:57.038771" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:57.038817" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:56.870737" elapsed="0.168116"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:44:57.039208" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-19T03:44:57.038931" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.038913" elapsed="0.000382"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:57.039694" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:57.040027" elapsed="0.000093"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:44:57.040170" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:44:56.870072" elapsed="0.170209"/>
</kw>
<msg time="2026-04-19T03:44:57.040376" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:57.040420" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:56.865871" elapsed="0.174584"/>
</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-19T03:44:57.040769" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:57.040531" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.040513" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:44:56.865737" elapsed="0.175132"/>
</iter>
<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-19T03:44:57.045934" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:57.045827" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.045808" elapsed="0.000194"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:44:57.047248" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:57.047120" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.047100" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:57.047769" level="INFO">${karaf_connection_index} = 121</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-19T03:44:57.047449" elapsed="0.000347"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:57.048226" 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-19T03:44:57.047941" elapsed="0.000312"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:44:57.088200" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:44:57.048882" elapsed="0.039486"/>
</kw>
<msg time="2026-04-19T03:44:57.088528" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:44:57.088575" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:57.048400" elapsed="0.040210"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:44:57.146521" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:44:57.089377" elapsed="0.057395"/>
</kw>
<msg time="2026-04-19T03:44:57.146957" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:44:57.147004" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:57.088807" elapsed="0.058249"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:57.147517" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:57.147176" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.147140" elapsed="0.000557"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:44:57.148313" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "b "u "y "c "a "r "_ "f "a "i "l "o "v "e "r "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:44:57.147832" elapsed="0.000575"/>
</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-19T03:44:57.148702" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:57.148474" elapsed="0.000374"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.148456" elapsed="0.000418"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:44:57.148915" elapsed="0.000042"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:44:57.151174" 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-19T03:44:57.151964" elapsed="0.000360"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:44:57.152640" elapsed="0.000240"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:44:57.150378" elapsed="0.002591"/>
</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-19T03:44:57.149307" elapsed="0.003816"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:44:57.046786" elapsed="0.106440"/>
</kw>
<msg time="2026-04-19T03:44:57.153322" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:57.153367" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:57.046160" elapsed="0.107243"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:44:57.153587" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:44:57.153480" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.153462" elapsed="0.000210"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:57.154318" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:44:57.154654" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:44:57.154724" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:44:57.045526" elapsed="0.109307"/>
</kw>
<msg time="2026-04-19T03:44:57.154929" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:44:57.154973" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:44:57.041149" elapsed="0.113861"/>
</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-19T03:44:57.155346" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:44:57.155106" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.155087" elapsed="0.000335"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:44:57.041001" elapsed="0.114445"/>
</iter>
<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-19T03:44:57.160599" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:57.160483" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.160463" elapsed="0.000209"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:44:57.161922" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:44:57.161793" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T03:44:57.161775" elapsed="0.000215"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:44:57.162656" level="INFO">${karaf_connection_index} = 123</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-19T03:44:57.162313" elapsed="0.000372"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:44:57.163091" 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-19T03:44:57.162838" elapsed="0.000280"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:45:07.164716" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:44:57.163751" elapsed="10.001937">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:45:07.165932" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:45:07.165984" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:44:57.163264" elapsed="10.002744"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:45:17.167716" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:45:07.166911" elapsed="10.001744">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:45:17.169013" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:45:17.169112" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:45:07.166294" elapsed="10.002844"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:45:17.170468" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover_isolation.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-19T03:45:17.169614" elapsed="0.000937">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover_isolation.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:45:17.169268" elapsed="0.001451">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover_isolation.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:45:17.169235" elapsed="0.001522">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover_isolation.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-19T03:45:17.170914" 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-19T03:45:17.171150" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:17.171002" elapsed="0.000295"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:17.170985" elapsed="0.000338"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:45:17.171361" elapsed="0.000016"/>
</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-19T03:45:17.173446" elapsed="0.000455"/>
</kw>
<kw name="Open 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-19T03:45:17.174254" elapsed="0.000306"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:17.174897" elapsed="0.000263"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:45:17.172568" elapsed="0.002685"/>
</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-19T03:45:17.171648" elapsed="0.003739"/>
</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-19T03:44:57.161506" elapsed="20.013972">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover_isolation.robot"</status>
</kw>
<msg time="2026-04-19T03:45:17.175584" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:45:17.175629" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/buycar_failover_isola...</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-19T03:44:57.160820" elapsed="20.014833"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:45:17.175839" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:17.175730" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:17.175712" elapsed="0.000193"/>
</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-19T03:45:17.176666" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:17.176563" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:17.176543" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:17.177324" 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-19T03:45:17.177434" 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-19T03:45:17.176875" elapsed="0.000586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:17.177869" level="INFO">{1: 119, 2: 121, 3: 123}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:17.177603" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:17.178319" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:17.178071" elapsed="0.000291"/>
</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-19T03:45:17.178879" elapsed="0.000305"/>
</kw>
<msg time="2026-04-19T03:45:17.179283" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:45:17.179330" level="INFO">${old_connection_index} = 123</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-19T03:45:17.178508" elapsed="0.000845"/>
</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-19T03:45:17.180494" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:45:27.183300" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:45:17.181831" elapsed="10.002756">No match found for '
' in 10 seconds
Output:
.</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-19T03:45:17.180995" elapsed="10.003845"/>
</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-19T03:45:27.187369" elapsed="0.000797"/>
</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-19T03:45:27.185564" elapsed="0.002770"/>
</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-19T03:45:17.179690" elapsed="10.008836"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:17.179476" elapsed="10.009168"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:17.179456" elapsed="10.009255"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:27.190895" level="INFO">${ip_address} = 10.30.171.206</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-19T03:45:27.189858" elapsed="0.001097"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:45:27.191104" elapsed="0.000072"/>
</return>
<msg time="2026-04-19T03:45:27.191499" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:45:27.189217" elapsed="0.002337"/>
</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-19T03:45:27.191873" elapsed="0.000749"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:27.192978" level="INFO">index=128
host=10.30.171.206
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-19T03:45:27.193105" level="INFO">${karaf_connection_object} = index=128
host=10.30.171.206
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-19T03:45:27.192784" elapsed="0.000349"/>
</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-19T03:45:27.193285" elapsed="0.002074"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:45:27.195805" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:45:37.261462" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:27.195514" elapsed="10.067148">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:37.266085" elapsed="0.000715"/>
</kw>
<kw name="Open 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-19T03:45:37.267073" elapsed="0.000485"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:37.267793" elapsed="0.000204"/>
</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-19T03:45:37.263799" 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-19T03:45:37.263106" elapsed="0.005047"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:45:17.176314" elapsed="20.091927">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:37.268597" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.268677" elapsed="0.000020"/>
</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-19T03:44:57.160153" elapsed="40.108638">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:45:37.268909" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:45:37.268955" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:44:57.155712" elapsed="40.113267"/>
</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-19T03:45:37.269445" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.269189" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.269166" elapsed="0.000359"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:44:57.155581" elapsed="40.113974"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:44:56.865556" elapsed="40.404036"/>
</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-19T03:44:56.863223" elapsed="40.406429"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:44:56.857493" elapsed="40.412219"/>
</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-19T03:44:56.857045" elapsed="40.412719"/>
</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-19T03:44:45.237299" elapsed="52.032518"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.275652" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:45:37.275259" elapsed="0.000426"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.276204" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:45:37.275873" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:45:37.276276" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:45:37.276434" level="INFO">${index_list} = [1, 2, 3]</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-19T03:45:37.274921" elapsed="0.001538"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:45:37.276603" elapsed="0.000173"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.277385" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:45:37.276923" elapsed="0.000489"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.277805" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:45:37.277558" elapsed="0.000274"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.278225" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:45:37.277967" elapsed="0.000284"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.280862" 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-19T03:45:37.280552" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:45:37.280936" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:45:37.281106" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:45:37.280102" elapsed="0.001031"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.325869" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.325485" elapsed="0.000413"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.326747" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.326459" elapsed="0.000358">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:37.326924" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:37.326131" elapsed="0.000824"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.327661" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:45:37.327207" elapsed="0.000486"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.328128" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:45:37.328366" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:45:37.327870" elapsed="0.000529"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.328897" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.328622" elapsed="0.000331"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.329966" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.329703" elapsed="0.000318"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.330500" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.330213" elapsed="0.000313"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.330845" elapsed="0.000023"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.331065" elapsed="0.000027"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.331230" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:45:37.330714" elapsed="0.000573"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.330574" elapsed="0.000742"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:45:37.331362" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:45:37.331530" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:45:37.329384" elapsed="0.002171"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.329070" elapsed="0.002516"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.331752" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.331611" elapsed="0.000198"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.329030" elapsed="0.002800"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.332655" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.332015" elapsed="0.000668"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.332757" elapsed="0.000033"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:45:37.324464" elapsed="0.008615"/>
</kw>
<msg time="2026-04-19T03:45:37.333172" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:37.312523" elapsed="0.020738"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.379783" elapsed="0.000052"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.425506" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.471252" elapsed="0.000042"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.471836" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.472667" elapsed="0.000034"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.473547" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.473174" elapsed="0.000510"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:37.473129" elapsed="0.000632"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.474064" elapsed="0.000074"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.474407" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.474745" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:45:37.473088" elapsed="0.001813"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.472919" elapsed="0.002050"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.475444" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.475675" elapsed="0.000020"/>
</return>
<msg time="2026-04-19T03:45:37.475826" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:45:37.307972" elapsed="0.167882"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.478482" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.477846" elapsed="0.000762">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:37.478737" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:37.476646" elapsed="0.002133"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.479749" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.478950" elapsed="0.000981"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.481710" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.480795" elapsed="0.001007"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.479958" elapsed="0.001978"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.478930" elapsed="0.003031"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.484677" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:45:37.482124" elapsed="0.002598"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:45:37.484885" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:45:37.485066" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:45:37.476277" elapsed="0.008816"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.487572" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.486863" elapsed="0.000825">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:37.487819" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:37.485753" elapsed="0.002108"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:45:37.488352" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-19T03:45:37.488054" elapsed="0.000439"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.488013" elapsed="0.000507"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.488693" elapsed="0.000023"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.489098" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.489274" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:45:37.492174" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:45:37.485440" elapsed="0.006773"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.494975" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.494475" elapsed="0.000670"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.495878" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.495373" elapsed="0.000657"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:37.530598" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:45:37.531962" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01guw62ps8kh1i11yzoolpa6csk5.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:45:37 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:45:37.532835" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:45:37.498454" elapsed="0.034612"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.496195" elapsed="0.037199"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.533925" elapsed="0.000141"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.533467" elapsed="0.000918"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.496175" elapsed="0.038265"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.540813" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.538330" elapsed="0.002939"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.537690" elapsed="0.003627"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.537542" elapsed="0.003841"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.544336" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.542157" elapsed="0.002272"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.541544" elapsed="0.002932"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.541488" elapsed="0.003051"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.545875" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.545118" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.546775" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.546171" elapsed="0.000730"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.547720" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.547312" elapsed="0.000463"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.546965" elapsed="0.000858"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.546114" elapsed="0.001770"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.549271" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.548423" elapsed="0.000961"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.550167" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.549548" elapsed="0.000747"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.551107" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.550683" elapsed="0.000480"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.550358" elapsed="0.000860"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.549492" elapsed="0.001787"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:37.552329" elapsed="0.000730"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:45:37.554821" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.553993" elapsed="0.000939"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.555859" elapsed="0.002201"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:45:37.535522" elapsed="0.022649"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.558552" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:37.558358" elapsed="0.000319"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.558337" elapsed="0.000366"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:45:37.570315" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:45:37.558838" elapsed="0.011524"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:45:37.570528" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:45:37.570700" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:45:37.492859" elapsed="0.077868"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.570791" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:45:37.570941" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:45:37.288654" elapsed="0.282313"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.571306" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.571070" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.571051" elapsed="0.000414"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.571520" elapsed="0.000039"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:45:37.284963" elapsed="0.286740"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.281201" elapsed="0.290570"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.281183" elapsed="0.290625"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:45:37.572487" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:45:37.572376" elapsed="0.000172"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.572608" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:37.572571" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.572357" elapsed="0.000312"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.572815" elapsed="0.000023"/>
</kw>
<msg time="2026-04-19T03:45:37.572953" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:45:37.572133" elapsed="0.000847"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.573555" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.573156" elapsed="0.000427"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.574209" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.573727" elapsed="0.000510"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.579089" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.578819" elapsed="0.000317"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.579522" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.579279" elapsed="0.000288"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:37.588652" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:45:37.588714" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:45:37 GMT', 'Expires': 'Sun, 19 Apr 2026 02:45:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"205.7 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570337,"status":200} 
 </msg>
<msg time="2026-04-19T03:45:37.588820" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:45:37.581526" elapsed="0.007320"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.579632" elapsed="0.009258"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.589092" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.588915" elapsed="0.000242"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.579615" elapsed="0.009564"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.592711" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"205.7 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570337,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.590224" elapsed="0.002709"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.589998" elapsed="0.003098"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.589980" elapsed="0.003147"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.596388" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.593402" elapsed="0.003190"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.593186" elapsed="0.003563"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.593169" elapsed="0.003620"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.597774" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.596997" elapsed="0.000815"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.598374" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.597911" elapsed="0.000693"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.599673" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.598851" elapsed="0.000883"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.598643" elapsed="0.001268"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.597886" elapsed="0.002059"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.600905" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.600177" elapsed="0.000766"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.601419" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.601100" elapsed="0.000538"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.602432" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.601871" elapsed="0.000604"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.601676" elapsed="0.000926"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.601016" elapsed="0.001611"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:37.602770" elapsed="0.000877"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:45:37.604434" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.603808" elapsed="0.000653"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.604605" elapsed="0.002571"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:45:37.589624" elapsed="0.017616"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.607415" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:37.607309" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.607290" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:45:37.610118" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570337,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:45:37.607611" elapsed="0.002536"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:45:37.610198" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:45:37.610354" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570337,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:45:37.575053" elapsed="0.035328"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.610436" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:45:37.610583" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570337,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:45:37.574438" elapsed="0.036171"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.611628" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570337, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.611179" elapsed="0.000478"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:45:37.611741" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:45:37.611920" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570337, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:45:37.610814" elapsed="0.001134"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:37.612319" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.612110" elapsed="0.000237"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:37.612691" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.612489" elapsed="0.000228"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:45:37.612764" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:45:37.612916" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:45:37.279367" elapsed="0.333573"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:45:37.612999" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:45:37.613180" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:45:37.278665" elapsed="0.334541"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.613491" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.613285" elapsed="0.000435"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.613878" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.613745" elapsed="0.000188"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.614104" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.613956" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.613267" elapsed="0.000912"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:45:37.278507" elapsed="0.335697"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.616484" level="INFO">${session} = ClusterManagement__session_2</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-19T03:45:37.616175" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:45:37.616558" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:45:37.616705" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:45:37.615872" elapsed="0.000864"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.662339" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.661936" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.663144" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.662870" elapsed="0.000353">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:37.663316" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:37.662544" elapsed="0.000795"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.663906" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:45:37.663515" elapsed="0.000418"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.664269" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:45:37.664420" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:45:37.664122" elapsed="0.000360"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.664904" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.664654" elapsed="0.000295"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.665907" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.665654" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.666391" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.666121" elapsed="0.000295"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.666726" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.666918" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.667096" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:45:37.666604" elapsed="0.000551"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.666467" elapsed="0.000717"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:45:37.667229" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:45:37.667389" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:45:37.665385" elapsed="0.002028"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.665056" elapsed="0.002389"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.667601" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.667469" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.665018" elapsed="0.002658"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.668292" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.667835" elapsed="0.000484"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.668390" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:45:37.661081" elapsed="0.007535"/>
</kw>
<msg time="2026-04-19T03:45:37.668687" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:37.649142" elapsed="0.019618"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.712866" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.758356" elapsed="0.000036"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.802802" elapsed="0.000041"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.803213" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.803469" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.804438" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.804053" elapsed="0.000524"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:37.803989" elapsed="0.000668"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.804946" elapsed="0.000073"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.805702" elapsed="0.000077"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.806079" elapsed="0.000074"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:45:37.803947" elapsed="0.002292"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.803784" elapsed="0.002523"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.806450" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.806680" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:45:37.806829" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:45:37.644991" elapsed="0.161866"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.809680" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.808800" elapsed="0.001007">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:37.809968" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:37.807633" elapsed="0.002377"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.810667" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.810202" elapsed="0.000649"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.812719" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.811698" elapsed="0.001137"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.810878" elapsed="0.002103"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.810182" elapsed="0.002826"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.816275" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:45:37.813219" elapsed="0.003105"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:45:37.816519" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:45:37.816694" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:45:37.807295" elapsed="0.009424"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.819442" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.818887" elapsed="0.000670">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:37.819686" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:37.817737" elapsed="0.001989"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:45:37.820210" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:45:37.819898" elapsed="0.000455"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.819878" elapsed="0.000503"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.820517" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.820768" elapsed="0.000024"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.820939" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:45:37.824523" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:45:37.817418" elapsed="0.007133"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.826823" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.826340" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.827670" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.827204" elapsed="0.000608"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:37.861747" level="INFO">GET Request : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:45:37.863200" level="INFO">GET Response : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node0fwhdqzf6woe31ekdjscvq37or4.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:45:37 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:45:37.863919" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:45:37.830458" elapsed="0.033708"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.827957" elapsed="0.036526"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.864994" elapsed="0.000191"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.864550" elapsed="0.000948"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.827937" elapsed="0.037617"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.872977" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.870120" elapsed="0.003349"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.868690" elapsed="0.004826"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.868564" elapsed="0.005018"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.876444" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.874360" elapsed="0.002178"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.873743" elapsed="0.002841"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.873687" elapsed="0.002961"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.878058" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.877293" elapsed="0.000877"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.878969" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.878372" elapsed="0.000740"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.879901" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.879495" elapsed="0.000459"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.879175" elapsed="0.000828"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.878315" elapsed="0.001766"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.881348" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.880597" elapsed="0.000865"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.882269" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.881626" elapsed="0.000768"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.883199" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.882780" elapsed="0.000474"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.882456" elapsed="0.000845"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.881569" elapsed="0.001792"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:37.884313" elapsed="0.000661"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:45:37.886601" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.886000" elapsed="0.000714"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.887640" elapsed="0.002222"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:45:37.866678" elapsed="0.023291"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.890412" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:37.890204" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.890183" elapsed="0.000379"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:45:37.902330" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:45:37.890696" elapsed="0.011683"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:45:37.902544" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:45:37.902717" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:45:37.825106" elapsed="0.077638"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.902809" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:45:37.902961" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:45:37.624465" elapsed="0.278522"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.903322" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.903089" elapsed="0.000344"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.903071" elapsed="0.000387"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.903493" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:45:37.620801" elapsed="0.282818"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.616962" elapsed="0.286700"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.616785" elapsed="0.286901"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:45:37.904257" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:45:37.904150" elapsed="0.000167"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.904380" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:37.904341" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.904132" elapsed="0.000310"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.904576" elapsed="0.000022"/>
</kw>
<msg time="2026-04-19T03:45:37.904694" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:45:37.903911" elapsed="0.000809"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.905269" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.904876" elapsed="0.000421"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.905902" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.905442" elapsed="0.000488"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.910894" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.910641" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.911348" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.911102" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:37.918948" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:45:37.919008" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:45:37 GMT', 'Expires': 'Sun, 19 Apr 2026 02:45:37 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"193.5 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570337,"status":200} 
 </msg>
<msg time="2026-04-19T03:45:37.919135" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:45:37.913236" elapsed="0.005925"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.911458" elapsed="0.007747"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.919371" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.919231" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.911440" elapsed="0.008016"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.923099" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"193.5 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570337,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.920492" elapsed="0.002882"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.920287" elapsed="0.003243"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.920268" elapsed="0.003304"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.927099" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.923960" elapsed="0.003343"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.923653" elapsed="0.003803"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.923630" elapsed="0.003866"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.928459" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.927706" elapsed="0.000792"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.928910" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.928597" elapsed="0.000585"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.930305" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.929431" elapsed="0.000936"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.929220" elapsed="0.001360"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.928571" elapsed="0.002045"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.931392" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.930838" elapsed="0.000581"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.931709" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.931490" elapsed="0.000372"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.932585" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.932054" elapsed="0.000599"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.931889" elapsed="0.000907"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.931472" elapsed="0.001354"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:37.932970" elapsed="0.000764"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:45:37.934517" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.933889" elapsed="0.000660"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.934693" elapsed="0.002852"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:45:37.919896" elapsed="0.017716"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.937790" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:37.937682" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.937663" elapsed="0.000194"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:45:37.940604" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570337,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:45:37.937989" elapsed="0.002645"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:45:37.940686" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:45:37.940858" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570337,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:45:37.906764" elapsed="0.034120"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.940940" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:45:37.941180" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570337,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:45:37.906160" elapsed="0.035047"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.942151" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570337, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.941691" elapsed="0.000489"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:45:37.942277" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:45:37.942465" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570337, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:45:37.941415" elapsed="0.001078"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:37.942849" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.942646" elapsed="0.000230"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:37.943245" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.943029" elapsed="0.000242"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:45:37.943319" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:45:37.943469" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:45:37.615320" elapsed="0.328174"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:45:37.943552" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:45:37.943698" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:45:37.614529" elapsed="0.329194"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.944007" elapsed="0.000208"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.943802" elapsed="0.000452"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.944411" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.944278" elapsed="0.000187"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.944619" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.944489" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.943785" elapsed="0.000908"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:45:37.614370" elapsed="0.330347"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.947227" level="INFO">${session} = ClusterManagement__session_3</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-19T03:45:37.946903" elapsed="0.000352"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:45:37.947301" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:45:37.947451" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:45:37.946609" elapsed="0.000868"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.992895" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:37.992473" elapsed="0.000457"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.993762" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.993491" elapsed="0.000348">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:37.993936" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:37.993145" elapsed="0.000816"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.994572" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:45:37.994162" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:45:37.994975" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:45:37.995156" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:45:37.994822" elapsed="0.000429"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.995694" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.995429" elapsed="0.000312"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.996714" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:37.996455" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.997229" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:45:37.996916" elapsed="0.000340"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.997580" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.997776" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.997941" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:45:37.997455" elapsed="0.000543"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:45:37.997309" elapsed="0.000735"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:45:37.998097" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:45:37.998265" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:45:37.996189" elapsed="0.002102"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:37.995841" elapsed="0.002481"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:37.998481" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:37.998347" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:37.995817" elapsed="0.002740"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:45:37.999230" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:45:37.998747" elapsed="0.000510"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:45:37.999331" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:45:37.991550" elapsed="0.008009"/>
</kw>
<msg time="2026-04-19T03:45:37.999633" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:37.979096" elapsed="0.020607"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.044805" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.090340" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.135451" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.135808" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.136074" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.136901" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:38.136534" elapsed="0.000519"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:38.136492" elapsed="0.000639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.137413" elapsed="0.000072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.137756" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.138417" elapsed="0.000070"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:45:38.136458" elapsed="0.002115"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:45:38.136314" elapsed="0.002325"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.138784" elapsed="0.000036"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:38.139060" elapsed="0.000021"/>
</return>
<msg time="2026-04-19T03:45:38.139198" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:45:37.974797" elapsed="0.164428"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:38.141869" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:38.141261" elapsed="0.000734">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:38.142173" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:38.139996" elapsed="0.002220"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.142846" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:38.142392" elapsed="0.000688"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:38.145080" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:45:38.143892" elapsed="0.001277"/>
</kw>
<status status="PASS" start="2026-04-19T03:45:38.143110" elapsed="0.002188"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:38.142372" elapsed="0.002951"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:38.148436" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:45:38.145463" elapsed="0.003016"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:45:38.148640" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:45:38.148805" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:45:38.139669" elapsed="0.009161"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:45:38.151382" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:45:38.150607" elapsed="0.000906">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:45:38.151657" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:45:38.149502" elapsed="0.002197"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:45:38.152196" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:45:38.151877" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:38.151856" elapsed="0.000508"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.152504" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:38.152760" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:45:38.152944" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:45:38.155117" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:45:38.149193" elapsed="0.005952"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:38.157531" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:38.157021" elapsed="0.000659"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:38.158407" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:38.157901" elapsed="0.000655"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:43.169150" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:45:38.160928" elapsed="5.013610">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:45:38.158704" elapsed="5.016283">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.175678" elapsed="0.000116"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.175143" elapsed="0.001020"/>
</branch>
<status status="FAIL" start="2026-04-19T03:45:38.158684" elapsed="5.017541">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.177413" elapsed="0.000065"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.178001" elapsed="0.000097"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:43.177911" elapsed="0.000430"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:43.177864" elapsed="0.000534"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.178756" elapsed="0.000078"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.179248" elapsed="0.000041"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:45:38.155609" elapsed="5.023904">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.179608" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.955268" elapsed="5.224444">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.179983" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.179809" elapsed="0.000279"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:43.179792" elapsed="0.000324"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.180149" elapsed="0.000014"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.951473" elapsed="5.228777">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:45:37.947544" elapsed="5.232775">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:45:37.947527" elapsed="5.232825">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.180605" elapsed="0.000025"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.180800" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.180959" elapsed="0.000022"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.181195" elapsed="0.000024"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.181544" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.181707" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.181861" elapsed="0.000020"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.181926" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.945995" elapsed="5.236100">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.182170" elapsed="0.000016"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.945156" elapsed="5.237112">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.182516" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.182360" elapsed="0.000221"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.182732" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.182603" elapsed="0.000182"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.182936" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.182808" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:43.182342" elapsed="0.000667"/>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:45:37.944883" elapsed="5.238184">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:45:37.278301" elapsed="5.904828">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.183184" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.274255" elapsed="5.909027">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.183452" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.183665" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.183537" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:45:43.183521" elapsed="0.000219"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.183863" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.184019" elapsed="0.000036"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.184102" elapsed="0.000016"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:45:37.270487" elapsed="5.913715">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.184374" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.184536" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.184688" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.184849" elapsed="0.000020"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.185122" elapsed="0.000024"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.185291" elapsed="0.000020"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.185444" elapsed="0.000022"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.185746" elapsed="0.000023"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.185903" elapsed="0.000021"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:45:43.185578" elapsed="0.000384"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.185514" elapsed="0.000473"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.186210" elapsed="0.000021"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.186367" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.186563" elapsed="0.000023"/>
</kw>
<arg>shard_name=car</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:45:37.270096" elapsed="5.916581">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<arg>shard_name=people</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.186945" elapsed="0.000024"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<arg>shard_name=car-people</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.187219" elapsed="0.000024"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${leader_list}</var>
<arg>${car-people_leader_index}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:43.187378" elapsed="0.000020"/>
</kw>
<doc>Initialize resources, memorize shard leaders, compute item distribution.</doc>
<status status="FAIL" start="2026-04-19T03:44:45.237010" elapsed="57.950475">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<test id="s1-s27-t1" name="Add_Cars_To_Leader_And_Verify" line="37">
<doc>Add all needed cars to car Leader, verify on each member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.187564" elapsed="0.000699">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t2" name="Add_People_To_First_Follower_And_Verify" line="55">
<doc>Add all needed people to people first Follower, verify on each member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.188455" elapsed="0.000417">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t3" name="Buy_Cars_On_Leader_And_Verify" line="70">
<doc>Buy some cars on the leader member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.189067" elapsed="0.000338">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t4" name="Buy_Cars_On_Follower_And_Verify" line="89">
<doc>Buy some cars on the first follower member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.189583" elapsed="0.000345">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t5" name="Isolate_and_Rejoin_People_Leader" line="108">
<doc>Previous people Leader is isolated. We should never stop the people first follower, this is where people are registered.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.190116" elapsed="0.000486">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t6" name="Buy_Cars_On_Leader_After_Rejoin_And_Verify" line="128">
<doc>Buy some cars on the leader member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.190773" elapsed="0.000487">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t7" name="Buy_Cars_On_Follower_After_Rejoin_And_Verify" line="147">
<doc>Buy some cars on the first follower member.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.191506" elapsed="0.000417">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t8" name="Delete_All_CarPeople" line="166">
<doc>DELETE car-people container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.192197" elapsed="0.000397">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t9" name="Delete_All_People" line="170">
<doc>DELETE people container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.192839" elapsed="0.000411">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s27-t10" name="Delete_All_Cars" line="174">
<doc>DELETE cars container. No verification beyond http status.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:45:43.193527" elapsed="0.000372">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<doc>This test focuses on testing buy-car RPC over the Leader isolation.

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


All purchases are against the same node, which is the first one to get isolated.

All data is deleted at the end of the suite.
This suite expects car, people and car-people modules to have separate Shards.</doc>
<status status="FAIL" start="2026-04-19T03:44:45.169435" elapsed="58.024961">Suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</suite>
<suite id="s1-s28" name="Car Failover Crud Isolation" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud_isolation.robot">
<kw name="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-19T03:45:43.265492" 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-19T03:45:43.261590" elapsed="0.003954"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:45:43.261384" elapsed="0.004222"/>
</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-19T03:45:43.270012" 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-19T03:45:43.266706" elapsed="0.003346"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:45:43.270246" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:43.270132" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:43.270112" elapsed="0.000196"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.270826" 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-19T03:45:43.270450" elapsed="0.000419"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.271344" level="INFO">${cluster_size} = 3</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-19T03:45:43.271019" elapsed="0.000351"/>
</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-19T03:45:43.271855" elapsed="0.000308"/>
</kw>
<msg time="2026-04-19T03:45:43.272259" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:45:43.272305" level="INFO">${possibly_int_of_members} = 3</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-19T03:45:43.271529" elapsed="0.000798"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.272847" level="INFO">${int_of_members} = 3</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-19T03:45:43.272483" elapsed="0.000390"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.274119" 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-19T03:45:43.273548" elapsed="0.000599"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.274538" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:45:43.274285" elapsed="0.000279"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.275063" 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-19T03:45:43.274743" elapsed="0.000348"/>
</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-19T03:45:43.277867" elapsed="0.000228"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.278567" level="INFO">${member_ip} = 10.30.171.9</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-19T03:45:43.278243" elapsed="0.000351"/>
</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-19T03:45:43.278768" elapsed="0.000250"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.279788" 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-19T03:45:43.279495" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:45:43.279861" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:45:43.280014" 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-19T03:45:43.279214" elapsed="0.000851"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:43.280786" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x782706199d50&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-19T03:45:43.280211" elapsed="0.000704"/>
</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-19T03:45:43.281134" elapsed="0.000195"/>
</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-19T03:45:43.277318" elapsed="0.004071"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:45:43.277141" elapsed="0.004294"/>
</iter>
<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-19T03:45:43.282262" elapsed="0.000187"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.282948" level="INFO">${member_ip} = 10.30.171.128</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-19T03:45:43.282593" 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-19T03:45:43.283130" elapsed="0.000220"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.284121" level="INFO">${session} = ClusterManagement__session_2</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-19T03:45:43.283810" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:45:43.284195" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:45:43.284345" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:45:43.283530" elapsed="0.000840"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:43.284914" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7481a10&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-19T03:45:43.284513" elapsed="0.000504"/>
</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-19T03:45:43.285392" elapsed="0.000194"/>
</kw>
<arg>${index}</arg>
<arg>${member_index_list}</arg>
<arg>${session_list}</arg>
<arg>${index_to_ip_mapping}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>http_retries=${http_retries}</arg>
<doc>Add a corresponding item based on index into the last three arguments.
Create the Http session whose alias is added to list.</doc>
<status status="PASS" start="2026-04-19T03:45:43.281704" elapsed="0.003942"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:45:43.281535" elapsed="0.004155"/>
</iter>
<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-19T03:45:43.286505" elapsed="0.000208"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.287204" level="INFO">${member_ip} = 10.30.171.206</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-19T03:45:43.286867" elapsed="0.000364"/>
</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-19T03:45:43.287368" elapsed="0.000219"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.288357" level="INFO">${session} = ClusterManagement__session_3</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-19T03:45:43.288064" elapsed="0.000320"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:45:43.288430" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:45:43.288579" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:45:43.287765" elapsed="0.000840"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:45:43.289163" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7074a10&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-19T03:45:43.288747" elapsed="0.000519"/>
</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-19T03:45:43.289412" 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-19T03:45:43.285943" elapsed="0.003715"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:45:43.285775" elapsed="0.003927"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:45:43.275142" elapsed="0.014589"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.290295" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:45:43.289878" elapsed="0.000460"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.290918" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:45:43.290489" elapsed="0.000509"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.291556" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:45:43.291167" elapsed="0.000433"/>
</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-19T03:45:43.273116" elapsed="0.018542"/>
</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-19T03:45:43.266353" elapsed="0.025360"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.291893" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:43.291779" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:43.291760" elapsed="0.000201"/>
</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-19T03:45:43.295042" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:45:43.294611" elapsed="0.000459"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.295519" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:45:43.295219" elapsed="0.000326"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:45:43.295590" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:45:43.295741" level="INFO">${index_list} = [1, 2, 3]</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-19T03:45:43.294300" elapsed="0.001466"/>
</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-19T03:45:43.296724" level="INFO">${member_ip} = 10.30.171.9</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-19T03:45:43.296464" elapsed="0.000287"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.297468" 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-19T03:45:43.297568" 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-19T03:45:43.297309" elapsed="0.000285"/>
</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-19T03:45:43.300981" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.300377" elapsed="0.000711"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:43.300357" elapsed="0.000771"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.301815" 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-19T03:45:43.302086" 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-19T03:45:43.301326" elapsed="0.000816"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.303164" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:43.302413" elapsed="0.000866"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.304554" level="INFO">${conn_id} = 130</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:45:43.303554" elapsed="0.001055"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.306456" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:45:43.306647" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:45:43.306099" elapsed="0.000598"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:43.307108" elapsed="0.000475"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.308865" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:45:43.625074" 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 Sun Apr 19 03:44:43 UTC 2026

  System load:  0.1                Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:44:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:45:43.308542" elapsed="0.316656"/>
</kw>
<msg time="2026-04-19T03:45:43.625278" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:43.307948" elapsed="0.317486"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:45:43.305141" elapsed="0.320442"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.626472" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:45:43.639053" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:45:43.639233" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:45:43.639348" 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-19T03:45:43.625937" elapsed="0.013466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:43.639742" elapsed="0.000597"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.641555" 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-19T03:45:43.640928" 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-19T03:45:43.642166" elapsed="0.000057"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:43.641861" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:43.641834" 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-19T03:45:43.642694" elapsed="0.000069"/>
</return>
<status status="PASS" start="2026-04-19T03:45:43.642441" elapsed="0.000409"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:43.642423" elapsed="0.000468"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:45:43.642955" elapsed="0.000016"/>
</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-19T03:45:43.646004" elapsed="0.000499"/>
</kw>
<kw name="Open 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-19T03:45:43.646786" elapsed="0.000322"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:43.647377" elapsed="0.000278"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:45:43.643474" elapsed="0.004255"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:45:43.299349" elapsed="0.348568"/>
</kw>
<msg time="2026-04-19T03:45:43.647973" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:43.298694" elapsed="0.349460"/>
</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-19T03:45:43.298230" elapsed="0.350009"/>
</kw>
<msg time="2026-04-19T03:45:43.648280" 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-19T03:45:43.297738" elapsed="0.350588"/>
</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-19T03:45:43.650715" elapsed="0.000339"/>
</kw>
<kw name="Open 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-19T03:45:43.651205" elapsed="0.000142"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:43.651494" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:45:43.648605" elapsed="0.003038"/>
</kw>
<msg time="2026-04-19T03:45:43.651786" 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-19T03:45:43.296953" elapsed="0.354859"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.652366" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:43.651972" elapsed="0.000435"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:45:43.652451" elapsed="0.000028"/>
</return>
<arg>command=${command}</arg>
<arg>member_index=${index}</arg>
<doc>Obtain IP, call Utils and return output. This keeps previous ssh session active.</doc>
<status status="PASS" start="2026-04-19T03:45:43.296122" elapsed="0.356451"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:45:43.295942" elapsed="0.356668"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:43.653503" level="INFO">${member_ip} = 10.30.171.128</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-19T03:45:43.653233" elapsed="0.000296"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.654224" 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-19T03:45:43.654322" 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-19T03:45:43.654088" elapsed="0.000259"/>
</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-19T03:45:43.659335" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:43.658724" elapsed="0.000701"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:43.658704" elapsed="0.000761"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.660180" 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-19T03:45:43.660448" 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-19T03:45:43.659683" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.661594" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:43.660774" elapsed="0.000933"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.663001" level="INFO">${conn_id} = 133</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:45:43.661982" elapsed="0.001109"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:45:43.664940" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:45:43.665151" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:45:43.664565" elapsed="0.000636"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:43.665561" elapsed="0.001033"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:45:43.667787" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:45:44.016856" 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 Sun Apr 19 03:44:44 UTC 2026

  System load:  0.05               Processes:             126
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:44:45 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:45:43.667436" elapsed="0.349578"/>
</kw>
<msg time="2026-04-19T03:45:44.017121" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:43.666966" elapsed="0.350334"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:45:43.663586" elapsed="0.353875"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.018399" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:45:44.031509" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:45:44.031954" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:45:44.032144" 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-19T03:45:44.017837" elapsed="0.014385"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.032909" elapsed="0.001374"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.037249" 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-19T03:45:44.035667" elapsed="0.001861"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:45:44.038730" elapsed="0.000134"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:44.037955" elapsed="0.001144"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.037899" elapsed="0.001305"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:45:44.039993" elapsed="0.000201"/>
</return>
<status status="PASS" start="2026-04-19T03:45:44.039406" elapsed="0.001048"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.039366" elapsed="0.001191"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:45:44.040711" elapsed="0.000039"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:44.044333" 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-19T03:45:44.045147" elapsed="0.000315"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.045729" elapsed="0.000245"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:45:44.041426" elapsed="0.004720"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:45:43.657697" elapsed="0.388641"/>
</kw>
<msg time="2026-04-19T03:45:44.046395" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:43.657080" elapsed="0.389370"/>
</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-19T03:45:43.656576" elapsed="0.389953"/>
</kw>
<msg time="2026-04-19T03:45:44.046570" 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-19T03:45:43.654488" elapsed="0.392127"/>
</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-19T03:45:44.049105" elapsed="0.000311"/>
</kw>
<kw name="Open 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-19T03:45:44.049568" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.049847" 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-19T03:45:44.046895" elapsed="0.003104"/>
</kw>
<msg time="2026-04-19T03:45:44.050180" 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-19T03:45:43.653731" elapsed="0.396475"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.050622" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.050375" elapsed="0.000288"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:45:44.050705" 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-19T03:45:43.652873" elapsed="0.397956"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:45:43.652702" elapsed="0.398164"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:44.051773" level="INFO">${member_ip} = 10.30.171.206</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-19T03:45:44.051501" elapsed="0.000299"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.052544" 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-19T03:45:44.052647" 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-19T03:45:44.052399" elapsed="0.000330"/>
</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-19T03:45:44.056308" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:44.055688" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.055668" elapsed="0.000801"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.057174" 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-19T03:45:44.057431" 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-19T03:45:44.056669" elapsed="0.000882"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.058695" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.057953" elapsed="0.000858"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.060168" level="INFO">${conn_id} = 136</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:45:44.059127" elapsed="0.001098"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.062122" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:45:44.062322" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:45:44.061728" elapsed="0.000646"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:44.062871" elapsed="0.000752"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.065045" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:45:44.430850" 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 Sun Apr 19 03:44:44 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:44:46 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:45:44.064707" elapsed="0.366312"/>
</kw>
<msg time="2026-04-19T03:45:44.431132" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:44.064007" elapsed="0.367315"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:45:44.060716" elapsed="0.370770"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.432438" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:45:44.445872" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:45:44.446320" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:45:44.446578" 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-19T03:45:44.431873" elapsed="0.014826"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.447456" elapsed="0.001248"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.450897" 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-19T03:45:44.450020" elapsed="0.001071"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:45:44.451736" elapsed="0.000077"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:44.451348" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.451311" elapsed="0.000678"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:45:44.452477" elapsed="0.000099"/>
</return>
<status status="PASS" start="2026-04-19T03:45:44.452137" elapsed="0.000558"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.452110" elapsed="0.000642"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:45:44.452838" 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-19T03:45:44.457622" elapsed="0.000662"/>
</kw>
<kw name="Open 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-19T03:45:44.458579" elapsed="0.000322"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.459307" elapsed="0.000258"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:45:44.453565" elapsed="0.006075"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:45:44.054621" elapsed="0.405215"/>
</kw>
<msg time="2026-04-19T03:45:44.459895" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:44.053899" elapsed="0.406054"/>
</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-19T03:45:44.053416" elapsed="0.406639"/>
</kw>
<msg time="2026-04-19T03:45:44.460100" 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-19T03:45:44.052887" elapsed="0.407262"/>
</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-19T03:45:44.462793" elapsed="0.000332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:45:44.463280" elapsed="0.000146"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.463564" 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-19T03:45:44.460473" elapsed="0.003237"/>
</kw>
<msg time="2026-04-19T03:45:44.463803" 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-19T03:45:44.052001" elapsed="0.411827"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.464262" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.463995" elapsed="0.000309"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:45:44.464347" 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-19T03:45:44.051156" elapsed="0.413317"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:45:44.050958" elapsed="0.413552"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:45:43.295816" elapsed="1.168731"/>
</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-19T03:45:43.292189" elapsed="1.172419"/>
</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-19T03:45:44.464756" elapsed="0.000212"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:45:44.478281" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:44.478166" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.478146" elapsed="0.000206"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.478639" 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-19T03:45:44.478744" 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-19T03:45:44.478499" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.479196" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.478911" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.479627" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.479383" elapsed="0.000287"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:44.480414" 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-19T03:45:44.480183" elapsed="0.000342">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:45:44.480629" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:45:44.480676" 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-19T03:45:44.479816" 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-19T03:45:44.481058" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:44.480823" elapsed="0.000312"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.480804" elapsed="0.000354"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:44.481887" level="INFO">${ip_address} = 10.30.171.9</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-19T03:45:44.481621" elapsed="0.000292"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:45:44.481961" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:45:44.482127" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:45:44.481359" elapsed="0.000793"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:45:44.482296" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.482977" level="INFO">index=139
host=10.30.171.9
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-19T03:45:44.483096" level="INFO">${karaf_connection_object} = index=139
host=10.30.171.9
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-19T03:45:44.482854" elapsed="0.000270"/>
</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-19T03:45:44.483262" elapsed="0.002177"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.485858" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:45:44.651584" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:45:44.485595" elapsed="0.166137"/>
</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-19T03:45:44.655365" 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-19T03:45:44.655883" elapsed="0.000186"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.656210" 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-19T03:45:44.652809" elapsed="0.003557"/>
</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-19T03:45:44.652133" elapsed="0.004281"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.477859" elapsed="0.178609"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:45:44.465694" elapsed="0.190824"/>
</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-19T03:45:44.465336" elapsed="0.191235"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:45:44.465205" elapsed="0.191408"/>
</iter>
<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-19T03:45:44.669400" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:44.669279" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.669255" elapsed="0.000224"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.669786" 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-19T03:45:44.669958" 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-19T03:45:44.669645" elapsed="0.000340"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.670417" level="INFO">{1: 139}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.670147" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.670851" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.670605" elapsed="0.000290"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:44.671647" level="FAIL">Dictionary does not contain key '2'.</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-19T03:45:44.671409" elapsed="0.000349">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:45:44.671866" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:45:44.671911" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:45:44.671056" elapsed="0.000878"/>
</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-19T03:45:44.672242" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:44.672012" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.671993" elapsed="0.000347"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:44.673067" level="INFO">${ip_address} = 10.30.171.128</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-19T03:45:44.672787" elapsed="0.000307"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:45:44.673143" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:45:44.673298" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:45:44.672528" 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-19T03:45:44.673463" elapsed="0.000431"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.674188" level="INFO">index=141
host=10.30.171.128
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-19T03:45:44.674287" level="INFO">${karaf_connection_object} = index=141
host=10.30.171.128
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-19T03:45:44.674067" 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-19T03:45:44.674447" elapsed="0.001999"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.676893" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:45:44.829369" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:45:44.676597" elapsed="0.152917"/>
</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-19T03:45:44.832747" 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-19T03:45:44.833289" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.833590" 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-19T03:45:44.830596" elapsed="0.003148"/>
</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-19T03:45:44.829912" elapsed="0.003878"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:45:44.668967" elapsed="0.164877"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:45:44.657225" elapsed="0.176763"/>
</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-19T03:45:44.656845" elapsed="0.177213"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:45:44.656715" elapsed="0.177386"/>
</iter>
<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-19T03:45:44.846407" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:44.846284" elapsed="0.000176"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.846260" elapsed="0.000223"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.846767" 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-19T03:45:44.846873" 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-19T03:45:44.846628" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.847330" level="INFO">{1: 139, 2: 141}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.847062" elapsed="0.000312"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:44.847794" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:44.847514" elapsed="0.000324"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:44.848591" level="FAIL">Dictionary does not contain key '3'.</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-19T03:45:44.848357" elapsed="0.000341">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:45:44.848805" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:45:44.848849" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:45:44.847984" elapsed="0.000888"/>
</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-19T03:45:44.849177" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:44.848947" elapsed="0.000304"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:44.848928" elapsed="0.000347"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:44.850079" level="INFO">${ip_address} = 10.30.171.206</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-19T03:45:44.849769" elapsed="0.000337"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:45:44.850154" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:45:44.850310" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:45:44.849464" elapsed="0.000871"/>
</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-19T03:45:44.850477" elapsed="0.000403"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.851175" level="INFO">index=143
host=10.30.171.206
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-19T03:45:44.851274" level="INFO">${karaf_connection_object} = index=143
host=10.30.171.206
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-19T03:45:44.851055" 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-19T03:45:44.851434" elapsed="0.001945"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:45:44.853785" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:45:54.917857" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:44.853529" elapsed="10.065215">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:54.922159" elapsed="0.000388"/>
</kw>
<kw name="Open 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-19T03:45:54.922708" elapsed="0.000177"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:54.923049" 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-19T03:45:54.920004" elapsed="0.003202"/>
</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-19T03:45:54.919300" elapsed="0.004056"/>
</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-19T03:45:44.845970" elapsed="10.077474">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:45:54.923540" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:44.834739" elapsed="10.088897">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:44.834335" elapsed="10.089368"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:45:44.834205" elapsed="10.089548"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:45:44.465041" elapsed="10.458753"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:45:43.265873" elapsed="11.657983"/>
</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-19T03:45:54.926320" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:54.926200" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:54.926179" elapsed="0.000213"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:45:54.930629" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:54.930522" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:54.930504" elapsed="0.000194"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:45:54.931654" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:45:54.931258" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:45:54.932147" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:45:54.931828" elapsed="0.000345"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:45:54.932219" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:45:54.932376" level="INFO">${index_list} = [1, 2, 3]</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-19T03:45:54.930912" elapsed="0.001489"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:45:54.937486" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:54.937378" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:54.937360" elapsed="0.000193"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:45:54.938706" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:54.938579" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:54.938561" elapsed="0.000213"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:54.939258" level="INFO">${karaf_connection_index} = 139</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-19T03:45:54.938905" elapsed="0.000379"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:54.939673" 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-19T03:45:54.939441" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:45:54.979093" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:45:54.940404" elapsed="0.038820"/>
</kw>
<msg time="2026-04-19T03:45:54.979354" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:45:54.979400" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:54.939848" elapsed="0.039587"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:45:55.033564" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:45:54.980207" elapsed="0.053571"/>
</kw>
<msg time="2026-04-19T03:45:55.033909" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:45:55.033956" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:54.979594" elapsed="0.054398"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:55.034345" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:55.034091" elapsed="0.000425"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.034069" elapsed="0.000473"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:55.035047" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:55.034675" elapsed="0.000476"/>
</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-19T03:45:55.035481" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:55.035218" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.035200" elapsed="0.000451"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:45:55.035686" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:55.037758" 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-19T03:45:55.038556" elapsed="0.000289"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:55.039196" elapsed="0.000279"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:45:55.036829" elapsed="0.002736"/>
</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-19T03:45:55.035948" elapsed="0.003750"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:45:54.938295" elapsed="0.101504"/>
</kw>
<msg time="2026-04-19T03:45:55.039890" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:45:55.039934" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:54.937692" elapsed="0.102277"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:45:55.040170" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:45:55.040061" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.040041" elapsed="0.000241"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:55.040673" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:55.040998" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:45:55.041240" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:45:54.937085" elapsed="0.104271"/>
</kw>
<msg time="2026-04-19T03:45:55.041448" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:45:55.041490" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:54.932757" elapsed="0.108767"/>
</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-19T03:45:55.041837" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:55.041600" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.041583" elapsed="0.000330"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:45:54.932628" elapsed="0.109308"/>
</iter>
<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-19T03:45:55.047321" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:55.047206" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.047187" elapsed="0.000239"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:45:55.048589" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:55.048462" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.048444" elapsed="0.000212"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:55.049218" level="INFO">${karaf_connection_index} = 141</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-19T03:45:55.048788" elapsed="0.000457"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:55.049662" 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-19T03:45:55.049423" elapsed="0.000266"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:45:55.103010" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:45:55.050351" elapsed="0.052858"/>
</kw>
<msg time="2026-04-19T03:45:55.103348" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:45:55.103396" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:55.049837" elapsed="0.053594"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:45:55.199095" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:45:55.104115" elapsed="0.095183"/>
</kw>
<msg time="2026-04-19T03:45:55.199433" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:45:55.199479" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:55.103597" elapsed="0.095917"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:55.199830" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:55.199593" elapsed="0.000384"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.199572" elapsed="0.000431"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:45:55.200563" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "f "a "i "l "o "v "e "r "_ "c "r "u "d "_ "i "s "o "l "a "t "i "o "n ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:45:55.200172" elapsed="0.000482"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:55.200948" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:55.200721" elapsed="0.000391"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.200702" elapsed="0.000436"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:45:55.201174" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:45:55.203099" elapsed="0.000463"/>
</kw>
<kw name="Open 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-19T03:45:55.203890" elapsed="0.000619"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:45:55.204821" elapsed="0.000273"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:45:55.202304" elapsed="0.002890"/>
</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-19T03:45:55.201429" elapsed="0.003899"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:45:55.048178" elapsed="0.157256"/>
</kw>
<msg time="2026-04-19T03:45:55.205528" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:45:55.205571" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:55.047573" elapsed="0.158033"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:45:55.205792" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:45:55.205683" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.205664" elapsed="0.000259"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:55.206327" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:45:55.206731" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:45:55.206802" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:45:55.046860" elapsed="0.160048"/>
</kw>
<msg time="2026-04-19T03:45:55.207002" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:45:55.207062" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:45:55.042200" elapsed="0.164898"/>
</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-19T03:45:55.207437" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:45:55.207175" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.207157" elapsed="0.000357"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:45:55.042073" elapsed="0.165464"/>
</iter>
<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-19T03:45:55.212779" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:55.212670" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.212651" 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-19T03:45:55.214006" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:45:55.213880" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-19T03:45:55.213862" elapsed="0.000227"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:45:55.214538" level="INFO">${karaf_connection_index} = 143</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-19T03:45:55.214221" elapsed="0.000344"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:45:55.214944" 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-19T03:45:55.214710" elapsed="0.000260"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:46:05.216632" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:45:55.215707" elapsed="10.001858">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:46:05.217796" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:46:05.217852" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:45:55.215135" elapsed="10.002743"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:46:15.219490" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:46:05.218755" elapsed="10.001523">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:46:15.220483" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:46:15.220531" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:46:05.218154" elapsed="10.002401"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:46:15.221760" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud_isolation.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-19T03:46:15.221003" elapsed="0.000839">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud_isolation.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:46:15.220673" elapsed="0.001306">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud_isolation.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:46:15.220641" elapsed="0.001376">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud_isolation.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-19T03:46:15.222192" 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-19T03:46:15.222438" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:15.222283" elapsed="0.000429"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:15.222264" elapsed="0.000476"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:46:15.222899" 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-19T03:46:15.225072" elapsed="0.000459"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:46:15.225863" elapsed="0.000321"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:15.226515" elapsed="0.000240"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:15.224263" elapsed="0.002582"/>
</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-19T03:46:15.223272" elapsed="0.003707"/>
</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-19T03:45:55.213595" elapsed="20.013580">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud_isolation.robot"</status>
</kw>
<msg time="2026-04-19T03:46:15.227286" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:46:15.227331" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_failover_crud_iso...</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-19T03:45:55.212987" elapsed="20.014369"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:46:15.227543" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:15.227434" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:15.227415" elapsed="0.000194"/>
</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-19T03:46:15.228377" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:15.228267" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:15.228248" elapsed="0.000195"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:15.228922" 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-19T03:46:15.229048" 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-19T03:46:15.228584" elapsed="0.000495"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:15.229524" level="INFO">{1: 139, 2: 141, 3: 143}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:15.229253" elapsed="0.000316"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:15.229953" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:15.229710" elapsed="0.000287"/>
</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-19T03:46:15.230590" elapsed="0.000285"/>
</kw>
<msg time="2026-04-19T03:46:15.230972" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:46:15.231017" level="INFO">${old_connection_index} = 143</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-19T03:46:15.230210" elapsed="0.000918"/>
</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-19T03:46:15.232208" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:46:25.234308" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:46:15.233465" elapsed="10.001591">No match found for '
' in 10 seconds
Output:
.</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-19T03:46:15.232691" elapsed="10.002503"/>
</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-19T03:46:25.236476" elapsed="0.000423"/>
</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-19T03:46:25.235577" elapsed="0.001401"/>
</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-19T03:46:15.231418" elapsed="10.005664"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:15.231207" elapsed="10.005929"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:15.231189" elapsed="10.005982"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:25.238232" level="INFO">${ip_address} = 10.30.171.206</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-19T03:46:25.237748" elapsed="0.000598"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:46:25.238403" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:46:25.238565" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:46:25.237415" elapsed="0.001175"/>
</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-19T03:46:25.238737" elapsed="0.000454"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:25.239486" level="INFO">index=148
host=10.30.171.206
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-19T03:46:25.239589" level="INFO">${karaf_connection_object} = index=148
host=10.30.171.206
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-19T03:46:25.239352" 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-19T03:46:25.239754" elapsed="0.002092"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:46:25.242282" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:46:35.308210" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:25.242002" elapsed="10.067072">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:35.312888" elapsed="0.000754"/>
</kw>
<kw name="Open 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-19T03:46:35.313904" elapsed="0.000521"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:35.314642" elapsed="0.000215"/>
</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-19T03:46:35.310553" elapsed="0.004408"/>
</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-19T03:46:35.309557" elapsed="0.005454"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:46:15.228002" elapsed="20.087121">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:35.315484" elapsed="0.000027"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.315588" elapsed="0.000022"/>
</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-19T03:45:55.212354" elapsed="40.103350">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:46:35.315817" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:46:35.315862" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:45:55.207787" elapsed="40.108098"/>
</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-19T03:46:35.316247" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.315968" elapsed="0.000334"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.315948" elapsed="0.000378"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:45:55.207660" elapsed="40.108696"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:45:54.932456" elapsed="40.383934"/>
</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-19T03:45:54.930231" elapsed="40.386217"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:45:54.924464" elapsed="40.392043"/>
</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-19T03:45:54.924007" elapsed="40.392544"/>
</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-19T03:45:43.261067" elapsed="52.055535"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.322779" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:46:35.322387" elapsed="0.000530"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.323411" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:46:35.323098" elapsed="0.000340"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:46:35.323485" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:46:35.323642" level="INFO">${index_list} = [1, 2, 3]</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-19T03:46:35.322074" elapsed="0.001594"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:46:35.323809" elapsed="0.000175"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.324484" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:46:35.324147" elapsed="0.000364"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.324897" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:46:35.324657" elapsed="0.000266"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.325312" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:46:35.325075" elapsed="0.000263"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.327663" 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-19T03:46:35.327362" elapsed="0.000329"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:46:35.327738" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:46:35.327886" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:46:35.327060" elapsed="0.000852"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.374573" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.374172" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.375380" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.375124" elapsed="0.000321">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:35.375540" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:35.374775" elapsed="0.000790"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.376151" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:46:35.375740" elapsed="0.000439"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.376498" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:46:35.376662" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:46:35.376351" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.377124" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.376855" elapsed="0.000316"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.378089" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.377815" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.378568" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.378298" elapsed="0.000296"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.378895" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.379150" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.379316" elapsed="0.000056"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:46:35.378774" elapsed="0.000637"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.378640" elapsed="0.000801"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:46:35.379485" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:46:35.379646" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:46:35.377548" elapsed="0.002124"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.377260" elapsed="0.002449"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.379869" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.379733" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.377240" elapsed="0.002706"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.380564" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.380116" elapsed="0.000477"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.380665" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:46:35.373307" elapsed="0.007588"/>
</kw>
<msg time="2026-04-19T03:46:35.380967" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:35.361283" elapsed="0.019768"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.425872" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.472885" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.518876" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.519648" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.519897" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.520671" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.520310" elapsed="0.000509"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:35.520268" elapsed="0.000627"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.521196" elapsed="0.000072"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.521535" elapsed="0.000070"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.521873" elapsed="0.000072"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:46:35.520238" elapsed="0.001806"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.520103" elapsed="0.002010"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.522255" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.522518" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:46:35.522641" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:46:35.356901" elapsed="0.165766"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.525261" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.524634" elapsed="0.000745">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:35.525507" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:35.523497" elapsed="0.002051"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.526336" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.525720" elapsed="0.000797"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.528153" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.527287" elapsed="0.000955"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.526544" elapsed="0.001829"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.525700" elapsed="0.002698"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.531420" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:46:35.528542" elapsed="0.002922"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:46:35.531627" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:46:35.531785" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:46:35.523180" elapsed="0.008630"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.534169" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.533616" elapsed="0.000669">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:35.534413" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:35.532486" elapsed="0.001968"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:46:35.534918" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:46:35.534626" elapsed="0.000640"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.534606" elapsed="0.000689"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.535433" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.535686" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.535857" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:46:35.537894" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:46:35.532172" elapsed="0.005749"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.540216" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.539546" elapsed="0.000821"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.541101" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.540604" elapsed="0.000642"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:35.568428" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:46:35.569232" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01jevp9vlc8dwanetjef9ghubw6.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:46:35 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:46:35.569554" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:46:35.543782" elapsed="0.025864"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.541392" elapsed="0.028397"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.570021" elapsed="0.000072"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.569819" elapsed="0.000417"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.541373" elapsed="0.028888"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.574827" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.572275" elapsed="0.003030"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.571647" elapsed="0.003706"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.571587" elapsed="0.003831"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.578441" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.576186" elapsed="0.002347"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.575579" elapsed="0.002999"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.575525" elapsed="0.003117"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.579956" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.579204" elapsed="0.000880"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.580989" elapsed="0.000099"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.580270" elapsed="0.000869"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.581939" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.581527" elapsed="0.000467"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.581202" elapsed="0.000875"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.580202" elapsed="0.001939"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.583415" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.582663" elapsed="0.000865"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.584328" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.583694" elapsed="0.000760"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.585269" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.584844" elapsed="0.000481"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.584518" elapsed="0.000853"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.583636" elapsed="0.001795"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:35.586466" elapsed="0.000680"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:46:35.588685" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.588093" elapsed="0.000705"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.589736" elapsed="0.002571"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:46:35.570736" elapsed="0.021678"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.592789" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:35.592597" elapsed="0.000314"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.592576" elapsed="0.000361"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:46:35.604945" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:46:35.593091" elapsed="0.011902"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:46:35.605175" elapsed="0.000035"/>
</return>
<msg time="2026-04-19T03:46:35.605347" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:46:35.538364" elapsed="0.067010"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.605438" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:46:35.605623" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:46:35.336907" elapsed="0.268746"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.605972" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.605738" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.605720" elapsed="0.000429"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.606184" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:46:35.333142" elapsed="0.273168"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.327978" elapsed="0.278375"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.327961" elapsed="0.278416"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:46:35.607009" elapsed="0.000041"/>
</return>
<status status="PASS" start="2026-04-19T03:46:35.606901" elapsed="0.000186"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.607149" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:35.607111" elapsed="0.000078"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.606883" elapsed="0.000328"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.607347" elapsed="0.000021"/>
</kw>
<msg time="2026-04-19T03:46:35.607505" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:46:35.606679" elapsed="0.000853"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.608137" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.607687" elapsed="0.000481"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.608781" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.608314" elapsed="0.000495"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.613820" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.613571" elapsed="0.000294"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.614285" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.614006" elapsed="0.000323"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:35.623616" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:46:35.623700" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:46:35 GMT', 'Expires': 'Sun, 19 Apr 2026 02:46:35 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"224.1 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570395,"status":200} 
 </msg>
<msg time="2026-04-19T03:46:35.623867" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:46:35.616224" elapsed="0.007681"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.614395" elapsed="0.009571"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.624235" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.624002" elapsed="0.000323"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.614377" elapsed="0.009980"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.629424" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"224.1 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570395,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.625899" elapsed="0.003804"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.625611" elapsed="0.004248"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.625585" elapsed="0.004315"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.633509" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.630311" elapsed="0.003402"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.629981" elapsed="0.003890"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.629958" elapsed="0.003953"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.634881" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.634142" elapsed="0.000779"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.635565" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.635019" elapsed="0.000782"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.636828" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.636072" elapsed="0.000816"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.635840" elapsed="0.001307"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.634994" elapsed="0.002191"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.638190" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.637392" elapsed="0.000836"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.638671" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.638332" elapsed="0.000560"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.639917" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.639156" elapsed="0.000821"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.638929" elapsed="0.001246"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.638307" elapsed="0.001904"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:35.640408" elapsed="0.001095"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:46:35.642596" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.641722" elapsed="0.000911"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.642832" elapsed="0.003150"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:46:35.625019" elapsed="0.021045"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.646504" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:35.646135" elapsed="0.000415"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.646116" elapsed="0.000456"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:46:35.649340" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570395,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:46:35.646703" elapsed="0.002667"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:46:35.649421" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:46:35.649578" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570395,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:46:35.609663" elapsed="0.039941"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.649659" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:46:35.649805" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570395,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:46:35.609012" elapsed="0.040819"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.650780" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570395, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.650332" elapsed="0.000476"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:46:35.650902" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:46:35.651170" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570395, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:46:35.650056" elapsed="0.001143"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:35.651558" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.651344" elapsed="0.000241"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:35.651926" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.651727" elapsed="0.000225"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:46:35.651999" elapsed="0.000045"/>
</return>
<msg time="2026-04-19T03:46:35.652170" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:46:35.326463" elapsed="0.325732"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:46:35.652252" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:46:35.652396" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:46:35.325777" elapsed="0.326643"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.652702" elapsed="0.000192"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.652498" elapsed="0.000433"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.653103" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.652956" elapsed="0.000202"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.653311" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.653181" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.652481" elapsed="0.000903"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:46:35.325598" elapsed="0.327811"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.655757" level="INFO">${session} = ClusterManagement__session_2</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-19T03:46:35.655446" elapsed="0.000338"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:46:35.655830" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:46:35.655976" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:46:35.655164" elapsed="0.000837"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.700887" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.700509" elapsed="0.000406"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.701667" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.701430" elapsed="0.000305">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:35.701829" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:35.701106" elapsed="0.000748"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.702442" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:46:35.702047" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.702784" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:46:35.702923" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:46:35.702640" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.703446" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.703190" elapsed="0.000302"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.704405" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.704149" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.704865" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.704598" elapsed="0.000294"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.705224" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.705418" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.705579" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:46:35.705102" elapsed="0.000534"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.704940" elapsed="0.000725"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:46:35.705709" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:46:35.705867" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:46:35.703871" elapsed="0.002021"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.703582" elapsed="0.002341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.706097" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.705948" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.703563" elapsed="0.002612"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.706769" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.706331" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.706869" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:46:35.699656" elapsed="0.007482"/>
</kw>
<msg time="2026-04-19T03:46:35.707209" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:35.687670" elapsed="0.019608"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.752824" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.799764" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.845408" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.845804" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.846264" elapsed="0.000024"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.847141" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.846723" elapsed="0.000556"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:35.846680" elapsed="0.000674"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.847639" elapsed="0.000074"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.847985" elapsed="0.000411"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.848670" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:46:35.846647" elapsed="0.002180"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.846508" elapsed="0.002386"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.849050" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.849278" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:46:35.849404" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:46:35.683370" elapsed="0.166061"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.852509" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.851891" elapsed="0.000739">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:35.852796" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:35.850183" elapsed="0.002655"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.853475" elapsed="0.000065"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.853010" elapsed="0.000667"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.855646" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.854463" elapsed="0.001271"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.853704" elapsed="0.002168"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.852990" elapsed="0.002907"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.858630" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:46:35.856053" elapsed="0.002620"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:46:35.858839" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:46:35.858997" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:46:35.849844" elapsed="0.009177"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:35.861505" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.860892" elapsed="0.000728">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:35.861755" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:35.859785" elapsed="0.002010"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:46:35.862483" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:46:35.861968" elapsed="0.000652"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.861948" elapsed="0.000699"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.862784" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.863052" elapsed="0.000024"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.863225" elapsed="0.000017"/>
</return>
<msg time="2026-04-19T03:46:35.865486" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:46:35.859476" elapsed="0.006037"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.867819" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.867338" elapsed="0.000626"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.868693" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.868201" elapsed="0.000638"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:35.898810" level="INFO">GET Request : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:46:35.900345" level="INFO">GET Response : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01f1partiqv7a31g2r7n8i85owk5.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:46:35 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:46:35.900999" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:46:35.871498" elapsed="0.029759"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.868983" elapsed="0.032598"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.902140" elapsed="0.000116"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.901649" elapsed="0.000925"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.868964" elapsed="0.033665"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.910233" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.906632" elapsed="0.004235"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.905780" elapsed="0.005154"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.905696" elapsed="0.005329"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.915317" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.912281" elapsed="0.003166"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.911271" elapsed="0.004240"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.911195" elapsed="0.004407"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.917562" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.916458" elapsed="0.001259"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.918592" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.917904" elapsed="0.000814"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.919534" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.919126" elapsed="0.000462"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.918786" elapsed="0.000850"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.917847" elapsed="0.001851"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.920975" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.920235" elapsed="0.000874"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.921883" elapsed="0.000076"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.921275" elapsed="0.000733"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.922865" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.922461" elapsed="0.000457"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.922138" elapsed="0.000827"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.921217" elapsed="0.001824"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:35.923985" elapsed="0.000686"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:46:35.926278" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.925625" elapsed="0.000764"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.927306" elapsed="0.002358"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:46:35.903704" elapsed="0.026067"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.930368" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:35.929956" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.929936" elapsed="0.000580"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:46:35.941887" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:46:35.930651" elapsed="0.011283"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:46:35.942117" elapsed="0.000036"/>
</return>
<msg time="2026-04-19T03:46:35.942286" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:46:35.865974" elapsed="0.076339"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.942378" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:46:35.942529" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:46:35.663707" elapsed="0.278849"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.942870" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.942639" elapsed="0.000340"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.942622" elapsed="0.000382"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.943053" elapsed="0.000028"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:46:35.659918" elapsed="0.283262"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.656087" elapsed="0.287137"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.656070" elapsed="0.287177"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:46:35.943794" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-19T03:46:35.943687" elapsed="0.000166"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.943914" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:35.943877" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.943670" elapsed="0.000307"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.944127" elapsed="0.000023"/>
</kw>
<msg time="2026-04-19T03:46:35.944248" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:46:35.943468" elapsed="0.000806"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.944812" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.944429" elapsed="0.000411"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.945481" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.944985" elapsed="0.000525"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.950441" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.950192" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.950873" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.950630" elapsed="0.000287"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:35.960417" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:46:35.960490" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:46:35 GMT', 'Expires': 'Sun, 19 Apr 2026 02:46:35 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"237.3 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570395,"status":200} 
 </msg>
<msg time="2026-04-19T03:46:35.960608" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:46:35.952921" elapsed="0.007713"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.950983" elapsed="0.009694"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.960885" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.960703" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.950965" elapsed="0.010038"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.965987" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"237.3 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570395,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.962518" elapsed="0.003810"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.962231" elapsed="0.004255"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.962205" elapsed="0.004321"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.969873" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:35.966909" elapsed="0.003342"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.966607" elapsed="0.003767"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.966583" elapsed="0.003820"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.971121" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.970555" elapsed="0.000593"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.971441" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.971219" elapsed="0.000376"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.972324" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.971770" elapsed="0.000612"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.971621" elapsed="0.000896"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.971201" elapsed="0.001341"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.973221" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.972689" elapsed="0.000559"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.973537" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.973319" elapsed="0.000371"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.974409" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:35.973863" elapsed="0.000588"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.973717" elapsed="0.000856"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.973301" elapsed="0.001296"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:35.974737" elapsed="0.000731"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:46:35.976384" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.975621" elapsed="0.000791"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.976556" elapsed="0.002610"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:46:35.961690" elapsed="0.017541"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:35.979408" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:35.979301" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.979283" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:46:35.982138" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570395,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:46:35.979605" elapsed="0.002638"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:46:35.982299" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:46:35.982460" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570395,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:46:35.946352" elapsed="0.036134"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:46:35.982542" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:46:35.982688" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570395,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:46:35.945711" elapsed="0.037003"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.983780" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570395, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:35.983338" elapsed="0.000470"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:46:35.983900" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:46:35.984092" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570395, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:46:35.982922" elapsed="0.001198"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:35.984476" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.984275" elapsed="0.000229"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:35.984843" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.984646" elapsed="0.000223"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:46:35.984916" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:46:35.985084" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:46:35.654553" elapsed="0.330556"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:46:35.985168" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:46:35.985316" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:46:35.653730" elapsed="0.331611"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:46:35.985622" elapsed="0.000190"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:35.985419" elapsed="0.000431"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.986006" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.985874" elapsed="0.000202"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:35.986231" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:35.986100" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:35.985403" elapsed="0.000899"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:46:35.653573" elapsed="0.332754"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:35.988553" level="INFO">${session} = ClusterManagement__session_3</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-19T03:46:35.988254" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:46:35.988626" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:46:35.988770" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:46:35.987947" elapsed="0.000848"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.033286" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:36.032889" elapsed="0.000425"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:36.034064" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:36.033813" elapsed="0.000320">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:36.034225" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:36.033488" elapsed="0.000761"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.034815" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:46:36.034425" elapsed="0.000417"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:46:36.035170" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:46:36.035307" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:46:36.035011" elapsed="0.000353"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.035795" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:36.035533" elapsed="0.000307"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.036756" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:36.036504" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.037240" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:46:36.036947" elapsed="0.000319"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.037574" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.037764" elapsed="0.000025"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.037925" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:46:36.037451" elapsed="0.000530"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:46:36.037315" elapsed="0.000694"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:46:36.038071" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:46:36.038229" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:46:36.036242" elapsed="0.002012"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:36.035930" elapsed="0.002355"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.038442" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:36.038309" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:36.035910" elapsed="0.002607"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.039122" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:46:36.038672" elapsed="0.000478"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:46:36.039220" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:46:36.032050" elapsed="0.007395"/>
</kw>
<msg time="2026-04-19T03:46:36.039516" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:36.020082" elapsed="0.019503"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.085389" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.130904" elapsed="0.000029"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.176527" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.176880" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.177143" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.177956" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:36.177588" elapsed="0.001138"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:36.177546" elapsed="0.001257"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.179109" elapsed="0.000073"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.179450" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.179787" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:46:36.177516" elapsed="0.002427"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:46:36.177374" elapsed="0.002635"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.180163" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:36.180390" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:46:36.180511" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:46:36.015871" elapsed="0.164665"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:36.183385" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:36.182797" elapsed="0.000703">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:36.183626" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:36.181262" elapsed="0.002405"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.184296" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:36.183837" elapsed="0.000640"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.186130" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:46:36.185238" elapsed="0.000979"/>
</kw>
<status status="PASS" start="2026-04-19T03:46:36.184504" elapsed="0.001854"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:36.183818" elapsed="0.002564"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.189209" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:46:36.186523" elapsed="0.002729"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:46:36.189413" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:46:36.189572" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:46:36.180933" elapsed="0.008663"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:46:36.192109" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:46:36.191536" elapsed="0.000689">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:46:36.192353" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:46:36.190434" elapsed="0.001960"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:46:36.192851" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:46:36.192564" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:36.192544" elapsed="0.000470"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.193165" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:36.193417" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:46:36.193587" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:46:36.197083" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:46:36.189936" elapsed="0.007175"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.199444" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:36.198946" elapsed="0.000643"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:36.200293" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:36.199809" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:41.207895" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:46:36.202861" elapsed="5.010349">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:46:36.200583" elapsed="5.013077">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.214378" elapsed="0.000119"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:41.213788" elapsed="0.001032"/>
</branch>
<status status="FAIL" start="2026-04-19T03:46:36.200564" elapsed="5.014317">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.216111" elapsed="0.000041"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.216488" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:41.216431" elapsed="0.000229"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:41.216401" elapsed="0.000293"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.216885" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.217192" elapsed="0.000025"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:46:36.197534" elapsed="5.019824">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.217469" elapsed="0.000024"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.996273" elapsed="5.221338">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.217985" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:41.217745" elapsed="0.000365"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:41.217721" elapsed="0.000421"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.218188" elapsed="0.000021"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.992558" elapsed="5.225772">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:46:35.988861" elapsed="5.229567">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:46:35.988844" elapsed="5.229635">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.218803" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.219093" elapsed="0.000032"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.219457" elapsed="0.000030"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.219762" elapsed="0.000035"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.220291" elapsed="0.000052"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.220632" elapsed="0.000041"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.220957" elapsed="0.000046"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.221243" elapsed="0.000037"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.987399" elapsed="5.234071">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.221621" elapsed="0.000033"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.986646" elapsed="5.235186">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.222339" elapsed="0.000044"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:41.222025" elapsed="0.000430"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.222779" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:41.222502" elapsed="0.000390"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.223274" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:41.222943" elapsed="0.000458"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:41.221988" elapsed="0.001464"/>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:46:35.986490" elapsed="5.237061">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:46:35.325388" elapsed="5.898291">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.223793" elapsed="0.000029"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.321399" elapsed="5.902592">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.224375" elapsed="0.000044"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.224833" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:41.224556" elapsed="0.000384"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:46:41.224520" elapsed="0.000467"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.225412" elapsed="0.000043"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.225749" elapsed="0.000043"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.225885" elapsed="0.000030"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:46:35.317288" elapsed="5.908821">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.226451" elapsed="0.000041"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.226793" elapsed="0.000045"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.227197" elapsed="0.000045"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.227551" elapsed="0.000043"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.228113" elapsed="0.000036"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.228356" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.228573" elapsed="0.000029"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.228980" elapsed="0.000029"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.229204" elapsed="0.000026"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:46:41.228754" elapsed="0.000519"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.228672" elapsed="0.000633"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.229490" elapsed="0.000026"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.229692" elapsed="0.000025"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:41.229917" elapsed="0.000029"/>
</kw>
<arg>shard_name=car</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:46:35.316882" elapsed="5.913216">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<doc>Initialize resources, memorize car shard leader and followers.</doc>
<status status="FAIL" start="2026-04-19T03:45:43.260769" elapsed="57.969453">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<test id="s1-s28-t1" name="Add_Original_Cars_On_Old_Leader_And_Verify" line="46">
<doc>Add initial cars on car Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.230318" elapsed="0.000882">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t2" name="Isolate_Original_Car_Leader" line="65">
<doc>Isolate the car Leader to cause a new leader to get elected.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.231756" elapsed="0.000655">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t3" name="Wait_For_New_Leader" line="69">
<doc>Wait until new car Leader is elected.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.232952" elapsed="0.000480">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t4" name="See_Original_Cars_On_New_Leader" line="85">
<doc>GET cars from new Leader, should be the initial ones.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.233613" elapsed="0.000756">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t5" name="See_Original_Cars_On_New_Followers" line="94">
<doc>The same check on other existing member(s).</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.234740" elapsed="0.000706">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t6" name="Delete_Original_Cars_On_New_Leader" line="105">
<doc>Delete cars on the new Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.235877" elapsed="0.000409">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t7" name="Add_Leader_Cars_On_New_Leader" line="109">
<doc>Add cars on the new Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.236465" elapsed="0.000726">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t8" name="See_Leader_Cars_On_New_Leader" line="117">
<doc>GET cars from new Leader, should be the new ones.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.237369" elapsed="0.000370">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t9" name="See_Leader_Cars_On_New_Followers" line="126">
<doc>The same check on other existing members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.237917" elapsed="0.000589">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t10" name="Delete_Leader_Cars_On_New_First_Follower" line="137">
<doc>Delete cars in new first Follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.239095" elapsed="0.000729">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t11" name="Add_Follower_Cars_On_New_First_Follower" line="141">
<doc>Add cars on the new first Follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.240460" elapsed="0.000852">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t12" name="See_Folower_Cars_On_New_Leader" line="149">
<doc>Get cars from the new Leader, should be the ones added on follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.241877" elapsed="0.000501">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t13" name="See_Follower_Cars_On_New_Followers" line="158">
<doc>The same check on other existing members.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.243388" elapsed="0.000709">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t14" name="Rejoin_Old_Car_Leader" line="169">
<doc>Rejoin the isolated member without deleting the persisted data.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.244284" elapsed="0.000414">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t15" name="See_Folower_Cars_On_Old_Leader" line="179">
<doc>GET cars from the restarted member, should be the ones added on follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.244875" elapsed="0.000432">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s28-t16" name="Delete_Follower_Cars_On_New_Leader" line="188">
<doc>Delete cars on the last Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:46:41.245486" elapsed="0.000387">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<doc>Suite mixing basic operations with isolation of car Leader.

Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


This test isolates the current leader of the "car" shard and then executes CRD
operations on the new leader and a new follower. The isolated member is brought back.
This suite uses 3 different car sets, same size but different starting ID.

Other models and shards (people, car-people) are not accessed by this suite.

All data is deleted at the end of the suite.
This suite expects car module to have a separate Shard.</doc>
<status status="FAIL" start="2026-04-19T03:45:43.195183" elapsed="58.051032">Suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</suite>
<suite id="s1-s29" name="Car Outage Corners" source="/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_outage_corners.robot">
<kw name="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-19T03:46:41.318867" 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-19T03:46:41.315147" elapsed="0.003781"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-19T03:46:41.314841" elapsed="0.004160"/>
</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-19T03:46:41.323353" 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-19T03:46:41.320083" elapsed="0.003298"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-19T03:46:41.323590" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:41.323466" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:41.323442" elapsed="0.000215"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.324164" 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-19T03:46:41.323799" elapsed="0.000409"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.324749" level="INFO">${cluster_size} = 3</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-19T03:46:41.324356" elapsed="0.000420"/>
</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-19T03:46:41.325286" elapsed="0.000282"/>
</kw>
<msg time="2026-04-19T03:46:41.325665" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:46:41.325712" level="INFO">${possibly_int_of_members} = 3</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-19T03:46:41.324930" elapsed="0.000806"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.326283" level="INFO">${int_of_members} = 3</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-19T03:46:41.325891" elapsed="0.000419"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.327298" 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-19T03:46:41.327014" elapsed="0.000312"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.327719" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:46:41.327462" elapsed="0.000284"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.328206" 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-19T03:46:41.327891" elapsed="0.000342"/>
</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-19T03:46:41.331077" elapsed="0.000217"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.331771" level="INFO">${member_ip} = 10.30.171.9</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-19T03:46:41.331444" elapsed="0.000354"/>
</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-19T03:46:41.331940" elapsed="0.000247"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.333015" 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-19T03:46:41.332716" elapsed="0.000342"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:46:41.333105" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:46:41.333267" 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-19T03:46:41.332372" elapsed="0.000921"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:41.334055" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.9:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7626210&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-19T03:46:41.333439" elapsed="0.000751"/>
</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-19T03:46:41.334344" elapsed="0.000213"/>
</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-19T03:46:41.330487" elapsed="0.004133"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:46:41.330309" elapsed="0.004357"/>
</iter>
<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-19T03:46:41.335502" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.336186" level="INFO">${member_ip} = 10.30.171.128</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-19T03:46:41.335837" elapsed="0.000376"/>
</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-19T03:46:41.336353" elapsed="0.000222"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.337381" level="INFO">${session} = ClusterManagement__session_2</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-19T03:46:41.337080" elapsed="0.000328"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:46:41.337455" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:46:41.337608" level="INFO">${session_alias} = ClusterManagement__session_2</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-19T03:46:41.336758" elapsed="0.000875"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:41.338195" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.128:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f6e52c90&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-19T03:46:41.337774" elapsed="0.000525"/>
</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-19T03:46:41.338462" elapsed="0.000220"/>
</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-19T03:46:41.334933" elapsed="0.003813"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:46:41.334758" elapsed="0.004033"/>
</iter>
<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-19T03:46:41.339616" elapsed="0.000192"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.340306" level="INFO">${member_ip} = 10.30.171.206</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-19T03:46:41.339958" elapsed="0.000375"/>
</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-19T03:46:41.340475" elapsed="0.000230"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.341497" level="INFO">${session} = ClusterManagement__session_3</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-19T03:46:41.341195" elapsed="0.000330"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:46:41.341570" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:46:41.341726" level="INFO">${session_alias} = ClusterManagement__session_3</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-19T03:46:41.340888" elapsed="0.000863"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:46:41.342324" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.206:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7826f7342dd0&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-19T03:46:41.341895" elapsed="0.000535"/>
</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-19T03:46:41.342632" 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-19T03:46:41.339066" elapsed="0.003827"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:46:41.338877" elapsed="0.004061"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-19T03:46:41.328292" elapsed="0.014676"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.343548" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</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-19T03:46:41.343138" elapsed="0.000455"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.344175" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.9', 2: '10.30.171.128', 3: '10.30.171.206'}</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-19T03:46:41.343747" elapsed="0.000473"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.344767" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</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-19T03:46:41.344372" elapsed="0.000439"/>
</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-19T03:46:41.326548" elapsed="0.018322"/>
</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-19T03:46:41.319737" elapsed="0.025192"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.345134" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:41.344999" elapsed="0.000181"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:41.344979" elapsed="0.000225"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.348308" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:46:41.347900" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.348804" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:46:41.348484" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:46:41.348876" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:46:41.349049" level="INFO">${index_list} = [1, 2, 3]</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-19T03:46:41.347581" elapsed="0.001495"/>
</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-19T03:46:41.350065" level="INFO">${member_ip} = 10.30.171.9</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-19T03:46:41.349776" elapsed="0.000318"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:41.350870" 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-19T03:46:41.350973" 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-19T03:46:41.350696" elapsed="0.000304"/>
</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-19T03:46:41.354512" elapsed="0.000042"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:41.353858" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:41.353839" elapsed="0.000810"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:41.355371" 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-19T03:46:41.355636" 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-19T03:46:41.354850" elapsed="0.000845"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.356719" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.9" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:41.355978" elapsed="0.000862"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:41.358211" level="INFO">${conn_id} = 150</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:46:41.357185" elapsed="0.001083"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.360207" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:46:41.360408" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:46:41.359795" elapsed="0.000663"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:41.360829" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:46:41.362804" level="INFO">Logging into '10.30.171.9:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:46:41.962509" 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 Sun Apr 19 03:46:41 UTC 2026

  System load:  0.08               Processes:             121
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.9
  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: Sun Apr 19 03:45:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-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-19T03:46:41.362468" elapsed="0.600208"/>
</kw>
<msg time="2026-04-19T03:46:41.962767" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:41.361720" elapsed="0.601236"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:46:41.358769" elapsed="0.604384"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:46:41.964165" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:46:41.977150" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:46:41.977559" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:46:41.977809" 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-19T03:46:41.963560" elapsed="0.014366"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:41.978705" elapsed="0.001403"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.982733" 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-19T03:46:41.981381" 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-19T03:46:41.984001" elapsed="0.000105"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:41.983415" elapsed="0.000815"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:41.983360" elapsed="0.000929"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:46:41.984909" elapsed="0.000110"/>
</return>
<status status="PASS" start="2026-04-19T03:46:41.984414" elapsed="0.000758"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:41.984389" elapsed="0.000846"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:46:41.985327" elapsed="0.000025"/>
</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-19T03:46:41.990230" elapsed="0.000861"/>
</kw>
<kw name="Open 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-19T03:46:41.991540" elapsed="0.000466"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:41.992429" elapsed="0.000362"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:41.986121" elapsed="0.006778"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:46:41.352798" elapsed="0.640409"/>
</kw>
<msg time="2026-04-19T03:46:41.993293" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:41.352151" elapsed="0.641232"/>
</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-19T03:46:41.351658" elapsed="0.641844"/>
</kw>
<msg time="2026-04-19T03:46:41.993651" 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-19T03:46:41.351166" elapsed="0.642556"/>
</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-19T03:46:41.997258" 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-19T03:46:41.997802" elapsed="0.000174"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:41.998180" elapsed="0.000104"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:41.994366" elapsed="0.003973"/>
</kw>
<msg time="2026-04-19T03:46:41.998437" 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-19T03:46:41.350304" elapsed="0.648160"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:41.999072" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:41.998657" elapsed="0.000459"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:46:41.999166" elapsed="0.000039"/>
</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-19T03:46:41.349429" elapsed="0.649880"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:46:41.349260" elapsed="0.650089"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:42.000314" level="INFO">${member_ip} = 10.30.171.128</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-19T03:46:42.000023" elapsed="0.000319"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.001060" 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-19T03:46:42.001163" 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-19T03:46:42.000896" elapsed="0.000294"/>
</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-19T03:46:42.005289" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:42.004630" elapsed="0.000753"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:42.004604" elapsed="0.000821"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.006158" 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-19T03:46:42.006417" 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-19T03:46:42.005627" elapsed="0.000846"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:42.007523" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.128" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:42.006750" elapsed="0.000894"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.008930" 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-19T03:46:42.007922" elapsed="0.001063"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:46:42.010892" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:46:42.011109" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:46:42.010510" elapsed="0.000648"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:42.011549" elapsed="0.000521"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.013405" level="INFO">Logging into '10.30.171.128:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:46:42.605981" 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 Sun Apr 19 03:46:42 UTC 2026

  System load:  0.03               Processes:             122
  Usage of /:   11.2% of 77.35GB   Users logged in:       0
  Memory usage: 9%                 IPv4 address for ens3: 10.30.171.128
  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: Sun Apr 19 03:45:43 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-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-19T03:46:42.012950" elapsed="0.593332"/>
</kw>
<msg time="2026-04-19T03:46:42.606377" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:42.012448" elapsed="0.594118"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:46:42.009502" elapsed="0.597233"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.607807" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:46:42.620579" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:46:42.620785" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:46:42.620902" 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-19T03:46:42.607202" elapsed="0.013774"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:42.621741" elapsed="0.001286"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:42.625811" 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-19T03:46:42.624376" elapsed="0.001755"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:46:42.627300" elapsed="0.000128"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:42.626546" elapsed="0.001072"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:42.626487" elapsed="0.001219"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:46:42.628478" elapsed="0.000149"/>
</return>
<status status="PASS" start="2026-04-19T03:46:42.627901" elapsed="0.000964"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:42.627863" elapsed="0.001093"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:46:42.629072" elapsed="0.000017"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:42.632612" elapsed="0.000545"/>
</kw>
<kw name="Open 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-19T03:46:42.633445" elapsed="0.000322"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:42.634069" elapsed="0.000249"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:42.629590" elapsed="0.004799"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:46:42.003559" elapsed="0.631021"/>
</kw>
<msg time="2026-04-19T03:46:42.634637" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:42.002768" elapsed="0.631923"/>
</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-19T03:46:42.002280" elapsed="0.632491"/>
</kw>
<msg time="2026-04-19T03:46:42.634812" 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-19T03:46:42.001336" elapsed="0.633522"/>
</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-19T03:46:42.637359" 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-19T03:46:42.637822" elapsed="0.000145"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:42.638132" elapsed="0.000098"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:42.635184" elapsed="0.003097"/>
</kw>
<msg time="2026-04-19T03:46:42.638374" 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-19T03:46:42.000545" elapsed="0.637854"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:42.638814" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:42.638567" elapsed="0.000289"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:46:42.638899" 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-19T03:46:41.999658" elapsed="0.639365"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:46:41.999473" elapsed="0.639730"/>
</iter>
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:42.640145" level="INFO">${member_ip} = 10.30.171.206</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-19T03:46:42.639851" elapsed="0.000321"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.640912" 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-19T03:46:42.641013" 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-19T03:46:42.640765" elapsed="0.000289"/>
</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-19T03:46:42.644464" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:42.643848" elapsed="0.000705"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:42.643829" elapsed="0.000777"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.645317" 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-19T03:46:42.645572" 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-19T03:46:42.644807" elapsed="0.000820"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:42.646618" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.206" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:42.645899" elapsed="0.000835"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.648027" level="INFO">${conn_id} = 156</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:46:42.647009" elapsed="0.001104"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-19T03:46:42.649956" level="INFO">Length is 0.</msg>
<msg time="2026-04-19T03:46:42.650169" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-19T03:46:42.649567" elapsed="0.000651"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:42.650575" elapsed="0.000679"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-19T03:46:42.652643" level="INFO">Logging into '10.30.171.206:22' as 'jenkins'.</msg>
<msg time="2026-04-19T03:46:43.292244" 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 Sun Apr 19 03:46:42 UTC 2026

  System load:  0.01               Processes:             122
  Usage of /:   11.0% of 77.35GB   Users logged in:       0
  Memory usage: 10%                IPv4 address for ens3: 10.30.171.206
  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: Sun Apr 19 03:45:44 2026 from 10.30.171.167
[?2004h[jenkins@releng-36847-6-0-builder-2 ~]&gt;</msg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Logs into the SSH server using key-based authentication.</doc>
<status status="PASS" start="2026-04-19T03:46:42.652279" elapsed="0.640123"/>
</kw>
<msg time="2026-04-19T03:46:43.292490" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:42.651628" elapsed="0.641042"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-19T03:46:42.648581" elapsed="0.644251"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.293778" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-19T03:46:43.307127" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-19T03:46:43.307683" level="INFO">${stdout} = </msg>
<msg time="2026-04-19T03:46:43.308112" 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-19T03:46:43.293247" elapsed="0.015016"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:43.309026" elapsed="0.001491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.313404" 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-19T03:46:43.311951" elapsed="0.001936"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:46:43.314974" elapsed="0.000163"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:43.314359" elapsed="0.000901"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.314302" elapsed="0.001015"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-19T03:46:43.315861" elapsed="0.000103"/>
</return>
<status status="PASS" start="2026-04-19T03:46:43.315454" elapsed="0.000656"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.315429" elapsed="0.000742"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-19T03:46:43.316262" elapsed="0.000024"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:43.321354" elapsed="0.000731"/>
</kw>
<kw name="Open 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-19T03:46:43.322500" elapsed="0.000442"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:43.323353" elapsed="0.000358"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:43.316981" elapsed="0.006832"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-19T03:46:42.642796" elapsed="0.681423"/>
</kw>
<msg time="2026-04-19T03:46:43.324301" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:42.642186" elapsed="0.682191"/>
</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-19T03:46:42.641686" elapsed="0.682803"/>
</kw>
<msg time="2026-04-19T03:46:43.324546" 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-19T03:46:42.641200" elapsed="0.683411"/>
</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-19T03:46:43.327490" 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-19T03:46:43.327953" elapsed="0.000162"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:43.328250" elapsed="0.000095"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:43.325020" elapsed="0.003375"/>
</kw>
<msg time="2026-04-19T03:46:43.328484" 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-19T03:46:42.640378" elapsed="0.688131"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.328954" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:43.328697" elapsed="0.000298"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-19T03:46:43.329161" 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-19T03:46:42.639498" elapsed="0.689792"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:46:42.639316" elapsed="0.690012"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:46:41.349129" elapsed="1.980233"/>
</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-19T03:46:41.345415" elapsed="1.984006"/>
</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-19T03:46:43.329568" elapsed="0.000233"/>
</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-19T03:46:43.342230" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:43.342115" elapsed="0.000162"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.342046" elapsed="0.000253"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.342629" 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-19T03:46:43.342733" 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-19T03:46:43.342490" elapsed="0.000271"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.343198" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:43.342912" elapsed="0.000330"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.343681" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:43.343435" elapsed="0.000289"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:43.344461" 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-19T03:46:43.344234" elapsed="0.000339">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-19T03:46:43.344677" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:46:43.344722" 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-19T03:46:43.343869" elapsed="0.000876"/>
</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-19T03:46:43.345050" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:43.344820" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.344802" elapsed="0.000489"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:43.346024" level="INFO">${ip_address} = 10.30.171.9</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-19T03:46:43.345749" elapsed="0.000315"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:46:43.346112" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:46:43.346260" level="INFO">${odl_ip} = 10.30.171.9</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:46:43.345480" 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-19T03:46:43.346424" elapsed="0.000398"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.347109" level="INFO">index=159
host=10.30.171.9
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-19T03:46:43.347210" level="INFO">${karaf_connection_object} = index=159
host=10.30.171.9
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-19T03:46:43.346975" elapsed="0.000356"/>
</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-19T03:46:43.347468" elapsed="0.001925"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.349827" level="INFO">Logging into '10.30.171.9:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:46:43.506218" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:46:43.349544" elapsed="0.156821"/>
</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-19T03:46:43.509854" elapsed="0.000382"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:46:43.510390" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:43.510688" 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-19T03:46:43.507448" elapsed="0.003392"/>
</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-19T03:46:43.506762" elapsed="0.004124"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:46:43.341768" elapsed="0.169170"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:46:43.330527" elapsed="0.180461"/>
</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-19T03:46:43.330166" elapsed="0.180898"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:46:43.330012" elapsed="0.181158"/>
</iter>
<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-19T03:46:43.523428" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:43.523311" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.523287" elapsed="0.000216"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.523780" 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-19T03:46:43.523886" 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-19T03:46:43.523645" elapsed="0.000268"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.524332" level="INFO">{1: 159}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:43.524069" elapsed="0.000307"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.525292" level="INFO">2</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:43.525008" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:43.526079" level="FAIL">Dictionary does not contain key '2'.</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-19T03:46:43.525829" elapsed="0.000358">Dictionary does not contain key '2'.</status>
</kw>
<msg time="2026-04-19T03:46:43.526293" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:46:43.526338" level="INFO">${old_connection_index} = Dictionary does not contain key '2'.</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-19T03:46:43.525484" elapsed="0.000877"/>
</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-19T03:46:43.526644" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:43.526435" elapsed="0.000282"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.526417" elapsed="0.000323"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:43.527466" level="INFO">${ip_address} = 10.30.171.128</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-19T03:46:43.527203" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:46:43.527540" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:46:43.527691" level="INFO">${odl_ip} = 10.30.171.128</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:46:43.526927" elapsed="0.000788"/>
</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-19T03:46:43.527855" elapsed="0.000414"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.528544" level="INFO">index=161
host=10.30.171.128
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-19T03:46:43.528642" level="INFO">${karaf_connection_object} = index=161
host=10.30.171.128
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-19T03:46:43.528425" 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-19T03:46:43.528802" elapsed="0.001933"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.531182" level="INFO">Logging into '10.30.171.128:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:46:43.731976" level="INFO">Read output: [33m                                                                                           
[33m    ________                       ________                .__  .__       .__     __       
[33m    \_____  \ ______   ____   ____ \______ \ _____  ___.__.|  | |__| ____ |  |___/  |_     
[33m     /   |   \\____ \_/ __ \ /    \ |    |  \\__  \&lt;   |  ||  | |  |/ ___\|  |  \   __\    
[33m    /    |    \  |_&gt; &gt;  ___/|   |  \|    `   \/ __ \\___  ||  |_|  / /_/  &gt;   Y  \  |      
[33m    \_______  /   __/ \___  &gt;___|  /_______  (____  / ____||____/__\___  /|___|  /__|      
[33m            \/|__|        \/     \/        \/     \/\/            /_____/      \/          
[33m                                                                                           

Hit '[1m&lt;tab&gt;[0m' for a list of available commands
and '[1m[cmd] --help[0m' for help on a specific command.
Hit '[1m&lt;ctrl-d&gt;[0m' or type '[1msystem:shutdown[0m' or '[1mlogout[0m' to shutdown OpenDaylight.

[?1h=[90m~[0m                                                                                [?2004hopendaylight-user</msg>
<arg>${KARAF_USER}</arg>
<arg>${KARAF_PASSWORD}</arg>
<arg>loglevel=${loglevel}</arg>
<doc>Logs into the SSH server with the given ``username`` and ``password``.</doc>
<status status="PASS" start="2026-04-19T03:46:43.530903" elapsed="0.201329"/>
</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-19T03:46:43.738829" elapsed="0.000820"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:46:43.740146" elapsed="0.000410"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:43.740863" elapsed="0.000178"/>
</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-19T03:46:43.734310" elapsed="0.006788"/>
</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-19T03:46:43.732933" elapsed="0.008212"/>
</kw>
<arg>member_index=${index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for ${member_index},
close the previous connection. In any case create a new connection
to karaf console for ${member_index}, set correct prompt set and login to karaf console.
Store connection index for ${member_index} and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-19T03:46:43.523008" elapsed="0.218189"/>
</kw>
<arg>3s</arg>
<arg>1s</arg>
<arg>Open_Controller_Karaf_Console_On_Background</arg>
<arg>member_index=${index}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="PASS" start="2026-04-19T03:46:43.511765" elapsed="0.229482"/>
</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-19T03:46:43.511405" elapsed="0.229895"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:46:43.511274" elapsed="0.230068"/>
</iter>
<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-19T03:46:43.753389" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:43.753270" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.753246" elapsed="0.000220"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.753747" 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-19T03:46:43.753861" 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-19T03:46:43.753610" elapsed="0.000284"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.754369" level="INFO">{1: 159, 2: 161}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:43.754079" elapsed="0.000337"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:43.754807" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:43.754560" elapsed="0.000291"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:43.755606" level="FAIL">Dictionary does not contain key '3'.</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-19T03:46:43.755368" elapsed="0.000349">Dictionary does not contain key '3'.</status>
</kw>
<msg time="2026-04-19T03:46:43.755826" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:46:43.755873" level="INFO">${old_connection_index} = Dictionary does not contain key '3'.</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-19T03:46:43.755002" elapsed="0.000895"/>
</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-19T03:46:43.756267" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:43.755975" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:43.755954" elapsed="0.000423"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:43.757121" level="INFO">${ip_address} = 10.30.171.206</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-19T03:46:43.756835" elapsed="0.000312"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:46:43.757196" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:46:43.757351" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:46:43.756571" elapsed="0.000805"/>
</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-19T03:46:43.757519" elapsed="0.000402"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.758216" level="INFO">index=163
host=10.30.171.206
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-19T03:46:43.758316" level="INFO">${karaf_connection_object} = index=163
host=10.30.171.206
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-19T03:46:43.758094" 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-19T03:46:43.758476" elapsed="0.001963"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:46:43.760891" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:46:53.825819" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:43.760593" elapsed="10.066117">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:53.830071" elapsed="0.000394"/>
</kw>
<kw name="Open 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-19T03:46:53.830621" elapsed="0.000181"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:53.830940" elapsed="0.000126"/>
</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-19T03:46:53.827930" elapsed="0.003192"/>
</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-19T03:46:53.827232" elapsed="0.003936"/>
</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-19T03:46:43.752963" elapsed="10.078293">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:46:53.831350" level="FAIL">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:43.741931" elapsed="10.089512">Keyword 'Open_Controller_Karaf_Console_On_Background' failed after retrying for 3 seconds. The last error was: No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:43.741573" elapsed="10.089936"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:46:43.741444" elapsed="10.090112"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-19T03:46:43.329859" elapsed="10.501735"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-19T03:46:41.319309" elapsed="12.512348"/>
</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-19T03:46:53.834148" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:53.834016" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.833993" elapsed="0.000228"/>
</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-19T03:46:53.838615" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:53.838507" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.838489" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:46:53.839634" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:46:53.839240" elapsed="0.000420"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:46:53.840132" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:46:53.839807" elapsed="0.000352"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:46:53.840205" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:46:53.840362" level="INFO">${index_list} = [1, 2, 3]</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-19T03:46:53.838896" elapsed="0.001491"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:46:53.845812" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:53.845703" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.845684" 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-19T03:46:53.847083" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:53.846925" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.846907" elapsed="0.000245"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:53.847733" level="INFO">${karaf_connection_index} = 159</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-19T03:46:53.847283" elapsed="0.000478"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:53.848165" 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-19T03:46:53.847909" elapsed="0.000283"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:46:53.886873" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:46:53.849109" elapsed="0.037911"/>
</kw>
<msg time="2026-04-19T03:46:53.887197" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:46:53.887243" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.848430" elapsed="0.038850"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:46:53.936499" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "o "u "t "a "g "e "_ "c "o "r "n "e "r "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:46:53.887922" elapsed="0.048732"/>
</kw>
<msg time="2026-04-19T03:46:53.936812" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:46:53.936862" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.887440" elapsed="0.049458"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:53.937234" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:53.936977" elapsed="0.000420"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.936957" elapsed="0.000467"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:53.937910" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "o "u "t "a "g "e "_ "c "o "r "n "e "r "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:53.937556" elapsed="0.000444"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:53.938349" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:53.938115" elapsed="0.000377"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.938097" elapsed="0.000421"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:46:53.938553" elapsed="0.000031"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:53.940511" elapsed="0.000447"/>
</kw>
<kw name="Open 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-19T03:46:53.941300" elapsed="0.000475"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:53.942290" elapsed="0.000303"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:46:53.939761" elapsed="0.002922"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-19T03:46:53.938811" elapsed="0.004003"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:46:53.846639" elapsed="0.096278"/>
</kw>
<msg time="2026-04-19T03:46:53.943008" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:46:53.943069" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.846021" elapsed="0.097086"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:46:53.943299" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:46:53.943190" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.943169" elapsed="0.000213"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:53.943770" elapsed="0.000025"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:53.944109" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:46:53.944181" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:46:53.845377" elapsed="0.098911"/>
</kw>
<msg time="2026-04-19T03:46:53.944431" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:46:53.944476" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.840746" elapsed="0.103766"/>
</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-19T03:46:53.944828" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:53.944588" elapsed="0.000294"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.944570" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:46:53.840616" elapsed="0.104314"/>
</iter>
<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-19T03:46:53.950491" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:53.950383" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.950365" elapsed="0.000225"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:46:53.951752" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:53.951623" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:53.951605" elapsed="0.000216"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:53.952288" level="INFO">${karaf_connection_index} = 161</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-19T03:46:53.951951" elapsed="0.000364"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:53.952689" 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-19T03:46:53.952462" elapsed="0.000253"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:46:53.993190" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "r "k "s "p "a "c "e "/ "c "o "n "[78Ct "[A[78Cr</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-19T03:46:53.953578" elapsed="0.039767"/>
</kw>
<msg time="2026-04-19T03:46:53.993473" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-19T03:46:53.993520" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "s "u "i "t "e "[C "/ "w "/ "w "o "...</msg>
<var>${status_write}</var>
<var>${message_write}</var>
<arg>SSHLibrary.Write</arg>
<arg>${command}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.952863" elapsed="0.040694"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:46:54.041305" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "o "u "t "a "g "e "_ "c "o "r "n "e "r "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-19T03:46:53.994215" elapsed="0.047249"/>
</kw>
<msg time="2026-04-19T03:46:54.041591" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-19T03:46:54.041636" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.993716" elapsed="0.047956"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:54.041978" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:54.041749" elapsed="0.000392"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:54.041729" elapsed="0.000438"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:46:54.042646" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t "/ "c "s "i "t "/ "s "u "i "t "e "s "/ "c "o "n "t "r "o "l "l "e "r "/ "C "l "u "s "t "[78Ce "[A[78Cr
 "i "n "g "_ "D "a "t "a "s "t "o "r "e "/ "c "a "r "_ "o "u "t "a "g "e "_ "c "o "r "n "e "r "s ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:46:54.042301" elapsed="0.000433"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:54.043215" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:54.042799" elapsed="0.000564"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:54.042782" elapsed="0.000606"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-19T03:46:54.043423" elapsed="0.000029"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:46:54.045485" elapsed="0.000447"/>
</kw>
<kw name="Open 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-19T03:46:54.046277" elapsed="0.000285"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:46:54.047085" 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-19T03:46:54.044528" elapsed="0.002892"/>
</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-19T03:46:54.043668" elapsed="0.003885"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-19T03:46:53.951338" elapsed="0.096319"/>
</kw>
<msg time="2026-04-19T03:46:54.047749" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:46:54.047793" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.950733" elapsed="0.097137"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-19T03:46:54.048078" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:46:54.047950" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:54.047932" elapsed="0.000232"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 2,
close the previous connection. In any case create a new connection
to karaf console for 2, set correct prompt set and login to karaf console.
Store connection index for 2 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:54.048542" elapsed="0.000026"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="NOT RUN" start="2026-04-19T03:46:54.048863" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:46:54.048935" elapsed="0.000015"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-19T03:46:53.949979" elapsed="0.099330"/>
</kw>
<msg time="2026-04-19T03:46:54.049411" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:46:54.049455" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "3 "n "o "d "e "- "c "l "u "s "t "e "r "i "n "g "- "a "s "k "- "a "l "l "- "c "h "r "o ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-19T03:46:53.945198" elapsed="0.104293"/>
</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-19T03:46:54.049806" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:46:54.049567" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:54.049549" elapsed="0.000334"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:46:53.945068" elapsed="0.104838"/>
</iter>
<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-19T03:46:54.055262" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:54.055151" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:54.055131" elapsed="0.000198"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-19T03:46:54.056483" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:46:54.056355" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-19T03:46:54.056337" elapsed="0.000214"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:46:54.056994" level="INFO">${karaf_connection_index} = 163</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-19T03:46:54.056682" elapsed="0.000339"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:46:54.057439" 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-19T03:46:54.057206" elapsed="0.000259"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:47:04.059348" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:46:54.058134" elapsed="10.002207">No match found for '
' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:47:04.060575" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-19T03:47:04.060625" level="INFO">${message_write} = No match found for '
' in 10 seconds
Output:
.</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-19T03:46:54.057613" elapsed="10.003036"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-19T03:47:14.062213" level="FAIL">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:47:04.061547" elapsed="10.001915">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:47:14.063676" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-19T03:47:14.063727" level="INFO">${message_wait} = No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</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-19T03:47:04.060927" elapsed="10.002826"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-19T03:47:14.065122" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_outage_corners.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-19T03:47:14.064315" elapsed="0.000892">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_outage_corners.robot"</status>
</kw>
<status status="FAIL" start="2026-04-19T03:47:14.063873" elapsed="0.001473">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_outage_corners.robot"</status>
</branch>
<status status="FAIL" start="2026-04-19T03:47:14.063843" elapsed="0.001541">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_outage_corners.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-19T03:47:14.065542" 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-19T03:47:14.065763" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:14.065631" elapsed="0.000276"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:14.065614" elapsed="0.000320"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-19T03:47:14.065972" 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-19T03:47:14.068075" elapsed="0.000458"/>
</kw>
<kw name="Open 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-19T03:47:14.068863" elapsed="0.000417"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:47:14.069595" elapsed="0.000244"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-19T03:47:14.067300" elapsed="0.002631"/>
</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-19T03:47:14.066358" elapsed="0.003723"/>
</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-19T03:46:54.056070" elapsed="20.014101">Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_outage_corners.robot"</status>
</kw>
<msg time="2026-04-19T03:47:14.070277" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:47:14.070323" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting suite /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/suites/controller/Clustering_Datastore/car_outage_corners.ro...</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-19T03:46:54.055469" elapsed="20.014879"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:47:14.070572" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:14.070427" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:14.070408" elapsed="0.000233"/>
</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-19T03:47:14.071411" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:14.071303" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:14.071284" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:47:14.071763" 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-19T03:47:14.071872" 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-19T03:47:14.071621" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:14.072331" level="INFO">{1: 159, 2: 161, 3: 163}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:14.072058" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:14.072762" level="INFO">3</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:14.072517" elapsed="0.000289"/>
</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-19T03:47:14.073398" elapsed="0.000286"/>
</kw>
<msg time="2026-04-19T03:47:14.073782" level="INFO">${status} = PASS</msg>
<msg time="2026-04-19T03:47:14.073828" level="INFO">${old_connection_index} = 163</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-19T03:47:14.072952" elapsed="0.000899"/>
</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-19T03:47:14.074952" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-19T03:47:24.077004" level="FAIL">No match found for '
' in 10 seconds
Output:
.</msg>
<arg>logout</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="FAIL" start="2026-04-19T03:47:14.076218" elapsed="10.001519">No match found for '
' in 10 seconds
Output:
.</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-19T03:47:14.075449" elapsed="10.002510"/>
</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-19T03:47:24.079323" elapsed="0.000350"/>
</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-19T03:47:24.078372" elapsed="0.001380"/>
</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-19T03:47:14.074160" elapsed="10.005681"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:14.073926" elapsed="10.005970"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:14.073907" elapsed="10.006026"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:47:24.081017" level="INFO">${ip_address} = 10.30.171.206</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-19T03:47:24.080537" elapsed="0.000531"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-19T03:47:24.081124" elapsed="0.000038"/>
</return>
<msg time="2026-04-19T03:47:24.081293" level="INFO">${odl_ip} = 10.30.171.206</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-19T03:47:24.080200" elapsed="0.001118"/>
</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-19T03:47:24.081468" elapsed="0.000451"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-19T03:47:24.082471" level="INFO">index=168
host=10.30.171.206
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-19T03:47:24.082588" level="INFO">${karaf_connection_object} = index=168
host=10.30.171.206
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-19T03:47:24.082104" elapsed="0.000514"/>
</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-19T03:47:24.082765" elapsed="0.002208"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-19T03:47:24.085470" level="INFO">Logging into '10.30.171.206:8101' as 'karaf'.</msg>
<msg time="2026-04-19T03:47:34.150813" level="FAIL">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:47:24.085203" elapsed="10.066492">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:47:34.155281" elapsed="0.000722"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.156285" elapsed="0.000521"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-19T03:47:34.157020" elapsed="0.000214"/>
</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-19T03:47:34.152937" elapsed="0.004386"/>
</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-19T03:47:34.152213" elapsed="0.005157"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 3,
close the previous connection. In any case create a new connection
to karaf console for 3, set correct prompt set and login to karaf console.
Store connection index for 3 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-19T03:47:14.071037" elapsed="20.086420">No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:47:34.157815" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.157892" elapsed="0.000020"/>
</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-19T03:46:54.054762" elapsed="40.103241">No match found for 'opendaylight-user' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-19T03:47:34.158144" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-19T03:47:34.158189" level="INFO">${output} = No match found for 'opendaylight-user' in 10 seconds
Output:
.</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-19T03:46:54.050172" elapsed="40.108040"/>
</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-19T03:47:34.158551" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.158298" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.158278" elapsed="0.000352"/>
</if>
<var name="${index}">3</var>
<status status="PASS" start="2026-04-19T03:46:54.050040" elapsed="40.108620"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-19T03:46:53.840442" elapsed="40.318338"/>
</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-19T03:46:53.838215" elapsed="40.320632"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-19T03:46:53.832258" elapsed="40.326649"/>
</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-19T03:46:53.831803" elapsed="40.327148"/>
</kw>
<arg>http_timeout=5</arg>
<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-19T03:46:41.314520" elapsed="52.844486"/>
</kw>
<kw name="Set_Variables_For_Shard" owner="CarPeople">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.165108" level="INFO">${return_list_reference} = [1, 2, 3]</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-19T03:47:34.164707" elapsed="0.000429"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.165587" level="INFO">${return_list_copy} = [1, 2, 3]</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-19T03:47:34.165282" elapsed="0.000331"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-19T03:47:34.165658" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:47:34.165819" level="INFO">${index_list} = [1, 2, 3]</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-19T03:47:34.164379" elapsed="0.001464"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-19T03:47:34.165983" elapsed="0.000301"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.166765" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:47:34.166432" elapsed="0.000360"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.167191" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:47:34.166935" elapsed="0.000282"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.167585" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-19T03:47:34.167351" elapsed="0.000259"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.169899" 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-19T03:47:34.169604" elapsed="0.000321"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:47:34.169971" elapsed="0.000029"/>
</return>
<msg time="2026-04-19T03:47:34.170138" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:47:34.169321" elapsed="0.000843"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.214923" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.214540" elapsed="0.000411"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.215739" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.215465" elapsed="0.000342">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:34.215899" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:34.215143" elapsed="0.000781"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.216505" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:47:34.216113" elapsed="0.000419"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.216887" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:47:34.217172" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:47:34.216735" elapsed="0.000464"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.217680" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.217424" elapsed="0.000301"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.218659" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.218403" elapsed="0.000301"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.219136" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.218851" elapsed="0.000311"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.219463" elapsed="0.000021"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.219654" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.219812" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:47:34.219343" elapsed="0.000525"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.219210" elapsed="0.000687"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:47:34.219940" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:47:34.220112" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:47:34.218134" elapsed="0.002003"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.217814" elapsed="0.002354"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.220325" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.220193" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.217795" elapsed="0.002604"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.221015" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.220566" elapsed="0.000491"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.221130" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:47:34.213674" elapsed="0.007684"/>
</kw>
<msg time="2026-04-19T03:47:34.221427" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:47:34.201321" elapsed="0.020173"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.267878" elapsed="0.000039"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.313605" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.359778" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.360152" elapsed="0.000024"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.360534" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.361465" elapsed="0.000115"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.360989" elapsed="0.000670"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:34.360946" elapsed="0.000790"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.362021" elapsed="0.000090"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.362378" elapsed="0.000071"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.362716" elapsed="0.000071"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:47:34.360911" elapsed="0.001962"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.360737" elapsed="0.002203"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.363099" elapsed="0.000029"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.363336" elapsed="0.000019"/>
</return>
<msg time="2026-04-19T03:47:34.363474" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:47:34.197052" elapsed="0.166448"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.366324" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.365741" elapsed="0.000705">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:34.366574" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:34.364245" elapsed="0.002369"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.367256" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.366785" elapsed="0.000652"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.369168" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.368229" elapsed="0.001029"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.367463" elapsed="0.001926"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.366765" elapsed="0.002649"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.372185" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:47:34.369556" elapsed="0.002672"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:47:34.372390" elapsed="0.000033"/>
</return>
<msg time="2026-04-19T03:47:34.372551" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:47:34.363903" elapsed="0.008673"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.375454" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.374848" elapsed="0.000721">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:34.375696" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:34.373700" elapsed="0.002038"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:47:34.376225" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:47:34.375911" elapsed="0.000453"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.375891" elapsed="0.000500"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.376527" elapsed="0.000021"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.376780" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.376990" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:47:34.378962" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:47:34.372941" elapsed="0.006048"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.381276" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.380760" elapsed="0.000662"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.382125" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.381640" elapsed="0.000629"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:47:34.413351" level="INFO">GET Request : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:47:34.414599" level="INFO">GET Response : url=http://10.30.171.9:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01e2jrrrvqbu561tcp0fnj36i8z7.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:47:34 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:47:34.415137" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:47:34.384487" elapsed="0.030812"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.382416" elapsed="0.033108"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.415930" elapsed="0.000085"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.415572" elapsed="0.000707"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.382396" elapsed="0.033922"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.422886" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.419491" elapsed="0.003982"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.418636" elapsed="0.004902"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.418553" elapsed="0.005076"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.427595" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.424687" elapsed="0.003029"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.423853" elapsed="0.003927"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.423779" elapsed="0.004090"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.429695" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.428591" elapsed="0.001261"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.430924" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.430135" elapsed="0.000963"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.432100" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.431572" elapsed="0.000597"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.431175" elapsed="0.001056"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.430002" elapsed="0.002313"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.433866" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.432972" elapsed="0.001012"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.434930" elapsed="0.000081"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.434207" elapsed="0.000871"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.435933" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.435488" elapsed="0.000503"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.435144" elapsed="0.000912"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.434147" elapsed="0.001976"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:47:34.437209" elapsed="0.000696"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:47:34.439616" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.439013" elapsed="0.000718"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.440989" elapsed="0.002429"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:47:34.417185" elapsed="0.026347"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.443928" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:34.443726" elapsed="0.000354"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.443705" elapsed="0.000403"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:47:34.456188" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:47:34.444249" elapsed="0.011989"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:47:34.456411" elapsed="0.000041"/>
</return>
<msg time="2026-04-19T03:47:34.456590" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:47:34.379469" elapsed="0.077149"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.456685" elapsed="0.000026"/>
</return>
<msg time="2026-04-19T03:47:34.456839" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:47:34.177706" elapsed="0.279161"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.457300" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.457046" elapsed="0.000427"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.456934" elapsed="0.000565"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.457536" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:47:34.173862" elapsed="0.283803"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.170230" elapsed="0.287480"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.170212" elapsed="0.287522"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:47:34.458348" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:47:34.458240" elapsed="0.000168"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.458470" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:34.458432" elapsed="0.000076"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.458221" elapsed="0.000310"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.458666" elapsed="0.000022"/>
</kw>
<msg time="2026-04-19T03:47:34.458786" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:47:34.457965" elapsed="0.000847"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.459364" level="INFO">${cluster_index} = 1</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.458967" elapsed="0.000425"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.460003" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.459535" elapsed="0.000511"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.465257" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.464947" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.465838" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.465460" elapsed="0.000430"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:47:34.475603" level="INFO">GET Request : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:47:34.475672" level="INFO">GET Response : url=http://10.30.171.9:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:47:34 GMT', 'Expires': 'Sun, 19 Apr 2026 02:47:34 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"233.2 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570454,"status":200} 
 </msg>
<msg time="2026-04-19T03:47:34.475789" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:47:34.467897" elapsed="0.007920"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.465959" elapsed="0.009905"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.476067" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.475894" elapsed="0.000249"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.465939" elapsed="0.010227"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.480968" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:07.052","PeerAddresses":"member-2-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.128:2550\/user\/shardmanager-config\/member-2-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"StatRetrievalTime":"233.2 μs","Voting":true,"CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-2-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-1-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570454,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.477437" elapsed="0.003847"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.477206" elapsed="0.004235"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.477186" elapsed="0.004295"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.484971" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.481859" elapsed="0.003395"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.481561" elapsed="0.003850"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.481537" elapsed="0.003914"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.486213" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.485657" elapsed="0.000584"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.486531" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.486311" elapsed="0.000374"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.487481" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.486864" elapsed="0.000659"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.486716" elapsed="0.000928"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.486293" elapsed="0.001375"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.488337" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.487814" elapsed="0.000550"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.488649" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.488433" elapsed="0.000368"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.489530" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.488972" elapsed="0.000600"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.488827" elapsed="0.000867"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.488415" elapsed="0.001304"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:47:34.489859" elapsed="0.000821"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:47:34.491460" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.490835" elapsed="0.000651"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.491627" elapsed="0.002510"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:47:34.476671" elapsed="0.017531"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.494377" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:34.494270" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.494251" elapsed="0.000191"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:47:34.497132" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570454,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:47:34.494572" elapsed="0.002589"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:47:34.497212" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:47:34.497369" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570454,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:47:34.460857" elapsed="0.036538"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.497450" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:47:34.497596" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570454,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:47:34.460253" elapsed="0.037369"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.498577" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570454, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.498126" elapsed="0.000480"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:47:34.498690" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:47:34.498866" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-1-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570454, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:47:34.497828" elapsed="0.001065"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:47:34.499420" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.499213" elapsed="0.000234"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:47:34.499793" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.499590" elapsed="0.000228"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:47:34.499865" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:47:34.500016" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:47:34.168734" elapsed="0.331322"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:47:34.500115" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:47:34.500260" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:47:34.168020" elapsed="0.332265"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.500567" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.500363" elapsed="0.000433"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.500952" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.500820" elapsed="0.000185"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.501206" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.501072" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.500346" elapsed="0.000933"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-19T03:47:34.167864" elapsed="0.333439"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.503488" level="INFO">${session} = ClusterManagement__session_2</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-19T03:47:34.503189" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:47:34.503560" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:47:34.503705" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:47:34.502857" elapsed="0.000873"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.550236" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.549825" elapsed="0.000441"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.551121" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.550825" elapsed="0.000372">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:34.551291" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:34.550442" elapsed="0.000874"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.551883" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:47:34.551494" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.552256" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:47:34.552422" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:47:34.552109" elapsed="0.000383"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.552918" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.552664" elapsed="0.000299"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.553974" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.553714" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.554455" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.554185" elapsed="0.000297"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.554790" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.554984" elapsed="0.000023"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.555162" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:47:34.554669" elapsed="0.000550"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.554532" elapsed="0.000717"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:47:34.555294" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:47:34.555454" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:47:34.553443" elapsed="0.002036"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.553072" elapsed="0.002439"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.555669" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.555536" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.553050" elapsed="0.002696"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.556404" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.555903" elapsed="0.000529"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.556505" elapsed="0.000030"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:47:34.548897" elapsed="0.007840"/>
</kw>
<msg time="2026-04-19T03:47:34.556810" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:47:34.536694" elapsed="0.020185"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.602816" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.649148" elapsed="0.000030"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.695134" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.695493" elapsed="0.000023"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.695742" elapsed="0.000022"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.696840" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.696473" elapsed="0.000504"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:34.696429" elapsed="0.000639"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.697371" elapsed="0.000079"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.697729" elapsed="0.000072"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.698124" elapsed="0.000081"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:47:34.696388" elapsed="0.001910"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.695985" elapsed="0.002384"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.698515" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.698793" elapsed="0.000021"/>
</return>
<msg time="2026-04-19T03:47:34.698924" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:47:34.532452" elapsed="0.166499"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.701868" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.700855" elapsed="0.001134">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:34.702137" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:34.699694" elapsed="0.002484"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.702801" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.702351" elapsed="0.000630"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.704935" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.704077" elapsed="0.000961"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.703009" elapsed="0.002164"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.702330" elapsed="0.002869"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.707953" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:47:34.705340" elapsed="0.002656"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:47:34.708174" elapsed="0.000032"/>
</return>
<msg time="2026-04-19T03:47:34.708333" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:47:34.699371" elapsed="0.008987"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.710709" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.710172" elapsed="0.000654">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:34.710956" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:34.709013" elapsed="0.001984"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:47:34.711562" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:47:34.711270" elapsed="0.000430"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.711249" elapsed="0.000478"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.711862" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.712146" elapsed="0.000024"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.712318" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:47:34.714355" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:47:34.708701" elapsed="0.005681"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.716664" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.716183" elapsed="0.000629"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.717565" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.717044" elapsed="0.000668"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:47:34.745309" level="INFO">GET Request : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 path_url=/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:47:34.746717" level="INFO">GET Response : url=http://10.30.171.128:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node01h4ud9jzzz82htuxcfxb2rdla6.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Sat, 18-Apr-2026 03:47:34 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Cache-Control': 'no-cache', 'Content-Type': 'application/yang-data+json', 'Transfer-Encoding': 'chunked'} 
 body={"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-19T03:47:34.747424" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:47:34.720091" elapsed="0.027535"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.717857" elapsed="0.030086"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.748497" elapsed="0.000112"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.748011" elapsed="0.000911"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.717837" elapsed="0.031139"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.756381" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb:hwvtep","conformance-type":"import"},{"name":"opendaylight-flow-table-statistics_2013-12-15","revision":"2013-12-15","namespace":"urn:opendaylight:flow:table:statistics","conformance-type":"import"},{"name":"odl-bmp-monitor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor-config","conformance-type":"import"},{"name":"bgp-inet_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-inet","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-match_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:match","conformance-type":"import"},{"name":"ietf-crypto-types_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-crypto-types","conformance-type":"import","feature":["one-asymmetric-key-format","hidden-private-keys","cleartext-passwords","one-symmetric-key-format","p10-csr-format","encrypted-symmetric-keys","cleartext-symmetric-keys","hidden-symmetric-keys","csr-generation","cms-enveloped-data-format","encrypted-passwords","encrypted-private-keys","asymmetrically-encrypted-value-format","cleartext-private-keys","cms-encrypted-data-format","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker","conformance-type":"import"},{"name":"openflowplugin-extension-general_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:app:config","conformance-type":"import"},{"name":"topology-lldp-discovery-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:topology-lldp-discovery:config","conformance-type":"import"},{"name":"ietf-network-instance_2019-01-21","revision":"2019-01-21","namespace":"urn:ietf:params:xml:ns:yang:ietf-network-instance","conformance-type":"import"},{"name":"nicira-action_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:message","conformance-type":"import"},{"name":"odl-bgp-peer-acceptor-config_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-peer-acceptor-config","conformance-type":"import"},{"name":"ietf-yang-schema-mount_2019-01-14","revision":"2019-01-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-schema-mount","conformance-type":"import"},{"name":"ietf-http-client_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-client","conformance-type":"import","feature":["basic-auth","tcp-supported","tls-supported"]},{"name":"odl-bgp-evpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-evpn","conformance-type":"import"},{"name":"bgp-ll-graceful-restart_2018-11-12","revision":"2018-11-12","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:ll-graceful-restart","conformance-type":"import"},{"name":"bgp-linkstate_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-linkstate","conformance-type":"import"},{"name":"nicira-match_2014-04-21","revision":"2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-common","conformance-type":"import","feature":["ssh-x509-certs","transport-params"]},{"name":"base-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:frm-reconciliation:service","conformance-type":"import"},{"name":"ietf-ssh-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-server","conformance-type":"import","feature":["local-users-supported","local-user-auth-publickey","local-user-auth-password","local-user-auth-hostbased","ssh-server-keepalives"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-message","conformance-type":"import"},{"name":"ietf-inet-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-inet-types","conformance-type":"import"},{"name":"sal-experimenter-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-server","conformance-type":"import","feature":["tcp-server-keepalives"]},{"name":"sal-flow_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance","conformance-type":"import"},{"name":"data-export-import-internal_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","namespace":"urn:opendaylight:port:service","conformance-type":"import"},{"name":"iana-tls-cipher-suite-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-tls-cipher-suite-algs","conformance-type":"import"},{"name":"ietf-subscribed-notifications_2019-09-09","revision":"2019-09-09","namespace":"urn:ietf:params:xml:ns:yang:ietf-subscribed-notifications","conformance-type":"import","feature":["subtree","encode-xml","encode-json"]},{"name":"flow-topology-discovery_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:topology:discovery","conformance-type":"import"},{"name":"l3-unicast-igp-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:nt:l3-unicast-igp-topology","conformance-type":"import"},{"name":"ietf-netconf-notifications_2012-02-06","revision":"2012-02-06","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-notifications","conformance-type":"import"},{"name":"topology-tunnel-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:programming","conformance-type":"import"},{"name":"openconfig-network-instance-types_2015-10-18","revision":"2015-10-18","namespace":"http://openconfig.net/yang/network-instance-types","conformance-type":"import"},{"name":"statistics-manager-control_2015-08-12","revision":"2015-08-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:sm:control","conformance-type":"import"},{"name":"openconfig-interfaces_2016-04-12","revision":"2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","namespace":"urn:ietf:params:xml:ns:yang:iana-afn-safi","conformance-type":"import"},{"name":"bgp-epe_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-epe","conformance-type":"import"},{"name":"barrier-common_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-mac-algs","conformance-type":"import"},{"name":"opendaylight-topology-inventory_2013-10-30","revision":"2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-ssh-client","conformance-type":"import","feature":["client-ident-hostbased","ssh-client-keepalives","client-ident-publickey","client-ident-password"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","namespace":"urn:opendaylight:lfm:lisp-binary-address-types","conformance-type":"import"},{"name":"odl-controller-cds-types_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:cds:types","conformance-type":"import"},{"name":"address-tracker_2014-06-17","revision":"2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-people","conformance-type":"import"},{"name":"bgp-mvpn-ipv4_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv4","conformance-type":"import"},{"name":"ietf-tls-server_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-x509-cert","client-auth-supported"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:pmsi-tunnel","conformance-type":"import"},{"name":"ietf-restconf-monitoring_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-monitoring","conformance-type":"import"},{"name":"opendaylight-statistics-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn","conformance-type":"import"},{"name":"bgp-multiprotocol_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-multiprotocol","conformance-type":"import"},{"name":"openflow-switch-connection-config_2016-05-06","revision":"2016-05-06","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:switch:connection:config","conformance-type":"import"},{"name":"openconfig-bgp-multiprotocol_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-multiprotocol","conformance-type":"import"},{"name":"ietf-yang-library_2019-01-04","revision":"2019-01-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-library","conformance-type":"import"},{"name":"openflowplugin-experimenter-types_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-ip","conformance-type":"import","feature":["ipv6-privacy-autoconf","ipv4-non-contiguous-netmasks"]},{"name":"odl-mdsal-lowlevel-control_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:control","conformance-type":"import"},{"name":"openconfig-extensions_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-ext","conformance-type":"import"},{"name":"ietf-tcp-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["local-binding-supported","tcp-client-keepalives"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","namespace":"urn:opendaylight:params:xml:ns:yang:iana","conformance-type":"import"},{"name":"ietf-restconf_2017-01-26","revision":"2017-01-26","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf","conformance-type":"import"},{"name":"ietf-datastores_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-datastores","conformance-type":"import"},{"name":"jsonrpc-inband-models_2019-01-12","revision":"2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-patch","conformance-type":"import"},{"name":"topology-tunnel-p2p_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:p2p","conformance-type":"import"},{"name":"odl-pcep-stats-provider_2022-07-30","revision":"2022-07-30","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:stats:provider:config","conformance-type":"import"},{"name":"sal-group_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:config","conformance-type":"import"},{"name":"sal-meter_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","namespace":"urn:ietf:params:xml:ns:yang:ietf-interfaces","conformance-type":"import","feature":["pre-provisioning","if-mib","arbitrary-names"]},{"name":"bgp-labeled-unicast_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-labeled-unicast","conformance-type":"import"},{"name":"opendaylight-l2-types_2013-08-27","revision":"2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:applications:lldp-speaker:config","conformance-type":"import"},{"name":"ieee754_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:ieee754","conformance-type":"import"},{"name":"address-tracker-config_2016-06-21","revision":"2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/routing-policy","conformance-type":"import"},{"name":"openconfig-bgp-operational_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car","conformance-type":"import"},{"name":"openflow-approved-extensions_2016-08-02","revision":"2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netmod:notification","conformance-type":"import"},{"name":"ietf-netconf-nmda_2019-01-07","revision":"2019-01-07","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-nmda","conformance-type":"import","feature":["with-defaults","origin"]},{"name":"ietf-tcp-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-common","conformance-type":"import","feature":["keepalives-supported"]},{"name":"odl-lisp-proto_2015-11-05","revision":"2015-11-05","namespace":"urn:opendaylight:lfm:lisp-proto","conformance-type":"import"},{"name":"odl-bgp-topology-config_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-config","conformance-type":"import"},{"name":"odl-pcep-session-stats_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:stats","conformance-type":"import"},{"name":"network-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network-topology","conformance-type":"import"},{"name":"topology-tunnel-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:sr","conformance-type":"import"},{"name":"openconfig-policy-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/policy-types","conformance-type":"import"},{"name":"odl-pcep-object_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:object","conformance-type":"import"},{"name":"bgp-vpn-ipv4_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv4","conformance-type":"import"},{"name":"openflowplugin-extension-nicira-action_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:nicira:action","conformance-type":"import"},{"name":"aaa-encrypt-service-config_2024-02-02","revision":"2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-segment-routing","conformance-type":"import"},{"name":"bgp-mvpn-ipv6_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn:ipv6","conformance-type":"import"},{"name":"ietf-tls-client_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-client","conformance-type":"import","feature":["client-ident-x509-cert","server-auth-x509-cert"]},{"name":"network-topology-pcep-programming_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:programming","conformance-type":"import"},{"name":"opendaylight-group-statistics_2013-11-11","revision":"2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin","conformance-type":"import"},{"name":"opendaylight-flow-statistics_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:topology:stats:rpc","conformance-type":"import"},{"name":"rsvp_2015-08-20","revision":"2015-08-20","namespace":"urn:opendaylight:params:xml:ns:yang:rsvp","conformance-type":"import"},{"name":"ietf-lisp-address-types_2015-11-05","revision":"2015-11-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-lisp-address-types","conformance-type":"import"},{"name":"odl-bgp-topology-types_2016-05-24","revision":"2016-05-24","namespace":"urn:opendaylight:params:xml:ns:yang:odl-bgp-topology-types","conformance-type":"import"},{"name":"opendaylight-table-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:forwardingrules-manager:config","conformance-type":"import"},{"name":"odl-srm-types_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:types","conformance-type":"import"},{"name":"ietf-x509-cert-to-name_2014-12-10","revision":"2014-12-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-x509-cert-to-name","conformance-type":"import"},{"name":"flow-node-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:sr","conformance-type":"import"},{"name":"flow-errors_2013-11-16","revision":"2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:controller:rfc2385:cfg","conformance-type":"import"},{"name":"network-topology-programming_2013-11-02","revision":"2013-11-02","namespace":"urn:opendaylight:params:xml:ns:yang:topology:programming","conformance-type":"import"},{"name":"graph_2025-01-15","revision":"2025-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:graph","conformance-type":"import"},{"name":"ietf-netconf_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["xpath","url","rollback-on-error","validate","startup","candidate","confirmed-commit","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","namespace":"urn:opendaylight:params:xml:ns:yang:network:topology","conformance-type":"import"},{"name":"iana-ssh-public-key-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-public-key-algs","conformance-type":"import"},{"name":"aaa-cert-mdsal_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:yang:aaa:cert:mdsal","conformance-type":"import"},{"name":"odl-device-notification_2024-02-18","revision":"2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-origin","conformance-type":"import"},{"name":"openflow-augments_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-encryption-algs","conformance-type":"import"},{"name":"ietf-truststore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-truststore","conformance-type":"import","feature":["inline-definitions-supported"]},{"name":"openconfig-bgp_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-peer-rpc","conformance-type":"import"},{"name":"pcep-server_2022-03-21","revision":"2022-03-21","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:server","conformance-type":"import"},{"name":"ipv4-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:distributed-datastore-provider","conformance-type":"import"},{"name":"network-topology-pcep_2025-03-28","revision":"2025-03-28","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep","conformance-type":"import"},{"name":"opendaylight-group-types_2013-10-18","revision":"2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:ovsdb","conformance-type":"import"},{"name":"bgp-l3vpn-mcast_2018-04-17","revision":"2018-04-17","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:l3vpn:mcast","conformance-type":"import"},{"name":"sal-remote-augment_2023-11-03","revision":"2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","namespace":"urn:ietf:params:xml:ns:yang:iana-routing-types","conformance-type":"import"},{"name":"odl-mappingservice_2015-09-06","revision":"2015-09-06","namespace":"urn:opendaylight:lfm:mappingservice","conformance-type":"import"},{"name":"opendaylight-ipv6-arbitrary-bitmask-fields_2016-02-24","revision":"2016-02-24","namespace":"urn:opendaylight:opendaylight-ipv6-arbitrary-bitmask-fields","conformance-type":"import"},{"name":"sal-flows-batch_2016-03-14","revision":"2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-monitor","conformance-type":"import"},{"name":"ietf-tls-common_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["tls12","hello-params","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:common:types","conformance-type":"import"},{"name":"ietf-netconf-with-defaults_2011-06-01","revision":"2011-06-01","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults","conformance-type":"import"},{"name":"jsonrpc_2016-12-01","revision":"2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:mdsal:core:general-entity","conformance-type":"import"},{"name":"path-computation_2022-03-24","revision":"2022-03-24","namespace":"urn:opendaylight:params:xml:ns:yang:path:computation","conformance-type":"import"},{"name":"iana-ssh-key-exchange-algs_2024-10-16","revision":"2024-10-16","namespace":"urn:ietf:params:xml:ns:yang:iana-ssh-key-exchange-algs","conformance-type":"import"},{"name":"node-ssl-connection-error_2019-07-23","revision":"2019-07-23","namespace":"urn:opendaylight:node-ssl-connection-error:service","conformance-type":"import"},{"name":"openflow-protocol_2013-07-31","revision":"2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","namespace":"urn:opendaylight:params:xml:ns:yang:network:concepts","conformance-type":"import"},{"name":"bgp-test_2018-05-15","revision":"2018-05-15","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:test","conformance-type":"import"},{"name":"ted_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:ted","conformance-type":"import"},{"name":"ietf-keystore_2024-10-10","revision":"2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-keystore","conformance-type":"import","feature":["asymmetric-keys","inline-definitions-supported"]},{"name":"aaa_2016-12-14","revision":"2016-12-14","namespace":"urn:opendaylight:params:xml:ns:yang:aaa","conformance-type":"import"},{"name":"aaa-cert-rpc_2015-12-15","revision":"2015-12-15","namespace":"urn:opendaylight:yang:aaa:cert:rpc","conformance-type":"import"},{"name":"arp-handler-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:openconfig-extensions","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-target_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:target","conformance-type":"import"},{"name":"loop-remover-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","namespace":"urn:ietf:params:xml:ns:netconf:notification:1.0","conformance-type":"import"},{"name":"bgp-mvpn_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:mvpn","conformance-type":"import"},{"name":"sal-remote_2014-01-14","revision":"2014-01-14","namespace":"urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote","conformance-type":"import"},{"name":"odl-lisp-sb_2015-09-04","revision":"2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:yang:extension:yang-ext","conformance-type":"import"},{"name":"opendaylight-multipart-types_2017-01-12","revision":"2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:people","conformance-type":"import"},{"name":"sal-queue_2015-03-05","revision":"2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:app:arbitrator-reconcile:service","conformance-type":"import"},{"name":"ietf-yang-metadata_2016-08-05","revision":"2016-08-05","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-metadata","conformance-type":"import"},{"name":"bgp-rib_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-rib","conformance-type":"import"},{"name":"opendaylight-arbitrary-bitmask-fields_2016-01-30","revision":"2016-01-30","namespace":"urn:opendaylight:arbitrary:bitmask:fields","conformance-type":"import"},{"name":"network-pcep-topology-stats_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:pcep:stats","conformance-type":"import"},{"name":"basic-rpc-test_2016-01-20","revision":"2016-01-20","namespace":"urn:opendaylight:controller:basic-rpc-test","conformance-type":"import"},{"name":"stp-status-aware-node-connector_2014-07-14","revision":"2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","namespace":"urn:opendaylight:params:xml:ns:yang:controller:config:sal-clustering-it:car-purchase","conformance-type":"import"},{"name":"host-tracker-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:host-tracker-config","conformance-type":"import"},{"name":"opendaylight-meter-types_2013-09-18","revision":"2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","namespace":"urn:opendaylight:params:xml:ns:yang:openflow:provider:config","conformance-type":"import"},{"name":"topology-tunnel-pcep-config_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:config","conformance-type":"import"},{"name":"odl-serviceutils-upgrade_2018-07-02","revision":"2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:model:match:types","conformance-type":"import"},{"name":"odl-inet-binary-types_2016-03-03","revision":"2016-03-03","namespace":"urn:opendaylight:lfm:inet-binary-types","conformance-type":"import"},{"name":"ietf-restconf-server_2024-08-14","revision":"2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["http-listen","https-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","namespace":"urn:opendaylight:params:xml:ns:yang:openflowplugin:rf:state","conformance-type":"import"},{"name":"ietf-routing-types_2017-12-04","revision":"2017-12-04","namespace":"urn:ietf:params:xml:ns:yang:ietf-routing-types","conformance-type":"import"},{"name":"onf-extensions_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:odl:bgp:default:policy","conformance-type":"import"},{"name":"opendaylight-direct-statistics_2016-05-11","revision":"2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","namespace":"urn:opendaylight:params:xml:ns:yang:programming","conformance-type":"import"},{"name":"bgp-types_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-types","conformance-type":"import"},{"name":"bgp-route-target-constrain_2018-06-18","revision":"2018-06-18","namespace":"urn:opendaylight:params:xml:ns:yang:bgp:route:target:constrain","conformance-type":"import"},{"name":"opendaylight-port-types_2013-09-25","revision":"2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:async-config:service","conformance-type":"import"},{"name":"aaa-password-service-config_2017-06-19","revision":"2017-06-19","namespace":"urn:opendaylight:aaa:password:service:config","conformance-type":"import"},{"name":"openconfig-bgp-types_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-types","conformance-type":"import"},{"name":"data-export-import_2016-09-21","revision":"2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel","conformance-type":"import"},{"name":"ietf-yang-types_2013-07-15","revision":"2013-07-15","namespace":"urn:ietf:params:xml:ns:yang:ietf-yang-types","conformance-type":"import"},{"name":"opendaylight-queue-statistics_2013-12-16","revision":"2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf:bundle:service","conformance-type":"import"},{"name":"ietf-restconf-subscribed-notifications_2019-11-17","revision":"2019-11-17","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-subscribed-notifications","conformance-type":"import"},{"name":"bgp-vpn-ipv6_2018-03-29","revision":"2018-03-29","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-vpn-ipv6","conformance-type":"import"},{"name":"bmp-message_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bmp-message","conformance-type":"import"},{"name":"sal-meters-batch_2016-03-16","revision":"2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","namespace":"urn:ietf:params:xml:ns:yang:ietf-http-server","conformance-type":"import","feature":["tcp-supported","tls-supported"]},{"name":"sal-experimenter-mp-message_2015-10-20","revision":"2015-10-20","namespace":"urn:opendaylight:experimenter-mp-message:service","conformance-type":"import"},{"name":"topology-tunnel-pcep_2018-11-09","revision":"2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep","conformance-type":"import"},{"name":"odl-pcep-topology-provider_2023-01-15","revision":"2023-01-15","namespace":"urn:opendaylight:params:xml:ns:yang:odl:pcep:topology-provider","conformance-type":"import"},{"name":"openconfig-bgp-policy_2015-10-09","revision":"2015-10-09","namespace":"http://openconfig.net/yang/bgp-policy","conformance-type":"import"},{"name":"odl-mdsal-lowlevel-common_2017-02-15","revision":"2017-02-15","namespace":"tag:opendaylight.org,2017:controller:yang:lowlevel:common","conformance-type":"import"},{"name":"ospf-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:ospf-topology","conformance-type":"import"},{"name":"l2switch-config_2014-05-28","revision":"2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","namespace":"urn:TBD:params:xml:ns:yang:network:isis-topology","conformance-type":"import"},{"name":"odl-pcep-types_2025-09-30","revision":"2025-09-30","namespace":"urn:opendaylight:params:xml:ns:yang:pcep:types","conformance-type":"import"},{"name":"ietf-netconf-acm_2018-02-14","revision":"2018-02-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-netconf-acm","conformance-type":"import"},{"name":"bgp-flowspec_2020-01-20","revision":"2020-01-20","namespace":"urn:opendaylight:params:xml:ns:yang:bgp-flowspec","conformance-type":"import"},{"name":"iana-crypt-hash_2014-08-06","revision":"2014-08-06","namespace":"urn:ietf:params:xml:ns:yang:iana-crypt-hash","conformance-type":"import","feature":["crypt-hash-sha-512","crypt-hash-sha-256","crypt-hash-md5"]},{"name":"openflow-extensible-match_2015-02-25","revision":"2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"1"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.753661" elapsed="0.003300"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.752212" elapsed="0.004797"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.752075" elapsed="0.005018"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.760157" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.757895" elapsed="0.002355"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.757258" elapsed="0.003039"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.757202" elapsed="0.003159"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.761749" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.760893" elapsed="0.000972"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.762680" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.762059" elapsed="0.000751"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.763799" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.763385" elapsed="0.000468"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.762875" elapsed="0.001026"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.761976" elapsed="0.001986"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.765300" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.764541" elapsed="0.000870"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.766253" elapsed="0.000079"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.765621" elapsed="0.000760"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.767518" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.766771" elapsed="0.000801"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.766446" elapsed="0.001175"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.765563" elapsed="0.002120"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:47:34.768658" elapsed="0.000693"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:47:34.771453" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.770631" elapsed="0.000981"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.773219" elapsed="0.002430"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:47:34.750138" elapsed="0.025616"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.776145" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:34.775937" elapsed="0.000332"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.775916" elapsed="0.000378"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:47:34.788224" level="INFO">${text_normalized} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:47:34.776435" elapsed="0.011836"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:47:34.788439" elapsed="0.000037"/>
</return>
<msg time="2026-04-19T03:47:34.788612" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:47:34.714809" elapsed="0.073830"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.788705" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:47:34.788858" level="INFO">${response_text} = {
 "ietf-yang-library:modules-state": {
  "module": [
   {
    "conformance-type": "import",
    "feature": [
     "arbitrary-names",
     "if-mib",
     "pre-provisioning"
    ],
    "name": "ietf-in...</msg>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="PASS" start="2026-04-19T03:47:34.512770" elapsed="0.276115"/>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.789224" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.788971" elapsed="0.000364"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.788953" elapsed="0.000407"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.789394" elapsed="0.000027"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="PASS" start="2026-04-19T03:47:34.509069" elapsed="0.280488"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.503794" elapsed="0.285808"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.503778" elapsed="0.285849"/>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<if>
<branch type="IF" condition="'${shard_type}' == 'config'">
<return>
<value>DistributedConfigDatastore</value>
<status status="PASS" start="2026-04-19T03:47:34.790206" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-19T03:47:34.790096" elapsed="0.000170"/>
</branch>
<branch type="ELSE IF" condition="'${shard_type}' == 'operational'">
<return>
<value>DistributedOperationalDatastore</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.790328" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:34.790290" elapsed="0.000077"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.790078" elapsed="0.000311"/>
</if>
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized shard type: ${shard_type}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.790523" elapsed="0.000021"/>
</kw>
<msg time="2026-04-19T03:47:34.790642" level="INFO">${type_class} = DistributedConfigDatastore</msg>
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="PASS" start="2026-04-19T03:47:34.789857" elapsed="0.000811"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.791233" level="INFO">${cluster_index} = 2</msg>
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.790831" elapsed="0.000429"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.791860" level="INFO">${uri} = jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.791403" elapsed="0.000485"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.796830" level="INFO">jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.796582" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.797277" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.797017" elapsed="0.000304"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:47:34.804687" level="INFO">GET Request : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 path_url=/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-19T03:47:34.804746" level="INFO">GET Response : url=http://10.30.171.128:8181/jolokia/read/org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore 
 status=200, reason=OK 
 headers={'Content-Type': 'text/plain;charset=utf-8', 'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Date': 'Sun, 19 Apr 2026 03:47:34 GMT', 'Expires': 'Sun, 19 Apr 2026 02:47:34 GMT', 'Transfer-Encoding': 'chunked'} 
 body={"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"155.8 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570454,"status":200} 
 </msg>
<msg time="2026-04-19T03:47:34.804849" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-19T03:47:34.799199" elapsed="0.005676"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.797387" elapsed="0.007532"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.805120" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.804944" elapsed="0.000241"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.797369" elapsed="0.007838"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.810092" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore","type":"read"},"value":{"ReadWriteTransactionCount":0,"SnapshotIndex":-1,"InMemoryJournalLogSize":0,"ReplicatedToAllIndex":-1,"Leader":"member-3-shard-car-config","LastIndex":-1,"RaftState":"Follower","LastApplied":-1,"LastCommittedTransactionTime":"1970-01-01 00:00:00.000","PeerAddresses":"member-1-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.9:2550\/user\/shardmanager-config\/member-1-shard-car-config, member-3-shard-car-config: pekko:\/\/opendaylight-cluster-data@10.30.171.206:2550\/user\/shardmanager-config\/member-3-shard-car-config","LastLogIndex":-1,"LastLeadershipChangeTime":"2026-04-19 03:33:04.107","FollowerInitialSyncStatus":true,"FollowerInfo":[],"FailedReadTransactionsCount":0,"Voting":true,"StatRetrievalTime":"155.8 μs","CurrentTerm":3,"LastTerm":-1,"FailedTransactionsCount":0,"PendingTxCommitQueueSize":0,"VotedFor":"member-3-shard-car-config","SnapshotCaptureInitiated":false,"CommittedTransactionsCount":0,"TxCohortCacheSize":0,"PeerVotingStates":"member-1-shard-car-config: true, member-3-shard-car-config: true","LastLogTerm":-1,"StatRetrievalError":null,"CommitIndex":-1,"SnapshotTerm":-1,"AbortTransactionsCount":0,"ReadOnlyTransactionCount":0,"ShardName":"member-2-shard-car-config","LeadershipChangeCount":1,"InMemoryJournalDataSize":0},"timestamp":1776570454,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.806607" elapsed="0.003757"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.806318" elapsed="0.004203"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.806292" elapsed="0.004270"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.814109" level="INFO">200</msg>
<arg>${response.status_code}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.810940" elapsed="0.003373"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.810642" elapsed="0.003826"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.810618" elapsed="0.003890"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.815469" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.814714" elapsed="0.000793"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.815912" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.815606" elapsed="0.000541"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.817179" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.816389" elapsed="0.000850"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.816184" elapsed="0.001227"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.815581" elapsed="0.001864"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.818266" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.817679" elapsed="0.000615"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.818579" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.818363" elapsed="0.000366"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.819447" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.818902" elapsed="0.000588"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.818756" elapsed="0.000857"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.818345" elapsed="0.001293"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:47:34.819777" elapsed="0.000703"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-19T03:47:34.821321" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.820636" elapsed="0.000712"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.821492" elapsed="0.002481"/>
</kw>
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="PASS" start="2026-04-19T03:47:34.805738" elapsed="0.018315"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.824234" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:34.824124" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.824105" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-19T03:47:34.827009" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570454,
...</msg>
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="PASS" start="2026-04-19T03:47:34.824433" elapsed="0.002621"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-19T03:47:34.827107" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:47:34.827266" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570454,
...</msg>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="PASS" start="2026-04-19T03:47:34.792699" elapsed="0.034594"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.827350" elapsed="0.000027"/>
</return>
<msg time="2026-04-19T03:47:34.827498" level="INFO">${data_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1776570454,
...</msg>
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="PASS" start="2026-04-19T03:47:34.792104" elapsed="0.035421"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.828468" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570454, 'value': {'...</msg>
<var>${json_data}</var>
<arg>json.loads('''${plain_string_with_json}''')</arg>
<arg>json</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.828010" elapsed="0.000488"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-19T03:47:34.828584" elapsed="0.000030"/>
</return>
<msg time="2026-04-19T03:47:34.828760" level="INFO">${data_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=Shards,name=member-2-shard-car-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1776570454, 'value': {'...</msg>
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="PASS" start="2026-04-19T03:47:34.827734" elapsed="0.001054"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:47:34.829258" level="INFO">${value} = {'AbortTransactionsCount': 0, 'CommitIndex': -1, 'CommittedTransactionsCount': 0, 'CurrentTerm': 3, 'FailedReadTransactionsCount': 0, 'FailedTransactionsCount': 0, 'FollowerInfo': [], 'FollowerInitial...</msg>
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.828934" elapsed="0.000352"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-19T03:47:34.829651" level="INFO">${raft_property} = Follower</msg>
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.829432" elapsed="0.000245"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="PASS" start="2026-04-19T03:47:34.829725" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:47:34.829877" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:47:34.502311" elapsed="0.327591"/>
</kw>
<return>
<value>${raft_state}</value>
<status status="PASS" start="2026-04-19T03:47:34.829960" elapsed="0.000025"/>
</return>
<msg time="2026-04-19T03:47:34.830124" level="INFO">${raft_state} = Follower</msg>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="PASS" start="2026-04-19T03:47:34.501631" elapsed="0.328519"/>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.830433" elapsed="0.000191"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.830228" elapsed="0.000434"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.830825" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.830687" elapsed="0.000192"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.831046" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.830903" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.830211" elapsed="0.000910"/>
</if>
<var name="${index}">2</var>
<status status="PASS" start="2026-04-19T03:47:34.501471" elapsed="0.329674"/>
</iter>
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.833331" level="INFO">${session} = ClusterManagement__session_3</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-19T03:47:34.832982" elapsed="0.000376"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-19T03:47:34.833405" elapsed="0.000028"/>
</return>
<msg time="2026-04-19T03:47:34.833577" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>member_index=${member_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-19T03:47:34.832700" elapsed="0.000914"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.878924" level="INFO">${file_path_stream} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/location.uri</msg>
<var>${file_path_stream}</var>
<arg>${folder}.${ODL_STREAM}${/}${file_name}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:34.878538" elapsed="0.000415"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.879751" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</msg>
<arg>${file_path_stream}</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.879486" elapsed="0.000340">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:34.879920" level="INFO">${file_stream_exists} = False</msg>
<var>${file_stream_exists}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${file_path_stream}</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:34.879156" elapsed="0.000788"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.880536" level="INFO">${file_path} = /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/location.uri</msg>
<var>${file_path}</var>
<arg>${file_stream_exists}</arg>
<arg>${file_path_stream}</arg>
<arg>${folder}${/}${file_name}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:47:34.880142" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-19T03:47:34.880888" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-19T03:47:34.881189" level="INFO">${template} = /rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-19T03:47:34.880742" elapsed="0.000524"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.881732" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.881444" elapsed="0.000340"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.882729" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:34.882469" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.883224" level="INFO">${encoded_mapping} = {}</msg>
<var>${encoded_mapping}</var>
<doc>Creates and returns a dictionary based on the given ``items``.</doc>
<status status="PASS" start="2026-04-19T03:47:34.882923" elapsed="0.000327"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Convert To String" owner="BuiltIn">
<var>${value}</var>
<arg>${value}</arg>
<doc>Converts the given item to a Unicode string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.883560" elapsed="0.000022"/>
</kw>
<kw name="Percent_Encode_String" owner="TemplatedRequests">
<var>${encoded_value}</var>
<arg>${value}</arg>
<doc>Percent encodes reserved characters in the given string so it can be used as part of url.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.883755" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given ``key_value_pairs`` and/or ``items`` to the ``dictionary``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.883916" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-19T03:47:34.883438" elapsed="0.000536"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-19T03:47:34.883301" elapsed="0.000702"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-19T03:47:34.884064" elapsed="0.000031"/>
</return>
<msg time="2026-04-19T03:47:34.884227" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-19T03:47:34.882204" elapsed="0.002048"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:34.881878" elapsed="0.002407"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.884442" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:34.884309" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:34.881858" elapsed="0.002660"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-19T03:47:34.885141" level="INFO">${final_text} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${final_text}</var>
<arg>string.Template('''${template}'''.rstrip()).safe_substitute(${mapping_to_use})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-19T03:47:34.884677" elapsed="0.000492"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-19T03:47:34.885244" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-19T03:47:34.877645" elapsed="0.007832"/>
</kw>
<msg time="2026-04-19T03:47:34.885549" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>not "${iterations}"</arg>
<arg>Resolve_Text_From_Template_File</arg>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-19T03:47:34.865362" elapsed="0.020271"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${prolog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.prolog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.930884" elapsed="0.000032"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:34.976840" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.022676" elapsed="0.000031"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.023051" elapsed="0.000025"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.023308" elapsed="0.000023"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.024160" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:35.023764" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:35.023720" elapsed="0.000657"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<var>${j}</var>
<arg>${iteration}+${iter_j_offset}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.024669" elapsed="0.000074"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.025015" elapsed="0.000089"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.025376" elapsed="0.000073"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-19T03:47:35.023688" elapsed="0.001849"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-19T03:47:35.023543" elapsed="0.002062"/>
</for>
<kw name="Catenate" owner="BuiltIn">
<var>${final_text}</var>
<arg>SEPARATOR=</arg>
<arg>${prolog}</arg>
<arg>${endline}</arg>
<arg>@{items}</arg>
<arg>${endline}</arg>
<arg>${epilog}</arg>
<doc>Catenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.025749" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:35.026022" elapsed="0.000678"/>
</return>
<msg time="2026-04-19T03:47:35.026814" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-04-19T03:47:34.860811" elapsed="0.166030"/>
</kw>
<kw name="Resolve_Jmes_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:35.029269" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</msg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:35.028708" elapsed="0.000679">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:35.029514" level="INFO">${read_jmes_file} = False</msg>
<var>${read_jmes_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:35.027604" elapsed="0.001950"/>
</kw>
<if>
<branch type="IF" condition="${read_jmes_file} == ${true}">
<kw name="Get File" owner="OperatingSystem">
<var>${jmes_expression}</var>
<arg>${folder}${/}jmespath.expr</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.030201" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:35.029723" elapsed="0.000659"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-19T03:47:35.032192" level="INFO">${jmes_expression} = None</msg>
<var>${jmes_expression}</var>
<arg>${None}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-19T03:47:35.031247" elapsed="0.001038"/>
</kw>
<status status="PASS" start="2026-04-19T03:47:35.030409" elapsed="0.002013"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:35.029703" elapsed="0.002745"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-19T03:47:35.035227" level="INFO">${expression} = </msg>
<var>${expression}</var>
<arg>${read_jmes_file} == ${true}</arg>
<arg>${jmes_expression}</arg>
<arg>${EMPTY}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-19T03:47:35.032593" elapsed="0.002679"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-19T03:47:35.035440" elapsed="0.000034"/>
</return>
<msg time="2026-04-19T03:47:35.035603" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:47:35.027286" elapsed="0.008342"/>
</kw>
<kw name="Resolve_Volatiles_Path" owner="TemplatedRequests">
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-19T03:47:35.038358" level="FAIL">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</msg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Fails unless the given ``path`` points to an existing file.</doc>
<status status="FAIL" start="2026-04-19T03:47:35.037740" elapsed="0.000740">File '/w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-19T03:47:35.038613" level="INFO">${read_volatiles_file} = False</msg>
<var>${read_volatiles_file}</var>
<arg>OperatingSystem.File Should Exist</arg>
<arg>${folder}${/}volatiles.list</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-19T03:47:35.036564" elapsed="0.002090"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-19T03:47:35.039169" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-19T03:47:35.038839" elapsed="0.000471"/>
</branch>
<status status="PASS" start="2026-04-19T03:47:35.038818" elapsed="0.000519"/>
</if>
<kw name="Get File" owner="OperatingSystem">
<var>${volatiles}</var>
<arg>${folder}${/}volatiles.list</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.039476" elapsed="0.000022"/>
</kw>
<kw name="Split String" owner="String">
<var>${volatiles_list}</var>
<arg>${volatiles}</arg>
<arg>${\n}</arg>
<doc>Splits the ``string`` using ``separator`` as a delimiter string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:35.039734" elapsed="0.000024"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-19T03:47:35.039912" elapsed="0.000018"/>
</return>
<msg time="2026-04-19T03:47:35.042116" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-3node-clustering-ask-all-chromium/test/csit/libraries/../variables/restconf/modules/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-19T03:47:35.035980" elapsed="0.006169"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:35.044393" level="INFO">/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:35.043823" elapsed="0.000800"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-19T03:47:35.045351" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-19T03:47:35.044853" elapsed="0.000645"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-19T03:47:40.058073" level="FAIL">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</msg>
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="FAIL" start="2026-04-19T03:47:35.047810" elapsed="5.016341">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:47:35.045648" elapsed="5.018978">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.065350" elapsed="0.000124"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:40.064755" elapsed="0.001129"/>
</branch>
<status status="FAIL" start="2026-04-19T03:47:35.045629" elapsed="5.020322">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<arg>${response}</arg>
<arg>log_response=${log_response}</arg>
<doc>Log response text, check status_code is one of allowed ones. In cases where this keyword is
called in a WUKS it could end up logging tons of data and it may be desired to skip the logging by passing
log_response=False, but by default it remains True.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.067152" elapsed="0.000030"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.067425" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-19T03:47:40.067383" elapsed="0.000167"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:40.067360" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.067715" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.067910" elapsed="0.000018"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-04-19T03:47:35.042588" elapsed="5.025475">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.068152" elapsed="0.000018"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.841255" elapsed="5.227004">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="${verify}">
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<arg>response=${response_text}</arg>
<arg>folder=${folder}</arg>
<arg>base_name=data</arg>
<arg>mapping=${mapping}</arg>
<arg>iterations=${iterations}</arg>
<arg>iter_start=${iter_start}</arg>
<arg>iter_j_offset=${iter_j_offset}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.068538" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:40.068360" elapsed="0.000254"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:40.068340" elapsed="0.000299"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.068672" elapsed="0.000014"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.837421" elapsed="5.231358">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<status status="FAIL" start="2026-04-19T03:47:34.833682" elapsed="5.235176">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</branch>
<status status="FAIL" start="2026-04-19T03:47:34.833665" elapsed="5.235225">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.069155" elapsed="0.000027"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.069356" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.069519" elapsed="0.000021"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.069738" elapsed="0.000036"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.070082" elapsed="0.000026"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.070251" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.070413" elapsed="0.000020"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.070486" elapsed="0.000021"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.832149" elapsed="5.238467">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.070706" elapsed="0.000017"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.831468" elapsed="5.239338">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.071107" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:40.070899" elapsed="0.000269"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.071324" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:40.071192" elapsed="0.000188"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.071535" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:40.071404" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:40.070882" elapsed="0.000728"/>
</if>
<var name="${index}">3</var>
<status status="FAIL" start="2026-04-19T03:47:34.831310" elapsed="5.240352">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-04-19T03:47:34.167660" elapsed="5.904069">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.071785" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.163699" elapsed="5.908188">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.072094" elapsed="0.000023"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.072317" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-19T03:47:40.072186" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-04-19T03:47:40.072169" elapsed="0.000224"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.072517" elapsed="0.000021"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.072678" elapsed="0.000021"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.072745" elapsed="0.000016"/>
</return>
<var>${leader}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-04-19T03:47:34.159699" elapsed="5.913148">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_index}</arg>
<arg>${leader}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.073051" elapsed="0.000025"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_indices}</arg>
<arg>${follower_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.073367" elapsed="0.000021"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_index}</var>
<arg>${follower_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.073524" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_index}</arg>
<arg>${first_follower_index}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.073689" elapsed="0.000021"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${leader_session}</var>
<arg>member_index=${leader}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.074593" elapsed="0.000028"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_leader_session}</arg>
<arg>${leader_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.074771" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${sessions}</var>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.074940" elapsed="0.000021"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<var>${follower_session}</var>
<arg>member_index=${follower_index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.075280" elapsed="0.000024"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${sessions}</arg>
<arg>${follower_session}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.075442" elapsed="0.000021"/>
</kw>
<var name="${follower_index}"/>
<status status="NOT RUN" start="2026-04-19T03:47:40.075104" elapsed="0.000394"/>
</iter>
<var>${follower_index}</var>
<value>@{follower_list}</value>
<status status="NOT RUN" start="2026-04-19T03:47:40.075017" elapsed="0.000506"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_follower_sessions}</arg>
<arg>${sessions}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.075663" elapsed="0.000021"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${first_follower_session}</var>
<arg>${sessions}</arg>
<arg>0</arg>
<doc>Returns the value specified with an ``index`` from ``list``.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.075820" elapsed="0.000019"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${${shard_name}_first_follower_session}</arg>
<arg>${first_follower_session}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.075989" elapsed="0.000026"/>
</kw>
<arg>shard_name=car</arg>
<doc>Get leader and followers for given shard name and
set several suite variables related to member indices and sessions.
ClusterManagement Resource is assumed to be initialized.
TODO: car-people shard name causes dash in variable names. Should we convert to underscores?</doc>
<status status="FAIL" start="2026-04-19T03:47:34.159306" elapsed="5.916825">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<kw name="Set_Additional_Variables">
<doc>Compute various lists useful for test cases in this suite.</doc>
<status status="NOT RUN" start="2026-04-19T03:47:40.076349" elapsed="0.000023"/>
</kw>
<doc>Initialize resources, memorize shard leaders, pre-compute member lists.</doc>
<status status="FAIL" start="2026-04-19T03:46:41.314195" elapsed="58.762260">ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</kw>
<test id="s1-s29-t1" name="Stop_Majority_Of_The_Followers" line="48">
<doc>Stop half plus one car Follower members and set reviving followers down (otherwsise tipping followers cannot join cluster).
Mark most of stopped members as explicitly down, to allow the surviving leader make progress.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.076533" elapsed="0.000934">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s29-t2" name="Attempt_To_Add_Cars_To_Leader" line="67">
<doc>Adding cars should fail, as majority of Followers are down.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.077749" elapsed="0.000490">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s29-t3" name="Start_Tipping_Follower" line="80">
<doc>Start one Follower member without persisted data.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.078507" elapsed="0.000739">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s29-t4" name="Add_Cars_On_Tipping_Follower" line="94">
<doc>Add cars on the tipping Follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.079540" elapsed="0.000379">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s29-t5" name="See_Cars_On_Existing_Members" line="102">
<doc>On each up member: GET cars, should match the ones added on tipping Follower.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.080239" elapsed="0.000450">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s29-t6" name="Start_Other_Followers" line="113">
<doc>Start other followers without persisted data.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.080944" elapsed="0.000413">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s29-t7" name="See_Cars_On_New_Follower_Leader" line="126">
<doc>GET cars from a new follower to see that the current state was replicated.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.081667" elapsed="0.000509">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<test id="s1-s29-t8" name="Delete_Cars_On_Leader" line="135">
<doc>Delete cars on Leader.</doc>
<tag>carpeople</tag>
<tag>clustering</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-19T03:47:40.082392" elapsed="0.000309">Parent suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</test>
<doc>Cluster suite for testing minimal and sum-minimal member population behavior.

Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.

This program and the accompanying materials are made available under the
terms of the Eclipse Public License v1.0 which accompanies this distribution,
and is available at http://www.eclipse.org/legal/epl-v10.html


This test stops majority of the followers and verifies car addition is not possible,
then resumes single follower (first from original list) and checks that addition works.
Then remaining members are brought up.
Leader member is always up and assumed to remain Leading during the whole suite run.

TODO: Use initial data to check more operations.
TODO: Perhaps merge with car_failover_crud suite.

Other modules and Shards (people, car-people) are not accessed by this suite.

All data is deleted at the end of the suite.
This suite expects car module to have a separate Shard.</doc>
<status status="FAIL" start="2026-04-19T03:46:41.246851" elapsed="58.836146">Suite setup failed:
ReadTimeout: HTTPConnectionPool(host='10.30.171.206', port=8181): Read timed out. (read timeout=5.0)</status>
</suite>
<status status="FAIL" start="2026-04-18T23:40:20.277609" elapsed="14839.806856"/>
</suite>
<statistics>
<total>
<stat pass="22" fail="173" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="0" fail="85" skip="0">carpeople</stat>
<stat pass="0" fail="85" skip="0">clustering</stat>
<stat pass="22" fail="173" skip="0">critical</stat>
</tag>
<suite>
<stat name="controller-clustering-ask.txt" id="s1" pass="22" fail="173" skip="0">controller-clustering-ask.txt</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s1" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Rpc Provider Precedence" id="s1-s2" pass="3" fail="5" skip="0">controller-clustering-ask.txt.Rpc Provider Precedence</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s3" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Rpc Provider Partition And Heal" id="s1-s4" pass="2" fail="5" skip="0">controller-clustering-ask.txt.Rpc Provider Partition And Heal</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s5" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Action Provider Precedence" id="s1-s6" pass="3" fail="5" skip="0">controller-clustering-ask.txt.Action Provider Precedence</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s7" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Action Provider Partition And Heal" id="s1-s8" pass="2" fail="5" skip="0">controller-clustering-ask.txt.Action Provider Partition And Heal</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s9" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Master Stability" id="s1-s10" pass="0" fail="6" skip="0">controller-clustering-ask.txt.Master Stability</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s11" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Partition And Heal" id="s1-s12" pass="0" fail="6" skip="0">controller-clustering-ask.txt.Partition And Heal</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s13" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Chasing The Leader" id="s1-s14" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Chasing The Leader</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s15" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Global Rpc Kill" id="s1-s16" pass="0" fail="11" skip="0">controller-clustering-ask.txt.Global Rpc Kill</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s17" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Global Rpc Freeze" id="s1-s18" pass="0" fail="10" skip="0">controller-clustering-ask.txt.Global Rpc Freeze</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s19" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Global Rpc Isolate" id="s1-s20" pass="0" fail="11" skip="0">controller-clustering-ask.txt.Global Rpc Isolate</stat>
<stat name="Restart Odl With Tell Based False" id="s1-s21" pass="1" fail="2" skip="0">controller-clustering-ask.txt.Restart Odl With Tell Based False</stat>
<stat name="Carpeople Crud" id="s1-s22" pass="0" fail="13" skip="0">controller-clustering-ask.txt.Carpeople Crud</stat>
<stat name="Car Failover Crud" id="s1-s23" pass="0" fail="16" skip="0">controller-clustering-ask.txt.Car Failover Crud</stat>
<stat name="Car Persistence Recovery" id="s1-s24" pass="0" fail="7" skip="0">controller-clustering-ask.txt.Car Persistence Recovery</stat>
<stat name="Buycar Failover" id="s1-s25" pass="0" fail="10" skip="0">controller-clustering-ask.txt.Buycar Failover</stat>
<stat name="Entity Isolate" id="s1-s26" pass="0" fail="5" skip="0">controller-clustering-ask.txt.Entity Isolate</stat>
<stat name="Buycar Failover Isolation" id="s1-s27" pass="0" fail="10" skip="0">controller-clustering-ask.txt.Buycar Failover Isolation</stat>
<stat name="Car Failover Crud Isolation" id="s1-s28" pass="0" fail="16" skip="0">controller-clustering-ask.txt.Car Failover Crud Isolation</stat>
<stat name="Car Outage Corners" id="s1-s29" pass="0" fail="8" skip="0">controller-clustering-ask.txt.Car Outage Corners</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
